
- •1 Обзор cuda
- •1.2 Введение в cuda
- •1.3 Терминология cuda
- •1.4 Модель программирования cuda
- •1.5 Версии вычислительных возможностей cuda и программного обеспечения cuda Toolkit
- •1.6 Cuda Toolkit версии 5 и версия вычислительных возможностей 3
- •1.7 Полезные ссылки
- •2 Технология jcuda
- •2.1 Введение в jcuda
- •2.2 Требования к техническому и программному обеспечению для jcuda-программ
- •2.3 Настройка jcuda для среды разработки Eclipse
- •2.4 Решение возможных проблем при работе с cuda и jcuda
- •2.5 Определение параметров cuda-устройства и системных параметров в Java-программе
- •2.6 Подключение cuda модулей и выполнение их на cuda-устройстве из Java-программы
- •2.7 Создание ‘.Cu‘ файла
- •2.8 Сборка программы
- •3 Изучение особенностей jcuda на примере
- •3.1 Пример jcuda-программы
- •3.2 Скорость выполнения программы
- •3.3 Размер блока
- •3.4 Отклонения в результатах вычислений и двойная точность
1.7 Полезные ссылки
http://ru.wikipedia.org/wiki/CUDA - о CUDA на Википедии (русский);
http://en.wikipedia.org/wiki/CUDA - о CUDA на Википедии (английский);
http://www.nvidia.com/object/cuda_home_new.html - CUDA home;
https://developer.nvidia.com – центр разработчика CUDA;
https://developer.nvidia.com/cuda-toolkit - CUDA Toolkit;
http://docs.nvidia.com/cuda - документация CUDA;
https://developer.nvidia.com/cuda-gpus - устройства с поддержкой CUDA;
http://jcuda.org/ - сайт JCUDA;
http://forum.byte-welt.de/forumdisplay.php?f=90 - форум JCUDA.
2 Технология jcuda
2.1 Введение в jcuda
JCUDA обеспечивает взаимодействие с набором базовых функций интерфейса программирования приложений CUDA (CUDA API) и драйверами из Java-программы [9].
Основное применение JCUDA - взаимодействие с существующими специализированными библиотеками, построенными на основе CUDA API:
- JCublas - Java-привязка для CUDA-библиотеки подпрограмм основной линейной алгебры (Basic Linear Algebra Subprograms (BLAS));
- JCufft - Java-привязка для CUDA-библиотеки быстрого трансформирования Фурье (Fast Fourier Transforms (FFT));
- JCudpp - Java-привязка для CUDA-библиотеки примитивов параллельных даных (Data Parallel Primitives (DPP));
- JCurand - Java-привязка для CUDA-генератора случайных чисел;
- JCusparse - Java-привязка для CUDA-библиотеки для разреженных матриц (sparse matrix).
Также распространено подключение CUDA модулей (.cu) и выполнение их на GPU из Java-программы.
При использовании библиотек JCublas и др. в Java-программе, все параметры вычисления на GPU задаются непосредственно в Java-программе путем использования классов и их методов, предоставляемых JCUDA. По сути написание такой программы не отличается от написания стандартных Java-программ.
Специализированные библиотеки JCUDA часто не предоставляют необходимую функциональность при программировании вычислений. Поэтому универсальным средством написания JCUDA-программ является подключение CUDA модулей и выполнение их на GPU из Java-программы.
2.2 Требования к техническому и программному обеспечению для jcuda-программ
Для разработки JCUDA-программ необходимо наличие в компьютере CUDA-устройства и установленного ПО (рисунок 2.1).
Рисунок 2.1 - ПО для разработки JCUDA-программ
Данное ПО можно бесплатно скачать в Интернете и необходимо установить в указанной последовательности:
- CUDA Toolkit https://developer.nvidia.com/cuda-toolkit;
- Java Development Kit (JDK) http://www.oracle.com/technetwork/java/javase/downloads/index.html;
- среда разработки для Java, например Eclipse (рекомендуется Eclipse IDE for Java EE Developers) http://www.eclipse.org/downloads
- файлы JCUDA http://jcuda.org/downloads/downloads.html
- JCUDA-утилита ‘jcudaUtils‘ http://jcuda.org/utilities/utilities.html
- компилятор языка С ‘cl.exe‘ (входит в Microsoft Visual Studio 9.0 (2008) и другие среды разработки) для компиляции ‘.cu‘ файлов
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a22341ee-21db-43aa-8431-40be78461ee0 (vcsetup.exe)
Для запуска готовых JCUDA-программ необходимо наличие CUDA-устройства, CUDA Toolkit и Java (JDK или JRE).