Hi-Tech → Рендеринг 3D сцен на PS3 под Linux, и немного о CUDA
Сразу оговорюсь, я не занимаюсь 3D визуализацией. У меня есть Библия 3DMax, и я иногда балуюсь, рисуя интерьер комнат или забавных пушистых животных, но мой уровень познаний рендеринга настолько низок, что я могу лишишь тыкать на кнопки, выполняя инструкции согласно книжке или статьям в интернете.
Но сегодня меня посетила мысль - а возможен ли рендеринг 3D сцен на игровой приставке Sony PlayStation 3? Ведь данная приставка снабжена сверх-мощным Cell-процессором.
*****
Инженеры компаний IBM и Sony совместно разработали эксклюзивный многоядерный процессор Cell BE, работающий на частоте 3,2 ГГц. Основной блок (PPE) основан на процессоре PowerPC от IBM и имеет восемь синергических ядер (SPE). PPE имеет 512 Кб кэша второго уровня L2 и один блок векторных вычислений VMX (AltiVec). Каждое из 8-ми SPE-ядер — это RISC-процессор со 128-битными SIMD и суперскаллярными функциями. Синергические ядра имеют по 256 Кб программно-адресуемой SRAM-памяти.
Рабочими являются только семь ядер, восьмое — дополнительное и предназначено для улучшения производительности путём распределения мощности между остальными ядрами. Если одно из восьми ядер получит дефект при производстве, то оно может быть отключёно без необходимости объявления дефектности всего процессора.
А в недавно вышедшей PS3 Slim процессор был переведён на технологию 45нм, что позволило снизить энергопотребление на 40% и уменьшить площадь кристалла на 34%. Sony заявила, что новый процессор стал ещё мощнее, но не уточнила, имеет ли она ввиду удельную мощность на ватт энергопотребления или чистую мощность, которая сказалась бы на производительности в вычислениях.
Так или иначе, заявленная производительность процессора Sony PS3 - 250 Gflops, в то время как система на базе AMD Athlon 64 X2 4200+ имеет производительность всего-лишь около 18 Gflops
Как известно, Sony PS3 совместима с Linux (Yellow Dog), а под Линукс есть довольно большое количество рендеров: Maxwell render, Blender, Pov-Ray, Lux Render, но энтузиасты не смогли подключить все ядра, из-за чего процесс рендеринга не сильно превзошел таковой под Windows :(
Есть и еще кое-что...
1. Люди умеют заставлять работать несколько процессоров (не ядер, а именно процессоров!) PS3. Например здесь умудрились объединить 3 шт. PS3 по гигабитной сети и получили трассировку лучей в реальном времени. http://eric_rollins.home.mindspring.com/ray/ray.html
2. MentalRay поддерживает процессор Cell
3. Сетевой рендер под привычные операционки и с привычными рендерами существует, и люди спокойно задействуют десятки компьютеров в сети для быстрого решения задач по рендерингу той или иной сцены. Строят также "Фермы", - многопроцессорные компьютеры, объединённые в одну общую систему, предназначенную для рендеринга сложных сцен, анимаций и т.п.
4. Операционная система PS3 равно как и само ядро Linux совершенствуются, так например поддержка процессора Cell в Linux началась с ядра 2.6.18, а на данный момент имеется уже версия 2.6.31.
Все эти факты дают надежду, что когда-нибудь огромная мощность приставки заменит дорогостоящие фермы и системы для сетевого рендеринга. Ведь стоимость приставки в несколько раз ниже чем двухпроцессорный компьютер, не говоря уже о четырёхъядерниках Intel Core Quad и им подобных.
Судя по всему, тем подразделениям компаний INTEL и AMD, которые занимаются выпуском процессоров для рядовых потребителей, абсолютно невыгодно выпускать такие разрывные технологии на общественное поле - гораздо выгоднее с циклом в пол-года "выстреливать" процессорами, по мощности максимум на 10% превосходящими предыдущих собратьев. А интересные технологии приберечь для лучших времён, ато и вовсе заморозить.
Этим я также объясняю и тот факт, что старички "Xbox 360" и "PS3" до сих пор без проблем справляются с Next-Gen играми в FullHD, не позволяя себе никаких тормозов, в то время как для даже самого современного компьютера каждая игра становится тяжелым испытанием, требующим апгрэйда. А ведь в Xbox 360 прячется видеокарта уровня GeForce 7600, а в PS3 и того слабее.
И, заканчивая свою статью ни о чём, хотел бы отметить технологию CUDA, заложенную в новых графических чипах NVIDIA.
Технология CUDA - это среда разработки на Си, которая позволяет программистам и разработчикам писать программное обеспечение для решения сложных вычислительных задач за меньшее время благодаря многоядерной вычислительной мощности графических процессоров. Проще говоря, графическая подсистема компьютера с поддержкой CUDA может быть использована, как вычислительная, а ещё проще говоря, CUDA - это система, переносящая нагрузку с проца на видеокарту.
Так, например MathCad, 3DMax (VRay) и Maya (Furry Ball) уже вовсю используют эту технологию, что очень значительно улучшило производительность систем рендеринга.
Вот демонстрация:
Furry Ball - GPU Рендер для Maya - ВИДЕО
Chaos Group V-Ray RT GPU Rendering Demo - Демка SIGGRAPH 2009
У НВидиа тоже есть собственный рендер с использованием видяхи: Nvidia Render