Re: [問題] 矩陣運算

看板C_and_CPP作者 (喵喵叫的蜜蜂貓)時間15年前 (2010/10/05 07:33), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《stone0912 (開心石)》之銘言: : 遇到的問題: (題意請描述清楚) : 矩陣運算耗費太久的時間 : 舉例說明: : EX1: ~矩陣運算~ : int A[62][62][34]; : for (int i=-90;i<=90;i++){ : for (int j=-90;j<=90;j++){ : for (int iii=1;iii<=61;iii++){ : for (int jjj=1;jjj<=61;jjj++){ : for (int kkk=1;kkk<=33;kkk++){ : A[iii][jjj][kkk]=(iii+jjj)/kkk }}}}} : 就需要10多秒~ 怎麼看這個結果都是定值啊 int A(int iii,int jjj,int kkk) { return (iii+jjj)/kkk; } 為何要特地寫進矩陣裡面去? : ====================================================================== : EX2: ~矩陣累加~ : int A[62][62][34]; : int main(){ : for (int i=-90;i<=90;i++){ : for (int j=-90;j<=90;j++){ : for (int iii=1;iii<=61;iii++) { : for (int jjj=1;jjj<=61;jjj++) { : for (int kkk=1;kkk<=33;kkk++) { : A[iii][jjj][kkk]=A[iii][jjj][kkk]+(iii+jjj)/kkk; }}}}} : 則需20多秒~ int A(int i,int j,int iii,int jjj,int kkk) { return (iii+jjj)/kkk*((i+90)*181+j+91) } : 是否有針對"矩陣運算" 及 "矩陣累加"進行時間改善的方法??? : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : VC++ 我覺得你要思考一下,如果你的運算時間很短,或是用到這結構的機會不高 這樣的結構其實當場算OK 如果用量大當場算會影響後續的處理效能,才去考慮要不要預存 如果這個矩陣其實非常複雜,你又要注重速度,那就考慮CUDA吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.180.163

10/05 18:57, , 1F
關於修改的累加程式, 能否提供完整的程式內容 ~ 感謝!!!
10/05 18:57, 1F

10/05 18:59, , 2F
想問一下,改後的累加程式 是已經化為一維的資料嗎?
10/05 18:59, 2F

10/05 19:00, , 3F
不是, 他只是做mapping的動作, 沒有多用記憶體來存
10/05 19:00, 3F

10/08 11:32, , 4F
感謝樓上解答~ ^^
10/08 11:32, 4F
文章代碼(AID): #1CgjJPT0 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
4
11
完整討論串 (本文為第 3 之 4 篇):
問題
2
4
問題
0
3
問題
4
11
文章代碼(AID): #1CgjJPT0 (C_and_CPP)