看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tmbyksdG (雨神妹妹的男朋友)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : Linux上安裝CUDA環境 (CUDA版本為8.0 運算能力為3.7)(Tesla K80) : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : NVCC : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 硬體方面: : 1.我執行deviceQuery偵測到2個device(device0:Tesla K80, device1:K80),估狗發現K80 : 是由兩個GK210核心所組成,那我偵測到的device是指有兩個K80(4個GK210)的意思嗎? : 還是偵測到的兩個device其實就是GK210? : 2.13個SMX,總共有2496個cores,所以我一次可以同時做運算的數量是否為2496個threads? : 軟體方面: : 我寫了一個64 * 64的矩陣乘法,我想測試不同的block & thread數量去做運算,哪個執 : 行時間會比較短,我試了兩種block的配置(thread數量剛好為4096,一個thread執行一 : 個輸出矩陣的一個element)。 : (1)dim3 dimBlock(32, 32); : dim3 dimGrid(2, 2); : 這個配置是以下附的程式碼配置,執行結果是正常的。 : (2)dim3 dimBlock(4, 128); : dim3 dimGrid(1, 8); : 換成這樣配置編譯之後,結果卻只有大約三分之一是正常的值,其餘卻都是0 : ,我的threadIdx.x & threadIdx.y都是由0-1023,請問這是發生了什麼錯誤嗎? 因為壓!即使你有兩張卡,你還是要設定你的程式是運行在哪張卡上! 預設是只在device0上運行,要做multi-GPU又是另一個世界 所以說壓不是兩張卡的資源可以合併使用壓,就先假裝只有一張卡就好了 然後押,建議還是先參考一下cuda的文件,一個block最多只有1024個thread可以活著 這跟卡上面有幾個核心沒太大關溪跟可以有幾個block同時執行比較有關西 剩下的block的排程跟配置問題沒有很明確的答案是怎樣,通常是多重效果混合 基本上壓都會用profiler去分析這樣設計會比較好 還有押4096對K80根本是塞牙縫等級的大小,少說也要10W個元素八 最後壓如板友說的建議先熟悉一下工具cuda-memckeck nvida-smi nvprof nvvp之類的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.181.137 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480351046.A.7C4.html