Рассмотрение примеров программ обработки массивов данных. Выполнение вычислений общего характера в графическом процессоре. Анализ производительности работы программ в зависимости от размера массивов. Изучение архитектуры параллельных вычислений CUDA.
Аннотация к работе
Московский Авиационный ИнститутИзвестно, что вычислительные задачи требуют значительного количества операций, а значит, и ресурсов. Однако, изза фундаментальных ограничений при производстве интегральных схем (ограничения на потребляемую мощность и на тепловыделение, физический предел размера транзистора), рассчитывать на увеличение производительности за счет увеличения тактовой частоты процессора в дальнейшем не приходится. Таким образом, столкнувшись с очевидной проблемой повышения быстродействия, производители начали предлагать процессоры с несколькими вычислительными ядрами вместо одного. Кроме того, если все ядра подключены к общей шине, каждый процессор должен «видеть» целый и корректный образ памяти, что неизбежно ведет к необходимости для каждого процессора отслеживать обращения к памяти всех остальных процессоров для поддержания актуальности своих кешей.Написать программу, которая должна выполнять вычисления для массива данных, и произвести оценку производительности работы программы при вычислениях на CPU и GPU. Вычисление по каждой программе будет включать следующие последовательные этапы: Определение массива, Выделение памяти на GPU, Копирование данных из памяти CPU в выделенную память GPU, Осуществление запуска ядра (вычисление функции на GPU), Копирование результатов вычислений в память на CPU, Вычисление функции на CPU, Освобождение памяти, выделенной GPU, Вывод результатов работы программы на CPU и GPU__global__ void INVARRAY(int* a, int* b, int count) if (id <count) __global__ void MULTARRAY(float* a, float*b, int count)float time_gpu = 0, time_cpu = 0; __global__ void MULTARRAY(float* a, float*b, int count) } void MULTARRAYCPU(float* datainput, float *dataoutput, int count ) float* data = new float [count]; float* res = new float[count];CPU: INTELCORE(TM) i7-3770 CPU @ 3.40 GHZ, 16 GB CPU: Intel(R) Xeon® CPU E5-2650.@ 2.00GHZ, 128 GB Ниже приведены результаты производительности (в миллисекундах, в зависимости от размера массива): для программы инвертирования массиваТехнология CUDA - это программно-аппаратная архитектура, которая позволяет производить вычисления с использованием графических процессоров NVIDIA. Данная технология основана на расширении языка С и дает возможность организовывать доступ к набору инструкций графического ускорителя и управлять его памятью, а также разработать на нем сложные параллельные вычисления.
План
Содержание
Введение
1. Постановка задачи
2. Реализация
3. Результат
4. Сравнение производительности приложения на CPU и GPU