我试图将一个简单的数值分析代码(梯形规则数值积分)转换成将在启用CUDA的GPU上运行的代码。这里有很多文献,但它似乎远比这里要求的复杂得多!我目前的代码是:将简单的C代码转换为CUDA代码
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 1000
double function(double);
int main(void)
{
int i;
double lower_bound, upper_bound, h, ans;
printf("Please enter the lower and upper bounds: ");
scanf(" %lf %lf", &lower_bound, &upper_bound);
h = (upper - lower)/N;
ans = (function(lower) + function(upper))/2.0;
for (i = 1; i < N; ++i) {
ans += function(i * h);
}
printf("The integral is: %.20lf\n", h * ans));
return 0;
}
double function(double x)
{
return sin(x);
}
这个运行良好,直到N变得非常大。我用openMP做了一个更快的实现,但我认为对于了解一些关于CUDA的知识也很方便。有没有人有关于从哪里开始或者是否有无痛的方式来转换此代码的建议?谢谢,杰克。
对于每个不知道梯形规则数值积分是什么的人来说,它是梯形法则。 – 2010-09-25 17:42:29
六和两三? – JMzance 2010-09-25 21:00:12
我们可以看到OpenMP代码吗?它可能更容易转换 – 2010-11-27 07:36:41