| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > [Pro] распределенное приложение на Fortran... |
| Автор: Cross 4.12.2008, 22:04 |
| Здравствуйте! Столкнулась со следующей проблемой: есть научный проект, требующий высокопроизводительных вычислений. Они собственно уже реализованы на С++ с помощью распределения на CORBA. Но разработчики потерялись, код на С++ не работает, и копаться в нем нет желания. Нашла нечто похожее на Fortran. Но без распределения. Подскажите, имеет ли смысл сейчас применять Fortran??? Можно ли его использовать с CORBA? Также меня интересует, платные ли для него компиляторы? (т.к. разрабатываемый проект должен использовать только бесплатное ПО) А может стоит переписать все на Java??? Вообще Java применим для высокопроизводительных вычислений, или об этом смешно даже говорить? (Дело в том, что Java я знаю лучше нежели другие языки... ) Читала, что на Java легче всего сделать распределение используя RMI... Но важна скорость... Что посоветуете? В Интернете много информации о том, что Fortran - лидер в области высокопроизв. вычислений, но с другой стороны - у нас почему-то он не распространён... Заранее спасибо за любый ответы и советы ) |
| Автор: Иванофф 5.12.2008, 02:49 |
| у вас как в сказке "приди не одетой и не раздетой, с подарком и без подарка" CORBA и высопроизводительные вычисления - это вроде несколько разное. проект написан, но разбираться не хотите. бесплатное ПО и высокопроизводительные вычисления - тоже не совсем совпадает. вы знаете Java, но ищете сторонних разработчиков, тогда причем ваше знание Java. Fortran - лидер в области высокопроизв. вычислений если возьмете правильный компилятор и правильных программистов (которых вроде негде взять) |
| Автор: Cross 5.12.2008, 12:07 | ||||
| Дело в том, что вычислительное приложение, работающее на С++, как говорят, работало очень и очень медленно. Поэтому и не хотят его восстанавливать.
Почему бесплатное ПО "не совпадает" с высокопроизводительными вычислениями? Нет бесплатных компиляторов? или что?
Я не хочу искать сторонних разработчиков, если бы знала, что Java даст приемлемую скорость, использовала бы только ее. CORBA или RMI используется для распределения, но разве это не относится к высокопроизводительным вычислениям. Это же частный случай параллельных вычислений... |
| Автор: Cross 5.12.2008, 13:26 | ||||||
изначально была программа на Fortran, и работала достаточно быстро. Но т.к. дело касается молекулярной динамики, потребовалось моделировать все большее количество точек, потому решили переписать алгоритм на С++ и сделать его распределенным в локальной сети. Ну после запуска остались сильно недовольны скоростью... потому проект забросили, оставив код на С++ без комментариев. Конечно можно в нем разобраться, но стоит ли?
В гугле столько разноречивой информации про Java... даже не знаю чему верить... А что вы хотели сказать по поводу скорости Java???
Можете посоветовать выход из положения? И вообще, где найти информацию о том, насколько платные хорошие компиляторы для Фортран? А можно ли обычную вычислительную программу на Фортране сделать распределенной? Или проще написать новую??? |
| Автор: kemiisto 5.12.2008, 13:45 | ||||
Если я правильно понимаю распределённость:
то конечно можно. Например, GAMESS, GAUSSIAN, DALTON (это из тех QC считалок, которые я точно знаю, что написаны на FORTRAN) вроде бы распараллеливаются (с разным успехом). А иначе какой смысл их ставить на кластеры? Наверное, будет полезным почитать про http://en.wikipedia.org/wiki/Message_Passing_Interface. А что обычно говорят? |
| Автор: Cross 5.12.2008, 18:41 | ||
Насколько я понимаю, MPI - это метод распараллеливания на разные процессоры, находящиеся на одной машине (т.е. на суперкомпьютере) В нашу задачу не входит использование многопроцессорных систем. Будет локальная сеть из обычных средних компьютеров. Вообще я находила в гугле Java-апплеты, выполняющие вычисления, касающиеся молекулярной динамики. Работают быстро ))) А насчет скорости Java я конечно читала в основном только отрицательные отзывы... Но сейчас все больше пишут, что Java почти сравнялась по производительности с С++. Не знаю, верить этому, или это просто рекламная кампания Но факт в том, что программы, написанные на Java меня лично еще никогда не подводили... А с С++ все сложнее... вот вроде есть у меня программа рабочая, но никто не может её запустить ))) |
| Автор: Иванофф 6.12.2008, 02:18 |
| а зачем вам сеть из средних компьютеров. дешевле поставить один нормальный двухпроцессорный четырехядерный компьютер и получить нормальную скорость. непонятно на каком этапе вы хотите съэкономить. |
| Автор: Cross 6.12.2008, 03:12 |
| понимаете... это научный проект при университете. все сразу сделать все равно не получится, т.к. никто у нас не умеет программировать в стиле HPC. Учиться уже нет времени, т.к. кандидатская на носу - а этот проект и будет защитой ))) Каждый аспирант делает что-то свое, какую-то часть... Моя задача - сделать распределение. Все что касается многопроцессорных машин, это уже будет делаться после... Если у института будут деньги на такие компьютеры ) А пока есть только аудитория с ЛВС ))) на том и надо работать Вот так собственно обстоит дело |
| Автор: kemiisto 6.12.2008, 03:21 | ||||||||||
Нет, точнее, не только:
Я вот что думаю по этому поводу: хватит ли у Вас опыта писать "быстрый" код на FORTRAN. Там ведь тоже не всё так просто. Помните, лучший ЯП - тот, который программист знает лучше всего.
Думаю, имеется ввиду, что существенного опережения по скорости работы приложений C++ уже не даёт. В 2 раза, но это не так уж и критично.
Что значит: не может запустить? Есть программа в исходных кодах? |
| Автор: Иванофф 6.12.2008, 04:47 |
| так бы сразу и написали. личный совет. разрабатывайте и отлаживайте отдельные части на разных машинах, а считайте на одной самой быстрой. добавьте ей памяти, если есть обмен поставьте диски в райд 0, иначе просто потеряете время на отладку в ЛВС. |
| Автор: Cross 6.12.2008, 12:13 | ||
Есть исходные коды, она компилируется... но ничего не делает... Но если все равно научная руководительница недовольна скоростью и хочет переделывать... |
| Автор: popovda 6.12.2008, 12:47 |
| Что касается MPI - та библиотека имеет 2 глобальных приемущества для создания распределенных интерфейсов: 1. Она кроссплатформенна (то есть не придеться сильно изменять код для др. ОС) 2 позволяет контролировать вычислительную нагрузку и создавать виртуальные топологии ЛВС, что может быть очень полезно для некоторых задач. Но есть недостатки - слабая поддержка и современных стандартов Фортран и C++. Поэтому, поскольку Вам так или иначе надо получить высокопроизводительный код, а значит понадобится коммерческий качественный компилятор. Если платформа Intel, то обратите внимание на Intel Cluster OpenMP - возможно Вам не придется и код-то сильно менять (вычислительную часть). Медленная работа может быть из-за использования большого количества виртуальных функций-членов. Что для CORBA-технологии очень вероятно. Вообще, в вычислительных задачах надо избегать позднее связывание. |
| Автор: Cross 6.12.2008, 22:57 | ||
Моя задача - использовать только бесплатное ПО, и компиляторы в том числе. Как решить эту проблему? |
| Автор: kemiisto 6.12.2008, 23:30 |
А чем Вас существующие http://en.wikipedia.org/wiki/Molecular_dynamics#Major_software_for_MD_simulations не устраивают? |
| Автор: Иванофф 7.12.2008, 02:15 | ||
как научиться быстро бегать в мешке. наверно есть специальная методика. хорошо что еще не заставляют считать на бесплатных компьютерах. какая всетаки цель вашей работы? действительно что-то быстро просчитать или определить "сколько студент может прожить на стипендию" |
| Автор: Cross 7.12.2008, 13:47 |
| Да меня то собственно они всем устраивают ))) Но это - предложенная мне диссертационная работа. Ясно что это никому не надо, учитывая обилие подобных программ на рынке, а университет все равно хочет это делать |
| Автор: Cross 7.12.2008, 23:56 | ||
Цель - защитить диссертацию Методы - использовать по возможности бесплатное ПО, и сделать так, чтобы будущему поколению аспирантов была основа для работы Кстати, не подскажите, где взять Visual Fortran ??? В Гугле не могу найти ссылку... Там только ссылка на различные компиляторы. |
| Автор: kemiisto 8.12.2008, 00:06 |
Купить http://www.google.com/products?hl=en&rlz=1B3GGGL_enNO304&q=Visual+studio+2008&um=1&ie=UTF-8&sa=X&oi=product_result_group&resnum=1&ct=title и http://www.intel.com/cd/software/products/asmo-na/eng/278834.htm. Хотя, вроде как, можно и только второе купить, там в Professional версии включена VS 2005. А когда защита и что за диссертация? |
| Автор: Cross 8.12.2008, 00:20 |
| Защита в следующем году. А диссертация представляет собой оптимизацию программного комплекса для системы физико-химического моделирования свойств шлаковых расплавов. Система имеет удаленный интерфейс. Была основана на СУБД Oracle. Затем переведена на бесплатную PostgreSQL. Моя задача - заставить работать для начала хотя бы написанное в 2003 году приложение на Fortran. Потому что, как я уже говорила, написанное после вычислительное приложение на С++, не устроило научного руководителя по скорости. К тому же там все основано на XML-потоках... т.е. промежуточные результаты расчетов постоянно сбрасываются сначала в XML, потом в базу... Так что мне нужно еще оптимизировать и обмен данными. Распределение не входит в мою задачу, этим будет заниматься другой человек. Но от меня зависит выбор языка для реализации вычислительного алгоритма. Наверное остановлю выбор на Fortran... Добавлено через 14 минут и 55 секунд Кстати, а в MS Visual Studio 6.0 может быть фортран? |
| Автор: Cross 8.12.2008, 14:40 |
| Нашла в интернете информацию о том, что на западе многие институты перешли с Фортрана на Питон. Портированы многие Фортран библиотеки. Особенно часто применяют для расчетов в химической отрасли. В НАСА для научно-моделирующих программ применяется Питон, как один из основных языков. Кто-нибудь может прокомментировать эти данные??? |
| Автор: kemiisto 8.12.2008, 15:22 |
В местных магазинах видел http://www.amazon.com/Python-Scripting-Computational-Science-Engineering/dp/3540739157/ref=sr_1_1?ie=UTF8&s=books&qid=1228738455&sr=1-1. Оказалось, что http://folk.uio.no/hpl/ тоже местный. Как видите, почти все курсы по Computational Science читаются с использованием Python в качестве ЯП. Но местные "фортранщики" скептически относятся к Python. В основном из-за скорости, по которой он существенно уступает той же Java. |
| Автор: Cross 8.12.2008, 23:27 |
| Да, я нашла результаты тестирования... Там Phyton в 10 раз медленнее, чем Fortran... В общем решила работать с Фортраном, вот только если не сложно, не могли бы вы мне разъяснить вот что: чем отличается CORBA/DCOM/RMI от MPI ??? Потому что везде, где пишут о распределенных или параллельных вычислениях, говорят о MPI, но не о CORBA например. У нас в проекте распределение было сделано с помощью CORBA. Так вот я и не пойду, без CORBA или чего-то подобного можно распределить задачу на несколько машин??? И вообще, можно ли использовать CORBA с Fortran? Что-то в интернете не найду никак И если не CORBA, тогда что? |
| Автор: Sannis 9.12.2008, 07:53 |
| Имхо можно с тем же успехом применять C++. Использовать ли при этом MPI или нет -- зависит задачи, плюсом для вас может послужить то, чо там уже реализованы высокоуровневые примитивы обмена данными. |
| Автор: Cross 9.12.2008, 11:09 | ||
| Сделала тест простой программы на Java, Phyton и Fortran. Привожу код на Phyton:
Использовала Phyton 2.4 со стандартным компилятором. Fortran c интеловским компилятором, правда со старым - 7 версия Java у меня стоит из JDK 6.0 В общем результаты такие: Fortran - примерно 5 мс Java - 13 мс Phyton - 206 мс !!! Этот тест нашла на каком-то сайте... там были другие результаты. И была неверно написана функция на Phyton. Не могу оттестировать на С++, т.к. пришлось удалить Visual Studio 6.0, чтобы поставить Compaq Visual Fortran. |
| Автор: Cross 9.12.2008, 12:24 | ||
| Помогите кто-нибудь с программой для тестирования фортрана. Я ее запускала без определения точного времени, а когда подставила функцию времени, при дебаге выдается ошибка error LNK2001: unresolved external symbol _TIME Вот код:
Добавлено @ 12:26 Догадываюсь, что наверное не подключила какие-то файлы, но какие? Нигде не могу найти... |
| Автор: popovda 13.12.2008, 14:27 | ||||||
| Так Вы - физхимик? Что до бесплатных компиляторов - пишите под Linux - для него и Intel Fortran, и Intel C++ свободные есть. Ну а что до Питона, то в нем удобно делать GUI к проге на фортране - быстро и гибко.
Тут у Вас 2 ошибки 1. вы объявляете переменную time, а потом обращаетесь к ней как к функции - уже ошибка, т.к. внешнюю функцию, если time - функция - надо определять так
2. насколько я помню - time - не является функцией стандарта языка. Значит Вы где-то не прописали пути к библиотеке, которая её использует. Или не указали lib-файл. Причём, мне кажется, что это либо функция из Вашего пакета программ, либо вообще сторонняя функция. |
| Автор: Cross 14.12.2008, 13:56 | ||||
Я не физхимик! Я информатик всего-лишь ) Моя задача только создать программный комплекс.
Да, спасибо за совет! Я уже нашла решение для Windows - использование CDT под Eclipse! (насколько я понимаю там реализованы адаптеры к линуксовому компилятору, дебагеру... и т.д.) Вот только проблема... установила я Photran для Eclipse... потом стала пытаться поставить CDT Eclipse, но ни одна программа на С++ не делает exe файла... Не знаю, что и делать. |
| Автор: Иванофф 21.12.2008, 01:41 | ||
Что -то я перестаю понимать в научной жизни. Вы собираетесь защититься в следующем году по теме в которой пока ничего не понимаете. Неужели с наукой у нас так тяжко. И специальность ИНФОРМАТИК. Непонятно какой комплекс вы хотите создать. На это нужен год нормальной практики, чтобы дальше хоть что-то осмысленное делать. |
| Автор: Cross 21.12.2008, 12:36 |
| А мне собственно не нужно ничего особенно понимать в физической химии. Алгоритмы уже разработаны до меня. Да и сам программный комплекс. Моя задача - реструктуризация и оптимизация производительности. |
| Автор: Cross 21.12.2008, 17:30 |
| Я так и не нашла ответа на вопрос, как создать распределенное приложение на FORTRAN используя CORBA... Нашла информацию, что есть IDL-to-FORTRAN mapping, но как его реализовывать не нахожу... Я в этом человек новый))) помогите чем сможете программа на FORTRAN 77... нужно ли ее переписывать в FORTRAN 2003 с объектами, чтобы использовать с CORBA или можно все сделать без объектов? Если да то как? Где найти информацию по этой теме? |
| Автор: Фантом 27.12.2008, 17:52 |
| Насколько мне известно, отображения CORBA для Fortran'а попросту не существует. Впрочем, это не так страшно, поскольку скорость работы этого изделия с языками, которые оно поддерживает, оставляет желать лучшего. Посему общий совет. Если Вы всерьез хотите сделать все нормально (а не слепить что-нибудь сносное, отчитаться и забыть), то перебирайтесь под Linux, доводите до ума (если понадобится) программу на Фортране и пользуйтесь MPI. Это будет эффективнее, да и сложившимся в этой области программирования стандартам соответствует. |
| Автор: popovda 31.12.2008, 21:41 |
| Гм... Корбой я бы всё же не рекомендовал пользоваться. Тормознуто будет сильно.... Очень сильно. Компилятора 2003 фортрана с полноценным (в рамках 2003 стандарта) ооп просто ещё нет (точнее есть - но только IBL Fortran XL для ppc64). Достаточно 95-го компилятора. Для Вашей задачи, если Вы уж решили таки кобру юзать, вместо таких костылей, как IDL2Fortran mapping использовать iso_c_binding и вызовы Corba-API из C на фортране. |
| Автор: Cross 1.1.2009, 16:38 |
| Использование MPI возможно только под Linux??? Я читала что под Windows тоже можно использовать... в среде eclipse Подскажите, какой лучше использовать дистрибутив. Я работала только с Fedora 6.0.. |
| Автор: Фантом 1.1.2009, 19:16 | ||
Нет, конечно, но под Linux будет намного проще. Это обычное следствие явления "корпоративный стандарт" - подавляющее большинство людей в этой области работают на Linux, поэтому и инструментов там больше, и ответы на вопросы новичку будет найти проще. Дистрибутив - в принципе сойдет любой, но оптимальный вариант - Scientific Linux. В нем уже встроено большинство того, что нужно при распределенных вычислениях, да и работать с ним Вам будет достаточно просто - он основан на том же RedHat/Fedora. |
| Автор: Cross 1.1.2009, 21:18 |
| А Scientific Linux можно поставить на VMWare Workstation??? |
| Автор: Фантом 2.1.2009, 00:36 | ||
Хм... наверное, да. Никогда не пробовал это делать, но ничего специфического, что этому бы препятствовало, вроде нет. |