2

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 関数で失敗していることがわかります。

これを処理する最良の方法は何ですか?

4

0 に答える 0