PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 19 сен 19 16:16

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Средства Win32 API
СообщениеДобавлено: 17 окт 04 17:24 
Не в сети

Зарегистрирован: 2 сен 04 18:40
Сообщения: 4
Откуда: Ставропольский государственный университет
Вот и меня коснулась тема параллельных вычислений.
Исходные данные: тема диплома "Языки программирования, ориентирванные на параллельные вычисления" и компьютерная аудитория с установленной Windows XP на машинах.
С теорией не проблема. Проблема с выбором языка для практического задания. Почитал в форуме, что вроде есть MPI под винды. Но мне кажется, что будет быстрее работать, если всё сделать средствами WinAPI. На многочисленные эксперименты и переделывания времени не хватит, надо выбрать что-то одно.
Может кто знает, как устроено MPI, что он использует? Если это просто надстройка, которую используют для переносимости, то лучше выбрать WinAPI. А если там уже есть какие-нибудь готовые вещи, которые самому сделать проблематично, то MPI.
Посоветуйте.
P.S. Сразу второй вопрос: так как я новичок в этом деле, то какая задача может подойти для решения (на уровне диплома)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 окт 04 12:21 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
MPI - это стандарт библиотеки обмена сообщениями. Как она будет реализована - не оговорено. Большинство реализаций довольно быстрые и снимают массу проблем. Лично я не стал бы писать свои методы общения параллельных процессов на WinAPI, т.к. выигрыш будет минимален, а затраты существенны... Хотя, от задачи зависит.
Посмотреть как оно устроено можно на parallel.ru в разделе учебных материалов - там есть краткий курс, где обзорно MPI описан.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Средства Win32 API
СообщениеДобавлено: 18 окт 04 12:51 
Не в сети

Зарегистрирован: 18 ноя 02 16:40
Сообщения: 168
Откуда: Москва
Nuzhny писал(а):
тема диплома "Языки программирования, ориентирванные на параллельные вычисления"

MPI и Win32 API не являются языками программирования. Если тема диплома сформулирована правильно, то лучше посмотреть в сторону http://parallel.ru/tech/tech_dev/par_lang.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 окт 04 22:02 
Не в сети

Зарегистрирован: 2 сен 04 18:40
Сообщения: 4
Откуда: Ставропольский государственный университет
Цитата:
MPI и Win32 API не являются языками программирования. Если тема диплома сформулирована правильно, то лучше посмотреть в сторону http://parallel.ru/tech/tech_dev/par_lang.html

Вы правы. Тема диплома предполагает именно это. В теории и будут описано что-то подобное. Но есть ещё практика. Дело в том, что я работаю программистом под Windows. И мне не очень хочется учить какой-то язык, который скорее всего никогда мне не понадобится.
Ведь можно написать программу на честном С++, которая будет делать всё, что надо. Будет ли это отклонением от темы вопрос другой. ИМХО, главное, чтобы была поставлена корректная вычислительная задача.
С другой стороны: что такое язык программирования, ориентированный на что-то. Это значит, что в нём естественным образом реализованы средства для работы с этим самым. Либо это будут дополнительные библиотеки, либо расширение синтаксиса языка.
Т.е. если взять параллельные вычисления, то, беря в качестве дополнительных библиотек средства WinAPI (или MPI), можно утверждать, что данное расширение языка С++ ориентировано на эти самые параллельные вычисления.
Или я не прав?


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

Зарегистрирован: 19 окт 04 11:21
Сообщения: 197
Все правильно. Если Вы не будете решать "тяжелые задачи", на которые заточено MPI, не будете использовать кластеры для своих параллельных задач (ни в дипломе, ни в будущей свое работе), то ни MPI, ни языки, о которых можно прочитать по ссылке, скорее всего, Вам не понадобятся. (Да и сам MPI под Windows еще нужно и найти и освоить.) Но, тем не менее, параллельно программировать можно и если у Вас есть интерес к этому, то Вы будете параллельно программировать даже под Windows. Другое дело как?
Первое. Стандартно. Используя потоки, нити и все что с ними связано. Ищете под это задачу и делаете диплом.
Да, о задаче. Параллельно программировать - не обязательно глубого вникать в сложные математические проблемы. В параллельном программировании своя математика. Есть, например, очень часто используемая модель параллельных вычислений - сеть Петри. Сейчас она активно продвигается в рамках UML. В рамках ее можно взять известную параллельную задачу - типа философов Дейкстры, стрелков Майхилла и т.п. Можно придумать и свою параллельную задачу - управление светофором, лифтом, микроволновой печкой (т.е. то, что ближе к реальной жизни, чем расчет погоды, расчет плазмы и т.п.) И вокруг этого строите диплом.
Реализация, естественно, в рамках Windows. Но в этом случае Вам нужно будет не только иметь модель решения (часто она уже есть в форме той же сети Петри), но и решить, как ее реализовать средствами Windows и на С++. Здесь могут быть проблемы, но все решаемо. По крайней мере, разберетесь с параллельными моделями, их применением и с проблемами их реализации обычными параллельными средствами/механизмами Windows.
Еще один путь. Взять параллельную модель, которая уже имеет простую и эффективную реализацию в Windows и на C++. Здесь тоже есть варианты. Один из них представлен на сайте SoftCraft библиотекой FSA. Модель параллельных вычислений - множество конечных автоматов (близко также современной UML). На сайте имеются готовые решения самых разных задач. Их можно немножко модифицировать под себя. В данном случае Вам нужно будет знать только C++, формальную модель и ее реализацию (это проще, чем разбираться в параллельных механизмах Windows).
Понятно, что я агитирую за последнее. Но если Вы хотите действительно разобраться, а потом еще и применять параллелизм в реальной обычной работе (кластеры все же не на каждом столе), то тут, я думаю, есть смысл поработать и самому над дипломом;)

Короче. Зайдите на сайт SoftCraft в раздел Автоматы в подраздел КА-технологию (http://www.softcraft.ru/auto.shtml#ka). И дальше решайте - использовать ли ;) Если решитесь, то помогу. Естественно практическими советами, а не готовым дипломом. С С++, Windows, теорией, выбором параллельных примеров - проблем не будет. "Окружение" диплома - за Вами. ;)

_________________
Лучшее - враг хорошего?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 окт 04 0:58 
Цитата:
Короче. Зайдите на сайт SoftCraft в раздел Автоматы в подраздел КА-технологию (http://www.softcraft.ru/auto.shtml#ka). И дальше решайте - использовать ли

Это что-то весьма необычное. Я прочитал далеко не всё, что там было только несколько статей. Не могу сказать что очень понравилось. Кстати, в основном рекомендованном мне пособии "Параллельные вычисления" Воеводиных о подобном упоминаний я не нашёл. Правда успел прочитать всего пять глав, но в содержании тоже КА не видно.

Когда я брал эту тему, задача представлялась мне примерно так: в WinAPI есть средства для организации многопоточных приложений, для сетевого взаимодействия. Это основное. Главные недостатоки - сложность при изучении и непереносимость. Второй недостаток кажется не таким уж важным ввиду отсутствия альтернативной ОС. Первый вполне решаемый. Достоинство - всё осуществляется на достаточно низком уровне, т.е. гибкость и контролируемость.

То, что я прочитал в "Параллельных вычислениях" про MPI, делает привлекательной эту технологию. Достоинство - переносимость. Недостаток - никто из знакомых не знает что такое MPI. Поначалу это довольно значимый минус. Ну и гибкость несколько теряется.

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


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 окт 04 1:01 
Не в сети

Зарегистрирован: 2 сен 04 18:40
Сообщения: 4
Откуда: Ставропольский государственный университет
Забыл залогиниться. Последнее сообщение от меня.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ЭТО стоит того!
СообщениеДобавлено: 20 окт 04 10:32 
Не в сети

Зарегистрирован: 19 окт 04 11:21
Сообщения: 197
Anonymous писал(а):
Это что-то весьма необычное. Я прочитал далеко не всё, что там было только несколько статей. Не могу сказать что очень понравилось. Кстати, в основном рекомендованном мне пособии "Параллельные вычисления" Воеводиных о подобном упоминаний я не нашёл. Правда успел прочитать всего пять глав, но в содержании тоже КА не видно.

Можете не искать… Но необычного в этом ничего нет. Как в том, что нет КА в упомянутой книге, и в том, что КА были, а в последнее время вновь стали объектом пристального внимания к ним. Первое – это существующая «традиция». Второе, - я упоминал уже выше UML. Это модная тема, о которой нынче говорят на каждом углу. Но, наверное, не потому только, что это очень уж модно? В справочнике по UML (Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. – СПб.: Питер, 2002. – 656 с.) 6-я глава так и называется «Представление в виде конечного автомата». Тоже – не с потолка? Хотя, надо признать, UML – это больше идеология сетей Петри. Но, во-первых, потому, что UML позиционируется (модное слово) как язык моделирования, а, во-вторых, это … отдельная тема (о сетях Петри, автоматах и т.п.).
Anonymous писал(а):

Когда я брал эту тему, задача представлялась мне примерно так: в WinAPI есть средства для организации многопоточных приложений, для сетевого взаимодействия. Это основное. Главные недостатоки - сложность при изучении и непереносимость. Второй недостаток кажется не таким уж важным ввиду отсутствия альтернативной ОС. Первый вполне решаемый. Достоинство - всё осуществляется на достаточно низком уровне, т.е. гибкость и контролируемость.

Это представление, так сказать, «на коленке». С автоматами остается и гибкость и контролируемость. Причем, хочу заметить, используя нити, потоки и т.п. механизмы Windows Вы контролируемость на самом деле потеряете. Отладка многопоточных приложений – непростая вещь. Отладка параллельных процессов в FSA – в рамках стандартных средств С++ (Visual). Абсолютно ни каких проблем!
Anonymous писал(а):

То, что я прочитал в "Параллельных вычислениях" про MPI, делает привлекательной эту технологию. Достоинство - переносимость. Недостаток - никто из знакомых не знает что такое MPI. Поначалу это довольно значимый минус. Ну и гибкость несколько теряется.

А может потому и не знают, что проблемы с переносимостью? ;) Мне бы было интересно сравнить решения в FSA с MPI-шными. Но, во-первых, не могу найти MPI под Windows (кто-то и где-то, говорят, использует, но как-то наши дороги не пересекаются), во-вторых, даже те простые для автоматов задачи почему-то не решаются специалистами в рамках MPI. Даже здесь на сайте я предлагал. Тихо. Это к вопросу простоты и легкости MPI. И дело, думаю, не в самом MPI. Это не язык. Дело в языках, в которые он встроен. Но строго, даже и не в языках, а в той модели вычислений языков. Она обычно последовательная. Нужна параллельная. С++ плюс FSA – это параллельный С++. С преимуществами С++ и преимуществами параллельной автоматной модели.
Ну а гибкость автоматной модели – демонстрируют решения, приведенные на сайте. Можно привести и другие «универсальные» и «гибкие» примеры. В других технологиях (не КА-технология), но тоже автоматные (может, только не такие параллельные :)
Anonymous писал(а):

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

Это «на первый». Мы думаем и смотрим с тех позиций и на том языке, которому нас научили. Учат последовательному и неавтоматному. Но со временем взгляды меняют. Сейчас именно такое время. Как минимум в недалеком будущем и взгляды и языки станут параллельными. Автоматными ли – время покажет. Но то, что параллельными – точно. Я же со своего «взгляда» альтернативы автоматам пока не вижу. Многопоточность – интуитивная и абсолютно «ненаучная» модель, сети Петри – сложны и вероятности. Автоматы – строгая теория (параллельная!), наглядность, простота, детерминированность и т.д. и т.п. Что еще надо! Надо одно – подкорректировать «первый взгляд». Дальше будет проще. Дети долго учатся говорить, потом – не остановить ;).
Anonymous писал(а):

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

Можно говорить и о «бинарном коде». Только «бинарнее» С++, думаю, мало языков ;)
Ну а то, что автоматы стоят того – это говорю не только я. Этому посвящено уже несметное число книг, статей… И не только в программировании. В программировании автоматы как раз только завоевывают подобающее им место (это помимо трансляторов, теории языков программирования, где без них - ни шагу).
Поэтому неделя – это, конечно, для такой обширной темы, как конечные автоматы, -оптимистично ;)
Тем не менее, ЭТО стоит того. Пусть это звучит не очень объективно от лица того, кто этому посветил множество недель (несколько сотен минимум ;). Но хотя бы «на пальцах» и хотя бы «неделю». ЭТО, поверьте, время не будет потраченное даром.
MPI - не было, MPI – есть, MPI – какое-то время еще будет. Но MPI уйдет, поскольку это не модель вычислений, не язык программирования, а средство коммуникации между параллельными процессами (немного – планирование). А вот автоматы были до MPI и будут после MPI. Поскольку это фундаментальная модель, имеющая большую и серьезную теорию. Главное, что есть большой опыт их применения во многих областях. И этот опыт и эта теория – не есть что-то застывшее.
Надеюсь, что я Вас не очень запугал «массивностью» информации по КА? ;) По крайней мере освоить FSA, имея самое общее представление об автоматах, при знании С++ и среды Visual – вполне реально. Будут вопросы – обращайтесь. Помогу, как смогу.

_________________
Лучшее - враг хорошего?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 окт 04 10:44 
Не в сети

Зарегистрирован: 19 окт 04 11:21
Сообщения: 197
Да, чтобы не показалось, что я так уж против MPI;) UML, кстати, думаю будет не столь же вечен. Тем более, что противоречий там полно. Но только не по вине автоматов ;)
Кроме того, ничто не мешает при такой уж нужде применять и MPI и что-то еще (многопоточность, например) в рамках связки С++ и FSA. Но гибкость и контролируемость, да и "бинарную эффективность" мы при этом существенно можем потерять...

_________________
Лучшее - враг хорошего?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 окт 04 9:56 
Не в сети

Зарегистрирован: 2 сен 04 18:40
Сообщения: 4
Откуда: Ставропольский государственный университет
Уф, сдал первый экзамен своей последней сессии. Можно немного расслабиться.
Цитата:
Пусть это звучит не очень объективно от лица того, кто этому посветил множество недель (несколько сотен минимум . Но хотя бы «на пальцах» и хотя бы «неделю». ЭТО, поверьте, время не будет потраченное даром.

Как раз достаточно объективно. И более чем убедительно.

Значит останавливаюсь на FSA. А там посмотрим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Средства Win32 API
СообщениеДобавлено: 20 фев 15 16:44 
Не в сети

Зарегистрирован: 20 фев 15 16:42
Сообщения: 1
всё сделать средствами WinAPI. На многочисленные эксперименты и переделывания времени не хватит, надо выбрать что-то одно.
Может кто знает, как устроено MPI, что он использует? Если это просто надстройка, которую используют для переносимости, то лучше выбрать WinAPI. А если там уже есть какие-нибудь готовые вещи, которые самому сделать проблематично, то MPI.
Посоветуйте.

_________________
Are you interested in learnalanguage.com - learning french language Get our self paced learn norwegian audio and passguide itil study New York University (NYU)


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

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


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB