запуск pc gamess (и д.р.) на многоядерном ПК?
а nt-mpich или wmpi надо ставить/включать?
проц атлон x2
PСGAMESS.EXE <Первый Work-каталог> <Второй Work-каталог> 1>%1.out 2>&1 -np 2
-np 2 - количество процов.
mklnp - тоже ответственно за это, только в другой ипостаси... Если интересно - напишу.
Да, нужно еще взять библиотечку mpibind.nt-mpich-smp.dll и переименовать в mpibind.dll - но насчет этого не уверен ибо давно заморачивался.
mklnp - тоже ответственно за это, только в другой ипостаси... Если интересно - напишуинтересно...напиши..
1>%1.out 2>&1и вот про эту часть можно по подробнее? а точне.... я так понял это он в два файла выводить будет? или что обзначает "2>&1"
и "1" перед ">%1.out" ?
при таком запуске wmpi ему нужен будет?
просто "--np 2" с двумя директориями пробовал... mpibind.dll и pcgp2p.dll в них лежал.... нифига не было... запускался как в одиночном режиме..
Про синтаксис
PGAMESS.EXE <1 рабочая директория> <2 рабочая директория> 1><имя выходного файла>.out 2>&1 -np 2
Пример:
d:\Programs\PC-GAMESS\PGAMESS.EXE e:\work\work1\ e:\work\work2\ 1>supercalc.out 2>&1 -np 2
"2>&1"по стандарту в Си-шных прогах есть два выходных потока - stdout -"стандартный поток вывода" (имеет дескриптор = 1) и stderr - "стандартный поток ошибок" (имеет дескриптор = 2).
запись prog.exe params 1>file.txt 2>other.txt означает, что stdout будет сбрасываться в file.txt, stderr - в other.txt
например, компиляторы обычно в stdout пишут всякую фигню про то, кто они, какие файлы транслируют и пр. в stderr обычно сваливают всякие errors/warnings/hints.
runtime errors обычно тоже в stderr валятся, в то время как весь пользовательский вывод (printf/puts etc) выводится в stdout (если только программер явно не указал fprintf(stderr,"blablabla".
запись 2>&1 обозначает, что поток stderr нужно выводить в тот же файл, что и stdout.
в С++ это потоки cout и cerr
Да, я забыл ответить на пару вопросов. Первый Базилио разрулил получше меня, а касательно WMPI - он не нужен
кстати... Какие-нить танцы с бубном типа копирования в эти директории каких-либо файлов от pc gamess нужны?
И как правильно определить, что он схватил два ядра - таскбар + см. .out ? так?
AMD x86-64 / Win32 PC GAMESS version running under Windows NT
Running on AMD CPU : CPU Generation 15, Family 15, Model 43, Stepping 1
CPU Brand String : AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
CPU Features : CMOV, MMX, SSE, SSE2, SSE3, AMD64
Data cache size : L1 64 KB, L2 512 KB
# of cores/package : 2
Operating System successfully passed SSE support test.
PARALLEL VERSION (UNIFIED) RUNNING WITH 2 NODES
Ну и по загруженности проца видно конечно.
Танцы с бубном не нужны, важно то, что файл input должен лежать в первой рабочей директории.
Пример батника для запуска (которым пользуюсь я, за вычетом некоторых специфических вещей, которые я не могу разглашать).
Инпутник: myinputfile.inp
Синтаксис: pcgampar myinputfile
Результат: myinputfile.out, myinputfile.pun, myinputfile.irc
pcgampar.bat:
del e:\work\work1\*.
del e:\work\work1\*.inp
del e:\work\work1\*.pun
del e:\work\work2\*.
if exist %1.old del %1.old
if exist %1.out ren %1.out %1.old
rem эта тупая с виду операция была вписана мной на место реальной
copy %1.inp input
Copy input e:\work\work1\input
del e:\work\input
d:\Programs\PC-GAMESS\PGAMESS.EXE e:\work\work1\ e:\work\work2\ 1>%1.out 2>&1 -np 2
cd e:\work\work1
ren punch %1.pun
ren ircdata %1.irc
cd e:\work
copy e:\work\work1\%1.pun e:\work\%1.pun
if exist e:\work\work1\%1.irc del e:\work\work1\%1.irc
if exist e:\work\work2\%1.irc del e:\work\work2\%1.irc
if exist e:\work\work1\ircdata ren e:\work\work1\ircdata e:\work\work1\%1.irc
if exist e:\work\work2\ircdata ren e:\work\work2\ircdata e:\work\work2\%1.irc
Да, ну и типовой списочек файлов в директории гамесса под винду
FASTDIAG.DLL
MPIBIND.DLL
mpich_smp.dll
PCGP2P.DLL
PGAMESS.EXE
А ларчик просто открывался!
Да, нужно еще взять библиотечку mpibind.nt-mpich-smp.dll и переименовать в mpibind.dll - но насчет этого не уверен ибо давно заморачивался"-np 2 " в мануале написано... пробовал. Надо было еще файло переименовать
Всем. СПАСИБО!
зы. В сети есть еще пара компов. Как wmpi запустить? Кто-нить делал/пробовал? проинсталить, настроить wmpi и мпибинд переписать?
Узнаешь как - напиши. А то я не сталкивался.
есть ли у присутствующих опыт запуска pc gamess и mpich на нескольких машинах, чтоб параллельно считали ?
потом мы полностью перешли на linux, используем gamess(us). С ним вообще никаких проблем - у него собственные коммуникационные библиотеки. Впрочем в безальтернативной ситуации (например на кластерах общего пользования) можно его собрать и с mpi-библиотекой - тоже все работает.
у меня pcgamess когда-то успешно работал с nt-mpich. Особых сложностей в установке/настройки нету - есть довольно подробный мануал.а можешь такой мануал подкинуть?
сегодня пробовал запускать... запускается только на одно ядро..... если пускать на два, через полминуты вырубается, грит процесс 1 закрылся, и вырубает процесс 0. Не в курсе что это может быть?
Есть опыт запуска параллельно на виндовом кластере под wmpi, на линуксовом кластере под mpich, на суперкомпьютере под infiniband. Параллельно все считает, вопрос лишь в scalability.
А что в аутфайле пишет? Если ничего или fsf fatal error, то ты не назначил директории разные. Проще всего это через ключит -t делается.
На линуксе pc gamess работает замечательно, как на самосборе кластере, так и на суперкомпьютерах. gamess us штука хорошая, но я бы советовал пользоваться pc gamess, если вас удовлетворяет его функционал, а в большинстве случаев он должен удовлетворять.
Кстати- кстати, в PC GAMESS есть такие варианты расчетов, которые не запускаются в параллели, сходу назову лишь расчет MCQDPT2, правда прога честно об этом пишет. В таком случае надо пользоваться mklnp, так как Грановский А.А. критические места в MCQDPT2 запрограммировал под многопоточность и это сильно помогает.
А можешь глянуть что не так?
Это я пытаюсь через mpirun запустить хотя на одном компе в на двух ядрах...
батник для запуска:
code:
"C:\Program Files\MPICH\mpd\bin\MPIrun.exe" "C:\Program Files\MPICH\mpd\bin\pcgamess.cfg" 1>%1.out 2>&1
содержание pcgamess.cfg
code:
exe E:\quantum\win.PII.cluster\PCGAMESS.EXE
env input=E:\quantum\dual1\input
args E:\quantum\dual1 E:\quantum\dual2
hosts
xp_mce 2
при этом на выходе .out
code:
AMD Opteron/ Win32 PC GAMESS version running under Windows NT
Running on AMD CPU : CPU Generation 15, Family 15, Model 75, Stepping 2
CPU Brand String : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
CPU Features : CMOV, MMX, SSE, SSE2, SSE3, AMD64
Data cache size : L1 64 KB, L2 512 KB, L3 0 KB
# of cores/package : 2
Operating System successfully passed SSE support test.
PARALLEL VERSION (UNIFIED) RUNNING WITH 2 NODES
INPUT CARD> H 1.0 1.8774531198 -4.3244824932 0.0274185488
INPUT CARD>$END
INPUT CARD> process 1 on xp_mce exited without calling MPIFinalize
Sending kill commands to launched processes
process 0 on xp_mce exited without calling MPIFinalize
Лишнее поскипано.
Тебе принципиально запускать именно так? А то геморроя много, пользы мало. Под виндой на SMP системе проще всего запускать как написано в мануале - заменить mpibind.dll на mpich-smp чего-то там, потом запускать с командной строчкой с ключем -np 2.
а с mpirun потренироваться хочу. Когда еще один комп по сетке подключал эффект такой же был...
local 0
node-1 2 c:\pcgamess\pcgamess.exe
node-2 2 c:\pcgamess\pcgamess.exe
........
И будет тебе счастье. опять же повторяю на одном единственном компе запускать через mpirun на 3 буквы не нужно, там идет файлик mpich_smp.dll который уже нормальный и при вызове pcgamess.exe -np 2 он сработает как часы.
Запустил через wmpi pcgamess. На сетевой машине все пошло - Ок (там все равно одноядерный проц).
А вот на компе откуда запускал - открылось 2 процусса pcgamess, но работает только один из них (второй не жрет проц, и не съел памяти)
батник такой:
E:\quantum\win.PII.cluster\PCGAMESS.EXE E:\quantum\dual1\ E:\quantum\dual2\ 1>%1.out 2>&1
pcgamess.pg такой
code:
local 0
192.168.0.100 1 F:\guantum\win.PII.Athlon\pcgamess.exe
В оутпуте пишет, что процесс запущен на 2 нодах.
Подозреваю, что второе ядро не запустилось - потому что неправильно директорию сожрало. Первый процесс вместо E:\quantum\dual1\ начал создавать файлы в директории с батником.
В чем ошибка?
зы. Заменил в pcgamess.pg
local 0 на local 1.
Запустилось.
Посети проц взял.
На локальной машине - 3 процесса pcgames.exe. Один ничего не жрет.
В оутпуте пишет - запущено на 3х нодах! Ура
На удаленном компе 5 процессов pcgamess.exe...
Local 0 - 1 процесс, local 1 -2 процесса, так и должно быть. Вот только по практике - local 1 он не любит, лучше указать
local 0
master 1 ....
где master - это машина на которой local 0 крутится.
на 1 compute process еще будет 1 data процесс - то есть это нормально, если у тебя 2 процесса считают и 2 процесса просто висят. Вот если там еще лишние висят с прошлого раза неубитые - сильно систему тормозит.
Но засек время...... двухядерник + одноядерник по wmpi - считается столько же сколько на одном ядре первого считалось
Конечно, если ты не поставил $p2p p2p=.t. dlb=.t. mixed=.t. $end и запустил на сетке, которая тормозит безбожно ( ну типа 10 мбит да еще и задачу с большими интеркоммуникационными затратами- то конечно, все будет плохо. На практике у меня есть гетерогенный кластер под виндой - 4 p4 2.8 и 1 core2duo 2.4(2 ядра). Так вот на DFT или MP2 со всеми настройкамии и примочками получается скалабилити процентов 70-80 от максимума ( сетка там 100мбит, не фонтан а вот на CASSCF картина печальная - есть смысл считать либо на 4 p4, либо на 1 core2(2 ядра).
а вот сетка грузится отсилы на 0,1% 100мбиит
зы. Может сказаться то, что один атлон другой п4 - а запускаю на обоих версию оптимизированную под амд ?
В твоем случае p2p как я написал ставить обязательно просто.
Лучше на п4 версию под п4. опыт говорит, что версия под п4 хорошо работает на нем и на оптеронах, что самое странное=) на коре не очень, на коре версия под п3 лучше работает, или нативная кора. В твоем случае scalability уверен можно добиться больше 80-90 процентов на большинстве задач, просто нужно руки правильные приложить. (без обид).
Кстати, если тебе нужна чисто квантовая химия, без всяких там efp, qm/mm и бла-бла-бла, то советую обратить внимание на molpro 2006.1 - универ закупил лицензию на него до 2012 года. Продукт коммерческий, очень хороший, где-то проигрывает pc gamess, на высокоточных вычислениях быстрее, есть возможности, которых просто нет в pc gamess - ну там CASPT2, например, EOM-CC и куча всякой лабуды другой. Параллелится и запускается параллельно ноу проблем, но работает только под линуксом. думаю можно с цыгвином извратиться и под винду собрать, но стоит ли.
Кстати, ради интереса, глянь на это - вот это реально многоядерный ПК, прямо моя мечта=) Еще бы там оперативки по 2 гига на каждый проц и тогда сам черт не брат=)
Картинки красивые.. после этого и решил, что одного ядра на расчеты маловато
А зачем такое мягко говоря извращение: hdd 2.5” 73 GB ?
Чтоб не грелись или так исторически сложилось...?
Я вот себе из таких соображений домашний комп подбирал: 4 ядра, 8 Гб оперативы
я и на линуксе не смог molpro собрать, долго копать лениво
больше дисков влезет в стоечный корпус, больше скорость в сумме
да ладно тебе, чего там сложного-то? В мануале все написано как и что собирать. Вообще там можно rpm-ки под свою архитектуру взять, если не хочешь собирать.Я для начала на 1-м компе рпм-ку поставил ну чисто опробовать, потом на кластере соберу.
ну как соберешь - напиши тут
или может у меня руки дойдут
ну да, небось еще и винты SCSI или SAS
2.5 SCSI не видел, SAS полно.
А они есть. У нас в относительно старом серваке IBM стоят
Я не знаю когда буду его собирать по той простой причине, что эта программе лично мне не нужна в обозримом будущем, если людям в нашей лабе понадобиться, чтобы я на их кластере собрал- то тут да, это сделаю. А пока никому не нужно- ну и фиг бы с ним.
Жаль только, что не для всех расчетов хватает 2 гигов. У меня таких пока нет и надеюсь не будет, но я видел такие задачки, где 4 гига просто необходимо. А у тебя хранение данных как устроено? 1 рейд массив из 2 винтов, или 4 винта отдельных? Или еще что-то?
а можешь такой мануал подкинуть?я имел в виду мануал к nt-mpich. входит в дитрибутив.
Вообще неоптимально конечно, но в корпусе под еще 2 места просто нет
Если ты с dirscf или dirtrf считаешь, то это не сильно принципиальным становиться=)
Так и только так
Кстати не шибко большие задачи на HF и DFT ( понимаю, что достаточно смешные методы, но все же как раз на обычном варианте scf быстрее считает из-за того, что у Грановского реализована паковка интегралов. В случае быстрого жесткого диска думаю задачи до 400 б.ф. будут идти лучше в конвеншенал. Хотя спору нет, параллелятся лучше direct методы и за ними в любом случае будущее, так как задачи в размере все растут и растут.
Узнаешь как - напиши. А то я не сталкивался.Пишу. Опробовал технологию, описанную выше 'ым. Все работает без особых проблем. Запускал на двухъядернике + по сетке еще один комп к расчетам подключал.
Оставить комментарий
vladislav74
Как запустить сабж сразу на несколько ядер?ридми ботал, пробовал, не получилось
оба пакета ставились (*mpi* вроде запускались, но увидеть их pc gamess'ом не удалось...
У кого есть опыт запуск такого плана прог на несколько ядер?