日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

了解CUDA计算(一)

發(fā)布時間:2025/4/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解CUDA计算(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

初識CUDA計算

  • 矩陣計算基礎(chǔ):C=AB,A?R(K,M),B?R(M,P)C=AB, A-R(K,M), B-R(M,P)C=AB,A?R(K,M),B?R(M,P)

    • 矩陣計算的內(nèi)積視角
      • 將A視為行向量矩陣,B視為列向量矩陣 C(i,j)=A(i,:)B(:j)C(i,j)=A(i,:)B(:j)C(i,j)=A(i,:)B(:j)
    • 行向量視角
      • 將B視為行向量矩陣,A視為系數(shù)矩陣C(i:)=∑m?>MA(I,:)B(M:)C(i:)=\sum{m} ->M A(I,:)B(M:)C(i:)=m?>MA(I,:)B(M:)
    • 列向量視角
      • 將A視為列向量矩陣,B視為稀疏矩陣C(:j)=∑m?>MB(mj)A(:m)C(:j)=\sum{m} -> M B(mj)A(:m)C(:j)=m?>MB(mj)A(:m)
  • 并行計算理論

    • 數(shù)據(jù)并行(多核多進(jìn)程)
      • 將許多可以解決問題的任務(wù)分割,然后分布在一個或者多個核上進(jìn)行程序的執(zhí)行。
    • 任務(wù)并行(多核多進(jìn)程)
      • 將可以解決問題的數(shù)據(jù)進(jìn)行分割,將分割好的數(shù)據(jù)放在一個或者多個核上進(jìn)行執(zhí)行;每一個核對這些數(shù)據(jù)都進(jìn)行類似的操作。
  • CPU和GPU體系結(jié)構(gòu)差異

  • CPU有三級緩存,core數(shù)較少,擅長IO操作、中斷操作及分支等
  • GPU有二級緩存,core數(shù)較多,計算處理單元多,擅長計算操作
  • CUDA多設(shè)備系統(tǒng)

    • 設(shè)備遍歷
      • // 設(shè)置設(shè)備數(shù)int deviceCount; // 獲取設(shè)備cudaGetDeviceCount(&deviceCount); int device;// 遍歷設(shè)備for (device=0;device<deviceCount;++device){cudaDevicePorp deviceProP;cudaGetDevicePorperties(&deviceProp, device);printf("Device %d has compute capability %d %d \n",device,devicePorp.major, deviceProp.minor);}
  • 設(shè)備選擇

    • size_t size = 1024 * sizeof(float); cudaSetDevice(0); float* p0; cudaMalloc(&p0, size); MyKernek<<<1000, 12>>>(p0); cudaSetDevice(1); float* p1; cudaMalloc(&p1, size); MyKernel<<<1000, 128>>>(p1);
  • cuda事件和cuda流

    • cudaSetDevice(0); cudaStream_t s0; cudaStreamCreate(&s0); MyKernel<<<100, 64, 0, s0>>>(); cudaSetDevice(1); cudaStream_t s1; cudaStreamCreate(&s1); MyKernel<<<100, 64, 0, s1>>>(); MyKernel<<<100, 64, 9, s0>>>();
  • 設(shè)備間互訪

    • cudaSetDevice(0); float* p0; size_t size = 1024*sizeof(float); cudaMalloc(&p0, size); MyKernel<<<1000, 128>>>(p0); cudaSetDevice(1); cudaDeviceEnableFeetAccess(0, 0); MyKernel<<<1000, 128>>>(p0);
  • Trust:cuda編程體系的STL

總結(jié)

以上是生活随笔為你收集整理的了解CUDA计算(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。