PARALLEL.RU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Какой язык выбрать?
СообщениеДобавлено: 12 янв 12 10:16 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Здравствуйте.

Интересуюсь вашим мнением: какой язык пригоден для написания числодробительного кода не для кластеров, а для систем с общей памятью?
Я достаточно долгое время писал на Pure C + OpenMP и понял, что Си для моих задач не годится. Слишком низкоуровневый, с неоднозначным синтаксисом, нет контроля рамок массивов. Всё это порождает массу ошибок первого и второго ("эзотерические") уровней. Задачи, в основном - решение систем интегро-дифференциальных уравнений.
Matlab меня всем устраивает, кроме возможности эффективной работы на многопроцессорной машине с общей памятью. Про MPI речи нет, там есть Distributed Computing, но в данный момент таких задач нет.
Хочется пользоваться OCAML, но есть ли в нём надстройки, позволяющие работать с общей памятью?

Жду ваших советов. Заранее спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 21 янв 12 19:27 
Не в сети

Зарегистрирован: 4 сен 06 10:32
Сообщения: 11
Откуда: москва
Rex писал(а):
Интересуюсь вашим мнением: какой язык пригоден для написания числодробительного кода не для кластеров, а для систем с общей памятью?


1. Фортран + OpenMP

2. Фортран 2008 содержит средства поддержки параллельности (coarrays) и для систем с общей памятью и для распределенных систем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 22 янв 12 16:32 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Уважаю Ваше мнение, но чем Фортран лучше Си? Не так давно учёный секретарь, одного из академ. институтов города Томска рассказал такую историю. Скомпилировали одинаковый исходник разными версиями Фортрана (под задачу на кластере СКИФ). Обе версии скомпилировались без ошибок, а результат в цифрах дали существенно разный. Ну и как тут быть?
Я не против Фортрана, но у нас обычно программируют на 77-м стандарте и люди весьма преклонного возраста, которые и пропагандируют это дерьмо. Согласен, что 2008-й стандарт мог бы стать кандидатом в языки для численных расчётов, но стандарт 2008 полноценно не поддерживает ни один компилятор. Кроме того, в 2008 и 2003 стандарте есть весьма сомнительные нововведения.
Есть ещё момент. Для программирования на Си я использовал ОДИН БЕСПЛАТНЫЙ дистрибутив - CodeBlocks с MinGW32. Покупать Фортран, хотя бы глуюкавый Intel возможности нет, если задача зачастую стоит дешевле компилятора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 22 янв 12 18:59 
Не в сети

Зарегистрирован: 4 сен 06 10:32
Сообщения: 11
Откуда: москва
Rex писал(а):
чем Фортран лучше Си

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

Rex писал(а):
стандарт 2008 полноценно не поддерживает ни один компилятор. Кроме того, в 2008 и 2003 стандарте есть весьма сомнительные нововведения

Это не так. Intel поддерживает полностью, другие частично.
Сомнительные - для кого? Это не довод.

Rex писал(а):
если задача зачастую стоит дешевле компилятора

Для одной такой небольшой задачи покупать не стоит.

Rex писал(а):
Скомпилировали одинаковый исходник разными версиями Фортрана (под задачу на кластере СКИФ). Обе версии скомпилировались без ошибок, а результат в цифрах дали существенно разный. Ну и как тут быть?

Это проблема компилятора, а не языка. Если компилятор легальный, то можно разобраться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 23 янв 12 0:00 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Уважаемый(ая) Горелик. Серьёзная проблема языка может быть в том, что он допускает неоднозначную интерпретацию синтаксических конструкций. Вот скажите как знаток языка Fortran. Есть ли в современной версии подобная проблема? В Pure С такая проблематика есть и принципиально неустранима, потому и отказываюсь от него.
Предъявить что-либо производителям, т.е. Intel не получится, поверьте, я представляю организацию (название которой не хотел бы озвучивать), имеющую в своём распоряжении лицензионные пакеты для расчётов, например Comsol. Официальная поддержка по большинству принципиальных вопросов не работает, несмотря на огромную стоимость пакета - такова реальность. В лучшем случае поддержка ответит Вам так "мы советуем этот фрагмент ... заменить на ...". Исходный код компилятора и библиотеки IMSL закрыт. Для научных задач такое положение дел представляет серьёзную проблему. Бывают задачи, в которых не то что спецфункцию, а даже экспоненту нужно видеть (в исходниках) как она вычисляется.
Как понимать Вашу фразу "Фортран ориентирован на задачи вычислительного характера"? Даже если брать период 1970-80х - это уже неверно. Тогда большинство чисто вычислительных задач решались не на фортране, а на PL/1. Знаю пример в из истории оборонной промышленности, к разработке приложений для которой имели отношения мои родители. Хотя, разумеется, не отрицаю, что изначально фортран создавался для числодробильных задач. Но я в курсе какие вычислители были тогда и какие мы имеем сейчас. И потом... что Вы понимаете под "задачей вычислительного характера" и какие задачи к ним не относятся?
Насчёт моего высказывания о сомнительных нововведениях. Одним из самых сомнительных и нелепых нововведений в фортран я считаю объектность. Революцией стала бы возможность полноценного функционального программирования, но её нет и не будет, ибо безболезненно в фортран её не добавить. Зато есть объектность, которая в сотни раз утяжелила код, а зачем она?
И, пожалуйста, ссылку на то, что IF поддерживает 2008 стандарт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 28 янв 12 11:07 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Вот так и загнулась тема. Ну как это на главном ресурсе рунета по параллельным вычислениям нет пользователей, способных участвовать в дискуссии?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 28 янв 12 18:43 
Не в сети

Зарегистрирован: 28 май 07 12:10
Сообщения: 47
Откуда: ИПС РАН
Попробуйте MC# (www.mcsharp.net) - параллельное расширение языка C#.

Он, в частности, свободен от недостатков, которые Вы перечислили -

" ... cлишком низкоуровневый, с неоднозначным синтаксисом, нет контроля рамок массивов."

По производительности, будет гораздо эффективней OCAML,
но, конечно, не даст такую эффективность, как C.

С другой стороны, MC# уже поддерживает GPU Nvidia.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 28 янв 12 19:15 
Не в сети

Зарегистрирован: 4 сен 06 10:32
Сообщения: 11
Откуда: москва
Я ответила Вам на вопрос "Какой язык выбрть?" в надежде помочь. Но после Ваших высказываний "дерьмо", "нелепые нововведения" и ошибочного (и не имеющего отношения к выбору языка сегодя) утверждения по поводу PL/1, считаю нецелесообразным продолжать дискуссию.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 29 янв 12 16:06 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
YurySerdyuk писал(а):
Попробуйте MC# (http://www.mcsharp.net) - параллельное расширение языка C#.
Он, в частности, свободен от недостатков, которые Вы перечислили -
По производительности, будет гораздо эффективней OCAML,
но, конечно, не даст такую эффективность, как C.
С другой стороны, MC# уже поддерживает GPU Nvidia.


Спасибо, очень интересно, попробую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 29 янв 12 17:23 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Горелик писал(а):
Все новые средства, вводимые в Фортран, проходят многоэтапное обсуждение специалистов разных стран и все решения принимаются голосованием на уровне стран-участниц. Что касается ООП в Фортране, имеется много статей и даже книг, в которых не только описаны эти средства, но также приведены примеры конкретных приложений, где эти средства используются.
Прежде чем дискутировать, надо ознакомиться с предметом дискуссии, в данном случае с Фортраном.


Прежде чем давать советы, надо быть готовой давать ответы на вопросы, которые могут возникнуть к Вам лично, а не оперировать понятиями всеобщности, распространённости и здравым смыслом. Вы мне хотите сказать что-то вроде "учёные доказали - только Фортран"? Подобное высказывание аналогично "миллионы леммингов не могут ошибаться".
Фортран существует очень давно, на нём создано много приложений и, тем более, далеко не каждый (особенно пожилой) научный сотрудник способен отказаться от привычного инструмента. Другими словами, есть legacy, на котором и держится Фортран. По аналогичной причине в нашей стране задвинули АЛГОЛ и слизали с зарубежного ФОРТРАН-ДУБНУ. Причина была такая-же "американские физики программируют на Фортране, а кто в мире будет поддерживать АЛГОЛ?"
Из той же серии "Все пользуются ООП, давайте затолкнём его в Фортран". Если не так, то приведите ссылки на публикации в рецензируемых журналах по Computer Science, в которых такой ход чем-то действительно обоснован.

Вы думаете, что с Фортраном я не знаком и книг, даже хотя бы Ваших по нему не читал. Мне очень жаль, видимо, мой вопрос нужно было сформулировать так "Какой СОВРЕМЕННЫЙ язык выбрать?" Вот, предложенный мне как вариант MC# - это современный язык, а Фортран - это анахронизм.
Я ещё раз сформулирую вопросы, на которые Вы не ответили. На всякий случай - они не носят никакого провокативного характера.
1. Приведите ссылку на официальную информацию, что некий компилятор поддерживает ВСЕ возможности стандарта 2008;
2. Откуда уверенность в корректной работе закрытых библиотек, например IMSL? В uBLASe находили ошибки, в NAG тоже;
3. Как понимать Вашу фразу "Фортран ориентирован на задачи вычислительного характера"?
4. Возможны ли в "современном" Фортране ситуации, в которых синтаксическая конструкция имеет неоднозначную трактовку при компиляции?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Какой язык выбрать?
СообщениеДобавлено: 16 сен 14 14:05 
Не в сети

Зарегистрирован: 16 сен 14 14:00
Сообщения: 1
А может прежде чем ругать компилятор стоит ознакомиться с тем, что функция должна делать?

_________________
zoha


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

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


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

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


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

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