ГПУ

Увод у ГПУ програмирање

Увод у ГПУ програмирање

Рачунарство опште намене на ГПУ-у (графичка процесна јединица), познатије као ГПУ програмирање, је употреба ГПУ-а заједно са ЦПУ-ом (централна процесорска јединица) за убрзавање рачунања у апликацијама којима традиционално рукује само ЦПУ.Иако је ГПУ програмирање практично одрживо само у последње две деценије, његове апликације сада укључују практично сваку индустрију. На пример, ГПУ програмирање се користи за убрзање обраде видео записа, дигиталних слика и аудио сигнала, статистичке физике, научног рачунарства, медицинске слике, рачунарског вида, неуронских мрежа и дубоког учења, криптографије, па чак и откривања упада, међу многим другим областима.

Овај чланак служи као теоретски увод намењен онима који би желели да науче како писати ГПУ-убрзане програме, као и онима које само општи интерес занима ова фасцинантна тема.

Разлика између ГПУ-а и ЦПУ-а

Дуго времена пре него што је 3Д графика високе резолуције постала висока норма, већина рачунара није имала ГПУ. Уместо тога, ЦПУ је извршио сва упутства рачунарских програма извршавајући основне аритметичке, логичке, контролне и улазно / излазне (И / О) операције наведене у упутствима. Из тог разлога, ЦПУ се често описује као мозак рачунара.

Али последњих година, ГПУ, који је дизајниран да убрза стварање слика за излаз на уређај за приказ, често помаже ЦПУ у решавању проблема у областима којима је раније руковао само ЦПУ.

Произвођач графичке картице Нвидиа пружа једноставан начин како да разуме основну разлику између ГПУ-а и ЦПУ-а: „ЦПУ се састоји од неколико језгара оптимизованих за секвенцијалну серијску обраду, док ГПУ има масовно паралелну архитектуру која се састоји од хиљада мањих и ефикаснијих језгра дизајнирана за истовремено руковање више задатака.”

Способност руковања више задатака истовремено чини ГПУ изузетно погодним за неке задатке, као што је тражење речи у документу, док други задаци, попут израчунавања Фибоначијеве секвенце, уопште немају користи од паралелне обраде.

Међутим, међу задацима који имају значајне користи од паралелне обраде је и дубоко учење, једна од најтраженијих вештина у технологији данас. Алгоритми дубоког учења опонашају активност у слојевима неурона у неокортексу, омогућавајући машинама да науче како да разумеју језик, препознају обрасце или компонују музику.

Као резултат све веће важности вештачке интелигенције, потражња за програмерима који разумеју рачунарство опште намене на ГПУ-у расте.

ЦУДА Версус ОпенЦЛ Версус ОпенАЦЦ

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

Срећом, сада је много лакше радити ГПУ-убрзано рачунарство захваљујући паралелним рачунарским платформама попут Нвидијине ЦУДА, ОпенЦЛ или ОпенАЦЦ. Ове платформе омогућавају програмерима да игноришу језичку баријеру која постоји између ЦПУ-а и ГПУ-а и, уместо тога, фокусирају се на рачунарске концепте вишег нивоа.

ЦУДА

Првобитно објављена од стране Нвидиа 2007. године, ЦУДА (Цомпуте Унифиед Девице Арцхитецтуре) је доминантни власнички оквир данас. „Са ЦУДА-ом програмери могу драматично убрзати рачунарске апликације искориштавањем снаге ГПУ-а“, описује оквир Нвидиа.

Програмери могу позвати ЦУДА из програмских језика као што су Ц, Ц ++, Фортран или Питхон, без икаквих вештина у графичком програмирању. Штавише, ЦУДА Тоолкит из Нвидиа садржи све што је програмерима потребно да започну са креирањем апликација убрзаних ГПУ-ом које у великој мери надмашују своје колеге везане за ЦПУ.

ЦУДА СДК је доступан за Мицрософт Виндовс, Линук и мацОС. платформа ЦУДА такође подржава друге рачунске интерфејсе, укључујући ОпенЦЛ, Мицрософтов ДирецтЦомпуте, ОпенГЛ Цомпуте Схадерс и Ц ++ АМП.

ОпенЦЛ

Првобитно објављен од стране Кхронос Гроуп 2009. године, ОпенЦЛ је најпопуларнији отворени, бесплатни стандард за паралелно програмирање на више платформи. Према Кхронос Гроуп, „ОпенЦЛ у великој мери побољшава брзину и одзив широког спектра апликација у бројним тржишним категоријама, укључујући наслове за игре и забаву, научни и медицински софтвер, професионалне креативне алате, обраду вида и обуку и инференцију неуронских мрежа.”

ОпенЦЛ су до сада имплементирали Алтера, АМД, Аппле, АРМ, Цреативе, ИБМ, Имагинатион, Интел, Нвидиа, Куалцомм, Самсунг, Виванте, Ксилинк и ЗииЛАБС, а подржава све популарне оперативне системе на свим главним платформама, чинећи га изузетно свестран. ОпенЦЛ дефинише језик сличан Ц-у за писање програма, али независни АПИ-ји постоје за друге програмске језике и платформе као што су Питхон или Јава.

ОпенАЦЦ

ОпенАЦЦ је најмлађи програмски стандард за паралелно рачунање описан у овом чланку. Првобитно га је 2015. године објавила група компанија која се састоји од Цраи, ЦАПС, Нвидиа и ПГИ (Портланд Гроуп) ради поједностављења паралелног програмирања хетерогених ЦПУ / ГПУ система.

„ОпенАЦЦ је преносни паралелни програмски модел заснован на перформансама заснован на директивама, дизајниран за научнике и инжењере заинтересоване за пренос својих кодова на широк спектар хетерогених ХПЦ хардверских платформи и архитектура са знатно мањим програмским напорима него што је потребно код ниског нивоа модел.,”Наводи ОпенАЦЦ на својој званичној веб страници.

Програмери заинтересовани за ОпенАЦЦ могу да додају напомене Ц, Ц ++ и Фортран изворном коду како би ГПУ-у рекли која подручја која треба убрзати. Циљ је пружити модел за програмирање акцелератора који је преносив у оперативним системима и различитим типовима хост процесора и акцелератора.

Коју да користим?

Избор између ове три паралелне рачунарске платформе зависи од ваших циљева и окружења у којем радите. На пример, ЦУДА се широко користи у академској заједници, а сматра се и најлакшим за учење. ОпенЦЛ је убедљиво најпреноснија паралелна рачунарска платформа, мада програми написани у ОпенЦЛ-у и даље морају бити појединачно оптимизовани за сваку циљну платформу.

Научите ГПУ кодирање на ЛинукХинт-у.цом

ГПУ програмирање са Питхоном

ГПУ програмирање са Ц++

Додатна литература

Да бисте се упознали са ЦУДА-ом, препоручујемо вам да следите упутства у водичу за брзи почетак ЦУДА-е, који објашњава како покренути и покренути ЦУДА на Линук-у, Виндовс-у и мацОС-у. АМД-ов Водич за програмирање ОпенЦЛ пружа фантастичан, детаљни преглед ОпенЦЛ-а, али претпоставља да су читаоцу позната прва три поглавља ОпенЦЛ спецификације. ОпенАЦЦ нуди уводни водич у три корака осмишљен да демонстрира како искористити предности ГПУ програмирања, а више информација можете наћи у ОпенАЦЦ спецификацији.

ОпенТТД вс Симутранс
Стварање сопствене симулације превоза може бити забавно, опуштајуће и изузетно примамљиво. Због тога морате да испробате што више игара како бисте про...
Водич за ОпенТТД
ОпенТТД је једна од најпопуларнијих игара за пословну симулацију. У овој игри морате створити диван посао превоза. Међутим, почет ћете у почетку око 1...
СуперТукКарт за Линук
СуперТукКарт је сјајан наслов дизајниран да вам пружи Марио Карт искуство бесплатно на вашем Линук систему. Прилично је изазовно и забавно играти, диз...