GoGPT Best VPN GoSearch

OnWorks favicon

mpy.mpich2 - ອອນລາຍໃນຄລາວ

ແລ່ນ mpy.mpich2 ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ mpy.mpich2 ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


mpy - ຂໍ້ຄວາມຜ່ານ Yorick

ສະຫຼຸບສັງລວມ


mpirun -np mp_size ມອນ [ - ຈ pfile1.i [ - ຈ pfile2.i [... ]]] [ -i file1.i [ -i file2.i [
... ]]]
mpirun -np mp_size ມອນ - ຊຸດ file.i

ລາຍລະອຽດ


ແຈັກກີ້ ເປັນ​ພາ​ສາ​ທີ່​ໄດ້​ຮັບ​ການ​ຕີ​ລາ​ຄາ​ເຊັ່ນ​: ພື້ນ​ຖານ​ຫຼື Lisp​, ແຕ່​ໄວ​ກວ່າ​. ເບິ່ງ ໂຢຣິກ (1) ໄປ
ຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບມັນ.
Mpy ເປັນສະບັບຂະຫນານຂອງ ແຈັກກີ້ ອີງໃສ່ Message Passing Interface (MPI). ໄດ້
syntax ທີ່ແນ່ນອນສໍາລັບການເປີດຕົວວຽກຂະຫນານແມ່ນຂຶ້ນກັບສະພາບແວດລ້ອມ MPI ຂອງທ່ານ. ມັນອາດຈະເປັນ
ມີຄວາມຈໍາເປັນເພື່ອເປີດຕົວ daemon ພິເສດກ່ອນທີ່ຈະໂທຫາ mirun ຫຼືຄໍາສັ່ງທຽບເທົ່າ.

ຄໍາອະທິບາຍ
ຊຸດ mpy ເຊື່ອມຕໍ່ yorick ກັບຫ້ອງສະຫມຸດການຂຽນໂປຼແກຼມຂະຫນານ MPI. MPI ຫຍໍ້ມາຈາກ
ຂໍ້ຄວາມຜ່ານການໂຕ້ຕອບ; ແນວຄວາມຄິດແມ່ນເພື່ອເຊື່ອມຕໍ່ຫຼາຍຕົວຢ່າງຂອງ yorick ວ່າ
ຕິດຕໍ່ສື່ສານລະຫວ່າງເຂົາເຈົ້າຜ່ານຂໍ້ຄວາມ. Mpy ສາມາດປະຕິບັດແບບງ່າຍດາຍ, ຂະຫນານສູງ
ວຽກ​ງານ​ເປັນ​ໂຄງ​ການ​ຕີ​ຄວາມ​ບໍ​ລິ​ສຸດ​, ຫຼື​ມັນ​ສາ​ມາດ​ເລີ່ມ​ຕົ້ນ​ແລະ​ການ​ຊີ້​ນໍາ​ການ​ສັງ​ລວມ​ສະ​ລັບ​ສັບ​ຊ້ອນ arbitrarily​
ແພັກເກດທີ່ສາມາດໃຊ້ MPI API ທີ່ລວບລວມໄດ້ໂດຍບໍ່ເສຍຄ່າ. API ທີ່ແປບໍ່ໄດ້ມີຈຸດປະສົງ
ເປັນ wrapper MPI; ແທນ​ທີ່​ຈະ​ເປັນ​ມັນ​ຖືກ​ລອກ​ອອກ​ໄປ​ໃນ​ຕໍາ​່​ສຸດ​ທີ່​ເປົ່າ​.

ນີ້ແມ່ນສະບັບ 2 ຂອງ mpy (ປ່ອຍອອກມາເມື່ອປີ 2010); ມັນບໍ່ເຂົ້າກັນໄດ້ກັບເວີຊັນ 1 ຂອງ mpy
(ປ່ອຍອອກມາໃນກາງຊຸມປີ 1990), ເນື່ອງຈາກວ່າສະບັບ 1 ມີຂໍ້ບົກພ່ອງໃນການອອກແບບຈໍານວນຫລາຍເຮັດໃຫ້ມັນຫຼາຍ.
ຍາກທີ່ຈະຂຽນໂຄງການທີ່ບໍ່ມີເງື່ອນໄຂເຊື້ອຊາດ, ແລະເປັນໄປບໍ່ໄດ້ທີ່ຈະຂະຫນາດເປັນລ້ານ
ຂອງໂປເຊດເຊີ. ຢ່າງ​ໃດ​ກໍ​ຕາມ​, ທ່ານ​ສາ​ມາດ​ດໍາ​ເນີນ​ການ​ຫຼາຍ​ທີ່​ສຸດ​ສະ​ບັບ 1 mpy ໂຄງ​ການ​ພາຍ​ໃຕ້​ການ​ສະ​ບັບ 2 ໂດຍ​ການ​ເຮັດ​
mp_include,"mpy1.i" ກ່ອນທີ່ທ່ານຈະ mp_include ໄຟລ໌ໃດກໍານົດວຽກງານຂະຫນານ mpy1 (ນັ້ນແມ່ນ.
ກ່ອນ​ທີ່​ໄຟລ​໌​ໃດ​ຫນຶ່ງ​ທີ່​ມີ​ການ​ໂທ​ຫາ mp_task​.)

ການນໍາໃຊ້ ອ່ືນ
ສະພາບແວດລ້ອມ MPI ບໍ່ໄດ້ຖືກກໍານົດຢ່າງແທ້ຈິງໂດຍມາດຕະຖານ; ສະພາບແວດລ້ອມທີ່ມີຢູ່ແລ້ວ
crude ຫຼາຍ, ແລະຢ່າງແຂງແຮງ batch ວຽກທີ່ບໍ່ມີການໂຕ້ຕອບ. ຈໍານວນຂອງຂະບວນການແມ່ນ
ແກ້ໄຂກ່ອນ MPI ເລີ່ມຕົ້ນ; ແຕ່ລະຂະບວນການມີອັນດັບ, ຕົວເລກຈາກ 0 ຫາຫນຶ່ງຫນ້ອຍກວ່າ
ຈໍາ​ນວນ​ຂະ​ບວນ​ການ​. ທ່ານໃຊ້ອັນດັບເປັນທີ່ຢູ່ເພື່ອສົ່ງຂໍ້ຄວາມ, ແລະຂະບວນການ
ການໄດ້ຮັບຂໍ້ຄວາມສາມາດ probe ເພື່ອເບິ່ງວ່າອັນດັບໃດໄດ້ສົ່ງຂໍ້ຄວາມໄປຫາມັນ, ແລະແນ່ນອນ
ໄດ້​ຮັບ​ຂໍ້​ຄວາມ​ເຫຼົ່າ​ນັ້ນ​.

ບັນຫາໃຫຍ່ໃນການຂຽນໂປຼແກຼມຖ່າຍທອດຂໍ້ຄວາມແມ່ນການຈັດການເຫດການຫຼືຂໍ້ຄວາມ
ມາຮອດໃນຄໍາສັ່ງທີ່ບໍ່ໄດ້ວາງແຜນໄວ້. MPI ຮັບປະກັນພຽງແຕ່ວ່າລໍາດັບຂອງຂໍ້ຄວາມທີ່ສົ່ງໂດຍ
ອັນດັບ A ຫາອັນດັບ B ຈະມາຮອດໃນຄໍາສັ່ງທີ່ສົ່ງ. ບໍ່ມີການຮັບປະກັນກ່ຽວກັບຄໍາສັ່ງຂອງ
ການມາຮອດຂອງຂໍ້ຄວາມເຫຼົ່ານັ້ນທີ່ກ່ຽວຂ້ອງກັບຂໍ້ຄວາມທີ່ຖືກສົ່ງໄປຫາ B ຈາກອັນດັບທີສາມ C. In
ໂດຍສະເພາະ, ສົມມຸດວ່າ A ສົ່ງຂໍ້ຄວາມໄປຫາ B, ຫຼັງຈາກນັ້ນ A ສົ່ງຂໍ້ຄວາມໄປຫາ C (ຫຼືແມ້ກະທັ້ງການແລກປ່ຽນ
ຂໍ້​ຄວາມ​ຈໍາ​ນວນ​ຫນຶ່ງ​ທີ່​ມີ C​) ທີ່​ສົ່ງ​ຜົນ​ໃຫ້ C ສົ່ງ​ຂໍ້​ຄວາມ​ໄປ B. ຂໍ້​ຄວາມ​ຈາກ C​
ອາດຈະມາຮອດ B ກ່ອນຂໍ້ຄວາມຈາກ A. ໂຄງການ MPI ທີ່ບໍ່ອະນຸຍາດໃຫ້ສໍາລັບການນີ້
ຄວາມເປັນໄປໄດ້ມີແມງໄມ້ທີ່ເອີ້ນວ່າ "ສະພາບເຊື້ອຊາດ". ເງື່ອນ​ໄຂ​ການ​ເຊື້ອ​ຊາດ​ອາດ​ຈະ​ລະ​ອຽດ​ອ່ອນ​ທີ່​ສຸດ​,
ໂດຍສະເພາະໃນເວລາທີ່ຈໍານວນຂອງຂະບວນການມີຂະຫນາດໃຫຍ່.

ການໂຕ້ຕອບການຕີຄວາມຫມາຍ mpy ພື້ນຖານປະກອບດ້ວຍສອງຕົວແປ:
mp_size = ຈໍານວນຂະບວນການ
mp_rank = ອັນດັບຂອງຂະບວນການນີ້ແລະສີ່ຫນ້າທີ່:
mp_send, to, msg; // ສົ່ງຂໍ້ຄວາມເພື່ອຈັດອັນດັບ "ເຖິງ"
msg = mp_recv(ຈາກ); // ໄດ້ຮັບ msg ຈາກອັນດັບ "ຈາກ"
ranks = mp_probe(block); // ສອບຖາມຜູ້ສົ່ງຂໍ້ຄວາມທີ່ຍັງຄ້າງຢູ່
mp_exec, ຊ່ອຍແນ່; // parse ແລະປະຕິບັດ string ໃນທຸກໆອັນດັບ

ທ່ານໂທຫາ mp_exec ໃນອັນດັບ 0 ເພື່ອເລີ່ມຕົ້ນວຽກງານຂະຫນານ. ໃນເວລາທີ່ໂຄງການຕົ້ນຕໍດັ່ງນັ້ນຈຶ່ງສ້າງ
ສຳເລັດແລ້ວ, ອັນດັບທັງໝົດທີ່ນອກເໜືອໄປຈາກອັນດັບ 0 ກັບຄືນສູ່ວົງຮອບທີ່ບໍ່ມີປະໂຫຍດ, ລໍຖ້າຕໍ່ໄປ
mp_exec. ອັນດັບ 0 ເລືອກແຖວການປ້ອນຂໍ້ມູນຕໍ່ໄປຈາກ stdin (ນັ້ນແມ່ນລໍຖ້າການປ້ອນຂໍ້ມູນຢູ່ຂອງມັນ
prompt ໃນເຊດຊັນແບບໂຕ້ຕອບ), ຫຼືຢຸດຂະບວນການທັງຫມົດຖ້າບໍ່ມີການປ້ອນຂໍ້ມູນເພີ່ມເຕີມ
ມີໃຫ້ຢູ່ໃນກອງປະຊຸມ batch.

ຊຸດ mpy ດັດແປງວິທີທີ່ yorick ຈັດການກັບ #include parser directive, ແລະປະກອບມີ
ແລະຮຽກຮ້ອງໃຫ້ມີຫນ້າທີ່. ຄື, ຖ້າວຽກງານຂະຫນານກໍາລັງແລ່ນ (ນັ້ນແມ່ນ, ຫນ້າທີ່ເລີ່ມຕົ້ນ
ໂດຍ mp_exec), ທັງຫມົດເຫຼົ່ານີ້ກາຍເປັນການດໍາເນີນງານລວມ. ນັ້ນແມ່ນ, ອັນດັບ 0 ອ່ານທັງຫມົດ
ເນື້ອ​ໃນ​ຂອງ​ໄຟລ​໌​, ແລະ​ສົ່ງ​ເນື້ອ​ຫາ​ໃນ​ຂະ​ບວນ​ການ​ອື່ນໆ​ເປັນ​ຂໍ້​ຄວາມ MPI (ເຊັ່ນ​:​
mp_exec ຂອງ​ເນື້ອ​ໃນ​ໄຟລ​໌​)​. ທຸກໆຂະບວນການນອກເໜືອໄປຈາກອັນດັບ 0 ແມ່ນພຽງແຕ່ແລ່ນໃນລະຫວ່າງ
ວຽກງານຂະຫນານ; ຢູ່ນອກວຽກງານຂະຫນານເມື່ອພຽງແຕ່ອັນດັບ 0 ກໍາລັງແລ່ນ (ແລະອັນດັບອື່ນໆທັງຫມົດ
ກໍາລັງລໍຖ້າ mp_exec ຕໍ່ໄປ), #include directive and the include and require
ຟັງຊັນກັບຄືນສູ່ການປະຕິບັດ serial ປົກກະຕິຂອງພວກເຂົາ, ມີຜົນກະທົບພຽງແຕ່ອັນດັບ 0.

ເມື່ອ mpy ເລີ່ມຕົ້ນ, ມັນຢູ່ໃນຮູບແບບຂະຫນານ, ດັ່ງນັ້ນໄຟລ໌ທັງຫມົດ yorick ປະກອບມີເວລາທີ່ມັນ
ເລີ່ມຕົ້ນ (ໄຟລ໌ໃນ Y_SITE/i0) ຖືກລວມເຂົ້າເປັນການດໍາເນີນງານລວມ. ໂດຍບໍ່ມີການນີ້
ຄຸນນະສົມບັດ, ທຸກໆຂະບວນການ yorick ຈະພະຍາຍາມເປີດແລະອ່ານການເລີ່ມຕົ້ນປະກອບມີໄຟລ໌,
overloading ລະບົບໄຟລ໌ກ່ອນທີ່ mpy ເຄີຍເລີ່ມຕົ້ນ. ຖ່າຍທອດເນື້ອໃນເຫຼົ່ານີ້
ໄຟລ໌ເປັນຂໍ້ຄວາມ MPI ແມ່ນວິທີດຽວທີ່ຈະຮັບປະກັນວ່າມີແບນວິດພຽງພໍສໍາລັບທຸກໆ
ຂະບວນການອ່ານເນື້ອໃນຂອງໄຟລ໌ດຽວ.

ໄຟລ໌ສຸດທ້າຍລວມຢູ່ໃນການເລີ່ມຕົ້ນແມ່ນໄຟລ໌ທີ່ລະບຸໄວ້ໃນທາງເລືອກ -batch, ຫຼື
ໄຟລ໌ custom.i. ເພື່ອຫຼີກເວັ້ນບັນຫາກັບລະຫັດໃນ custom.i ທີ່ອາດຈະບໍ່ປອດໄພສໍາລັບ
ການປະຕິບັດຂະຫນານ, mpy ບໍ່ໄດ້ຊອກຫາ custom.i, ແຕ່ສໍາລັບ custommp.i ແທນ. ໄດ້
ຄໍາ​ແນະ​ນໍາ​ໃນ​ໄຟລ​໌ -batch ຫຼື​ໃນ custommp.i ແມ່ນ​ປະ​ຕິ​ບັດ​ໃນ​ຮູບ​ແບບ serial ໃນ​ອັນ​ດັບ 0
ເທົ່ານັ້ນ. ເຊັ່ນດຽວກັນ, mpy overrides ຟັງຊັນ process_argv ປົກກະຕິ, ດັ່ງນັ້ນ -i ແລະອື່ນໆ
ຕົວເລືອກແຖວຄໍາສັ່ງຖືກປະມວນຜົນພຽງແຕ່ຢູ່ໃນອັນດັບ 0 ໃນຮູບແບບ serial. ຄວາມຕັ້ງໃຈໃນທັງຫມົດເຫຼົ່ານີ້
ກໍລະນີແມ່ນເພື່ອເຮັດໃຫ້ -batch ຫຼື custommp.i ຫຼື -i ປະກອບມີໄຟລ໌ປະຕິບັດພຽງແຕ່ຢູ່ໃນອັນດັບ 0, ເປັນ
ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ໄດ້​ພິມ​ໃຫ້​ເຂົາ​ເຈົ້າ​ມີ​ການ​ໂຕ້​ຕອບ​. ທ່ານສາມາດໂທຫາ mp_exec ຈາກສິ່ງເຫຼົ່ານີ້ໄດ້
ໄຟລ໌ເພື່ອເລີ່ມຕົ້ນວຽກງານຂະຫນານ, ແຕ່ໄຟລ໌ຕົວມັນເອງແມ່ນ serial.

ທາງເລືອກແຖວຄໍາສັ່ງເພີ່ມເຕີມແມ່ນເພີ່ມໃສ່ຊຸດປົກກະຕິ:
mpy -j somefile.i
ປະກອບມີ somefile.i ໃນຮູບແບບຂະຫນານໃນທຸກອັນດັບ (ອີກເທື່ອຫນຶ່ງ, -i other.i ປະກອບມີ other.i ເທົ່ານັ້ນ
ໃນ​ອັນ​ດັບ 0 ໃນ​ຮູບ​ແບບ serial​)​. ຖ້າມີຫຼາຍທາງເລືອກ -j, ຂະຫນານປະກອບມີເກີດຂຶ້ນ
ໃນຄໍາສັ່ງເສັ້ນຄໍາສັ່ງ. ຖ້າຕົວເລືອກ -j ແລະ -i ຖືກປະສົມ, ແນວໃດກໍ່ຕາມ, ທັງຫມົດ -j ປະກອບມີເກີດຂຶ້ນ
ກ່ອນໃດ -i ປະກອບມີ.

ໃນຖານະເປັນຜົນຂ້າງຄຽງຂອງຄວາມສັບສົນຂອງການລວມເອົາຫນ້າທີ່ຢູ່ໃນ mpy, ຄຸນນະສົມບັດ autoload ແມ່ນ
ຄົນພິການ; ຖ້າລະຫັດຂອງເຈົ້າກະຕຸ້ນການລວມໂດຍການໂທຫາຟັງຊັນທີ່ໂຫລດອັດຕະໂນມັດ, mpy
ຈະຢຸດດ້ວຍຄວາມຜິດພາດ. ທ່ານຕ້ອງໄດ້ໂຫລດຢ່າງຈະແຈ້ງຫນ້າທີ່ທີ່ຈໍາເປັນສໍາລັບການຂະຫນານ
ວຽກງານທີ່ໃຊ້ຮຽກຮ້ອງໃຫ້ມີຟັງຊັນເອີ້ນຕົວເອງພາຍໃນວຽກງານຂະຫນານ.

ຟັງຊັນ mp_send ສາມາດສົ່ງ array yorick ຕົວເລກໃດໆ (ປະເພດ char, short, int, long,
float, double, ຫຼື complex), ຫຼື scalar value. ຂະບວນການສົ່ງຂໍ້ຄວາມ
ຜ່ານ MPI ຮັກສາພຽງແຕ່ຈໍານວນຂອງອົງປະກອບ, ດັ່ງນັ້ນ mp_recv ຜະລິດພຽງແຕ່ມູນຄ່າ scalar ຫຼື
array 1D ຂອງຄ່າ, ບໍ່ວ່າຂະຫນາດໃດຖືກສົ່ງກັບ mp_send.

ຟັງຊັນ mp_recv ຮຽກຮ້ອງໃຫ້ທ່ານລະບຸຜູ້ສົ່ງຂໍ້ຄວາມທີ່ທ່ານຫມາຍເຖິງ
ຮັບ. ມັນຂັດຂວາງຈົນກ່ວາຂໍ້ຄວາມຕົວຈິງມາຮອດຈາກຜູ້ສົ່ງນັ້ນ, ຄິວເຖິງໃດໆ
ຂໍ້ຄວາມຈາກຜູ້ສົ່ງອື່ນໆທີ່ອາດຈະມາຮອດກ່ອນ. ຂໍ້ຄວາມທີ່ຈັດຄິວຈະເປັນ
ດຶງເອົາມັນຄໍາສັ່ງທີ່ໄດ້ຮັບເມື່ອທ່ານໂທຫາ mp_recv ສໍາລັບຜູ້ສົ່ງທີ່ກົງກັນ. ໄດ້
ຄຸນສົມບັດການເຂົ້າຄິວເຮັດໃຫ້ມັນງ່າຍຂຶ້ນຫຼາຍທີ່ຈະຫຼີກເວັ້ນຈາກສະພາບການແຂ່ງຂັນທີ່ງ່າຍດາຍທີ່ສຸດ
ເມື່ອເຈົ້າຂຽນໂປຣແກຣມຂະໜານທີ່ມີການແປ.

ຟັງຊັນ mp_probe ສົ່ງຄືນລາຍຊື່ຂອງຜູ້ສົ່ງທັງໝົດຂອງຂໍ້ຄວາມທີ່ຖືກຈັດຄິວ (ຫຼື nil if
ແຖວຫວ່າງເປົ່າ). ໂທ mp_probe(0​) ເພື່ອ​ກັບ​ຄືນ​ໄປ​ບ່ອນ​ໃນ​ທັນ​ທີ​, ເຖິງ​ແມ່ນ​ວ່າ​ຖ້າ​ຫາກ​ວ່າ​ແຖວ​ຈະ​ຫວ່າງ​ເປົ່າ​.
ໂທ mp_probe(1​) ເພື່ອ​ຕັນ​ຖ້າ​ຫາກ​ວ່າ​ແຖວ​ຫວ່າງ​ເປົ່າ​, ກັບ​ຄືນ​ມາ​ພຽງ​ແຕ່​ໃນ​ເວ​ລາ​ທີ່​ຢ່າງ​ຫນ້ອຍ​ຫນຶ່ງ​ຂໍ້​ຄວາມ​
ມີໃຫ້ສໍາລັບ mp_recv. ໂທ mp_probe(2) ຕັນຈົນກ່ວາຂໍ້ຄວາມໃຫມ່ມາຮອດ, ເຖິງແມ່ນວ່າ
ຂໍ້ຄວາມບາງຢ່າງແມ່ນມີຢູ່ໃນຂະນະນີ້.

ຟັງຊັນ mp_exec ໃຊ້ logarithmic fanout - ອັນດັບ 0 ສົ່ງໄປຫາຂະບວນການ F, ແຕ່ລະອັນ.
ເຊິ່ງສົ່ງໄປຫາ F ຫຼາຍ, ແລະອື່ນໆ, ຈົນກ່ວາຂະບວນການທັງຫມົດມີຂໍ້ຄວາມ. ເມື່ອຂະບວນການ
ສໍາເລັດການປະຕິບັດການສົ່ງຂອງມັນທັງຫມົດ, ມັນ parses ແລະປະຕິບັດເນື້ອໃນຂອງຂໍ້ຄວາມ.
ສູດການຄິດໄລ່ fanout ຮອດຂະບວນການ N ໃນບັນທຶກໄປຫາພື້ນຖານ F ຂອງ N ຂັ້ນຕອນ. ຂະບວນການ F
rank 0 ສົ່ງ​ໄປ​ເປັນ​ອັນ​ດັບ 1, 2, 3, ..., F. ໂດຍ​ທົ່ວ​ໄປ​, ຂະ​ບວນ​ການ​ທີ່​ມີ​ອັນ​ດັບ r ສົ່ງ​ໄປ​ຫາ​.
ອັນດັບ r*F+1, r*F+2, ..., r*F+F (ເມື່ອສິ່ງເຫຼົ່ານີ້ໜ້ອຍກວ່າ N-1 ສໍາລັບຂະບວນການ N). ຊຸດນີ້
ຖືກເອີ້ນວ່າ "ພະນັກງານ" ຂອງ r. ອັນດັບທີ່ມີ r>0 ໄດ້ຮັບຂໍ້ຄວາມຈາກອັນດັບ (r-1)/F,
ເຊິ່ງເອີ້ນວ່າ "ນາຍຈ້າງ" ຂອງ r. ການເອີ້ນ mp_exec interoperates ກັບແຖວ mp_recv;
ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ຂໍ້ຄວາມຈາກອັນດັບອື່ນທີ່ບໍ່ແມ່ນນາຍຈ້າງໃນລະຫວ່າງການ fanout mp_exec ຈະເປັນ
ຈັດຄິວສໍາລັບການດຶງຂໍ້ມູນພາຍຫຼັງໂດຍ mp_recv. (ໂດຍບໍ່ມີຄຸນສົມບັດນີ້, ວຽກງານຂະຫນານໃດໆ
ໃຊ້ຮູບແບບຂໍ້ຄວາມອື່ນນອກຈາກ fanout logarithmic ຈະມີຄວາມອ່ອນໄຫວຕໍ່ກັບເຊື້ອຊາດ
ເງື່ອນ​ໄຂ​.)

fanout logarithmic ແລະ inward ທຽບເທົ່າຂອງມັນມີປະໂຫຍດຫຼາຍທີ່ mpy ໃຫ້ຄູ່ຜົວເມຍ
ຂອງຟັງຊັນລະດັບສູງກວ່າທີ່ໃຊ້ຮູບແບບ fanout ດຽວກັນກັບ mp_exec:
mp_handout, msg;
total = mp_handin(ຄ່າ);
ເພື່ອໃຊ້ mp_handout, ອັນດັບ 0 ຈະຄິດໄລ່ msg, ຈາກນັ້ນອັນດັບທັງໝົດໂທຫາ mp_handout, ເຊິ່ງສົ່ງ msg.
(ຜົນ​ຜະ​ລິດ​ໃນ​ການ​ຈັດ​ອັນ​ດັບ​ທັງ​ຫມົດ​ນອກ​ຈາກ 0​) ຢູ່​ທົ່ວ​ທຸກ​ແຫ່ງ​ໂດຍ fanout ດຽວ​ກັນ​ກັບ mp_exec​. ການນໍາໃຊ້
mp_handin, ທຸກໆຂະບວນການຄິດໄລ່ມູນຄ່າ, ຫຼັງຈາກນັ້ນໂທຫາ mp_handin, ເຊິ່ງສົ່ງຄືນຜົນລວມຂອງ
ມູນຄ່າຂອງຕົນເອງແລະພະນັກງານທັງຫມົດຂອງພວກເຂົາ, ດັ່ງນັ້ນຢູ່ໃນອັນດັບ 0 mp_handin ກັບຄືນຜົນລວມຂອງ
ຄຸນຄ່າຈາກທຸກໆຂະບວນການ.

ທ່ານສາມາດໂທຫາ mp_handin ເປັນຫນ້າທີ່ບໍ່ມີການໂຕ້ຖຽງເພື່ອເຮັດຫນ້າທີ່ເປັນ synchronization; ເມື່ອ​ໃດ​
ອັນດັບ 0 ສືບຕໍ່ຫຼັງຈາກການໂທດັ່ງກ່າວ, ທ່ານຮູ້ວ່າທຸກໆອັນດັບອື່ນໆໄດ້ມາຮອດຈຸດນັ້ນ.
ວຽກງານຂະໜານທັງໝົດ (ອັນໃດກໍໄດ້ເລີ່ມຕົ້ນດ້ວຍ mp_exec) ຕ້ອງສຳເລັດດ້ວຍການໂທຫາ mp_handin,
ຫຼືການຮັບປະກັນທຽບເທົ່າວ່າຂະບວນການທັງໝົດໄດ້ກັບຄືນສູ່ສະຖານະບໍ່ເຮັດວຽກເມື່ອວຽກງານ
ຈົບອັນດັບ 0.

ທ່ານສາມາດດຶງຂໍ້ມູນຫຼືປ່ຽນຕົວກໍານົດການ fanout F ໂດຍໃຊ້ຟັງຊັນ mp_nfan. ຄ່າເລີ່ມຕົ້ນ
ຄ່າແມ່ນ 16, ເຊິ່ງຄວນຈະສົມເຫດສົມຜົນເຖິງແມ່ນວ່າສໍາລັບຂະບວນການຈໍານວນຫລາຍ.

ວຽກຂະໜານພິເສດອັນໜຶ່ງເອີ້ນວ່າ mp_connect, ເຊິ່ງທ່ານສາມາດໃຊ້ເພື່ອປ້ອນການແປ
ເສັ້ນຄໍາສັ່ງໄປຫາອັນດັບດຽວທີ່ບໍ່ແມ່ນ 0, ໃນຂະນະທີ່ອັນດັບອື່ນໆທັງຫມົດນັ່ງຢູ່ຊື່ໆ. ອັນດັບ 0 ຢູ່ໃນ ກ
loop ອ່ານແປ້ນພິມແລະສົ່ງສາຍໄປຫາ "ເຊື່ອມຕໍ່", ເຊິ່ງດໍາເນີນການ
ເຂົາເຈົ້າ, ແລະສົ່ງການຮັບຮູ້ກັບຄືນໄປບ່ອນອັນດັບ 0. ທ່ານດໍາເນີນການຟັງຊັນ mp_disconnect ກັບ.
ສໍາເລັດວຽກງານຂະຫນານແລະຫຼຸດລົງກັບຄືນໄປບ່ອນອັນດັບ 0.

ສຸດທ້າຍ, ບັນທຶກກ່ຽວກັບການຟື້ນຕົວຄວາມຜິດພາດ. ໃນກໍລະນີທີ່ມີຄວາມຜິດພາດໃນລະຫວ່າງການເຮັດວຽກຂະຫນານ,
mpy ພະຍາຍາມອອກຈາກ mp_exec ຢ່າງສະຫງ່າງາມ, ດັ່ງນັ້ນເມື່ອອັນດັບ 0 ກັບຄືນມາ, ອັນດັບອື່ນໆທັງຫມົດ
ເປັນທີ່ຮູ້ກັນວ່າບໍ່ເຮັດວຽກ, ກຽມພ້ອມສໍາລັບ mp_exec ຕໍ່ໄປ. ຂັ້ນຕອນນີ້ຈະຫ້ອຍຕະຫຼອດໄປຖ້າມີ
ຫນຶ່ງໃນຂະບວນການແມ່ນຢູ່ໃນ loop infinite, ຫຼືຖ້າບໍ່ດັ່ງນັ້ນຢູ່ໃນສະຖານະທີ່ມັນຈະບໍ່ເຄີຍ
ໂທຫາ mp_send, mp_recv, ຫຼື mp_probe, ເພາະວ່າ MPI ບໍ່ມີວິທີທີ່ຈະສົ່ງສັນຍານວ່າ.
ຂັດຂວາງຂະບວນການທັງຫມົດ. (ນີ້ແມ່ນວິທີຫນຶ່ງທີ່ສະພາບແວດລ້ອມ MPI
" crude ") ຂະບວນການອັນດັບ 0 ແມ່ນປະໄວ້ກັບອັນດັບຂອງຂະບວນການທໍາອິດທີ່ລາຍງານ a
ຄວາມຜິດ, ບວກກັບຈໍານວນຂະບວນການທີ່ຜິດພາດສໍາລັບເຫດຜົນອື່ນນອກເຫນືອຈາກການເປັນ
ສົ່ງຂໍ້ຄວາມວ່າອັນດັບອື່ນມີຄວາມຜິດ. ຂະບວນການຜິດພາດທໍາອິດສາມາດເຂົ້າໄປໃນ dbug
ໂຫມດຜ່ານ mp_connect; ໃຊ້ mp_disconnect ຫຼື dbexit ເພື່ອເລື່ອນກັບຄືນສູ່ໂໝດ serial ໃນອັນດັບ 0.

ທາງເລືອກໃນການ
-j file.i ປະກອບມີໄຟລ໌ແຫຼ່ງ Yorick file.i ເປັນ mpy ເລີ່ມຕົ້ນໃນຮູບແບບຂະຫນານ
ຢູ່ໃນອັນດັບທັງຫມົດ. ອັນນີ້ເທົ່າກັບຟັງຊັນ mp_include ຫຼັງຈາກ mpy
ໄດ້ເລີ່ມຕົ້ນ.

-i file.i ປະກອບມີໄຟລ໌ແຫຼ່ງ Yorick file.i ເປັນ mpy ເລີ່ມຕົ້ນ, ໃນຮູບແບບ serial.
ນີ້ເທົ່າກັບຄໍາສັ່ງ #include ຫຼັງຈາກ mpy ໄດ້ເລີ່ມຕົ້ນ.

- ຊຸດ file.i ປະກອບມີໄຟລ໌ແຫຼ່ງ Yorick file.i ເປັນ mpy ເລີ່ມຕົ້ນ, ໃນຮູບແບບ serial.
ໄຟລ໌ການປັບແຕ່ງຂອງທ່ານ custommp.i, ຖ້າມີ, ແມ່ນ ບໍ່ ອ່ານ, ແລະ mpy ແມ່ນ
ວາງ​ໄວ້​ໃນ​ຮູບ​ແບບ batch​. ໃຊ້ຄໍາສັ່ງຊ່ວຍເຫຼືອກ່ຽວກັບຟັງຊັນ batch
(help, batch) ເພື່ອຊອກຫາເພີ່ມເຕີມກ່ຽວກັບ batch mode. ໃນຮູບແບບ batch, ທັງຫມົດ
ຄວາມຜິດພາດແມ່ນຕາຍ; ໂດຍປົກກະຕິ, mpy ຈະຢຸດການປະຕິບັດແລະລໍຖ້າຕື່ມອີກ
ການ​ປ້ອນ​ຂໍ້​ມູນ​ຫຼັງ​ຈາກ​ຄວາມ​ຜິດ​ພາດ​.

ໃຊ້ mpy.mpich2 ອອນໄລນ໌ ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

Linux ຄຳ ສັ່ງ

Ad




×
ການ​ໂຄ​ສະ​ນາ
?ຊື້ເຄື່ອງ, ຈອງ, ຫຼືຊື້ທີ່ນີ້ — ບໍ່ມີຄ່າໃຊ້ຈ່າຍ, ຊ່ວຍໃຫ້ການບໍລິການຟຣີ.