likwid-pin - ອອນລາຍໃນຄລາວ

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

ໂຄງການ:

NAME


likwid-pin - pin ຄໍາຮ້ອງສະຫມັກຕາມລໍາດັບຫຼື threaded ກັບໂປເຊດເຊີທີ່ອຸທິດຕົນ

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


likwid-pin [-vhqipS] [-c ] [-s ] [-d ]

ລາຍລະອຽດ


likwid-pin ແມ່ນຄໍາຮ້ອງສະຫມັກເສັ້ນຄໍາສັ່ງເພື່ອ pin ຄໍາຮ້ອງສະຫມັກລໍາດັບຫຼື multithreaded
ກັບໂປເຊດເຊີທີ່ອຸທິດຕົນ. ມັນສາມາດຖືກນໍາໃຊ້ເປັນການທົດແທນສໍາລັບ ຊຸດວຽກ(1). ກົງກັນຂ້າມກັບ
ຊຸດວຽກບໍ່ມີໜ້າກາກສະໜິດສະໜົມແຕ່ມີໂປເຊດເຊີດຽວລະບຸໄວ້. ສໍາລັບ multithreaded
ຄໍາຮ້ອງສະຫມັກໂດຍອີງໃສ່ຫ້ອງສະຫມຸດ pthread ໄດ້ pthread_create ໂທຫ້ອງສະໝຸດແມ່ນໂຫຼດເກີນ
ຜ່ານ LD_PRELOAD ແລະແຕ່ລະກະທູ້ທີ່ສ້າງຂຶ້ນຈະຖືກປັກໝຸດໃສ່ໂປຣເຊສເຊີສະເພາະຕາມທີ່ກຳນົດໄວ້
in core_list

ຕາມຄ່າເລີ່ມຕົ້ນທຸກກະທູ້ທີ່ສ້າງຂຶ້ນຈະຖືກປັກໝຸດໃສ່ຫຼັກຕາມລຳດັບການໂທໄປຫາ
pthread_create. ມັນເປັນໄປໄດ້ທີ່ຈະຂ້າມກະທູ້ດຽວໂດຍໃຊ້ຕົວເລືອກ -s commandline.

ສໍາລັບການປະຕິບັດ OpenMP gcc ແລະ icc compilers ໄດ້ຮັບການສະຫນັບສະຫນູນຢ່າງຊັດເຈນ. ຄົນອື່ນອາດຈະ
ເຮັດວຽກ. likwid-pin ຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມ OMP_NUM_THREADS ສໍາລັບທ່ານຖ້າບໍ່ຢູ່ແລ້ວ
ປະຈຸບັນ. ມັນຈະຕັ້ງກະທູ້ຫຼາຍເທົ່າທີ່ມີຢູ່ໃນຕົວສະແດງ PIN. ຈົ່ງຮັບຮູ້ວ່າ
ດ້ວຍ pthreads ກະທູ້ຫຼັກຈະຖືກປັກໝຸດຢູ່ສະເໝີ. ຖ້າທ່ານສ້າງຕົວຢ່າງ 4 threads ກັບ
pthread_create ແລະຢ່າໃຊ້ຂະບວນການຂອງພໍ່ແມ່ເປັນພະນັກງານທີ່ທ່ານຍັງຕ້ອງໄດ້ສະຫນອງ
num_threads+1 IDs ໂປເຊດເຊີ.

likwid-pin ສະຫນັບສະຫນູນຕົວເລກທີ່ແຕກຕ່າງກັນສໍາລັບການ pinning. ຕໍ່ຕົວເລກທາງກາຍະພາບເລີ່ມຕົ້ນຂອງ
ຫຼັກຖືກນໍາໃຊ້. ນີ້ແມ່ນຕົວເລກເຊັ່ນກັນ likwid-topology(1​) ບົດລາຍງານ. ແຕ່ຍັງ
ຕົວເລກຕາມເຫດຜົນພາຍໃນ node ຫຼື sockets ສາມາດຖືກນໍາໃຊ້. ຖ້າໃຊ້ກັບ N (ຕົວຢ່າງ -c
N:0-6) ຫຼັກແມ່ນເປັນຕົວເລກຕາມເຫດຜົນຫຼາຍກວ່າ node ທັງໝົດ. ຫຼັກທາງກາຍຍະພາບມາກ່ອນ. ຖ້າ
ເຊັ່ນ: ລະບົບມີ 8 cores ກັບ 16 SMT threads ກັບ -c N:0-7 ທ່ານໄດ້ຮັບຫຼັກທາງດ້ານຮ່າງກາຍທັງຫມົດ.
ຖ້າທ່ານລະບຸ -c N: 0-15 ທ່ານໄດ້ຮັບຫຼັກທາງດ້ານຮ່າງກາຍທັງຫມົດແລະຫົວຂໍ້ SMT ທັງຫມົດ. ດ້ວຍ S ທ່ານສາມາດເຮັດໄດ້
ລະບຸຕົວເລກຕາມເຫດຜົນພາຍໃນຊັອກເກັດ, ອີກເທື່ອຫນຶ່ງແກນທາງດ້ານຮ່າງກາຍມາກ່ອນ. ທ່ານສາມາດປະສົມ
ໂດເມນທີ່ແຕກຕ່າງກັນແຍກດ້ວຍ @. ຕົວຢ່າງ: -c S0:0-3@S2:2-3 ທ່ານປັກໝຸດກະທູ້ 0-3 ກັບເຫດຜົນ
cores 0-3 ໃນ socket 0 ແລະ threads 4-5 on logical cores 2-3 on socket 2.

ສໍາລັບແອັບພລິເຄຊັນທີ່ນະໂຍບາຍການສໍາພັດຄັ້ງທໍາອິດໃນລະບົບ numa ບໍ່ສາມາດໃຊ້ໄດ້ likwid-pin
ສາມາດໃຊ້ເພື່ອເປີດການຈັດວາງຄວາມຊົງຈຳແບບ interleave. ນີ້ຢ່າງຫຼວງຫຼາຍສາມາດເລັ່ງຄວາມໄວ
ປະສິດທິພາບຂອງລະຫັດ multithreaded ຄວາມຊົງຈໍາຜູກມັດ. noma ທັງໝົດທີ່ຜູ້ໃຊ້ໄດ້ປັກໝຸດກະທູ້ໃສ່
ຖືກນໍາໃຊ້ສໍາລັບການແຊກແຊງ.

OPTIONS


-v ພິມ​ຂໍ້​ມູນ​ສະ​ບັບ​ເປັນ​ຜົນ​ຜະ​ລິດ​ມາດ​ຕະ​ຖານ​, ຫຼັງ​ຈາກ​ນັ້ນ​ອອກ​.

-h ພິມຂໍ້ຄວາມຊ່ວຍເຫຼືອໄປຫາຜົນຜະລິດມາດຕະຖານ, ຈາກນັ້ນອອກ.

-c OR OR <ກະແຈກກະຈາຍ ນະໂຍບາຍ>
ລະບຸບັນຊີລາຍຊື່ຕົວເລກຂອງໂປເຊດເຊີ. ບັນຊີລາຍຊື່ອາດມີຫຼາຍລາຍການ,
ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, ແລະໄລຍະ. ຕົວຢ່າງ 0,3,9-11. ນອກນັ້ນທ່ານຍັງສາມາດນໍາໃຊ້ຢ່າງມີເຫດຜົນ
ຕົວເລກ, ພາຍໃນ node (N), socket (S ) ຫຼືໂດເມນ numa (M ).
likwid-pin ຍັງຮອງຮັບການປັກໝຸດຢ່າງມີເຫດຜົນພາຍໃນ cpuset ທີ່ມີຄຳນຳໜ້າ L. ຖ້າ​ເຈົ້າ
ommit ທາງເລືອກນີ້ likwid-pin ຈະ pin threads ກັບ processors ໃນ node ໄດ້
ກັບຫຼັກທາງດ້ານຮ່າງກາຍກ່ອນ. ເບິ່ງຂ້າງລຸ່ມນີ້ສໍາລັບລາຍລະອຽດກ່ຽວກັບການນໍາໃຊ້ການສະແດງອອກຂອງກະທູ້ຫຼື
ນະໂຍບາຍກະແຈກກະຈາຍ

-s
ລະບຸໜ້າກາກຂ້າມເປັນເລກ HEX. ສໍາລັບແຕ່ລະຊຸດ, ກະທູ້ທີ່ສອດຄ້ອງກັນແມ່ນ
ຂ້າມ.

-S ໂດເມນໜ່ວຍຄວາມຈຳ ccNUMA ທັງໝົດທີ່ເປັນຂອງລາຍການຫົວຂໍ້ທີ່ລະບຸຈະຖືກອະນາໄມ
ກ່ອນການແລ່ນ. ສາມາດແກ້ໄຂບັນຫາ cache buffer ໃນ Linux.

-p ພິມໂດເມນກະທູ້ທີ່ມີຢູ່ສໍາລັບການປັກໝຸດຢ່າງມີເຫດຜົນ. ຖ້າໃຊ້ປະສົມປະສານ
ດ້ວຍ -c, ID ໂປເຊດເຊີທາງດ້ານຮ່າງກາຍຖືກພິມອອກເປັນ stdout.

-i ຕັ້ງນະໂຍບາຍຄວາມຊົງຈໍາ numa ເພື່ອ interleave ຂະຫຍາຍ nodes numa ທັງຫມົດທີ່ມີສ່ວນຮ່ວມໃນການ pinning

-q ການ​ປະ​ຕິ​ບັດ silent ໂດຍ​ບໍ່​ມີ​ການ​ຜະ​ລິດ​ຕະ​ພັນ​

-d
ກໍານົດຕົວຂັ້ນທີ່ໃຊ້ເພື່ອອອກລາຍການໂປເຊດເຊີທາງດ້ານຮ່າງກາຍ (-p & -c)

EXAMPLE


1. ສໍາລັບຄໍາຮ້ອງສະຫມັກ pthread ມາດຕະຖານ:

likwid-pin -c 0,2,4​-6 ./myApp

ຂະບວນການແມ່ແມ່ນ pinned ກັບໂປເຊດເຊີ 0. ກະທູ້ 0 ຫາໂປເຊດເຊີ 2, thread 1 ຫາ
ໂປເຊດເຊີ 4, thread 2 ຫາ processor 5 ແລະ thread 3 to processor 6. ຖ້າມີ threads ຫຼາຍ
ຖືກສ້າງຂື້ນກວ່າທີ່ລະບຸໄວ້ໃນບັນຊີລາຍຊື່ຂອງໂປເຊດເຊີ, ກະທູ້ເຫຼົ່ານີ້ຖືກ pinned ກັບໂປເຊດເຊີ 0 ເປັນ
ຜົນຕອບແທນ.

2. ສໍາລັບ gcc OpenMP ເປັນຈໍານວນຫຼາຍ ids ຕ້ອງໄດ້ຮັບການລະບຸໄວ້ໃນບັນຊີລາຍຊື່ໂຮງງານຜະລິດເນື່ອງຈາກວ່າມີກະທູ້:

OMP_NUM_THREADS=4; likwid-pin -c 0,2,1,3 ./myApp

3. ການຄວບຄຸມຢ່າງເຕັມທີ່ກ່ຽວກັບການ pinning ສາມາດບັນລຸໄດ້ໂດຍການລະບຸຫນ້າກາກຂ້າມ. ຍົກ​ຕົວ​ຢ່າງ
ຄໍາສັ່ງຕໍ່ໄປນີ້ຂ້າມການປັກໝຸດຂອງກະທູ້ 1:

OMP_NUM_THREADS=4; likwid-pin -s 0x1 -c 0,2,1,3 ./myApp

4. ສະຫຼັບ -c ສະຫນັບສະຫນູນຄໍານິຍາມຂອງກະທູ້ໃນໂດເມນ affinity ສະເພາະໃດຫນຶ່ງເຊັ່ນ:
NUMA node ຫຼືກຸ່ມແຄດ. ໂດເມນທີ່ມີສະໜິດສະໜົມທີ່ມີຢູ່ສາມາດດຶງຂໍ້ມູນດ້ວຍ -p
ສະຫຼັບແລະບໍ່ມີທາງເລືອກເພີ່ມເຕີມໃນ commandline. ໂດເມນຄວາມສຳພັນທົ່ວໄປແມ່ນ N
(ທັງ Node), SX (socket X), CX (ກຸ່ມ cache X) ແລະ MX (ກຸ່ມຄວາມຈໍາ X). ຫຼາຍ
ໂດເມນ affinity ສາມາດຖືກຕັ້ງແຍກໂດຍ @. ເພື່ອປັກໝຸດ 2 ກະທູ້ໃສ່ແຕ່ລະເຕົ້າຮັບ
ຂອງ​ລະ​ບົບ 2-socket​:

OMP_NUM_THREADS=4; likwid-pin -c S0:0-1@S1:0-1 ./myApp

5. ນິຍາມການໂຕ້ຖຽງອີກອັນໜຶ່ງຂອງສະວິດ -c ອະນຸຍາດໃຫ້ກະທູ້ຖືກປັກໝຸດຕາມ
ກັບການສະແດງອອກຄື E:N:4:1:2. syntax ແມ່ນ E: :
ກະທູ້>(: : ). ຕົວຢ່າງ pins 8 threads ກັບ 2 SMT threads ຕໍ່
ຫຼັກໃນເຄື່ອງ SMT 4:

OMP_NUM_THREADS=4; likwid-pin -c E:N:8:2:4 ./myApp

6. ທາງເລືອກສຸດທ້າຍສໍາລັບການສະຫຼັບ -c ແມ່ນການກະແຈກກະຈາຍອັດຕະໂນມັດຂອງກະທູ້ກ່ຽວກັບ
ໂດເມນທີ່ໃກ້ຊິດ. ຍົກ​ຕົວ​ຢ່າງ​ທີ່​ຈະ​ກະ​ແຈກ​ກະ​ຈາຍ​ກະ​ທູ້​ໃນ​ທົ່ວ​ທັງ​ຫມົດ​ຫນ່ວຍ​ຄວາມ​ຈໍາ​ໂດ​ເມນ​ໃນ a
ລະບົບ:

OMP_NUM_THREADS=4; likwid-pin -c M: ກະແຈກກະຈາຍ ./myApp

ໃຊ້ likwid-pin ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net



ລ່າສຸດ Linux ແລະ Windows ໂຄງການອອນໄລນ໌