Re: [問題] CUDA在windows下的運算時間問題....?
※ 引述《tedd15550325 (天行者)》之銘言:
: 開發平台(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.....
: 有人能夠解釋一下我到底遇到了什麼問題嗎?
感謝某C大的站內信,讓我解決了這個問題XDDD
我參考了顯卡版 #1CNAGSKw 這篇文章
這個方法就是所謂的修改系統參數
我已經懶得管他到底危不危險了
程式先run出來比較重要~!!!
參數修改相關網址:
http://msdn.microsoft.com/en-us/windows/hardware/gg487368.aspx
http://msdn.microsoft.com/en-us/library/ff553890.aspx
http://technet.microsoft.com/en-us/library/cc976062.aspx
至於cuda-memcheck這個工具
我發現官網說到應用的部分時只有提到linux和MacOS
令我強烈懷疑他根本沒有支援windows...
cuda-gdb debug 工具 似乎也差不多的樣子
後來灌了Nsight debug工具
(windows VS2008/2010 專用debug工具,OS一定要vista以上...)
照著user guide做不到幾步馬上就卡住了...
什麼要連到host端
到底要怎麼連阿...
阿不就localhost就好了...到底是要連個什麼鬼阿....?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.51.71
※ 編輯: tedd15550325 來自: 203.70.51.71 (07/12 03:23)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章