Програмно-апаратна платформа CUDA, архітектурний ряд Fermi, програмування за допомогою засобів програмної платформи CUDA SDK. Технологія GPGPU - Курсовая работа

бесплатно 0
4.5 244
Еволюція GPU та поява GPGPU. OpenCL – відкритий стандарт для паралельного програмування гетерогенних систем. Сутність та особливості технології Nvidia CUDA. Програмно-апаратна платформа CUDA. Програмування за допомогою CUDA SDK. Огляд архітектури Fermi.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Відносно недавно NVIDIA заявила про створення нової технології CUDA, покликаної підвищити продуктивність звичайних персональних компютерів за рахунок обчислювальних потужностей відеокарт цієї компанії. Для 3D відеоприскорювачів ще кілька років тому зявилися перші технології неграфічних розрахунків загального призначення GPGPU (General-PURPOSECOMPUTATIONONGPUS). Адже сучасні відеочіпи містять сотні математичних виконавчих блоків, і ця міць може використовуватися для значного прискорення безлічі обчислювально інтенсивних додатків. У GPGPU для цього використовувалися графічні API: OPENGL і Direct3D, коли дані до відеочіпа передавалися у вигляді текстур, а розрахункові програми завантажувалися у вигляді шейдерів. Недоліками такого методу є порівняно висока складність програмування й низька швидкість обміну даними між CPU і GPU.GPGPU (General-Purpose computing on Graphics Processing Units) - техніка використання графічного процесора відеокарти для загальних обчислень, які зазвичай виконує центральний процесор.Сам термін GPU був вперше використаний корпорацією NVIDIA для підкреслення того факту, що графічний прискорювач, який спочатку використовувався лише для прискорення тривимірної графіки, став потужним програмованим пристроєм(процесором), придатним для рішення широкого класу задач, ніяк не повязаних з графікою. Причиною тому був той факт, що графічний прискорювач міг одночасно обробляти відразу багато окремих пікселів, виконуючи над ними дуже прості операції. Наступним кроком була поява вершинних програм (GEFORCE 2) - замість фіксованого набору кроків з обробки вершин можна було задати програму, написану на спеціальному асемблері. Фактично на той час графічні прискорювачі перетворилися на потужні SIMD-процесори, тобто паралельні процесори, здатні виконувати одночасно одну і ту ж операцію над великими масивами даних. Використовуючи такий API, готувалися текстури, що містили вхідні дані, а потім через операцію рендерінгу (зазвичай прямокутника) на графічному процесорі запускалася програма для оброби цих даних.General-purpose computing on Graphics Processing Units), що дозволяє програмістам реалізовувати мовою програмування С (а в останніх версіях CUDA і мовою C ) алгоритми, що виконуватимуться на графічних процесорах Geforce восьмого покоління і старше (Geforce 8 Series, Geforce 9 Series, Geforce 200 Series), NVIDIAQUADRO і Tesla компанії Nvidia.Всі нитки групуються в ієрархію - сітка / блок / потік (див.рис.2.1.1). Верхній рівень - сітка - відповідає ядру і обєднує всі потоки, що виконують дане ядро. При цьому кожен блок zавляє собою повністю незалежний набір взаємодіючих між собою потоків, потоки з різних блоків не можуть між собою взаємодіяти. При цьому потоки всередині блоку можуть взаємодіяти між собою через: · загальну память (що розділяється памяті) З апаратної точки зору всі потоки розбиваються на так звані warp-и - блоки підряд ідучихпотоків, які одночасно (фізично) виконуються і можуть взаємодіяти один з одним.Одною з серйозних відмінностей між GPU і CPU є орrанізація памяті і робота з нею.Зазвичай більшу частину кристалів процесорів займають кеші різних рівнів. Як наслідок, на відміну від процесора, де є всього один тип памяті з кількома рівнями кешування в самому CPU, GPU має більш складну, але в той же час гораздо більш документованої структурою памяті. Тип памяті Доступ Рівень виділення Швидкість роботи registers R/W per-thread висока (on chip) local R/W per-thread низька (DRAM) shared R/W per-block висока (on-chip) global R/W per-grid низька(DRAM) constant R/O per-grid висока(on chip L1 cache) texture R/O per-grid висока(on chip L1 cache) Стосовно першої, слід намагатись здійснювати звернення потоків напівварпа до глобальної памяті таким чином, щоб здійснювалися зчитування чи запис 16-и послідовних 4-хбайтових слів відповідно до номерів потоків (рис.1.3.3). Оптимізація полягає в тому, що слід намагатись організувати звернення напівварпа до sharedпамяті так, щоб кожен потік звертався до іншого банку (рис.1.3.5).До початку створення CUDA-застосувань необхідно підготувати середовищу, в якому можна створювати програми мовами С/С (із застосуванням CUDA SDK) та виконувати їх. Технологія CUDA підтримується кожним відеоадаптером від компанії Nvidia, починаючи із GEFORCE 8800 GTX, випущеного в 2006 році. Емуляція CUDA-процесорів для відлагодженя роботи CUDA-програм підтримується у всіх версіях CUDA SDK до CUDA 3.0 включно. Nvidia забезпечує системне програмне забезпечення, що дозволяє програмам взаємодіяти з наявним у системі апаратним забезпеченням із підтримкою CUDA. Драйвер як правило установлюється одночасно з установкою самого GPU, тим не менше, не стане зайвим перевірити на офіційному сайті компанії Nvidia, чи являється поточна версія драйверу найсвіжішою.Далі наведено приклад простого CUDA-застосування, що виконує додавання двох векторів. Серцевий код супроводжується прозорими коментарями.

План
Зміст

Список використаних скорочень

Вступ

1. Технологія GPGPU

1.1 Еволюція GPU та поява GPGPU

1.2 OPENCL та DIRECTX Compute

1.3 Nvidia CUDA

2. Програмно-апаратна платформа CUDA

2.1 Програмна архітектура CUDA

2.2 Архітектура памяті в CUDA

3. Програмування за допомогою CUDA SDK

3.1 Підготовка необхідного інструментарію

3.2 Приклад CUDA-застосування

3.3 Особливості програмування з CUDA SDK

4. Архітектурний ряд Fermi

4.1 Інновації в архітектурі Fermi

4.2 Огляд архітектури Fermi

Висновки

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?