4/01/2016

График тооцоолох байгууламж болон параллел тооцоолол (Богино)

Компьютерийн ухаан / Копьютер график / Өгүүлэл (хураангуй, богино хувилбар)

График тооцоолох байгууламж (Graphic processing unit / GPU), мөн визуал тооцоолох байгууламж(Visual processing unit / VPU) ч гэж нэрлэдэг. GPU нь дүрсийн буферт дүрсийг санах ойгоос бүтээж, шуурхай зохион байгуулан илгээх үүрэгтэй тооцоолох байгууламж юм. GPU нь энгийн CPU -г бодвол өндөр хурдтайгаар параллел тооцоолол хийх бүтэцтэй байдаг. Энэ нь нэг бүхэл тооцоллыг олон жижиг хэсэгт хувааж болох алгоритмуудыг ажиллуулахад илүү үр дүнтэй. Гэвч энэ нь тооцоололын хурдаар СPU -с хурдан гэсэн үг биш юм. Жишээ татвал : Бүлэг шоргоолж нийлээд том ачааг зөөхөд бэрх, том ачааг том цох хорхой ядах юмгүй зөөж чадна. Бүлэг шоргоолжинд өөрсдийн дийлэх жижиг ачаануудыг тус тусдаа өргөх нь ашигтай, харин цох хорхой жижиг ачаануудыг олон дахин зөөх нь ашиггүй. График дүрс тооцоолох үед өндөр давтамжтайгаар дэлгэцэнд гарах дүрсүүдийг цаг алдалгүй бэлэн болгох хэрэгтэй байдаг тул тооцооллыг олон жижиг хэсэгт хуваан гүйцэтгэдэг.

    CPU GPU хоёрыг харьцуулсан харьцуулалтыг авч үзье. Харьцуулалтыг хийхдээ гурван хэмжээст орчинг рендер хийжээ. CPU нь 3.4 GHz бүхий 8 цөмтэй Intel Xeon тооцоолуур. GPU нь 2688 CUDA цөмтэй өндөр хүчин чадал бүхий nvidia тооцоолуур. Рендер хийх үед GPU -н рендерлэж буй зураг эхэндээ авиа(noise) их байсан ба хугацаа өнгөрөх хэрээр авиа нь буурч тогтворжиж байсан. Авиа ихтэй зураг нь хурц хурц өнгөний шилжилтүүдтэй, “барзгар” мэт харагддаг. Авиа ихтэй байх тусам зурагны чанар мууддаг. Харьцуулалт дууссаны дараа CPU GPU хоёрын харьцуулсан зургуудыг шалгахад зургийн чанар(IQ) нь хоёул адил 11.35 гарсан байна. Гэвч CPU нийт 19 минут 11 секундэд бүрэн рендер хийж дууссан бол GPU 3 минут 4 секундэд зурагаа дуусгасан. Дээрхи харьцуулалтаас GPU нь өөрийн үндсэн үүргээ зохих ёсоор биелүүлсэнийг харж болно.
  
    Дээрхи жишээн дээр GPU 2688 CUDA цөмтэй гэж дурьдсан байна. CUDA гэдэг нь nvidia корпрациас гаргасан параллел тооцооллын платформ юм. Энэ нь C, C++, fortrain гэх програмчлалын хэлнүүдийг шууд GPU рүү хандах боломжийг олгодог. Ингэснээрээ техник хангамжтайгаа шууд харьцаж визуал-параллел програмчлал хийхэд давуу талыг олгож байгаа юм. Мөн үүнийг өөрөөр CPU -тэйгээ GPU -ээ хослуулан кластер(cluster) болгон ашиглаж болох юм. Гэхдээ кластер болгох ашиглах гэж байгаа бол зөвхөн GPU дээр ажиллуулах тооцоололоо визуал-тооцололтой адил хэмжээнд буюу маш олон жижиг хэсэгт хувааж параллелаар ажиллуулах алгоритм ашиглах нь GPU-г ашигтай байлгаж чадна.

    Орчин үеийн GPU нь Simultaneous multithreading (SMT) буюу Hyper-Threading гэх нэршилээр нь хүмүүс сайн мэддэг аргачлалыг түгээмэл ашиглах болсон. Энэ нь superscalar CPU болон техник хангамжийн давхар тооцолох боломжийг нэгтгэж бүхэлд нь үр дүнтэйгээр сайжруулсан арга юм. SMT нь бие даасан thread-үүдийг ачааллахдаа процессорын архитехтурын өгч чадах нөөцийн хэмжээг хамгийн ашигтай байдлаар ашигладаг.
  
    GPU оролт нь олон тооны жагсаалт бүхий гёометрын дүрсүүд байдаг. Ерөнхийдөө 3D ертөнцийн координатад байрших гурвалжнууд юм. Олон шат дамжлагийг дамжсаны эцэст дүрс shade, mapping хийгдэж дэлгэцэнд гардаг.
1. Оройн цэгийн үйлдэл : Энэ нь оройн цэгүүдийг хооронд нь холбож дүрсийн үндсэн араг ясыг бүтээж, дэлгэцэнд тодорхой зай эзлэх үйл явц юм. Дүрс бүр хоорондоо оройн цэгүүдээрээ холбогдох ёстой ба нэгэн зэрэг мянга мянган цэгүүд хоорондоо холбогдох учир энэ бүгд зэрэг праллел байдлаар хийгдэнэ.
2. Анхдагч нэгтгэл : Холбогдсон оройн цэгүүдийг дүрс болгон нэгтгэх үйл явц.
3. Растержуулалт : Пикселийн хэмжээнд нэг дүрс нөгөөгөө хааж байрлах зэргийг тооцоолж. Дүрсүүдийг өнгөөр ялгаж өгдөг.
4. Задлах үйлдэл : Өнгөний мэдээллийг ашиглан боломжит дүрсүүдүүдэд санах ойгоос текстуруудыг авчирч дүрсийн гадаргуутай хамт нэгтгэдэг. Энэ үйлдэл мөн праллел байна.
5. Хослуулалт : Бүх үйлдүүдийг нэгтгэж эцсийн дүрсийг үүсгэн пиксел бүр дээр тохирох өнгийг онооно.

    Одоогийн байдлаар хамгийн хүчтэй GPU бүхий комьютеруудыг анимейшн болон кино студиуд ашиглаж байна. Бидний сайн мэдэх DreamWorks студи Rise of the Guardians киног хийхдээ 32 GB RAM, 160 GB SSD boot drive, 500 GB өгөгдөл хадгалах drive болон nvidia Quardo 5000 GPU(Энэ GPU нь 352 цөмтэй) гэсэн тоноглол бүхий комьютер ашиглаж байсан. Харин аниматоруудын хувьд 92GB RAM тай компьютерууд ашиглаж байсан. Ойролцоогоор тэдний гаргасан нэг анимейшнд 270 тэрбум пиксел агуулагдаж байдаг байна. Киноны  файлууд нь 250 TB хэмжээ эзэлнэ.

Ашигласан материал / Эх сурвалжууд :
2 comments :

2 comments :

  1. Сайн байна уу. Гоё нийтлэл байна. Би КУДА Фортранаар (CUDA Fortran - дээр Fortrain гээд i үсэг илүүдээд орчихож) параллель тооцоолол хийж эхлээд байгаа юм. Энэ талаар зөвлөлдөж болох болов уу? GPU талаас нь.

    ReplyDelete
    Replies
    1. Бололгүй яахав сонирхолтой сонсогдож байна. lupino.liberty@gmail.com хаягруу шуудан бичиж холбогдоорой :D

      Delete