一段程序代码,需要改成cuda格式之行,可是效果非常差,希望大神看看

小牛牛K 2016-03-09 03:35:22
[code=c]__global__ void LU_SGS(double *temperature) {
int tx = threadIdx.x;
double Residual = NUM;
//int stableTimes = 0;
while (Residual > EPS)
{
Residual = 0.0;
for (int i = NUM - 2; i > 0; i--)
{
double preResidual = temperature[i];
temperature[i] = (temperature[i + 1] + temperature[i - 1]) / 2.0;
Residual += temperature[i] - preResidual;
}
for (int i = 1; i < NUM-1; i++)
{
double preResidual = temperature[i];
temperature[i] = (temperature[i + 1] + temperature[i - 1]) / 2.0;
Residual += temperature[i] - preResidual;
}
//stableTimes++;
}
}
/code]
...全文
307 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
stellarman 2016-03-28
  • 打赏
  • 举报
回复
如果num大的话,当然慢了,这个没有并行,而且double变量的话,用Geforce卡的话只有float的1/8. Tesla 是1/2. for (int i = 1; i < NUM-1; i++) { double preResidual = temperature[i]; temperature[i] = (temperature[i + 1] + temperature[i - 1]) / 2.0; Residual += temperature[i] - preResidual; }
tengwl 2016-03-12
  • 打赏
  • 举报
回复
开多个blocks啊,你程序中只用了一个block

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧