2012-12-08 34 views
3

是否可以在OpenCL中創建一個簡單的HashMap?例如。其中所有密鑰都具有類型long和所有值類型爲int,並且永遠不必修改(即只讀地傳遞給內核)。在OpenCL中的HashMap?

構建HashMap可能需要一段時間(在CPU上完成一次,而不必再次修改),但讀取頻繁,因此get(long key, *hashmap H)應該便宜。

在OpenCL中是否有任何已知的實現?我沒有找到他們。如果我不得不從頭開始編寫一個,那麼哪個HashMap實現最適合這種用途?

+2

也許搜索CUDA,不是[this](http://stackoverflow.com/questions/5533102/cuda-implementing-device-hash-map)有幫助嗎? – DikobrAz

回答

1

我覺得用open addressing一個簡單的哈希表的實現能夠滿足您的要求在這裏:

  • 就其本質而言它存儲在一個緩衝區,從而瑣碎轉移到內核。
  • 在內核中編寫getter邏輯非常容易,特別是當您不需要任何同步(只讀)時。

所以,傳遞的long2緩衝液或的struct { long key; int val; },當第一項是關鍵和第二值的緩衝器,並且還通過緩衝器大小;現在寫一個常規的開放地址獲取器。