Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
27.03.2015
Размер:
1.14 Кб
Скачать
#include <cstdlib>
#include <iomanip>
#include <iostream>
#include "math.h"

#include <cuda_runtime.h>

#include "integral.h"


int main()
{
    // Параметры.
    float a = 0.0f, b = 1.0f; // a <= x <= b
    int n = 100000; // размерность сетки
    float h = (b - a) / (float)n; // шаг сетки
    int num_blocks = 8; // количество блоков на GPU

    // Выделим память на GPU.
    float * partial_sums = new float[num_blocks];
    float * partial_sums_gpu;
    cudaMalloc((void **) &partial_sums_gpu, num_blocks * sizeof(float));

    float result_CPU = 0.0f;
    float result_GPU = 0.0f;

    // Запуск CPU-версии.
    result_CPU = integral(a, n, h);

    // Запуск GPU-версии.
    result_GPU = integral_gpu(a, n, h, num_blocks, partial_sums, partial_sums_gpu);

    // Тест пройден, если модуль разности результатов достаточно мал.
    const float eps = 1e-4f;
    if (fabsf(result_CPU - result_GPU) < eps)
        std::cout << "Test PASSED.\n";
    else
        std::cout << "Test FAILED.\n";

    // Освободим память.
    delete [] partial_sums;
    cudaFree(partial_sums_gpu);

    return 0;
}
Соседние файлы в папке CUDA_Integral