OpenCL を使用してアルゴリズムを最適化し、カーネルをベクトル化したいと考えています。vloadn / vstoren
アライメントされたデータの場合、必要なベクトルへの単純なキャストよりも遅いですか?
質問する
885 次
2 に答える
0
http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf
仕様はあなたの火です。
基本的に、キャストと vloadn の唯一の違いは、vloadn ではアラインされていないロードを実行できることです (ベクトル サイズにアラインされていないため、プリミティブをアラインする必要があります)。float4 への単純なキャストを実行する場合、ポインタは 4*sizeof(float) 境界に揃える必要があります。float4 に対して vloadn を実行する場合、ポインターは sizeof(float) 境界に位置合わせする必要があります。
したがって、実装にバグがない限り、純粋なキャストはアライメントをまったくチェックする必要がないため、より高速であると予想されるかもしれません。
tl;dr: アラインされたデータの場合、vloadn はおそらく直接キャストよりも遅くなります。
于 2013-11-04T12:20:15.647 に答える