ນີ້ແມ່ນຄໍາສັ່ງ mpiexec.openmpi ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
orterun, mpirun, mpiexec - ປະຕິບັດວຽກ serial ແລະຂະຫນານໃນ Open MPI. oshrun, shmemrun
- ປະຕິບັດວຽກ serial ແລະຂະຫນານໃນ Open SHMEM.
ຫມາຍເຫດ: ໄພຣຸນ, mpiexec, ແລະ orterun ແມ່ນຄໍາສັບຄ້າຍຄືກັນທັງຫມົດສໍາລັບກັນແລະກັນ oshrun,
ເຊມຣັນ ໃນກໍລະນີທີ່ Open SHMEM ຖືກຕິດຕັ້ງ. ການນໍາໃຊ້ຊື່ໃດຫນຶ່ງຈະຜະລິດຕະພັນດຽວກັນ
ພຶດຕິ ກຳ.
ສະຫຼຸບສັງລວມ
ຮູບແບບຂໍ້ມູນຫຼາຍຂະບວນການດຽວ (SPMD):
ໄພຣຸນ [ທາງເລືອກ] [ ]
Multiple Instruction Multiple Data (MIMD) ແບບ:
ໄພຣຸນ [ global_options ]
[local_options1] [ ] :
[local_options2] [ ] :
... :
[local_optionsN] [ ]
ໃຫ້ສັງເກດວ່າໃນທັງສອງແບບ, invoking ໄພຣຸນ ຜ່ານຊື່ເສັ້ນທາງຢ່າງແທ້ຈິງແມ່ນເທົ່າກັບ
ການລະບຸ -- ຄໍານໍາຫນ້າ ທາງເລືອກທີ່ມີ a ຄ່າເທົ່າກັບໄດເລກະທໍລີທີ່ ໄພຣຸນ
ອາໄສຢູ່, ລົບໄດເລກະທໍລີຍ່ອຍສຸດທ້າຍຂອງມັນ. ຍົກຕົວຢ່າງ:
% /usr/local/bin/mpirun ...
ເທົ່າກັບ
% mpirun --prefix / usr / ທ້ອງຖິ່ນ
ໄວ ບົດສະຫຼຸບ
ຖ້າທ່ານພຽງແຕ່ຊອກຫາວິທີການດໍາເນີນການຄໍາຮ້ອງສະຫມັກ MPI, ທ່ານອາດຈະຕ້ອງການໃຊ້ a
ເສັ້ນຄໍາສັ່ງຂອງແບບຟອມຕໍ່ໄປນີ້:
% mpirun [ -np X ] [ --hostfile ]
ນີ້ຈະດໍາເນີນການ X ສໍາເນົາຂອງ ໃນສະພາບແວດລ້ອມທີ່ໃຊ້ເວລາແລ່ນໃນປັດຈຸບັນຂອງທ່ານ (ຖ້າຫາກວ່າແລ່ນພາຍໃຕ້ການ
ຜູ້ຈັດການຊັບພະຍາກອນທີ່ສະຫນັບສະຫນູນ, ເປີດ MPI ໄພຣຸນ ປົກກະຕິແລ້ວຈະໃຊ້ອັດຕະໂນມັດ
ຕົວເລີ່ມຕົ້ນຂະບວນການຜູ້ຈັດການຊັບພະຍາກອນທີ່ສອດຄ້ອງກັນ, ກົງກັນຂ້າມກັບ, ສໍາລັບການຍົກຕົວຢ່າງ, rsh or ssh,
ເຊິ່ງຕ້ອງການໃຊ້ hostfile, ຫຼືຈະເປັນຄ່າເລີ່ມຕົ້ນທີ່ຈະແລ່ນ X ທັງໝົດຢູ່ໃນ
localhost), ການຈັດຕາຕະລາງ (ຕາມຄ່າເລີ່ມຕົ້ນ) ໃນຮູບແບບຮອບວຽນໂດຍຊ່ອງ CPU. ເບິ່ງສ່ວນທີ່ເຫຼືອຂອງ
ຫນ້ານີ້ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ກະລຸນາຮັບຊາບວ່າ mpirun ຈະຜູກມັດຂະບວນການໂດຍອັດຕະໂນມັດໃນຕອນເລີ່ມຕົ້ນຂອງຊຸດ v1.8.
ສອງຮູບແບບການຜູກມັດແມ່ນໃຊ້ໃນກໍລະນີທີ່ບໍ່ມີຄໍາແນະນໍາເພີ່ມເຕີມ:
ຜູກມັດ to ຫຼັກ: ເມື່ອຈໍານວນຂະບວນການແມ່ນ <= 2
ຜູກມັດ to ເຕົ້າສຽບ: ເມື່ອຈໍານວນຂະບວນການແມ່ນ > 2
ຖ້າຄໍາຮ້ອງສະຫມັກຂອງທ່ານໃຊ້ກະທູ້, ຫຼັງຈາກນັ້ນທ່ານອາດຈະຕ້ອງການໃຫ້ແນ່ໃຈວ່າທ່ານບໍ່ແມ່ນ
ຜູກມັດທັງໝົດ (ໂດຍການລະບຸ --bind-to none), ຫຼືຜູກມັດກັບຫຼາຍແກນໂດຍໃຊ້ an
ລະດັບການຜູກມັດທີ່ເຫມາະສົມຫຼືຈໍານວນສະເພາະຂອງອົງປະກອບການປຸງແຕ່ງຕໍ່ຄໍາຮ້ອງສະຫມັກ
ຂະບວນການ.
OPTIONS
ໄພຣຸນ ຈະສົ່ງຊື່ຂອງໄດເລກະທໍລີທີ່ມັນຖືກເອີ້ນຢູ່ໃນ node ທ້ອງຖິ່ນໄປຫາແຕ່ລະຄົນ
ຂອງ nodes ຫ່າງໄກສອກຫຼີກ, ແລະພະຍາຍາມປ່ຽນເປັນໄດເລກະທໍລີນັ້ນ. ເບິ່ງ "ການເຮັດວຽກໃນປະຈຸບັນ
Directory" ພາກສ່ວນຂ້າງລຸ່ມນີ້ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ໂຄງການສາມາດປະຕິບັດໄດ້. ນີ້ຖືກກໍານົດວ່າເປັນການໂຕ້ຖຽງທີ່ບໍ່ໄດ້ຮັບການຮັບຮູ້ຄັ້ງທໍາອິດ
ກັບ mpirun.
ຜ່ານການໂຕ້ຖຽງເວລາແລ່ນເຫຼົ່ານີ້ໄປຫາທຸກໆຂະບວນການໃຫມ່. ເຫຼົ່ານີ້ຕ້ອງເປັນສະເຫມີໄປ
ການໂຕ້ຖຽງສຸດທ້າຍກັບ ໄພຣຸນ. ຖ້າໄຟລ໌ບໍລິບົດຂອງແອັບຯຖືກໃຊ້, ຈະເປັນ
ບໍ່ສົນໃຈ.
-h, - ຊ່ວຍ
ສະແດງການຊ່ວຍເຫຼືອສໍາລັບຄໍາສັ່ງນີ້
-q, --ງຽບ
ສະກັດກັ້ນຂໍ້ຄວາມໃຫ້ຂໍ້ມູນຈາກ orterun ໃນລະຫວ່າງການປະຕິບັດຄໍາຮ້ອງສະຫມັກ.
-v, -- verbose
ເປັນຄຳເວົ້າ
-V, - ການປ່ຽນແປງ
ພິມໝາຍເລກສະບັບ. ຖ້າບໍ່ມີການໂຕ້ຖຽງອື່ນ, ນີ້ກໍ່ຈະເຮັດໃຫ້
orterun ທີ່ຈະອອກ.
- ສະແດງແຜນທີ່, --ສະແດງ-ແຜນທີ່
ສະແດງຕາຕະລາງສະແດງໃຫ້ເຫັນສະຖານທີ່ແຜນທີ່ຂອງແຕ່ລະຂະບວນການກ່ອນທີ່ຈະເປີດຕົວ.
-display-devel-ແຜນທີ່, --display-devel-ແຜນທີ່
ສະແດງຕາຕະລາງລາຍລະອຽດເພີ່ມເຕີມສະແດງໃຫ້ເຫັນສະຖານທີ່ແຜນທີ່ຂອງແຕ່ລະຂະບວນການກ່ອນ
ເພື່ອເປີດຕົວ (ປົກກະຕິແລ້ວມີຄວາມສົນໃຈກັບນັກພັດທະນາ).
- ການຈັດສັນການສະແດງຜົນ, --ການສະແດງ-ການຈັດສັນ
ສະແດງການຈັດສັນຊັບພະຍາກອນທີ່ກວດພົບ.
ໃຊ້ໜຶ່ງໃນຕົວເລືອກຕໍ່ໄປນີ້ເພື່ອລະບຸວ່າໂຮສໃດ (nodes) ຂອງກຸ່ມທີ່ຈະເປີດໃຊ້.
ໃຫ້ສັງເກດວ່າໃນຕອນເລີ່ມຕົ້ນຂອງການປ່ອຍ v1.8, mpirun ຈະເປີດຕົວ daemon ໃສ່ແຕ່ລະເຈົ້າພາບ
ໃນການຈັດສັນ (ຕາມການດັດແກ້ໂດຍທາງເລືອກດັ່ງຕໍ່ໄປນີ້) ໃນຕອນຕົ້ນຂອງ
ການປະຕິບັດ, ບໍ່ວ່າຈະເປັນຫຼືບໍ່ຂະບວນການຄໍາຮ້ອງສະຫມັກທີ່ສຸດຈະໄດ້ຮັບການສ້າງແຜນທີ່
ປະຕິບັດຢູ່ທີ່ນັ້ນ. ນີ້ແມ່ນເຮັດເພື່ອອະນຸຍາດໃຫ້ເກັບກໍາຂໍ້ມູນ topology ຮາດແວຈາກ
nodes ຫ່າງໄກສອກຫຼີກ, ດັ່ງນັ້ນໃຫ້ພວກເຮົາສ້າງແຜນທີ່ຂະບວນການຕໍ່ກັບ topology ທີ່ຮູ້ຈັກ. ຢ່າງໃດກໍຕາມ, ມັນເປັນ
ການປ່ຽນແປງຈາກພຶດຕິກໍາໃນການປ່ອຍກ່ອນຫນ້າທີ່ daemons ຖືກເປີດຕົວພຽງແຕ່ຫຼັງຈາກແຜນທີ່
ສໍາເລັດແລ້ວ, ແລະດັ່ງນັ້ນຈຶ່ງເກີດຂຶ້ນພຽງແຕ່ໃນ nodes ທີ່ຂະບວນການຄໍາຮ້ອງສະຫມັກຈະຕົວຈິງ
ຈະປະຕິບັດ.
-H, - ເຈົ້າພາບ, -ເຈົ້າພາບ
ລາຍຊື່ເຈົ້າພາບທີ່ຈະເອີ້ນຂະບວນການ.
-hostfile, --hostfile
ໃຫ້ hostfile ເພື່ອໃຊ້.
- ໄຟລ໌ເຄື່ອງຈັກ, -- ໄຟລ໌ເຄື່ອງຈັກ
ຄໍາສັບຄ້າຍຄື -hostfile.
-cpu-ຕັ້ງ, --cpu-ຕັ້ງ
ຈໍາກັດຂະບວນການເປີດຕົວໃຫ້ກັບ cpus ທີ່ມີເຫດຜົນທີ່ລະບຸໄວ້ໃນແຕ່ລະ node. ໃຫ້ສັງເກດວ່າ
ຕົວເລືອກການຜູກມັດຍັງຈະນຳໃຊ້ພາຍໃນຊອງຈົດໝາຍທີ່ກຳນົດໄວ້ - ຕົວຢ່າງ, ເຈົ້າສາມາດ
ເລືອກທີ່ຈະຜູກມັດແຕ່ລະຂະບວນການກັບພຽງແຕ່ຫນຶ່ງ cpu ພາຍໃນທີ່ກໍານົດໄວ້ CPU ທີ່ກໍານົດໄວ້.
ຕົວເລືອກຕໍ່ໄປນີ້ລະບຸຈໍານວນຂະບວນການທີ່ຈະເປີດຕົວ. ໃຫ້ສັງເກດວ່າ none ການ
ທາງເລືອກຫມາຍເຖິງນະໂຍບາຍການຜູກມັດໂດຍສະເພາະ - ຕົວຢ່າງ, ການຮ້ອງຂໍຂະບວນການ N ສໍາລັບແຕ່ລະເຕົ້າຮັບ
ບໍ່ໄດ້ຫມາຍຄວາມວ່າຂະບວນການຈະຖືກຜູກມັດກັບເຕົ້າຮັບ.
-c, -n, -- ນ, -e.g <#>
ດໍາເນີນການສໍາເນົາຫຼາຍໂຄງການນີ້ຢູ່ໃນຂໍ້ທີ່ໃຫ້. ທາງເລືອກນີ້ຊີ້ບອກວ່າ
ໄຟລ໌ທີ່ລະບຸໄວ້ເປັນໂປຣແກຣມທີ່ສາມາດປະຕິບັດໄດ້ ແລະບໍ່ແມ່ນບໍລິບົດຂອງແອັບພລິເຄຊັນ. ຖ້າບໍ່ມີ
ຄ່າແມ່ນໃຫ້ສໍາລັບຈໍານວນຂອງສໍາເນົາເພື່ອປະຕິບັດ (ເຊັ່ນ, ບໍ່ແມ່ນ "-np" ຫຼື
ຄໍາສັບຄ້າຍຄືກັນຂອງມັນໄດ້ຖືກສະຫນອງໃຫ້ຢູ່ໃນເສັ້ນຄໍາສັ່ງ), ເປີດ MPI ຈະດໍາເນີນການອັດຕະໂນມັດ
ສໍາເນົາຂອງໂຄງການໃນແຕ່ລະຊ່ອງຂະບວນການ (ເບິ່ງຂ້າງລຸ່ມນີ້ສໍາລັບການລາຍລະອຽດຂອງ "ຂະບວນການ
slot") , ແນວໃດກໍ່ຕາມ, ຄຸນນະສົມບັດນີ້ສາມາດໃຊ້ໄດ້ພຽງແຕ່ໃນຮູບແບບ SPMD ແລະຈະກັບຄືນມາ
ຄວາມຜິດພາດ (ໂດຍບໍ່ມີການເລີ່ມຕົ້ນການປະຕິບັດຂອງຄໍາຮ້ອງສະຫມັກ) ຖ້າບໍ່ດັ່ງນັ້ນ.
- ແຜນທີ່ໂດຍ ppr:N:
ເປີດຕົວ N ເທົ່າຂອງຈໍານວນຂອງວັດຖຸຂອງປະເພດທີ່ລະບຸໄວ້ໃນແຕ່ລະ node.
-npersocket, --npersocket <#persocket>
ໃນແຕ່ລະ node, ເປີດຂະບວນການນີ້ຫຼາຍເທົ່າຂອງຈໍານວນຊັອກເກັດຂອງໂປເຊດເຊີທີ່ເປີດ
node ໄດ້. ໄດ້ -npersocket ທາງເລືອກຍັງ turns ສຸດ -bind-to-socket ທາງເລືອກ.
(ຖືກຄັດຄ້ານໃນເງື່ອນໄຂຂອງ --map-by ppr:n:socket)
- ນາມສະກຸນ, --npernode <#pernode>
ໃນແຕ່ລະ node, ເປີດຂະບວນການຈໍານວນຫຼາຍນີ້. (ຖືກຄັດຄ້ານໃນເງື່ອນໄຂຂອງ --map-by
ppr:n:node)
- pernode, --pernode
ໃນແຕ່ລະ node, ເປີດຂະບວນການຫນຶ່ງ - ເທົ່າກັບ - ນາມສະກຸນ 1. (ເຊົາຮອງຮັບໃນ
ເງື່ອນໄຂຂອງ --map-by ppr:1: node)
ແຜນທີ່ຂະບວນການ:
--ແຜນທີ່ໂດຍ
ແຜນທີ່ໄປຫາວັດຖຸທີ່ລະບຸໄວ້, ເລີ່ມຕົ້ນເປັນ socket. ທາງເລືອກທີ່ສະຫນັບສະຫນູນປະກອບມີ slot,
hwthread, core, L1cache, L2cache, L3cache, socket, numa, board, node, sequential,
ໄລຍະຫ່າງ, ແລະ ppr. ວັດຖຸໃດນຶ່ງສາມາດປະກອບມີຕົວແກ້ໄຂໂດຍການເພີ່ມ : ແລະອັນໃດນຶ່ງ
ການປະສົມປະສານຂອງ PE=n (bind n ອົງປະກອບການປະມວນຜົນກັບແຕ່ລະ proc), SPAN (ການດຸ່ນດ່ຽງການໂຫຼດ
ຂະບວນການໃນທົ່ວການຈັດສັນ), OVERSUBSCRIBE (ອະນຸຍາດໃຫ້ຂະບວນການເພີ່ມເຕີມໃນ node
ກ່ວາອົງປະກອບປະມວນຜົນ), ແລະ NOOVERSUBSCRIBE. ນີ້ປະກອບມີ PPR, ບ່ອນທີ່
ຮູບແບບຈະຖືກຢຸດໂດຍຈໍ້າສອງເມັດເພື່ອແຍກມັນອອກຈາກຕົວດັດແປງ.
-ໂດຍຫຼັກ, --ໂດຍຫຼັກ
ຂະບວນການແຜນທີ່ໂດຍຫຼັກ (ຍົກເລີກການສະໜັບສະໜູນຂອງ --map-by core)
- ຊ່ອງສຽບ, --bysocket
ຂະບວນການແຜນທີ່ໂດຍຊັອກເກັດ (ເຊົາຮອງຮັບການ --map-by socket)
- nolocal, --nolocal
ຢ່າດໍາເນີນການສໍາເນົາໃດໆຂອງແອັບພລິເຄຊັນທີ່ເປີດຕົວຢູ່ໃນ node ດຽວກັນກັບ orterun ແມ່ນ
ແລ່ນ. ຕົວເລືອກນີ້ຈະລົບລ້າງລາຍຊື່ localhost ກັບ -ເຈົ້າພາບ ຫຼືອື່ນໆ
ກົນໄກການກໍານົດເຈົ້າພາບ.
-nooversubscribe, --nooversubscribe
ບໍ່ oversubscribe nodes ໃດ; ຄວາມຜິດພາດ (ໂດຍບໍ່ມີການເລີ່ມຕົ້ນຂະບວນການໃດໆ) ຖ້າຫາກວ່າ
ຈໍານວນຂະບວນການທີ່ຮ້ອງຂໍຈະເຮັດໃຫ້ເກີດການຈອງເກີນ. ທາງເລືອກນີ້ implicitly
ກໍານົດ "max_slots" ເທົ່າກັບຄ່າ "slots" ສໍາລັບແຕ່ລະ node.
-bynode, --bynode
ການເປີດຕົວດໍາເນີນການຫນຶ່ງຕໍ່ node, ຮອບວຽນໂດຍ node ໃນຄົນອັບເດດ: round-robin. ນີ້
ກະຈາຍຂະບວນການເທົ່າທຽມກັນລະຫວ່າງ nodes ແລະຈັດລໍາດັບ MPI_COMM_WORLD ໃນຮອບ-
robin, "ໂດຍ node".
ເພື່ອຈັດລໍາດັບຂະບວນການໃນ MPI_COMM_WORLD:
-- ອັນດັບໂດຍ
ອັນດັບໃນຄົນອັບເດດ: round-robin ຕາມຈຸດປະສົງທີ່ລະບຸໄວ້, ເລີ່ມຕົ້ນທີ່ຈະ ຊ່ອງ.
ທາງເລືອກທີ່ສະຫນັບສະຫນູນປະກອບມີຊ່ອງສຽບ, hwthread, core, L1cache, L2cache, L3cache, socket,
numa, board, ແລະ node.
ສໍາລັບການຜູກມັດຂະບວນການ:
--bind-to
ຜູກມັດຂະບວນການກັບຈຸດປະສົງທີ່ກໍານົດໄວ້, defaults ກັບ core. ທາງເລືອກທີ່ສະຫນັບສະຫນູນປະກອບມີ
slot, hwthread, core, l1cache, l2cache, l3cache, socket, numa, board, ແລະບໍ່ມີ.
-cpus-per-proc, --cpus-per-proc <#perproc>
ຜູກມັດແຕ່ລະຂະບວນການກັບຈໍານວນ CPU ທີ່ລະບຸ. (ຖືກຄັດຄ້ານໃນເງື່ອນໄຂຂອງ --map-
ໂດຍ :PE=n)
-cpus ຕໍ່ອັນດັບ, --cpus-ຕໍ່-ອັນດັບ <#perrank>
ນາມແຝງສໍາລັບ -cpus-per-proc. (ຖືກຄັດຄ້ານໃນເງື່ອນໄຂຂອງ --map-by :PE=n)
-bind-to-core, --bind-to-core
ຜູກມັດຂະບວນການກັບຫຼັກ (ເຊົາສະຫນັບສະຫນູນຂອງ --bind-to core)
-bind-to-socket, --bind-to-socket
ຜູກມັດຂະບວນການກັບຊັອກເກັດປະມວນຜົນ (ເຊົາສະຫນັບສະຫນູນຂອງ --bind-to socket)
-bind-to-none, --bind-to-none
ຢ່າຜູກມັດຂະບວນການ (ຖືກຄັດຄ້ານໃນເງື່ອນໄຂຂອງ --bind-to none)
- ລາຍງານການຜູກມັດ, --report-bindings
ລາຍງານການຜູກມັດໃດໆສໍາລັບຂະບວນການທີ່ເປີດຕົວ.
- ລາຍການຊ່ອງ, --ລາຍການຊ່ອງ
ບັນຊີລາຍຊື່ຂອງ ID ໂປເຊດເຊີທີ່ຈະໃຊ້ສໍາລັບການຜູກມັດຂະບວນການ MPI. ການຜູກມັດທີ່ລະບຸໄວ້
ຈະຖືກນໍາໃຊ້ກັບຂະບວນການ MPI ທັງຫມົດ. ເບິ່ງຄໍາອະທິບາຍຂ້າງລຸ່ມນີ້ສໍາລັບ syntax.
ສໍາລັບ rankfiles:
-rf, --rankfile
ສະໜອງໄຟລ໌ rankfile.
ເພື່ອຈັດການ I/O ມາດຕະຖານ:
-output-filename, --output-filename
ປ່ຽນເສັ້ນທາງ stdout, stderr, ແລະ stddiag ຂອງຂະບວນການທັງຫມົດໄປສູ່ຂະບວນການທີ່ເປັນເອກະລັກ
ລຸ້ນຂອງຊື່ໄຟລ໌ທີ່ລະບຸ. ໄດເລກະທໍລີໃດໆໃນຊື່ໄຟລ໌ຈະ
ຖືກສ້າງຂື້ນໂດຍອັດຕະໂນມັດ. ແຕ່ລະໄຟລ໌ຜົນຜະລິດຈະປະກອບດ້ວຍ filename.id, ບ່ອນທີ່
id ຈະເປັນອັນດັບຂອງຂະບວນການໃນ MPI_COMM_WORLD, ຊ້າຍເຕັມດ້ວຍສູນສໍາລັບ
ຄໍາສັ່ງທີ່ຖືກຕ້ອງໃນລາຍຊື່.
-stdin, --stdin
ອັນດັບ MPI_COMM_WORLD ຂອງຂະບວນການທີ່ຈະຮັບ stdin. ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອ
ສົ່ງຕໍ່ stdin ໄປຫາ MPI_COMM_WORLD ອັນດັບ 0, ແຕ່ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອສົ່ງຕໍ່
stdin ກັບຂະບວນການໃດກໍ່ຕາມ. ມັນຍັງເປັນການຍອມຮັບທີ່ຈະລະບຸ none, ຊີ້ໃຫ້ເຫັນວ່າບໍ່ມີ
ຂະບວນການແມ່ນໄດ້ຮັບການ stdin.
-tag-output, --tag-output
ແທັກແຕ່ລະແຖວຂອງຜົນຜະລິດໄປຫາ stdout, stderr, ແລະ stddiag ດ້ວຍ [ວຽກເຮັດງານທໍາ,
MCW_rank] ຊີ້ໃຫ້ເຫັນຂະບວນການ jobid ແລະ MPI_COMM_WORLD ອັນດັບຂອງ
ຂະບວນການທີ່ຜະລິດຜົນຜະລິດ, ແລະຊ່ອງທາງທີ່ຜະລິດມັນ.
-timestamp-output, --timestamp-output
ການສະແຕມເວລາແຕ່ລະແຖວຂອງຜົນຜະລິດເປັນ stdout, stderr, ແລະ stddiag.
-xml, --xml
ສະໜອງຜົນຜະລິດທັງໝົດໃຫ້ກັບ stdout, stderr, ແລະ stddiag ໃນຮູບແບບ xml.
-xterm, --xterm
ສະແດງຜົນໄດ້ຮັບຈາກຂະບວນການທີ່ກໍານົດໂດຍ MPI_COMM_WORLD ຂອງເຂົາເຈົ້າຈັດອັນດັບໃນ
windows xterm ແຍກຕ່າງຫາກ. ອັນດັບແມ່ນລະບຸເປັນລາຍການທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ
ຂອບເຂດ, ທີ່ມີ -1 ຊີ້ໃຫ້ເຫັນທັງຫມົດ. ປ່ອງຢ້ຽມແຍກຕ່າງຫາກຈະຖືກສ້າງຂຶ້ນສໍາລັບແຕ່ລະຄົນ
ຂະບວນການທີ່ກໍານົດໄວ້. ຫມາຍເຫດ: xterm ປົກກະຕິຈະປິດປ່ອງຢ້ຽມເມື່ອປິດ
ຂອງຂະບວນການທີ່ເຮັດວຽກຢູ່ໃນມັນ. ຢ່າງໃດກໍຕາມ, ໂດຍການເພີ່ມ "!" ໃນຕອນທ້າຍຂອງບັນຊີລາຍຊື່
ຂອງການຈັດອັນດັບທີ່ກໍານົດໄວ້, ທາງເລືອກທີ່ເຫມາະສົມຈະຖືກສະຫນອງໃຫ້ເພື່ອຮັບປະກັນວ່າ xterm ຮັກສາ
ປ່ອງຢ້ຽມເປີດ ຫຼັງຈາກ ຂະບວນການສິ້ນສຸດລົງ, ດັ່ງນັ້ນທ່ານສາມາດເຫັນຂະບວນການ.
ຜົນຜະລິດ. ແຕ່ລະປ່ອງຢ້ຽມ xterm ຕໍ່ມາຈະຕ້ອງປິດດ້ວຍຕົນເອງ. ຫມາຍເຫດ: In
ບາງສະພາບແວດລ້ອມ, xterm ອາດຈະຮຽກຮ້ອງໃຫ້ປະຕິບັດໄດ້ຢູ່ໃນເສັ້ນທາງຂອງຜູ້ໃຊ້, ຫຼື
ໄດ້ຖືກລະບຸໄວ້ໃນເງື່ອນໄຂຢ່າງແທ້ຈິງຫຼືເປັນພີ່ນ້ອງກັນ. ດັ່ງນັ້ນ, ມັນອາດຈະຈໍາເປັນຕ້ອງລະບຸ a
ທ້ອງຖິ່ນສາມາດປະຕິບັດໄດ້ເປັນ "./foo" ແທນທີ່ຈະເປັນ "foo". ຖ້າ xterm ບໍ່ສາມາດຊອກຫາໄດ້
ປະຕິບັດໄດ້, mpirun ຈະວາງສາຍ, ແຕ່ຍັງຄົງຕອບສະຫນອງຢ່າງຖືກຕ້ອງກັບ ctrl-c. ຖ້ານີ້
ເກີດຂຶ້ນ, ກະລຸນາກວດສອບວ່າການປະຕິບັດແມ່ນໄດ້ຖືກລະບຸໄວ້ຢ່າງຖືກຕ້ອງແລະພະຍາຍາມ
ອີກເທື່ອຫນຶ່ງ.
ເພື່ອຈັດການໄຟລ໌ ແລະສະພາບແວດລ້ອມ runtime:
- ເສັ້ນທາງ, --ເສັ້ນທາງ
ທີ່ຈະໃຊ້ໃນເວລາທີ່ພະຍາຍາມຊອກຫາສະຖານທີ່ປະຕິບັດການຮ້ອງຂໍ. ນີ້
ຖືກນໍາໃຊ້ກ່ອນທີ່ຈະໃຊ້ການຕັ້ງຄ່າ PATH ທ້ອງຖິ່ນ.
-- ຄໍານໍາຫນ້າ
prefix directory ທີ່ຈະຖືກນໍາໃຊ້ເພື່ອກໍານົດ PATH ແລະ LD_LIBRARY_PATH ກ່ຽວກັບ
node ໄລຍະໄກກ່ອນທີ່ຈະເອີ້ນ Open MPI ຫຼືຂະບວນການເປົ້າຫມາຍ. ເບິ່ງ "ໄລຍະໄກ
ການປະຕິບັດ" ພາກສ່ວນ, ຂ້າງລຸ່ມນີ້.
--preload-binary
ສຳເນົາເຄື່ອງປະຕິບັດການທີ່ລະບຸໄວ້ໃສ່ເຄື່ອງທາງໄກກ່ອນທີ່ຈະເລີ່ມຣີໂໝດ
ຂະບວນການ. ຄຳສັ່ງທີ່ປະຕິບັດໄດ້ຈະຖືກຄັດລອກໄປທີ່ Open MPI session directory ແລະ
ຈະຖືກລົບອອກເມື່ອສໍາເລັດວຽກງານ.
--preload-files
ໂຫຼດລາຍການໄຟລ໌ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດລ່ວງໜ້າໃສ່ລາຍການທີ່ເຮັດວຽກປະຈຸບັນຂອງ
ເຄື່ອງຈັກຫ່າງໄກສອກຫຼີກທີ່ຂະບວນການຈະຖືກເປີດຕົວກ່ອນທີ່ຈະເລີ່ມຕົ້ນຂະບວນການເຫຼົ່ານັ້ນ.
--preload-files-dest-dir
ໄດເຣັກທໍຣີປາຍທາງທີ່ຈະໃຊ້ສໍາລັບ preload-files, ຖ້າເປັນອັນອື່ນທີ່ບໍ່ແມ່ນປັດຈຸບັນ
ໄດເລກະທໍລີເຮັດວຽກ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ເສັ້ນທາງຢ່າງແທ້ຈິງແລະພີ່ນ້ອງສະຫນອງໃຫ້ໂດຍ
--preload-files ຖືກນໍາໃຊ້.
--tmpdir
ຕັ້ງຮາກສໍາລັບຕົ້ນໄມ້ໄດເລກະທໍລີ session ສໍາລັບ mpirun ເທົ່ານັ້ນ.
-wd
ຄໍາສັບຄ້າຍຄື -wdir.
-wdir
ປ່ຽນເປັນໄດເລກະທໍລີ ກ່ອນທີ່ໂຄງການຂອງຜູ້ໃຊ້ຈະປະຕິບັດ. ເບິ່ງ "ປະຈຸບັນ
ບັນຊີລາຍການເຮັດວຽກ" ສໍາລັບບັນທຶກກ່ຽວກັບເສັ້ນທາງທີ່ກ່ຽວຂ້ອງ. ຫມາຍເຫດ: ຖ້າ -wdir ທາງເລືອກ
ປະກົດທັງຢູ່ໃນເສັ້ນຄໍາສັ່ງແລະໃນສະພາບການຄໍາຮ້ອງສະຫມັກ, ສະພາບການຈະ
ມີຄວາມສຳຄັນເໜືອເສັ້ນຄຳສັ່ງ. ດັ່ງນັ້ນ, ຖ້າເສັ້ນທາງໄປສູ່ wdir ທີ່ຕ້ອງການແມ່ນ
ແຕກຕ່າງກັນກ່ຽວກັບຂໍ້ backend, ຫຼັງຈາກນັ້ນມັນຕ້ອງໄດ້ຮັບການລະບຸວ່າເປັນເສັ້ນທາງຢ່າງແທ້ຈິງທີ່
ຖືກຕ້ອງສໍາລັບ backend node.
-x
ສົ່ງອອກຕົວແປສະພາບແວດລ້ອມທີ່ລະບຸໄວ້ໃນຂໍ້ຫ່າງໄກສອກຫຼີກກ່ອນທີ່ຈະດໍາເນີນການ
ໂຄງການ. ສາມາດລະບຸຕົວແປສະພາບແວດລ້ອມອັນດຽວຕໍ່ -x ທາງເລືອກ. ທີ່ມີຢູ່ແລ້ວ
ຕົວແປສະພາບແວດລ້ອມສາມາດຖືກກໍານົດຫຼືຊື່ຕົວແປໃຫມ່ທີ່ລະບຸດ້ວຍ
ຄ່າທີ່ສອດຄ້ອງກັນ. ຍົກຕົວຢ່າງ:
% mpirun -x DISPLAY -x OFILE=/tmp/out ...
parser ສໍາລັບ -x ທາງເລືອກແມ່ນບໍ່ sophisticated ຫຼາຍ; ມັນບໍ່ເຂົ້າໃຈ
ຄຸນຄ່າທີ່ອ້າງອີງ. ຜູ້ໃຊ້ໄດ້ຖືກແນະນໍາໃຫ້ກໍານົດຕົວແປໃນສະພາບແວດລ້ອມ, ແລະຫຼັງຈາກນັ້ນນໍາໃຊ້
-x ເພື່ອສົ່ງອອກ (ບໍ່ກໍານົດ) ພວກມັນ.
ການຕັ້ງຄ່າຕົວກໍານົດການ MCA:
-gmca, --gmca
ຜ່ານຕົວກໍານົດການ MCA ທົ່ວໂລກທີ່ໃຊ້ໄດ້ກັບທຸກສະພາບການ. ເປັນ
ຊື່ພາລາມິເຕີ; ແມ່ນຄ່າພາລາມິເຕີ.
-mca, --mca
ສົ່ງການໂຕ້ຖຽງກັບໂມດູນ MCA ຕ່າງໆ. ເບິ່ງພາກ "MCA", ຂ້າງລຸ່ມນີ້.
ສໍາລັບການດີບັກ:
-ແມງໄມ້, --debug
ຮຽກຮ້ອງໃຫ້ debugger ລະດັບຜູ້ໃຊ້ລະບຸໄວ້ໂດຍ orte_base_user_debugger CAM
ພາລາມິເຕີ.
-debugger, --debugger
ລໍາດັບຂອງ debuggers ເພື່ອຊອກຫາເວລາ --debug ຖືກນໍາໃຊ້ (ເຊັ່ນຄໍາສັບຄ້າຍຄືສໍາລັບ
orte_base_user_debugger ພາຣາມິເຕີ MCA).
- ໂທລະພາບ, --tv
ເປີດຂະບວນການພາຍໃຕ້ການດີບັກ TotalView. ປະຕິເສດຄວາມເຂົ້າກັນໄດ້ກັບຫຼັງ
ທຸງ. ຄໍາສັບຄ້າຍຄື --debug.
ຍັງມີທາງເລືອກອື່ນອີກ:
--allow-run-as-root
ອະນຸຍາດໃຫ້ ໄພຣຸນ ເພື່ອດໍາເນີນການໃນເວລາທີ່ປະຕິບັດໂດຍຜູ້ໃຊ້ຮາກ (ໄພຣຸນ ເລີ່ມຕົ້ນທີ່ຈະເອົາລູກອອກ
ເມື່ອເປີດຕົວເປັນຜູ້ໃຊ້ຮາກ).
- ເອົາລູກອອກ, -- ເອົາລູກອອກ <#>
ກໍານົດຈໍານວນສູງສຸດຂອງຂະບວນການທີ່ຖືກຍົກເລີກເພື່ອສະແດງ.
--ແອັບ
ໃຫ້ appfile, ບໍ່ສົນໃຈທາງເລືອກແຖວຄໍາສັ່ງອື່ນໆ.
-cf, --cartofile
ສະໜອງໄຟລ໌ແຜນຜັງ.
--hetero
ຊີ້ໃຫ້ເຫັນວ່າຫຼາຍ app_contexts ກໍາລັງຖືກສະຫນອງໃຫ້ເປັນປະສົມຂອງ 32/64-bit
ໄບນາລີ.
-leave-session-ຄັດຕິດ, --leave-session-attached
ຢ່າແຍກ daemons OmpiRTE ທີ່ໃຊ້ໂດຍແອັບພລິເຄຊັນນີ້. ນີ້ອະນຸຍາດໃຫ້ຂໍ້ຄວາມຄວາມຜິດພາດ
ຈາກ daemons ເຊັ່ນດຽວກັນກັບສະພາບແວດລ້ອມທີ່ຕິດພັນ (ຕົວຢ່າງ, ເມື່ອລົ້ມເຫລວ
ເປີດ daemon) ທີ່ຈະອອກ.
-ompi-ເຊີບເວີ, --ompi-ເຊີບເວີ <uri or ໄຟລ໌>
ລະບຸ URI ຂອງເຊີບເວີ MPI ເປີດ (ຫຼື mpirun ທີ່ຈະໃຊ້ເປັນເຄື່ອງແມ່ຂ່າຍ),
ຊື່ຂອງໄຟລ໌ (ລະບຸເປັນໄຟລ໌:ຊື່ໄຟລ໌) ທີ່ມີຂໍ້ມູນນັ້ນ, ຫຼື
PID (ລະບຸເປັນ pid:#) ຂອງ mpirun ທີ່ຈະໃຊ້ເປັນ
ເຊີບເວີ. ເຊີບເວີ MPI ເປີດແມ່ນໃຊ້ເພື່ອຮອງຮັບຂໍ້ມູນຫຼາຍແອັບພລິເຄຊັນ
ແລກປ່ຽນຜ່ານຟັງຊັນ MPI-2 MPI_Publish_name ແລະ MPI_Lookup_name.
-report-pid, --report-pid
ພິມ PID ຂອງ mpirun ໃນລະຫວ່າງການເລີ່ມຕົ້ນ. ຊ່ອງຈະຕ້ອງເປັນ '-' ເປັນ indi
ກໍານົດວ່າ pid ຈະຖືກສົ່ງອອກເປັນ stdout, '+' ເພື່ອຊີ້ບອກວ່າ pid ແມ່ນເພື່ອ.
be outp ut to stderr, ຫຼືຊື່ໄຟລ໌ທີ່ pid ຈະຖືກຂຽນ.
-report-uri, --report-uri
ພິມ URI ຂອງ mpirun ໃນລະຫວ່າງການເລີ່ມຕົ້ນ. ຊ່ອງຈະຕ້ອງເປັນ '-' ເປັນ indi
ກໍານົດວ່າ URI ຈະຖືກສົ່ງອອກເປັນ stdout, '+' ເພື່ອຊີ້ບອກວ່າ URI ແມ່ນເພື່ອ.
be outp ut to stderr, ຫຼືຊື່ໄຟລ໌ທີ່ URI ຈະຖືກຂຽນ.
- wait-for-server, -- wait-for-server
ຢຸດ mpirun ກ່ອນທີ່ຈະເປີດວຽກຈົນກ່ວາ ompi-server ຖືກກວດພົບ. ນີ້ແມ່ນເປັນປະໂຫຍດ
ໃນສະຄຣິບທີ່ ompi-server ອາດຈະຖືກເລີ່ມຕົ້ນໃນພື້ນຫລັງ, ປະຕິບັດຕາມທັນທີ
ໂດຍເປັນ ໄພຣຸນ ຄໍາສັ່ງທີ່ຕ້ອງການທີ່ຈະເຊື່ອມຕໍ່ກັບມັນ. Mpirun ຈະຢຸດຊົ່ວຄາວຈົນກ່ວາທັງສອງ
ເຊີບເວີ ompi ທີ່ລະບຸໄວ້ຈະຖືກຕິດຕໍ່ ຫຼືເກີນເວລາລໍຖ້າເຊີບເວີ.
-server- wait-time, --ເຊີບເວີ-ລໍຖ້າ-ເວລາ
ເວລາສູງສຸດ (ເປັນວິນາທີ) mpirun ຄວນລໍຖ້າໃຫ້ ompi-server
ເລີ່ມ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 10 ວິນາທີ.
ຕົວເລືອກຕໍ່ໄປນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບນັກພັດທະນາ; ໂດຍທົ່ວໄປແລ້ວພວກມັນບໍ່ມີປະໂຫຍດຕໍ່ສ່ວນໃຫຍ່
ຜູ້ໃຊ້ ORTE ແລະ/ຫຼື MPI:
-d, --debug-devel
ເປີດໃຊ້ການດີບັກຂອງ OmpiRTE (ຊັ້ນເວລາແລ່ນໃນ Open MPI). ນີ້ບໍ່ແມ່ນ
ໂດຍທົ່ວໄປແລ້ວເປັນປະໂຫຍດສໍາລັບຜູ້ໃຊ້ສ່ວນໃຫຍ່.
--debug-daemons
ເປີດໃຊ້ການດີບັກຂອງ daemons OmpiRTE ທີ່ໃຊ້ໂດຍແອັບພລິເຄຊັນນີ້.
--debug-daemons-file
ເປີດໃຊ້ການດີບັກຂອງ daemons OmpiRTE ທີ່ໃຊ້ໂດຍແອັບພລິເຄຊັນນີ້, ເກັບຮັກສາຜົນຜະລິດຢູ່ໃນ
ໄຟລ໌.
- ຕົວແທນການເປີດຕົວ, --launch-ຕົວແທນ
ຊື່ຂອງການປະຕິບັດທີ່ຖືກນໍາໃຊ້ເພື່ອເລີ່ມຕົ້ນຂະບວນການໃນ nodes ຫ່າງໄກສອກຫຼີກ.
ຄ່າເລີ່ມຕົ້ນແມ່ນ "orted". ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອທົດສອບແນວຄວາມຄິດ daemon ໃຫມ່, ຫຼືເພື່ອ
ຜ່ານທາງເລືອກກັບຄືນໄປບ່ອນ daemons ໂດຍບໍ່ມີການ mpirun ຕົວຂອງມັນເອງເບິ່ງໃຫ້ເຂົາເຈົ້າ. ສໍາລັບ
ຕົວຢ່າງ, ການລະບຸຕົວແທນເປີດຕົວຂອງ orted -mca odls_base_verbose 5 ອະນຸຍາດໃຫ້
ນັກພັດທະນາຂໍໃຫ້ orted ສໍາລັບການ debugging output ໂດຍບໍ່ມີການ clutter ຈາກ mpirun ຕົວຂອງມັນເອງ.
--noprefix
ປິດການທໍາງານພຶດຕິກໍາ --prefix ອັດຕະໂນມັດ
ອາດຈະມີທາງເລືອກອື່ນທີ່ມີລາຍຊື່ ໄພຣຸນ - ຊ່ວຍ.
ສະພາບແວດລ້ອມ Variables
MPIEXEC_TIMEOUT
ຈໍານວນສູງສຸດຂອງວິນາທີນັ້ນ ໄພຣຸນ (mpiexec) ຈະດໍາເນີນການ. ຫຼັງຈາກນີ້ຈໍານວນຫຼາຍ
ວິນາທີ, ໄພຣຸນ ຈະຍົກເລີກວຽກທີ່ເປີດຕົວ ແລະອອກ.
ລາຍລະອຽດ
ຄໍາຮ້ອງສະຫມັກຫນຶ່ງຂອງ ໄພຣຸນ ເລີ່ມຕົ້ນແອັບພລິເຄຊັນ MPI ທີ່ເຮັດວຽກພາຍໃຕ້ Open MPI. ຖ້າ
ຄໍາຮ້ອງສະຫມັກແມ່ນຂໍ້ມູນຫຼາຍຂະບວນການດຽວ (SPMD), ຄໍາຮ້ອງສະຫມັກສາມາດໄດ້ຮັບການລະບຸໄວ້ກ່ຽວກັບ
ໄດ້ ໄພຣຸນ ບັນທັດຄໍາສັ່ງ.
ຖ້າຄໍາຮ້ອງສະຫມັກແມ່ນຂໍ້ມູນຫຼາຍຄໍາແນະນໍາ (MIMD), ປະກອບດ້ວຍຫຼາຍ
ບັນດາໂຄງການ, ຊຸດຂອງໂປລແກລມແລະການໂຕ້ຖຽງສາມາດໄດ້ຮັບການລະບຸໄວ້ໃນຫນຶ່ງໃນສອງວິທີ: ຂະຫຍາຍ
ການໂຕ້ຖຽງແຖວຄໍາສັ່ງ, ແລະສະພາບການຄໍາຮ້ອງສະຫມັກ.
ບໍລິບົດຂອງແອັບພລິເຄຊັນອະທິບາຍຊຸດໂປຣແກມ MIMD ລວມທັງອາກິວເມັນທັງໝົດໃນ a
ໄຟລ໌ແຍກຕ່າງຫາກ. ໄຟລ໌ນີ້ເປັນສິ່ງຈໍາເປັນຫຼາຍ ໄພຣຸນ ເສັ້ນຄໍາສັ່ງ, ຫນ້ອຍລົງ
ຊື່ຄໍາສັ່ງຂອງມັນເອງ. ຄວາມສາມາດໃນການກໍານົດທາງເລືອກທີ່ແຕກຕ່າງກັນສໍາລັບການທີ່ແຕກຕ່າງກັນ
instantiations ຂອງໂຄງການແມ່ນເຫດຜົນອື່ນທີ່ຈະນໍາໃຊ້ບໍລິບົດຂອງຄໍາຮ້ອງສະຫມັກ.
ການໂຕ້ຖຽງແຖວຄໍາສັ່ງຂະຫຍາຍອະນຸຍາດໃຫ້ສໍາລັບຄໍາອະທິບາຍຂອງຮູບແບບຄໍາຮ້ອງສະຫມັກກ່ຽວກັບ
ເສັ້ນຄໍາສັ່ງໂດຍໃຊ້ຈໍ້າສອງເມັດ (:) ເພື່ອແຍກສະເພາະຂອງໂຄງການແລະການໂຕ້ຖຽງ.
ບາງທາງເລືອກແມ່ນຖືກກໍານົດໃນທົ່ວໂລກໃນທົ່ວທຸກໂຄງການທີ່ລະບຸໄວ້ (ເຊັ່ນ: --hostfile), ໃນຂະນະທີ່
ອື່ນໆແມ່ນສະເພາະກັບໂຄງການດຽວ (ຕົວຢ່າງ -np).
ການລະບຸ ເຈົ້າພາບ Nodes
ໂຮດຂອງໂຮດສາມາດຖືກກໍານົດຢູ່ໃນ ໄພຣຸນ ເສັ້ນຄໍາສັ່ງກັບ - ເຈົ້າພາບ ທາງເລືອກຫຼືໃນ a
hostfile.
ຍົກຕົວຢ່າງ,
mpirun -H aa,aa,bb ./a.out
ເປີດຂະບວນການສອງອັນໃນ node aa ແລະອັນນຶ່ງໃນ bb.
ຫຼື, ພິຈາລະນາ hostfile
% cat myhostfile
ຊ່ອງ aa=2
bb slots=2
cc slots=2
ທີ່ນີ້, ພວກເຮົາລາຍຊື່ທັງຊື່ເຈົ້າພາບ (aa, bb, ແລະ cc) ແຕ່ຍັງຈໍານວນ "ຊ່ອງ" ທີ່ມີສໍາລັບ.
ແຕ່ລະ. ສະລັອດຕິງຊີ້ບອກວ່າມີຂະບວນການຫຼາຍປານໃດທີ່ສາມາດປະຕິບັດໄດ້ໃນ node. ສໍາລັບທີ່ດີທີ່ສຸດ
ການປະຕິບັດ, ຈໍານວນຂອງສະລັອດຕິງອາດຈະໄດ້ຮັບຄັດເລືອກເປັນຈໍານວນຂອງ cores ສຸດ node ຫຼື
ຈໍານວນຂອງເຕົ້າຮັບໂປເຊດເຊີ. ຖ້າ hostfile ບໍ່ໃຫ້ຂໍ້ມູນຊ່ອງ, a
ຄ່າເລີ່ມຕົ້ນຂອງ 1 ແມ່ນສົມມຸດ. ເມື່ອແລ່ນພາຍໃຕ້ຜູ້ຈັດການຊັບພະຍາກອນ (ເຊັ່ນ: SLURM, Torque,
ແລະອື່ນໆ), ເປີດ MPI ຈະໄດ້ຮັບທັງ hostnames ແລະຈໍານວນຂອງ slots ໂດຍກົງຈາກ
ຜູ້ຈັດການຊັບພະຍາກອນ.
mpirun -hostfile myhostfile ./a.out
ຈະເປີດຕົວສອງຂະບວນການໃນແຕ່ລະສາມ nodes.
mpirun -hostfile myhostfile -host aa ./a.out
ຈະເປີດຕົວສອງຂະບວນການ, ທັງຢູ່ໃນ node aa.
mpirun -hostfile myhostfile -host dd ./a.out
ຈະພົບເຫັນບໍ່ມີໂຮສທີ່ຈະດໍາເນີນການ ແລະຍົກເລີກດ້ວຍຄວາມຜິດພາດ. ນັ້ນແມ່ນ, dd host ທີ່ກໍານົດໄວ້
ບໍ່ຢູ່ໃນ hostfile ທີ່ລະບຸ.
ການລະບຸ ຈໍານວນ of ຂະບວນການ
ດັ່ງທີ່ພວກເຮົາໄດ້ເຫັນພຽງແຕ່, ຈໍານວນຂະບວນການທີ່ຈະດໍາເນີນການສາມາດຖືກກໍານົດໂດຍໃຊ້ hostfile. ອື່ນໆ
ກົນໄກມີຢູ່.
ຈໍານວນຂະບວນການເປີດສາມາດໄດ້ຮັບການລະບຸໄວ້ເປັນຫຼາຍຂອງຈໍານວນຂອງຂໍ້ຫຼື
ເຕົ້າຮັບໂປເຊດເຊີທີ່ມີຢູ່. ຍົກຕົວຢ່າງ,
mpirun -H aa,bb -npersocket 2 ./a.out
ເປີດຂະບວນການ 0-3 ໃນ node aa ແລະຂະບວນການ 4-7 ໃນ node bb, ບ່ອນທີ່ aa ແລະ bb ແມ່ນທັງສອງ.
ຊ່ອງສຽບຄູ່. ໄດ້ -npersocket ທາງເລືອກຍັງ turns ສຸດ -bind-to-socket ທາງເລືອກ,
ເຊິ່ງໄດ້ຖືກປຶກສາຫາລືໃນພາກຕໍ່ໄປ.
mpirun -H aa,bb -npernode 2 ./a.out
ເປີດຕົວຂະບວນການ 0-1 ໃນ node aa ແລະຂະບວນການ 2-3 ໃນ node bb.
mpirun -H aa,bb -npernode 1 ./a.out
ເປີດຂະບວນການຫນຶ່ງຕໍ່ໂຮດໂຮດ.
mpirun -H aa,bb -pernode ./a.out
ແມ່ນຄືກັນກັບ - ນາມສະກຸນ 1.
ທາງເລືອກອື່ນແມ່ນການກໍານົດຈໍານວນຂອງຂະບວນການທີ່ມີ -e.g ທາງເລືອກ. ພິຈາລະນາ
ໃນປັດຈຸບັນ hostfile
% cat myhostfile
ຊ່ອງ aa=4
bb slots=4
cc slots=4
ໃນປັດຈຸບັນ,
mpirun -hostfile myhostfile -np 6 ./a.out
ຈະເປີດຕົວຂະບວນການ 0-3 ໃນ node aa ແລະຂະບວນການ 4-5 ໃນ node bb. ສ່ວນທີ່ເຫຼືອ
slots ໃນ hostfile ຈະບໍ່ຖືກນໍາໃຊ້ນັບຕັ້ງແຕ່ -e.g ທາງເລືອກສະແດງໃຫ້ເຫັນວ່າພຽງແຕ່ 6
ຂະບວນການຄວນຈະຖືກເປີດຕົວ.
ການເຮັດແຜນທີ່ ຂະບວນການ to ຂໍ້: ການນໍາໃຊ້ ນະໂຍບາຍ
ຕົວຢ່າງຂ້າງເທິງສະແດງໃຫ້ເຫັນແຜນທີ່ເລີ່ມຕົ້ນຂອງຂະບວນການຂະບວນການກັບ nodes. ນີ້
ການສ້າງແຜນທີ່ຍັງສາມາດຄວບຄຸມດ້ວຍສິ່ງຕ່າງໆ ໄພຣຸນ ທາງເລືອກທີ່ອະທິບາຍນະໂຍບາຍແຜນທີ່.
ພິຈາລະນາ hostfile ດຽວກັນກັບຂ້າງເທິງ, ອີກເທື່ອຫນຶ່ງກັບ -e.g 6:
node aa node bb node cc
mpirun 0 1 2 3 4 5
mpirun --map-by node 0 3 1 4 2 5
mpirun -nolocal 0 1 2 3 4 5
ໄດ້ --ແຜນທີ່ໂດຍ node ທາງເລືອກຈະໂຫຼດການດຸ່ນດ່ຽງຂະບວນການໃນທົ່ວ nodes ທີ່ມີຢູ່,
ການນັບຕົວເລກແຕ່ລະຂະບວນການໃນຮູບແບບຮອບວຽນ.
ໄດ້ - nolocal ທາງເລືອກປ້ອງກັນບໍ່ໃຫ້ຂະບວນການໃດຫນຶ່ງຈາກການສ້າງແຜນທີ່ກ່ຽວກັບເຈົ້າພາບທ້ອງຖິ່ນ (ໃນນີ້
case node aa). ໃນຂະນະທີ່ ໄພຣຸນ ປົກກະຕິແລ້ວການບໍລິໂພກຊັບພະຍາກອນລະບົບຈໍານວນຫນ້ອຍ, - nolocal ສາມາດ
ເປັນປະໂຫຍດສໍາລັບການເປີດຕົວວຽກຂະຫນາດໃຫຍ່ຫຼາຍບ່ອນທີ່ ໄພຣຸນ ຕົວຈິງແລ້ວອາດຈະຈໍາເປັນຕ້ອງໄດ້ນໍາໃຊ້ຫນັງສືແຈ້ງການ
ຈໍານວນຫນ່ວຍຄວາມຈໍາແລະ / ຫຼືເວລາປະມວນຜົນ.
ພຽງແຕ່ເປັນ -e.g ສາມາດກໍານົດຂະບວນການຫນ້ອຍກ່ວາມີສະລັອດຕິງ, ມັນຍັງສາມາດ oversubscribe
ສະລັອດຕິງ. ຕົວຢ່າງ, ກັບ hostfile ດຽວກັນ:
mpirun -hostfile myhostfile -np 14 ./a.out
ຈະເປີດຕົວຂະບວນການ 0-3 ໃນ node aa, 4-7 ໃນ bb, ແລະ 8-11 ໃນ cc. ຫຼັງຈາກນັ້ນມັນຈະເພີ່ມ
ຍັງເຫຼືອສອງຂະບວນການຕໍ່ກັບຂໍ້ໃດທີ່ມັນເລືອກ.
ຫນຶ່ງຍັງສາມາດກໍານົດຂອບເຂດຈໍາກັດການຈອງເກີນ. ຕົວຢ່າງ, ກັບ hostfile ດຽວກັນ:
mpirun -hostfile myhostfile -np 14 -nooversubscribe ./a.out
ຈະຜະລິດຄວາມຜິດພາດນັບຕັ້ງແຕ່ -nooversubscribe ປ້ອງກັນການຈອງເກີນ.
ການຈໍາກັດການຈອງເກີນສາມາດຖືກລະບຸໄວ້ໃນ hostfile ຕົວຂອງມັນເອງ:
% cat myhostfile
aa slots=4 max_slots=4
bb max_slots=4
cc slots=4
ໄດ້ max_slots ພາກສະຫນາມກໍານົດຂອບເຂດຈໍາກັດດັ່ງກ່າວ. ໃນເວລາທີ່ມັນເຮັດ, ໄດ້ ສະລັອດຕິງ ຄ່າເລີ່ມຕົ້ນເປັນ
ຈຳກັດ. ດຽວນີ້:
mpirun -hostfile myhostfile -np 14 ./a.out
ເຮັດໃຫ້ 12 ຂະບວນການທໍາອິດຖືກເປີດຕົວຄືເກົ່າ, ແຕ່ວ່າຍັງເຫຼືອອີກ XNUMX ຂະບວນການ
ຂະບວນການຈະຖືກບັງຄັບໃສ່ node cc. ອີກສອງຂໍ້ຖືກປົກປ້ອງໂດຍ
hostfile ຕໍ່ກັບການຈອງເກີນໂດຍການເຮັດວຽກນີ້.
ການນໍາໃຊ້ --nooversubscribe ທາງເລືອກສາມາດເປັນປະໂຫຍດນັບຕັ້ງແຕ່ Open MPI ໃນປັດຈຸບັນບໍ່ໄດ້ຮັບ
ຄ່າ "max_slots" ຈາກຜູ້ຈັດການຊັບພະຍາກອນ.
ແນ່ນອນ, -e.g ຍັງສາມາດຖືກນໍາໃຊ້ກັບ -H or - ເຈົ້າພາບ ທາງເລືອກ. ຍົກຕົວຢ່າງ,
mpirun -H aa,bb -np 8 ./a.out
ເປີດຕົວ 8 ຂະບວນການ. ເນື່ອງຈາກວ່າພຽງແຕ່ສອງເຈົ້າພາບແມ່ນຖືກກໍານົດ, ຫຼັງຈາກສອງຄັ້ງທໍາອິດ
ຂະບວນການແມ່ນແຜນທີ່, ຫນຶ່ງຫາ aa ແລະຫນຶ່ງຫາ bb, ຂະບວນການທີ່ຍັງເຫຼືອ oversubscribe
ເຈົ້າພາບທີ່ລະບຸໄວ້.
ແລະນີ້ແມ່ນຕົວຢ່າງ MIMD:
mpirun -H aa -np 1 hostname : -H bb,cc -np 2 uptime
ຈະເປີດຂະບວນການ 0 ແລ່ນ hostname ໃນ node aa ແລະຂະບວນການ 1 ແລະ 2 ແຕ່ລະແລ່ນ
uptime ໃນ nodes bb ແລະ cc, ຕາມລໍາດັບ.
ການວາງແຜນ, ອັນດັບ, ແລະ ການຜູກມັດ: Oh ຂອງຂ້ອຍ!
Open MPI ໃຊ້ຂັ້ນຕອນສາມຂັ້ນຕອນສໍາລັບການກໍານົດສະຖານທີ່ຂະບວນການແລະການຈັດອັນດັບ:
ແຜນທີ່ ກຳນົດສະຖານທີ່ເລີ່ມຕົ້ນໃຫ້ແຕ່ລະຂະບວນການ
ຈັດລຽງລໍາດັບ ກຳນົດຄ່າອັນດັບ MPI_COMM_WORLD ໃຫ້ກັບແຕ່ລະຂະບວນການ
binding ຈໍາກັດແຕ່ລະຂະບວນການທີ່ຈະດໍາເນີນການກ່ຽວກັບໂປເຊດເຊີສະເພາະ
ໄດ້ ແຜນທີ່ ຂັ້ນຕອນຖືກນໍາໃຊ້ເພື່ອກໍານົດສະຖານທີ່ເລີ່ມຕົ້ນໃຫ້ແຕ່ລະຂະບວນການໂດຍອີງໃສ່ຜູ້ສ້າງແຜນທີ່
ຖືກຈ້າງງານ. ການສ້າງແຜນທີ່ໂດຍສະລັອດຕິງ, node, ແລະລໍາດັບຜົນໄດ້ຮັບໃນການມອບຫມາຍຂອງ
ຂະບວນການໃນລະດັບ node. ໃນທາງກົງກັນຂ້າມ, ການສ້າງແຜນທີ່ໂດຍວັດຖຸ, ອະນຸຍາດໃຫ້ຜູ້ສ້າງແຜນທີ່ກໍານົດ
ຂະບວນການໄປຫາວັດຖຸຕົວຈິງໃນແຕ່ລະ node.
ຫມາຍເຫດ: ສະຖານທີ່ທີ່ຖືກມອບຫມາຍໃຫ້ຂະບວນການແມ່ນເອກະລາດຂອງບ່ອນທີ່ມັນຈະຖືກຜູກມັດ - the
ການມອບໝາຍແມ່ນໃຊ້ພຽງແຕ່ເປັນການປ້ອນຂໍ້ມູນເຂົ້າໃນລະບົບການຜູກມັດເທົ່ານັ້ນ.
ການສ້າງແຜນທີ່ຂອງຂະບວນການຂະບວນການກັບ nodes ສາມາດຖືກກໍານົດບໍ່ພຽງແຕ່ກັບນະໂຍບາຍທົ່ວໄປ
ແຕ່ຍັງ, ຖ້າຈໍາເປັນ, ການນໍາໃຊ້ແຜນທີ່ທີ່ມັກທີ່ບໍ່ສາມາດອະທິບາຍໄດ້ໂດຍງ່າຍດາຍ
ນະໂຍບາຍ. ຄົນເຮົາສາມາດໃຊ້ "sequential mapper," ເຊິ່ງອ່ານ hostfile line ໂດຍແຖວ,
ການມອບໝາຍຂະບວນການໃຫ້ກັບ nodes ໃນລຳດັບອັນໃດກໍໄດ້ທີ່ hostfile ກຳນົດ. ໃຊ້ -mca rmaps
seq ທາງເລືອກ. ຕົວຢ່າງ, ການໃຊ້ hostfile ຄືກັນກັບກ່ອນ:
mpirun -hostfile myhostfile -mca rmaps seq ./a.out
ຈະເປີດຕົວສາມຂະບວນການ, ຫນຶ່ງໃນແຕ່ລະ nodes aa, bb, ແລະ cc, ຕາມລໍາດັບ. ສະລັອດຕິງ
ການນັບບໍ່ສໍາຄັນ; ຂະບວນການຫນຶ່ງແມ່ນຖືກເປີດຕົວຕໍ່ເສັ້ນໃນອັນໃດກໍ່ຕາມທີ່ມີລາຍຊື່ຢູ່ໃນ
ເສັ້ນ.
ອີກວິທີຫນຶ່ງທີ່ຈະລະບຸແຜນທີ່ທີ່ຕົນເອງມັກແມ່ນດ້ວຍ rankfile, ເຊິ່ງໃຫ້ທ່ານລາຍລະອຽດ
ຄວບຄຸມຂະບວນການຜູກມັດເຊັ່ນດຽວກັນ. Rankfiles ແມ່ນສົນທະນາຂ້າງລຸ່ມນີ້.
ໄລຍະທີສອງແມ່ນສຸມໃສ່ການ ຈັດລຽງລໍາດັບ ຂອງຂະບວນການພາຍໃນ MPI_COMM_WORLD ຂອງວຽກ.
ເປີດ MPI ແຍກນີ້ອອກຈາກຂັ້ນຕອນການສ້າງແຜນທີ່ເພື່ອໃຫ້ມີຄວາມຍືດຫຍຸ່ນຫຼາຍຂຶ້ນໃນ
ການຈັດວາງທີ່ກ່ຽວຂ້ອງຂອງຂະບວນການ MPI. ນີ້ແມ່ນສະແດງໃຫ້ເຫັນດີທີ່ສຸດໂດຍການພິຈາລະນາຕໍ່ໄປນີ້
ສອງກໍລະນີທີ່ພວກເຮົາໃຊ້ —map-by ppr:2:socket option:
node aa node bb
ອັນດັບໂດຍຫຼັກ 0 1 ! 2 3 4 5 ! 6 7
ອັນດັບໂດຍ socket 0 2 ! 1 3 4 6 ! 5 7
ອັນດັບໂດຍ socket:span 0 4 ! 1 5 2 6 ! 3 7
ການຈັດອັນດັບໂດຍຫຼັກແລະໂດຍສະລັອດຕິງໃຫ້ຜົນໄດ້ຮັບທີ່ຄ້າຍຄືກັນ - ເປັນຄວາມຄືບຫນ້າງ່າຍດາຍຂອງ
MPI_COMM_WORLD ຈັດອັນດັບໃນທົ່ວແຕ່ລະ node. ການຈັດອັນດັບໂດຍຊັອກເກັດເຮັດການຈັດອັນດັບຮອບ-robin ພາຍໃນ
ແຕ່ລະ node ຈົນກ່ວາຂະບວນການທັງຫມົດໄດ້ຖືກມອບຫມາຍການຈັດອັນດັບ MCW, ແລະຫຼັງຈາກນັ້ນກ້າວໄປສູ່
node ຕໍ່ໄປ. ເພີ່ມ span ຕົວແກ້ໄຂຄໍາສັ່ງການຈັດອັນດັບເຮັດໃຫ້ລະບົບການຈັດອັນດັບ
ເພື່ອປະຕິບັດການຈັດສັນທັງຫມົດເປັນຫນ່ວຍງານດຽວ - ດັ່ງນັ້ນ, ການຈັດລໍາດັບ MCW ໄດ້ຖືກມອບຫມາຍ
ໃນທົ່ວເຕົ້າຮັບທັງໝົດກ່ອນທີ່ຈະວົງວຽນກັບຄືນໄປຫາຈຸດເລີ່ມຕົ້ນ.
ໄດ້ binding ໄລຍະຕົວຈິງຜູກມັດແຕ່ລະຂະບວນການກັບຊຸດຂອງໂປເຊດເຊີ. ນີ້ສາມາດ
ປັບປຸງການປະຕິບັດຖ້າຫາກວ່າລະບົບປະຕິບັດການກໍາລັງວາງຂະບວນການທີ່ເຫມາະສົມ. ສໍາລັບ
ຕົວຢ່າງ, ມັນອາດຈະ oversubscribe ບາງຊັອກເກັດໂປເຊດເຊີ multi-core, ອອກຈາກເຕົ້າສຽບອື່ນໆ
idle; ນີ້ສາມາດນໍາໄປສູ່ຂະບວນການທີ່ຈະຂັດແຍ້ງໂດຍບໍ່ຈໍາເປັນສໍາລັບຊັບພະຍາກອນທົ່ວໄປ. ຫຼື, ມັນ
ອາດຈະແຜ່ຂະຫຍາຍຂະບວນການອອກໄປຢ່າງກວ້າງຂວາງ; ນີ້ສາມາດເປັນສິ່ງທີ່ດີທີ່ສຸດຖ້າການປະຕິບັດຄໍາຮ້ອງສະຫມັກ
ມີຄວາມອ່ອນໄຫວຕໍ່ກັບຄ່າໃຊ້ຈ່າຍການສື່ສານລະຫວ່າງກັນ. ການຜູກມັດຍັງສາມາດຮັກສາການດໍາເນີນງານໄດ້
ລະບົບຈາກການເຄື່ອນຍ້າຍຂະບວນການຫຼາຍເກີນໄປ, ໂດຍບໍ່ຄໍານຶງເຖິງວິທີການທີ່ດີທີ່ສຸດຂອງຂະບວນການເຫຼົ່ານັ້ນ
ໄດ້ຖືກວາງໄວ້ເພື່ອເລີ່ມຕົ້ນດ້ວຍ.
ໂປເຊດເຊີທີ່ຈະໃຊ້ສໍາລັບການຜູກມັດສາມາດຖືກກໍານົດໃນແງ່ຂອງກຸ່ມ topological
- ຕົວຢ່າງ, ການຜູກມັດກັບ l3cache ຈະຜູກມັດແຕ່ລະຂະບວນການກັບໂປເຊດເຊີທັງຫມົດໃນຂອບເຂດຂອງ.
ແຄດ L3 ດຽວພາຍໃນສະຖານທີ່ທີ່ໄດ້ຮັບມອບຫມາຍຂອງພວກເຂົາ. ດັ່ງນັ້ນ, ຖ້າຫາກວ່າຂະບວນການໄດ້ຖືກມອບຫມາຍໂດຍ
mapper ກັບເຕົ້າຮັບທີ່ແນ່ນອນ, ຫຼັງຈາກນັ້ນ a — ຜູກມັດກັບ l3cache ຄໍາສັ່ງຈະເຮັດໃຫ້ເກີດຂະບວນການ
ຜູກມັດກັບໂປເຊດເຊີທີ່ແບ່ງປັນແຄດ L3 ດຽວພາຍໃນເຕົ້າຮັບນັ້ນ.
ເພື່ອຊ່ວຍໃຫ້ການດຸ່ນດ່ຽງການໂຫຼດ, ຄໍາແນະນໍາການຜູກມັດໃຊ້ວິທີການຮອບວຽນໃນເວລາທີ່ຜູກມັດ
ລະດັບຕ່ໍາກວ່າທີ່ໃຊ້ໃນແຜນທີ່. ຕົວຢ່າງ, ພິຈາລະນາກໍລະນີທີ່ວຽກເຮັດແຜນທີ່
ໃນລະດັບເຕົ້າຮັບ, ແລະຫຼັງຈາກນັ້ນຜູກມັດກັບຫຼັກ. ແຕ່ລະຊັອກເກັດຈະມີແກນຫຼາຍ, ດັ່ງນັ້ນຖ້າ
ຂະບວນການຫຼາຍອັນຖືກສ້າງແຜນທີ່ໃສ່ເຕົ້າຮັບທີ່ໃຫ້, ຂັ້ນຕອນການຜູກມັດຈະມອບໝາຍແຕ່ລະອັນ
ຂະບວນການຕັ້ງຢູ່ກັບເຕົ້າຮັບກັບຫຼັກການເປັນເອກະລັກໃນລັກສະນະໄດ້ຕະຫຼອດ.
ອີກທາງເລືອກ, ຂະບວນການທີ່ສ້າງແຜນທີ່ໂດຍ l2cache ແລະຫຼັງຈາກນັ້ນຖືກຜູກມັດກັບເຕົ້າຮັບພຽງແຕ່ຈະຖືກຜູກມັດ
ກັບໂປເຊດເຊີທັງຫມົດໃນເຕົ້າຮັບທີ່ພວກເຂົາຕັ້ງຢູ່. ໃນລັກສະນະນີ້, ຜູ້ໃຊ້ສາມາດເຮັດໄດ້
ອອກແຮງຄວບຄຸມລະອຽດກ່ຽວກັບທີ່ຕັ້ງອັນດັບ MCW ພີ່ນ້ອງແລະການຜູກມັດ.
ສຸດທ້າຍ, --report-bindings ສາມາດໃຊ້ເພື່ອລາຍງານການຜູກມັດ.
ເປັນຕົວຢ່າງ, ພິຈາລະນາ node ທີ່ມີສອງຊັອກເກັດໂປເຊດເຊີ, ແຕ່ລະປະກອບດ້ວຍສີ່ແກນ. ພວກເຮົາ
ແລ່ນ ໄພຣຸນ ກັບ -e.g 4 --report-bindings ແລະຕົວເລືອກເພີ່ມເຕີມຕໍ່ໄປນີ້:
% mpirun ... --map-by core --bind-to core
[... ] ... ຜູກມັດລູກ [...,0] ກັບ cpus 0001
[... ] ... ຜູກມັດລູກ [...,1] ກັບ cpus 0002
[... ] ... ຜູກມັດລູກ [...,2] ກັບ cpus 0004
[... ] ... ຜູກມັດລູກ [...,3] ກັບ cpus 0008
% mpirun ... --map-by socket --bind-to socket
[... ] ... ຜູກມັດລູກ [...,0] ກັບເຕົ້າຮັບ 0 cpus 000f
[... ] ... binding ເດັກ [...,1] to socket 1 cpus 00f0
[... ] ... ຜູກມັດລູກ [...,2] ກັບເຕົ້າຮັບ 0 cpus 000f
[... ] ... binding ເດັກ [...,3] to socket 1 cpus 00f0
% mpirun ... --map-by core:PE=2 --bind-to core
[... ] ... ຜູກມັດລູກ [...,0] ກັບ cpus 0003
[... ] ... binding ເດັກ [...,1] ກັບ cpus 000c
[... ] ... ຜູກມັດລູກ [...,2] ກັບ cpus 0030
[... ] ... binding ເດັກ [...,3] ກັບ cpus 00c0
% mpirun ... --bind-to none
ທີ່ນີ້, --report-bindings ສະແດງໃຫ້ເຫັນການຜູກມັດຂອງແຕ່ລະຂະບວນການເປັນຫນ້າກາກ. ໃນກໍລະນີທໍາອິດ,
ຂະບວນການຜູກມັດກັບຫຼັກສໍາເລັດຕາມທີ່ລະບຸໄວ້ໂດຍຫນ້າກາກ 0001, 0002, 0004, ແລະ.
0008. ໃນກໍລະນີທີສອງ, ຂະບວນການຜູກມັດກັບຫຼັກການທັງຫມົດໃນເຕົ້າຮັບຕໍ່ເນື່ອງຕາມທີ່ລະບຸໄວ້.
ໂດຍຫນ້າກາກ 000f ແລະ 00f0. ວົງຈອນຂະບວນການຜ່ານຊັອກເກັດຂອງໂປເຊດເຊີເປັນຮອບ,
robin ຄົນອັບເດດ: ຫຼາຍຄັ້ງຕາມຄວາມຕ້ອງການ. ໃນກໍລະນີທີສາມ, ຫນ້າກາກສະແດງໃຫ້ພວກເຮົາເຫັນວ່າ 2
ຫຼັກໄດ້ຖືກຜູກມັດຕໍ່ຂະບວນການ. ໃນກໍລະນີທີສີ່, ການຜູກມັດຖືກປິດໄວ້ແລະບໍ່ມີ
ການຜູກມັດໄດ້ຖືກລາຍງານ.
ເປີດການສະຫນັບສະຫນູນຂອງ MPI ສໍາລັບການຜູກມັດຂະບວນການແມ່ນຂຶ້ນກັບລະບົບປະຕິບັດການທີ່ຕິດພັນ.
ດັ່ງນັ້ນ, ທາງເລືອກການຜູກມັດຂະບວນການບາງຢ່າງອາດຈະບໍ່ມີຢູ່ໃນທຸກລະບົບ.
ການຜູກມັດຂະບວນການຍັງສາມາດຖືກຕັ້ງດ້ວຍພາລາມິເຕີ MCA. ການນໍາໃຊ້ຂອງພວກເຂົາແມ່ນສະດວກຫນ້ອຍກວ່າ
that of ໄພຣຸນ ທາງເລືອກ. ໃນທາງກົງກັນຂ້າມ, ຕົວກໍານົດການ MCA ສາມາດຖືກກໍານົດບໍ່ພຽງແຕ່ຢູ່ໃນ
ໄພຣຸນ ເສັ້ນຄໍາສັ່ງ, ແຕ່ເປັນທາງເລືອກໃນລະບົບຫຼືໄຟລ໌ຜູ້ໃຊ້ mca-params.conf ຫຼືເປັນ
ຕົວແປສະພາບແວດລ້ອມ, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນພາກ MCA ຂ້າງລຸ່ມນີ້. ບາງຕົວຢ່າງລວມມີ:
mpirun ທາງເລືອກ MCA ຄ່າທີ່ສໍາຄັນພາລາມິເຕີ
--map-by core rmaps_base_mapping_policy core
--map-by socket rmaps_base_mapping_policy socket
--rank-by core rmaps_base_ranking_policy core
--bind-to core hwloc_base_binding_policy core
--bind-to socket hwloc_base_binding_policy socket
--bind-to none hwloc_base_binding_policy none
ອັນດັບ
Rankfiles ແມ່ນໄຟລ໌ຂໍ້ຄວາມທີ່ລະບຸຂໍ້ມູນລະອຽດກ່ຽວກັບວິທີການແຕ່ລະຂະບວນການ
ຄວນຈະຖືກສ້າງແຜນທີ່ກັບ nodes, ແລະວ່າໂປເຊດເຊີໃດທີ່ພວກມັນຄວນຈະຖືກຜູກມັດ. ແຕ່ລະສາຍຂອງ ກ
rankfile ກໍານົດສະຖານທີ່ຂອງຂະບວນການຫນຶ່ງ (ສໍາລັບວຽກ MPI, ຂະບວນການ 'ອັນດັບ' ຫມາຍເຖິງ
ເຖິງອັນດັບຂອງມັນຢູ່ໃນ MPI_COMM_WORLD). ຮູບແບບທົ່ວໄປຂອງແຕ່ລະແຖວໃນ rankfile ແມ່ນ:
ອັນດັບ = slot=
ຍົກຕົວຢ່າງ:
$ cat myrankfile
ອັນດັບ 0=aa slot=1:0-2
ອັນດັບ 1=bb slot=0:0,1
ອັນດັບ 2=cc slot=1-2
$ mpirun -H aa,bb,cc,dd -rf myrankfile ./a.out
ຫມາຍຄວາມວ່າ
ອັນດັບ 0 ແລ່ນຢູ່ໃນ node aa, ຜູກມັດກັບ socket ໂລຈິກ 1, cores 0-2.
ອັນດັບ 1 ແລ່ນເທິງ node bb, ຜູກມັດກັບ socket ໂລຈິຕອນ 0, cores 0 ແລະ 1.
ອັນດັບ 2 ແລ່ນຢູ່ໃນ node cc, ຜູກມັດກັບຫຼັກໂລຈິກ 1 ແລະ 2.
Rankfiles ສາມາດຖືກໃຊ້ເພື່ອລະບຸ ທາງດ້ານຮ່າງກາຍ ສະຖານທີ່ໂຮງງານຜະລິດ. ໃນກໍລະນີນີ້,
syntax ແມ່ນແຕກຕ່າງກັນເລັກນ້ອຍ. ເຕົ້າຮັບບໍ່ໄດ້ຮັບຮູ້ອີກຕໍ່ໄປ, ແລະຈໍານວນສະລັອດຕິງ
ທີ່ໄດ້ມອບໃຫ້ຕ້ອງເປັນຕົວເລກຂອງ PU ທາງກາຍຍະພາບ ເນື່ອງຈາກ OS ສ່ວນໃຫຍ່ບໍ່ໄດ້ມອບໝາຍຟີຊິກທີ່ເປັນເອກະລັກ
ຕົວລະບຸແຕ່ລະຫຼັກໃນ node. ດັ່ງນັ້ນ, ໄຟລ໌ການຈັດອັນດັບທາງດ້ານຮ່າງກາຍທີ່ເຫມາະສົມເບິ່ງຄືວ່າບາງສິ່ງບາງຢ່າງ
ຕໍ່ໄປນີ້:
$ cat myphysicalrankfile
ອັນດັບ 0=aa slot=1
ອັນດັບ 1=bb slot=8
ອັນດັບ 2=cc slot=6
ນີ້ຫມາຍຄວາມວ່າ
ອັນດັບ 0 ຈະດໍາເນີນການຢູ່ໃນ node aa, ຜູກມັດກັບຫຼັກທີ່ປະກອບດ້ວຍ PU 1
ອັນດັບ 1 ຈະດໍາເນີນການຢູ່ໃນ node bb, ຜູກມັດກັບຫຼັກທີ່ມີ PU 8
ອັນດັບ 2 ຈະແລ່ນຢູ່ໃນ node cc, ຜູກມັດກັບຫຼັກທີ່ປະກອບດ້ວຍ PU 6
Rankfiles ຖືກປະຕິບັດເປັນ ຢ່າງມີເຫດຜົນ ໂດຍຄ່າເລີ່ມຕົ້ນ, ແລະພາລາມິເຕີ MCA
rmaps_rank_file_physical ຕ້ອງຖືກຕັ້ງເປັນ 1 ເພື່ອຊີ້ບອກວ່າ rankfile ຈະເປັນ.
ພິຈາລະນາເປັນ ທາງດ້ານຮ່າງກາຍ.
ຊື່ເຈົ້າພາບທີ່ລະບຸໄວ້ຂ້າງເທິງແມ່ນ "ຢ່າງແທ້ຈິງ," ຊຶ່ງຫມາຍຄວາມວ່າຊື່ເຈົ້າພາບທີ່ສາມາດແກ້ໄຂໄດ້ຢ່າງແທ້ຈິງ
ລະບຸ. ຢ່າງໃດກໍຕາມ, hostnames ຍັງສາມາດຖືກກໍານົດເປັນ "ພີ່ນ້ອງ", ຊຶ່ງຫມາຍຄວາມວ່າພວກເຂົາແມ່ນ
ລະບຸໄວ້ໃນບັນຊີລາຍການທີ່ລະບຸພາຍນອກຂອງຊື່ເຈົ້າພາບ (ຕົວຢ່າງ, ໂດຍ mpirun's
--host argument, hostfile, ຫຼືຕາຕະລາງວຽກ).
ສະເພາະ "ພີ່ນ້ອງ" ແມ່ນຮູບແບບ "+n ", ບ່ອນທີ່ X ເປັນຈໍານວນເຕັມທີ່ລະບຸ
Xth hostname ໃນຊຸດຂອງ hostnames ທີ່ມີຢູ່ທັງໝົດ, ຖືກດັດສະນີຈາກ 0. ຕົວຢ່າງ:
$ cat myrankfile
rank 0=+n0 slot=1:0-2
ອັນດັບ 1=+n1 slot=0:0,1
ອັນດັບ 2=+n2 slot=1-2
$ mpirun -H aa,bb,cc,dd -rf myrankfile ./a.out
ເລີ່ມຕົ້ນດ້ວຍ Open MPI v1.7, ສະຖານທີ່ຊັອກເກັດ/ຫຼັກທັງໝົດຈະຖືກລະບຸເປັນ ຢ່າງມີເຫດຜົນ
indexes (ຊຸດ Open MPI v1.6 ໃຊ້ ທາງດ້ານຮ່າງກາຍ ດັດຊະນີ). ທ່ານສາມາດນໍາໃຊ້ເຄື່ອງມືເຊັ່ນ:
"lstopo" ຂອງ HWLOC ເພື່ອຊອກຫາດັດຊະນີທີ່ມີເຫດຜົນຂອງຊັອກເກັດແລະແກນ.
ຄໍາຮ້ອງສະຫມັກ Context or ສາມາດປະຕິບັດໄດ້ ໂຄງການ?
ເພື່ອຈໍາແນກທັງສອງຮູບແບບທີ່ແຕກຕ່າງກັນ, ໄພຣຸນ ເບິ່ງຢູ່ໃນເສັ້ນຄໍາສັ່ງສໍາລັບ --ແອັບ ທາງເລືອກ.
ຖ້າມັນຖືກລະບຸ, ຫຼັງຈາກນັ້ນໄຟລ໌ທີ່ມີຊື່ຢູ່ໃນເສັ້ນຄໍາສັ່ງແມ່ນສົມມຸດວ່າເປັນ
ບໍລິບົດຂອງຄໍາຮ້ອງສະຫມັກ. ຖ້າມັນບໍ່ໄດ້ຖືກລະບຸ, ຫຼັງຈາກນັ້ນ, ໄຟລ໌ແມ່ນຖືວ່າສາມາດປະຕິບັດໄດ້
ໂຄງການ.
ການຊອກຫາທີ່ຕັ້ງ ໄຟ
ຖ້າບໍ່ມີສາຍສຳພັນ ຫຼືເສັ້ນທາງຢ່າງແທ້ຈິງຖືກລະບຸໄວ້ສຳລັບໄຟລ໌ໃດໜຶ່ງ, ເປີດ MPI ທຳອິດຈະຊອກຫາ
ໄຟລ໌ໂດຍການຊອກຫາໄດເລກະທໍລີທີ່ລະບຸໄວ້ໂດຍ --ເສັ້ນທາງ ທາງເລືອກ. ຖ້າບໍ່ມີ --ເສັ້ນທາງ
ທາງເລືອກທີ່ກໍານົດໄວ້ຫຼືຖ້າຫາກວ່າໄຟລ໌ບໍ່ໄດ້ຖືກພົບເຫັນຢູ່ທີ່ --ເສັ້ນທາງ ສະຖານທີ່, ຫຼັງຈາກນັ້ນເປີດ MPI ຈະຄົ້ນຫາ
ສະພາບແວດລ້ອມ PATH ຂອງຜູ້ໃຊ້ຕົວແປຕາມທີ່ກໍານົດຢູ່ໃນ node(s).
ຖ້າໄດເຣັກທໍຣີທີ່ກ່ຽວຂ້ອງຖືກລະບຸ, ມັນຕ້ອງເປັນພີ່ນ້ອງກັບໄດເລກະທໍລີທີ່ເຮັດວຽກເບື້ອງຕົ້ນ
ກໍານົດໂດຍຕົວເລີ່ມຕົ້ນສະເພາະທີ່ໃຊ້. ຕົວຢ່າງເມື່ອໃຊ້ rsh ຫຼື ssh starters,
ໄດເຣັກທໍຣີເບື້ອງຕົ້ນແມ່ນ $HOME ຕາມຄ່າເລີ່ມຕົ້ນ. ຜູ້ເລີ່ມຕົ້ນອື່ນໆອາດຈະກໍານົດໄດເລກະທໍລີເບື້ອງຕົ້ນ
ໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນຈາກການຮຽກຮ້ອງຂອງ ໄພຣຸນ.
ປັດຈຸບັນ ການເຮັດວຽກ Directory
ໄດ້ -wdir ທາງເລືອກ mpirun (ແລະຄໍາສັບຄ້າຍຄືຂອງມັນ, -wd) ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ປ່ຽນເປັນ arbitrary
ໄດເລກະທໍລີກ່ອນທີ່ໂຄງການຈະຖືກເອີ້ນ. ມັນຍັງສາມາດຖືກນໍາໃຊ້ໃນໄຟລ໌ເນື້ອໃນຄໍາຮ້ອງສະຫມັກ
ເພື່ອລະບຸໄດເລກະທໍລີທີ່ເຮັດວຽກຢູ່ໃນຂໍ້ສະເພາະ ແລະ/ຫຼືສໍາລັບແອັບພລິເຄຊັນສະເພາະ.
ຖ້າ -wdir ທາງເລືອກຈະປະກົດວ່າທັງໃນໄຟລ໌ສະພາບແລະໃນບັນຊີຄໍາສັ່ງ, ສະພາບການ
ໄດເລກະທໍລີໄຟລ໌ຈະ override ຄ່າເສັ້ນຄໍາສັ່ງ.
ຖ້າ -wdir ທາງເລືອກແມ່ນໄດ້ລະບຸໄວ້, ເປີດ MPI ຈະພະຍາຍາມທີ່ຈະປ່ຽນເປັນທີ່ລະບຸໄວ້
ໄດເລກະທໍລີເທິງທັງຫມົດຂອງ nodes ຫ່າງໄກສອກຫຼີກ. ຖ້າສິ່ງນີ້ລົ້ມເຫລວ, ໄພຣຸນ ຈະເອົາລູກອອກ.
ຖ້າ -wdir ທາງເລືອກແມ່ນ ບໍ່ ລະບຸໄວ້, ເປີດ MPI ຈະສົ່ງຊື່ໄດເລກະທໍລີທີ່ ໄພຣຸນ
ໄດ້ຖືກເອີ້ນໄປຫາແຕ່ລະ nodes ຫ່າງໄກສອກຫຼີກ. ໂນດຫ່າງໄກສອກຫຼີກຈະພະຍາຍາມປ່ຽນເປັນອັນນັ້ນ
ໄດເລກະທໍລີ. ຖ້າພວກເຂົາບໍ່ສາມາດ (ຕົວຢ່າງ, ຖ້າໄດເລກະທໍລີບໍ່ມີຢູ່ໃນ node), ຫຼັງຈາກນັ້ນ
ເປີດ MPI ຈະໃຊ້ໄດເລກະທໍລີເລີ່ມຕົ້ນທີ່ກໍານົດໂດຍ starter.
ການປ່ຽນແປງໄດເລກະທໍລີທັງຫມົດເກີດຂື້ນກ່ອນທີ່ໂຄງການຂອງຜູ້ໃຊ້ຈະຖືກເອີ້ນ; ມັນບໍ່ລໍຖ້າຈົນກ່ວາ
MPI_INIT ເອີ້ນວ່າ.
ມາດຕະຖານ ຂ້າພະເຈົ້າ / O
ເປີດ MPI ຊີ້ທິດທາງການປ້ອນຂໍ້ມູນມາດຕະຖານ UNIX ໄປຫາ /dev/null ໃນທຸກຂະບວນການຍົກເວັ້ນ
MPI_COMM_WORLD ອັນດັບ 0 ຂະບວນການ. ຂະບວນການ MPI_COMM_WORLD ອັນດັບ 0 ສືບທອດການປ້ອນຂໍ້ມູນມາດຕະຖານ
ຈາກ ໄພຣຸນ. ຫມາຍເຫດ: node ທີ່ invoked ໄພຣຸນ ບໍ່ຈໍາເປັນຕ້ອງຄືກັນກັບ node ທີ່
ຂະບວນການ MPI_COMM_WORLD ອັນດັບ 0 ຢູ່. ເປີດ MPI ຈັດການການປ່ຽນເສັ້ນທາງຂອງ ໄພຣຸນ's
ການປ້ອນຂໍ້ມູນມາດຕະຖານໃຫ້ກັບຂະບວນການອັນດັບ 0.
ເປີດ MPI ຊີ້ທິດທາງຜົນຜະລິດມາດຕະຖານ UNIX ແລະຄວາມຜິດພາດຈາກ node ຫ່າງໄກສອກຫຼີກໄປຫາ node ທີ່ເອີ້ນ.
ໄພຣຸນ ແລະພິມມັນຢູ່ໃນມາດຕະຖານຜົນຜະລິດ / ຄວາມຜິດພາດຂອງ ໄພຣຸນ. ຂະບວນການທ້ອງຖິ່ນສືບທອດ
ຜົນຜະລິດມາດຕະຖານ / ຄວາມຜິດພາດຂອງ ໄພຣຸນ ແລະໂອນໄປຫາມັນໂດຍກົງ.
ດັ່ງນັ້ນຈຶ່ງສາມາດປ່ຽນເສັ້ນທາງ I/O ມາດຕະຖານສໍາລັບຄໍາຮ້ອງສະຫມັກ MPI ເປີດໂດຍການນໍາໃຊ້
ຂັ້ນຕອນການປ່ຽນເສັ້ນທາງ shell ປົກກະຕິກ່ຽວກັບ ໄພຣຸນ.
% mpirun -np 2 my_app < my_input > my_output
ໃຫ້ສັງເກດວ່າໃນຕົວຢ່າງນີ້ ພຽງແຕ່ ຂະບວນການ MPI_COMM_WORLD ອັນດັບ 0 ຈະໄດ້ຮັບກະແສ
ຈາກ my_input ສຸດ stdin. stdin ໃນ nodes ອື່ນໆທັງຫມົດຈະຖືກຜູກມັດກັບ /dev/null.
ຢ່າງໃດກໍຕາມ, stdout ຈາກ nodes ທັງຫມົດຈະຖືກເກັບກໍາເຂົ້າໄປໃນ my_output ຍື່ນ.
ສັນຍານ ການຂະຫຍາຍພັນ
ເມື່ອ orterun ໄດ້ຮັບ SIGTERM ແລະ SIGINT, ມັນຈະພະຍາຍາມຂ້າວຽກທັງຫມົດໂດຍ
ສົ່ງຂະບວນການທັງຫມົດໃນວຽກ SIGTERM, ລໍຖ້າສອງສາມວິນາທີ, ຫຼັງຈາກນັ້ນ
ສົ່ງຂະບວນການທັງຫມົດໃນວຽກ SIGKILL.
ສັນຍານ SIGUSR1 ແລະ SIGUSR2 ທີ່ໄດ້ຮັບໂດຍ orterun ແມ່ນແຜ່ຂະຫຍາຍໄປສູ່ຂະບວນການທັງຫມົດໃນ
ວຽກງານ.
ຫນຶ່ງສາມາດເປີດການສົ່ງຕໍ່ຂອງ SIGSTOP ແລະ SIGCONT ກັບໂຄງການປະຕິບັດໂດຍ mpirun ໂດຍ
ການຕັ້ງຄ່າພາຣາມິເຕີ MCA orte_forward_job_control ເປັນ 1. ສັນຍານ SIGTSTOP ໄປຫາ mpirun ຈະ
ຫຼັງຈາກນັ້ນເຮັດໃຫ້ສັນຍານ SIGSTOP ຖືກສົ່ງໄປຫາທຸກໂຄງການທີ່ເລີ່ມຕົ້ນໂດຍ mpirun ແລະ
ເຊັ່ນດຽວກັນ, ສັນຍານ SIGCONT ກັບ mpirun ຈະເຮັດໃຫ້ SIGCONT ຖືກສົ່ງ.
ສັນຍານອື່ນໆບໍ່ໄດ້ຖືກຂະຫຍາຍພັນດ້ວຍ orterun.
ຂະບວນການ ການສິ້ນສຸດ / ສັນຍານ ການຈັດການ
ໃນລະຫວ່າງການດໍາເນີນການຂອງຄໍາຮ້ອງສະຫມັກ MPI, ຖ້າຫາກວ່າຂະບວນການໃດຫນຶ່ງຕາຍຢ່າງຜິດປົກກະຕິ (ທັງການອອກ
ກ່ອນທີ່ຈະຮຽກຮ້ອງ MPI_FINALIZE, ຫຼືເສຍຊີວິດຍ້ອນສັນຍານ), ໄພຣຸນ ຈະພິມອອກ
ຂໍ້ຄວາມຜິດພາດແລະຂ້າສ່ວນທີ່ເຫຼືອຂອງຄໍາຮ້ອງສະຫມັກ MPI.
ຕົວຈັດການສັນຍານຂອງຜູ້ໃຊ້ຄວນຈະຫຼີກເວັ້ນການພະຍາຍາມທໍາຄວາມສະອາດສະຖານະ MPI (Open MPI ແມ່ນ
ໃນປັດຈຸບັນບໍ່ async-signal-safe; ເບິ່ງ MPI_Init_thread(3) ສໍາລັບລາຍລະອຽດກ່ຽວກັບ
MPI_THREAD_MULTIPLE ແລະຄວາມປອດໄພ thread). ຕົວຢ່າງ, ຖ້າຄວາມຜິດຂອງການແບ່ງສ່ວນເກີດຂຶ້ນໃນ
MPI_SEND (ບາງທີອາດຈະເປັນຍ້ອນວ່າ buffer ບໍ່ດີໄດ້ຮັບການຜ່ານເຂົ້າໄປ) ແລະຜູ້ຈັດການສັນຍານຜູ້ໃຊ້ແມ່ນ
invoked, ຖ້າຜູ້ໃຊ້ນີ້ handler ພະຍາຍາມ invoke MPI_FINALIZE, ສິ່ງທີ່ບໍ່ດີສາມາດເກີດຂຶ້ນໄດ້
ນັບຕັ້ງແຕ່ Open MPI ແມ່ນແລ້ວ "ໃນ" MPI ເມື່ອຂໍ້ຜິດພາດເກີດຂື້ນ. ນັບຕັ້ງແຕ່ ໄພຣຸນ ຈະສັງເກດເຫັນ
ວ່າຂະບວນການເສຍຊີວິດຍ້ອນສັນຍານ, ມັນອາດຈະບໍ່ຈໍາເປັນ (ແລະປອດໄພທີ່ສຸດ) ສໍາລັບ
ຜູ້ໃຊ້ພຽງແຕ່ເຮັດຄວາມສະອາດສະຖານະທີ່ບໍ່ແມ່ນ MPI.
ຂະບວນການ ສະພາບແວດລ້ອມ
ຂະບວນການໃນແອັບພລິເຄຊັນ MPI ສືບທອດສະພາບແວດລ້ອມຂອງເຂົາເຈົ້າຈາກ Open RTE daemon ຕາມ
node ທີ່ເຂົາເຈົ້າກໍາລັງແລ່ນ. ສະພາບແວດລ້ອມປົກກະຕິແລ້ວແມ່ນສືບທອດມາຈາກ
ເປືອກຂອງຜູ້ໃຊ້. ໃນ nodes ຫ່າງໄກສອກຫຼີກ, ສະພາບແວດລ້ອມທີ່ແນ່ນອນແມ່ນຖືກກໍານົດໂດຍໂມດູນ MCA boot
ໃຊ້. ໄດ້ rsh ການເປີດຕົວໂມດູນ, ສໍາລັບການຍົກຕົວຢ່າງ, ໃຊ້ທັງສອງ rsh/ssh ເພື່ອເປີດຕົວ Open RTE
daemon ໃນ nodes ຫ່າງໄກສອກຫຼີກ, ແລະປົກກະຕິແລ້ວປະຕິບັດຫນຶ່ງຫຼືຫຼາຍຂອງໄຟລ໌ການຕິດຕັ້ງ shell ຂອງຜູ້ໃຊ້.
ກ່ອນທີ່ຈະເປີດຕົວ Open RTE daemon. ໃນເວລາທີ່ການນໍາໃຊ້ຄໍາຮ້ອງສະຫມັກທີ່ເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວທີ່
ຕ້ອງການ LD_LIBRARY_PATH ການປ່ຽນແປງສະພາບແວດລ້ອມທີ່ຈະໄດ້ຮັບການກໍານົດ, ການດູແລຕ້ອງໄດ້ຮັບການປະຕິບັດເພື່ອຮັບປະກັນ
ວ່າມັນຖືກຕັ້ງຢ່າງຖືກຕ້ອງເມື່ອເປີດ MPI.
ເບິ່ງພາກສ່ວນ "ການດໍາເນີນການທາງໄກ" ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ຫ່າງໄກສອກຫຼີກ ການບໍລິຫານ
ເປີດ MPI ຮຽກຮ້ອງໃຫ້ PATH ຕົວແປສະພາບແວດລ້ອມໄດ້ຖືກກໍານົດເພື່ອຊອກຫາການປະຕິບັດໃນຫ່າງໄກສອກຫຼີກ
nodes (ປົກກະຕິແລ້ວນີ້ແມ່ນມີຄວາມຈໍາເປັນພຽງແຕ່ໃນ rsh- ຫຼື ssh- ສະພາບແວດລ້ອມທີ່ອີງໃສ່ --
batch/schedule ສະພາບແວດລ້ອມປົກກະຕິຈະຄັດລອກສະພາບແວດລ້ອມປະຈຸບັນເພື່ອປະຕິບັດ
ວຽກເຮັດງານທໍາຫ່າງໄກສອກຫຼີກ, ສະນັ້ນຖ້າຫາກວ່າສະພາບແວດລ້ອມໃນປະຈຸບັນມີ PATH ແລະ / ຫຼື LD_LIBRARY_PATH ກໍານົດຢ່າງຖືກຕ້ອງ,
ຂໍ້ມູນທາງໄກຍັງຈະໄດ້ຕັ້ງມັນຢ່າງຖືກຕ້ອງ). ຖ້າ Open MPI ຖືກລວບລວມດ້ວຍການແບ່ງປັນ
ສະຫນັບສະຫນູນຫ້ອງສະຫມຸດ, ມັນຍັງອາດຈະມີຄວາມຈໍາເປັນທີ່ຈະມີ LD_LIBRARY_PATH ຕົວແປສິ່ງແວດລ້ອມ
ຕັ້ງຢູ່ໃນ nodes ຫ່າງໄກສອກຫຼີກເຊັ່ນດຽວກັນ (ໂດຍສະເພາະເພື່ອຊອກຫາຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນທີ່ຕ້ອງການເພື່ອດໍາເນີນການຜູ້ໃຊ້
ຄໍາຮ້ອງສະຫມັກ MPI).
ຢ່າງໃດກໍຕາມ, ມັນບໍ່ແມ່ນຄວາມປາຖະຫນາສະເຫມີຫຼືເປັນໄປໄດ້ທີ່ຈະແກ້ໄຂໄຟລ໌ເລີ່ມຕົ້ນຂອງແກະເພື່ອກໍານົດ PATH
ແລະ / ຫຼື LD_LIBRARY_PATH. ໄດ້ -- ຄໍານໍາຫນ້າ ທາງເລືອກແມ່ນສະຫນອງໃຫ້ສໍາລັບການຕັ້ງຄ່າງ່າຍດາຍບາງ
ບ່ອນທີ່ນີ້ເປັນໄປບໍ່ໄດ້.
ໄດ້ -- ຄໍານໍາຫນ້າ ທາງເລືອກໃຊ້ເວລາການໂຕ້ຖຽງດຽວ: ໄດເລກະທໍລີພື້ນຖານໃນ node ຫ່າງໄກສອກຫຼີກບ່ອນທີ່
ເປີດ MPI ຖືກຕິດຕັ້ງ. ເປີດ MPI ຈະໃຊ້ໄດເລກະທໍລີນີ້ເພື່ອຕັ້ງຣີໂໝດ PATH ແລະ
LD_LIBRARY_PATH ກ່ອນທີ່ຈະດໍາເນີນການໃດໆ Open MPI ຫຼືຄໍາຮ້ອງສະຫມັກຂອງຜູ້ໃຊ້. ນີ້ອະນຸຍາດໃຫ້ແລ່ນ
ເປີດວຽກ MPI ໂດຍບໍ່ຕ້ອງມີການຕັ້ງຄ່າລ່ວງໜ້າ PATH ແລະ LD_LIBRARY_PATH ຢູ່ໃນໄລຍະໄກ
ຂໍ້.
Open MPI ເພີ່ມຊື່ພື້ນຖານຂອງ "bindir" ຂອງ node ໃນປັດຈຸບັນ (ໄດເລກະທໍລີທີ່ Open MPI's
executables ໄດ້ຖືກຕິດຕັ້ງ) ໃສ່ຄໍານໍາຫນ້າແລະໃຊ້ມັນເພື່ອກໍານົດ PATH ໃນ node ຫ່າງໄກສອກຫຼີກ.
ເຊັ່ນດຽວກັນ, Open MPI ເພີ່ມຊື່ພື້ນຖານຂອງ "libdir" ຂອງ node ໃນປັດຈຸບັນ (ໄດເລກະທໍລີທີ່.
ເປີດຫ້ອງສະຫມຸດຂອງ MPI ໄດ້ຖືກຕິດຕັ້ງ) ໃສ່ຄໍານໍາຫນ້າແລະໃຊ້ມັນເພື່ອກໍານົດ LD_LIBRARY_PATH
ໃນ node ຫ່າງໄກສອກຫຼີກ. ຍົກຕົວຢ່າງ:
bindir ທ້ອງຖິ່ນ: /local/node/directory/bin
ທ້ອງຖິ່ນ libdir: /local/node/directory/lib64
ຖ້າເສັ້ນຄໍາສັ່ງຕໍ່ໄປນີ້ຖືກນໍາໃຊ້:
% mpirun --prefix /remote/node/directory
ເປີດ MPI ຈະເພີ່ມ "/remote/node/directory/bin" ໃສ່ PATH ແລະ
"/remote/node/directory/lib64" ໄປທີ່ D_LIBRARY_PATH ຢູ່ໃນ node ທາງໄກກ່ອນທີ່ຈະພະຍາຍາມ
ເພື່ອປະຕິບັດສິ່ງໃດ.
ໄດ້ -- ຄໍານໍາຫນ້າ ທາງເລືອກແມ່ນບໍ່ພຽງພໍຖ້າຫາກວ່າເສັ້ນທາງການຕິດຕັ້ງຢູ່ໃນ node ຫ່າງໄກສອກຫຼີກແມ່ນ
ແຕກຕ່າງຈາກ node ທ້ອງຖິ່ນ (ຕົວຢ່າງ, ຖ້າ "./ lib"ແມ່ນໃຊ້ໃນ node ທ້ອງຖິ່ນ, ແຕ່ "/lib64"ແມ່ນ
ໃຊ້ໃນ node ຫ່າງໄກສອກຫຼີກ), ຫຼືຖ້າຫາກວ່າເສັ້ນທາງການຕິດຕັ້ງແມ່ນບາງສິ່ງບາງຢ່າງອື່ນທີ່ບໍ່ແມ່ນ a
subdirectory ພາຍໃຕ້ຄໍານໍາຫນ້າທົ່ວໄປ.
ໃຫ້ສັງເກດວ່າການປະຕິບັດ ໄພຣຸນ ຜ່ານຊື່ເສັ້ນທາງຢ່າງແທ້ຈິງແມ່ນເທົ່າກັບການລະບຸ -- ຄໍານໍາຫນ້າ
ໂດຍບໍ່ມີໄດເລກະທໍລີຍ່ອຍສຸດທ້າຍໃນຊື່ເສັ້ນທາງຢ່າງແທ້ຈິງທີ່ຈະ ໄພຣຸນທີ່ຢູ່ ຍົກຕົວຢ່າງ:
% /usr/local/bin/mpirun ...
ເທົ່າກັບ
% mpirun --prefix / usr / ທ້ອງຖິ່ນ
ສົ່ງອອກ ສະພາບແວດລ້ອມ Variables
ຕົວແປສະພາບແວດລ້ອມທັງໝົດທີ່ມີຊື່ໃນຮູບແບບ OMPI_* ຈະຖືກສົ່ງອອກໂດຍອັດຕະໂນມັດ
ກັບຂະບວນການໃຫມ່ໃນ nodes ທ້ອງຖິ່ນແລະຫ່າງໄກສອກຫຼີກ. ຕົວກໍານົດການດ້ານສິ່ງແວດລ້ອມຍັງສາມາດເປັນ
ຕັ້ງ/ສົ່ງຕໍ່ໄປຫາຂະບວນການໃໝ່ໂດຍໃຊ້ພາລາມິເຕີ MCA mca_base_env_list. ໄດ້ -x
ທາງເລືອກທີ່ຈະ ໄພຣຸນ ໄດ້ຖືກຍົກເລີກ, ແຕ່ syntax ຂອງ param MCA ປະຕິບັດຕາມນັ້ນກ່ອນ
ຕົວຢ່າງ. ໃນຂະນະທີ່ syntax ຂອງ -x ທາງເລືອກແລະ MCA param ອະນຸຍາດໃຫ້ຄໍານິຍາມຂອງໃຫມ່
ຕົວແປ, ໃຫ້ສັງເກດວ່າ parser ສໍາລັບທາງເລືອກເຫຼົ່ານີ້ແມ່ນປະຈຸບັນບໍ່ມີຄວາມຊັບຊ້ອນຫຼາຍ -
ມັນບໍ່ເຂົ້າໃຈເຖິງຄຸນຄ່າທີ່ອ້າງອີງ. ຜູ້ໃຊ້ໄດ້ຖືກແນະນໍາໃຫ້ກໍານົດຕົວແປໃນ
ສະພາບແວດລ້ອມແລະນໍາໃຊ້ທາງເລືອກໃນການສົ່ງອອກໃຫ້ເຂົາເຈົ້າ; ບໍ່ແມ່ນເພື່ອກໍານົດພວກມັນ.
ການຕັ້ງຄ່າ CAM ຕົວກໍານົດການ
ໄດ້ -mca switch ອະນຸຍາດໃຫ້ຜ່ານຕົວກໍານົດການຕ່າງໆກັບ MCA (Modular Component
ສະຖາປັດຕະຍະກໍາ) ໂມດູນ. ໂມດູນ MCA ມີຜົນກະທົບໂດຍກົງຕໍ່ໂຄງການ MPI ເພາະວ່າພວກເຂົາອະນຸຍາດໃຫ້
ຕົວກໍານົດການທີ່ສາມາດປັບໄດ້ທີ່ຈະຖືກກໍານົດໃນເວລາແລ່ນ (ເຊັ່ນ: ໄດເວີອຸປະກອນການສື່ສານ BTL
ໃຊ້, ຕົວກໍານົດການໃດທີ່ຈະຜ່ານໄປຫາ BTL ນັ້ນ, ແລະອື່ນໆ).
ໄດ້ -mca switch ໃຊ້ສອງການໂຕ້ຖຽງ: ແລະ . ໄດ້ ການໂຕ້ຖຽງໂດຍທົ່ວໄປ
ລະບຸວ່າໂມດູນ MCA ໃດຈະໄດ້ຮັບຄ່າ. ສໍາລັບຕົວຢ່າງ, ໄດ້ "btl" ຖືກນໍາໃຊ້
ເພື່ອເລືອກ BTL ທີ່ຈະໃຊ້ໃນການຂົນສົ່ງຂໍ້ຄວາມ MPI. ໄດ້ ການໂຕ້ຖຽງແມ່ນ
ຄ່າທີ່ຜ່ານ. ຍົກຕົວຢ່າງ:
mpirun -mca btl tcp, ຕົນເອງ -np 1 foo
ບອກ Open MPI ໃຫ້ໃຊ້ "tcp" ແລະ "self" BTLs, ແລະເພື່ອດໍາເນີນການສໍາເນົາດຽວຂອງ "foo" an
node ຈັດສັນ.
mpirun -mca btl ຕົນເອງ -np 1 foo
ບອກ Open MPI ໃຫ້ໃຊ້ BTL "ຕົວມັນເອງ", ແລະດໍາເນີນການສໍາເນົາດຽວຂອງ "foo" ການຈັດສັນ.
ຂໍ້.
ໄດ້ -mca ສະຫຼັບສາມາດໃຊ້ຫຼາຍຄັ້ງເພື່ອລະບຸຄວາມແຕກຕ່າງ ແລະ / ຫຼື
ການໂຕ້ຖຽງ. ຖ້າຄືກັນ ຖືກກໍານົດຫຼາຍກວ່າຫນຶ່ງຄັ້ງ, the s ແມ່ນ concatenated
ດ້ວຍເຄື່ອງໝາຍຈຸດ (",") ແຍກພວກມັນ.
ຫມາຍເຫດວ່າ -mca switch ແມ່ນພຽງແຕ່ທາງລັດສໍາລັບການຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມ. ໄດ້
ຜົນກະທົບດຽວກັນອາດຈະຖືກປະຕິບັດໂດຍການຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມທີ່ສອດຄ້ອງກັນກ່ອນ
ການເຮັດວຽກ ໄພຣຸນ. ຮູບແບບຂອງຕົວແປສະພາບແວດລ້ອມທີ່ເປີດ MPI ກໍານົດແມ່ນ:
OMPI_MCA_ =
ດັ່ງນັ້ນ, ໄດ້ -mca switch overrides ທຸກຕົວແປສະພາບແວດລ້ອມທີ່ກໍານົດໄວ້ກ່ອນຫນ້ານີ້. ໄດ້ -mca
ການຕັ້ງຄ່າທີ່ຄ້າຍຄືກັນຈະລົບລ້າງພາຣາມິເຕີ MCA ທີ່ຕັ້ງໄວ້ໃນ $OPAL_PREFIX/etc/openmpi-mca-
params.conf ຫຼືໄຟລ໌ $HOME/.openmpi/mca-params.conf.
ບໍ່ຮູ້ຈັກ arguments ຍັງຖືກຕັ້ງເປັນຕົວແປສະພາບແວດລ້ອມ -- ພວກມັນບໍ່ໄດ້ຖືກກວດສອບ (ໂດຍ
ໄພຣຸນ) ເພື່ອຄວາມຖືກຕ້ອງ. ຜິດກົດໝາຍ ຫຼື ບໍ່ຖືກຕ້ອງ ການໂຕ້ຖຽງອາດຈະເປັນຫຼືອາດຈະບໍ່ແມ່ນ
ລາຍງານ -- ມັນຂຶ້ນກັບໂມດູນ MCA ສະເພາະ.
ເພື່ອຊອກຫາປະເພດອົງປະກອບທີ່ມີຢູ່ພາຍໃຕ້ສະຖາປັດຕະຍະກໍາ MCA, ຫຼືຊອກຫາສິ່ງທີ່ມີຢູ່
ຕົວກໍານົດການສໍາລັບອົງປະກອບສະເພາະໃດຫນຶ່ງ, ການນໍາໃຊ້ ompi_info ຄໍາສັ່ງ. ເບິ່ງ ompi_info(1) ຜູ້ຊາຍ
ຫນ້າສໍາລັບລາຍລະອຽດກ່ຽວກັບຄໍາສັ່ງ.
ເຮັດວຽກ as ຮາກ
ທີມງານ Open MPI ແນະນໍາຢ່າງແຂງແຮງຕໍ່ກັບການປະຕິບັດ ໄພຣຸນ ເປັນຜູ້ໃຊ້ຮາກ. MPI
ແອັບພລິເຄຊັນຄວນຖືກເອີ້ນໃຊ້ເປັນຜູ້ໃຊ້ປົກກະຕິ (ບໍ່ແມ່ນຮາກ).
ສະທ້ອນໃຫ້ເຫັນຄໍາແນະນໍານີ້, mpirun ຈະປະຕິເສດທີ່ຈະດໍາເນີນການເປັນຮາກໂດຍຄ່າເລີ່ມຕົ້ນ. ເພື່ອ override ນີ້
ຄ່າເລີ່ມຕົ້ນ, ທ່ານສາມາດເພີ່ມ --allow-run-as-root ທາງເລືອກໃນການ ໄພຣຸນ ບັນທັດຄໍາສັ່ງ.
ການທ່ອງທ່ຽວ ສະຖານະພາບ
ບໍ່ມີຄໍານິຍາມມາດຕະຖານສໍາລັບສິ່ງທີ່ ໄພຣຸນ ຄວນກັບຄືນມາເປັນສະຖານະທາງອອກ. ຫຼັງຈາກ
ການສົນທະນາຢ່າງຫຼວງຫຼາຍ, ພວກເຮົາໄດ້ຕົກລົງໃນວິທີການດັ່ງຕໍ່ໄປນີ້ສໍາລັບການມອບຫມາຍ ໄພຣຸນ ການທ່ອງທ່ຽວ
ສະຖານະພາບ (ຫມາຍເຫດ: ໃນຄໍາອະທິບາຍຕໍ່ໄປນີ້, ວຽກ "ຕົ້ນຕໍ" ແມ່ນຄໍາຮ້ອງສະຫມັກເບື້ອງຕົ້ນ
ເລີ່ມຕົ້ນໂດຍ mpirun - ວຽກທັງຫມົດທີ່ spawned ໂດຍວຽກນັ້ນແມ່ນຖືກກໍານົດວ່າ "ຮອງ"
ວຽກ):
· ຖ້າຂະບວນການທັງໝົດໃນວຽກຫຼັກປົກກະຕິຢຸດຕິດ້ວຍສະຖານະອອກ 0, ພວກເຮົາຈະສົ່ງຄືນ 0
· ຖ້າຫາກວ່າຫນຶ່ງຫຼືຫຼາຍຂະບວນການໃນວຽກເຮັດງານທໍາຕົ້ນຕໍທີ່ປົກກະຕິຢຸດເຊົາການອອກທີ່ບໍ່ແມ່ນສູນ
ສະຖານະ, ພວກເຮົາສົ່ງຄືນສະຖານະທາງອອກຂອງຂະບວນການທີ່ມີອັນດັບຕໍ່າສຸດ MPI_COMM_WORLD ເປັນ
ມີສະຖານະທີ່ບໍ່ແມ່ນສູນ
· ຖ້າຂະບວນການທັງໝົດໃນວຽກຫຼັກປົກກະຕິຢຸດຕິດ້ວຍສະຖານະທາງອອກ 0, ແລະໜຶ່ງ ຫຼື
ຂະບວນການເພີ່ມເຕີມໃນວຽກງານມັດທະຍົມທີ່ປົກກະຕິຈະສິ້ນສຸດລົງກັບສະຖານະການອອກທີ່ບໍ່ແມ່ນສູນ, ພວກເຮົາ (a)
ສົ່ງຄືນສະຖານະທາງອອກຂອງຂະບວນການດ້ວຍອັນດັບ MPI_COMM_WORLD ຕໍ່າສຸດ
jobid ທີ່ຈະມີສະຖານະພາບທີ່ບໍ່ແມ່ນສູນ, ແລະ (b) ສົ່ງອອກຂໍ້ຄວາມສະຫຼຸບສະຖານະການອອກຂອງ
ວຽກປະຖົມ ແລະ ມັດທະຍົມທັງໝົດ.
· ຖ້າຫາກວ່າທາງເລືອກແຖວ cmd --report-child-jobs-separately ຖືກກໍານົດໄວ້, ພວກເຮົາຈະກັບຄືນມາ -only- ໄດ້
ອອກຈາກສະຖານະຂອງວຽກຕົ້ນຕໍ. ສະຖານະການອອກທີ່ບໍ່ແມ່ນສູນໃນວຽກຮອງຈະເປັນ
ລາຍງານພຽງແຕ່ຢູ່ໃນຄໍາຖະແຫຼງການພິມສະຫຼຸບ.
ໂດຍຄ່າເລີ່ມຕົ້ນ, OMPI ບັນທຶກ ແລະບັນທຶກວ່າຂະບວນການ MPI ອອກໄປດ້ວຍການຢຸດທີ່ບໍ່ແມ່ນສູນ.
ສະຖານະ. ໂດຍທົ່ວໄປແລ້ວນີ້ບໍ່ໄດ້ຖືກພິຈາລະນາເປັນ "ການຢຸດເຊົາທີ່ຜິດປົກກະຕິ" - ie, OMPI ຈະບໍ່
ຍົກເລີກວຽກ MPI ຖ້າຂະບວນການໜຶ່ງ ຫຼືຫຼາຍອັນສົ່ງຄືນສະຖານະທີ່ບໍ່ແມ່ນສູນ. ແທນທີ່ຈະ, ຄ່າເລີ່ມຕົ້ນ
ພຶດຕິກໍາພຽງແຕ່ລາຍງານຈໍານວນຂະບວນການທີ່ສິ້ນສຸດລົງດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນ
ການສໍາເລັດວຽກງານ.
ຢ່າງໃດກໍຕາມ, ໃນບາງກໍລະນີ, ມັນສາມາດເປັນຄວາມປາຖະຫນາທີ່ຈະເອົາລູກອອກໃນເວລາທີ່ຂະບວນການໃດຫນຶ່ງ
ສິ້ນສຸດດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນ. ຕົວຢ່າງ, ວຽກທີ່ບໍ່ແມ່ນ MPI ອາດຈະກວດພົບຜົນໄດ້ຮັບທີ່ບໍ່ດີຈາກ
ການຄິດໄລ່ແລະຕ້ອງການເອົາລູກອອກ, ແຕ່ບໍ່ຕ້ອງການສ້າງໄຟລ໌ຫຼັກ. ຫຼືວຽກ MPI
ອາດຈະສືບຕໍ່ຜ່ານການໂທໄປຫາ MPI_Finalize, ແຕ່ຊີ້ໃຫ້ເຫັນວ່າຂະບວນການທັງໝົດຄວນຍົກເລີກ
ເນື່ອງຈາກບາງຜົນຕອບແທນ MPI.
ມັນບໍ່ໄດ້ຄາດຫວັງວ່າສະຖານະການນີ້ຈະເກີດຂື້ນເລື້ອຍໆ. ຢ່າງໃດກໍຕາມ, ໃນຄວາມສົນໃຈ
ເພື່ອຮັບໃຊ້ຊຸມຊົນທີ່ກວ້າງຂວາງ, OMPI ປະຈຸບັນມີວິທີການອະນຸຍາດໃຫ້ຜູ້ໃຊ້ສາມາດຊີ້ນໍານັ້ນ
ວຽກຈະຖືກຍົກເລີກເມື່ອຂະບວນການໃດນຶ່ງອອກຈາກສະຖານະທີ່ບໍ່ແມ່ນສູນ. ການຕັ້ງຄ່າຕົວກໍານົດການ MCA
"orte_abort_on_non_zero_status" ເປັນ 1 ຈະເຮັດໃຫ້ OMPI ຍົກເລີກຂະບວນການທັງໝົດຄັ້ງດຽວ.
ຂະບວນການ
ອອກດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນ.
ການຢຸດເຊົາທີ່ເກີດຈາກລັກສະນະນີ້ຈະຖືກລາຍງານຢູ່ໃນ console ເປັນ "ຜິດປົກກະຕິ
ການຢຸດເຊົາ", ດ້ວຍຂະບວນການທໍາອິດທີ່ຈະອອກໄດ້ຖືກກໍານົດພ້ອມກັບສະຖານະພາບທາງອອກຂອງມັນ.
ຕົວຢ່າງ
ໃຫ້ແນ່ໃຈວ່າຍັງເບິ່ງຕົວຢ່າງໃນທົ່ວພາກສ່ວນຂ້າງເທິງ.
mpirun -np 4 -mca btl ib,tcp,self prog1
ດໍາເນີນການ 4 ສໍາເນົາຂອງ prog1 ໂດຍໃຊ້ "ib", "tcp", ແລະ "ຕົນເອງ" BTL's ສໍາລັບການຂົນສົ່ງຂອງ MPI.
ຂໍ້ຄວາມ.
mpirun -np 4 -mca btl tcp,sm, ຕົນເອງ
--mca btl_tcp_if_include eth0 prog1
ດໍາເນີນການ 4 ສໍາເນົາຂອງ prog1 ໂດຍໃຊ້ "tcp", "sm" ແລະ "ຕົນເອງ" BTLs ສໍາລັບການຂົນສົ່ງ MPI
ຂໍ້ຄວາມ, ດ້ວຍ TCP ໃຊ້ພຽງແຕ່ການໂຕ້ຕອບ eth0 ເພື່ອຕິດຕໍ່ສື່ສານ. ໃຫ້ສັງເກດວ່າ BTLs ອື່ນໆ
ມີຕົວກໍານົດການ if_include MCA ທີ່ຄ້າຍຄືກັນ.
ກັບຄືນ ມູນຄ່າ
ໄພຣຸນ ຕອບ 0 ຖ້າຂະບວນການທັງໝົດເລີ່ມຕົ້ນໂດຍ ໄພຣຸນ ອອກໄປຫຼັງຈາກໂທຫາ MPI_FINALIZE. ກ
ຄ່າທີ່ບໍ່ແມ່ນສູນຈະຖືກສົ່ງຄືນຖ້າມີຂໍ້ຜິດພາດພາຍໃນເກີດຂື້ນໃນ mpirun, ຫຼືຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນ
ຂະບວນການອອກກ່ອນທີ່ຈະໂທຫາ MPI_FINALIZE. ຖ້າມີຂໍ້ຜິດພາດພາຍໃນເກີດຂື້ນໃນ mpirun,
ລະຫັດຄວາມຜິດພາດທີ່ສອດຄ້ອງກັນແມ່ນກັບຄືນມາ. ໃນກໍລະນີທີ່ຂະບວນການຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນອອກໄປ
ກ່ອນທີ່ຈະໂທຫາ MPI_FINALIZE, ຄ່າກັບຄືນຂອງອັນດັບ MPI_COMM_WORLD ຂອງຂະບວນການ
ທີ່ ໄພຣຸນ ແຈ້ງການທໍາອິດເສຍຊີວິດກ່ອນທີ່ຈະໂທຫາ MPI_FINALIZE ຈະຖືກສົ່ງຄືນ. ໃຫ້ສັງເກດວ່າ,
ໂດຍທົ່ວໄປ, ນີ້ຈະເປັນຂະບວນການທໍາອິດທີ່ເສຍຊີວິດແຕ່ບໍ່ໄດ້ຮັບປະກັນວ່າຈະເປັນດັ່ງນັ້ນ.
ໃຊ້ mpiexec.openmpi ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net