Кіріспе

Параллель рендеринг (немесе таратылған рендеринг) – компьютерлік графиканың есептеу саласына параллель бағдарламалауды қолдану. Күрделі көріністерді рендерингтеу, ғылыми визуализация, медициналық визуализация, CAD қолданбалары және жасанды шындық сияқты салаларда зор есептеу ресурстарын қажет етеді. Соңғы зерттеулер параллель рендерингті мобильді ойындарда қуат тұтынуды азайту және графикалық сапаны арттыру үшін де қолдануға болатынын көрсетіп отыр. Рендеринг – пиксельдер, нысандар, кадрлар сияқты бірнеше сала бойынша өте оңай параллельдеуге болатын есеп, сондықтан осы мәселе көп зерттеулерге арналған.

Жұмыс жүктемесінің үлестірілуі

Параллель рендерингті қолданудың екі, көбінесе қарама-қарсы себебі бар. Өнімділік масштабы кадрларды жылдамырақ рендерингтеуге мүмкіндік береді, ал деректер масштабы үлкен деректер жиынтықтарын визуализациялауға мүмкіндік береді. Жұмыс жүктемесін бөлудің әртүрлі әдістері көбінесе бір типті масштабтауға екіншісінен артық көңіл бөледі. Сонымен қатар, жайылмалылық (latency) және жүктемені теңдестіру сияқты басқа да артықшылықтары мен кемшіліктері болуы мүмкін. Примитивтерді таратудың үш негізгі тәсілі – толық кадрлар, пиксельдер немесе нысандар (мысалы, үшбұрышты торлар).

Фреймді бөлу

Әрбір өңдеу блогы кадрдың толық көрінісін әртүрлі бұрыштан немесе уақыт сәтінен шығара алады. Әртүрлі бұрыштардан шығарылған кадрлар антиалиазинг арқылы кескін сапасын жақсартады немесе тереңдік эффектісі және үш өлшемді дисплей шығысы сияқты әсерлерді қосады. Бұл тәсіл жақсы өнімділіктің артуын қамтамасыз етеді, бірақ деректердің артуын емес. Бір-бірінен кейін келетін кадрларды параллель түрде рендерингтегенде, интерактивті сессияларда кешігу пайда болады. Пайдаланушының енгізгені мен көрсетіліп жатқан әрекет арасындағы кешігу, параллель рендерингтелген тізбекті кадрлар санына пропорционалды.

Пикселдер үлестірімі

Экран кеңістігіндегі пиксельдер жиынтығы процессорлық бірліктер арасында көбінесе "сұрыптап рендеринг" деп аталатын тәсілмен таратылуы мүмкін. Пиксельдердің кезектік сызықтарын тарату жүктемені жақсы теңестіреді, бірақ деректерді масштабтауға болмайды. Бір-біріне тікелей жанасқан 2D пиксельдік тілімдерді тарату деректерді көру пирамидасымен (frustum) іріктеу арқылы масштабтауға мүмкіндік береді. Дегенмен, пирамида шекараларындағы объектілердің деректері көшіріліп алынуы мүмкін, сондай-ақ көрініс нүктесі өзгергенде деректер динамикалық түрде жүктелуі керек. Өнімділіктің масштабталуын сақтау үшін динамикалық жүктемені теңестіру де қажет.

Нысанның таралуы

Объектілерді өңдеу бірліктері арасында бөлу көбінесе соңғы рендеринг деп аталады. Ол жақсы деректерді масштабтауды қамтамасыз етеді және жақсы өнімділікті масштабтауға мүмкіндік береді, бірақ соңғы суретті жасау үшін өңдеу түйіндерінен алынған аралық суреттерді альфа-қосылу арқылы біріктіруді қажет етеді. Сурет ажыратымдылығы артқан сайын, альфа-қосылуға жұмсалатын еңбек те артады. Көрініс жағдайларына қарамастан, өнімділікті сақтау үшін жүктемені теңгерту схемасы да қажет. Бұл объектілер кеңістігін артық бөліп, әр өңдеу бірлігіне бірнеше бөлікті кездейсоқ түрде тағайындау арқылы жүзеге асырылуы мүмкін, бірақ бұл соңғы суретті жасау үшін қажетті альфа-қосылу кезеңдерінің санын арттырады. Тағы бір мүмкіндік – әр өңдеу бірлігіне тікелей бөлікті тағайындап, оны динамикалық түрде жаңарту, бірақ бұл динамикалық деректерді жүктеуді талап етеді.

Гибридті тарату

Таратудың әртүрлі түрлерін әр түрлі жолдармен біріктіруге болады. Бірнеше тізбектелген кадрларды параллельде көрсетуге болады, сонымен қатар пикселдік немесе объектілік таратуды пайдаланып, әрбір жеке кадрды да параллельде көрсетуге болады. Объектілік тарату экран кеңістігіндегі жабысуын азайту арқылы альфа-композициялау шығындарын төмендетуге тырысуы мүмкін, тіпті объектілік кеңістіктің бөліктерін көрсету үшін пикселдік таратуды қолдануы мүмкін.

Ашық кодты қолданбалар

Ашық кодты Chromium бағдарламалық пакеті қолданыстағы қосымшалар үшін параллель рендеринг механизмін ұсынады. Ол OpenGL шақыруларын ұстап алады және оларды өңдейді, әдетте дисплей қабырғасын басқаратын бірнеше рендеринг бірліктеріне жіберу үшін. Equalizer – көп құбырлы қосымшалар үшін ашық кодты рендерингтік құрал және ресурстарды басқару жүйесі. Equalizer ресурстық сервер арқылы орындалу кезінде конфигурацияланатын параллель, кеңейтілген визуализациялық қосымшаларды жазуға арналған API ұсынады. OpenSG – параллель рендеринг мүмкіндіктерін, әсіресе кластерлерде қамтамасыз ететін ашық кодты сахналық граф жүйесі. Ол параллель, көп жіпті және кластерлік қосымшалардың күрделілігін жасырады және алдымен сұрыптауды, сондай-ақ соңынан сұрыптауды қолдайды. Golem – қазіргі уақытта Blender-де рендерингпен жұмыс істейтін және одан әрі қолдану жоспарлары бар параллель есептеулерге арналған ашық кодты таратылған қосымша.