Форум сайта разработчиков developers.sun.ru

Существующие технологии распараллеливания вычислений

Изображение

Модератор: AlexeyShubin

Существующие технологии распараллеливания вычислений

Сообщение raindrop Чт май 29, 2008 10:11 am

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

Что мне для этого надо использовать, Java и ее потоки, или какие-то специальные библиотеки?
Какие существуют эмуляторы, которые позволят смоделировать процесс исполнения моей программы на многих процессорах?
Аватара пользователя
raindrop
 
Сообщения: 714
Зарегистрирован: Вт май 06, 2008 2:25 pm

Re: Существующие технологии распараллеливания вычислений

Сообщение AlexeyShubin Чт май 29, 2008 10:33 am

raindrop писал(а):Вот я например хочу написать алгоритм для умножения матриц, чтобы каждое умножение строки на столбец выполнялось в отдельном потоке и на отдельном процессоре.

Что мне для этого надо использовать, Java и ее потоки, или какие-то специальные библиотеки?
Какие существуют эмуляторы, которые позволят смоделировать процесс исполнения моей программы на многих процессорах?


Для начала нужно написать такой алгоритм где умножение строки на столбец является абсолютно независимой часть (функцией) :-) Не на каком-то языке а просто в голове или в блок-схемах ;-) А потом уже в зависимости от требований проекта выбирать платформу для реализации. Ну например, первое что мне в голову пришло:
- Java
- OpenMP
- posix threads
- MPI
Причем последнее позволит распараллелить процесс не только в пределах машины но и на несколько машин (если матрица ооочень большая)

Что касается эмуляторов, то я не совсем понял что имеется в виду. Зачем нужен эмулятор выполнения программы на нескольких процессорах если программирование на любой из указанных платформ можно вести та будто в машине стоит бесконечное количество процессоров? При этом фрэймворк (виртуальная машина или ОС) сам раскидает потоки на доступные процессоры (даже если их весго один.
Другое дело если хочется сэмулировать выполнение MPI программ на нескольких нодах сети имея всего одну машину, для этих целей можно взять Solaris+Zones+Crossbow
AlexeyShubin
 
Сообщения: 23
Зарегистрирован: Пт апр 25, 2008 2:52 pm

Re: Существующие технологии распараллеливания вычислений

Сообщение raindrop Чт май 29, 2008 11:38 am

Алгоритм я то как раз знаю. В качестве языка программирования хочу использовать Java.

Есть ли в Java еще какие-нибудь механизмы или библиотеки для выполнения моих функций в разных потоках. Например какой-нибудь класс типа ThreadWorker или что-то в этом духе.

Что касается эмуляторов, то я имел в виду эмуляторы для специальных серверов, таких как Sun Grid. Или на них можно просто запустить Java программу, и все само автоматически будет выполняться?
Аватара пользователя
raindrop
 
Сообщения: 714
Зарегистрирован: Вт май 06, 2008 2:25 pm

Re: Существующие технологии распараллеливания вычислений

Сообщение raindrop Чт май 29, 2008 4:48 pm

Вот наример есть The Grid Compute Server Plug-in for NetBeans IDE:
http://www.netbeans.org/kb/articles/gri ... lugin.html

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

Так что вопрос остается тотже самый. Раз такие эмуляторы существуют, то для чего-то они ведь нужны.
Аватара пользователя
raindrop
 
Сообщения: 714
Зарегистрирован: Вт май 06, 2008 2:25 pm

Re: Существующие технологии распараллеливания вычислений

Сообщение AlexeyShubin Чт май 29, 2008 5:18 pm

Ну если разговор зашел про сан грид то тогда для начала встречный вопрос.
Какая у вас целевая архитектура: SMP, MPP, NUMA... Просто и доступно про архитектуру например тут http://parallel.ru/computers/classes.html

А по поводу
"Вот наример есть The Grid Compute Server Plug-in for NetBeans IDE:
http://www.netbeans.org/kb/articles/gri ... lugin.html"

Читаем тут http://www.netbeans.org/kb/articles/gri ... lugin.html
"...In a nutshell, the Sun Grid Compute Utility is a grid of servers accessible through the Network.com portal for the affordable price of $1/CPU-hr..."

Network.com не доступен из России поэтому - интересно Вам или нет??
AlexeyShubin
 
Сообщения: 23
Зарегистрирован: Пт апр 25, 2008 2:52 pm

Re: Существующие технологии распараллеливания вычислений

Сообщение raindrop Пт май 30, 2008 4:03 pm

Спасибо за ссылки. Меня в принципе интересовало, какие архитектуры параллельных компьютеров существуют и есть ли для них доступные эмуляторы.
Аватара пользователя
raindrop
 
Сообщения: 714
Зарегистрирован: Вт май 06, 2008 2:25 pm

Re: Существующие технологии распараллеливания вычислений

Сообщение jalex_m Ср авг 20, 2008 8:04 am

raindrop писал(а):Вот я например хочу написать алгоритм для умножения матриц, чтобы каждое умножение строки на столбец выполнялось в отдельном потоке и на отдельном процессоре.

Что мне для этого надо использовать, Java и ее потоки, или какие-то специальные библиотеки?
Какие существуют эмуляторы, которые позволят смоделировать процесс исполнения моей программы на многих процессорах?


есть много различных фреймворков для создания grid систем.
GridGain (http://www.gridgain.com) сильно отличается от существующих:
- open source
- pure java
- простой в использовании

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

Можно делать и не через AOP, а напрямую работая с GridGain.
jalex_m
 
Сообщения: 1
Зарегистрирован: Ср авг 20, 2008 7:57 am

Re: Существующие технологии распараллеливания вычислений

Сообщение NickMz Пт фев 27, 2009 1:13 pm

Для реализация паттерна Master-Worker можно использовать Terracotta

http://terracotta.org/
NickMz
 
Сообщения: 1
Зарегистрирован: Пт фев 27, 2009 1:12 pm


Вернуться в Высокопроизводительные вычисления

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

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

cron