【发布时间】:2011-10-22 09:43:47
【问题描述】:
我创建了一个简单的粒子系统。我有一台具有计算能力 2.1 的设备。我可以改变什么来优化内核?
我假设变量tPos 和tVel 存储在寄存器中。
__global__ void particles_kernel(float4 *vbo, float4 *pos, float4 *vel)
{
int tid = blockIdx.x * blockDim.x + threadIdx.x;
float4 tPos = pos[tid];
float4 tVel = vel[tid];
tPos.x += tVel.x;
tPos.y += tVel.y;
tPos.z += tVel.z;
if(tPos.x < -2.0f)
{
tVel.x = -tVel.x;
}
else if(tPos.x > 2.0f)
{
tVel.x = -tVel.x;
}
if(tPos.y < -2.0f)
{
tVel.y = -tVel.y;
}
else if(tPos.y > 2.0f)
{
tVel.y = -tVel.y;
}
if(tPos.z < -2.0f)
{
tVel.z = -tVel.z;
}
else if(tPos.z > 2.0f)
{
tVel.z = -tVel.z;
}
pos[tid] = tPos;
vel[tid] = tVel;
vbo[tid] = make_float4(tPos.x, tPos.y, tPos.z, tPos.w);
}
【问题讨论】:
-
如果不笼统地回答,这将是非常困难的。您可能想查看“Optimizing CUDA part I (PDF)”和“Optimizing CUDA part II (PDF)”以获取一些一般提示和技巧。其他优秀资源是“Programming Massively Parallel Processors”和“CUDA by Example”。