ЦУДА

С Википедије, слободне енциклопедије

ЦУДА (енгл. Compute Unified Device Architecture) је платформа за паралелну обраду коју је креирала Нвидиа, и имплементирана је на графичким процесорима које они производе. [1] ЦУДА даје програмерима директан приступ виртуелном скупу инструкција и меморији за паралелну обраду у ГПУ.

Помоћу ЦУДА платформе, ГПУ се може користити и за генерално програмирање, а не само за графику. Овај приступ је познат као ГПГПУ (енг. Генерал-пурпосе цомпутинг он грапхицс процессинг унитс). За разлику од ЦПУ, ГПУ поседује паралелност кроз архитектуру која наглашава извршавање више конкурентних нити спорије, уместо извршавања једне нити веома брзо.

ЦУДА платформа је доступна програмерима кроз ЦУДА библиотеке, компајлерске директиве, и екстензије програмских језика C, C++ и Фортран. C/C++ програмери користе 'ЦУДА C/C++', компајлер са "нвцц", ЛЛВМ C/C++ компајлером.[2]

Осим библиотека, директива, ЦУДА C/C++ и ЦУДА Фортран, ЦУДА платформа подржава и друге интерфејсе као што су ОпенЦЛ, Мицрософт ДирецтЦомпуте (интерфејс који је део ДирецтX СДК) и C++ АМП.[3]

У индустрији рачунарских игара, ГПУ се осим за графичко рендеровање користи и за математичка израчунавања у физици за ефекте попут ватре, дима, и динамике флуида. ЦУДА се за ову сврху користи у НВИДИА ПхyсX и Буллет физичким машинама. Осим у видео играма, ЦУДА се такођер користи и за убрзавање израчунавања у биологији, криптографији и другим научним пољима са интензивном применом математичких израчунавања.[4][5][6][7][8]

ЦУДА обезбеђује АПИ ниског нивоа, као и АПИ високог нивоа. Прва верзија ЦУДА СДК је представљена 15. Фебруара 2007. за Мицрософт Wиндоwс и Линуx. Мац ОС X подршка је додана касније у верзији 2.0.[9] ЦУДА ради на свим Нвидиа ГПУ почевши од Г8x серије, Нвидиа ГеФорце, Нвидиа Qуадро и Нвидиа Тесла брендовима.

Пример обраде у ЦУДА:
1. Копирање података из главне меморије у ГПУ меморију
2. ЦПУ шаље инструкције за обраду до ГПУ
3. ГПУ обрађује податке паралелно у сваком језгру
4. Копирање резултата из ГПУ меморије назад у главну меморију

Позадина[уреди | уреди извор]

ГПУ, као специјални процесор, обавља веома интензивне задатке везане за 3Д графику високе резолуције у реалном времену.

ГПУ је еволуирао у паралелни вишепроцесорски систем који омогућава веома ефикасну обраду великих блокова података. ГПУ је ефикаснији него општенаменски ЦПУ за алгоритме где се велики блокови података обрађују паралелно, попут:

Предности[уреди | уреди извор]

ЦУДА има неколико предности над обрадом помоћу графичких АПИ-ја:

  • Разбацано читање - код може бити прочитан са произвољне адресе у меморији;
  • Дељена меморија – ЦУДА излаже брзе регионе дељене меморије (до 48КБ по мулти-процесору) који могу бити дељени између нити. Ово се може користити као кориснички кеш, пружајући већи пропуст података него што је то могуће помоћу методе тражења текстура (енг. теxтуре лоокупс метход);[10]
  • Бржи ток података из/у ГПУ;
  • Пуна подршка за целобројне и битовне операције, укључујући целобројно претраживање текстура;

Ограничења[уреди | уреди извор]

  • ЦУДА не подржава пуни C стандард, тако да се валидан C код, али погрешан C++ код неће компајлирати;[11][12]
  • Рендеровање текстура није подржано;
  • Копирање података између хоста и меморије уређаја може резултовати опадањем перформанси због пропуста и кашњења системске магистрале;
  • Нити би се требале извршавати у групама од по барем 32 нити за најбоље перформансе. Гранања у програму немају утицаја на перформансе, под претпоставком да свака од 32 нити има исти извршни ток;
  • ЦУДА је доступна само на ГПУ које производи Нвидиа;[13]
  • Валидан C++ код понекад може бити означен што спречава његово компајлирање због техника оптимизације које компајлер користи;
  • ЦУДА користи подскуп C језика, без рекурзије и показивача на функције са додатним мањим проширењима. Међутим, појединачан процес се мора извршавати на више раздвојених меморијских простора за разлику од осталих C извршних окружења;
  • Реални бројеви двоструке прецизности (ЦУДА цомпуте цапабилитy 1.3+) одступају од ИЕЕЕ 754 стандарда: "заокружи на најближи паран" је једини подржан мод заокруживања за реципрочне вредности, дељење, и квадратни корен;[14]

Подржани ГПУ[уреди | уреди извор]

ЦУДА цомпуте цапабилитy табела за ГПУ и графичку карту. Такођер директно доступно на: Нвидиа:

ЦУДА
цомпуте цапабилитy
(верзија)
ГПУ Графичке картице
1.0 Г80, Г92, Г92б, Г94, Г94б ГеФорце ГТ 420*, ГеФорце 8800 Ултра, ГеФорце 8800 ГТX, ГеФорце ГТ 340*, ГеФорце ГТ 330*, ГеФорце ГТ 320*, ГеФорце 315*, ГеФорце 310*, ГеФорце 9800 ГТ, ГеФорце 9600 ГТ, ГеФорце 9400ГТ, Qуадро ФX 5600, Qуадро ФX 4600, Qуадро Плеx 2100 С4, Тесла Ц870, Тесла Д870, Тесла С870
1.1 Г86, Г84, Г98, Г96, Г96б, Г94, Г94б, Г92, Г92б ГеФорце Г110М, ГеФорце 9300М ГС, ГеФорце 9200М ГС, ГеФорце 9100М Г, ГеФорце 8400М ГТ, ГеФорце Г105М, Qуадро ФX 4700 X2, Qуадро ФX 3700, Qуадро ФX 1800, Qуадро ФX 1700, Qуадро ФX 580, Qуадро ФX 570, Qуадро ФX 470, Qуадро ФX 380, Qуадро ФX 370, Qуадро ФX 370 Лоw Профиле, Qуадро НВС 450, Qуадро НВС 420, Qуадро НВС 290, Qуадро НВС 295, Qуадро Плеx 2100 Д4, Qуадро ФX 3800М, Qуадро ФX 3700М, Qуадро ФX 3600М, Qуадро ФX 2800М, Qуадро ФX 2700М, Qуадро ФX 1700М, Qуадро ФX 1600М, Qуадро ФX 770М, Qуадро ФX 570М, Qуадро ФX 370М, Qуадро ФX 360М, Qуадро НВС 320М, Qуадро НВС 160М, Qуадро НВС 150М, Qуадро НВС 140М, Qуадро НВС 135М, Qуадро НВС 130М, Qуадро НВС 450, Qуадро НВС 420, Qуадро НВС 295
1.2 ГТ218, ГТ216, ГТ215 ГеФорце ГТ 240, ГеФорце ГТ 220*, ГеФорце 210*, ГеФорце ГТС 360М, ГеФорце ГТС 350М, ГеФорце ГТ 335М, ГеФорце ГТ 330М, ГеФорце ГТ 325М, ГеФорце ГТ 240М, ГеФорце Г210М, ГеФорце 310М, ГеФорце 305М, Qуадро ФX 380 Лоw Профиле, НВИДИА НВС 300, Qуадро ФX 1800М, Qуадро ФX 880М, Qуадро ФX 380М, НВИДИА НВС 300, НВС 5100М, НВС 3100М, НВС 2100М
1.3 ГТ200, ГТ200б ГеФорце ГТX 280, ГеФорце ГТX 275, ГеФорце ГТX 260, Qуадро ФX 5800, Qуадро ФX 4800, Qуадро ФX 4800 фор Мац, Qуадро ФX 3800, Qуадро CX, Qуадро Плеx 2200 Д2, Тесла Ц1060, Тесла С1070, Тесла М1060
2.0 ГФ100, ГФ110 ГеФорце ГТX 590, ГеФорце ГТX 580, ГеФорце ГТX 570, ГеФорце ГТX 480, ГеФорце ГТX 470, ГеФорце ГТX 465, ГеФорце ГТX 480М, Qуадро 6000, Qуадро 5000, Qуадро 4000, Qуадро 4000 фор Мац, Qуадро Плеx 7000, Qуадро 5010М, Qуадро 5000М, Тесла Ц2075, Тесла Ц2050/Ц2070, Тесла М2050/М2070/М2075/М2090
2.1 ГФ104, ГФ106 ГФ108,ГФ114, ГФ116, ГФ119 ГеФорце ГТX 560 Ти, ГеФорце ГТX 550 Ти, ГеФорце ГТX 460, ГеФорце ГТС 450, ГеФорце ГТС 450*, ГеФорце ГТ 640 (ГДДР3), ГеФорце ГТ 630, ГеФорце ГТ 620, ГеФорце ГТ 610, ГеФорце ГТ 520, ГеФорце ГТ 440, ГеФорце ГТ 440*, ГеФорце ГТ 430, ГеФорце ГТ 430*, ГеФорце ГТX 675М, ГеФорце ГТX 670М, ГеФорце ГТ 635М, ГеФорце ГТ 630М, ГеФорце ГТ 625М, ГеФорце ГТ 720М, ГеФорце ГТ 620М, ГеФорце 710М, ГеФорце 610М, ГеФорце ГТX 580М, ГеФорце ГТX 570М, ГеФорце ГТX 560М, ГеФорце ГТ 555М, ГеФорце ГТ 550М, ГеФорце ГТ 540М, ГеФорце ГТ 525М, ГеФорце ГТ 520МX, ГеФорце ГТ 520М, ГеФорце ГТX 485М, ГеФорце ГТX 470М, ГеФорце ГТX 460М, ГеФорце ГТ 445М, ГеФорце ГТ 435М, ГеФорце ГТ 420М, ГеФорце ГТ 415М, ГеФорце 710М, ГеФорце 410М, Qуадро 2000, Qуадро 2000Д, Qуадро 600, Qуадро 410, Qуадро 4000М, Qуадро 3000М, Qуадро 2000М, Qуадро 1000М, НВС 5400М, НВС 5200М, НВС 4200М
3.0 ГК104, ГК106, ГК107 ГеФорце ГТX 770, ГеФорце ГТX 760, ГеФорце ГТX 690, ГеФорце ГТX 680, ГеФорце ГТX 670, ГеФорце ГТX 660 Ти, ГеФорце ГТX 660, ГеФорце ГТX 650 Ти БООСТ, ГеФорце ГТX 650 Ти, ГеФорце ГТX 650, ГеФорце ГТX 780М, ГеФорце ГТX 770М, ГеФорце ГТX 765М, ГеФорце ГТX 760М, ГеФорце ГТX 680МX, ГеФорце ГТX 680М, ГеФорце ГТX 675МX, ГеФорце ГТX 670МX, ГеФорце ГТX 660М, ГеФорце ГТ 750М, ГеФорце ГТ 650М, ГеФорце ГТ 745М, ГеФорце ГТ 645М, ГеФорце ГТ 740М, ГеФорце ГТ 730М, ГеФорце ГТ 640М, ГеФорце ГТ 640М ЛЕ, ГеФорце ГТ 735М, ГеФорце ГТ 730М, Qуадро К5000, Qуадро К4000, Qуадро К2000, Qуадро К2000Д, Qуадро К600, Qуадро К500М, Тесла К10
3.5 ГК110, ГК208 ГеФорце ГТX ТИТАН, ГеФорце ГТX 780 Ти, ГеФорце ГТX 780, ГеФорце ГТ 640 (ГДДР5), Qуадро К6000, Тесла К40, Тесла К20x, Тесла К20

'*' - ОЕМ производи

Табела уређаја који подржавају платформу ЦУДА:[13]

Нвидиа ГеФорце
ГеФорце ГТX ТИТАН
ГеФорце ГТX 780 Ти
ГеФорце ГТX 780
ГеФорце ГТX 770
ГеФорце ГТX 760
ГеФорце ГТX 690
ГеФорце ГТX 680
ГеФорце ГТX 670
ГеФорце ГТX 660 Ти
ГеФорце ГТX 660
ГеФорце ГТX 650 Ти БООСТ
ГеФорце ГТX 650 Ти
ГеФорце ГТX 650
ГеФорце ГТ 640
ГеФорце ГТX 590
ГеФорце ГТX 580
ГеФорце ГТX 570
ГеФорце ГТX 560 Ти
ГеФорце ГТX 560
ГеФорце ГТX 550 Ти
ГеФорце ГТ 520
ГеФорце ГТX 480
ГеФорце ГТX 470
ГеФорце ГТX 465
ГеФорце ГТX 460
ГеФорце ГТX 460 СЕ
ГеФорце ГТС 450
ГеФорце ГТ 440
ГеФорце ГТ 430
ГеФорце ГТ 420
ГеФорце ГТX 295
ГеФорце ГТX 285
ГеФорце ГТX 280
ГеФорце ГТX 275
ГеФорце ГТX 260
ГеФорце ГТС 250
ГеФорце ГТС 240
ГеФорце ГТ 240
ГеФорце ГТ 220
ГеФорце 210/Г210
ГеФорце ГТ 140
ГеФорце 9800 ГX2
ГеФорце 9800 ГТX+
ГеФорце 9800 ГТX
ГеФорце 9800 ГТ
ГеФорце 9600 ГСО
ГеФорце 9600 ГТ
ГеФорце 9500 ГТ
ГеФорце 9400 ГТ
ГеФорце 9400 мГПУ
ГеФорце 9300 мГПУ
ГеФорце 9100 мГПУ
ГеФорце 8800 Ултра
ГеФорце 8800 ГТX
ГеФорце 8800 ГТС
ГеФорце 8800 ГТ
ГеФорце 8800 ГС
ГеФорце 8600 ГТС
ГеФорце 8600 ГТ
ГеФорце 8600 мГТ
ГеФорце 8500 ГТ
ГеФорце 8400 ГС
ГеФорце 8300 мГПУ
ГеФорце 8200 мГПУ
ГеФорце 8100 мГПУ
ГеФорце ГТ 630
Нвидиа ГеФорце Мобиле
ГеФорце ГТX 780М
ГеФорце ГТX 770М
ГеФорце ГТX 765М
ГеФорце ГТX 760М
ГеФорце ГТ 750М
ГеФорце ГТ 745М
ГеФорце ГТ 740М
ГеФорце ГТ 735М
ГеФорце ГТ 730М
ГеФорце ГТX 680МX
ГеФорце ГТX 680М
ГеФорце ГТX 675МX
ГеФорце ГТX 675М
ГеФорце ГТX 670МX
ГеФорце ГТX 670М
ГеФорце ГТX 660М
ГеФорце ГТ 650М
ГеФорце ГТ 645М
ГеФорце ГТ 640М
ГеФорце ГТX 580М
ГеФорце ГТX 570М
ГеФорце ГТX 560М
ГеФорце ГТ 555М
ГеФорце ГТ 550М
ГеФорце ГТ 540М
ГеФорце ГТ 525М
ГеФорце ГТ 520М
ГеФорце ГТX 480М
ГеФорце ГТX 470М
ГеФорце ГТX 460М
ГеФорце ГТ 445М
ГеФорце ГТ 435М
ГеФорце ГТ 425М
ГеФорце ГТ 420М
ГеФорце ГТ 415М
ГеФорце ГТX 285М
ГеФорце ГТX 280М
ГеФорце ГТX 260М
ГеФорце ГТС 360М
ГеФорце ГТС 350М
ГеФорце ГТС 260М
ГеФорце ГТС 250М
ГеФорце ГТ 335М
ГеФорце ГТ 330М
ГеФорце ГТ 325М
ГеФорце ГТ 320М
ГеФорце 310М
ГеФорце ГТ 240М
ГеФорце ГТ 230М
ГеФорце ГТ 220М
ГеФорце Г210М
ГеФорце ГТС 160М
ГеФорце ГТС 150М
ГеФорце ГТ 130М
ГеФорце ГТ 120М
ГеФорце Г110М
ГеФорце Г105М
ГеФорце Г103М
ГеФорце Г102М
ГеФорце Г100
ГеФорце 9800М ГТX
ГеФорце 9800М ГТС
ГеФорце 9800М ГТ
ГеФорце 9800М ГС
ГеФорце 9700М ГТС
ГеФорце 9700М ГТ
ГеФорце 9650М ГТ
ГеФорце 9650М ГС
ГеФорце 9600М ГТ
ГеФорце 9600М ГС
ГеФорце 9500М ГС
ГеФорце 9500М Г
ГеФорце 9400М Г
ГеФорце 9300М ГС
ГеФорце 9300М Г
ГеФорце 9200М ГС
ГеФорце 9100М Г
ГеФорце 8800М ГТX
ГеФорце 8800М ГТС
ГеФорце 8700М ГТ
ГеФорце 8600М ГТ
ГеФорце 8600М ГС
ГеФорце 8400М ГТ
ГеФорце 8400М ГС
ГеФорце 8400М Г
ГеФорце 8200М Г
Нвидиа Qуадро
Qуадро К6000
Qуадро К5000
Qуадро К4000
Qуадро К2000Д
Qуадро К2000
Qуадро К600
Qуадро 6000
Qуадро 5000
Qуадро 4000
Qуадро 2000
Qуадро 600
Qуадро ФX 5800
Qуадро ФX 5600
Qуадро ФX 4800
Qуадро ФX 4700 X2
Qуадро ФX 4600
Qуадро ФX 3800
Qуадро ФX 3700
Qуадро ФX 1800
Qуадро ФX 1700
Qуадро ФX 580
Qуадро ФX 570
Qуадро ФX 380
Qуадро ФX 370
Qуадро НВС 510
Qуадро НВС 450
Qуадро НВС 420
Qуадро НВС 295
Qуадро Плеx 1000 Модел IV
Qуадро Плеx 1000 Модел С4
Нвидиа Qуадро Мобиле
Qуадро К5100М
Qуадро К5000М
Qуадро К4100М
Qуадро К4000М
Qуадро К3100М
Qуадро К3000М
Qуадро К2100М
Qуадро К2000М
Qуадро К1100М
Qуадро К1000М
Qуадро К610М
Qуадро К510М
Qуадро К500М
Qуадро 5010М
Qуадро 5000М
Qуадро 4000М
Qуадро 3000М
Qуадро 2000М
Qуадро 1000М
Qуадро ФX 3800М
Qуадро ФX 3700М
Qуадро ФX 3600М
Qуадро ФX 2800М
Qуадро ФX 2700М
Qуадро ФX 1800М
Qуадро ФX 1700М
Qуадро ФX 1600М
Qуадро ФX 880М
Qуадро ФX 770М
Qуадро ФX 570М
Qуадро ФX 380М
Qуадро ФX 370М
Qуадро ФX 360М
Qуадро НВС 320М
Qуадро НВС 160М
Qуадро НВС 150М
Qуадро НВС 140М
Qуадро НВС 135М
Qуадро НВС 130М
Нвидиа Тесла
Тесла К40
Тесла К20X
Тесла К20
Тесла К10
Тесла Ц2050/2070
Тесла М2050/М2070
Тесла С2050
Тесла С1070
Тесла М1060
Тесла Ц1060
Тесла Ц870
Тесла Д870
Тесла С870


Спецификације и својства верзија[уреди | уреди извор]

Подршка својства ЦУДА цомпуте цапабилитy (верзија)
1.0 1.1 1.2 1.3 2.x 3.0 3.5
Целобројне атомске функције над 32-битним речима у глобалној меморији Не Да
атомицЕxцх() над 32-битним
вредностима бројева са покретном тачком у глобалној меморији
Целобројне атомске функције над 32-битним речима у дељеној меморији Не Да
атомицЕxцх() над 32-битним
вредностима бројева са покретном тачком у дељеној меморији
Целобројне атомске функције над 64-битним речима у глобалној меморији
Wарп воте функције
Операције над бројевима са покретном тачком двоструке прецизности Не Да
Атомске функције за обраду 64-битних
целобројних вредности у дељеној меморији
Не Да
Атомске функција сабирања бројева са покретном тачком над 32-битним речима у дељеној меморији
_баллот()
_тхреадфенце_сyстем()
_сyнцтхреадс_цоунт(),
_сyнцтхреадс_анд(),
_сyнцтхреадс_ор()
Функције за површине
3Д мрежа блокова нити
Wарп функције Не Да
Фуннел схифт Не Да
Динамичка паралелност
Техничке спецификације ЦУДА цомпуте цапабилитy (верзија)
1.0 1.1 1.2 1.3 2.x 3.0 3.5
Максимална димензионалност мреже блока нити 2 3
Максимална x-, y-, или з-димензија мреже блока нити 65535 231-1
Максимална димензионалност блока нити 3
Максимална x- или y-димензија блока 512 1024
Максимална з-димензија блока 64
Максималан број нити по блоку 512 1024
Wарп величина 32
Максималан број резидентних блокова по мултипроцесору 8 16
Максималан број резидентних нити по мултипроцесору 768 1024 1536 2048
Број 32-битних регистара по мултипроцесору 8 К 16 К 32 К 64 К
Максималан број 32-битних регистара по нити 128 63 255
Максимална количина дељене меморије по мултипроцесору 16 КБ 48 КБ
Количина локалне меморије по нити 16 КБ 512 КБ
Величина константне меморије 64 КБ
Величина кеша по мултипроцесору за константну меморију 8 КБ
Величина кеша по мултипроцесору за меморију текстура Зависно од уређаја, између 6 КБ и 8 КБ 12 КБ Између 12 КБ
и 48 КБ
Максимална ширина за референцу 1Д текстуре везане за ЦУДА низ 8192 65536
Максимална ширина за референцу 1Д текстуре везане за линеарну меморију 227
Максимална ширина и број слојева за референцу 1Д слојевите текстуре 8192 × 512 16384 × 2048
Максимална висина и ширина за референцу 2Д текстуре везане за ЦУДА низ 65536 × 32768 65536 × 65535
Максимална висина и ширина за референцу 2Д текстуре везане за линеарну меморију 65000 × 65000 65000 × 65000
Максимална висина,ширина, и број слојева за референцу 2Д слојевите текстуре 8192 × 8192 × 512 16384 × 16384 × 2048
Максимална висина,ширина, и дубина за референцу 3Д текстуре везане за ЦУДА низ или линеарну меморију 2048 × 2048 × 2048 4096 × 4096 × 4096
Максимална ширина (и висина) за референцу цубемап текстуре Н/А 16384
Максимална ширина (и висина) и број слојева за референцу цубемап слојевите текстуре Н/А 16384 × 2046
Максималан број текстура које се могу везати за кернел 128 256
Максимална ширина референце 1Д површине везане за ЦУДА низ Није
подржано
65536
Максимална ширина и број слојева референце 1Д слојевите површине 65536 × 2048
Максимална ширина и висина за референцу 2Д површине везане за ЦУДА низ 65536 × 32768
Максимална ширина, висина, и број слојева референце 2Д слојевите површине 65536 × 32768 × 2048
Максимална ширина, висина, и дубина референце 3Д површине везане за ЦУДА низ 65536 × 32768 × 2048
Максимална ширина (и висина) референце за цубемап површину везану за ЦУДА низ 32768
Максимална ширина (и висина) и број слојева референце за цубемап слојевиту површину 32768 × 2046
Максималан број површина које се могу повезати у кернелу 8 16
Максималан број инструкција по кернелу 2 миллион 512 миллион
Спецификације архитектуре ЦУДА цомпуте цапабилитy (верзија)
1.0 1.1 1.2 1.3 2.0 2.1 3.0 3.5
Број језгара за функције које извршавају целобројну аритметику и аритметику са покретним зарезом 8 32 48 192 192
Број јединица за филтрирање текстура по излазној рендеринг јединици 2 4 8 32 32
Број wарп распоређивача 1 2 2 4 4
Број инструкција издатих одједном од стране распоређивача 1 1 2 2 2


Пример[уреди | уреди извор]

Пример кода у C++ који учитава текстуру из слике у низ на ГПУ:

texture<float, 2, cudaReadModeElementType> tex;

void foo()
{
  cudaArray* cu_array;

  // Alokacija niza
  cudaChannelFormatDesc description = cudaCreateChannelDesc<float>();
  cudaMallocArray(&cu_array, &description, width, height);

  // Kopiranje podataka iz slike u niz
  cudaMemcpyToArray(cu_array, image, width*height*sizeof(float), cudaMemcpyHostToDevice);

  // Postavka parametara teksture
  tex.addressMode[0] = cudaAddressModeClamp;
  tex.addressMode[1] = cudaAddressModeClamp;
  tex.filterMode = cudaFilterModePoint;
  tex.normalized = false; // do not normalize coordinates

  // Vežemo teksturu za niz
  cudaBindTextureToArray(tex, cu_array);

  // Izvršavamo kernel
  dim3 blockDim(16, 16, 1);
  dim3 gridDim((width + blockDim.x - 1)/ blockDim.x, (height + blockDim.y - 1) / blockDim.y, 1);
  kernel<<< gridDim, blockDim, 0 >>>(d_data, height, width);

  // Poništavamo vezu tekstura-niz
  cudaUnbindTexture(tex);
} //end foo()

__global__ void kernel(float* odata, int height, int width)
{
   unsigned int x = blockIdx.x*blockDim.x + threadIdx.x;
   unsigned int y = blockIdx.y*blockDim.y + threadIdx.y;
   if (x < width && y < height) {
      float c = tex2D(tex, x, y);
      odata[y*width+x] = c;
   }
}

Тренутна и будућа употреба ЦУДА платформе[уреди | уреди извор]

  • Убрзано приказивање 3Д графике
  • Убрзана конверзија формата видео фајлова
  • Убрзана енкрипција, декрипција и компресија
  • Израчунавања у биологији
  • Симулације у физици, нарочито код динамике флуида.
  • Дистрибуирана обрада

Референце[уреди | уреди извор]

  1. ^ „НВИДИА ЦУДА Хоме Паге”. Архивирано из оригинала 06. 01. 2014. г. Приступљено 05. 01. 2014. 
  2. ^ ЦУДА ЛЛВМ Цомпилер
  3. ^ ДирецтЦомпуте Оцеан Демо Руннинг он Нвидиа ЦУДА-енаблед ГПУ на сајту YouTube
  4. ^ Гиоргос Василиадис; Спирос Антонатос; Мицхалис Полyцхронакис; Евангелос П. Маркатос; Сотирис Иоаннидис (2008). „Гнорт: Хигх Перформанце Нетwорк Интрусион Детецтион Усинг Грапхицс Процессорс” (ПДФ). Процеедингс оф тхе 11тх Интернатионал Сyмпосиум он Рецент Адванцес ин Интрусион Детецтион (РАИД). Бостон, МА, УСА. 
  5. ^ Сцхатз, M.C.; Трапнелл, C.; Делцхер, А.L.; Варсхнеy, А. (2007). „Хигх-тхроугхпут сеqуенце алигнмент усинг Грапхицс Процессинг Унитс”. БМЦ Биоинформатицс. 8:474: 474. ПМЦ 2222658Слободан приступ. ПМИД 18070356. дои:10.1186/1471-2105-8-474. 
  6. ^ Манавски, Светлин А.; Гиоргио Валле (2008). „ЦУДА цомпатибле ГПУ цардс ас еффициент хардwаре аццелераторс фор Смитх-Wатерман сеqуенце алигнмент”. БМЦ Биоинформатицс. 9: С10. ПМЦ 2323659Слободан приступ. ПМИД 18387198. дои:10.1186/1471-2105-9-С2-С10. 
  7. ^ Пyрит – Гоогле Цоде http://code.google.com/p/pyrit/
  8. ^ Усе yоур Нвидиа ГПУ фор сциентифиц цомпутинг Архивирано на сајту Wayback Machine (28. децембар 2008), BOINC official site (December 18, 2008)
  9. ^ „Nvidia CUDA Software Development Kit (CUDA SDK) – Release Notes Version 2.0 for MAC OSX”. Архивирано из оригинала 06. 01. 2009. г. Приступљено 5. 01. 2014. 
  10. ^ Silberstein, Mark; Schuster, Assaf; Geiger, Dan; Patney, Anjul; Owens, John D. (2008). „Proceedings of the 22nd annual international conference on Supercomputing - ICS; chapter: Efficient computation of sum-products on GPUs through software-managed cache'08”: 309—318. ISBN 978-1-60558-158-3. doi:10.1145/1375527.1375572. 
  11. ^ NVCC forces c++ compilation of .cu files
  12. ^ C++ keywords on CUDA C code
  13. ^ а б „CUDA-Enabled Products”. CUDA Zone. Nvidia Corporation. Приступљено 3. 11. 2008. 
  14. ^ CUDA and double precision floating point numbers

Spoljašnje veze[уреди | уреди извор]