當前位置:
首頁 > 最新 > 如何利用GPU加速計算過程

如何利用GPU加速計算過程

在做各種回測的時候,最重要的就是迭代速度要快。中國的互聯網發展的這麼快,1年做了人家10年的事情,也是迭代速度快的原因。當外界的時間流逝速度不變的時候,加快計算機內部的時間流逝速度後,自然可以對外界取得優勢。

要想快,先花錢。最簡單粗暴的方法就是花錢弄個NB的電腦,在你覺得能承受的範圍內弄個貴的電腦總是沒錯的。當硬體條件固定後,就要想著怎麼從軟體上優化了。

從軟體上優化,一個是改自己的代碼,找出最耗時的地方,看看能怎麼加快,這個下次再細講。另外一個現在比較流行的就是用GPU進行並行計算。

用最簡單的一句話講,GPU可以同時做N件比較簡單的事情,所以效率比較高。

現在最火熱的比特幣挖礦,很久以前有段時間就是用GPU挖礦的,比直接用CPU效率提高很多,當然現在升級到更高級的方式了。舉個最簡單的例子,如果用CPU算,可以算1.345434*5.43456這麼複雜的算式,但是有時候只需要計算1+2這麼簡單的算式,只不過要計算的次數很多很多,這個時候就可以用GPU加速了。CPU一次只能算一個算式(多核的話CPU可以同時做2-32件算式),而GPU一次可以算10000個算式。(數字只是舉例,不代表真實數據)

用.net進行GPU計算,首先要裝NVIDIA的CUDA開發包(當然首先你要有個NVIDIA的顯卡)。以前有個庫是Cudafy.NET,可以比較方便的把C#代碼轉化成可以進行GPU計算的代碼,但後來就停止開發了,不再支持最新版本的CUDA了,那隻能換一個庫了。

managedCuda。這就是現在流行的.net下的CUDA開發庫。跟Cudafy.NET不同的是,它不會自動把C#代碼轉化成可以進行GPU計算的代碼,需要自己寫Cuda C代碼。當然這也不是個事,簡單的C代碼還是手到擒來的。

然後在.net代碼中,就可以用特定的方式調用當前寫的C代碼了,這段C代碼就會放到GPU中並行執行。

放個官網上的例子。

可以看到,C代碼就是最簡單的2個數的相加。(Cuda有Grid、Block、Thread概念,具體可以Google)。然後在.net代碼中,首先要載入編譯好的C代碼,分配GPU內存,把要計算的數據從內存拷貝到GPU內存中,運行計算,然後再把計算好的結果從GPU內存中拷貝回來。

能用GPU進行加速的運算,需要是能並行的計算,不能是有先後順序的計算。在我自己的程序中,要計算很多時間點下的交易到底是成功還是失敗,那這些交易就是並行的,相互之間並沒有關係(同一個交易的不同時間序列的計算不能並行,因為時間有先後順序),那就可以用GPU進行加速。

繼續記錄這周量化交易系統成績:

加速虧損。,相對上周虧損USD 16012。

總盈虧虧損 38333。

提醒:股票、期權、期貨、外匯、大宗商品、電子貨幣等投資具有風險性,希望大家謹慎選擇,不要讓欺詐者有可乘之機。本文只作學習之用,不作為投資推薦,對由此引起的一切損失概不負責。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 寧波無線茶几 的精彩文章:

TAG:寧波無線茶几 |