ນີ້ແມ່ນຄໍາສັ່ງ hwloc-calc ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
hwloc-calc - ເຮັດວຽກຢູ່ໃນສາຍ ແລະວັດຖຸຂອງ cpu mask
ສະຫຼຸບສັງລວມ
hwloc-calc [ທາງເລືອກໃນການ] [ [ ... ] ]
ໃຫ້ສັງເກດວ່າ hulloc(7) ສະຫນອງຄໍາອະທິບາຍລາຍລະອຽດຂອງລະບົບ hwloc ແລະຖືກຕ້ອງ
ຮູບແບບ; ມັນຄວນຈະອ່ານກ່ອນທີ່ຈະອ່ານຫນ້າຜູ້ຊາຍນີ້.
OPTIONS
-p --ທາງກາຍ
ໃຊ້ OS/physical indexes ແທນດັດຊະນີ logical ສໍາລັບທັງ input ແລະ output.
-l --ເຫດຜົນ
ໃຊ້ດັດຊະນີຕາມເຫດຜົນແທນທີ່ຈະເປັນດັດຊະນີທາງກາຍະພາບ / OS ສໍາລັບທັງຂາເຂົ້າ ແລະຜົນຜະລິດ
(ເລີ່ມຕົ້ນ).
--pi --ການປ້ອນຂໍ້ມູນທາງກາຍ
ໃຊ້ OS/physical indexes ແທນດັດຊະນີ logical ສໍາລັບການປ້ອນຂໍ້ມູນ.
--li --logical-input
ໃຊ້ດັດຊະນີຕາມເຫດຜົນແທນທີ່ຈະເປັນດັດຊະນີທາງກາຍະພາບ / OS ສໍາລັບການປ້ອນຂໍ້ມູນ (ຄ່າເລີ່ມຕົ້ນ).
--po -- ຜົນຜະລິດທາງດ້ານຮ່າງກາຍ
ໃຊ້ OS/physical indexes ແທນດັດຊະນີ logical ສໍາລັບຜົນໄດ້ຮັບ.
--lo --logical-output
ໃຊ້ດັດຊະນີຕາມເຫດຜົນແທນທີ່ຈະເປັນດັດຊະນີທາງກາຍະພາບ / OS ສໍາລັບຜົນຜະລິດ (ຄ່າເລີ່ມຕົ້ນ, ຍົກເວັ້ນ
ສໍາລັບ cpusets ທີ່ສະເຫມີໄປທາງດ້ານຮ່າງກາຍ).
-N --ຈໍານວນ
ລາຍງານຈໍານວນວັດຖຸຂອງປະເພດ ຫຼືຄວາມເລິກທີ່ຕັດກັນ CPU
ຕັ້ງ. ນີ້ແມ່ນສະດວກສໍາລັບການຊອກຫາຈໍານວນ cores, NUMA nodes ຫຼື PUs
ມີຢູ່ໃນເຄື່ອງ.
-I --ຕັດກັນ
ຊອກຫາລາຍການວັດຖຸຂອງປະເພດ ຫຼືຄວາມເລິກທີ່ຕັດກັນກັບຊຸດ CPU
ແລະລາຍງານລາຍການທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງດັດຊະນີຂອງພວກມັນແທນໜ້າກາກ cpu
ສາຍ. ນີ້ອາດຈະຖືກນໍາໃຊ້ສໍາລັບການກໍານົດບັນຊີລາຍຊື່ຂອງວັດຖຸຂ້າງເທິງຫຼືຂ້າງລຸ່ມນີ້
ວັດສະດຸປ້ອນ. ເມື່ອລວມເຂົ້າກັບ --ທາງກາຍ, ບັນຊີລາຍຊື່ແມ່ນສະດວກທີ່ຈະຜ່ານໄປ
ເຄື່ອງມືພາຍນອກເຊັ່ນຊຸດວຽກ ຫຼື numactl --physcpubind or -- ສະມາຊິກ. ນີ້ແມ່ນ
ແຕກຕ່າງຈາກ -- ໃຫຍ່ທີ່ສຸດນັບຕັ້ງແຕ່ອັນສຸດທ້າຍຮຽກຮ້ອງໃຫ້ວັດຖຸທີ່ລາຍງານທັງຫມົດແມ່ນ
ລວມຢ່າງເຂັ້ມງວດພາຍໃນວັດຖຸປ້ອນຂໍ້ມູນ.
-H -- ລຳດັບ . ...
ຊອກຫາລາຍການວັດຖຸຂອງປະເພດ ທີ່ຕັດຊຸດ CPU ແລະລາຍງານ
ບັນຊີລາຍຊື່ທີ່ແຍກອອກຈາກຊ່ອງຂອງດັດສະນີລໍາດັບຊັ້ນຂອງເຂົາເຈົ້າກ່ຽວກັບ ,
, ແລະອື່ນໆ ຕົວຢ່າງ, ຖ້າ package.core ແມ່ນໃຫ້, ຜົນຜະລິດຈະເປັນ
ການຫຸ້ມຫໍ່:1.Core:2 ການຫຸ້ມຫໍ່:2.Core:3 ຖ້າວັດສະດຸປ້ອນປະກອບມີຫຼັກທີສາມຂອງ
ຊຸດທີສອງແລະຫຼັກສີ່ຂອງຊຸດທີສາມ.
-- ໃຫຍ່ທີ່ສຸດ ລາຍງານ (ໃນຮູບແບບທີ່ມະນຸດສາມາດອ່ານໄດ້) ບັນຊີລາຍຊື່ຂອງວັດຖຸທີ່ໃຫຍ່ທີ່ສຸດເຊິ່ງແນ່ນອນ
ລວມເອົາວັດຖຸປ້ອນເຂົ້າທັງໝົດ. ບໍ່ມີວັດຖຸຜົນຜະລິດເຫຼົ່ານີ້ຕັດກັນ,
ແລະຜົນລວມຂອງພວກມັນແມ່ນທຽບເທົ່າກັບວັດສະດຸປ້ອນ. ບໍ່ມີວັດຖຸທີ່ໃຫຍ່ທີ່ສຸດ
ລວມຢູ່ໃນວັດສະດຸປ້ອນ ອັນນີ້ແຕກຕ່າງຈາກ --intersect ບ່ອນທີ່ລາຍງານວັດຖຸ
ອາດຈະບໍ່ຖືກລວມເຂົ້າຢ່າງເຂັ້ມງວດໃນການປ້ອນຂໍ້ມູນ.
-- ກັນຍາ
ປ່ຽນຕົວແຍກພາກສະຫນາມໃນຜົນໄດ້ຮັບ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ພື້ນທີ່ຖືກໃຊ້ເພື່ອ
ວັດຖຸຜະລິດອອກແຍກຕ່າງຫາກ (ສໍາລັບການຍົກຕົວຢ່າງໃນເວລາທີ່ -- ລຳດັບ or -- ໃຫຍ່ທີ່ສຸດ ແມ່ນໃຫ້)
ໃນຂະນະທີ່ເຄື່ອງໝາຍຈຸດຖືກໃຊ້ເພື່ອແຍກດັດຊະນີ (ຕົວຢ່າງເມື່ອ --ຕັດກັນ is
ມອບໃຫ້).
--ໂສດ Singlify ຜົນຜະລິດເປັນ CPU ດຽວ.
--ຊຸດໜ້າວຽກ ສະແດງສະຕຣິງຊຸດ CPU ໃນຮູບແບບທີ່ຮັບຮູ້ໂດຍເສັ້ນຄຳສັ່ງຊຸດວຽກ
ໂປຣແກຣມແທນ hwloc-specific CPU set format string. ທາງເລືອກນີ້ບໍ່ມີ
ຜົນກະທົບຕໍ່ຮູບແບບຂອງ input CPU set strings, ທັງສອງຮູບແບບໄດ້ຮັບການຍອມຮັບສະເຫມີ.
-- ຈຳກັດ
ຈໍາກັດ topology ກັບ cpuset ທີ່ໃຫ້.
-- ລະບົບທັງໝົດ
ຢ່າພິຈາລະນາຂໍ້ຈໍາກັດດ້ານການບໍລິຫານ.
-i , --ການປ້ອນຂໍ້ມູນ
ອ່ານ topology ຈາກໄຟລ໌ XML (ແທນທີ່ຈະຄົ້ນພົບ topology ໃນ
ເຄື່ອງທ້ອງຖິ່ນ). ຖ້າ ແມ່ນ "-", ການປ້ອນຂໍ້ມູນມາດຕະຖານຖືກນໍາໃຊ້. ຕ້ອງຮອງຮັບ XML
ໄດ້ຖືກລວບລວມເຂົ້າໃນ hwloc ເພື່ອໃຫ້ທາງເລືອກນີ້ສາມາດໃຊ້ໄດ້.
-i , --ການປ້ອນຂໍ້ມູນ
ອ່ານ topology ຈາກ chroot ທີ່ລະບຸໄວ້ໂດຍ (ແທນທີ່ຈະຄົ້ນພົບ
topology ໃນເຄື່ອງທ້ອງຖິ່ນ). ຕົວເລືອກນີ້ແມ່ນໂດຍທົ່ວໄປແລ້ວພຽງແຕ່ຢູ່ໃນ
Linux. ປົກກະຕິແລ້ວ chroot ໄດ້ຖືກສ້າງຂື້ນໂດຍການລວບລວມ topology ເຄື່ອງອື່ນ
ກັບ hwloc-gather-topology.
-i , --ການປ້ອນຂໍ້ມູນ
ຈໍາລອງລໍາດັບຊັ້ນຂອງປອມ (ແທນທີ່ຈະຄົ້ນພົບ topology ຢູ່ໃນທ້ອງຖິ່ນ
ເຄື່ອງ). ຖ້າ ແມ່ນ "node:2 pu:3", topology ຈະມີສອງ
NUMA nodes ທີ່ມີ 3 ຫນ່ວຍປະມວນຜົນໃນແຕ່ລະພວກມັນ. ໄດ້ ສາຍ
ຕ້ອງສິ້ນສຸດດ້ວຍຈໍານວນ PUs.
--ຖ້າ , -- ຮູບແບບການປ້ອນຂໍ້ມູນ
ບັງຄັບການປ້ອນຂໍ້ມູນໃນຮູບແບບທີ່ໃຫ້, ໃນບັນດາ xml, fsroot ແລະ ສັງເຄາະ.
-q --ງຽບ
ເຊື່ອງຂໍ້ຄວາມຄວາມຜິດພາດທີ່ບໍ່ເປັນອັນຕະລາຍ. ມັນສ່ວນຫຼາຍແມ່ນປະກອບມີສະຖານທີ່ທີ່ຊີ້ໄປຫາທີ່ບໍ່ແມ່ນ.
ວັດຖຸທີ່ມີຢູ່ແລ້ວ.
-v -- verbose
ຜົນຜະລິດວາລະສານ.
- ການປ່ຽນແປງ ລາຍງານສະບັບແລະອອກ.
ລາຍລະອຽດ
hwloc-calc ສ້າງ ແລະຈັດການສາຍ ຫຼືວັດຖຸຂອງໜ້າກາກ CPU. ທັງ input ແລະ output
ອາດຈະເປັນວັດຖຸ (ມີດັດຊະນີທາງດ້ານຮ່າງກາຍຫຼືຢ່າງມີເຫດຜົນ), ລາຍການ CPU (ມີທາງດ້ານຮ່າງກາຍຫຼື
ດັດຊະນີຕາມເຫດຜົນ), ຫຼືສາຍໜ້າກາກ CPU (ຖືກດັດສະນີຕາມຮ່າງກາຍສະເໝີ).
ຖ້າວັດຖຸຫຼືສາຍຫນ້າກາກ CPU ຖືກມອບໃຫ້ຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ພວກມັນຖືກລວມເຂົ້າກັນແລະ a
ພິມອອກດຽວ. ຖ້າບໍ່ມີ object ຫຼື CPU mask strings ໃຫ້ຢູ່ໃນເສັ້ນຄຳສັ່ງ,
ໂປຣແກຣມຈະອ່ານການປ້ອນຂໍ້ມູນມາດຕະຖານ. ມັນຈະລວມວັດຖຸຫຼາຍອັນຫຼືຫນ້າກາກ CPU
ສະຕຣິງທີ່ໃຫ້ຢູ່ໃນເສັ້ນດຽວກັນຂອງເສັ້ນປ້ອນມາດຕະຖານທີ່ມີຊ່ອງຫວ່າງເປັນ
ຕົວແຍກ. ສາຍປ້ອນຂໍ້ມູນທີ່ແຕກຕ່າງກັນຈະຖືກປະມວນຜົນແຍກຕ່າງຫາກ.
ການໂຕ້ແຍ້ງຂອງແຖວຄຳສັ່ງ ແລະຕົວເລືອກຖືກປະມວນຜົນຕາມລຳດັບ. ສໍາລັບຕົວຢ່າງ, ມັນຫມາຍຄວາມວ່າ
ການປ່ຽນແປງປະເພດຂອງດັດຊະນີການປ້ອນຂໍ້ມູນທີ່ມີ --li ຫຼືການປ່ຽນແປງ topology ປ້ອນກັບ -i ພຽງແຕ່
ຜົນກະທົບຕໍ່ການປະມວນຜົນການໂຕ້ຖຽງຕໍ່ໄປນີ້.
ຫມາຍເຫດ: ມັນແມ່ນແນະນໍາໃຫ້ທ່ານອ່ານ hulloc(7) ຫນ້າພາບລວມກ່ອນທີ່ຈະອ່ານ
ຫນ້າຜູ້ຊາຍນີ້. ແນວຄວາມຄິດສ່ວນໃຫຍ່ທີ່ໄດ້ອະທິບາຍໄວ້ໃນ hulloc(7) ນໍາໃຊ້ໂດຍກົງກັບ hwloc-
ປະໂຫຍດ calc.
ຕົວຢ່າງ
ການດໍາເນີນງານຂອງ hwloc-calc ຖືກອະທິບາຍທີ່ດີທີ່ສຸດໂດຍຜ່ານຕົວຢ່າງຈໍານວນຫນຶ່ງ.
ເພື່ອສະແດງຫນ້າກາກ CPU (ທາງດ້ານຮ່າງກາຍ) ທີ່ສອດຄ້ອງກັບຊຸດທີສອງ:
$ hwloc-calc package:1
0x000000f0
ເພື່ອສະແດງຫນ້າກາກ CPU (ທາງດ້ານຮ່າງກາຍ) ທີ່ສອດຄ້ອງກັບ pacakge ທີສາມ, ບໍ່ລວມເຖິງຄູ່ຂອງມັນ.
ຕົວປະມວນຜົນຕາມເຫດຜົນຕົວເລກ:
$ hwloc-calc package:2 ~ PU: even
0x00000c00
ເພື່ອສົມທົບສອງຫນ້າກາກ CPU (ທາງດ້ານຮ່າງກາຍ):
$ hwloc-calc 0x0000ffff 0xff000000
0xff00ffff
ເພື່ອສະແດງລາຍຊື່ຂອງຕົວເລກທີ່ສົມເຫດສົມຜົນຂອງໂປເຊດເຊີລວມຢູ່ໃນຊຸດທີສອງ:
$ hwloc-calc --intersect ຊຸດ PU:1
4,5,6,7
ເພື່ອຜູກມັດກະທູ້ GNU OpenMP ຢ່າງມີເຫດຜົນໃນທົ່ວເຄື່ອງທັງຫມົດ, ພວກເຮົາຈໍາເປັນຕ້ອງໃຊ້ທາງດ້ານຮ່າງກາຍ
ຕົວເລກອອກແທນ:
$ export GOMP_CPU_AFFINITY=`hwloc-calc --physical-output --intersect PU machine:0`
$ echo $GOMP_CPU_AFFINITY
0,4,1,5,2,6,3,7
ເພື່ອສະແດງລາຍຊື່ຂອງ NUMA nodes, ໂດຍດັດຊະນີທາງກາຍະພາບ, ທີ່ຕັດກັນໃຫ້ (ທາງດ້ານຮ່າງກາຍ)
ຫນ້າກາກ CPU:
$ hwloc-calc --physical --intersect NUMAnode 0xf0f0f0f0
0,2
ເພື່ອສະແດງດັດຊະນີທາງກາຍະພາບຂອງໂປເຊດເຊີທີ່ໃຫ້ໂດຍດັດຊະນີເຫດຜົນຂອງມັນ:
$ hwloc-calc PU:2 --physical-output --intersect PU
3
ເພື່ອສະແດງຊຸດຂອງ CPU ຢູ່ໃກ້ກັບການໂຕ້ຕອບເຄືອຂ່າຍ eth0:
$ hwloc-calc os=eth0
0x00005555
ເພື່ອສະແດງດັດຊະນີຂອງການຫຸ້ມຫໍ່ໃກ້ກັບອຸປະກອນ PCI ທີ່ມີ ID ລົດເມແມ່ນ 0000:01:02.0:
$hwloc-calc pci=0000:01:02.0 --ແພັກເກັດຕັດກັນ
1
ເພື່ອສະແດງລາຍຊື່ຂອງຫຼັກຕໍ່ຊຸດທີ່ຕັດກັນການປ້ອນຂໍ້ມູນ:
$ hwloc-calc 0x00003c00 --hierarchical package.core
Package:2.Core:1 Package:3.Core:0
ເພື່ອສະແດງຫນ້າກາກ CPU (ທາງດ້ານຮ່າງກາຍ) ຂອງ topology ທັງຫມົດຍົກເວັ້ນຊຸດທີສາມ:
$ hwloc-calc all ~package:3
0x0000f0ff
ເພື່ອສົມທົບທັງດັດຊະນີທາງກາຍະພາບ ແລະເຫດຜົນເປັນການປ້ອນຂໍ້ມູນ:
$ hwloc-calc PU:2 --physical-input PU:3
ຂະ ໜາດ 0x0000000c
ເພື່ອສັງເຄາະຊຸດຂອງແກນເຂົ້າໄປໃນວັດຖຸທີ່ໃຫຍ່ທີ່ສຸດໃນເຄື່ອງ 2-node 2-package 2-core:
$ hwloc-calc core:0 --largest
ຫຼັກ: 0
$ hwloc-calc core:0-1 -- ໃຫຍ່ທີ່ສຸດ
ຊຸດ: 0
$ hwloc-calc core:4-7 -- ໃຫຍ່ທີ່ສຸດ
NUMANode:1
$ hwloc-calc core:2-6 -- ໃຫຍ່ທີ່ສຸດ
ການຫຸ້ມຫໍ່: 1 ຊຸດ: 2 Core: 6
$ hwloc-calc pack:2 --ໃຫຍ່ທີ່ສຸດ
ຊຸດ: 2
$ hwloc-calc package:2-3 --ໃຫຍ່ທີ່ສຸດ
NUMANode:1
ເພື່ອໃຫ້ໄດ້ຮັບຊຸດຂອງຫົວຂໍ້ທໍາອິດຂອງແກນທັງຫມົດ:
$ hwloc-calc core:all.pu:0
ນີ້ຍັງສາມາດເປັນປະໂຫຍດຫຼາຍເພື່ອເຮັດໃຫ້ GNU OpenMP ໃຊ້ແທ້ຫນຶ່ງ thread ຕໍ່ຫຼັກ,
ແລະໃນຄໍາສັ່ງຫຼັກເຫດຜົນ:
$ export OMP_NUM_THREADS=`hwloc-calc --number-of core machine:0`
$ echo $OMP_NUM_THREADS
4
$ ສົ່ງອອກ GOMP_CPU_AFFINITY=`hwloc-calc --physical-output --intersect PU core:all.pu:0`
$ echo $GOMP_CPU_AFFINITY
0,2,1,3
ກັບຄືນ ມູນຄ່າ
ເມື່ອປະຕິບັດສົບຜົນສໍາເລັດ, hwloc-calc ສະແດງສາຍຫນ້າກາກ CPU (ທາງດ້ານຮ່າງກາຍ), (ທາງດ້ານຮ່າງກາຍ.
ຫຼືມີເຫດຜົນ) ບັນຊີລາຍຊື່ວັດຖຸ, ຫຼື (ທາງດ້ານຮ່າງກາຍຫຼືເຫດຜົນ) ບັນຊີລາຍຊື່ວັດຖຸ. ມູນຄ່າກັບຄືນແມ່ນ
0.
hwloc-calc ຈະສົ່ງຄືນ nonzero ຖ້າມີຂໍ້ຜິດພາດໃດໆເກີດຂື້ນ, ເຊັ່ນ: (ແຕ່ບໍ່ຈໍາກັດ):
ຄວາມລົ້ມເຫຼວໃນການວິເຄາະບັນທັດຄໍາສັ່ງ.
ໃຊ້ hwloc-calc ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net