Численное интегрирование - как распараллелить?

Я начинаю с OpenCL, я мог видеть пример добавления вектора и понимать его. Но я думал о методе трапеции. Это код (C) для вычисления интеграла для x ^ 2 в [a, b].

double f(double x)
{
    return x*x;
}

double Simple_Trap(double a, double b)
{
    double fA, fB;
    fA = f(a);
    fB = f(b);
    return ((fA + fB) * (b-a)) / 2;
}

double Comp_Trap( double a, double b)
{
    double Suma = 0;
    double i = 0;
    i = a + INC;
    Suma += Simple_Trap(a,i);
    while(i < b)
    {
        i+=INC;
        Suma += Simple_Trap(i,i + INC);
    }
    return Suma;
}

Вопрос в том, как получить ядро ​​для вычисления интеграла с использованием метода трапеций?


Итак, я подумал об идее: частичные [i] = интегрировать (a, a + смещение), а затем сделать ядро для вычисления суммы частичных чисел, как упоминал Patrick87.

Но это лучший способ?

5
задан Bill the Lizard 10 January 2012 в 02:35
поделиться