Համակարգչային ռեսուրս U SM. Որտեղ cuda է տանում. gpgpu տեխնոլոգիայի գործնական կիրառում. լավագույն սարքավորումները Ծրագրեր, որոնք աշխատում են cuda-ով

Տասնամյակներ շարունակ գործում է Մուրի օրենքը, որն ասում է, որ երկու տարին մեկ չիպի վրա տրանզիստորների թիվը կրկնապատկվում է: Այնուամենայնիվ, սա դեռ 1965 թվականին էր, և վերջին 5 տարիների ընթացքում սպառողական դասի պրոցեսորներում ֆիզիկական բազմամիջուկների գաղափարը սկսեց արագ զարգանալ. 2005 թվականին Intel-ը ներկայացրեց Pentium D-ը, իսկ AMD-ն ներկայացրեց Athlon X2-ը: Այն ժամանակ 2 միջուկ օգտագործող հավելվածները կարելի էր հաշվել մի ձեռքի մատների վրա: Սակայն հեղափոխություն կատարած Intel պրոցեսորների հաջորդ սերունդն ուներ ուղիղ 2 ֆիզիկական միջուկ։ Ավելին, Quad սերիալը հայտնվեց 2007 թվականի հունվարին, այդ ժամանակ Մուրն ինքը խոստովանեց, որ իր օրենքը շուտով կդադարի գործել։

Հիմա ինչ? Կրկնակի միջուկային պրոցեսորները նույնիսկ բյուջետային գրասենյակային համակարգերում, և 4 ֆիզիկական միջուկները դարձել են նորմ, և դա ընդամենը 2-3 տարվա ընթացքում: Պրոցեսորների հաճախականությունը չի ավելանում, բայց բարելավվում է ճարտարապետությունը, ավելանում է ֆիզիկական և վիրտուալ միջուկների քանակը։ Այնուամենայնիվ, տասնյակ կամ նույնիսկ հարյուրավոր հաշվողական «միավորներով» հագեցած վիդեո ադապտերներ օգտագործելու գաղափարը վաղուց է եղել:

Եվ չնայած GPU-ի հաշվարկման հեռանկարները հսկայական են, ամենահայտնի լուծումը Nvidia CUDA-ն է, որն անվճար է, ունի բազմաթիվ փաստաթղթեր և, ընդհանուր առմամբ, շատ հեշտ է իրականացնել, այս տեխնոլոգիան օգտագործող շատ հավելվածներ չկան: Հիմնականում սրանք բոլոր տեսակի մասնագիտացված հաշվարկներ են, որոնց մասին սովորական օգտագործողը շատ դեպքերում չի հետաքրքրվում: Բայց կան նաև ծրագրեր, որոնք նախատեսված են զանգվածային օգտագործողի համար, և մենք դրանց մասին կխոսենք այս հոդվածում:

Նախ, մի փոքր բուն տեխնոլոգիայի և այն մասին, թե ինչով է այն օգտագործվում: Որովհետեւ Հոդված գրելիս ես կենտրոնանում եմ ընթերցողների լայն շրջանակի վրա, ուստի կփորձեմ այն ​​բացատրել մատչելի լեզվով, առանց բարդ տերմինների և փոքր-ինչ հակիրճ:

CUDA(անգլերեն՝ Compute Unified Device Architecture) ծրագրային և ապարատային ճարտարապետություն է, որը թույլ է տալիս կատարել հաշվարկներ՝ օգտագործելով NVIDIA գրաֆիկական պրոցեսորները, որոնք աջակցում են GPGPU տեխնոլոգիան (պատահական հաշվարկ վիդեո քարտերի վրա): CUDA ճարտարապետությունն առաջին անգամ հայտնվեց շուկայում ութերորդ սերնդի NVIDIA չիպի՝ G80 թողարկմամբ և առկա է գրաֆիկական չիպերի բոլոր հաջորդ շարքերում, որոնք օգտագործվում են GeForce, Quadro և Tesla արագացուցիչների ընտանիքներում: (գ) Wikipedia.org

Մուտքային հոսքերը մշակվում են միմյանցից անկախ, այսինքն. զուգահեռ.

Գոյություն ունի բաժանում 3 մակարդակի.

Ցանց- միջուկ: Պարունակում է բլոկների մեկ / երկու / եռաչափ զանգված:

Արգելափակել- պարունակում է բազմաթիվ թելեր: Տարբեր բլոկների թելերը չեն կարող փոխազդել միմյանց հետ: Ինչու՞ անհրաժեշտ էր բլոկներ ներմուծել: Յուրաքանչյուր բլոկ, ըստ էության, պատասխանատու է իր ենթաառաջադրանքի համար: Օրինակ՝ մեծ պատկերը (որը մատրիցա է) կարելի է բաժանել մի քանի փոքր մասերի (մատրիցաներ) և զուգահեռ աշխատել պատկերի յուրաքանչյուր մասի հետ։

Թեմա- հոսք. Մեկ բլոկի ներսում թելերը կարող են փոխազդել կա՛մ ընդհանուր հիշողության միջոցով, որն, ի դեպ, շատ ավելի արագ է, քան գլոբալ հիշողությունը, կա՛մ թելերի համաժամացման գործիքների միջոցով:

Շեղելիրար հետ փոխազդող թելերի միություն է, բոլոր ժամանակակից GPU-ների համար Warp-ի չափը 32 է: Հաջորդը գալիս է կիսախորշ, որը կեղեւի կեսն է, որովհետեւ Հիշողության հասանելիությունը սովորաբար տեղի է ունենում առանձին՝ աղավաղման առաջին և երկրորդ կեսի համար:

Ինչպես տեսնում եք, այս ճարտարապետությունը գերազանց է առաջադրանքների զուգահեռացման համար: Ու թեև ծրագրավորումն իրականացվում է C լեզվով որոշ սահմանափակումներով, իրականում ամեն ինչ այդքան պարզ չէ, քանի որ... ամեն ինչ չէ, որ կարելի է զուգահեռել. Չկան նաև պատահական թվեր (կամ սկզբնավորում) ստեղծելու ստանդարտ գործառույթներ, այս ամենը պետք է իրականացվի առանձին: Եվ չնայած պատրաստի տարբերակները շատ են, այս ամենից ոչ մեկը ուրախություն չի բերում: Ռեկուրսիայի օգտագործման հնարավորությունը համեմատաբար վերջերս է հայտնվել։

Պարզության համար գրվել է փոքր կոնսոլային ծրագիր (կոդը նվազագույնի հասցնելու համար), որը գործողություններ է կատարում float տիպի երկու զանգվածներով, այսինքն. ոչ ամբողջ արժեքներով։ Վերը նշված պատճառներով սկզբնավորումը (զանգվածը տարբեր կամայական արժեքներով լցնելը) իրականացվել է պրոցեսորի կողմից: Այնուհետև յուրաքանչյուր զանգվածից համապատասխան տարրերով կատարվեցին 25 տարբեր գործողություններ, միջանկյալ արդյունքները գրվեցին երրորդ զանգվածում։ Զանգվածի չափը փոխվել է, արդյունքները հետևյալն են.

Ընդհանուր առմամբ կատարվել է 4 թեստ.

1024 տարր յուրաքանչյուր զանգվածում.

Հստակ երևում է, որ այդքան փոքր թվով էլեմենտների դեպքում զուգահեռ հաշվարկը քիչ օգուտ ունի, քանի որ Հաշվարկներն իրենք շատ ավելի արագ են, քան դրանց պատրաստումը։

4096 տարր յուրաքանչյուր զանգվածում՝

Եվ հիմա դուք կարող եք տեսնել, որ վիդեո քարտը գործողություններ է կատարում զանգվածների վրա 3 անգամ ավելի արագ, քան պրոցեսորը: Ավելին, վիդեո քարտի վրա այս թեստի կատարման ժամանակը չի ավելացել (ժամանակի մի փոքր նվազումը կարող է վերագրվել սխալի):

Այժմ յուրաքանչյուր զանգվածում կա 12288 տարր.

Վիդեոքարտի առանձնացումը ավելացել է 2 անգամ։ Կրկին հարկ է նշել, որ վիդեո քարտի վրա կատարման ժամանակը ավելացել է
աննշանորեն, բայց պրոցեսորի վրա ավելի քան 3 անգամ, այսինքն. համաչափ առաջադրանքի բարդությանը:

Եվ վերջին թեստը յուրաքանչյուր զանգվածում 36864 տարր է.

Այս դեպքում արագացումը հասնում է տպավորիչ արժեքների՝ վիդեո քարտի վրա գրեթե 22 անգամ ավելի արագ: Եվ կրկին, վիդեո քարտի վրա կատարման ժամանակը մի փոքր ավելացավ, բայց պրոցեսորի վրա՝ պահանջվող 3 անգամ, ինչը կրկին համաչափ է առաջադրանքի բարդությանը:

Եթե ​​շարունակեք բարդացնել հաշվարկները, վիդեո քարտը ավելի ու ավելի է շահում։ Թեև օրինակն ինչ-որ չափով ուռճացված է, սակայն ընդհանուր իրավիճակը հստակ ցույց է տալիս։ Բայց ինչպես վերը նշվեց, ամեն ինչ չէ, որ կարելի է զուգահեռել։ Օրինակ՝ Pi-ի հաշվարկը։ Կան միայն Մոնտե Կառլոյի մեթոդով գրված օրինակներ, սակայն հաշվարկների ճշգրտությունը 7 տասնորդական տեղ է, այսինքն. կանոնավոր բոց. Հաշվարկների ճշգրտությունը բարձրացնելու համար պահանջվում է երկար թվաբանություն, և հենց այստեղ են առաջանում խնդիրներ, քանի որ. Շատ ու շատ դժվար է սա արդյունավետ իրականացնել։ Ես չկարողացա ինտերնետում գտնել օրինակներ, որոնք օգտագործում են CUDA և Pi-ն հաշվարկում են 1 միլիոն տասնորդական թվերով: Փորձեր են արվել գրել նման հավելված, սակայն Pi-ի հաշվարկման ամենապարզ և արդյունավետ մեթոդը Brent-Salamin ալգորիթմն է կամ Գաուսի բանաձևը։ Հայտնի SuperPI-ն, ամենայն հավանականությամբ, (դատելով գործողության արագությունից և կրկնությունների քանակից) օգտագործում է Գաուսի բանաձևը։ Եվ, դատելով
Շնորհիվ այն բանի, որ SuperPI-ն միահյուս է, CUDA-ի ներքո օրինակների բացակայությունը և իմ փորձերի ձախողումը, անհնար է արդյունավետ կերպով զուգահեռացնել Pi-ի հաշվարկը:

Ի դեպ, կարելի է նկատել, թե ինչպես է հաշվարկների ժամանակ ավելանում GPU-ի բեռը, հատկացվում է նաև հիշողություն։

Այժմ եկեք անցնենք CUDA-ի առավել գործնական առավելություններին, մասնավորապես՝ ներկայումս գործող ծրագրերին, որոնք օգտագործում են այս տեխնոլոգիան: Մեծ մասամբ սրանք բոլոր տեսակի աուդիո/վիդեո փոխարկիչներ և խմբագրիչներ են:

Փորձարկման ժամանակ օգտագործվել են 3 տարբեր վիդեո ֆայլեր.

      *Ավատար ֆիլմի ստեղծման պատմությունը - 1920x1080, MPEG4, h.264.
      *Սերիա «Lie to me» - 1280x720, MPEG4, h.264.
      *Սերիա «Ֆիլադելֆիայում միշտ արևոտ է» - 624x464, xvid.

Առաջին երկու ֆայլերի կոնտեյները և չափը եղել է .mkv և 1,55 ԳԲ, իսկ վերջինը՝ .avi և 272 ՄԲ։

Սկսենք շատ սենսացիոն և հայտնի արտադրանքից. Բադաբում. Օգտագործված տարբերակ - 1.2.1.74 . Ծրագրի արժեքն է $29.90 .

Ծրագրի ինտերֆեյսը պարզ է և ինտուիտիվ. ձախ կողմում մենք ընտրում ենք աղբյուրի ֆայլը կամ սկավառակը, իսկ աջ կողմում՝ անհրաժեշտ սարքը, որի համար մենք կոդավորում ենք: Կա նաև օգտագործողի ռեժիմ, որտեղ պարամետրերը ձեռքով սահմանվում են, ինչը մենք օգտագործել ենք:

Նախ, եկեք տեսնենք, թե որքան արագ և արդյունավետ է տեսանյութը կոդավորված «իր մեջ», այսինքն. նույն բանաձեւը եւ մոտավորապես նույն չափը: Մենք արագությունը կչափենք fps-ով, և ոչ թե անցած ժամանակով, այս կերպ ավելի հարմար է համեմատել և հաշվարկել, թե որքան կսեղմվի կամայական երկարությամբ տեսանյութը: Որովհետեւ Այսօր մենք դիտարկում ենք «կանաչ» տեխնոլոգիան, այնուհետև գրաֆիկները կլինեն համապատասխան -)

Կոդավորման արագությունն ուղղակիորեն կախված է որակից, սա ակնհայտ է։ Հարկ է նշել, որ լույսի լուծաչափը (եկեք այն անվանենք ավանդաբար SD) Badaboom-ի համար խնդիր չէ. կոդավորման արագությունը 5,5 անգամ ավելի բարձր է, քան օրիգինալ (24 կադր/վ) տեսանյութի կադրերի արագությունը: Եվ նույնիսկ ծանր 1080p տեսանյութը փոխակերպվում է ծրագրի կողմից իրական ժամանակում: Հարկ է նշել, որ վերջնական տեսանյութի որակը շատ մոտ է օրիգինալ վիդեո նյութին, այսինքն. Badaboom-ը կոդավորում է շատ, շատ արդյունավետ:

Բայց սովորաբար նրանք տեսանյութը փոխանցում են ավելի ցածր լուծաչափի, եկեք տեսնենք, թե ինչպես են գործերը այս ռեժիմում: Քանի որ լուծաչափը նվազում էր, տեսանյութի բիթային արագությունը նույնպես նվազում էր: Այն 9500 կբիթ/վրկ էր 1080p ելքային ֆայլի համար, 4100 կբիթ/վրկ 720p և 2400 կբ/վ 720x404: Ընտրությունը կատարվել է չափի/որակի ողջամիտ հարաբերակցության հիման վրա:

Մեկնաբանությունների կարիք չկա։ Եթե ​​դուք պատռում եք 720p-ից մինչև սովորական SD որակ, ապա 2 ժամ տևողությամբ ֆիլմի տրանսկոդավորումը կտևի մոտ 30 րոպե: Եվ միևնույն ժամանակ, պրոցեսորի ծանրաբեռնվածությունը աննշան կլինի, դուք կարող եք զբաղվել ձեր գործով՝ առանց անհարմարություն զգալու։

Իսկ եթե տեսանյութը վերածեք շարժական սարքի ձևաչափի: Դա անելու համար ընտրեք iPhone-ի պրոֆիլը (բիտրաչափը 1 Մբիթ/վրկ, 480x320) և նայեք կոդավորման արագությանը.

Պե՞տք է ինչ-որ բան ասեմ: iPhone-ի նորմալ որակով երկու ժամանոց ֆիլմը տրանսկոդավորվում է 15 րոպեից պակաս ժամանակում: HD որակով ավելի դժվար է, բայց դեռ շատ արագ։ Հիմնական բանը այն է, որ ելքային տեսանյութի որակը մնում է բավականին բարձր մակարդակի վրա, երբ դիտվում է հեռախոսի էկրանին:

Ընդհանուր առմամբ, Badaboom-ի տպավորությունները դրական են, աշխատանքի արագությունը հաճելի է, իսկ ինտերֆեյսը պարզ է և պարզ: Ավելի վաղ տարբերակների բոլոր տեսակի սխալները (ես օգտագործել եմ բետա 2008-ին) շտկվել են: Բացառությամբ մի բանի՝ սկզբնաղբյուր ֆայլի ուղին, ինչպես նաև այն թղթապանակը, որում պահվում է պատրաստի տեսանյութը, չպետք է պարունակի ռուսերեն տառեր: Բայց ծրագրի առավելությունների համեմատ այս թերությունն աննշան է։

Հաջորդ շարքում մենք կունենանք Super LoiLoScope. Սովորական տարբերակի համար հարցնում են 3280 ռուբլի, իսկ սենսորային տարբերակի համար, որն աջակցում է սենսորային կառավարում Windows 7-ում, նույնքան էլ խնդրում են 4440 ռուբլի. Փորձենք պարզել, թե ինչու է մշակողը ցանկանում նման գումար և ինչու է վիդեո խմբագրիչը բազմահպային աջակցության կարիք ունի: Օգտագործված վերջին տարբերակը - 1.8.3.3 .

Բավականին դժվար է բառերով նկարագրել ծրագրի ինտերֆեյսը, ուստի որոշեցի կարճ տեսանյութ նկարել։ Անմիջապես կասեմ, որ ինչպես CUDA-ի բոլոր վիդեո փոխարկիչները, GPU-ի արագացումը աջակցվում է միայն h.264 կոդեկով MPEG4 վիդեո ելքի համար:

Կոդավորման ընթացքում պրոցեսորի ծանրաբեռնվածությունը 100% է, բայց դա անհանգստություն չի առաջացնում: Բրաուզերը և այլ թեթև հավելվածները չեն դանդաղեցնում:

Հիմա եկեք անցնենք կատարմանը: Սկզբից, ամեն ինչ նույնն է, ինչ Badaboom-ի դեպքում՝ տեսանյութը որակով նմանատիպի վերծանում:

Արդյունքները շատ ավելի լավն են, քան Badaboom-ը: Որակը նույնպես գերազանց է, բնօրինակի հետ տարբերությունը կարելի է նկատել միայն խոշորացույցի տակ զույգերով շրջանակները համեմատելով։

Wow, այստեղ LoiloScope-ը գերազանցում է Badaboom-ին 2,5 անգամ: Միևնույն ժամանակ հեշտությամբ կարող եք զուգահեռաբար կտրել և կոդավորել մեկ այլ տեսանյութ, կարդալ նորություններ և նույնիսկ դիտել ֆիլմեր, և նույնիսկ FullHD-ն առանց խնդիրների է նվագարկվում, թեև պրոցեսորի ծանրաբեռնվածությունը առավելագույնն է։

Հիմա եկեք փորձենք վիդեո նկարահանել շարժական սարքի համար, եկեք անվանենք պրոֆիլը նույն կերպ, ինչպես կոչվում էր Badaboom-ում՝ iPhone (480x320, 1 Մբիթ/վրկ):

Սխալ չկա։ Ամեն ինչ մի քանի անգամ վերստուգվել է, ամեն անգամ արդյունքը նույնն է եղել։ Ամենայն հավանականությամբ, դա տեղի է ունենում այն ​​պարզ պատճառով, որ SD ֆայլը ձայնագրվել է այլ կոդեկով և այլ կոնտեյներով: Տրանսկոդավորման ժամանակ տեսանյութը նախ վերծանվում է, բաժանվում որոշակի չափի մատրիցների և սեղմվում։ Xvid-ի դեպքում օգտագործվող ASP ապակոդավորիչը զուգահեռ վերծանելիս ավելի դանդաղ է, քան AVC-ն (h.264-ի համար): Այնուամենայնիվ, 192 կադր/վրկ արագությունը 8 անգամ ավելի արագ է, քան բնօրինակ տեսանյութի արագությունը, 23 րոպեանոց շարքը սեղմվում է 4 րոպեից պակաս ժամանակում: Իրավիճակը կրկնվեց xvid/DivX-ի մեջ սեղմված այլ ֆայլերի հետ:

LoiloScopeԵս թողեցի միայն հաճելի տպավորություններ. ինտերֆեյսը, չնայած իր անսովորությանը, հարմար է և ֆունկցիոնալ, իսկ գործողության արագությունը գովասանքից դուրս է: Համեմատաբար վատ ֆունկցիոնալությունը որոշ չափով հիասթափեցնող է, բայց հաճախ պարզ տեղադրմամբ դուք միայն պետք է մի փոքր կարգավորեք գույները, սահուն անցումներ կատարեք, տեքստ ավելացնեք, և LoiloScope-ը հիանալի աշխատանք է կատարում դրա հետ: Գինը նույնպես որոշ չափով վախեցնող է՝ սովորական տարբերակի համար ավելի քան 100 դոլարը նորմալ է արտասահմանյան երկրների համար, բայց նման թվերը մեզ դեռ մի քիչ վայրենի են թվում։ Չնայած, խոստովանում եմ, որ եթե ես, օրինակ, հաճախ նկարահանեի և մոնտաժեի տնային տեսանյութերը, գուցե մտածեի գնելու մասին։ Միևնույն ժամանակ, ի դեպ, ես ստուգեցի HD (ավելի ճիշտ AVCHD) բովանդակությունը ուղղակիորեն տեսախցիկից խմբագրելու հնարավորությունը՝ առանց նախապես այլ ձևաչափի փոխարկելու, LoiloScope-ը որևէ խնդիր չի հայտնաբերել .mts-ի նման ֆայլերի հետ։

Նոր տեխնոլոգիան նման է նոր առաջացած էվոլյուցիոն տեսակի: Տարօրինակ արարած, ի տարբերություն շատ հին ժամանակների: Երբեմն անհարմար, երբեմն ծիծաղելի: Եվ սկզբում նրա նոր որակները ոչ մի կերպ հարմար չեն թվում այս հաստատուն ու կայուն աշխարհին։

Սակայն մի քիչ ժամանակ է անցնում, և պարզվում է, որ սկսնակն ավելի արագ է վազում, ավելի բարձր է ցատկում և ընդհանուր առմամբ ավելի ուժեղ է։ Եվ նա ավելի շատ ճանճեր է ուտում, քան իր հետադիմական հարեւանները։ Եվ հետո այդ նույն հարեւանները սկսում են հասկանալ, որ այս անշնորհք նախկինի հետ վիճելու իմաստ չկա։ Ավելի լավ է նրա հետ ընկերանալ, և նույնիսկ ավելի լավ է սիմբիոզ կազմակերպել: Դուք կտեսնեք, որ ավելի շատ ճանճեր կլինեն:

GPGPU տեխնոլոգիան (General-Purpose Graphics Processing Units - ընդհանուր նշանակության գրաֆիկական պրոցեսոր) երկար ժամանակ գոյություն ուներ միայն խելամիտ գիտնականների տեսական հաշվարկներում: Էլ ինչպե՞ս։ Առաջարկել արմատապես փոխել հաշվողական գործընթացը, որը զարգացել է տասնամյակների ընթացքում՝ վստահելով դրա զուգահեռ ճյուղերի հաշվարկը վիդեո քարտի, դա կարող են միայն տեսաբանները:

CUDA տեխնոլոգիայի տարբերանշանը մեզ հիշեցնում է, որ այն աճել է խորքերում
3D գրաֆիկա.

Բայց GPGPU տեխնոլոգիան երկար ժամանակ փոշի չէր հավաքելու համալսարանական ամսագրերի էջերին։ Փափկելով իր լավագույն որակների փետուրները, նա գրավեց արտադրողների ուշադրությունը: Ահա թե ինչպես է ծնվել CUDA-ն՝ GPGPU-ի ներդրում GeForce գրաֆիկական պրոցեսորների վրա՝ արտադրված nVidia-ի կողմից:

CUDA-ի շնորհիվ GPGPU տեխնոլոգիաները դարձել են հիմնական: Եվ հիմա միայն ամենակարճատեսն ու ծուլության հաստ շերտով ծածկված ծրագրավորման համակարգեր մշակողը չի հայտարարում իր արտադրանքով CUDA-ին աջակցելու մասին։ ՏՏ հրապարակումները պատիվ համարեցին տեխնոլոգիայի մանրամասները ներկայացնել բազմաթիվ գիտահանրամատչելի հոդվածներում, և մրցակիցներն անմիջապես նստեցին օրինաչափությունների և խաչաձև կոմպիլյատորների հետ՝ նման բան մշակելու համար:

Հանրային ճանաչումը երազանք է ոչ միայն սկսնակ աստղերի, այլև նորածին տեխնոլոգիաների համար։ Իսկ CUDA-ի բախտը բերեց: Նա հայտնի է, նրա մասին խոսում ու գրում են։

Նրանք պարզապես գրում են, կարծես թե շարունակում են քննարկել GPGPU-ն հաստ գիտական ​​ամսագրերում: Նրանք ռմբակոծում են ընթերցողին մի շարք տերմիններով, ինչպիսիք են «ցանց», «SIMD», «warp», «host», «հյուսվածք և մշտական ​​հիշողություն»: Նրանք ընկղմում են նրան մինչև ամենավերևը nVidia GPU-ների կազմակերպման գծապատկերներում, տանում են զուգահեռ ալգորիթմների ոլորուն ուղիներով և (ամենաուժեղ քայլը) ցույց են տալիս երկար կոդեր ցուցակներ C լեզվով: Արդյունքում պարզվում է, որ հոդվածի սկզբում մենք ունենք թարմ ընթերցող՝ CUDA-ն հասկանալու բուռն ցանկությամբ, իսկ ելքում՝ նույն ընթերցողին, բայց ուռած գլխով՝ լցված փաստերի, գծապատկերների խառնաշփոթով։ , ծածկագիր, ալգորիթմներ և տերմիններ:

Մինչդեռ ցանկացած տեխնոլոգիայի նպատակը մեր կյանքը հեշտացնելն է։ Եվ CUDA-ն հիանալի աշխատանք է կատարում այս հարցում: Նրա աշխատանքի արդյունքներն այն են, ինչը ցանկացած թերահավատի ավելի լավ կհամոզի, քան հարյուրավոր սխեմաներն ու ալգորիթմները:

Ոչ ամենուր

CUDA-ն ապահովված է բարձր արդյունավետությամբ գերհամակարգիչներով
nVidia Tesla.

Եվ այնուամենայնիվ, նախքան սովորական օգտագործողի կյանքը հեշտացնելու ոլորտում CUDA-ի աշխատանքի արդյունքները դիտելը, արժե հասկանալ դրա բոլոր սահմանափակումները: Ճիշտ այնպես, ինչպես ջինը՝ ցանկացած ցանկություն, բայց մեկ: CUDA-ն ունի նաև իր աքիլեսյան կրունկները: Դրանցից մեկն այն հարթակների սահմանափակումներն են, որոնց վրա այն կարող է աշխատել։

CUDA աջակցող nVidia վիդեո քարտերի ցանկը ներկայացված է հատուկ ցանկում, որը կոչվում է CUDA Enabled Products: Ցուցակը բավականին տպավորիչ է, բայց հեշտ է դասակարգել: CUDA-ի աջակցությունը չի մերժվում.

    nVidia GeForce 8-րդ, 9-րդ, 100-րդ, 200-րդ և 400-րդ սերիայի մոդելները՝ նվազագույնը 256 մեգաբայթ տեսահիշողությամբ: Աջակցությունը տարածվում է ինչպես աշխատասեղանի, այնպես էլ շարժական քարտերի վրա:

    Սեղանի և շարժական վիդեո քարտերի ճնշող մեծամասնությունը nVidia Quadro-ն է:

    Բոլոր լուծումները nvidia ION նեթբուքերի շարքից:

    Բարձր արդյունավետությամբ HPC (High Performance Computing) և nVidia Tesla գերհամակարգչային լուծումներ, որոնք օգտագործվում են ինչպես անհատական ​​հաշվարկների, այնպես էլ մասշտաբային կլաստերային համակարգերի կազմակերպման համար:

Հետևաբար, նախքան CUDA-ի վրա հիմնված ծրագրային արտադրանք օգտագործելը, արժե ստուգել ընտրյալների այս ցանկը:

Բացի բուն վիդեո քարտից, անհրաժեշտ է համապատասխան դրայվեր՝ CUDA-ին աջակցելու համար: Այն կենտրոնական և գրաֆիկական պրոցեսորների միջև կապն է, որը գործում է որպես մի տեսակ ծրագրային ինտերֆեյս՝ ծրագրային կոդ և տվյալներ GPU-ի բազմամիջուկ գանձարան մուտք գործելու համար: Որպեսզի չսխալվեք, nVidia-ն խորհուրդ է տալիս այցելել վարորդների էջ և ստանալ վերջին տարբերակը:

...բայց գործընթացն ինքնին

Ինչպե՞ս է աշխատում CUDA-ն: Ինչպե՞ս բացատրել հատուկ GPU-ի ապարատային ճարտարապետության վրա զուգահեռ հաշվարկների բարդ գործընթացը՝ առանց ընթերցողին կոնկրետ տերմինների անդունդ ընկնելու:

Դուք կարող եք փորձել դա անել՝ պատկերացնելով, թե ինչպես է կենտրոնական պրոցեսորը կատարում ծրագիրը գրաֆիկական պրոցեսորի հետ սիմբիոզով:

Ճարտարապետական ​​առումով, կենտրոնական պրոցեսորային միավորը (CPU) և նրա գրաֆիկական գործընկերը (GPU) նախագծված են տարբեր կերպ: Եթե ​​անալոգիա անենք ավտոմոբիլային արդյունաբերության աշխարհի հետ, ապա պրոցեսորը կայանային վագոն է, նրանցից մեկը, որը կոչվում է «գոմ»: Այն կարծես մարդատար մեքենա է, բայց միևնույն ժամանակ (մշակողների տեսանկյունից) «դա շվեյցարացի է, հնձվոր և խողովակի վրա խաղացող»: Միաժամանակ կատարում է փոքր բեռնատարի, ավտոբուսի և հիպերտրոֆացված հեչբեքի դերը։ Կարճ ասած, կայան. Այն ունի քիչ բալոնային միջուկներ, բայց դրանք կատարում են գրեթե ցանկացած առաջադրանք, և տպավորիչ քեշի հիշողությունն ի վիճակի է պահելու մի շարք տվյալներ:

Բայց GPU-ն սպորտային մեքենա է: Կա միայն մեկ գործառույթ՝ օդաչուին հնարավորինս արագ հասցնել ավարտի գիծ: Հետեւաբար, ոչ մեծ բեռնախցիկի հիշողություն, ոչ լրացուցիչ նստատեղեր: Բայց կան հարյուր անգամ ավելի շատ բալոնների միջուկներ, քան պրոցեսորը:

CUDA-ի շնորհիվ GPGPU ծրագրերի մշակողները կարիք չունեն խորանալու ծրագրավորման բարդությունների մեջ
մշակում գրաֆիկական շարժիչների համար, ինչպիսիք են DirectX-ը և OpenGL-ը

Ի տարբերություն կենտրոնական պրոցեսորի, որն ի վիճակի է լուծել ցանկացած խնդիր, ներառյալ գրաֆիկական, բայց միջին կատարողականությամբ, գրաֆիկական պրոցեսորը հարմարեցված է մեկ առաջադրանքի գերարագ լուծմանը. ելքը։ Ավելին, այս խնդիրը կարող է լուծվել զուգահեռաբար՝ օգտագործելով հարյուրավոր համեմատաբար պարզ հաշվողական միջուկներ GPU-ում:

Այսպիսով, ինչպիսի տանդեմ կարող է լինել կայանի և սպորտային մեքենայից: CUDA-ն աշխատում է մոտավորապես այսպես. ծրագիրն աշխատում է պրոցեսորի վրա այնքան ժամանակ, քանի դեռ կա կոդի մի հատված, որը կարող է կատարվել զուգահեռ: Այնուհետև, փոխանակ այն դանդաղորեն գործարկվի ամենաթեժ պրոցեսորի երկու (կամ նույնիսկ ութ) միջուկների վրա, այն փոխանցվում է հարյուրավոր GPU միջուկների: Միևնույն ժամանակ, այս բաժնի կատարման ժամանակը զգալիորեն կրճատվում է, ինչը նշանակում է, որ կրճատվում է նաև ամբողջ ծրագրի կատարման ժամանակը:

Տեխնոլոգիապես ոչինչ չի փոխվում ծրագրավորողի համար։ CUDA ծրագրերի կոդը գրված է C լեզվով։ Ավելի ստույգ՝ իր հատուկ բարբառով «Գ առուներով» (Գ՝ առուներով)։ Սթենֆորդում մշակված C լեզվի այս ընդլայնումը կոչվում է Brook: Միջերեսը, որը փոխանցում է Brook կոդը GPU-ին, CUDA-ին աջակցող վիդեո քարտի դրայվերն է: Այն կազմակերպում է ծրագրի այս հատվածի ողջ մշակման գործընթացը, որպեսզի ծրագրավորողի համար GPU-ն նմանվի պրոցեսորի կոպրոցեսորի: Շատ նման է մաթեմատիկական համապրոցեսորի օգտագործմանը անձնական հաշվարկի վաղ օրերին: Brook-ի, CUDA աջակցությամբ վիդեո քարտերի և դրանց համար դրայվերների հայտնվելով, ցանկացած ծրագրավորող կարողացավ մուտք գործել GPU իր ծրագրերում: Բայց մինչ այս շամանիզմը պատկանում էր ընտրյալ մարդկանց նեղ շրջանակին, ովքեր տարիներ շարունակ կատարել են DirectX կամ OpenGL գրաֆիկական շարժիչների ծրագրավորման տեխնիկան:

Այս հավակնոտ մեղրի տակառի մեջ՝ CUDA-ի գովասանքները, արժե ճանճ դնել, այսինքն՝ սահմանափակումներ։ Ոչ ամեն խնդիր, որը պետք է ծրագրավորվի, կարող է լուծվել CUDA-ի միջոցով: Հնարավոր չի լինի արագացնել սովորական գրասենյակային առաջադրանքների լուծումը, սակայն կարող եք վստահել CUDA-ին World of Warcraft-ում նույն տեսակի հազարավոր մարտիկների վարքագիծը հաշվարկելու համար: Բայց սա հորինված խնդիր է։ Եկեք նայենք օրինակներին, թե ինչ է CUDA-ն արդեն լուծում շատ արդյունավետ:

Արդար գործեր

CUDA-ն շատ պրագմատիկ տեխնոլոգիա է: Իր վիդեոքարտերում իր աջակցությունն ներդնելով՝ nVidia-ն միանգամայն իրավացիորեն ակնկալում էր, որ CUDA դրոշակը կվերցվի բազմաթիվ էնտուզիաստների կողմից թե՛ համալսարանական միջավայրում, թե՛ առևտրի ոլորտում: Եվ այդպես էլ եղավ։ CUDA-ի վրա հիմնված նախագծերն ապրում են և օգուտներ են բերում:

NVIDIA PhysX

Իրենց հաջորդ խաղային գլուխգործոցը գովազդելիս արտադրողները հաճախ շեշտում են դրա 3D ռեալիզմը: Բայց որքան էլ իրական լինի 3D խաղի աշխարհը, եթե ֆիզիկայի տարրական օրենքները, ինչպիսիք են գրավիտացիան, շփումը և հիդրոդինամիկան, սխալ իրականացվեն, կեղծիքը անմիջապես կզգացվի:

NVIDIA PhysX ֆիզիկայի շարժիչի հնարավորություններից մեկը հյուսվածքների հետ իրատեսական աշխատանքն է։

Հիմնական ֆիզիկական օրենքների համակարգչային մոդելավորման ալգորիթմների ներդրումը շատ աշխատատար խնդիր է: Այս ոլորտում ամենահայտնի ընկերություններն են իռլանդական Havok ընկերությունն իր միջպլատֆորմային ֆիզիկական Havok Physics-ով և Կալիֆորնիայի Ageia-ն՝ աշխարհի առաջին ֆիզիկական պրոցեսորի (PPU - Physics Processing Unit) և համապատասխան PhysX ֆիզիկայի շարժիչի նախահայրը: Դրանցից առաջինը, թեև ձեռք է բերել Intel-ը, այժմ ակտիվորեն աշխատում է ATI վիդեո քարտերի և AMD պրոցեսորների համար Havok շարժիչի օպտիմալացման ոլորտում։ Բայց Ageia-ն իր PhysX շարժիչով դարձավ nVidia-ի մի մասը: Միաժամանակ nVidia-ն լուծեց PhysX-ը CUDA տեխնոլոգիային հարմարեցնելու բավականին բարդ խնդիրը։

Սա հնարավոր դարձավ վիճակագրության շնորհիվ։ Վիճակագրորեն ապացուցված է, որ անկախ նրանից, թե որքան բարդ ռենդեր է կատարվում GPU-ն, նրա որոշ միջուկներ դեռ անգործուն են: Հենց այս միջուկների վրա է աշխատում PhysX շարժիչը:

CUDA-ի շնորհիվ խաղային աշխարհի ֆիզիկայի հետ կապված հաշվարկների առյուծի բաժինը սկսեցին կատարել տեսաքարտի վրա։ Կենտրոնական պրոցեսորի ազատված հզորությունը օգտագործվել է խաղի այլ խնդիրներ լուծելու համար։ Արդյունքը չուշացավ. Փորձագետների կարծիքով, CUDA-ով աշխատող PhysX-ի հետ խաղային խաղերում կատարողականի բարձրացումն աճել է առնվազն մեծության կարգով: Աճել է նաև ֆիզիկական օրենքների իրականացման հավանականությունը։ CUDA-ն հոգում է բազմաչափ օբյեկտների համար շփման, ձգողականության և մեզ ծանոթ այլ բաների սովորական հաշվարկը: Այժմ ոչ միայն հերոսներն ու նրանց սարքավորումները հիանալի տեղավորվում են մեզ ծանոթ ֆիզիկական աշխարհի օրենքների մեջ, այլև փոշին, մառախուղը, պայթյունի ալիքը, բոցը և ջուրը:

NVIDIA Texture Tools 2 հյուսվածքների սեղմման փաթեթի CUDA տարբերակը

Ձեզ դուր է գալիս իրատեսական իրեր ժամանակակից խաղերում: Արժե շնորհակալություն հայտնել հյուսվածք մշակողներին։ Բայց որքան շատ է իրականությունը հյուսվածքի մեջ, այնքան մեծ է դրա ծավալը։ Այն ավելի շատ է խլում թանկարժեք հիշողությունը: Սրանից խուսափելու համար հյուսվածքները նախապես սեղմվում են և դինամիկ կերպով ապասեղմվում են ըստ անհրաժեշտության: Իսկ սեղմումն ու դեկոպրեսիան զուտ հաշվարկներ են։ Հյուսվածքների հետ աշխատելու համար nVidia-ն թողարկել է NVIDIA Texture Tools փաթեթը: Այն աջակցում է DirectX հյուսվածքների արդյունավետ սեղմմանը և ապակոմպրեսիային (այսպես կոչված HF ձևաչափը): Այս փաթեթի երկրորդ տարբերակը պարծենում է DirectX 11 տեխնոլոգիայի մեջ ներդրված BC4 և BC5 սեղմման ալգորիթմների աջակցությամբ: Բայց գլխավորն այն է, որ NVIDIA Texture Tools 2-ը ներառում է CUDA աջակցություն: Ըստ nVidia-ի, սա 12 անգամ ավելացնում է կատարողականությունը հյուսվածքների սեղմման և ապակոմպրեսիայի առաջադրանքներում: Սա նշանակում է, որ խաղի շրջանակներն ավելի արագ կբեռնվեն և կուրախացնեն խաղացողին իրենց ռեալիզմով:

NVIDIA Texture Tools 2 փաթեթը նախատեսված է CUDA-ի հետ աշխատելու համար: Ակնհայտ է գործվածքների սեղմման և հեռացման ժամանակ կատարողականի առավելությունը:

CUDA-ի օգտագործումը կարող է զգալիորեն բարելավել տեսահսկման արդյունավետությունը:

Իրական ժամանակում վիդեո հոսքի մշակում

Ինչ էլ ասի, ներկայիս աշխարհը, լրտեսության տեսանկյունից, շատ ավելի մոտ է Օրուելի Մեծ Եղբոր աշխարհին, քան թվում է: Տեսախցիկների հայացքը զգում են ինչպես մեքենաների վարորդները, այնպես էլ հասարակական վայրեր այցելողները։

Տեսանյութի լիահոս գետերը հոսում են դրա մշակման կենտրոններ և... վազում դեպի նեղ օղակ՝ մարդ։ Շատ դեպքերում նա տեսաաշխարհը հսկող վերջին իշխանությունն է։ Ավելին, իշխանությունն ամենաարդյունավետը չէ։ Թարթում է, շեղվում և փորձում է քնել:

CUDA-ի շնորհիվ հնարավոր դարձավ վիդեո հոսքում մի քանի օբյեկտների միաժամանակյա հետևելու ալգորիթմներ կիրառել։ Այս դեպքում գործընթացը տեղի է ունենում իրական ժամանակում, և տեսանյութը լրիվ 30 կադր/վրկ է: Համեմատած ժամանակակից բազմամիջուկ պրոցեսորների վրա նման ալգորիթմի ներդրման հետ, CUDA-ն տալիս է կատարողականի երկու կամ երեք անգամ բարձրացում, և սա, տեսնում եք, բավականին շատ է:

Տեսանյութերի փոխակերպում, աուդիո զտում

Badaboom վիդեո փոխարկիչն առաջինն է, որն օգտագործում է CUDA-ն արագացնելու փոխակերպումը:

Հաճելի է դիտել նոր տեսանյութերի վարձույթ FullHD որակով և մեծ էկրանով: Բայց դուք չեք կարող ձեզ հետ մեծ էկրան վերցնել ճանապարհին, և FullHD վիդեո կոդեկը կխփի շարժական գաջեթի ցածր էներգիայի պրոցեսորը: Փոխակերպումը գալիս է օգնության: Բայց նրանցից շատերը, ովքեր գործնականում հանդիպել են դրան, դժգոհում են փոխարկման երկար ժամանակից: Սա հասկանալի է, գործընթացը սովորական է, հարմար է զուգահեռացման համար, և դրա կատարումը պրոցեսորի վրա այնքան էլ օպտիմալ չէ:

Բայց CUDA-ն հաղթահարում է դրան: Առաջին նշանը Badaboom փոխարկիչն է Elevental-ից: Badaboom-ի մշակողները ճիշտ որոշում են կայացրել CUDA-ն ընտրելիս: Փորձարկումները ցույց են տալիս, որ այն վերածում է ստանդարտ մեկուկես ժամ ֆիլմը iPhone/iPod Touch ձևաչափի քսան րոպեից պակաս ժամանակում: Եվ սա չնայած այն հանգամանքին, որ միայն պրոցեսորն օգտագործելիս այս գործընթացը տևում է ավելի քան մեկ ժամ:

Օգնում է CUDA-ին և պրոֆեսիոնալ երաժշտասերներին: Դրանցից ցանկացածը կես թագավորություն կտա արդյունավետ FIR քրոսովերի համար՝ մի շարք զտիչներ, որոնք ձայնային սպեկտրը բաժանում են մի քանի շերտերի: Այս գործընթացը շատ աշխատատար է և ձայնային նյութի մեծ ծավալով ստիպում է ձայնային ինժեներին մի քանի ժամ շարունակ «ծխել»: CUDA-ի վրա հիմնված FIR քրոսովերի ներդրումը հարյուրավոր անգամ արագացնում է դրա աշխատանքը:

CUDA ապագա

GPGPU տեխնոլոգիան իրականություն դարձնելով՝ CUDA-ն չի հանգստանում իր դափնիների վրա: Ինչպես ամենուր, CUDA-ում գործում է արտացոլման սկզբունքը. այժմ ոչ միայն nVidia վիդեո պրոցեսորների ճարտարապետությունն է ազդում CUDA SDK տարբերակների զարգացման վրա, այլ CUDA տեխնոլոգիան ինքնին ստիպում է nVidia-ին վերանայել իր չիպերի ճարտարապետությունը: Նման արտացոլման օրինակ է nVidia ION հարթակը: Դրա երկրորդ տարբերակը հատուկ օպտիմիզացված է CUDA խնդիրների լուծման համար: Սա նշանակում է, որ նույնիսկ համեմատաբար էժան ապարատային լուծումների դեպքում սպառողները կստանան CUDA-ի ողջ հզորությունն ու փայլուն հնարավորությունները:

Եվ այն նախատեսված է հոսթի կոդը (հիմնական, կառավարման կոդ) և սարքի կոդը (ապարատային կոդ) (ֆայլեր .cu ընդլայնմամբ) թարգմանելու համար ցանկացած ծրագրավորման միջավայրում վերջնական ծրագրի կամ գրադարանի հավաքման գործընթացի համար հարմար օբյեկտի ֆայլեր, օրինակ. NetBeans-ում:

CUDA ճարտարապետությունը օգտագործում է ցանցային հիշողության մոդել, կլաստերային թելերի մոդելավորում և SIMD հրահանգներ: Կիրառելի է ոչ միայն բարձր արդյունավետությամբ գրաֆիկական հաշվարկների համար, այլ նաև nVidia վիդեո քարտերի օգտագործմամբ տարբեր գիտական ​​հաշվարկների համար: Գիտնականները և հետազոտողները լայնորեն օգտագործում են CUDA-ն տարբեր ոլորտներում, ներառյալ աստղաֆիզիկա, հաշվողական կենսաբանություն և քիմիա, հեղուկ դինամիկայի մոդելավորում, էլեկտրամագնիսական փոխազդեցություններ, հաշվարկված տոմոգրաֆիա, սեյսմիկ վերլուծություն և այլն: CUDA-ն հնարավորություն ունի միանալու հավելվածներին՝ օգտագործելով OpenGL և Direct3D: CUDA-ն միջպլատֆորմային ծրագիր է օպերացիոն համակարգերի համար, ինչպիսիք են Linux, Mac OS X և Windows:

2010 թվականի մարտի 22-ին nVidia-ն թողարկեց CUDA Toolkit 3.0-ը, որը պարունակում էր աջակցություն OpenCL-ին։

Սարքավորումներ

CUDA պլատֆորմն առաջին անգամ հայտնվեց շուկայում ութերորդ սերնդի NVIDIA G80 չիպի թողարկմամբ և առկա էր գրաֆիկական չիպերի բոլոր հաջորդ շարքերում, որոնք օգտագործվում են GeForce, Quadro և NVidia Tesla արագացուցիչների ընտանիքներում:

CUDA SDK-ին աջակցող սարքավորումների առաջին շարքը՝ G8x-ը, ուներ 32-բիթանոց մեկ ճշգրիտ վեկտորային պրոցեսոր՝ օգտագործելով CUDA SDK-ն որպես API (CUDA-ն աջակցում է C կրկնակի տիպին, սակայն դրա ճշգրտությունն այժմ կրճատվել է մինչև 32-բիթ): լողացող կետ): Հետագայում GT200 պրոցեսորներն ունեն 64-բիթանոց ճշգրտության աջակցություն (միայն SFU), բայց կատարումը զգալիորեն ավելի վատ է, քան 32-բիթանոցը (պայմանավորված է նրանով, որ յուրաքանչյուր հոսքի բազմապրոցեսորում կա ընդամենը երկու SFU, մինչդեռ կան ութ սկալար պրոցեսորներ): GPU-ն կազմակերպում է ապարատային բազմաշերտություն, որը թույլ է տալիս օգտագործել GPU-ի բոլոր ռեսուրսները: Այսպիսով, հեռանկարը բացվում է ֆիզիկական արագացուցիչի գործառույթները գրաֆիկական արագացուցիչին փոխանցելու համար (իրականացման օրինակ է nVidia PhysX): Այն նաև լայն հնարավորություններ է բացում համակարգչային գրաֆիկայի սարքավորումների օգտագործման համար բարդ ոչ գրաֆիկական հաշվարկներ կատարելու համար, օրինակ՝ հաշվողական կենսաբանության և գիտության այլ ճյուղերում:

Առավելությունները

Համեմատած գրաֆիկական API-ների միջոցով ընդհանուր նշանակության հաշվարկներ կազմակերպելու ավանդական մոտեցման հետ՝ CUDA ճարտարապետությունն այս ոլորտում ունի հետևյալ առավելությունները.

Սահմանափակումներ

  • Սարքի վրա կատարվող բոլոր գործառույթները չեն աջակցում ռեկուրսիային (CUDA Toolkit 3.1-ն աջակցում է ցուցիչներին և ռեկուրսիային) և ունեն որոշ այլ սահմանափակումներ:

Աջակցված GPU-ներ և գրաֆիկական արագացուցիչներ

Սարքավորումներ արտադրող Nvidia-ի սարքերի ցանկը, որոնք հայտարարված են CUDA տեխնոլոգիայի ամբողջական աջակցությամբ, ներկայացված է Nvidia-ի պաշտոնական կայքում՝ CUDA-Enabled GPU Products (անգլերեն):

Փաստորեն, հետևյալ ծայրամասային սարքերը ներկայումս աջակցում են CUDA տեխնոլոգիան PC ապարատային շուկայում.

Տեխնիկական տարբերակ GPU Վիդեո քարտեր
1.0 G80, G92, G92b, G94, G94b GeForce 8800GTX/Ultra, 9400GT, 9600GT, 9800GT, Tesla C/D/S870, FX4/5600, 360M, GT 420
1.1 G86, G84, G98, G96, G96b, G94, G94b, G92, G92b GeForce 8400GS/GT, 8600GT/GTS, 8800GT/GTS, 9600 GSO, 9800GTX/GX2, GTS 250, GT 120/30/40, FX 4/570, 3/580, 370, 170, 3/580, 30x1 /370M, 3/5/770M, 16/17/27/28/36/37/3800M, NVS420/50
1.2 GT218, GT216, GT215 GeForce 210, GT 220/40, FX380 LP, 1800M, 370/380M, NVS 2/3100M
1.3 GT200, GT200b GeForce GTX 260, GTX 275, GTX 280, GTX 285, GTX 295, Tesla C/M1060, S1070, Quadro CX, FX 3/4/5800
2.0 GF100, GF110 GeForce (GF100) GTX 465, GTX 470, GTX 480, Tesla C2050, C2070, S/M2050/70, Quadro Plex 7000, Quadro 4000, 5000, 6000, GTX 1500, 6000, 1500, 6000, 1500, 6000, 1500, 6000, 1500, 6000, 1500, 6000, 1500, 6000, 1500, 6000, 1500, 6000, G1500 TX580, GTX590
2.1 GF104, GF114, GF116, GF108, GF106 GeForce 610M, GT 430, GT 440, GTS 450, GTX 460, GTX 550 Ti, GTX 560, GTX 560 Ti, 500M, Quadro 600, 2000 թ.
3.0 GK104, GK106, GK107 GeForce GTX 690, GTX 680, GTX 670, GTX 660 Ti, GTX 660, GTX 650 Ti, GTX 650, GT 640, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 680M, GeForce GTX 680M, GeForce GTX 660, GTX 650 Ti, GTX 650 60M, GeForce GT 650M, GeForce GT 645M, GeForce GT 640M
3.5 GK110
Nvidia GeForce սեղանադիր համակարգիչների համար
GeForce GTX 590
GeForce GTX 580
GeForce GTX 570
GeForce GTX 560 Ti
GeForce GTX 560
GeForce GTX 550 Ti
GeForce GTX 520
GeForce GTX 480
GeForce GTX 470
GeForce GTX 465
GeForce GTX 460
GeForce GTS 450
GeForce GTX 295
GeForce GTX 285
GeForce GTX 280
GeForce GTX 275
GeForce GTX 260
GeForce GTS 250
GeForce GT 240
GeForce GT 220
GeForce 210
GeForce GTS 150
GeForce GT 130
GeForce GT 120
GeForce G100
GeForce 9800 GX2
GeForce 9800 GTX+
GeForce 9800 GTX
GeForce 9800 GT
GeForce 9600 GSO
GeForce 9600 GT
GeForce 9500 GT
GeForce 9400 GT
GeForce 9400 mGPU
GeForce 9300 mGPU
GeForce 8800 GTS 512
GeForce 8800 GT
GeForce 8600 GTS
GeForce 8600 GT
GeForce 8500 GT
GeForce 8400GS
Nvidia GeForce բջջային համակարգիչների համար
GeForce GTX 580M
GeForce GTX 570M
GeForce GTX 560M
GeForce GT 555M
GeForce GT 540M
GeForce GT 525M
GeForce GT 520M
GeForce GTX 485M
GeForce GTX 480M
GeForce GTX 470M
GeForce GTX 460M
GeForce GT 445M
GeForce GT 435M
GeForce GT 425M
GeForce GT 420M
GeForce GT 415M
GeForce GTX 285M
GeForce GTX 280M
GeForce GTX 260M
GeForce GTS 360M
GeForce GTS 350M
GeForce GTS 160M
GeForce GTS 150M
GeForce GT 335M
GeForce GT 330M
GeForce GT 325M
GeForce GT 240M
GeForce GT 130M
GeForce G210M
GeForce G110M
GeForce G105M
GeForce 310M
GeForce 305M
GeForce 9800M GTX
GeForce 9800M GT
GeForce 9800M GTS
GeForce 9700M GTS
GeForce 9700M GT
GeForce 9650MGS
GeForce 9600M GT
GeForce 9600MGS
GeForce 9500MGS
GeForce 9500M G
GeForce 9300MGS
GeForce 9300M G
GeForce 9200MGS
GeForce 9100M Գ
GeForce 8800M GTS
GeForce 8700M GT
GeForce 8600M GT
GeForce 8600MGS
GeForce 8400M GT
GeForce 8400MGS
Nvidia Tesla *
Tesla C2050/C2070
Tesla M2050/M2070/M2090
Tesla S2050
Tesla S1070
Tesla M1060
Tesla C1060
Tesla C870
Tesla D870
Tesla S870
Nvidia Quadro սեղանադիր համակարգիչների համար
Quadro 6000
Quadro 5000
Quadro 4000
Quadro 2000 թ
Quadro 600
Quadro FX 5800
Quadro FX 5600
Quadro FX 4800
Quadro FX 4700 X2
Quadro FX 4600
Quadro FX 3700
Quadro FX 1700
Quadro FX 570
Quadro FX 470
Quadro FX 380 Ցածր Անձնագիր
Quadro FX 370
Quadro FX 370 Ցածր Անձնագիր
Quadro CX
Quadro NVS 450
Quadro NVS 420
Quadro NVS 290
Quadro Plex 2100 D4
Quadro Plex 2200 D2
Quadro Plex 2100 S4
Quadro Plex 1000 Model IV
Nvidia Quadro բջջային հաշվարկների համար
Quadro 5010M
Quadro 5000M
Quadro 4000M
Quadro 3000M
Quadro 2000M
Quadro 1000M
Quadro FX 3800M
Quadro FX 3700M
Quadro FX 3600M
Quadro FX 2800M
Quadro FX 2700M
Quadro FX 1800M
Quadro FX 1700M
Quadro FX 1600M
Quadro FX 880M
Quadro FX 770M
Quadro FX 570M
Quadro FX 380M
Quadro FX 370M
Quadro FX 360M
Quadro NVS 5100M
Quadro NVS 4200M
Quadro NVS 3100M
Quadro NVS 2100M
Quadro NVS 320M
Quadro NVS 160M
Quadro NVS 150M
Quadro NVS 140M
Quadro NVS 135M
Quadro NVS 130M
  • Tesla C1060, Tesla S1070, Tesla C2050/C2070, Tesla M2050/M2070, Tesla S2050 մոդելները թույլ են տալիս կրկնակի ճշգրտությամբ GPU-ի հաշվարկները:

Տարբեր տարբերակների առանձնահատկությունները և բնութագրերը

Առանձնահատկությունների աջակցություն (չցուցակված հատկանիշներն են
աջակցվում է բոլոր հաշվողական հնարավորությունների համար)
Հաշվարկային հնարավորություն (տարբերակ)
1.0 1.1 1.2 1.3 2.x

32-բիթանոց բառեր համաշխարհային հիշողության մեջ
Ոչ Այո՛

լողացող կետի արժեքները գլոբալ հիշողության մեջ
Գործող ամբողջ ատոմային ֆունկցիաները
32-բիթանոց բառեր ընդհանուր հիշողության մեջ
Ոչ Այո՛
atomicExch() աշխատում է 32 բիթով
լողացող կետի արժեքները ընդհանուր հիշողության մեջ
Գործող ամբողջ ատոմային ֆունկցիաները
64-բիթանոց բառեր համաշխարհային հիշողության մեջ
Warp քվեարկության գործառույթները
Կրկնակի ճշգրտությամբ լողացող կետով գործողություններ Ոչ Այո՛
Ատոմային գործառույթներ, որոնք գործում են 64 բիթով
ընդհանուր արժեքներ ընդհանուր հիշողության մեջ
Ոչ Այո՛
Լողացող կետով գործող ատոմային հավելում
32-բիթանոց բառեր գլոբալ և ընդհանուր հիշողության մեջ
_քվեարկություն ()
_threadfence_system()
_syncthreads_count(),
_syncthreads_and(),
_syncthreads_or()
Մակերեւութային գործառույթներ
Թելերի բլոկի 3D ցանց
Տեխնիկական բնութագրեր Հաշվարկային հնարավորություն (տարբերակ)
1.0 1.1 1.2 1.3 2.x
Թելային բլոկների ցանցի առավելագույն չափսերը 2 3
Թելային բլոկների ցանցի առավելագույն x-, y- կամ z-չափը 65535
Թելային բլոկի առավելագույն չափսերը 3
Բլոկի առավելագույն x- կամ y-չափը 512 1024
Բլոկի առավելագույն z-չափը 64
Մեկ բլոկի համար թելերի առավելագույն քանակը 512 1024
Ծալքի չափը 32
Բազմապրոցեսորի համար ռեզիդենտ բլոկների առավելագույն քանակը 8
Բազմապրոցեսորի համար ռեզիդենտ շեղումների առավելագույն քանակը 24 32 48
Բազմապրոցեսորի համար ռեզիդենտ թելերի առավելագույն քանակը 768 1024 1536
32-բիթանոց ռեգիստրների քանակը մեկ բազմապրոցեսորի համար 8K 16 Կ 32 Կ
Համօգտագործվող հիշողության առավելագույն քանակը մեկ բազմապրոցեսորի համար 16 ԿԲ 48 ԿԲ
Համօգտագործվող հիշողության բանկերի քանակը 16 32
Տեղական հիշողության քանակը մեկ շղթայի համար 16 ԿԲ 512 ԿԲ
Հիշողության մշտական ​​չափ 64 ԿԲ
Քեշի աշխատանքային հավաքածու մեկ բազմապրոցեսորի համար մշտական ​​հիշողության համար 8 ԿԲ
Քեշի աշխատանքային հավաքածու յուրաքանչյուր բազմապրոցեսորի համար հյուսվածքային հիշողության համար Կախված սարքից, 6 ԿԲ-ից մինչև 8 ԿԲ
Առավելագույն լայնությունը 1D հյուսվածքի համար
8192 32768
Առավելագույն լայնությունը 1D հյուսվածքի համար
հղումը կապված է գծային հիշողության հետ
2 27
Առավելագույն լայնությունը և շերտերի քանակը
1D շերտավորված հյուսվածքի հղումի համար
8192 x 512 16384 x 2048
Առավելագույն լայնությունը և բարձրությունը 2D-ի համար
հյուսվածքի հղումը կապված է
գծային հիշողություն կամ CUDA զանգված
65536 x 32768 65536 x 65535
Առավելագույն լայնությունը, բարձրությունը և թիվը
շերտերի 2D շերտավոր հյուսվածքի հղում
8192 x 8192 x 512 16384 x 16384 x 2048
Առավելագույն լայնությունը, բարձրությունը և խորությունը
3D հյուսվածքի հղումի համար, որը կապված է գծային
հիշողություն կամ CUDA զանգված
2048 x 2048 x 2048
Գործվածքների առավելագույն քանակը, որ
կարող է կապված լինել միջուկի հետ
128
Առավելագույն լայնությունը 1D մակերեսի համար
հղումը կապված է CUDA զանգվածին
Ոչ
աջակցել է
8192
Առավելագույն լայնությունը և բարձրությունը 2D-ի համար
մակերեսային հղում՝ կապված CUDA զանգվածի հետ
8192 x 8192
Մակերեւույթների առավելագույն քանակը, որոնք
կարող է կապված լինել միջուկի հետ
8
Մեկ հրահանգների առավելագույն քանակը
միջուկ
2 մլն

Օրինակ

CudaArray* cu_array; հյուսվածք< float , 2 >տեքս; // Հատկացնել զանգված cudaMalloc( & cu_array, cudaCreateChannelDesc< float>(), լայնությունը, բարձրությունը); // Պատճենել պատկերի տվյալները զանգվածին cudaMemcpy( cu_array, պատկեր, լայնություն* բարձրություն, cudaMemcpyHostToDevice) ; // Զանգվածը կապեք հյուսվածքին cudaBindTexture(tex, cu_array); // Գործարկել միջուկը dim3 blockDim(16, 16, 1); dim3 gridDim(լայնություն / blockDim.x, բարձրություն / blockDim.y, 1); միջուկ<<< gridDim, blockDim, 0 >>> (d_odata, լայնություն, բարձրություն) ; cudaUnbindTexture(tex) ; __global__ void kernel(float * odata, int բարձրություն, int լայնություն) ( անստորագիր int x = blockIdx.x * blockDim.x + threadIdx.x ; անստորագիր int y = blockIdx.y * blockDim.y + threadIdx.y ; float = texfetch(tex, x, y); odata[y* լայնություն+ x] = c;)

Ներմուծեք pycuda.driver որպես drv ներմուծում numpy drv.init() dev = drv.Device(0) ctx = dev.make_context() mod = drv.SourceModule( """ __global__ void multiply_them(float *dest, float *a, float *b) (const int i = threadIdx.x; dest[i] = a[i] * b[i]; ) """) multiply_them = mod.get_function ("multiply_them" ) a = numpy.random .randn (400 ) .atype (numpy.float32 ) b = numpy.random .randn (400 ) .astype (numpy.float32 .nompy)os (a) multiply_them( drv.Out (dest) , drv.In (a) , drv.In (b) , block= (400 , 1 , 1 ) ) print dest-a*b

CUDA-ն որպես առարկա համալսարաններում

2009 թվականի դեկտեմբերի դրությամբ CUDA ծրագրային մոդելը դասավանդվում է աշխարհի 269 համալսարաններում: Ռուսաստանում CUDA-ի վերաբերյալ վերապատրաստման դասընթացներ են անցկացվում Սանկտ Պետերբուրգի պոլիտեխնիկական համալսարանում, Յարոսլավլի պետական ​​համալսարանում: Պ. Գ. Դեմիդով, Մոսկվա, Նիժնի Նովգորոդ, Սանկտ Պետերբուրգ, Տվեր, Կազան, Նովոսիբիրսկ, Նովոսիբիրսկի պետական ​​տեխնիկական համալսարան, Օմսկի և Պերմի պետական ​​համալսարաններ, Հասարակության և մարդու բնության միջազգային համալսարան «Դուբնա», Իվանովոյի պետական ​​էներգետիկ համալսարան, Բելգորոդի պետական ​​համալսարան: , MSTU նրանց. Բաումանի անվան ռուսական քիմիական տեխնիկական համալսարան։ Մենդելեև, RAS միջտարածաշրջանային սուպերհամակարգչային կենտրոն, . Բացի այդ, 2009-ի դեկտեմբերին հայտարարվեց, որ սկսեց գործել Դուբնա քաղաքում տեղակայված առաջին ռուսական գիտական ​​և կրթական կենտրոնը, որը գտնվում է Դուբնա քաղաքում, որի խնդիրները ներառում են ուսուցում և խորհրդատվություն GPU-ների վրա հաշվողական բարդ խնդիրների լուծման վերաբերյալ:

Ուկրաինայում CUDA-ի վերաբերյալ դասընթացները դասավանդվում են Կիևի Համակարգային վերլուծության ինստիտուտում:

Հղումներ

Պաշտոնական ռեսուրսներ

  • CUDA Zone (ռուսերեն) - CUDA-ի պաշտոնական կայք
  • CUDA GPU Computing (անգլերեն) - պաշտոնական վեբ ֆորումներ՝ նվիրված CUDA computing-ին

Ոչ պաշտոնական ռեսուրսներ

Tom's Hardware
  • Դմիտրի Չեկանով. nVidia CUDA. հաշվարկել վիդեո քարտի վրա, թե՞ պրոցեսորի մահ: . Tom's Hardware (հունիսի 22, 2008) Արխիվացված
  • Դմիտրի Չեկանով. nVidia CUDA. GPU հավելվածների համեմատական ​​գնահատում զանգվածային շուկայի համար: Tom's Hardware (մայիսի 19, 2009) Արխիվացված օրիգինալից 2012 թվականի մարտի 4-ին Վերցված է 2009 թվականի մայիսի 19-ին։
iXBT.com
  • Ալեքսեյ Բերիլո. NVIDIA CUDA - ոչ գրաֆիկական հաշվարկներ GPU-ների վրա: Մաս 1 . iXBT.com (սեպտեմբերի 23, 2008): Արխիվացված օրիգինալից 2012 թվականի մարտի 4-ին Վերցված է 2009 թվականի հունվարի 20-ին։
  • Ալեքսեյ Բերիլո. NVIDIA CUDA - ոչ գրաֆիկական հաշվարկներ GPU-ների վրա: Մաս 2 . iXBT.com (22 հոկտեմբերի, 2008 թ.): - NVIDIA CUDA-ի իրականացման օրինակներ: Արխիվացված օրիգինալից 2012 թվականի մարտի 4-ին Վերցված է 2009 թվականի հունվարի 20-ին։
Այլ ռեսուրսներ
  • Բորեսկով Ալեքսեյ Վիկտորովիչ. CUDA Basics (հունվարի 20, 2009): Արխիվացված օրիգինալից 2012 թվականի մարտի 4-ին Վերցված է 2009 թվականի հունվարի 20-ին։
  • Վլադիմիր Ֆրոլով.Ներածություն CUDA տեխնոլոգիային: «Համակարգչային գրաֆիկա և մուլտիմեդիա» առցանց ամսագիր (19 դեկտեմբերի, 2008 թ.): Արխիվացված օրիգինալից 2012 թվականի մարտի 4-ին Վերցված է 2009 թվականի հոկտեմբերի 28-ին։
  • Իգոր Օսկոլկով. NVIDIA CUDA-ն մատչելի տոմս է դեպի մեծ հաշվարկների աշխարհ: Computerra (ապրիլի 30, 2009): Վերցված է 2009 թվականի մայիսի 3-ին։
  • Վլադիմիր Ֆրոլով.Ներածություն CUDA տեխնոլոգիային (օգոստոսի 1, 2009 թ.): Արխիվացված օրիգինալից 2012 թվականի մարտի 4-ին Վերցված է 2010 թվականի ապրիլի 3-ին։
  • GPGPU.ru. Հաշվարկների համար վիդեո քարտերի օգտագործումը
  • . Զուգահեռ հաշվողական կենտրոն

Նշումներ

տես նաեւ

Ժամանակակից պրոցեսորների մշակման մեջ նկատվում է միջուկների քանակի աստիճանական աճի միտում, ինչը մեծացնում է դրանց հնարավորությունները զուգահեռ հաշվարկում։ Այնուամենայնիվ, վաղուց արդեն հասանելի են GPU-ները, որոնք այս առումով զգալիորեն գերազանցում են պրոցեսորներին: Իսկ GPU-ների այս հնարավորություններն արդեն հաշվի են առնվել որոշ ընկերությունների կողմից։ Ոչ նպատակային հաշվարկների համար գրաֆիկական արագացուցիչներ օգտագործելու առաջին փորձերը կատարվել են 90-ականների վերջից: Բայց միայն ստվերների առաջացումը խթան դարձավ բոլորովին նոր տեխնոլոգիայի զարգացման համար, և 2003-ին հայտնվեց GPGPU-ի (ընդհանուր նշանակության գրաֆիկայի մշակման միավորներ) հայեցակարգը: Այս նախաձեռնության զարգացման մեջ կարևոր դեր է խաղացել BrookGPU-ն, որը C լեզվի հատուկ ընդլայնում է: Մինչ BrookGPU-ի գալուստը ծրագրավորողները կարող էին աշխատել GPU-ների հետ միայն Direct3D կամ OpenGL API-ի միջոցով: Brook-ը ծրագրավորողներին թույլ տվեց աշխատել ծանոթ միջավայրի հետ, իսկ ինքը՝ կոմպիլյատորը, օգտագործելով հատուկ գրադարաններ, ցածր մակարդակով իրականացրեց փոխգործակցությունը GPU-ի հետ:

Նման առաջընթացը չէր կարող չգրավել այս ոլորտի առաջատարների՝ AMD-ի և NVIDIA-ի ուշադրությունը, որոնք սկսեցին իրենց վիդեո քարտերի վրա ոչ գրաֆիկական հաշվարկների համար սեփական ծրագրային հարթակներ մշակել: Ոչ ոք ավելի լավ, քան GPU մշակողները չգիտի իրենց արտադրանքի բոլոր նրբությունները և առանձնահատկությունները, ինչը թույլ է տալիս այս նույն ընկերություններին հնարավորինս արդյունավետ կերպով օպտիմալացնել ծրագրային փաթեթը կոնկրետ ապարատային լուծումների համար: Ներկայումս NVIDIA-ն մշակում է CUDA (Compute Unified Device Architecture) հարթակը, AMD-ն անվանում է նմանատիպ տեխնոլոգիա CTM (Close To Metal) կամ AMD Stream Computing: Մենք կդիտարկենք CUDA-ի որոշ հնարավորություններ և գործնականում կգնահատենք GeForce 8800 GT վիդեո քարտի G92 գրաֆիկական չիպի հաշվողական հնարավորությունները։

Բայց նախ, եկեք տեսնենք GPU-ների միջոցով հաշվարկներ կատարելու որոշ նրբերանգներ: Նրանց հիմնական առավելությունն այն է, որ գրաֆիկական չիպը ի սկզբանե նախատեսված է մի քանի թելեր գործարկելու համար, մինչդեռ սովորական պրոցեսորի յուրաքանչյուր միջուկ կատարում է հաջորդական հրահանգների հոսք: Ցանկացած ժամանակակից GPU բազմապրոցեսոր է, որը բաղկացած է մի քանի հաշվողական կլաստերներից՝ յուրաքանչյուրում բազմաթիվ ALU-ներով: Ամենահզոր ժամանակակից GT200 չիպը բաղկացած է 10 նման կլաստերներից, որոնցից յուրաքանչյուրն ունի 24 հոսքային պրոցեսոր։ Փորձարկված GeForce 8800 GT վիդեո քարտը, որը հիմնված է G92 չիպի վրա, ունի յոթ խոշոր հաշվողական միավորներ՝ յուրաքանչյուրը 16 հոսքային պրոցեսորով: Պրոցեսորներն օգտագործում են SIMD SSE բլոկներ վեկտորային հաշվարկների համար (մեկ հրահանգի մի քանի տվյալներ. մեկ հրահանգը կատարվում է մի քանի տվյալների վրա), որը պահանջում է տվյալները վերափոխել 4 վեկտորի: GPU-ն մշակում է թելերը սկալյար, այսինքն. Մեկ հրահանգը կիրառվում է մի քանի թելերի վրա (SIMT - մեկ հրահանգի մի քանի թելեր): Սա խնայում է ծրագրավորողներին տվյալները վեկտորների վերածելուց և թույլ է տալիս կամայական ճյուղավորումներ հոսքերում: Յուրաքանչյուր GPU հաշվողական միավոր ունի անմիջական մուտք դեպի հիշողություն: Իսկ վիդեո հիշողության թողունակությունն ավելի մեծ է՝ շնորհիվ մի քանի առանձին հիշողության կարգավորիչների օգտագործման (վերին վերջում G200-ում կան 8 64-բիթանոց ալիքներ) և գործառնական բարձր հաճախականությունների շնորհիվ։

Ընդհանուր առմամբ, որոշակի առաջադրանքներում մեծ քանակությամբ տվյալների հետ աշխատելիս GPU-ները շատ ավելի արագ են, քան պրոցեսորները: Ստորև դուք տեսնում եք այս հայտարարության օրինակը.


Գծապատկերը ցույց է տալիս CPU-ի և GPU-ի կատարողականի աճի դինամիկան 2003 թվականից ի վեր: NVIDIA-ն սիրում է այս տվյալները որպես գովազդ նշել իր փաստաթղթերում, բայց դրանք միայն տեսական հաշվարկներ են, և իրականում այդ բացը, իհարկե, կարող է շատ ավելի փոքր լինել։

Այնուամենայնիվ, ինչպես դա կարող է լինել, կա GPU-ների հսկայական ներուժ, որը կարող է օգտագործվել, և որը պահանջում է ծրագրային ապահովման մշակման հատուկ մոտեցում: Այս ամենն իրականացվում է CUDA ապարատային և ծրագրային միջավայրում, որը բաղկացած է մի քանի ծրագրային մակարդակներից՝ բարձր մակարդակի CUDA Runtime API-ից և ցածր մակարդակի CUDA Driver API-ից:


CUDA-ն ծրագրավորման համար օգտագործում է ստանդարտ C լեզուն, որը նրա հիմնական առավելություններից մեկն է ծրագրավորողների համար։ Սկզբում CUDA-ն ներառում է BLAS (հիմնական գծային հանրահաշվի փաթեթ) և FFT (Ֆուրիեի փոխակերպում) գրադարանները։ CUDA-ն ունի նաև OpenGL կամ DirectX գրաֆիկական API-ների հետ փոխազդելու հնարավորություն, ցածր մակարդակով զարգանալու հնարավորություն և բնութագրվում է պրոցեսորի և GPU-ի միջև տվյալների հոսքերի օպտիմիզացված բաշխմամբ: CUDA-ի հաշվարկները կատարվում են գրաֆիկականի հետ միաժամանակ՝ ի տարբերություն նմանատիպ AMD պլատֆորմի, որտեղ գործարկվում է հատուկ վիրտուալ մեքենա՝ GPU-ի վրա հաշվարկների համար: Բայց նման «համակեցությունը» նույնպես հղի է սխալներով, եթե գրաֆիկական API-ի կողմից մեծ բեռ է ստեղծվում, մինչդեռ CUDA-ն միաժամանակ աշխատում է. ի վերջո, գրաֆիկական գործողությունները դեռևս ավելի բարձր առաջնահերթություն ունեն: Պլատֆորմը համատեղելի է 32 և 64 բիթանոց օպերացիոն համակարգերի հետ՝ Windows XP, Windows Vista, MacOS X և Linux-ի տարբեր տարբերակների հետ։ Պլատֆորմը բաց է և կայքում, բացի վիդեո քարտի հատուկ դրայվերներից, կարող եք ներբեռնել CUDA Toolkit, CUDA Developer SDK ծրագրային փաթեթներ, ներառյալ կոմպիլյատոր, կարգաբերիչ, ստանդարտ գրադարաններ և փաստաթղթեր:

Ինչ վերաբերում է CUDA-ի գործնական իրականացմանը, ապա երկար ժամանակ այս տեխնոլոգիան օգտագործվում էր միայն մասնիկների ֆիզիկայի, աստղաֆիզիկայի, բժշկության, ֆինանսական շուկայում փոփոխությունների կանխատեսման և այլնի ոլորտում բարձր մասնագիտացված մաթեմատիկական հաշվարկների համար: Բայց այս տեխնոլոգիան աստիճանաբար մոտենում է սովորական օգտատերերին, մասնավորապես, հայտնվում են Photoshop-ի հատուկ պլագիններ, որոնք կարող են օգտագործել GPU-ի հաշվողական հզորությունը։ Հատուկ էջում կարող եք ուսումնասիրել NVIDIA CUDA-ի հնարավորություններն օգտագործող ծրագրերի ամբողջ ցանկը։

Որպես նոր տեխնոլոգիայի գործնական փորձարկում MSI NX8800GT-T2D256E-OC վիդեո քարտի վրա՝ մենք կօգտագործենք TMPGEnc ծրագիրը։ Այս ապրանքը կոմերցիոն է (ամբողջական տարբերակն արժե $100), սակայն MSI վիդեո քարտերի համար այն տրվում է որպես բոնուս փորձնական տարբերակում 30 օր ժամկետով: Դուք կարող եք ներբեռնել այս տարբերակը մշակողի կայքից, բայց TMPGEnc 4.0 XPress MSI Special Edition-ը տեղադրելու համար ձեզ անհրաժեշտ է բնօրինակ սկավառակ MSI քարտից դրայվերներով, առանց դրա ծրագիրը չի տեղադրվի:

CUDA-ում հաշվողական հնարավորությունների մասին առավել ամբողջական տեղեկատվությունը ցուցադրելու և դրանք այլ վիդեո ադապտերների հետ համեմատելու համար կարող եք օգտագործել հատուկ CUDA-Z կոմունալ ծրագիրը: Սա այն տեղեկությունն է, որը տալիս է մեր GeForce 8800GT վիդեո քարտի մասին.




Համեմատած տեղեկատու մոդելների հետ՝ մեր պատճենն աշխատում է ավելի բարձր հաճախականություններով. ռաստերային տիրույթը 63 ՄՀց բարձր է անվանականից, իսկ ստվերային միավորներն ավելի արագ են 174 ՄՀց-ով, իսկ հիշողությունը 100 ՄՀց ավելի արագ է:

Մենք կհամեմատենք նույն HD տեսանյութի փոխակերպման արագությունը միայն CPU-ի միջոցով հաշվարկելիս և TMPGEnc ծրագրում CUDA-ի լրացուցիչ ակտիվացման հետ հետևյալ կազմաձևով.

  • Պրոցեսոր՝ Pentium Dual-Core E5200 2,5 ԳՀց;
  • Մայր տախտակ՝ Gigabyte P35-S3;
  • Հիշողություն՝ 2x1 ԳԲ GoodRam PC6400 (5-5-5-18-2T)
  • Վիդեո քարտ՝ MSI NX8800GT-T2D256E-OC;
  • Կոշտ սկավառակ՝ 320 ԳԲ WD3200AAKS;
  • Սնուցման աղբյուր՝ CoolerMaster eXtreme Power 500-PCAP;
  • Օպերացիոն համակարգ՝ Windows XP SP2;
  • TMPGEnc 4.0 XPress 4.6.3.268;
  • Վիդեո քարտի վարորդներ՝ ForceWare 180.60:
Փորձարկումների համար պրոցեսորը գերկլոկացվել է մինչև 3 ԳՀց (11,5x261 ՄՀց կոնֆիգուրացիայով) և մինչև 4 ԳՀց (11,5x348 ՄՀց)՝ առաջին և երկրորդ դեպքերում 835 ՄՀց հաճախականությամբ: Տեսանյութ Full HD 1920x1080 լուծաչափով, մեկ րոպե քսան վայրկյան տևողությամբ: Լրացուցիչ բեռ ստեղծելու համար միացվել է աղմուկի նվազեցման զտիչ, որի կարգավորումները մնացել են լռելյայն:


Կոդավորումն իրականացվել է DivX 6.8.4 կոդեկի միջոցով: Այս կոդեկի որակի կարգավորումներում բոլոր արժեքները թողնված են լռելյայն, միացված է բազմաշերտությունը:


Multithreading աջակցությունը TMPGEnc-ում սկզբնապես միացված է CPU/GPU-ի կարգավորումների ներդիրում: Նույն բաժնում ակտիվացված է նաև CUDA-ն։


Ինչպես երևում է վերը նշված սքրինշոթից, CUDA-ի միջոցով ֆիլտրի մշակումը միացված է, բայց ապարատային վիդեո ապակոդավորիչը միացված չէ: Ծրագրի փաստաթղթերը զգուշացնում են, որ վերջին պարամետրի ակտիվացումը մեծացնում է ֆայլի մշակման ժամանակը:

Թեստերի արդյունքների հիման վրա ստացվել են հետևյալ տվյալները.


4 ԳՀց հաճախականությամբ՝ միացված CUDA-ով, մենք հավաքեցինք ընդամենը մի քանի վայրկյան (կամ 2%), ինչը առանձնապես տպավորիչ չէ: Բայց ավելի ցածր հաճախականության դեպքում այս տեխնոլոգիայի ակտիվացումից ավելացումը թույլ է տալիս խնայել ժամանակի մոտ 13%-ը, ինչը բավականին նկատելի կլինի մեծ ֆայլեր մշակելիս։ Բայց, այնուամենայնիվ, արդյունքներն այնքան տպավորիչ չեն, որքան սպասվում էր։

TMPGEnc ծրագիրն ունի պրոցեսորի և CUDA-ի բեռնվածության ցուցիչ; այս թեստային կազմաձևում այն ​​ցույց է տվել պրոցեսորի բեռնվածությունը մոտ 20%, իսկ գրաֆիկական միջուկը՝ մնացած 80%-ում: Արդյունքում, մենք ունենք նույն 100%-ը, ինչ առանց CUDA-ի փոխակերպման ժամանակ, և կարող է ընդհանրապես ժամանակային տարբերություն չլինել (բայց այն դեռ կա): Հիշողության փոքր ծավալը՝ 256 ՄԲ, նույնպես սահմանափակող գործոն չէ: Դատելով RivaTuner-ի ընթերցումներից՝ շահագործման ընթացքում օգտագործվել է ոչ ավելի, քան 154 ՄԲ վիդեո հիշողություն:



եզրակացություններ

TMPGEnc ծրագիրը նրանցից մեկն է, որը ներկայացնում է CUDA տեխնոլոգիան լայն զանգվածներին: Այս ծրագրում GPU-ի օգտագործումը թույլ է տալիս արագացնել վիդեո մշակման գործընթացը և զգալիորեն թեթեւացնել կենտրոնական պրոցեսորը, ինչը թույլ կտա օգտատիրոջը միաժամանակ հարմարավետ կատարել այլ առաջադրանքներ: Մեր կոնկրետ օրինակում, GeForce 8800GT 256 ՄԲ վիդեո քարտը մի փոքր բարելավեց ժամանակի կատարումը, երբ վիդեո փոխարկվում է գերկլոկավորված Pentium Dual-Core E5200 պրոցեսորի հիման վրա: Բայց հստակ տեսանելի է, որ հաճախականության նվազումով, CUDA-ի ակտիվացումից ստացված շահույթը մեծանում է, թույլ պրոցեսորների դեպքում դրա օգտագործումից շահույթը շատ ավելի մեծ կլինի: Այս կախվածության ֆոնին միանգամայն տրամաբանական է ենթադրել, որ նույնիսկ բեռի ավելացման դեպքում (օրինակ՝ շատ մեծ թվով լրացուցիչ վիդեո ֆիլտրերի օգտագործում), CUDA-ով համակարգի արդյունքները կառանձնանան ավելին. կոդավորման գործընթացի վրա ծախսված ժամանակի տարբերության զգալի դելտա: Նաև մի մոռացեք, որ G92-ն այս պահին ամենահզոր չիպը չէ, և ավելի ժամանակակից վիդեո քարտերը զգալիորեն ավելի բարձր կատարողականություն կապահովեն նման հավելվածներում: Այնուամենայնիվ, մինչ հավելվածն աշխատում է, GPU-ն ամբողջությամբ բեռնված չէ, և, հավանաբար, բեռի բաշխումը կախված է յուրաքանչյուր կոնֆիգուրացիայից առանձին, մասնավորապես պրոցեսոր/վիդեո քարտի համակցությունից, որը, ի վերջո, կարող է ավելի մեծ (կամ ավելի փոքր) աճ տալ որպես տոկոս: CUDA-ի ակտիվացում: Ամեն դեպքում, նրանց համար, ովքեր աշխատում են մեծ ծավալի վիդեո տվյալների հետ, այս տեխնոլոգիան դեռ թույլ կտա զգալիորեն խնայել իրենց ժամանակը։

Ճիշտ է, CUDA-ն դեռ լայն տարածում չի գտել, այս տեխնոլոգիայով աշխատող ծրագրային ապահովման որակը բարելավում է պահանջում: Մեր վերանայված TMPGEnc 4.0 XPress ծրագրում այս տեխնոլոգիան միշտ չէ, որ աշխատում էր: Նույն տեսանյութը կարող էր մի քանի անգամ վերակոդավորվել, և հետո հանկարծ, հաջորդ անգամ գործարկվելիս, CUDA-ի բեռնվածությունն արդեն 0% էր: Եվ այս երեւույթը բոլորովին պատահական էր բոլորովին այլ օպերացիոն համակարգերում։ Բացի այդ, խնդրո առարկա ծրագիրը հրաժարվեց օգտագործել CUDA-ն XviD ձևաչափով կոդավորելիս, սակայն հանրաճանաչ DivX կոդեկի հետ խնդիրներ չկային:

Արդյունքում, մինչ այժմ CUDA տեխնոլոգիան կարող է զգալիորեն մեծացնել անհատական ​​համակարգիչների աշխատանքը միայն որոշակի առաջադրանքներում: Բայց նման տեխնոլոգիայի կիրառման շրջանակը կընդլայնվի, և սովորական պրոցեսորներում միջուկների քանակի ավելացման գործընթացը ցույց է տալիս ժամանակակից ծրագրային ապահովման ծրագրերում զուգահեռ բազմաթելային հաշվարկների պահանջարկի աճ: Իզուր չէ, որ վերջերս ոլորտի բոլոր առաջատարները տարվել են պրոցեսորն ու պրոցեսորը մեկ միասնական ճարտարապետության մեջ համատեղելու գաղափարով (պարզապես հիշեք շատ գովազդվող AMD Fusion-ը): Թերևս CUDA-ն այս միավորման գործընթացի փուլերից մեկն է։


Շնորհակալություն ենք հայտնում հետևյալ ընկերություններին թեստային սարքավորումներ տրամադրելու համար.

– ցածր մակարդակի ծրագրային ինտերֆեյսների մի շարք ( API) խաղեր և այլ բարձր արդյունավետությամբ մուլտիմեդիա հավելվածներ ստեղծելու համար։ Ներառում է բարձր կատարողական աջակցություն 2D- Եվ 3D- գրաֆիկա, ձայնային և մուտքային սարքեր:

Direct3D (D3D) – ինտերֆեյս եռաչափ ցուցադրման համար պրիմիտիվներ(երկրաչափական մարմիններ): Ներառված է .

OpenGL(անգլերենից Բացեք գրաֆիկական գրադարանը, բառացիորեն՝ բաց գրաֆիկական գրադարան) հստակեցում է, որը սահմանում է ծրագրավորման լեզվից անկախ միջպլատֆորմային ծրագրավորման ինտերֆեյս՝ երկչափ և եռաչափ համակարգչային գրաֆիկայի օգտագործմամբ հավելվածներ գրելու համար: Ներառում է ավելի քան 250 գործառույթ՝ պարզ պարզունակներից բարդ 3D տեսարաններ նկարելու համար: Օգտագործվում է տեսախաղերի, վիրտուալ իրականության և գիտական ​​հետազոտություններում վիզուալիզացիայի ստեղծման համար: Հարթակի վրա Windowsհետ մրցում է .

OpenCL(անգլերենից Բացեք հաշվողական լեզու, բառացիորեն – հաշվարկների բաց լեզու) – շրջանակը(ծրագրային համակարգի շրջանակ) տարբեր գրաֆիկայի վրա զուգահեռ հաշվարկների հետ կապված համակարգչային ծրագրեր գրելու համար ( GPU) Եվ ( ) Շրջանակին OpenCLներառում է ծրագրավորման լեզու և ծրագրավորման ինտերֆեյս ( API). OpenCLապահովում է զուգահեռություն հրահանգների և տվյալների մակարդակում և հանդիսանում է տեխնիկայի իրականացում GPGPU.

GPGPU(կարճ անգլերենից) Ընդհանուր-Պ նպատակ Գ ռաֆիկա Պ պրոցեսինգ Ու նիտ, բառացիորեն - GPUընդհանուր նպատակ) ընդհանուր հաշվարկների համար գրաֆիկական մշակման միավորի (GPU) կամ վիդեո քարտի օգտագործման տեխնիկա է, որը սովորաբար իրականացվում է համակարգչի կողմից:

Shader(անգլերեն) ստվերային) – սինթեզված պատկերների վրա ստվերներ ստեղծելու ծրագիր, որն օգտագործվում է եռաչափ գրաֆիկայում՝ օբյեկտի կամ պատկերի վերջնական պարամետրերը որոշելու համար։ Սովորաբար ներառում է լույսի կլանման և ցրման կամայական բարդ նկարագրություններ, հյուսվածքների քարտեզագրում, արտացոլում և բեկում, ստվերում, մակերեսի տեղաշարժ և հետմշակման էֆեկտներ: Բարդ մակերեսները կարելի է պատկերացնել՝ օգտագործելով պարզ երկրաչափական ձևեր:

Ներկայացում(անգլերեն) մատուցում) – վիզուալիզացիա, համակարգչային գրաֆիկայում՝ ծրագրային ապահովման միջոցով մոդելից պատկեր ստանալու գործընթացը։

SDK(կարճ անգլերենից) Ծրագրային ապահովման մշակման հավաքածու) – ծրագրային ապահովման մշակման գործիքների մի շարք:

CPU(կարճ անգլերենից) Կենտրոնական վերամշակման բաժին, բառացիորեն – կենտրոնական/հիմնական/հիմնական հաշվողական սարք) – կենտրոնական (միկրո), սարք, որը կատարում է մեքենայի հրահանգները. ապարատային մի կտոր, որը պատասխանատու է հաշվողական գործողություններ կատարելու համար (նշված է օպերացիոն համակարգի և կիրառական ծրագրաշարի կողմից) և համակարգում է բոլոր սարքերի աշխատանքը:

GPU(կարճ անգլերենից) Գրաֆիկական մշակման միավոր, բառացիորեն – գրաֆիկական հաշվողական սարք) – գրաֆիկական պրոցեսոր; առանձին սարք կամ խաղային վահանակ, որն իրականացնում է գրաֆիկական արտապատկերում (տեսողականացում): Ժամանակակից GPU-ները շատ արդյունավետ են համակարգչային գրաֆիկան իրատեսական ձևով մշակելու և ցուցադրելու հարցում: Ժամանակակից վիդեո ադապտերներում գրաֆիկական պրոցեսորն օգտագործվում է որպես 3D գրաֆիկայի արագացուցիչ, բայց որոշ դեպքերում այն ​​կարող է օգտագործվել նաև հաշվարկների համար ( GPGPU).

Խնդիրներ CPU

Երկար ժամանակ ավանդականների կատարողականի աճը հիմնականում տեղի էր ունենում ժամացույցի հաճախականության հետևողական աճի պատճառով (կատարման մոտ 80% -ը որոշվում էր ժամացույցի հաճախականությամբ) մեկ չիպի վրա տրանզիստորների քանակի միաժամանակյա աճով: . Այնուամենայնիվ, ժամացույցի հաճախականության հետագա աճը (ավելի քան 3,8 ԳՀց հաճախականությամբ, չիպսերը պարզապես գերտաքանում են) բախվում է մի շարք հիմնարար ֆիզիկական խոչընդոտների (քանի որ տեխնոլոգիական գործընթացը գրեթե մոտեցել է ատոմի չափին. իսկ սիլիցիումի ատոմի չափը մոտավորապես 0,543 նմ է):

Նախ, երբ բյուրեղների չափը նվազում է, և ժամացույցի հաճախականությունը մեծանում է, տրանզիստորների արտահոսքի հոսանքը մեծանում է: Սա հանգեցնում է էլեկտրաէներգիայի սպառման և ջերմային արտանետումների ավելացմանը.

Երկրորդ, ժամացույցի ավելի բարձր արագության առավելությունները մասամբ ժխտվում են հիշողության հասանելիության հետաձգման պատճառով, քանի որ հիշողության հասանելիության ժամանակները չեն համապատասխանում ժամացույցի արագությունների աճին.

Երրորդ, որոշ ծրագրերի համար ավանդական սերիական ճարտարապետությունները դառնում են անարդյունավետ, քանի որ ժամացույցի արագությունը մեծանում է այսպես կոչված «ֆոն Նեյմանի խցանման» պատճառով, որը հաջորդական հաշվարկային հոսքից բխող կատարողականի սահմանափակում է: Միևնույն ժամանակ, դիմադրողական-կոնդենսիվ ազդանշանի փոխանցման ուշացումները մեծանում են, ինչը լրացուցիչ խոչընդոտ է` կապված ժամացույցի հաճախականության բարձրացման հետ:

Զարգացում GPU

Սրան զուգահեռ եղավ (և կա) զարգացում GPU:

նոյեմբեր 2008 – Intelներկայացրել է 4 միջուկի գիծ Intel Core i7, որոնք հիմնված են նոր սերնդի միկրոճարտարապետության վրա Նեհալեմ. Պրոցեսորներն աշխատում են 2,6-3,2 ԳՀց ժամային հաճախականությամբ։ Պատրաստված է 45 նմ պրոցեսի տեխնոլոգիայով:

2008 թվականի դեկտեմբեր – սկսվել են 4 միջուկի մատակարարումները Phenom II 940 դր(կոդ անուն - Դենեբ) Աշխատում է 3 ԳՀց հաճախականությամբ, որն արտադրվում է 45 նմ պրոցեսի տեխնոլոգիայի միջոցով:

մայիս 2009 – ընկերություն դրամներկայացրել է GPU տարբերակը ATI Radeon HD 4890հիմնական ժամացույցի արագությամբ 850 ՄՀց-ից մինչև 1 ԳՀց: Սա առաջինն է գրաֆիկականպրոցեսոր, որն աշխատում է 1 ԳՀց հաճախականությամբ: Չիպի հաշվողական հզորությունը հաճախականության բարձրացման շնորհիվ 1,36-ից հասել է 1,6 տերաֆլոպսի։ Պրոցեսորը պարունակում է 800 (!) հաշվողական միջուկներ և աջակցում է վիդեո հիշողությանը GDDR5, DirectX 10.1, ATI CrossFireXև բոլոր այլ տեխնոլոգիաները, որոնք բնորոշ են ժամանակակից վիդեո քարտերի մոդելներին: Չիպը արտադրվել է 55 նմ տեխնոլոգիայի հիման վրա։

Հիմնական տարբերությունները GPU

Տարբերակիչ հատկանիշներ GPU(համեմատ ) են.

– ճարտարապետություն, որը առավելագույնս ուղղված է հյուսվածքների և բարդ գրաֆիկական օբյեկտների հաշվարկման արագությանը.

- բնորոշ գագաթնակետային հզորություն GPUդրանից շատ ավելի բարձր ;

- շնորհիվ մասնագիտացված կոնվեյերների ճարտարապետության, GPUգրաֆիկական տեղեկատվության մշակման հարցում շատ ավելի արդյունավետ է, քան .

«Ժանրի ճգնաժամ»

«Ժանրային ճգնաժամ» համար հասունացել է մինչև 2005 թվականը, հենց այդ ժամանակ նրանք հայտնվեցին: Բայց, չնայած տեխնոլոգիայի զարգացմանը, պայմանական արտադրողականության բարձրացումը նկատելիորեն նվազել է. Միևնույն ժամանակ կատարում GPUշարունակում է աճել։ Այսպիսով, մինչև 2003 թվականը, այս հեղափոխական գաղափարը բյուրեղացավ. օգտագործեք գրաֆիկայի հաշվողական հզորությունը ձեր կարիքների համար. GPU-ներն ավելի ու ավելի են օգտագործվում «ոչ գրաֆիկական» հաշվարկների համար (ֆիզիկայի մոդելավորում, ազդանշանի մշակում, հաշվողական մաթեմատիկա/երկրաչափություն, տվյալների բազայի գործողություններ, հաշվողական կենսաբանություն, հաշվողական տնտեսագիտություն, համակարգչային տեսլական և այլն):

Հիմնական խնդիրն այն էր, որ չկար ստանդարտ ծրագրավորման ինտերֆեյս GPU. Մշակողները օգտագործել են OpenGLկամ Direct3D, բայց շատ հարմար էր։ կորպորացիա NVIDIA(գրաֆիկայի, մեդիա և հաղորդակցության պրոցեսորների, ինչպես նաև անլար մեդիա պրոցեսորների խոշորագույն արտադրողներից մեկը. հիմնադրվել է 1993 թվականին) սկսեց մշակել միասնական և հարմար ստանդարտ և ներմուծեց տեխնոլոգիան։ CUDA.

Ինչպես սկսվեց

2006 – NVIDIAցույց է տալիս CUDA™; հաշվողական հեղափոխության սկիզբը GPU.

2007 – NVIDIAթողարկում է ճարտարապետությունը CUDA(օրիգինալ տարբերակ CUDA SDKներկայացվել է 2007 թվականի փետրվարի 15-ին); ամսագրի «Լավագույն նոր արտադրանք» անվանակարգում Հանրաճանաչ գիտությունեւ «Ընթերցողների ընտրությունը» հրապարակումից HPCWire.

2008 - տեխնոլոգիա NVIDIA CUDAհաղթել է «Տեխնիկական գերազանցություն» անվանակարգում PC ամսագիր.

Ինչ է պատահել CUDA

CUDA(կարճ անգլերենից) Հաշվարկել միասնական սարքի ճարտարապետությունը, բառացիորեն - սարքերի միասնական հաշվողական ճարտարապետություն) - ճարտարապետություն (ծրագրային ապահովման և սարքաշարի մի շարք), որը թույլ է տալիս արտադրել GPUընդհանուր նշանակության հաշվարկներ, մինչդեռ GPUիրականում հանդես է գալիս որպես հզոր կոպրոցեսոր:

Տեխնոլոգիա NVIDIA CUDA™ծրագրավորման լեզվի զարգացման միակ միջավայրն է Գ, որը թույլ է տալիս ծրագրավորողներին ստեղծել ծրագրակազմ, որն ավելի քիչ ժամանակում լուծում է բարդ հաշվողական խնդիրներ՝ շնորհիվ GPU-ների պրոցեսորային հզորության։ Աշխարհում արդեն միլիոնավոր մարդիկ են աշխատում GPUաջակցությամբ CUDA, և հազարավոր ծրագրավորողներ արդեն օգտագործում են (անվճար!) գործիքներ CUDAարագացնել ծրագրերը և լուծել ամենաբարդ, ռեսուրսների ինտենսիվ խնդիրները՝ վիդեո և աուդիո կոդավորումից մինչև նավթի և գազի հետախուզում, արտադրանքի մոդելավորում, բժշկական պատկերացում և գիտական ​​հետազոտություն:

CUDAծրագրավորողին հնարավորություն է տալիս, իր հայեցողությամբ, կազմակերպել մուտք դեպի գրաֆիկական արագացուցիչի հրահանգների հավաքածու և կառավարել դրա հիշողությունը և դրա վրա կազմակերպել բարդ զուգահեռ հաշվարկներ: Գրաֆիկական արագացուցիչի աջակցություն CUDAդառնում է հզոր ծրագրավորվող բաց ճարտարապետություն, որը նման է այսօրվա: Այս ամենը ծրագրավորողին ապահովում է ցածր մակարդակի, բաշխված և գերարագ մուտք դեպի ապարատային, պատրաստում CUDAանհրաժեշտ հիմք ստեղծելու լուրջ բարձր մակարդակի գործիքներ, ինչպիսիք են կոմպիլյատորները, վրիպազերծողները, մաթեմատիկական գրադարանները և ծրագրային հարթակները:

Ուրալսկի, առաջատար տեխնոլոգիաների մասնագետ NVIDIA, համեմատելով GPUԵվ , սա ասում է. - Սա ամենագնաց է: Նա քշում է միշտ և ամենուր, բայց ոչ շատ արագ։ Ա GPU-Սա սպորտային մեքենա է։ Վատ ճանապարհի վրա այն պարզապես ոչ մի տեղ չի գնա, այլ լավ մակերես կտա, և այն ցույց կտա իր ողջ արագությունը, որի մասին ամենագնացը երբեք չի էլ երազել:

Տեխնոլոգիական հնարավորություններ CUDA