Я пытаюсь преобразовать простой код числового анализа (числовая интеграция правила трапеции) во что-то, что будет работать на моем графическом процессоре с поддержкой 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.Кто-нибудь получил какие-либо предложения о том, с чего начать или есть ли безболезненный способ конвертировать этот код?Большое спасибо, Джек.