HWLOC-DISTRIB(1) hwloc HWLOC-DISTRIB(1) نام (NAME) hwloc-distrib - ساخت تعدادی ماسک CPU توزیع‌شده روی سامانه خلاصه دستور (SYNOPSIS) hwloc-distrib [options] گزینه‌ها (OPTIONS) --single تک‌عضوی کردن هر خروجی به یک CPU واحد. --cpuset-output-format --cof تغییر قالب رشته‌های مجموعهٔ CPU نمایش‌داده‌شده. به‌طور پیش‌فرض، از قالب مختص hwloc استفاده می‌شود. اگر list داده شود، خروجی به صورت فهرستی از اعداد یا بازه‌های جداشده با ویرگول خواهد بود، مانند 2,4-5,8 . اگر taskset داده شود، خروجی با برنامهٔ taskset سازگار خواهد بود (جایگزین گزینهٔ پیشین --taskset می‌شود). -v --verbose نمایش پیام‌های با جزئیات بیشتر. -i , --input خواندن توپولوژی از به جای شناسایی توپولوژی ماشین محلی. اگر یک فایل باشد، ممکن است یک فایل XML صادرشده توسط یکی از برنامه‌های قبلی hwloc باشد. اگر برابر با «-» باشد، ورودی استاندارد می‌تواند به عنوان یک فایل XML استفاده شود. در Linux، ‏ می‌تواند دایرکتوری‌ای شامل فایل‌های توپولوژی باشد که با hwloc-gather-topology از توپولوژی یک ماشین دیگر جمع‌آوری شده‌اند. در x86، ‏ می‌تواند دایرکتوری‌ای حاوی دامپ cpuid باشد که با hwloc-gather-cpuid جمع‌آوری شده است. هنگامی که برنامهٔ archivemount در دسترس باشد، همچنین می‌تواند یک فایل tarball شامل چنین فایل‌های توپولوژی Linux یا x86 باشد. -i , --input شبیه‌سازی یک سلسله‌مراتب ساختگی (به جای شناسایی توپولوژی روی ماشین محلی). اگر برابر با "node:2 pu:3" باشد، توپولوژی شامل دو گره NUMA خواهد بود که در هر کدام ۳ واحد پردازشی (PU) وجود دارد. رشتهٔ باید به تعدادی PU ختم شود. --if , --input-format اجبار ورودی به قالب داده‌شده، از میان xml، ‏fsroot، cpuid و synthetic. --ignore نادیده گرفتن تمام اشیاء از نوع در توپولوژی. --from آغاز توزیع از اشیاء نوع داده‌شده به جای بالای سلسله‌مراتب توپولوژی، یعنی نادیده گرفتن ساختار ناشی از اشیاء بالادست. ‏ نمی‌تواند از انواع NUMANode، ‏I/O یا Misc باشد. --to توزیع تا سطح اشیاء نوع داده‌شده به جای رفتن تا پایین سلسله‌مراتب توپولوژی، یعنی نادیده گرفتن ساختار ناشی از اشیاء پایین‌دست. این گزینه در مواردی که مقداری آزادی‌عمل برای انتساب (binding) مد نظر باشد مفید است، مانند متصل کردن چندین فرایند به هر package بدون مشخص کردن یک هستهٔ اختصاصی برای هر یک از آن‌ها. ‏ نمی‌تواند از انواع NUMANode، ‏I/O یا Misc باشد. --at توزیع میان اشیاء از نوع مشخص‌شده. این گزینه معادل تعیین هم‌زمان هر دو گزینهٔ --from و --to است. --reverse توزیع با شروع از آخرین اشیاء، و تک‌عضوی کردن مجموعه‌های CPU با نگه‌داشتن آخرین بیت (به جای بیت اول). --restrict محدود کردن توپولوژی به cpuset داده‌شده. این کار برخی از PUها و والدینی که دیگر فرزندی ندارند را حذف می‌کند. توجه داشته باشید که محدود کردن PUها در یک توپولوژی ممکن است نمایه‌های منطقی بسیاری از اشیاء، از جمله گره‌های NUMA را تغییر دهد. --restrict nodeset= محدود کردن توپولوژی به nodeset داده‌شده (مگر اینکه --restrict-flags چیز متفاوتی را مشخص کند). این کار برخی از گره‌های NUMA و والدینی که دیگر فرزندی ندارند را حذف می‌کند. توجه داشته باشید که محدود کردن گره‌های NUMA در یک توپولوژی ممکن است نمایه‌های منطقی بسیاری از اشیاء، از جمله PUها را تغییر دهد. --restrict-flags اعمال پرچم‌ها هنگام محدود کردن توپولوژی. پرچم‌ها می‌توانند به صورت مقادیر عددی یا فهرستی از نام‌های پرچم جداشده با ویرگول ارائه شوند که به hwloc_topology_restrict() ارسال می‌شوند. این نام‌ها تا زمانی که تنها با یک پرچم تطابق داشته باشند می‌توانند زیررشته‌هایی از نام‌های واقعی پرچم باشند؛ برای نمونه bynodeset,memless. مقدار پیش‌فرض 0 (یا none) است. --disallowed شامل کردن اشیایی که به دلیل محدودیت‌های مدیریتی مجاز شمرده نشده‌اند. --version گزارش نسخه و خروج. -h --help نمایش پیام راهنما و خروج. توضیحات (DESCRIPTION) دستور hwloc-distrib یک سری ماسک CPU متناظر با توزیع تعداد مشخصی از عناصر روی توپولوژی ماشین تولید می‌کند. این توزیع به صورت بازگشتی از بالای سلسله‌مراتب (یا از سطحی که با گزینهٔ --from مشخص شده) تا پایین سلسله‌مراتب (یا تا سطحی که با گزینهٔ --to مشخص شده، یا تا زمانی که تنها یک عنصر باقی بماند) انجام می‌شود و تعداد عناصر را در هر سطح سلسله‌مراتبیِ دیده‌شده که توسط گزینهٔ --ignore نادیده گرفته نشده است، تقسیم می‌کند. این ابزار می‌تواند برای نمونه برای توزیع سلسله‌مراتبی مجموعه‌ای از فرایندها بر اساس توپولوژی ماشین به کار رود. این ماسک‌ها می‌توانند همراه با hwloc-bind(1) استفاده شوند. روی CPUهای هایبرید (یا بسترهای نامتقارن)، توزیع ممکن است کاملاً بهینه نباشد چرا که تعداد هسته‌ها یا PUها درون بسته‌ها (packages) یا زیر کَش‌ها ممکن است متغیر باشد (تقسیم بازگشتی بالا به پایین، این تعداد را تا پیش از رسیدن به سطح مربوطه‌شان نادیده می‌گیرد). بنابراین توصیه می‌شود توزیع تنها درون یک دامنهٔ همگن منفرد انجام گیرد. برای نمونه در یک CPU دارای هسته‌های کم‌مصرف E-core و هسته‌های پرقدرت P-core، بهتر است N کار را به‌طور جداگانه روی E-coreها و M کار را روی P-coreها توزیع کرد، به جای اینکه تلاش شود مستقیماً M+N کار روی کل پردازنده‌ها توزیع گردد. نکته: اکیداً توصیه می‌شود پیش از مطالعهٔ این صفحهٔ راهنما، صفحهٔ مرور کلی hwloc(7) را مطالعه کنید. بیشتر مفاهیم شرح‌داده‌شده در hwloc(7) مستقیماً در ابزار hwloc-bind نیز کاربرد دارند. مثال‌ها (EXAMPLES) عملکرد hwloc-distrib به بهترین شکل از طریق چندین مثال شرح داده می‌شود. اگر نیاز باشد ۴ فرایند روی یک ماشین توزیع شوند، ماسک‌های CPU آن‌ها را می‌توان با دستور زیر به دست آورد: $ hwloc-distrib 4 0x0000000f 0x00000f00 0x000000f0 0x0000f000 برای توزیع صرفاً میان دومین package، توپولوژی باید محدود شود: $ hwloc-distrib --restrict $(hwloc-calc package:1) 4 0x00000010 0x00000020 0x00000040 0x00000080 برای به دست آوردن یک پردازندهٔ واحد از هر یک از ماسک‌های CPU (جهت جلوگیری از جابه‌جایی در صورت اتصال): $ hwloc-distrib 4 --single 0x00000001 0x00000100 0x00000010 0x00001000 هر خط خروجی می‌تواند به‌طور مستقل با hwloc-calc تبدیل شود: $ hwloc-distrib 4 --single | hwloc-calc --oo -q -I pu PU:0 PU:8 PU:4 PU:12 برای تبدیل خروجی به فهرستی از پردازنده‌ها که بتواند به dplace -c درون یک خط دستور mpirun ارسال شود: $ hwloc-distrib 4 --single | xargs hwloc-calc -I pu 0,8,4,16 مقدار بازگشتی (RETURN VALUE) پس از اجرای موفق، hwloc-distrib یک یا چند رشتهٔ ماسک CPU را نمایش می‌دهد. مقدار بازگشتی 0 است. در صورت بروز هرگونه خطا، مانند (اما نه محدود به) شکست در تجزیهٔ خط فرمان، hwloc-distrib مقداری غیرصفر برمی‌گرداند. همچنین ببینید (SEE ALSO) hwloc(7) 2.14.0 June 8, 2026 HWLOC-DISTRIB(1)