3

是否可以在 OpenCL 中创建一个简单的 HashMap?例如,所有键都具有 typelong和所有值 type int,并且永远不必修改(即以只读方式传递给内核)。

HashMap 的构建可能需要一些时间(是否在 CPU 上完成一次并且永远不必再次修改),但读取访问会很频繁,因此get(long key, *hashmap H)应该很便宜。

OpenCL 中是否有任何已知的实现?我没能找到他们。如果我必须从头开始编写一个,哪种 HashMap 实现最适合这种用途?

4

1 回答 1

1

我认为使用开放寻址的简单哈希表实现可以满足您的要求:

  • 就其性质而言,它存储在单个缓冲区中,因此传输到内核是微不足道的。
  • 然后很容易在内核中编写 getter 逻辑,尤其是当您不需要任何同步(只读)时。

因此,当第一项是键,第二项是值时,传递一个缓冲区long2或一个缓冲区,并且还传递缓冲区大小;struct { long key; int val; }现在编写一个常规的开放地址获取器。

于 2012-12-10T15:57:52.600 回答