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

2. Алгоритмічний розділ

2.1 Постановка завдання

Завдання курсової роботи, написати програму на графічному процесорі Ati Radeon, за допомогою однієї із мов програмування OpenCl С, HLSL, Ati stream та ін. Використання паралельного обчислення на графічному процесорі. Програма повинна вирішувати наступні задачі:

1. Додавання векторів(двох одномірних масивів) на мові OpenCl С.

2. Віднімання векторів(двох одномірних масивів) на мові OpenCl С.

3. Множення вектора на вектор(двох одномірних масивів)в результаті одне число, на мові OpenCl С.

4. Множення вектора на скаляр(одного одномірного вектору на число) на мові OpenCl С.

5. Додавання матриць(двовимірних масивів) на мові OpenCl С.

6. Віднімання матриць(двовимірних масивів) на мові OpenCl С.

7. Множення матриць(двовимірних масивів) на мові OpenCl С.

2.2 Вибирання засобів розробки програмного забезпечення

З мов програмування графічних процесорів існує: OpenCl, Cuda, Ati stream, HLSL, GLSL, Brook+, та інші. Існує безліч графічних процесорів. Вони відрізняються: архітектурою, обсягом пам’яті, типом пам’яті, частотою ядра. Корпорацій які випускають теж не одна(Nvidia, Intel, Ati AMD). Вибір звичайно впав на розробку фірми ATI Radeon. Як вже було сказано, що Nvidia і ATI мають різні архітектури, і програмування на цих чипах також відрізняється один від одного. Наприклад набір апаратних і програмних технологій такі як CUDA і ATI STREAM. Конкуруючи пакети. Але наш погляд був прикований к OpenCL. Використовується для написання комп’ютерних програм, пов’язаних с паралельним обчисленням на різних графічних чипах, так я підкреслю, на різних чипах. Як вже було сказано, що Nvidia , що ATI , підтримують OpenCL .

2.3 Алгоритм

Основний алгоритм, використання мови openCL С для операції над матрицями та векторами.

Рис. 2.3.1. Алгоритм операції на масивами

1. Потрібно перевірити чи підтримує наш пристрій OpenCL, це можливо за допомогою програми GPU-Z.

Рис. 2.3.2. Підтримка OpenCl.

З рис.2.3.2. видно що відеокарта підтримую OpenCl.

  1. Підготовка масивів до сумування, віднімання, та добутку. Вибір розміру массива.

  2. Ініціалізація пристрою. cntx = clCreateContextFromType (NULL , CL_DEVICE_TYPE_ALL , NULL , NULL , NULL ). Пристрій як ми бачимо може бути любим. Але нам потрібно для GPU, тому і параметр звісно будемо міняти на CL_DEVICE_TYPE_GPU.

  3. Виділяється пам’ять на прискорювачі. За допомогою команди clCreateBuffer, яка буде містити показчики на наші масиви.

  4. Передача даних в ядро (host), виконується цією ж командо. clCreateBuffer.

  5. Запуск вичіслювань на прискорювачі, потрібну написати команду, яка буде указувати яку саме пам'ять потрібно використовувати при передачі із глобальної (повільної), в більш швидку локальну.

  6. Управління повертається в основну програму.

  7. Потрібно буде вивести результат на екран, або швидкість виконання.

2.4 Збірка програмного забезпечення

Для збірки програмного забезпечення потрібна ОС Windows Seven, або ХР sp3, встановлена на комп'ютері драйвер відеокарта з підтримкою OpenCl. Драйвера можна скачати з сайту Nvidia.

Компіляція

Також потрібен Microsoft Visual C++ 2008. Скачати можна з офіційного сайту Microsoft. За допомогою цього пакету і будимо компілювати програму.

Збірка проекту

Для того щоб не створювати проект, його можна скачати з сайту Nvidia, або Ati AMD для OpenCL. Звичайно його потрібно буде відкоригувати під наші потреби.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]