ນີ້ແມ່ນຄໍາສັ່ງ likwid-perfctr ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
likwid-perfctr - ກຳນົດຄ່າ ແລະອ່ານຕົວນັບການປະຕິບັດຮາດແວເທິງ x86 cpus
ສະຫຼຸບສັງລວມ
likwid-perfctr [-vhHVmaeiMoO] [-c/-C ] [-g or
] [-t ] [-S ] [-s ] [-o
]
ລາຍລະອຽດ
likwid-perfctr ເປັນຄໍາຮ້ອງສະຫມັກເສັ້ນຄໍາສັ່ງນ້ໍາຫນັກເບົາເພື່ອກໍານົດຄ່າແລະອ່ານອອກ
ຂໍ້ມູນການຕິດຕາມປະສິດທິພາບຂອງຮາດແວຢູ່ໃນໂປເຊດເຊີ x86 ທີ່ຮອງຮັບ. ມັນສາມາດວັດແທກບໍ່ວ່າຈະເປັນ
wrapper ໂດຍບໍ່ມີການປ່ຽນແປງຄໍາຮ້ອງສະຫມັກການວັດແທກຫຼືມີຫນ້າທີ່ API ເຄື່ອງຫມາຍພາຍໃນ
ລະຫັດ, ເຊິ່ງຈະເປີດແລະປິດເຄື່ອງນັບ. ມີກຸ່ມທີ່ຕັ້ງໄວ້ລ່ວງຫນ້າທີ່ມີປະໂຫຍດ
ຊຸດເຫດການ ແລະຕົວວັດແທກທີ່ມາຈາກ. ເຫດການ arbitrary ເພີ່ມເຕີມສາມາດຖືກວັດແທກດ້ວຍ custom
ຊຸດເຫດການ. API ເຄື່ອງຫມາຍສາມາດວັດແທກພາກພື້ນທີ່ມີຊື່ຫຼາຍ. ຜົນໄດ້ຮັບແມ່ນສະສົມຢູ່
ໂທຫຼາຍ. ໂປເຊດເຊີ x86 ຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ:
· Intel Core 2: ຕົວແປທັງໝົດ. ເຄົາເຕີ: PMC[0-1], FIXC[0-2]
· Intel ເນຮາເລັມ: ໂຕະ: PMC[0-3], FIXC[0-2], UPMC[0-7]
· Intel ເນຮາເລັມ EX: ໂຕະ: PMC[0-3], FIXC[0-2], MBOX[0-1]C[0-5], BBOX[0-1]C[0-3],
RBOX[0-1]C[0-7], WBOX[0-5], UBOX0, SBOX[0-1]C[0-3], CBOX[0-9]C[0-4]
· Intel Westmere:
ໂຕະ: PMC[0-3], FIXC[0-2], UPMC[0-7]
· Intel Westmere EX: ໂຕະ: PMC[0-3], FIXC[0-2], MBOX[0-1]C[0-5], BBOX[0-1]C[0-3],
RBOX[0-1]C[0-7], WBOX[0-5], UBOX0, SBOX[0-1]C[0-3], CBOX[0-9]C[0-4]
· Intel Sandy ສະພານ: ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ: PMC[0-3], FIXC[0-2], PWR[0-3]
· Intel Sandy ຂົວ PS: ສະຫນັບສະຫນູນບາງສ່ວນສໍາລັບ uncore, ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ:
PMC[0-3], FIXC[0-2], PWR[0-3]. MBOX[0-3]C[0-3]
· Intel Ivy ສະພານ: ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ: PMC[0-3], FIXC[0-2], PWR[0-3]
· Intel Ivy ຂົວ PS: ສະຫນັບສະຫນູນບາງສ່ວນສໍາລັບ uncore, ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ:
PMC[0-3], FIXC[0-2], PWR[0-3], CBOX[0-9]C[0-3], MBOX[0-3]C[0-3], MBOX[0-3]ແກ້ໄຂ
· Intel Haswell: ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ: PMC[0-3], FIXC[0-2], PWR[0-3]
· Intel Haswell PS: ບໍ່ມີການສະຫນັບສະຫນູນ uncore, ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ: PMC[0-3],
FIXC[0-2], PWR[0-3]
· Intel ປະລໍາມະນູ Silvermont: ສະຫນັບສະຫນູນ RAPL ຢ່າງເຕັມທີ່. ເຄົາເຕີ: PMC[0-1], FIXC[0-2], PWR[0-1]
· Intel Pentium M: Banias ແລະ Dothan variants. ເຄົາເຕີ: PMC[0-1]
· Intel ຄຳ ຖາມທີ 6: ທົດສອບໃນ P3.
· AMD K8: ຕົວແປທັງໝົດ. ເຄົາເຕີ: PMC[0-3]
· AMD K10: Barcelona, Shanghai, Istanbul, ໂຮງງານຜະລິດທີ່ອີງໃສ່ MagnyCours. ເຄົາເຕີ:
PMC[0-3]
OPTIONS
-v ພິມຂໍ້ມູນສະບັບເປັນຜົນຜະລິດມາດຕະຖານ, ຫຼັງຈາກນັ້ນອອກ.
-h ພິມຂໍ້ຄວາມຊ່ວຍເຫຼືອໄປຫາຜົນຜະລິດມາດຕະຖານ, ຈາກນັ້ນອອກ.
-H ພິມຂໍ້ຄວາມຊ່ວຍເຫຼືອກຸ່ມ (ໃຊ້ຮ່ວມກັນກັບ -g switch).
-V ຜົນຜະລິດ verbose ໃນລະຫວ່າງການປະຕິບັດສໍາລັບການ debugging.
-m ແລ່ນຢູ່ໃນໂໝດ API ເຄື່ອງໝາຍ
-a ພິມກຸ່ມປະສິດທິພາບທີ່ມີຢູ່ສໍາລັບໂປເຊດເຊີປະຈຸບັນ.
-e ພິມຕົວນັບທີ່ມີຢູ່ ແລະເຫດການປະສິດທິພາບຂອງໂປເຊດເຊີປະຈຸບັນ.
-o
ເກັບຮັກສາ ouput ທັງຫມົດໃສ່ໄຟລ໌ແທນທີ່ຈະ stdout. ສໍາລັບຊື່ໄຟລ໌ຕໍ່ໄປນີ້
ຕົວຍຶດບ່ອນຖືກຮອງຮັບ: %j ສໍາລັບ PBS_JOBID, %r ສໍາລັບ MPI RANK (ສະເພາະ Intel MPI ທີ່
ໃນປັດຈຸບັນ), %h hostname ແລະ %p ສໍາລັບຂະບວນການ pid. ຕົວຍຶດຕ້ອງເປັນ
ແຍກດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງເປັນ, ຕົວຢ່າງ, -o test_%h_%p. ທ່ານຕ້ອງລະບຸຄໍາຕໍ່ທ້າຍກັບ
ຊື່ເອກະສານ. ສໍາລັບ txt ຜົນຜະລິດແມ່ນພິມອອກເປັນໄຟລ໌. ຄໍາຕໍ່ທ້າຍອື່ນໆເຮັດໃຫ້ເກີດ a
ການກັ່ນຕອງຜົນຜະລິດ. ຕົວກອງທີ່ມີຢູ່ແມ່ນ csv (ຄ່າທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ) ແລະ xml
ໃນຂະນະນີ້.
-O ຢ່າພິມຕາຕະລາງສໍາລັບຜົນໄດ້ຮັບ, ໃຊ້ CSV ທີ່ສາມາດວິເຄາະໄດ້ງ່າຍແທນ.
-i ພິມຂໍ້ມູນ cpuid ກ່ຽວກັບໂປເຊດເຊີແລະໃນ Intel Performance Monitoring
ຄຸນນະສົມບັດ, ຫຼັງຈາກນັ້ນອອກ.
-c
ລະບຸບັນຊີລາຍຊື່ຕົວເລກຂອງໂປເຊດເຊີ. ບັນຊີລາຍຊື່ອາດມີຫຼາຍລາຍການ,
ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, ແລະໄລຍະ. ຕົວຢ່າງ 0,3,9-11.
-C
ລະບຸບັນຊີລາຍຊື່ຕົວເລກຂອງໂປເຊດເຊີ. ບັນຊີລາຍຊື່ອາດມີຫຼາຍລາຍການ,
ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, ແລະໄລຍະ. ຕົວຢ່າງ 0,3,9-11. ຕົວປ່ຽນແປງນີ້ຈະປັກໝຸດນຳ
ກະທູ້ກັບຫຼັກ. ຍັງສາມາດໃຊ້ຕົວເລກຕາມເຫດຜົນໄດ້.
-g <performance ກຸ່ມ > or <performance ກໍລະນີ ທີ່ກໍານົດໄວ້ string >
ລະບຸກຸ່ມປະສິດທິພາບທີ່ຈະວັດແທກ. ນີ້ສາມາດເປັນຫນຶ່ງໃນ tags ຜົນຜະລິດທີ່ມີ
ທຸງຊາດ. ນອກຈາກນັ້ນ, ຊຸດເຫດການທີ່ກໍາຫນົດເອງສາມາດຖືກລະບຸໂດຍບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ
ເຫດການ. ແຕ່ລະເຫດການມີຮູບແບບ eventId: ລົງທະບຽນໂດຍທີ່ລົງທະບຽນເປັນອັນດຽວ
ຂອງສະຖາປັດຕະຍະກໍາທີ່ສະຫນັບສະຫນູນການລົງທະບຽນວຽກງານຕ້ານການ.
-t <frequency of ການວັດແທກ>
ຮູບແບບກໍານົດເວລາສໍາລັບການແກ້ໄຂທີ່ໃຊ້ເວລາການວັດແທກ, ຄໍາຕໍ່ທ້າຍທີ່ເປັນໄປໄດ້ 's' ແລະ 'ms' ຄື
100ms. ຜົນຜະລິດມີຮູບແບບ:
<Result thread0> <Result thread1> ...
-S
ໂໝດ stethoscope ທີ່ມີໄລຍະເວລາເປັນວິນາທີ. ສາມາດຖືກນໍາໃຊ້ເພື່ອວັດແທກຄໍາຮ້ອງສະຫມັກ
ຈາກພາຍນອກ.
EXAMPLE
ເນື່ອງຈາກວ່າ likwid-perfctr ມາດຕະການກ່ຽວກັບໂປເຊດເຊີແລະບໍ່ແມ່ນຄໍາຮ້ອງສະຫມັກດຽວມັນເປັນສິ່ງຈໍາເປັນ
ເພື່ອຮັບປະກັນວ່າຂະບວນການ ແລະກະທູ້ຖືກປັກໝຸດໃສ່ຊັບພະຍາກອນທີ່ອຸທິດຕົນ. ເຈົ້າສາມາດປັກໝຸດໄດ້
ຄໍາຮ້ອງສະຫມັກຕົວທ່ານເອງຫຼືນໍາໃຊ້ການທໍາງານຂອງ PIN ການກໍ່ສ້າງ.
1. ເປັນ wrapper ກັບກຸ່ມປະສິດທິພາບ:
likwid-perfctr -C 0-2 -g ອຈ ./cacheBench -n 2 -l 1048576 -i 100 -t ນ້ໍາ
ຂະບວນການແມ່ແມ່ນ pinned ກັບໂປເຊດເຊີ 0, ກະທູ້ 0 ກັບໂປເຊດເຊີ 1 ແລະກະທູ້ 1 ຫາ
ໂປເຊດເຊີ 2.
2. ໃນຖານະເປັນ wrapper ກັບເຫດການທີ່ກໍານົດໄວ້ໃນ AMD:
likwid-perfctr -C 0-4 -g INSTRUCTIONS_RETIRED_SSE:PMC0,CPU_CLOCKS_UNHALTED:PMC3 ./myApp
ມັນໄດ້ຖືກລະບຸໄວ້ວ່າເຫດການ INSTRUCTIONS_RETIRED_SSE ແມ່ນການວັດແທກໃນ counter PMC0 ແລະ
ເຫດການ CPU_CLOCKS_UNHALTED ເທິງເຄົາເຕີ PMC3. ມັນເປັນໄປໄດ້ຄິດໄລ່ runtime ຂອງ
ກະທູ້ທັງຫມົດໂດຍອີງໃສ່ CPU_CLOCKS_UNHALTED ເຫດການ. ຖ້າທ່ານຕ້ອງການ, ທ່ານ ຈຳ ເປັນຕ້ອງປະກອບ
ເຫດການນີ້ຢູ່ໃນສະຕຣິງເຫດການແບບກຳນົດເອງຂອງເຈົ້າ ດັ່ງທີ່ສະແດງຢູ່ຂ້າງເທິງ.
3. ໃນຖານະເປັນ wrapper ກັບເຫດການທີ່ກໍາຫນົດເອງທີ່ກໍານົດໄວ້ໃນ Intel:
likwid-perfctr -C 0 -g INSTR_RETIRED_ANY:FIXC0,CPU_CLK_UNHALTED_CORE:FIXC1 ./myApp
ເຫດການຄົງທີ່ຂອງໂປເຊດເຊີ Intel ແມ່ນວັດແທກຢູ່ໃນຕົວນັບສະເພາະ. ພວກນີ້ແມ່ນ
INSTR_RETIRED_ANY , CPU_CLK_UNHALTED_CORE. ແລະ CPU_CLK_UNHALTED_REF ຖ້າເຈົ້າຕັ້ງຄ່າ
ເຄົາເຕີຄົງທີ່ເຫຼົ່ານີ້, likwid-perfctr ຈະຄິດໄລ່ runtime ແລະ CPI metrics ສໍາລັບທ່ານ
ດໍາເນີນການ.
4. ການນໍາໃຊ້ເຄື່ອງຫມາຍ API ເພື່ອວັດແທກພຽງແຕ່ບາງສ່ວນຂອງລະຫັດຂອງທ່ານ (ນີ້ສາມາດຖືກນໍາໃຊ້ທັງສອງກັບ
ກຸ່ມຫຼືຊຸດກິດຈະກໍາກໍານົດເອງ):
likwid-perfctr -m -C 0-4 -g INSTRUCTIONS_RETIRED_SSE:PMC0,CPU_CLOCKS_UNHALTED:PMC3
./cacheBench
ທ່ານຕ້ອງເຊື່ອມຕໍ່ລະຫັດຂອງທ່ານຕໍ່ກັບ liblikwid.a/.so ແລະໃຊ້ເຄື່ອງຫມາຍການໂທຫາ API. ໄດ້
ລະຫັດຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນການໂທທີ່ຈໍາເປັນ:
#ລວມທັງ
/* ພຽງແຕ່ຫນຶ່ງກະທູ້ໂທ init */
ຖ້າ (threadId == 0)
{
likwid_markerInit();
}
/* ຖ້າທ່ານຕ້ອງການວັດແທກຄໍາຮ້ອງສະຫມັກກະທູ້
* ທ່ານຕ້ອງໂທຫາ likwid_markerThreadInit() ສໍາລັບ
* ການກະກຽມ, ຕົວຢ່າງກັບ OpenMP */
#pragma omp ຂະຫນານ
{
likwid_markerThreadInit();
}
BARRIER;
likwid_markerStartRegion("Benchmark");
/* ລະຫັດຂອງທ່ານທີ່ຈະວັດແທກແມ່ນຢູ່ທີ່ນີ້.*/
likwid_markerStopRegion("Benchmark");
BARRIER;
/* ອີກເທື່ອໜຶ່ງມີພຽງກະທູ້ດຽວທີ່ສາມາດປິດເຄື່ອງໝາຍໄດ້ */
ຖ້າ (threadId == 0)
{
likwid_markerClose();
}
5. ການນໍາໃຊ້ likwid ໃນຮູບແບບໄລຍະເວລາ:
likwid-perfctr -c 0-3 -g FLOPS_DP -t 300ms ./myApp > out.txt
ນີ້ຈະອ່ານຕົວນັບທຸກ 300ms ໃນຫຼັກທາງກາຍະພາບ 0-3 ແລະຂຽນຜົນໄດ້ຮັບໃສ່
out.txt. ສໍາລັບຮູບແບບກໍານົດເວລາມີຄໍາຮ້ອງສະຫມັກ frontend likwid-scope, ເຊິ່ງເຮັດໃຫ້
ການວາງແຜນສົດຂອງເຫດການທີ່ເລືອກ. ສໍາລັບຕົວຢ່າງລະຫັດເພີ່ມເຕີມເບິ່ງທີ່ likwid WIKI
ໜ້າ. ຂະບວນການແມ່ນ ບໍ່ ປັກໝຸດໃສ່ CPUs 0-3.
6. ການນໍາໃຊ້ likwid ໃນຮູບແບບ stethoscope:
likwid-perfctr -c 0-3 -g FLOPS_DP -S 2s
ນີ້ຈະເລີ່ມຕົ້ນຕົວນັບແລະອ່ານພວກມັນອອກຫຼັງຈາກ 2s ໃນຫຼັກທາງກາຍະພາບ 0-3 ແລະຂຽນ
ຜົນໄດ້ຮັບທີ່ຈະ stdout. ຂະບວນການແມ່ນ ບໍ່ ປັກໝຸດໃສ່ CPUs 0-3.
ໃຊ້ likwid-perfctr ອອນລາຍໂດຍໃຊ້ບໍລິການ onworks.net