Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cuda.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
651 Кб
Скачать

3.4 Отклонения в результатах вычислений и двойная точность

Вычисления на GPU выполняются в одинарной точности. В связи с этим возникают отклонения в результатах, от результатов, полученных при вычислениях в двойной точности, выполненных на CPU. При одних параметрах счета отклонения невелики, при других - отклонения возрастают. При необходимости повышение точности вычислений на GPU должно быть обеспечено использованием GPU с поддержкой двойной точности вычислений.

Для того чтобы программа производила вычисления в двойной точности необходимо изменить тип данных float на double [11]. Изменения делаются в основной части программы (java-класс) и в CUDA модуле (.cu файл). Также функция cosf заменяется на функцию cos.

После вычислений в двойной точности определяются отклонения для 50 значений (рисунок 3.5).

Рисунок 3.5 - Отклонения JCUDA float и JCUDA double от значений Java double

Размеры отклонений для 50 значений:

- среднее отклонение JCUDA float от Java double = 4,2*10-9;

- максимальное отклонение JCUDA float от Java double = 1,7*10-8;

- среднее отклонение JCUDA double от Java double = 1,4*10-10;

- максимальное отклонение JCUDA double от Java double = 2,8*10-10.

Таким образом, двойная точность JCUDA дает значительно более точные результаты вычислений по сравнению с одинарной точностью:

- среднее отклонение JCUDA double меньше среднего отклонения JCUDA float в 30 раз;

- максимальное отклонение JCUDA double меньше максимальное отклонения JCUDA float в 60 раз.

Перечень ссылок

1. NVIDIA Corporation. CUDA C Programming Guide http://docs.nvidia.com/cuda/cuda-c-programming-guide/

2. CUDA. http://en.wikipedia.org/wiki/CUDA

3. Д. Сандерс, Э. Кэндрот, Технология CUDA в примерах. Введение в програмирование графических процессов: Пер. с англ. Слинкина А.А., научный редактор Боресков А.В. ­ М.: ДМК Пресс, 2011. - 232 с.

4. CUDA. http://ru.wikipedia.org/wiki/CUDA

5. Что такое CUDA? http://www.nvidia.ru/object/what_is_cuda_new_ru.html

6. CUDA мы катимся: технология NVIDIA CUDA http://www.xakep.ru/post/47507/default.asp

7. Алексей Берилло. NVIDIA CUDA - неграфические вычисления на графических процессорах http://www.ixbt.com/video3/cuda-1.shtml

8. NVIDIA CUDA 5 еще больше упрощает программирование на GPU http://www.nvidia.ru/object/nvidia-cuda-5-parallel-computing-20121015-ru.html

9. JCUDA. http://www.jcuda.org/jcuda/JCuda.html

10. Приймак А.В., Мишин А.В. Использование технологии CUDA для решения задачи моделирования сгустка электронов, движущегося в плазме. Современные проблемы математики и ее приложения в естественных науках и информационных технологиях, Сб.тезисов междунар. конф., 2011. - 258c.

11. Надь О. А. Сравнение результатов вычислений с одинарной и двойной точностью, произведенных на основе технологии CUDA.