作者stone0912 (開心石)
看板C_and_CPP
標題[問題] 矩陣運算
時間Tue Oct 5 12:31:55 2010
遇到的問題: (題意請描述清楚)
矩陣運算耗費太久的時間
舉例說明:
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多秒~
======================================================================
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多秒~
是否有針對"矩陣運算" 及 "矩陣累加"進行時間改善的方法???
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
VC++
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.58.91
推 stupid0319:多執行緒 10/05 12:37
→ stone0912:請問 是要用CUDA進行多執行緒?? 10/05 12:47
→ loveme00835:如果找到規則, 把 3 維當作 1 維來做吧, 至少在位址計 10/05 12:49
→ loveme00835:算上可以縮短一點時間 10/05 12:49
→ james732:不知道有沒有針對矩陣運算做最佳化的libaray... 10/05 12:49
推 purpose:CUDA 現在這麼紅喔...連這類主題都能看到討論 10/05 12:57
→ xatier:for裡面的計數器iii jjj kkk是哪招 XD 10/05 13:10
推 stilltin:找 BLAS 幫忙算呢? 10/05 14:16
推 seedman:如果常常要做矩陣相關運算 請裝blas或lapack 10/06 00:56
→ akasan:有cuda可用當然最好, blas 有 cublas 可用,cuda算矩陣超強! 10/06 09:43
→ stone0912:感謝 各位的回應 ~ 我已用CUDA作基本運算效果真的很好 10/07 13:52