კომპიუტერული რესურსი 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. შემდეგი მოდის ნახევრად მრგვალი, რომელიც არის ნახევრად warp, რადგან მეხსიერების წვდომა ჩვეულებრივ ხდება ცალ-ცალკე მეხსიერების პირველი და მეორე ნახევრისთვის.

როგორც ხედავთ, ეს არქიტექტურა შესანიშნავია ამოცანების პარალელიზებისთვის. და მიუხედავად იმისა, რომ პროგრამირება ხორციელდება C ენაზე გარკვეული შეზღუდვებით, სინამდვილეში ყველაფერი ასე მარტივი არ არის, რადგან... ყველაფრის პარალელიზება არ შეიძლება. ასევე არ არსებობს შემთხვევითი რიცხვების (ან ინიციალიზაციის) გენერირების სტანდარტული ფუნქციები; ეს ყველაფერი ცალკე უნდა განხორციელდეს. და მიუხედავად იმისა, რომ არსებობს უამრავი მზა ვარიანტი, არცერთ მათგანს არ მოაქვს სიხარული. რეკურსიის გამოყენების შესაძლებლობა შედარებით ცოტა ხნის წინ გამოჩნდა.

სიცხადისთვის დაიწერა პატარა კონსოლის პროგრამა (კოდის მინიმიზაციისთვის), რომელიც ასრულებს ოპერაციებს float ტიპის ორი მასივით, ე.ი. არა მთელი მნიშვნელობებით. ზემოთ ჩამოთვლილი მიზეზების გამო, ინიციალიზაცია (მაივის შევსება სხვადასხვა თვითნებური მნიშვნელობებით) განხორციელდა CPU-ს მიერ. შემდეგ შესრულდა 25 სხვადასხვა ოპერაცია თითოეული მასივიდან შესაბამისი ელემენტებით, შუალედური შედეგები ჩაიწერა მესამე მასივში. მასივის ზომა შეიცვალა, შედეგები ასეთია:

სულ ჩატარდა 4 ტესტი:

1024 ელემენტი თითოეულ მასივში:

ნათლად ჩანს, რომ ელემენტების ასეთი მცირე რაოდენობით პარალელური გამოთვლა ნაკლებად სარგებლობს, რადგან თავად გამოთვლები ბევრად უფრო სწრაფია, ვიდრე მათი მომზადება.

4096 ელემენტი თითოეულ მასივში:

ახლა კი ხედავთ, რომ ვიდეოკარტა ასრულებს ოპერაციებს მასივებზე 3-ჯერ უფრო სწრაფად, ვიდრე პროცესორი. უფრო მეტიც, ვიდეო ბარათზე ამ ტესტის შესრულების დრო არ გაიზარდა (დროის უმნიშვნელო შემცირება შეიძლება შეცდომას მივაწეროთ).

ახლა თითოეულ მასივში 12288 ელემენტია:

ვიდეო ბარათის განცალკევება გაიზარდა 2-ჯერ. კიდევ ერთხელ, აღსანიშნავია, რომ ვიდეო ბარათზე შესრულების დრო გაიზარდა
უმნიშვნელოდ, მაგრამ პროცესორზე 3-ჯერ მეტი, ე.ი. ამოცანის სირთულის პროპორციულია.

და ბოლო ტესტი არის 36864 ელემენტი თითოეულ მასივში:

ამ შემთხვევაში, აჩქარება აღწევს შთამბეჭდავ მნიშვნელობებს - თითქმის 22-ჯერ უფრო სწრაფად ვიდეო ბარათზე. და ისევ, ვიდეო ბარათზე შესრულების დრო ოდნავ გაიზარდა, მაგრამ პროცესორზე - საჭირო 3-ჯერ, რაც კვლავ პროპორციულია დავალების სირთულის.

თუ გააგრძელებთ გამოთვლების გართულებას, ვიდეო კარტა უფრო და უფრო იმარჯვებს. მიუხედავად იმისა, რომ მაგალითი გარკვეულწილად გაზვიადებულია, საერთო სიტუაცია ნათლად ჩანს. მაგრამ როგორც ზემოთ აღვნიშნეთ, ყველაფრის პარალელიზება არ შეიძლება. მაგალითად, Pi-ს გამოთვლა. არსებობს მხოლოდ მონტე კარლოს მეთოდით დაწერილი მაგალითები, მაგრამ გამოთვლების სიზუსტე არის 7 ათობითი ადგილი, ე.ი. რეგულარული ათწილადი. გამოთვლების სიზუსტის გასაზრდელად საჭიროა გრძელი არითმეტიკა და სწორედ აქ ჩნდება პრობლემები, რადგან ამის ეფექტურად განხორციელება ძალიან, ძალიან რთულია. ინტერნეტში ვერ ვიპოვე მაგალითები, რომლებიც იყენებენ CUDA-ს და გამოთვლიან პის 1 მილიონ ათწილადამდე. ასეთი განაცხადის დაწერის მცდელობები გაკეთდა, მაგრამ Pi-ს გამოთვლის ყველაზე მარტივი და ეფექტური მეთოდია Brent-Salamin ალგორითმი ან გაუსის ფორმულა. ცნობილი SuperPI სავარაუდოდ (ვიმსჯელებთ მუშაობის სიჩქარით და გამეორებების რაოდენობით) იყენებს გაუსის ფორმულას. და, თუ ვიმსჯელებთ
იმის გამო, რომ SuperPI არის ერთსართულიანი, CUDA-ში მაგალითების ნაკლებობა და ჩემი მცდელობების წარუმატებლობა, შეუძლებელია Pi-ს დათვლის ეფექტურად პარალელიზაცია.

სხვათა შორის, შეგიძლიათ შეამჩნიოთ, თუ როგორ იზრდება GPU– ზე დატვირთვა გამოთვლების დროს და ასევე გამოიყოფა მეხსიერება.

ახლა მოდით გადავიდეთ CUDA-ს უფრო პრაქტიკულ უპირატესობებზე, კერძოდ, ამჟამად არსებულ პროგრამებზე, რომლებიც იყენებენ ამ ტექნოლოგიას. უმეტესწილად, ეს არის ყველა სახის აუდიო/ვიდეო გადამყვანი და რედაქტორი.

ტესტირებისას გამოყენებულია 3 სხვადასხვა ვიდეო ფაილი:

      *ფილმის ავატარის გადაღების ისტორია - 1920x1080, MPEG4, h.264.
      *სერია "მომატყუე" - 1280x720, MPEG4, h.264.
      *სერია "ფილადელფიაში ყოველთვის მზიანია" - 624x464, xvid.

პირველი ორი ფაილის კონტეინერი და ზომა იყო .mkv და 1.55 GB, ხოლო ბოლო იყო .avi და 272 MB.

დავიწყოთ ძალიან სენსაციური და პოპულარული პროდუქტით - ბადაბუმი. გამოყენებული ვერსია - 1.2.1.74 . პროგრამის ღირებულება არის $29.90 .

პროგრამის ინტერფეისი მარტივი და ინტუიციურია - მარცხნივ ვირჩევთ წყაროს ფაილს ან დისკს, ხოლო მარჯვნივ - საჭირო მოწყობილობას, რომლის კოდირებასაც მოვახდენთ. ასევე არის მომხმარებლის რეჟიმი, რომელშიც პარამეტრები ხელით არის დაყენებული, რაც ჩვენ გამოვიყენეთ.

პირველ რიგში, მოდით შევხედოთ რამდენად სწრაფად და ეფექტურად არის დაშიფრული ვიდეო "თავისთავში", ე.ი. იგივე გარჩევადობა და დაახლოებით იგივე ზომა. ჩვენ გავზომავთ სიჩქარეს fps-ში და არა გასულ დროში - ამ გზით უფრო მოსახერხებელია შევადაროთ და გამოვთვალოთ რამდენად შეკუმშული იქნება თვითნებური სიგრძის ვიდეო. იმიტომ რომ დღეს ჩვენ განვიხილავთ "მწვანე" ტექნოლოგიას, მაშინ გრაფიკები იქნება შესაბამისი -)

კოდირების სიჩქარე პირდაპირ დამოკიდებულია ხარისხზე, ეს აშკარაა. აღსანიშნავია, რომ სინათლის გარჩევადობა (მოდით დავარქვათ მას ტრადიციულად SD) Badaboom-ისთვის პრობლემას არ წარმოადგენს - კოდირების სიჩქარე 5,5-ჯერ აღემატება ორიგინალურ (24 fps) ვიდეოს კადრების სიხშირეს. და მძიმე 1080p ვიდეოც კი გარდაიქმნება პროგრამის მიერ რეალურ დროში. აღსანიშნავია, რომ საბოლოო ვიდეოს ხარისხი ძალიან ახლოსაა ორიგინალურ ვიდეო მასალასთან, ე.ი. Badaboom დაშიფვრავს ძალიან, ძალიან ეფექტურად.

მაგრამ, როგორც წესი, ისინი გადასცემენ ვიდეოს უფრო დაბალ გარჩევადობაში, ვნახოთ, როგორ არის საქმეები ამ რეჟიმში. გარჩევადობის შემცირებით, ვიდეოს ბიტის სიხშირეც შემცირდა. ეს იყო 9500 kbps 1080p გამომავალი ფაილისთვის, 4100 kbps 720p და 2400 kbps 720x404. არჩევანი გაკეთდა გონივრული ზომის/ხარისხის თანაფარდობის საფუძველზე.

კომენტარები არ არის საჭირო. თუ თქვენ გააკეთებთ რიპს 720p-დან ჩვეულებრივ SD ხარისხამდე, მაშინ ფილმის ტრანსკოდირება, რომელიც გრძელდება 2 საათი, დაახლოებით 30 წუთი დასჭირდება. და ამავდროულად, პროცესორის დატვირთვა უმნიშვნელო იქნება, შეგიძლიათ დისკომფორტის შეგრძნების გარეშე დაიწყოთ თქვენი საქმე.

რა მოხდება, თუ ვიდეოს გადაიყვანთ ფორმატში მობილური მოწყობილობისთვის? ამისათვის აირჩიეთ iPhone პროფილი (ბიტი სიხშირე 1 Mbit/s, 480x320) და შეხედეთ კოდირების სიჩქარეს:

მჭირდება რაიმეს თქმა? iPhone-ის ნორმალური ხარისხის ორსაათიანი ფილმის ტრანსკოდირება ხდება 15 წუთზე ნაკლებ დროში. HD ხარისხით უფრო რთულია, მაგრამ მაინც ძალიან სწრაფი. მთავარი ის არის, რომ გამომავალი ვიდეოს ხარისხი რჩება საკმაოდ მაღალ დონეზე ტელეფონის ეკრანზე ნახვისას.

ზოგადად, Badaboom-ის შთაბეჭდილებები დადებითია, მუშაობის სიჩქარე სასიამოვნოა, ინტერფეისი კი მარტივი და მკაფიო. წინა ვერსიებში ყველა სახის ხარვეზი (მე გამოვიყენე ბეტა 2008 წელს) გამოსწორდა. გარდა ერთისა - გზა საწყის ფაილამდე, ისევე როგორც საქაღალდეში, რომელშიც მზა ვიდეოა შენახული, არ უნდა შეიცავდეს რუსულ ასოებს. მაგრამ პროგრამის უპირატესობებთან შედარებით, ეს ნაკლი უმნიშვნელოა.

შემდეგი რიგში გვექნება სუპერ LoiLoScope. ჩვეულებრივ ვერსიას ითხოვენ 3280 რუბლიდა სენსორული ვერსიისთვის, რომელიც მხარს უჭერს სენსორულ კონტროლს Windows 7-ში, ისინი ითხოვენ იმდენს 4440 რუბლი. შევეცადოთ გაერკვნენ, რატომ სურს დეველოპერს ასეთი ფული და რატომ სჭირდება ვიდეო რედაქტორს მულტიშეხების მხარდაჭერა. გამოყენებული უახლესი ვერსია - 1.8.3.3 .

საკმაოდ რთულია პროგრამის ინტერფეისის სიტყვებით აღწერა, ამიტომ გადავწყვიტე მოკლე ვიდეოს გადაღება. მაშინვე ვიტყვი, რომ, ისევე როგორც ყველა ვიდეო გადამყვანი CUDA-სთვის, GPU აჩქარება მხარდაჭერილია მხოლოდ MPEG4-ში ვიდეოს გამოსასვლელად h.264 კოდეკით.

კოდირების დროს პროცესორის დატვირთვა არის 100%, მაგრამ ეს არ იწვევს დისკომფორტს. ბრაუზერი და სხვა მსუბუქი აპლიკაციები არ ნელდება.

ახლა მოდით გადავიდეთ შესრულებაზე. დასაწყისისთვის, ყველაფერი იგივეა, რაც Badaboom-ის შემთხვევაში - ვიდეოს ხარისხში ანალოგიურ ფორმაში გადატანა.

შედეგები ბევრად უკეთესია ვიდრე Badaboom. ხარისხიც შესანიშნავია, ორიგინალთან განსხვავება მხოლოდ გამადიდებელი შუშის ქვეშ ჩარჩოების წყვილ-წყვილად შედარებით შეინიშნება.

ვაა, აქ LoiloScope აჯობებს Badaboom-ს 2,5-ჯერ. ამავდროულად, შეგიძლიათ მარტივად ამოჭრათ და დაშიფვროთ სხვა ვიდეო პარალელურად, წაიკითხოთ ახალი ამბები და უყუროთ ფილმებს კიდეც და უპრობლემოდ უკრავთ FullHD-საც კი, მიუხედავად იმისა, რომ პროცესორის დატვირთვა მაქსიმალურია.

ახლა ვცადოთ ვიდეოს გადაღება მობილური მოწყობილობისთვის, დავარქვათ პროფილს იგივე, რაც ერქვა Badaboom-ში - iPhone (480x320, 1 Mbit/s):

შეცდომა არ არის. ყველაფერი რამდენჯერმე გადამოწმდა, ყოველ ჯერზე შედეგი ერთი და იგივე იყო. სავარაუდოდ, ეს ხდება იმ მარტივი მიზეზის გამო, რომ SD ფაილი ჩაიწერა სხვა კოდეკით და სხვა კონტეინერში. ტრანსკოდირებისას ვიდეო პირველად დეკოდირდება, იყოფა გარკვეული ზომის მატრიცებად და შეკუმშულია. Xvid-ის შემთხვევაში გამოყენებული ASP დეკოდერი უფრო ნელია ვიდრე AVC (h.264-ისთვის) პარალელურად დეკოდირებისას. თუმცა, 192 fps არის 8-ჯერ უფრო სწრაფი ვიდრე ორიგინალური ვიდეოს სიჩქარე; 23 წუთიანი სერია შეკუმშულია 4 წუთზე ნაკლებ დროში. სიტუაცია განმეორდა xvid/DivX-ში შეკუმშული სხვა ფაილებით.

LoiloScopeმე დავტოვე მხოლოდ სასიამოვნო შთაბეჭდილებები - ინტერფეისი, მიუხედავად მისი უჩვეულოობისა, მოსახერხებელი და ფუნქციონალურია, ხოლო მუშაობის სიჩქარე დიდებას მიღმაა. შედარებით ცუდი ფუნქციონალობა გარკვეულწილად იმედგაცრუებულია, მაგრამ ხშირად მარტივი ინსტალაციისას საჭიროა მხოლოდ ფერების ოდნავ მორგება, გლუვი გადასვლების გაკეთება და ტექსტის დამატება, და LoiloScope ამით შესანიშნავ საქმეს აკეთებს. ფასიც გარკვეულწილად შემაშინებელია - ჩვეულებრივი ვერსიისთვის 100 დოლარზე მეტი ნორმალურია უცხო ქვეყნებისთვის, მაგრამ ასეთი მაჩვენებლები მაინც ცოტა ველურად გვეჩვენება. თუმცა, ვაღიარებ, რომ თუ მე, მაგალითად, ხშირად ვიღებდი და ვამონტაჟებდი სახლის ვიდეოებს, შეიძლება მეფიქრა მის ყიდვაზე. ამავდროულად, სხვათა შორის, მე შევამოწმე HD (უფრო სწორად AVCHD) კონტენტის რედაქტირების შესაძლებლობა პირდაპირ ვიდეოკამერიდან სხვა ფორმატში გადაყვანის გარეშე; LoiloScope-მა არ გამოავლინა რაიმე პრობლემა ფაილებთან, როგორიცაა .mts.

ახალი ტექნოლოგია ჰგავს ახლად გაჩენილ ევოლუციურ სახეობას. უცნაური არსება, განსხვავებით ბევრი ძველი დროის. ხან უხერხული, ხან სასაცილო. და თავიდან მისი ახალი თვისებები არანაირად არ არის შესაფერისი ამ დასახლებული და სტაბილური სამყაროსთვის.

თუმცა, ცოტა დრო გადის და აღმოჩნდება, რომ დამწყები უფრო სწრაფად დარბის, მაღლა ხტება და ზოგადად უფრო ძლიერია. და ის უფრო მეტ ბუზს ჭამს, ვიდრე მისი რეტროგრადული მეზობლები. და შემდეგ ეს იგივე მეზობლები იწყებენ იმის გაგებას, რომ აზრი არ აქვს ამ მოუხერხებელ ყოფილთან ჩხუბს. უმჯობესია მასთან მეგობრობა და კიდევ უკეთესი სიმბიოზის ორგანიზება. დაინახავთ, რომ მეტი ბუზი იქნება.

GPGPU ტექნოლოგია (General-Purpose Graphics Processing Units - ზოგადი დანიშნულების გრაფიკული პროცესორი) დიდი ხნის განმავლობაში არსებობდა მხოლოდ გონიერი აკადემიკოსების თეორიულ გამოთვლებში. სხვა როგორ? ათწლეულების განმავლობაში განვითარებული გამოთვლითი პროცესის რადიკალურად შეცვლა შესთავაზეს, მისი პარალელური ტოტების გამოთვლა ვიდეოკარტაზე მინდობით - ეს მხოლოდ თეორეტიკოსებს შეუძლიათ.

CUDA ტექნოლოგიის ლოგო გვახსენებს, რომ ის გაიზარდა სიღრმეში
3D გრაფიკა.

მაგრამ GPGPU ტექნოლოგია დიდხანს არ აპირებდა მტვრის შეგროვებას უნივერსიტეტის ჟურნალების გვერდებზე. თავისი საუკეთესო თვისებების ბუმბულის გაფუჭებით, მან მიიპყრო მწარმოებლების ყურადღება. ასე დაიბადა CUDA - GPGPU-ს დანერგვა nVidia-ს მიერ წარმოებულ GeForce გრაფიკულ პროცესორებზე.

CUDA-ს წყალობით, GPGPU ტექნოლოგიები გახდა მთავარი. ახლა კი მხოლოდ ყველაზე შორსმჭვრეტელი და სიზარმაცის სქელი ფენით დაფარული პროგრამირების სისტემების დეველოპერი არ აცხადებს CUDA-ს მხარდაჭერას თავისი პროდუქტით. IT პუბლიკაციებმა პატივად მიიჩნიეს ტექნოლოგიის დეტალების წარმოდგენა მრავალრიცხოვან პოპულარულ სამეცნიერო სტატიებში და კონკურენტები მაშინვე დაჯდნენ შაბლონებითა და ჯვარედინი შემდგენელებით, რათა შეემუშავებინათ მსგავსი რამ.

საზოგადოების აღიარება ოცნებაა არა მხოლოდ დამწყები ვარსკვლავებისთვის, არამედ ახლად დაბადებული ტექნოლოგიებისთვისაც. და CUDA-ს გაუმართლა. მას კარგად იცნობენ, მასზე საუბრობენ და წერენ.

ისინი უბრალოდ წერენ, თითქოს აგრძელებენ GPGPU განხილვას სქელ სამეცნიერო ჟურნალებში. ისინი ბომბავს მკითხველს ისეთი ტერმინებით, როგორიცაა "ბადე", "SIMD", "warp", "მასპინძელი", "ტექსტიურა და მუდმივი მეხსიერება". ისინი მას ყველაზე მაღლა აყენებენ nVidia GPU-ების ორგანიზაციულ დიაგრამებში, მიჰყავთ პარალელური ალგორითმების მიხვეულ-მოხვეული ბილიკებით და (ყველაზე ძლიერი ნაბიჯი) აჩვენებენ გრძელი კოდების ჩამონათვალს C ენაზე. შედეგად, ირკვევა, რომ სტატიის შეყვანისას ჩვენ გვყავს ახალი მკითხველი CUDA-ს გაგების მწვავე სურვილით, ხოლო გამომავალზე გვაქვს იგივე მკითხველი, მაგრამ შეშუპებული თავით სავსე ფაქტებით, დიაგრამებით. , კოდი, ალგორითმები და ტერმინები.

იმავდროულად, ნებისმიერი ტექნოლოგიის მიზანია ჩვენი ცხოვრების გამარტივება. და CUDA აკეთებს დიდ საქმეს ამით. მისი მუშაობის შედეგები არის ის, რაც დაარწმუნებს ნებისმიერ სკეპტიკოსს, ვიდრე ასობით სქემა და ალგორითმი.

ყველგან არა

CUDA მხარდაჭერილია მაღალი ხარისხის სუპერკომპიუტერებით
nVidia Tesla.

და მაინც, სანამ შევხედავთ CUDA-ს მუშაობის შედეგებს საშუალო მომხმარებლის ცხოვრების გაადვილების სფეროში, ღირს მისი ყველა შეზღუდვის გაგება. ისევე როგორც ჯინი: ნებისმიერი სურვილი, მაგრამ ერთი. CUDA-ს ასევე აქვს თავისი აქილევსის ქუსლები. ერთ-ერთი მათგანია პლატფორმების შეზღუდვები, რომლებზეც მას შეუძლია მუშაობა.

nVidia ვიდეო ბარათების სია, რომლებიც მხარს უჭერენ CUDA-ს, წარმოდგენილია სპეციალურ სიაში, სახელწოდებით CUDA Enabled Products. სია საკმაოდ შთამბეჭდავია, მაგრამ მარტივი კლასიფიკაცია. CUDA მხარდაჭერა არ არის უარყოფილი:

    nVidia GeForce მე-8, მე-9, მე-100, მე-200 და 400-ე სერიის მოდელები მინიმუმ 256 მეგაბაიტი ვიდეო მეხსიერებით ბორტზე. მხარდაჭერა ვრცელდება როგორც დესკტოპზე, ასევე მობილურ ბარათებზე.

    დესკტოპის და მობილური ვიდეო ბარათების დიდი უმრავლესობა არის nVidia Quadro.

    ყველა გადაწყვეტა nvidia ION netbook სერიიდან.

    მაღალი ხარისხის HPC (High Performance Computing) და nVidia Tesla სუპერკომპიუტერის გადაწყვეტილებები გამოიყენება როგორც პერსონალური გამოთვლებისთვის, ასევე მასშტაბური კლასტერული სისტემების ორგანიზებისთვის.

ამიტომ, სანამ იყენებთ CUDA-ზე დაფუძნებულ პროგრამულ პროდუქტებს, ღირს შეამოწმოთ რჩეულების ეს სია.

გარდა თავად ვიდეო ბარათისა, საჭიროა შესაბამისი დრაივერი CUDA-ს მხარდასაჭერად. ეს არის კავშირი ცენტრალურ და გრაფიკულ პროცესორებს შორის, მოქმედებს როგორც ერთგვარი პროგრამული ინტერფეისი პროგრამული კოდისა და მონაცემების წვდომისთვის GPU-ს მრავალბირთვიან საგანძურში. იმისათვის, რომ დარწმუნდეთ, რომ შეცდომა არ დაუშვით, nVidia გირჩევთ ეწვიოთ დრაივერების გვერდს და მიიღოთ უახლესი ვერსია.

...მაგრამ თავად პროცესი

როგორ მუშაობს CUDA? როგორ ავხსნათ პარალელური გამოთვლების რთული პროცესი სპეციალურ GPU აპარატურულ არქიტექტურაზე მკითხველის კონკრეტული ტერმინების უფსკრულში ჩაძირვის გარეშე?

ამის გაკეთება შეგიძლიათ იმის წარმოდგენით, თუ როგორ ახორციელებს ცენტრალური პროცესორი პროგრამას გრაფიკულ პროცესორთან სიმბიოზით.

არქიტექტურულად, ცენტრალური დამუშავების ერთეული (CPU) და მისი გრაფიკული კოლეგა (GPU) განსხვავებულად არის შექმნილი. თუ ანალოგს გამოვხატავთ საავტომობილო ინდუსტრიის სამყაროსთან, მაშინ CPU არის ვაგონი, ერთ-ერთი მათგანი, რომელსაც უწოდებენ "ბეღელს". ის სამგზავრო მანქანას ჰგავს, მაგრამ ამავდროულად (დეველოპერების თვალსაზრისით) „ეს არის შვეიცარიელი, მოსამკი და მოთამაშე მილზე“. ერთდროულად ასრულებს პატარა სატვირთო მანქანის, ავტობუსის და ჰიპერტროფირებული ჰეჩბეკის როლს. ვაგონი, მოკლედ. მას აქვს რამდენიმე ცილინდრიანი ბირთვი, მაგრამ ისინი უმკლავდებიან თითქმის ნებისმიერ დავალებას და შთამბეჭდავი ქეში მეხსიერებას შეუძლია შეინახოს მრავალი მონაცემი.

მაგრამ GPU არის სპორტული მანქანა. არსებობს მხოლოდ ერთი ფუნქცია: პილოტის მიტანა ფინიშის ხაზამდე რაც შეიძლება სწრაფად. აქედან გამომდინარე, არ არის დიდი საბარგულის მეხსიერება, არ არის დამატებითი ადგილები. მაგრამ ასობით ჯერ მეტი ცილინდრიანი ბირთვია ვიდრე CPU.

CUDA-ს წყალობით, GPGPU პროგრამის შემქმნელებს არ სჭირდებათ პროგრამირების სირთულეების შესწავლა
განვითარება გრაფიკული ძრავებისთვის, როგორიცაა DirectX და OpenGL

ცენტრალური პროცესორისგან განსხვავებით, რომელსაც შეუძლია ნებისმიერი ამოცანის გადაჭრა, გრაფიკის ჩათვლით, მაგრამ საშუალო შესრულებით, გრაფიკული პროცესორი ადაპტირებულია ერთი ამოცანის მაღალსიჩქარიან გადაწყვეტაზე: შეყვანის პოლიგონების თაიგულის გადაქცევა პიქსელების ჯგუფად. გამომავალი. უფრო მეტიც, ეს პრობლემა შეიძლება მოგვარდეს პარალელურად GPU-ში ასობით შედარებით მარტივი გამოთვლითი ბირთვის გამოყენებით.

მაშ, როგორი ტანდემი შეიძლება იყოს ვაგონიდან და სპორტული მანქანისგან? CUDA მუშაობს ასე: პროგრამა მუშაობს CPU-ზე, სანამ არ იქნება კოდის ნაწილი, რომელიც შეიძლება შესრულდეს პარალელურად. შემდეგ, იმის ნაცვლად, რომ იგი ნელა შესრულდეს ყველაზე მაგარი CPU-ის ორ (ან თუნდაც რვა) ბირთვზე, ის გადადის ასობით GPU ბირთვზე. ამავდროულად, ამ მონაკვეთის შესრულების დრო საგრძნობლად მცირდება, რაც იმას ნიშნავს, რომ მცირდება მთელი პროგრამის შესრულების დროც.

ტექნოლოგიურად, პროგრამისტისთვის არაფერი იცვლება. CUDA პროგრამების კოდი დაწერილია C ენაზე. უფრო სწორედ, მის სპეციალურ დიალექტში „C ნაკადულებით“ (C ნაკადულებით). სტენფორდში შემუშავებული C ენის ამ გაფართოებას ბრუკი ჰქვია. ინტერფეისი, რომელიც გადასცემს Brook კოდს GPU-ზე, არის ვიდეო ბარათის დრაივერი, რომელიც მხარს უჭერს CUDA-ს. ის აწყობს პროგრამის ამ განყოფილების მთელ დამუშავების პროცესს ისე, რომ პროგრამისტისთვის GPU გამოიყურებოდეს CPU კოპროცესორს. ძალიან ჰგავს მათემატიკური კოპროცესორის გამოყენებას პერსონალური გამოთვლის პირველ დღეებში. 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-მა შეიძინა, ახლა აქტიურად მუშაობს Havok ძრავის ოპტიმიზაციის სფეროში ATI ვიდეო ბარათებისთვის და AMD პროცესორებისთვის. მაგრამ 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 fps. თანამედროვე მრავალბირთვიან პროცესორებზე ასეთი ალგორითმის დანერგვასთან შედარებით, CUDA იძლევა მუშაობის ორჯერ ან სამჯერ ზრდას და ეს, ხედავთ, საკმაოდ ბევრია.

ვიდეო კონვერტაცია, აუდიო ფილტრაცია

Badaboom ვიდეო გადამყვანი პირველია, ვინც გამოიყენა CUDA კონვერტაციის დასაჩქარებლად.

სასიამოვნოა ვიდეოს გაქირავების ახალი პროდუქტის ყურება FullHD ხარისხით და დიდ ეკრანზე. მაგრამ თქვენ არ შეგიძლიათ დიდი ეკრანის წაღება თქვენთან ერთად გზაზე და FullHD ვიდეო კოდეკი დაიძაბება მობილური გაჯეტის დაბალი სიმძლავრის პროცესორზე. გარდაქმნა მოდის სამაშველოში. მაგრამ უმეტესობა, ვინც მას პრაქტიკაში შეხვდა, უჩივის კონვერტაციის დიდ დროს. ეს გასაგებია, პროცესი რუტინულია, პარალელიზებისთვის შესაფერისია და CPU-ზე მისი შესრულება არც თუ ისე ოპტიმალურია.

მაგრამ CUDA უმკლავდება ამას. პირველი ნიშანი არის Badaboom-ის გადამყვანი Elevental-ისგან. Badaboom-ის დეველოპერებმა მიიღეს სწორი გადაწყვეტილება CUDA-ს არჩევისას. ტესტებმა აჩვენა, რომ ის ოც წუთზე ნაკლებ დროში გარდაქმნის სტანდარტულ საათნახევრიან ფილმს iPhone/iPod Touch ფორმატში. და ეს იმისდა მიუხედავად, რომ მხოლოდ CPU-ს გამოყენებისას, ამ პროცესს საათზე მეტი დრო სჭირდება.

ეხმარება 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, 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 150, 6000, GeForce 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 670 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 G
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 16K 32K
საზიარო მეხსიერების მაქსიმალური რაოდენობა მულტიპროცესორზე 16 კბ 48 კბ
საერთო მეხსიერების ბანკების რაოდენობა 16 32
ადგილობრივი მეხსიერების რაოდენობა თითო თემაში 16 კბ 512 კბ
მეხსიერების მუდმივი ზომა 64 კბ
ქეში სამუშაო კომპლექტი მულტიპროცესორზე მუდმივი მეხსიერებისთვის 8 კბ
ქეში სამუშაო კომპლექტი მულტიპროცესორზე ტექსტურის მეხსიერებისთვის მოწყობილობაზე დამოკიდებული, 6 KB-დან 8 KB-მდე
მაქსიმალური სიგანე 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(width / blockDim.x, სიმაღლე / blockDim.y, 1); ბირთვი<<< gridDim, blockDim, 0 >>> (d_odata, სიგანე, სიმაღლე) ; cudaUnbindTexture(tex) ; __global__ void kernel(float * odata, int სიმაღლე, int სიგანე) ( unsigned int x = blockIdx.x * blockDim.x + threadIdx.x ; ხელმოუწერელი int y = blockIdx.y * blockDim.y + threadIdx.y ; float = c ტექსტი (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 ("გამრავლება_მათ" ) a = numpy.random .randn (400 ) .atype (numpy.float32 ) b = numpy.random .randn (400 ) .astype (numpy.float_mpy )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 წლის დეკემბერში გამოცხადდა, რომ პირველი რუსული სამეცნიერო და საგანმანათლებლო ცენტრი "Parallel Computing", რომელიც მდებარეობს ქალაქ დუბნაში, დაიწყო ფუნქციონირება, რომლის ამოცანები მოიცავს ტრენინგს და კონსულტაციებს GPU-ებზე რთული გამოთვლითი პრობლემების გადაჭრის შესახებ.

უკრაინაში CUDA-ს შესახებ კურსები ისწავლება კიევის სისტემური ანალიზის ინსტიტუტში.

ბმულები

ოფიციალური რესურსები

  • CUDA Zone (რუსული) - CUDA-ს ოფიციალური ვებგვერდი
  • CUDA GPU Computing (ინგლისური) - ოფიციალური ვებ ფორუმები, რომლებიც ეძღვნება CUDA გამოთვლებს

არაოფიციალური რესურსები

ტომის აპარატურა
  • დიმიტრი ჩეკანოვი. nVidia CUDA: გამოთვლა ვიდეო ბარათზე თუ CPU-ს სიკვდილი? . Tom's Hardware (2008 წლის 22 ივნისი) დაარქივებულია
  • დიმიტრი ჩეკანოვი. nVidia CUDA: GPU აპლიკაციების ბენჩმარკინგი მასობრივი ბაზრისთვის. Tom's Hardware (მაისი 19, 2009). დაარქივებულია ორიგინალიდან 2012 წლის 4 მარტი. წაკითხვის თარიღი: 2009 წლის 19 მაისი.
iXBT.com
  • ალექსეი ბერილიო. NVIDIA CUDA - არაგრაფიკული გამოთვლა GPU-ებზე. Ნაწილი 1 . iXBT.com (2008 წლის 23 სექტემბერი). დაარქივებულია ორიგინალიდან 2012 წლის 4 მარტი. წაკითხვის თარიღი: 2009 წლის 20 იანვარი.
  • ალექსეი ბერილიო. NVIDIA CUDA - არაგრაფიკული გამოთვლა GPU-ებზე. Მე -2 ნაწილი . iXBT.com (2008 წლის 22 ოქტომბერი). - NVIDIA CUDA-ს განხორციელების მაგალითები. დაარქივებულია ორიგინალიდან 2012 წლის 4 მარტი. წაკითხვის თარიღი: 2009 წლის 20 იანვარი.
სხვა რესურსები
  • ბორესკოვი ალექსეი ვიქტოროვიჩი. CUDA Basics (2009 წლის 20 იანვარი). დაარქივებულია ორიგინალიდან 2012 წლის 4 მარტი. წაკითხვის თარიღი: 2009 წლის 20 იანვარი.
  • ვლადიმირ ფროლოვი.შესავალი CUDA ტექნოლოგიაში. ონლაინ ჟურნალი „კომპიუტერული გრაფიკა და მულტიმედია“ (19 დეკემბერი, 2008 წ.). დაარქივებულია ორიგინალიდან 2012 წლის 4 მარტი. წაკითხვის თარიღი: 2009 წლის 28 ოქტომბერი.
  • იგორ ოსკოლკოვი. NVIDIA CUDA არის ხელმისაწვდომი ბილეთი დიდი გამოთვლების სამყაროში. Computerra (2009 წლის 30 აპრილი). წაკითხვის თარიღი: 2009 წლის 3 მაისი.
  • ვლადიმირ ფროლოვი.შესავალი CUDA ტექნოლოგიაში (2009 წლის 1 აგვისტო). დაარქივებულია ორიგინალიდან 2012 წლის 4 მარტი. წაკითხვის თარიღი: 2010 წლის 3 აპრილი.
  • GPGPU.ru. ვიდეო ბარათების გამოყენება გამოთვლებისთვის
  • . პარალელური გამოთვლითი ცენტრი

შენიშვნები

იხილეთ ასევე

თანამედროვე პროცესორების შემუშავებისას შეინიშნება ბირთვების რაოდენობის თანდათან მატების ტენდენცია, რაც ზრდის მათ შესაძლებლობებს პარალელურ გამოთვლებში. თუმცა, უკვე დიდი ხანია ხელმისაწვდომია GPU-ები, რომლებიც ამ მხრივ მნიშვნელოვნად აღემატება CPU-ებს. ხოლო GPU-ების ეს შესაძლებლობები უკვე გათვალისწინებულია ზოგიერთმა კომპანიამ. გრაფიკული ამაჩქარებლების გამოყენების პირველი მცდელობები არამიზნობრივი გამოთვლებისთვის გაკეთდა 90-იანი წლების ბოლოდან. მაგრამ მხოლოდ შადერების გაჩენა გახდა იმპულსი სრულიად ახალი ტექნოლოგიის განვითარებისთვის და 2003 წელს გამოჩნდა GPGPU (ზოგადი დანიშნულების გრაფიკული დამუშავების ერთეულები) კონცეფცია. ამ ინიციატივის განვითარებაში მნიშვნელოვანი როლი ითამაშა BrookGPU-მ, რომელიც არის სპეციალური გაფართოება C ენისთვის. BrookGPU-ს მოსვლამდე პროგრამისტებს შეეძლოთ GPU-ებთან მუშაობა მხოლოდ Direct3D ან OpenGL API-ის მეშვეობით. ბრუკმა დეველოპერებს საშუალება მისცა ემუშავათ ნაცნობ გარემოსთან, ხოლო თავად შემდგენელი, სპეციალური ბიბლიოთეკების გამოყენებით, ახორციელებდა ინტერაქციას GPU-სთან დაბალ დონეზე.

ასეთმა პროგრესმა ვერ მიიპყრო ამ ინდუსტრიის ლიდერების ყურადღება - AMD და NVIDIA, რომლებმაც დაიწყეს საკუთარი პროგრამული პლატფორმების შემუშავება არაგრაფიკული გამოთვლებისთვის თავიანთ ვიდეო ბარათებზე. არავინ იცის GPU-ს დეველოპერებზე უკეთ მათი პროდუქციის ყველა ნიუანსი და მახასიათებელი, რაც ამ კომპანიებს საშუალებას აძლევს მაქსიმალურად ეფექტურად მოახდინონ პროგრამული პაკეტის ოპტიმიზაცია კონკრეტული ტექნიკის გადაწყვეტილებებისთვის. ამჟამად NVIDIA ავითარებს CUDA (Compute Unified Device Architecture) პლატფორმას; AMD უწოდებს მსგავს ტექნოლოგიას CTM (Close To Metal) ან AMD Stream Computing. ჩვენ გადავხედავთ CUDA-ს ზოგიერთ შესაძლებლობებს და პრაქტიკაში შევაფასებთ GeForce 8800 GT ვიდეო ბარათის G92 გრაფიკული ჩიპის გამოთვლით შესაძლებლობებს.

მაგრამ პირველ რიგში, მოდით გადავხედოთ GPU-ების გამოყენებით გამოთვლების შესრულების რამდენიმე ნიუანსს. მათი მთავარი უპირატესობა ის არის, რომ გრაფიკული ჩიპი თავდაპირველად შექმნილია მრავალი ძაფების შესასრულებლად, ხოლო ჩვეულებრივი CPU-ის თითოეული ბირთვი ასრულებს თანმიმდევრული ინსტრუქციების ნაკადს. ნებისმიერი თანამედროვე GPU არის მულტიპროცესორი, რომელიც შედგება რამდენიმე გამოთვლითი კლასტერისგან, თითოეულში მრავალი ALU. ყველაზე ძლიერი თანამედროვე GT200 ჩიპი შედგება 10 ასეთი კლასტერისგან, რომელთაგან თითოეულს აქვს 24 ნაკადის პროცესორი. ტესტირებულ GeForce 8800 GT ვიდეო ბარათს, რომელიც დაფუძნებულია G92 ჩიპზე, აქვს შვიდი დიდი გამოთვლითი ერთეული 16 ნაკადის პროცესორით. პროცესორები იყენებენ SIMD SSE ბლოკებს ვექტორული გამოთვლებისთვის (ერთი ინსტრუქცია მრავალ მონაცემზე - ერთი ინსტრუქცია შესრულებულია მრავალ მონაცემზე), რაც მოითხოვს მონაცემების 4 ვექტორად გარდაქმნას. GPU ამუშავებს ძაფებს სკალარულად, ე.ი. ერთი ინსტრუქცია გამოიყენება რამდენიმე ძაფზე (SIMT - ერთი ინსტრუქციის მრავალ ძაფზე). ეს იცავს დეველოპერებს მონაცემების ვექტორებად გადაქცევისგან და საშუალებას აძლევს თვითნებურ განშტოებას ნაკადებში. თითოეულ GPU გამოთვლით ერთეულს აქვს პირდაპირი წვდომა მეხსიერებაზე. და ვიდეო მეხსიერების გამტარუნარიანობა უფრო მაღალია, რამდენიმე ცალკეული მეხსიერების კონტროლერის გამოყენების წყალობით (G200 ზედა ბოლოზე არის 8 64-ბიტიანი არხი) და მაღალი ოპერაციული სიხშირეების წყალობით.

ზოგადად, გარკვეულ ამოცანებში დიდი რაოდენობით მონაცემებთან მუშაობისას, GPU-ები ბევრად უფრო სწრაფია ვიდრე CPU. ქვემოთ ხედავთ ამ განცხადების ილუსტრაციას:


სქემა გვიჩვენებს CPU და GPU შესრულების ზრდის დინამიკას 2003 წლიდან. NVIDIA-ს მოსწონს ამ მონაცემების რეკლამად მოყვანა თავის დოკუმენტებში, მაგრამ ეს მხოლოდ თეორიული გამოთვლებია და რეალურად უფსკრული, რა თქმა უნდა, შეიძლება გაცილებით მცირე აღმოჩნდეს.

მაგრამ როგორც ეს შეიძლება იყოს, არსებობს GPU-ების უზარმაზარი პოტენციალი, რომლის გამოყენებაც შესაძლებელია და რომელიც მოითხოვს სპეციფიკურ მიდგომას პროგრამული უზრუნველყოფის შემუშავებაში. ეს ყველაფერი დანერგილია CUDA აპარატურულ და პროგრამულ გარემოში, რომელიც შედგება რამდენიმე პროგრამული დონისგან - მაღალი დონის CUDA Runtime API და დაბალი დონის CUDA Driver API.


CUDA პროგრამირებისთვის იყენებს სტანდარტულ C ენას, რაც მისი ერთ-ერთი მთავარი უპირატესობაა დეველოპერებისთვის. თავდაპირველად, CUDA მოიცავს BLAS (ძირითადი ხაზოვანი ალგებრის პაკეტი) და FFT (ფურიეს ტრანსფორმაცია) ბიბლიოთეკებს. CUDA-ს ასევე აქვს OpenGL ან DirectX გრაფიკულ API-ებთან ურთიერთქმედების უნარი, დაბალ დონეზე განვითარების უნარი და ხასიათდება მონაცემთა ნაკადების ოპტიმიზირებული განაწილებით CPU-სა და 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 სპეციალური გამოცემის დასაყენებლად გჭირდებათ ორიგინალური დისკი დრაივერებით MSI ბარათიდან - ამის გარეშე პროგრამა არ დაინსტალირდება.

CUDA-ში გამოთვლითი შესაძლებლობების შესახებ ყველაზე სრულყოფილი ინფორმაციის საჩვენებლად და სხვა ვიდეო გადამყვანებთან შესადარებლად, შეგიძლიათ გამოიყენოთ სპეციალური CUDA-Z პროგრამა. ეს არის ის ინფორმაცია, რომელსაც ის გვაწვდის ჩვენი GeForce 8800GT ვიდეო ბარათის შესახებ:




საცნობარო მოდელებთან შედარებით, ჩვენი ასლი მუშაობს უფრო მაღალ სიხშირეებზე: რასტრული დომენი 63 მჰც-ით მეტია ნომინალურზე, ხოლო ჩრდილის ერთეულები უფრო სწრაფია 174 მჰც-ით, ხოლო მეხსიერება 100 მჰც-ით უფრო სწრაფი.

ჩვენ შევადარებთ იგივე HD ვიდეოს კონვერტაციის სიჩქარეს მხოლოდ CPU-ს გამოყენებით და CUDA-ს დამატებით აქტივაციასთან TMPGEnc პროგრამაში შემდეგ კონფიგურაციაზე:

  • პროცესორი: Pentium Dual-Core E5200 2.5 GHz;
  • დედაპლატა: Gigabyte P35-S3;
  • ოპერატიული მეხსიერება: 2x1GB GoodRam PC6400 (5-5-5-18-2T)
  • ვიდეო კარტა: MSI NX8800GT-T2D256E-OC;
  • მყარი დისკი: 320 GB WD3200AAKS;
  • კვების წყარო: CoolerMaster eXtreme Power 500-PCAP;
  • ოპერაციული სისტემა: Windows XP SP2;
  • TMPGEnc 4.0 XPress 4.6.3.268;
  • ვიდეო ბარათის დრაივერი: ForceWare 180.60.
ტესტებისთვის, პროცესორი გადატვირთული იყო 3 გჰც-მდე (11.5x261 MHz კონფიგურაციაში) და 4 GHz-მდე (11.5x348 MHz) RAM სიხშირით 835 MHz პირველ და მეორე შემთხვევაში. ვიდეო Full HD 1920x1080 გარჩევადობით, ერთი წუთი და ოცი წამი. დამატებითი დატვირთვის შესაქმნელად ჩართული იყო ხმაურის შემცირების ფილტრი, რომლის პარამეტრები დარჩა ნაგულისხმევად.


კოდირება განხორციელდა DivX 6.8.4 კოდეკის გამოყენებით. ამ კოდეკის ხარისხის პარამეტრებში, ყველა მნიშვნელობა რჩება ნაგულისხმევად, ჩართულია მრავალძაფიანი.


Multithreading მხარდაჭერა TMPGEnc-ში თავდაპირველად ჩართულია CPU/GPU პარამეტრების ჩანართში. CUDA ასევე გააქტიურებულია იმავე განყოფილებაში.


როგორც ზემოთ მოყვანილი სკრინშოტიდან ხედავთ, CUDA-ს გამოყენებით ფილტრის დამუშავება ჩართულია, მაგრამ აპარატურის ვიდეო დეკოდერი არ არის ჩართული. პროგრამის დოკუმენტაცია აფრთხილებს, რომ ბოლო პარამეტრის გააქტიურება ზრდის ფაილის დამუშავების დროს.

ტესტების შედეგების მიხედვით, მიღებული იქნა შემდეგი მონაცემები:


4 გჰც სიხშირეზე CUDA ჩართულით, ჩვენ მოვიპოვეთ მხოლოდ რამდენიმე წამი (ან 2%), რაც არ არის განსაკუთრებით შთამბეჭდავი. მაგრამ უფრო დაბალი სიხშირით, ამ ტექნოლოგიის გააქტიურების ზრდა საშუალებას გაძლევთ დაზოგოთ დროის დაახლოებით 13%, რაც საკმაოდ შესამჩნევი იქნება დიდი ფაილების დამუშავებისას. მაგრამ მაინც შედეგები არ არის ისეთი შთამბეჭდავი, როგორც მოსალოდნელი იყო.

TMPGEnc პროგრამას აქვს CPU და CUDA დატვირთვის ინდიკატორი; ამ ტესტის კონფიგურაციაში მან აჩვენა CPU დატვირთვა დაახლოებით 20%, ხოლო გრაფიკული ბირთვი დარჩენილ 80%. შედეგად, ჩვენ გვაქვს იგივე 100%, რაც CUDA-ს გარეშე კონვერტაციისას და შეიძლება საერთოდ არ იყოს დროის სხვაობა (მაგრამ ის მაინც არსებობს). მეხსიერების მცირე მოცულობა 256 მბ ასევე არ არის შემზღუდველი ფაქტორი. ვიმსჯელებთ RivaTuner-ის წაკითხვის მიხედვით, ექსპლუატაციის დროს გამოყენებული იქნა არაუმეტეს 154 მბ ვიდეო მეხსიერება.



დასკვნები

TMPGEnc პროგრამა არის ერთ-ერთი მათგანი, რომელიც აცნობს მასებს CUDA ტექნოლოგიას. ამ პროგრამაში GPU-ს გამოყენება საშუალებას გაძლევთ დააჩქაროთ ვიდეოს დამუშავების პროცესი და საგრძნობლად განტვირთოთ ცენტრალური პროცესორი, რაც მომხმარებელს საშუალებას მისცემს კომფორტულად შეასრულოს სხვა დავალებები ერთდროულად. ჩვენს კონკრეტულ მაგალითში, GeForce 8800GT 256MB ვიდეო კარტამ ოდნავ გააუმჯობესა დროის შესრულება ვიდეოს კონვერტაციისას გადატვირთული Pentium Dual-Core E5200 პროცესორის საფუძველზე. მაგრამ აშკარად ჩანს, რომ სიხშირის კლებასთან ერთად იზრდება CUDA-ს გააქტიურებიდან მიღებული მოგება; სუსტ პროცესორებზე მისი გამოყენების მოგება გაცილებით მეტი იქნება. ამ დამოკიდებულების ფონზე, სავსებით ლოგიკურია ვივარაუდოთ, რომ დატვირთვის გაზრდის შემთხვევაშიც კი (მაგალითად, დამატებითი ვიდეო ფილტრების ძალიან დიდი რაოდენობით გამოყენება), CUDA სისტემის შედეგები უფრო მეტად გამოირჩევიან. კოდირების პროცესზე დახარჯული დროის სხვაობის მნიშვნელოვანი დელტა. ასევე, არ უნდა დაგვავიწყდეს, რომ G92 არ არის ყველაზე მძლავრი ჩიპი ამ დროისთვის და უფრო თანამედროვე ვიდეო ბარათები უზრუნველყოფს მნიშვნელოვნად მაღალ შესრულებას ასეთ აპლიკაციებში. თუმცა, სანამ აპლიკაცია მუშაობს, GPU სრულად არ არის დატვირთული და, ალბათ, დატვირთვის განაწილება დამოკიდებულია თითოეულ კონფიგურაციაზე ცალკე, კერძოდ, პროცესორის/ვიდეო ბარათის კომბინაციაზე, რაც საბოლოო ჯამში პროცენტულად უფრო დიდ (ან უფრო მცირე) ზრდას იძლევა. CUDA-ს გააქტიურება. ნებისმიერ შემთხვევაში, მათთვის, ვინც მუშაობს დიდი მოცულობის ვიდეო მონაცემებით, ეს ტექნოლოგია საშუალებას მისცემს მათ მნიშვნელოვნად დაზოგონ დრო.

მართალია, CUDA-მ ჯერ არ მოიპოვა ფართო პოპულარობა; ამ ტექნოლოგიასთან მუშაობის პროგრამული უზრუნველყოფის ხარისხი გაუმჯობესებას მოითხოვს. TMPGEnc 4.0 XPress პროგრამაში, რომელიც ჩვენ განვიხილეთ, ეს ტექნოლოგია ყოველთვის არ მუშაობდა. ერთი და იგივე ვიდეო შეიძლება ხელახლა დაშიფრულიყო რამდენჯერმე, შემდეგ კი მოულოდნელად, მომდევნო გაშვებისას, CUDA დატვირთვა უკვე 0% იყო. და ეს ფენომენი სრულიად შემთხვევითი იყო სრულიად განსხვავებულ ოპერაციულ სისტემებზე. ასევე, მოცემულმა პროგრამამ უარი თქვა CUDA-ს გამოყენებაზე XviD ფორმატში კოდირებისას, მაგრამ პოპულარულ DivX კოდეკთან არანაირი პრობლემა არ ყოფილა.

შედეგად, ჯერჯერობით CUDA ტექნოლოგიას შეუძლია მნიშვნელოვნად გაზარდოს პერსონალური კომპიუტერების შესრულება მხოლოდ გარკვეულ ამოცანებში. მაგრამ ასეთი ტექნოლოგიის გამოყენების ფარგლები გაფართოვდება და ჩვეულებრივ პროცესორებში ბირთვების რაოდენობის გაზრდის პროცესი მიუთითებს თანამედროვე პროგრამულ პროგრამებში პარალელური მრავალსართულიანი გამოთვლების მოთხოვნის ზრდაზე. ტყუილად არ არის, რომ ბოლო დროს ინდუსტრიის ყველა ლიდერი შეპყრობილი გახდა CPU-სა და GPU-ს ერთ ერთიან არქიტექტურაში გაერთიანების იდეით (უბრალოდ გაიხსენეთ ძალიან რეკლამირებული AMD Fusion). შესაძლოა, CUDA არის ამ გაერთიანების პროცესის ერთ-ერთი ეტაპი.


მადლობას ვუხდით შემდეგ კომპანიებს სატესტო აღჭურვილობის მოწოდებისთვის:

- დაბალი დონის პროგრამული ინტერფეისების ნაკრები ( API) თამაშებისა და სხვა მაღალი ხარისხის მულტიმედიური აპლიკაციების შესაქმნელად. მოყვება მაღალი ხარისხის მხარდაჭერა 2D- და 3D- გრაფიკული, ხმის და შეყვანის მოწყობილობები.

Direct3D (D3D) – ინტერფეისი სამგანზომილებიანი ჩვენებისთვის პრიმიტივები(გეომეტრიული სხეულები). Შეიცავს .

OpenGL(ინგლისურიდან გახსენით გრაფიკული ბიბლიოთეკა, სიტყვასიტყვით - ღია გრაფიკული ბიბლიოთეკა) არის სპეციფიკაცია, რომელიც განსაზღვრავს პროგრამირების ენიდან დამოუკიდებელ კროს-პლატფორმულ პროგრამირების ინტერფეისს აპლიკაციების დასაწერად ორგანზომილებიანი და სამგანზომილებიანი კომპიუტერული გრაფიკის გამოყენებით. მოიცავს 250-ზე მეტ ფუნქციას მარტივი პრიმიტივებიდან რთული 3D სცენების დახატვისთვის. გამოიყენება ვიდეო თამაშების, ვირტუალური რეალობისა და ვიზუალიზაციის შესაქმნელად სამეცნიერო კვლევებში. პლატფორმაზე ფანჯრებიეჯიბრება .

OpenCL(ინგლისურიდან გახსენით გამოთვლითი ენასიტყვასიტყვით - გამოთვლების ღია ენა) - ჩარჩო(პროგრამული სისტემის ჩარჩო) სხვადასხვა გრაფიკაზე პარალელურ გამოთვლებთან დაკავშირებული კომპიუტერული პროგრამების დასაწერად ( GPU) და ( ). ჩარჩოსკენ OpenCLმოიცავს პროგრამირების ენას და აპლიკაციის პროგრამირების ინტერფეისს ( API). OpenCLუზრუნველყოფს პარალელიზმს ინსტრუქციის დონეზე და მონაცემთა დონეზე და წარმოადგენს ტექნიკის განხორციელებას GPGPU.

GPGPU(შემოკლებით ინგლისურიდან) ზოგადი-P დანიშნულება G რაფიკა P დამუშავება U nits, სიტყვასიტყვით - GPUზოგადი დანიშნულება) არის გრაფიკული დამუშავების ერთეულის (GPU) ან ვიდეო ბარათის გამოყენების ტექნიკა ზოგადი გამოთვლებისთვის, რომელსაც ჩვეულებრივ ახორციელებს კომპიუტერი.

შადერი(ინგლისური) შადერი) – პროგრამა სინთეზირებულ სურათებზე ჩრდილების ასაგებად, რომელიც გამოიყენება სამგანზომილებიან გრაფიკაში ობიექტის ან გამოსახულების საბოლოო პარამეტრების დასადგენად. როგორც წესი, მოიცავს სინათლის შთანთქმის და გაფანტვის თვითნებურად რთულ აღწერილობებს, ტექსტურის რუკებს, ასახვას და რეფრაქციას, დაჩრდილვას, ზედაპირის გადაადგილებას და დამუშავების შემდგომ ეფექტებს. რთული ზედაპირების ვიზუალიზაცია შესაძლებელია მარტივი გეომეტრიული ფორმების გამოყენებით.

რენდერირება(ინგლისური) გაწევა) – ვიზუალიზაცია, კომპიუტერულ გრაფიკაში, მოდელიდან გამოსახულების მიღების პროცესი პროგრამული უზრუნველყოფის გამოყენებით.

SDK(შემოკლებით ინგლისურიდან) პროგრამული უზრუნველყოფის განვითარების ნაკრები) – პროგრამული უზრუნველყოფის განვითარების ინსტრუმენტების ნაკრები.

პროცესორი(შემოკლებით ინგლისურიდან) Ცენტრალური გადამამუშავებელი ერთეული, სიტყვასიტყვით – ცენტრალური/მთავარი/მთავარი გამოთვლითი მოწყობილობა) – ცენტრალური (მიკრო);მოწყობილობა, რომელიც ასრულებს მანქანის ინსტრუქციებს; ტექნიკის ნაწილი, რომელიც პასუხისმგებელია გამოთვლითი ოპერაციების შესრულებაზე (დაზუსტებული ოპერაციული სისტემისა და აპლიკაციის პროგრამული უზრუნველყოფის მიერ) და ყველა მოწყობილობის მუშაობის კოორდინაციაზე.

GPU(შემოკლებით ინგლისურიდან) გრაფიკული დამუშავების განყოფილება, სიტყვასიტყვით – გრაფიკული გამოთვლითი მოწყობილობა) – გრაფიკული პროცესორი; ცალკე მოწყობილობა ან სათამაშო კონსოლი, რომელიც ახორციელებს გრაფიკულ რენდერირებას (ვიზუალიზაციას). თანამედროვე GPU-ები ძალიან ეფექტურია კომპიუტერული გრაფიკის რეალისტურ დამუშავებასა და ჩვენებაში. გრაფიკული პროცესორი თანამედროვე ვიდეო გადამყვანებში გამოიყენება როგორც 3D გრაფიკის ამაჩქარებელი, მაგრამ ზოგიერთ შემთხვევაში მისი გამოყენება შესაძლებელია გამოთვლებისთვისაც ( GPGPU).

პრობლემები პროცესორი

დიდი ხნის განმავლობაში, ტრადიციულების მუშაობის ზრდა ძირითადად ხდებოდა საათის სიხშირის თანმიმდევრული ზრდის გამო (შესრულების დაახლოებით 80% განისაზღვრა საათის სიხშირით) ერთ ჩიპზე ტრანზისტორების რაოდენობის ერთდროული ზრდით. . თუმცა, საათის სიხშირის შემდგომი ზრდა (3,8 გჰც-ზე მეტი საათის სიხშირეზე, ჩიპები უბრალოდ გადახურდება!) აწყდება უამრავ ფუნდამენტურ ფიზიკურ ბარიერს (რადგან ტექნოლოგიური პროცესი თითქმის მიუახლოვდა ატომის ზომას: , და სილიციუმის ატომის ზომა არის დაახლოებით 0,543 ნმ):

პირველ რიგში, როგორც კრისტალების ზომა მცირდება და საათის სიხშირე იზრდება, იზრდება ტრანზისტორების გაჟონვის დენი. ეს იწვევს ენერგიის მოხმარების გაზრდას და სითბოს გამოყოფის გაზრდას;

მეორე, უფრო მაღალი საათის სიჩქარის სარგებელი ნაწილობრივ უარყოფილია მეხსიერების წვდომის შეყოვნებით, რადგან მეხსიერებაში წვდომის დრო არ შეესაბამება საათის სიჩქარის ზრდას;

მესამე, ზოგიერთი აპლიკაციისთვის, ტრადიციული სერიული არქიტექტურები არაეფექტური ხდება, როდესაც საათის სიჩქარე იზრდება ეგრეთ წოდებული „ფონ ნეუმანის ბოთლის“ გამო, შესრულების შეზღუდვა, რომელიც გამოწვეულია თანმიმდევრული გამოთვლის ნაკადით. ამავდროულად, რეზისტენტულ-კონდენსტაციური სიგნალის გადაცემის შეფერხებები იზრდება, რაც დამატებითი შეფერხებაა, რომელიც დაკავშირებულია საათის სიხშირის ზრდასთან.

განვითარება GPU

ამის პარალელურად იყო (და არის!) განვითარებაც GPU:

2008 წლის ნოემბერი – ინტელიგააცნო 4 ბირთვიანი ხაზი Intel Core i7, რომლებიც დაფუძნებულია ახალი თაობის მიკროარქიტექტურაზე ნეჰალემ. პროცესორები მუშაობენ 2.6-3.2 გჰც სიხშირით. დამზადებულია 45 ნმ პროცესის ტექნოლოგიის გამოყენებით.

2008 წლის დეკემბერი - დაიწყო 4 ბირთვიანი მიწოდება AMD Phenom II 940(კოდური სახელი - დენებმა). მუშაობს 3 გჰც სიხშირეზე, წარმოებული 45 ნმ პროცესის ტექნოლოგიის გამოყენებით.

2009 წლის მაისი – კომპანია AMDგააცნო GPU ვერსია ATI Radeon HD 4890ძირითადი საათის სიჩქარე გაიზარდა 850 MHz-დან 1 GHz-მდე. ეს პირველია გრაფიკულიპროცესორი მუშაობს 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™არის ერთადერთი განვითარების გარემო პროგრამირების ენაში C, რომელიც დეველოპერებს საშუალებას აძლევს შექმნან პროგრამული უზრუნველყოფა, რომელიც აგვარებს კომპლექსურ გამოთვლით პრობლემებს ნაკლებ დროში, GPU-ების დამუშავების სიმძლავრის წყალობით. მილიონობით ადამიანი უკვე მუშაობს მსოფლიოში GPUმხარდაჭერით CUDA, და ათასობით პროგრამისტი უკვე იყენებს (უფასო!) ინსტრუმენტებს CUDAდააჩქაროს აპლიკაციები და გადაჭრას ყველაზე რთული, რესურსზე ინტენსიური ამოცანები - ვიდეო და აუდიო კოდირებიდან ნავთობისა და გაზის ძიებამდე, პროდუქტის მოდელირებამდე, სამედიცინო ვიზუალიზაციამდე და სამეცნიერო კვლევამდე.

CUDAაძლევს დეველოპერს შესაძლებლობას, საკუთარი შეხედულებისამებრ, მოაწყოს წვდომა გრაფიკული ამაჩქარებლის ინსტრუქციების კომპლექტზე და მართოს მისი მეხსიერება და მოაწყოს მასზე რთული პარალელური გამოთვლები. გრაფიკული ამაჩქარებლის მხარდაჭერა CUDAხდება ძლიერი პროგრამირებადი ღია არქიტექტურა, დღევანდელის მსგავსი. ეს ყველაფერი უზრუნველყოფს დეველოპერს დაბალი დონის, განაწილებულ და მაღალსიჩქარიან წვდომას აპარატურაზე CUDAაუცილებელი საფუძველი სერიოზული მაღალი დონის ინსტრუმენტების შესაქმნელად, როგორიცაა შემდგენელები, გამართვები, მათემატიკური ბიბლიოთეკები და პროგრამული პლატფორმები.

ურალსკი, წამყვანი ტექნოლოგიების სპეციალისტი NVIDIA, შედარება GPUდა , ამბობს ასე: - ეს ჯიპია. ის მართავს ყოველთვის და ყველგან, მაგრამ არც ისე სწრაფად. ა GPU- ეს არის სპორტული მანქანა. ცუდ გზაზე ის უბრალოდ არსად წავა, მაგრამ კარგ ზედაპირს მისცემს და აჩვენებს მთელ თავის სიჩქარეს, რაზეც ჯიპს არც კი უოცნებია!...“

ტექნოლოგიური შესაძლებლობები CUDA