我對編程和Cuda非常陌生,所以很抱歉,如果這非常明顯。基本上我有一個C函數,讀取數據列表,然後檢查每個項目與hashmap(我在C中使用uthash)。它工作的很好,但我想在Cuda中運行這個過程(一旦它獲得了散列鍵的值,然後它做了很多處理),但我不確定創建只讀散列函數的最佳方式,儘可能快在Cuda。有沒有一種很好的方法在cuda上使用只讀hashmap?
背景:
基本上我試圖儘可能快地珍惜一個非常非常大批量的組合。我總是獲得數百萬個投資組合,這些投資組合以兩個名單的形式出現一個有股票名稱,另一個有重量。然後,我使用股票名稱來查找散列表以獲取其他數據(值,%更改等),然後根據權重對其進行處理。在普通C中的CPU上,大約需要8分鐘,所以我在GPU上試用它很有趣。我已經閱讀並完成了cuda by example
中的示例,所以我相信我知道除了散列函數之外,大部分內容都是如何做的(附錄中有一個,但它似乎專注於添加到它,而我只是真的希望它作爲參考,因爲它我可能會在cuda for example
的邊緣粗糙,所以也許有些東西我錯過了,這對我在這種情況下很有幫助,就像使用文本或某種特殊形式的內存一樣)。我應該如何構建這個最好的結果,如果每個塊都有自己的訪問hashmap,或者應該每個線程或一個足夠好的整個GPU?
任何想法,例子或資源,以更好地理解這一點會很好。
謝謝!
編輯:抱歉只是澄清,我只使用C.最壞的情況,我願意使用另一種語言,但理想情況下,我想我可以只在本地投入GPU一次,並擁有所有未來的線程因爲要處理我的數據,所以我需要在幾個大批量中完成)。
從哈希表中讀取數據後,您會執行多少非內存查找處理? – huon
@dbaupp不是很大,這是一個問題。羅傑能夠幫助我取得有利的結果。 – Lostsoul
很高興聽到:) – huon