- •1. Конструкторський розділ
- •1.1 Технологія OpenCl
- •1.2 Специфікація відеокарти Radeon hd 4850
- •1.3 Архітектура чіпу rv770
- •1.4 Мультипроцесор
- •2. Алгоритмічний розділ
- •2.1 Постановка завдання
- •2.2 Вибирання засобів розробки програмного забезпечення
- •2.3 Алгоритм
- •2.4 Збірка програмного забезпечення
- •3. Технологічний розділ
- •3.1 Опис алгоритму
- •4. Тестувальний розділ
- •4.1 Тестування програми
- •5. Висновок
- •6. Список літератури
- •7. Додаток
1.2 Специфікація відеокарти Radeon hd 4850
1. Кодове ім'я чіпу RV770.
2. Технологія 55 нм.
3. 956 000 000 транзисторів.
4. Уніфікована архітектура з масивом загальних процесорів для потокової обробки вершин і пікселей, а також інших видів даних.
5. Апаратна підтримка DirectX 10.1, в тому числі і шейдерной моделі - Shader Model 4.1, генерації геометрії і запису проміжних даних з шейдерів (stream output). 6. 256-бітна шина пам'яті: чотири контролери шириною по 64 біта з підтримкою GDDR3/GDDR5.
7. Частота ядра 625-750 МГц.
8. 10 SIMD ядер, що включають 800 скалярних ALU для розрахунків з плаваючою точкою (цілочисельні і плаваючі формати, підтримка FP32 і FP64 точності в рамках стандарту IEEE 754).
9. 10 укрупнених текстурних блоків, з підтримкою FP16 і FP32 форматів.
10. 40 блоків текстурної адресації.
11. 160 блоків текстурної вибірки.
12. 40 блоків білінійної фільтрації з можливістю фільтрації FP16 текстур на повній швидкості і підтримкою трилінійної і анізотропної фільтрації для всіх текстурних форматів.
13. Можливість динамічних розгалужень у піксельних і вершинних рейдерах 16 блоків ROP з підтримкою режимів антиалиасинга з можливістю програмованої вибірки більш ніж 16 семплів на піксель, у тому числі при FP16 або FP32 форматі буфера кадру.
14. Частота ядра 625 МГц.
1.3 Архітектура чіпу rv770
Рис.1.3.1. Архітектура чіпу RV770
Основна частина відеочіпу RV770 складається з десяти SIMD ядер, кожне з яких містить по 16 блоків суперскалярних потокових процесорів, всього їх в чіпі 160 штук. Суперскалярність цих процесорів не змінилася з часів RV670, тому можна вважати, що чіп містить 160 * 5 = 800 скалярних 32-бітних потокових процесорів. Для 64-бітових розрахунків подвійної точності використовуються ці ж блоки, знижується тільки темп розрахунків.
SIMD ядра можуть обмінюватися один з одним інформацією за допомогою 16 кілобайтної глобальної пам'яті.
1.4 Мультипроцесор
Існує класифікація комп'ютерів по Флінну:
-
Обчислювальна система з одним потоком команд і даних (однопроцесорна ЕОМ - SISD, Single Instruction stream over a Single Data stream).
-
Обчислювальна система із загальним потоком команд (SIMD, Single Instruction, Multiple Data - одиночний потік команд і множинний потік даних).
-
Обчислювальна система з множинним потоком команд і одиночним потоком даних (MISD, Multiple Instruction Single Data - конвеєрна ЕОМ).
-
Обчислювальна система з множинним потоком команд і даних (MIMD, Multiple Instruction Multiple Data).
Звичайний процесор відноситься до SISD, тобто одночасно виконує одну інструкцію над одним числом. Відеокарти на увазі свого специфічного призначення пішли шляхом SIMD. У 3-d прискорювача така архітектура необхідна, тому що колір кожного пікселя екрану обчислюється незалежно від інших пікселів, по одному і тому ж алгоритму, а самі функції, за якими обчислюється цей колір, легкі щодо загальної обчислювальної складності. У результаті відео-процесор - це безліч ядер, які в кожен момент часу можуть виконувати тільки одну і ту ж команду, але над різними даними. Такий процесор називається мультипроцесором. Таким чином, щоб успішно використовувати відеокарту для обчислень, потрібно створити алгоритм з безліччю операцій незалежних один від одного, і не використовувати розгалуження. Розгалуження використовувати можна, але в цьому випадку виконуватися будуть обидві гілки.
Даний процес цілком прозорий і не вимагає зусиль з боку програміста. Насправді у відеокарті є кілька мультипроцесорів в документації по Stream вони називаються "SIMD Engine". Кожен такий мультипроцесор ділиться на декілька "Thread Processors" які в свою чергу діляться на "Stream Cores".