Lenta kotirovok

Some blogs or websites linked from this site may contain objectionable or uncensored content, www.mainru.com is not affiliated with these websites and makes no representations or warranties as to their content.

четверг, 18 марта 2010 г.

Нехватает вычислительных мощностей ? У нас есть ответ.


Все мы знаем что для больших задач нужны титаны, а для решения задач программирования нужны титаны вычислительных мощностей. Рано или поздно мы подходим к границе вычислительных возможностей нашего рабочего компьюетра. И как нам хочется большего: перелапачивать больше чисел, ускорить бэкфорвардное тестирование. Может попробовать суперкомпьютер? Но цены на них реальными не назовешь. Что оставалось нам в прошлом Вдыхать и мечтать, но как известно люди – беспокойные создания. И нашлись энтузиасты, приспособившие новые технология для своих «утилитарных» нужд расчетчиков.
Вообще-то специальные устройства, позволяющие превратить свой настольный компьютьер во что-то куда более быстродействующее, чем он обычно является, известны довольно давно, ещё с середины 80-х годов. Такая платка от фирмы INMOS, называвшаяся транспьютером и вставленная в ISA-слот могла дать до 20-30 полноценных MIPS, что было довольно круто для того времени. Но в дальнейшем они стали отставать от роста быстродействия обычных процессоров, и в конце-концов INMOS свернула их производство, не сумев поддержать достойную производительность. Были и есть и другие устройства подобного рода, всякого рода специализированные ускорители, часто их сфера применения чрезвычайно узкая и ограничена единственной профессиональной программой. Мало кто их видел и мало где они продаются.
Но в последнее время наметилась совершенно явная тенденция к выпуску на массовый рынок более-менее универсальных устройств, в которых стоят многоядерные процессоры с параллельными векторными вычислениями, за счёт чего достигается реальная (а не маркетинговая) пиковая производительность около 200-300 GFlops. Внушительная величина, ещё всего 6 лет назад компьютеры с подобным быстродействием входили в Top-500 суперкомпьютеров. И хотя подобное быстродействие достигается не на всех задачах и имеется ряд других ограничений, тем не менее, сфера применения достаточно широкая и практически востребованная, чтобы впечатлиться. Особенно, если использовать не одно устройство, а сразу несколько.
Реально такими устройствами являются игровая приставка Sony Playstation-3, Xbox360 и более-менее совремённые видеокарточки от NVIDIA и от AMD (бывшие ATI). Нетрудно обратить внимание, что всё это в основном предназначено для игр и только для игр. На самом деле ничего удивительного, игры, пытающиеся моделировать окружающий мир, всегда были жадными до вычислительных возможностей. «Матрица» требует много вычислений ;-) Между прочим, в черновом варианте сценария к фильму, в Матрице люди использовались не как батарейки, а как элементы вычислительной системы. Жаль, что сценарий изменили, первоначальный вариант был, по-моему, логичнее и интереснее.
В настоящее время и приставки PS3 и видеокарточки позволят проводить вычисления общего назначения, а не только играть в игры. Исключение – Xbox, Microsoft тщательно оберегает покупателя приставки от использования её не по игровому назначению. Остальные производители, кто в большей, кто в меньшей степени, не только не препятствуют проводить произвольные вычисления, но даже поощряют подобный интерес.
Хотя, всё-таки, не без ограничений. Sony не даёт напрямую воспользоваться всеми компонентами PS3, Nvidia не собирается раскрывать низкоуровневые детали взаимодействия с процессором видеоплаты, а AMD хотя выполняя обещания открыть техническую документацию по программированию своих чипов, сделала крупные шаги к раскрытию спецификаций, всё ещё довольно много ключевых документов сохраняет закрытыми.
Вычислительными возможностями видеокарточек и PS3 уже воспользовалось немало людей, вот несколько примеров таких проектов:
  • Кластер на видеокартах для астрофизических расчётов
  • Кластер на основе PS3 и тоже для астрофизических нужд
  • Рендеринг сложной трёхмерной сцены в реальном времени с помощью трёх приставок PS3
  • Использование для томографии четырёх двухпроцессорных Geforce 9800GX2 вместо суперкомпьютера за $4.6 миллиона долларов»
  • И т.д.
Во всех этих случаях были достигнуты результаты, раннее требовавшие суперкомпьютерных ресурсов и стоимости.
Кроме того, для PS3 и AMD Radeon серии 2xxx и 3xxx существует клиент для распределённых вычислений Folding@Home. В скором времени, его обещают написать и для карточек от nvidia.
Каким же образом обладатель приставки или видеокарточек может их запрограммировать для своих нужд?
Наиболее продвинутым в этом плане выглядит Sony Playstation-3, работающая на чипе Cell, производимом консорциумом из Sony, Toshiba и IBM. На сайте DevelopersWorks IBM размещено немало материалов по этому процессору и подробно объясняющих как писать для него программы, в том числе и для PS3. Хотя основное предназначение Cell не PS3, а высокопроизводительные сервера..
Для видеокарточек несколько лет назад зародилась целая технология, названная GPGPU General-Purpose computation on GPUs
Первоначально эксплуатировалась идея, что пиксельные шейдеры в видеокарточках стали очень умными и быстрыми и неплохо бы их как-то заставить рассчитывать не только изображение в играх (или CAD’ах), но и что-нибудь поинтереснее. Поначалу использовались разные извращения с OpenGL и DirectX, когда в видеокарточку под видом текстур передаются данные, а под видом шейдеров функции для их обработки. Недостатком оказывается повышенная сложность программирования и невысокая скорость обмена данными между видеокарточкой и основной системой в направлении от видеокарточки к системе. Ведь в играх, фактически нет нужды передавать данные обратно.
В настоящее время сами производители Nvidia и AMD предлагают поддержку вычислений на всех уровнях: аппаратном, сделав процессоры видеокарточек более универсальными и ускорив обмен данными, на уровне драйверов, предоставив универсальные механизмы не завязанные на OpenGL или DirectX и на пользовательском уровне, предоставив библиотеки, компиляторы и SDK с примерами программ и документацией.
У Nvidia это технология CUDA (Compute Unified Device Architecture) http://www.nvidia.com/object/cuda_home.html, доступная на чипах G80 и G92 в GeForce 8-ой серии и выше. В настоящее время, используется CUDA v1.1, но одновремённо с ожидаемым в июне этого года выпуском новых более производительных и с новыми возможностями видеокарт на чипе GT280 и GT260 (названия рабочие), выйдет и CUDA v2.0 с новыми возможностями. В частности, предполагается поддержка вещественного типа c двойной точностью (64 бит, double), пока что поддерживается только одинарная точность (32 бит, float). Версии CUDA существуют для Linux, Windows и MacOS X, как для 32-битных, так и для 64-битных систем.
Аналогичная технология и даже появившаяся немного раньше, чем у Nvidia, имеется и у AMD (ATI). Это CTM (загадочно названная Close to Metall) или AMD Stream Computing. Работает на видеокартах Radeon HD 2-ой, 3-й и выше серии. Готовые версии существуют только для 32-х и 64-х битных Windows, хотя недавно была выпущена бета-версия и для Linux. По сравнению с CUDA может быть быстрее в некоторых случаях и поддерживает 64-битный вещественный тип, хотя я встречал высказывания, что в целом программировать в рамках AMD Stream Computing немного сложнее, чем CUDA. Однако подробностей я не знаю и вообще, так вышло, в том числе и из-за плохой поддержки Linux, что моё внимание более привлекла CUDA.
Немного об аппаратном строении.
Cell в PS3. Состоит из управляющего PPE + 8 SPE.
PPE (Power Processor Element), RISC-процессор, фактически PowerPC, работающий на частоте 3.2 Ггц. Одно ядро, но с двумя конвейерами, представляющими аналог HyperThreading но, вроде бы более эффективный. Исполняет в среднем одну команду за такт и вследствие этого, общая производительность на фоне совремённых x86 процессоров скромная. Соответствует примерно 1 – 1.5 Ггц Pentium-III или Athlon. Написание программы с учётом особенностей HyperThreading может увеличить скорость работы где-то на 50%
SPE – так называемые, синергические обрабатывающие элементы. В PS3 один из восьми заблокирован с целью увеличения выхода годных изделий (Cell) и снижения себестоимости PS3. Другой – используется в гипервизоре, не пускающем обычного программиста куда с точки зрения Sony, ему не надо лезть. Например, в видеопамять (но не только). Таким образом, для обычного программиста доступен PPE и 6 SPE. SPU – представляет собой векторный процессор (SPU), объединённый с очень быстрой локальной памятью 256 Кб, у каждого SPU – своя.
G80 (в GeForce 8800)
Очень кратко, состоит из
1) 128-ми потоковых (thread) процессоров, также называющихся программируемыми пиксельными шейдерами.
Каждый такой процессор, содержит блок вычислений с плавающей запятой (FPU) и 1024 32-битных регистра.
FPU позволяет проводить вычисления только с одинарной точностью (32-битный вещественный тип float в Си)
8 потоковых процессоров объединены в кластер. Всего имеется 16 таких кластеров.
Каждый кластер имеет локальную общую память, объёмом 16 Кб, поддерживающую параллельный доступ к данным.
2) Устройства аппаратного распределения исполняемых потоков(thread), которое автоматически раскидывает
потоки по процессорам, избавляя от необходимости писать подробный управляющий код.
Максимальное количество, конкурирующих за процессоры, потоков 12288.
3) Общей памяти. 768 Мб у GeForce 8800 GTX и Ultra.
4) Текстурного кэша и так сказать обвязки,
В других картах, поддерживающих CUDA может быть другое количества процессоров, памяти и разрядность шины памяти.

Поделится

Архив блога

Котировки

Идея