Re: [問題] 矩陣運算
※ 引述《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
10/05 19:00, 3F
推
10/08 11:32, , 4F
10/08 11:32, 4F
討論串 (同標題文章)