利用GPU并行计算来加速简单积分过程的实验

由于CPU的摩尔定律已经不再适用,目前加速程序的最佳选择就是通过GPU并行。经过几天的摸索后,完成了这个利用GPU加速积分算法的小实验。

数值积分中最常用的方法之一就是辛普森积分法,首先我们写出一段三阶辛普森积分的小程序:

double Simpson_integ (int n_steps, double a, double b, double (*func)( double t))
{
    int n;
    double sum=0;
    double tk=0., dt;
    double f1, f2, f3;
   
    dt=(b-a)/n_steps;
    for(n=0;n<n_steps;n++)
    {
        tk=a+n*dt;
        f1=(*func)(tk );
        f2=(*func)(tk+dt/2);
        f3=(*func)(tk+dt);
        sum+=dt*(f1+4*f2+f3)/6;
    }
  
    return sum;
}

改写成CUDA程序:

__device__
double integrant_func(double t)
{
    return 1.0/(exp(30.1*t*t/(1.23*1.23*300.0))-1);
}

__global__
void integrant(int n, double a, double dt, double *sum)
{
    double tk;
    double f1, f2, f3;

    int index = threadIdx.x + blockIdx.x * blockDim.x
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值