thread_id をマップしたいと思います。これは C/CUDA での話ですが、私が解決しようとしているのはもっと代数的な問題です。
したがって、私が達成しようとしているマッピングは次のとおりです。
- スレッド 0 ~ 15: 読み取り値配列 [0]
- スレッド 16 ~ 31: 読み取り値 [3]
- スレッド 32 ~ 47: 読み取り値 [0]
- スレッド 48 ~ 63: 読み取り値 [3]
- スレッド 64 ~ 79: 値配列の読み取り [6]
- スレッド 80 ~ 95: 値配列の読み取り [9]
- スレッド 96 ~ 111: 値配列の読み取り [6]
- スレッド 112 ~ 127: 値配列の読み取り [9]
等々..
これはマッピングを簡略化したものであることに注意してください。実際には 128 を超えるスレッドがありますが、シーケンスは示されているとおりであり、スレッドは常に 3 の倍数にマップされます。
各スレッドを実行して、どの配列位置を見る必要があるかを調べるには、どの式を使用できますか?
次の例のように、明示的なマップや if ステートメントではなく、ある種の式を使用したいと思います。
別のマッピングを必要とする別のケースでこれをどのように解決したかを説明するには、次のようにします。
- スレッド 0 ~ 31: 読み取り値配列 [0]
- スレッド 32 ~ 63: 読み取り値 [3]
コードを使用しました
rintf(float(tid)/96.0)*3