86.45K
Категория: МатематикаМатематика

Реализация функции Axpy библиотеки BLAS

1.

Нижегородский государственный университет
им. Н.И. Лобачевского
Факультет Вычислительной математики и кибернетики
Реализация функции Axpy библиотеки
BLAS
Антон Горшков
[email protected]

2.

Постановка задачи
Семейство функций axpy из BLAS имеет следующий
синтаксис:
taxpy(int n, fp a, fp x[], int incx, fp y[], int incy)
t определяет тип, обозначенный fp (s — float, d —
double, с — complex float, z — complex double).
– например, для float:
saxpy(int n, float a, float* x, int incx,
float* y, int incy);
Выполняется операция:
∀i ∈ 0..n: y[i * incy] ← y[i * incy] + a * x[i * incx]
Нижний Новгород, 2014 г.
Реализация функции Axpy библиотеки BLAS
2

3.

Задание 1
Реализовать
на CPU функции saxpy и daxpy
(соответственно для float и double);
Реализовать аналогичные функции saxpy_gpu и
daxpy_gpu, выполняющие вычисления на GPU – на
CUDA;
Убедиться, что полученные результаты совпадают;
Убедиться в корректном выполнении функции при
любых аргументах;
Указание: пусть один GPU поток отвечает за
вычисление одного элемента вектора;
Указание: отделите CPU код от GPU кода. CPU
версии функции и main() должны лежать в *.cpp
файле, GPU версии – в *.cu файле.
Нижний Новгород, 2014 г.
Реализация функции Axpy библиотеки BLAS
3

4.

Задание 2
Реализуйте
параллельные
OpenMP
версии
рассматриваемых функций: saxpy_omp и daxpy_omp;
Убедитесь в их корректности;
Замерьте время выполнения OpenMP и GPU функций
для разных n, сравните результаты;
Сравните результаты времени работы float и double
версий этих функций;
Указание: для замеров времени используйте функцию
– double omp_get_wtime(void);
Указание: выберите n так, чтобы время работы одной
функции было в районе нескольких секунд.
Нижний Новгород, 2014 г.
Реализация функции Axpy библиотеки BLAS
4

5.

Задание 3
Выполните
запуски любой из функций на GPU с
разными размерами блока, общее число потоков при
этом должно быть постоянно;
Проанализируйте
и
объясните
полученные
результаты, выберите наиболее подходящий размер
блока;
Указание: используйте следующие размеры блока: 8,
16, 32, 64, 128, 256.
В результате должна получиться единая программа, которая
выдает 3 времени (последовательное, OpenMP, GPU)
и проверяет корректность результатов для каждого из запусков
Нижний Новгород, 2014 г.
Реализация функции Axpy библиотеки BLAS
5
English     Русский Правила