Здравствуйте,
Не знаю как корректно задать вопрос. Не являюсь по настоящему опытным пользователем ПК и искал форум, где мне смогут подсказать.
ОС: windows 10
Собрал компьютер с Али с двумя процессорами и большим количеством ядер для выполнения квантово-химических вычислений, но обнаружил, что расчеты не очень эффективно используют ядра, если запускаю два расчета, то они начинают мешать друг другу и другим программам. В итоге оказалось, что эффективней самостоятельно указывать какие ядра/процессор использовать с помощью “диспетчера задач → подробности → задать сходство”. Это нужно сделать для каждого процесса и при следующем запуске оно сбросится.
Чтобы задать сходство заранее перед запуском, нужно создать ярлык и в объекте прописать, что-то вроде:
cmd.exe /c start "Program name" /affinity FFFFFFF0000000 C:\Program Files (x86)\program.exe Где FFFFFFF0000000
- шестнадцатеричное число, указывающее какие ядра использовать (через двоичное число), в моём случае 14ядер/28 потоков первого процессора.
Я протестировал на квантово-химической программе Firefly. 32-битная с простой сборкой (почему-то использующая не больше 20 потоков, но это другой вопрос). Она имеет один exe-файл и для него я сделал простой bat-файл со строкой:
start /affinity FFFFFFF0000000 C:\Firefly\Firefly820.exe -i .\BG.inp -o .\BG.out -t .\TEMP\ -np 20
Задумка была параллельно запустить ещё один расчет, который бы не мешал первому:
start /affinity 0000000FFFFFFF C:\Firefly\Firefly820.exe -i .\BG.inp -o .\BG.out -t .\TEMP\ -np 20
И вроде всё работало как надо.
Ещё одна программа GAMESS US
64-битная и требует установки и запуска через intel MPI. Она также запускается через bat-файл, но тут уже целая цепочка исполнителей и примкнуть ярлык никуда не получается.
Там есть исполняемый файл: gamess.2022.R2.intel.exe
. Чтобы его запустить, нужно через командную строку запустить rungms.bat
с параметрами:
- [input] [version] [ncups] [logfile].
Как я понял этот bat-файл обращается к MPI, которая и запускает gamess.2022.R2.intel.exe. И тут я поплыл, ни вставить где-нибудь ярлык, ни прописать в rungms.bat команду start у меня не получилось. Кажется, что нужно что-то изменить в этом куске bat файла (я взял чуть больше текста) (убрал все символы @):
REM At this point we are ready to run!
REM
ECHO Microsoft MPI ^(MS-MPI^) will be running GAMESS on 1 node^(s^).
ECHO The binary will be kicked off by 'mpiexec' is gamess.%VERSION%.exe
ECHO MS-MPI will run %NCPUS% compute process^(es^) and %NCPUS% data server^(s^).
ECHO.
REM
IF %GDDIJOB%==TRUE (
ECHO.
ECHO This is a GDDI run the output will be dumped to this screen when
ECHO the run has completed which may be a while. But since this is
ECHO running on the current computer you can tail the progress of
ECHO the following file:
ECHO.
ECHO %SCRATCHDIR%\%JOB%.F06
ECHO.
)
REM
EM Source Intel MPI environment
REM
CALL C:\PROGRA~2\Intel\oneAPI\mpi\latest\env\vars.bat
IF %REDIRECTION%==TRUE (
mpiexec -configfile %PROCFILE% >%LOGFILE%
) ELSE (
mpiexec -configfile %PROCFILE%
)
REM
REM We stall for 5 seconds. Hopefully this is enough time for
REM mpiexec to release hold on %LOGFILE%
REM
REM PING -n 5 127.0.0.1 > NUL
REM
REM Tidy up some GDDI stuff
REM
Либо нужно что-то делать с MPI, вот туда я даже не рискнул лезть.
Что я могу с этим сделать?
Если нужна дополнительная информация, то спрашивайте.