《GPU高性能計算之CUDA》勘誤表
3. 第 3 頁
現代 CPU 的分支預測正確率已經達到了 99% 以上
修改爲:
現代 CPU 的分支預測正確率已經達到了 95% 以上
4. 第 19 頁代碼中的:
"s_data[128] = A[bid *128 + tid]"
修改爲:
"s_data[tid] = A[bid *128 + tid]"
5. 第 30 頁
“整個 grid 中最多也只能定義 65535 個 block"
修改爲:
“整個 grid 中最多能定義 65535 * 65535 個 block"
” Db.x 和 Db.y 最大值爲 512 , Db.z 最大爲 4 “
修改爲:
"Db.x 和 Db.y 最大值爲 512 , Db.z 最大爲 64"
6. 第 32 頁
gridDim 。 grid dimension ,用於說明整個網格的維度與尺寸,與 host 端 <<< >>> 中的 Ng 相對應; gridDim.x , gridDim.y 分別與 Ng.x,Ng.y 相等
修改爲:
gridDim 。 grid dimension ,用於說明整個網格的維度與尺寸,與 host 端 <<< >>> 中的 Dg 相對應; gridDim.x , gridDim.y 分別與 Dg.x,Dg.y 相等
blockDim 。 block Dimension ,用於說明每個 block 的維度與尺寸,與 host 端 <<<>>> 中的 Nb 對應; blockDim.x, blockDim.y, blockDim.z 分別與 Nb.x, Nb.y, Nb.z 相等。
應爲:
blockDim 。 block Dimension ,用於說明每個 block 的維度與尺寸,與 host 端 <<< >>> 中的 Db 對應; blockDim.x , blockDim.y , blockDim.z 分別與 Db.x , Db.y , Db.z 相等。
7. 第 31 頁圖 2-8
右邊的 block 標號應爲 (1,0)
見附件圖
圖2-8,圖2-17
8. 第 44 頁圖 2-17
右邊的 block 標號應爲 (1,0)
見附件圖
9. 第 66 頁
“ output[y * width + x] = tex2D[tex, tu, ty];”
修改爲:
“ output[y * width + x] = tex2D[texRef, tu, ty];”
10. 第 72 頁
執行 __thradfence_block() 、 __threadfence() 或 __syncthreads() ,
修改爲:
執行 __threadfence() 、 __threadfence_block() 、或 __syncthreads() ,
11. 第 80 頁
cudaStreamDestroy(&stream);
修改爲:
cudaStreamDestroy(stream);
12. 第 81 頁
For (int i = 0; i < 2; ++i)
cudamemcpyasync(inputdevptr + i * size, hostptr + i * size,size, cudamemcpyhosttodevice, stream);
For (int i = 0; i < 2; ++i)
mykernel<<<100, 512, 0, stream>>>(outputdevptr + i * size, inputdevptr + i * size, size);
For (int i = 0; i < 2; ++i)
cudamemcpyasync(hostptr + i * size, outputdevptr + i * size,size, cudamemcpydevicetohost, stream);
Cudathreadsynchronize();
修改爲:
for (int i = 0; i < 2; ++i)
cudamemcpyasync(inputdevptr + i * size/sizeof(float), hostptr + i * size/sizeof(float) ,size, cudamemcpyhosttodevice, stream);
for (int i = 0; i < 2; ++i)
mykernel<<<100, 512, 0, stream>>>(outputdevptr + i * size, inputdevptr + i * size, size);
For (int i = 0; i < 2; ++i)
cudamemcpyasync(hostptr + i * size/sizeof(float), outputdevptr + i * size/sizeof(float),size, cudamemcpydevicetohost, stream);
Cudathreadsynchronize();
13. 第 133 頁
關於增加 active block 和 active warp 數量優化程序性能的討論,請見本書 4.6.2 、 4.6.3 和 4.6.4 節。
修改爲:
關於增加 active block 和 active warp 數量優化程序性能的討論,請見本書 4.3.2 節。
14. 第 137 頁
對圖 3-10 的修改
圖 3-10 雙發射時序示意圖(不代表實際實現)
15. 第 197 頁
“如果⊙爲 .. ”
修改爲:
“如果⊕爲 .. ”
16. 第 238 頁 規則添加里的第( 3 )條
( 3 )重啓 VS 環境。
修改爲:
( 3 )在工程名上右鍵,選擇 custom build rules->Find Existing ,選中 cuda.rules ,點擊 ok
現代 CPU 的分支預測正確率已經達到了 99% 以上
修改爲:
現代 CPU 的分支預測正確率已經達到了 95% 以上
4. 第 19 頁代碼中的:
"s_data[128] = A[bid *128 + tid]"
修改爲:
"s_data[tid] = A[bid *128 + tid]"
5. 第 30 頁
“整個 grid 中最多也只能定義 65535 個 block"
修改爲:
“整個 grid 中最多能定義 65535 * 65535 個 block"
” Db.x 和 Db.y 最大值爲 512 , Db.z 最大爲 4 “
修改爲:
"Db.x 和 Db.y 最大值爲 512 , Db.z 最大爲 64"
6. 第 32 頁
gridDim 。 grid dimension ,用於說明整個網格的維度與尺寸,與 host 端 <<< >>> 中的 Ng 相對應; gridDim.x , gridDim.y 分別與 Ng.x,Ng.y 相等
修改爲:
gridDim 。 grid dimension ,用於說明整個網格的維度與尺寸,與 host 端 <<< >>> 中的 Dg 相對應; gridDim.x , gridDim.y 分別與 Dg.x,Dg.y 相等
blockDim 。 block Dimension ,用於說明每個 block 的維度與尺寸,與 host 端 <<<>>> 中的 Nb 對應; blockDim.x, blockDim.y, blockDim.z 分別與 Nb.x, Nb.y, Nb.z 相等。
應爲:
blockDim 。 block Dimension ,用於說明每個 block 的維度與尺寸,與 host 端 <<< >>> 中的 Db 對應; blockDim.x , blockDim.y , blockDim.z 分別與 Db.x , Db.y , Db.z 相等。
7. 第 31 頁圖 2-8
右邊的 block 標號應爲 (1,0)
見附件圖
圖2-8,圖2-17
8. 第 44 頁圖 2-17
右邊的 block 標號應爲 (1,0)
見附件圖
9. 第 66 頁
“ output[y * width + x] = tex2D[tex, tu, ty];”
修改爲:
“ output[y * width + x] = tex2D[texRef, tu, ty];”
10. 第 72 頁
執行 __thradfence_block() 、 __threadfence() 或 __syncthreads() ,
修改爲:
執行 __threadfence() 、 __threadfence_block() 、或 __syncthreads() ,
11. 第 80 頁
cudaStreamDestroy(&stream);
修改爲:
cudaStreamDestroy(stream);
12. 第 81 頁
For (int i = 0; i < 2; ++i)
cudamemcpyasync(inputdevptr + i * size, hostptr + i * size,size, cudamemcpyhosttodevice, stream);
For (int i = 0; i < 2; ++i)
mykernel<<<100, 512, 0, stream>>>(outputdevptr + i * size, inputdevptr + i * size, size);
For (int i = 0; i < 2; ++i)
cudamemcpyasync(hostptr + i * size, outputdevptr + i * size,size, cudamemcpydevicetohost, stream);
Cudathreadsynchronize();
修改爲:
for (int i = 0; i < 2; ++i)
cudamemcpyasync(inputdevptr + i * size/sizeof(float), hostptr + i * size/sizeof(float) ,size, cudamemcpyhosttodevice, stream);
for (int i = 0; i < 2; ++i)
mykernel<<<100, 512, 0, stream>>>(outputdevptr + i * size, inputdevptr + i * size, size);
For (int i = 0; i < 2; ++i)
cudamemcpyasync(hostptr + i * size/sizeof(float), outputdevptr + i * size/sizeof(float),size, cudamemcpydevicetohost, stream);
Cudathreadsynchronize();
13. 第 133 頁
關於增加 active block 和 active warp 數量優化程序性能的討論,請見本書 4.6.2 、 4.6.3 和 4.6.4 節。
修改爲:
關於增加 active block 和 active warp 數量優化程序性能的討論,請見本書 4.3.2 節。
14. 第 137 頁
對圖 3-10 的修改
圖 3-10 雙發射時序示意圖(不代表實際實現)
15. 第 197 頁
“如果⊙爲 .. ”
修改爲:
“如果⊕爲 .. ”
16. 第 238 頁 規則添加里的第( 3 )條
( 3 )重啓 VS 環境。
修改爲:
( 3 )在工程名上右鍵,選擇 custom build rules->Find Existing ,選中 cuda.rules ,點擊 ok
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.