我在我的 CUDA C 程序中使用 uthash (http://uthash.sourceforge.net/) 实现哈希表。
我有一堆键说 allkeys[100]。我想做的是,使用哈希表上的这 100 个键执行并行哈希表查找,并返回一个名为 results[100] 的结果数组。基本上启动一个 xdimension 为 100 的网格,每个块执行一个哈希表查找并将其存储在结果数组中。
因此,到目前为止我尝试的是,cudMalloc 设备内存上的哈希表(哈希表中的条目数 X 一个结构的大小,定义一个带有句柄的哈希表条目)然后我 cudaMemcpy 主机哈希表到设备哈希表。
但是,在我的__device__ searchhashtable(int key)
函数中,我收到一条错误消息
error calling host function memcmp __device__ __global__ function
我经历了 uthash.h 的实现,可以看到它使用了 string.h 库,尤其是在 memcmp 函数上失败了。
处理这个的最好方法是什么?