Автор статьи
Валерия
Эксперт по сдаче вступительных испытаний в ВУЗах
- Изучить архитектуру графических процессоров.
- Ознакомиться с системным программным обеспечением для написания параллельных программ для графических процессоров.
- Выработать базовые навыки написания программ для графических процессоров.
- Написать последовательную программу поэлементного сложения двух векторов.
- Написать программу поэлементного сложения двух векторов для графических процессоров NVIDIA с использованием CUDA.
- Написать программу поэлементного сложения двух векторов c использованием OpenCL.
- Встроить в реализованные программы код измерения времени работы программы.
- Измерить время работы последовательной программы и обеих параллельных программам для массивов с разными размерами и нарисовать графики с результатами измерений в осях OX – число элементов входной выборки, OY – время выполнения программы.
- На основе полученных измерений оценить эффективность параллельных программ и сделать вывод о длине последовательности, при которой использование графического процессора дает выигрыш по сравнению с последовательной.
- Изучить архитектуры графических ускорителей NVIDIA и AMD.
- Ознакомиться с базовыми характеристиками и возможностями библиотеки CUDA. Изучить ее модель исполнения, модель памяти и ее базовые функции (cudaMalloc, cudaFree, cudaMemcpy, cudaDeviceSynchronize). Изучить команды компиляции CUDA программ.
- Ознакомиться с базовыми характеристиками и возможностями стандарта OpenCL. Изучить его основные понятия (платформа, устройство, контекст, очередь команд, ядро), его базовые функции (clGetPlatformIDs, clGetPlatformInfo, clCreateContext, clGetContextInfo, clCreateCommandQueue, clCreateProgramWithSource, clBuildProgram, clCreateKernel, clCreateBuffer, clEnqueueWriteBuffer, clSetKernelArg, clEnqueueNDRangeKernel, clEnqueueReadBuffer, clReleaseKernel, clReleaseProgram, clReleaseCommandQueue, clReleaseContext, clReleaseMemObject) и базовые конструкции и встроенные функции языка OpenCL C.
- Ознакомиться с примерами программ на CUDA и OpenCL (примеры даются преподавателем в начале лабораторной работы).
- Построить программы поэлементного сложения двух векторов на CUDA и на OpenCL, преобразовав фрагмент последовательной программы, который вычисляет новое значение клетки, в ядро, и добавив код для инициализации, деинициализации и пересылок данных между хост машиной и графическим процессором.
- Для проведения замеров времени исполнения программ на множестве массивов с различными размерами написать скрипт (на bash, csh или ином скриптовом языке), запускающий компиляцию и счет программы в цикле по размеру массива. Провести замеры времени исполнения CUDA программы на графическом процессоре NVIDIA и OpenCL программы на графическом процессоре NVIDIA или AMD и на процессоре с архитектурой x86 или x86_64.
- Нарисовать графики времени работы программ, используя утилиту GNU Plot.
- Выявить преимущества и недостатки архитектуры графических ускорителей по сравнению с архитектурой процессоров общего назначения.
О сайте
Ссылка на первоисточник:
https://memberlux.ru/
Поделитесь в соцсетях: