Использование одного инстанса MPS на узел типично, когда инстансы запущены. Некоторые планировщики предлагают это сделать за вас, например, SLURM иногда предлагает --cuda-mps. Если что-то подобное доступно на вашем кластере, мы настоятельно рекомендуем вам использовать эту опцию и действовать так же, как описано в предыдущем разделе.
Но что делать, если ваш планировщик не предлагает подобного решения? Необходимо убедиться, что на каждом узле запущен один (и только один) инстанс MPS, прежде чем будет запущен VASP. Для этого у нас еще один скрипт: runWithOneMPSPerNode.sh.
И вновь, если вы установили бинарный файл VASP с ускорением на GPU в другое место, пожалуйста, адаптируйте переменную runCommand в начале скрипта. Следующие переменные вычисляют локальный ранг на каждом узле, потому что реализация MPI Intel не предоставляет эту информацию. Скрипт запускает MPS-сервер для каждого первого ранга на узел, убедившись, что процесс MPS не привязан к одному и тому же ядру, после чего процесс VASP будет привязан к следующему. Этот шаг имеет решающее значение, поскольку в противном случае MPS будет ограничен, используя только одно ядро (он может использовать больше), и еще хуже конкурировать с VASP за циклы CPU в этом ядре. Скрипт продолжает выполнение VASP, а затем останавливает MPS.
Скрипт вызывается из команды mpirun, как вы уже видели в более подробном разделе. Команда mpirun работает так же, как при работе без MPS, но обратите внимание, что мы вызываем скрипт вместо двоичного кода VASP: