[問題] CUDA在windows下的運算時間問題....?
看板C_and_CPP (C/C++)作者tedd15550325 (天行者)時間15年前 (2011/07/07 02:16)推噓1(1推 0噓 17→)留言18則, 4人參與討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
CUDA
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
CUDA
問題(Question):
程式主要是在計算 所有點 到 所有點的最短距離,一開始用的是floyd演算
法,但後來覺得不適合平行運算,因此改成了 dijkstra 演算法,計算n次,如
此一來,n次的計算就可以完全用cuda平行化來解決。
A. 以n = 760個點為例子:
1. 作業系統:windows XP 32 bit
顯卡:9500GT (僅此一張,接著螢幕)
不論一口氣用一個kernel func run完
或 用迴圈分成多個部分call kernel func
都沒有任何問題,答案也是對的。
2. 作業系統:windows 7 64 bit
顯卡:GTX580 & GTX580 (兩張一樣的顯卡,一張接螢幕,另一張沒有)
用迴圈分成每次運算16個點是對的
但分成每次運算32個點,就會跳error出來
而且每次執行跳出來的error還會不一樣...
主要都是timeout error 和 unknown error這兩個一直在交換
32個點都爆了,更大的測一側結果也都差不多
16個點以下也都OK
兩張顯卡也都試過,結果差不多...
( cudaSetDevice( 0 ); 和 cudaSetDevice( 1 ); )
在32個點時,用cudaSetDevice( 1 )迴圈可以跑2圈才錯
用cudaSetDevice( 0 )迴圈1圈就爆了
超過32個點都差不多1圈就爆了。
B. 以n = 1900個點為例子:
1. 用上面第1個環境執行
每次運算16個點OK
超過16個點就出error了,通常一圈就爆了
主要都是unspecified launch failure
timeout error比較少看到
2. 用上面第2個環境執行
光1個點,用cudaSetDevice( 1 )迴圈第3圈就爆了
用cudaSetDevice( 0 )第一圈就爆了...
error也跟上面n=760所得到差不多
(補充一下:迴圈每執行完一次,會Sleep 2秒,不讓他Sleep只會讓程式更容易爆..
Sleep 很久 似乎對於run一次就需要大量的運算也是沒什麼幫助)
起初一開始還覺得有可能是記憶體的問題,便將記憶體壓到了一定的程度
( 初始距離陣列用稀疏矩陣的方法處理
存結果的陣列看迴圈一次執行多少個點就配多少空間 )
但結果完全沒變
所以我個人認為這應該是傳說中的windows 5秒 的時間限制
但我覺得非常奇怪的是用第二個環境執行,明明就1~2秒而已,結果就爆了...
拜過谷哥大神之後,理論上應該有三種解決辦法:
1. 用linux,有指令可以關掉watchdog
2. 用windows + 一張沒事做的獨立顯卡
3. 用windows + 改系統參數!? (大家都說很危險..@@?)
很明顯的,我在上面的測試例子中,第二個環境應該是非常符合第2點的條件才對...
可是為什麼他還是照樣爆掉??? 雖然說沒接好像比有接螢幕的顯卡多跑了一些這樣..
我發現了一個東西
cuda_runtime.h 之下的 cudaDeviceProp 結構內的 kernelExecTimeoutEnabled member
int kernelExecTimeoutEnabled
→ Specified whether there is a run time limit on kernels.
官網是這樣說的
我拿他去測了一下
結果發現兩個環境,三張顯卡全部output為1.....
有人能夠解釋一下我到底遇到了什麼問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.75.190
※ 編輯: tedd15550325 來自: 203.70.75.190 (07/07 02:17)
推
07/07 11:25, , 1F
07/07 11:25, 1F
→
07/07 11:26, , 2F
07/07 11:26, 2F
→
07/07 14:17, , 3F
07/07 14:17, 3F
→
07/07 14:18, , 4F
07/07 14:18, 4F
→
07/07 14:18, , 5F
07/07 14:18, 5F
→
07/07 14:32, , 6F
07/07 14:32, 6F
→
07/07 14:33, , 7F
07/07 14:33, 7F
→
07/07 14:46, , 8F
07/07 14:46, 8F
→
07/07 14:51, , 9F
07/07 14:51, 9F
→
07/07 21:53, , 10F
07/07 21:53, 10F
→
07/07 22:23, , 11F
07/07 22:23, 11F
→
07/07 22:23, , 12F
07/07 22:23, 12F
→
07/07 22:24, , 13F
07/07 22:24, 13F
→
07/07 22:25, , 14F
07/07 22:25, 14F
→
07/07 22:45, , 15F
07/07 22:45, 15F
→
07/07 22:45, , 16F
07/07 22:45, 16F
→
07/08 01:11, , 17F
07/08 01:11, 17F
→
07/08 01:11, , 18F
07/08 01:11, 18F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章