私はSIMDコードを書くことを可能にするエンジンを使用しており、速く実行します。しかし、すべてのコードを持つブロックは1つだけです。この場合、SIMDはどのように動作しますか?
私はこのコードが各エンティティで同時に独立して実行されることを理解していますが、1つしか変更されていない場合は、これはSIMD、並列性の考えですか?例えば
:この場合
void simdFunction()
{
center = mesh.center(); // always the same
vert.pos.x = center.x; // run on each vertex
}
、中心は常に同じであり、それは、SIMDの各頂点について計算されますか。もしそうなら、これはまだ効率的ですか?
これを並列実行することは、一般的なSIMDプログラミングの意味に関係なく、計算コストを上回っていますか?
ベンさん、ありがとうございました。しかし、私はこれをコントロールできません。エンジンの仕様では、単一のSIMDコンテキストしか持てないことが定義されています。私は他の関数などを書くことができますが、私が主な文脈でそれらを呼び出すとすぐに、それは同じことになります。だから私は選択肢がないと思う。 –