是否只有一条指令来计算float4
的所有组件的总和,例如,在OpenCL中?
float4 v;
float desiredResult = v.x + v.y + v.z + v.w;
答案 0 :(得分:6)
float4 v;
float desiredResult = dot(v, (float4)(1.0f, 1.0f, 1.0f, 1.0f));
这是一个更多的工作,因为你在添加它们之前将每个组件乘以一个,但是一些GPU内置了一个点积指令。所以可能更快;可能会慢一些。这取决于你的硬件。