3

OpenCLで簡単なHashMapを作成することは可能ですか?たとえば、すべてのキーがタイプlongで、すべての値がタイプintであり、変更する必要がない(つまり、カーネルに読み取り専用で渡される)場合です。

HashMapの構築には時間がかかる場合がありますが(CPUで一度実行され、再度変更する必要はありません)、読み取りアクセスが頻繁に行われるため、get(long key, *hashmap H)安価である必要があります。

OpenCLでこれの既知の実装はありますか?私はそれらを見つけることができませんでした。ゼロから作成する必要がある場合、この用途に最も適したHashMap実装はどれですか?

4

1 に答える 1

1

オープンアドレッシングを使用した単純なハッシュテーブルの実装で、ここでの要件を満たすことができると思います。

  • その性質上、単一のバッファに格納されるため、カーネルに転送するのは簡単です。
  • そうすれば、特に同期が必要ない場合(読み取り専用)、カーネルにゲッターロジックを簡単に記述できます。

したがって、最初の項目がキーで2番目の項目が値の場合は、long2のバッファまたはのバッファを渡し、バッファサイズも渡します。struct { long key; int val; }ここで、通常のオープンアドレスゲッターを作成します。

于 2012-12-10T15:57:52.600 に答える