CUDA C プログラムでのハッシュ テーブルの実装に uthash (http://uthash.sourceforge.net/) を使用しています。
allkeys[100] というキーがたくさんあります。私がやりたいことは、ハッシュ テーブルでこれらの 100 個のキーを使用して並列ハッシュ テーブル ルックアップを実行し、results[100] という結果配列を返すことです。基本的に、xdimension を 100 としてグリッドを起動し、各ブロックで 1 つのハッシュ テーブル ルックアップを実行して結果配列に格納します。
したがって、これまでに試したことは、デバイスメモリ上のハッシュテーブルを cudMalloc (ハッシュテーブルのエントリ数 X ハンドルで 1 つのハッシュテーブルエントリを定義する 1 つの構造体のサイズ) し、ホストハッシュテーブルをデバイスハッシュテーブルに cudaMemcpy します。
ただし、私の__device__ searchhashtable(int key)
関数では、次のエラーが表示されます
error calling host function memcmp __device__ __global__ function
uthash.h の実装を行ったところ、string.h ライブラリが使用されており、特に memcmp 関数で失敗していることがわかります。
これを処理する最良の方法は何ですか?