PMG

Форумы по созданию игр
Текущее время: 20 апр 2024 00:49

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Использование GPU для проведения параллельных вычислений
СообщениеДобавлено: 18 сен 2007 17:44 
Не в сети
Новичок

Зарегистрирован: 18 сен 2007 14:14
Сообщения: 2
Добрый день, Уважаемые Господа!

Перед мной стоит задача задействовать ресурсы графического процессора для проведения параллельных вычислений.

Решается задача, требующая очень большого количества массивных вычислений.

На данный момент существует программа, которая позволяет:

- распараллеливать проведение расчетов на ПРОИЗВОЛЬНОЕ количество процессов

- запускать эти процессы на разных ядрах CPU с целью увеличения производительности вычислений

- запускать эти процессы на удаленных машинах используя MPI-механизм с автоматической балансировкой нагрузки в зависимости от организации сети (гетерогенная или гомогенная), в зависимости от загруженности сети, трафика и т.п.

ОПЫТНЫМ СПОСОБОМ проверено, что узким местом являеются именно вычислительные ресурсы.

Внутрисетевые траффик-трэкеры показывают, что сетка загружена только на треть ее пропускной способности, при том, что процы на машинах загружены под завязку.

Примерно та же самая ситуация с нагрузкой на системную шину при использовании многоядерной машины при 100% загруженности процов.

Очевидно, что использование современных многопоточных GPU может позволить получить выигрыш в скорости вычислений по сравнению даже с многоядерными CPU и сетевыми вычислениями.

Для решения этой задачи, по всей видимости, мне нужно будет создание программы-конвертера, которая

- работала бы в фоновом режиме, во время работы расчетной программы

- позволяла бы осуществлять перехватывание команд между расчетной программой и CPU

- перенаправляла бы вычисления из CPU в GPU.

ПОЭТОМУ, МНЕ ХОТЕЛОСЬ БЫ УЗНАТЬ ВАШЕ МНЕНИЕ ПО ПОВОДУ СПОСОБОВ РЕШЕНИЯ ЭТОЙ ЗАДАЧИ!!!

Сложность заключается в том, что все это нужно мне сделать БЕЗ МОДИФИКАЦИИ ИСХОДНОГО ТЕКСТА ПРОГРАММЫ из-за дого, что ее разработчика уже нет (уехал) и найти его НЕ ВОЗМОЖНО.

Исходный текст программы пропал вместе со сгоревшим HDD, на котором велась разработка.

Мне поставили задачу реанимировать проект.

В программе происходит расчет кинентики химических реакций многокомпонентных смесей.

Тематика велась на протяжении нескольких ДЕСЯТКОВ лет с советских времен и написать сейчас с нуля то же самое просто невозможно.

В наследство мне досталось некоторое подобие кластрера из нескольких машин, где денно и ночно крутятся вычислительные задачи.

С каждым годом, химический состав рассчитываемых смесей усложняется.

Это ведет за собой рост вычислительных затрат в 100, 1000 и более раз.

Поэтому экстенсивный рост производительности путем наращивания количества компов в кластере настолько увеличивает накладные расходы на выполнение работ по расчетам, что они становятся не выгодными.

Мне кажется, что наиболее эффективным способом решения этой проблемы является задействование ресурсов GPU с помощью использования ШЕЙДЕРОВ на языке их описания OpenGL Shading Language (GLSL).

Таким образом, скажем для видеокарты NVIDIA GeForce 8800 вычисления можно разделить на 128 обособленных, совершенно самостоятельных потоковых процессоров с тактовой частотой до 1,35 ГГц.

В синтаксисе GLSL существуют возможность выполнять в GPU такие же никоуровневые команды как и в ассемблере для CPU (ADD, SUB и т.д.).

Значит, нужно в «прозрачном» режиме для каждого из запущенных процессов просто перенаправлять на исполнение команды из CPU в GPU.

Таким образом, необходимо решить 2 следующие задачи:

1. Найти способ перехватывания инструкций между расчетной программой и CPU для каждого из запущенных процессов.

2. Найти способ перенаправлять вычисления из CPU в GPU и в обратную сторону.

Прошу высказать ваше мнение о том, какие способы можно использовать для решения описанной выше задачи, и подробно описать возможные методы решения.

Заранее благодарен всем за дельные советы, Triton.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 сен 2007 09:56 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Узкое место будет передача данных из CPU в GPU и обратно. Так как в GPU попадают только текстуры и вершины, а не произвольные данные.

Проще наверное было бы найти плату для ускорения вычислений с плавающей запятой.

Если исходный код сгорел, то это пол беды, главное чтобы осталась постановка задачи... ее алгоритмы.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 сен 2007 11:15 
Не в сети
Новичок

Зарегистрирован: 18 сен 2007 14:14
Сообщения: 2
Сергей!

Не могли бы вы подсказать, кто производит платы для ускорения вычислений с плавающей точкой, плз!

Какие существуют особенности их использования?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 сен 2007 13:26 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Вот например:
http://www.clearspeed.com/
http://www.ixbt.com/news/all/index.shtml?08/53/45
http://www.parallel.ru/

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB