配列に 1000 個の float データがあります。4つのクラスとしましょう。それらのサイズは予測できません。CPU 実装のリンク リストにそれらを簡単に保持できますが、OpenCL カーネルでは、そのような機会はありますか? 私の考えでは、この問題には3つの解決策があります。まず、長さが 1000 の配列がクラスの数で構築されます。これはメモリ コストがかかります。次に、長さ 1000 の配列を割り当て、それらをパーツに分割します。ただし、各クラスのサイズがわからず、それぞれに指定したサイズを超える可能性があるため、インデックスから値を別のインデックスに転送する場合があります。
3番目に、私の意見では、同じ長さの2つの異なる配列を取得します。1 つはデータを格納し、もう 1 つはポインタを格納します。たとえば、データ配列の i 番目のインデックスには、2 番目のクラスに属する値が格納されます。さらに、2 番目のクラスに属する次のデータへのポインターの i 番目のインデックス。ただし、これはアトミック型 (int、float、char など) のリンク リストにのみ適しています。
私はOpenCLの初心者です。私はまだそれの多くの機能を知りません。より良い方法がある場合は、私や他の人と共有しないでください。