Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный Университет Механико-Математический Факультет
Выполнил : Студент 3его курса ММФ НГУ Лыков Кирилл Олегович Научные руководители: К.ф.-м.н., доцент каф. программирования Скопин И.Н. Инженер ЗАО "Интел А/О" Пасько Е.В. В рамках проекта : Использование графических процессоров для вычислений с плавающей точкой в Java- программах.Exploiting Graphics Processing Units (GPUs) for general purpose computation in Java programming language
Цель работы Глобальная цель работы создание библиотеки, написаной с использованием технологии GPGPU, которой может пользоваться Java-программист, возможно незнающий C/C++ и тонкостей GPU, OpenGL. Локальная цель этой работы реализация части этой библиотеки, позволяющей работать с так называемыми битовыми множествами, причем реализацию операций над множествами, предполагается реализовать на GPU.
Основные этапы работы 1.Освоение технологии GPGPU. В том числе библиотеки OpenGL и возможностей языка шейдеров Cg (NVIDIA Corporation). 2. Создание кода проекта на C Перенос функциональности проекта в среду Java, используя JNI. Проделанная работа Этапы [1],[2] частично выполнены: изучены основы языка шейдеров и OpenGL; написана часть необходимого в дальнейшем кода, в том числе классы необходимые для более удобной работы с текстурами и шейдерами (всего около 400 строк).
Вычисления общего назначения на графическом ускорителе General-Purpose Computation on Graphics Hardware
Мотивация использования GPU Скорость –3.0 GHz dual-core Pentium4: 24.6 GFLOPS –NVIDIA GeForceFX 7800: 165 GFLOPs –1066 MHz FSB Pentium Extreme Edition : 8.5 GB/s –ATI Radeon X850 XT Platinum Edition: 37.8 GB/s GPUs становятся все быстрее –CPUs: 1.4×годичный рост –GPUs: 1.7×(pixels) to 2.3× (vertices)годичный рост Современные GPU обеспечивают приемлемую точность вычислений –Поддержка чисел с плавающей точкой ( до 32 битов) См [1]
GPUs становятся все быстрее
Конвейер OpenGL
Основные концепции 1. Массив = текстура. CPU array (1D адресация) -> GPU texture (2D адресация) 2. Вычислительное ядро программы = шейдер. Часть программы для CPU ответственная за вычисления переносится соответствующим образом на GPU 3. Вычисление = отрисовка. 4. Получение результатов вычислений в буфер кадра ( frame buffer ).
Литература 1. David Luebke. General-Purpose Computation on Graphics Hardware. University of Virginia. 2. Mark Harris. Mapping Computational Concepts to GPUs. NVIDIA 3. Dominik Göddeke. GPGPU::Basic Math Tutorial.