likwid-perfctr - آنلاین در ابر

این دستور likwid-perfctr است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


likwid-perfctr - شمارنده های عملکرد سخت افزار را روی پردازنده x86 پیکربندی کرده و بخوانید

خلاصه


likwid-perfctr [-vhHVmaeiMoO] [-c/-C ] [-g or
] [-t ] [-S ] [-s ] [-o
]

شرح


likwid-perfctr یک برنامه خط فرمان سبک وزن برای پیکربندی و خواندن است
داده های نظارت بر عملکرد سخت افزار در پردازنده های x86 پشتیبانی شده. می تواند به عنوان اندازه گیری شود
بسته بندی بدون تغییر برنامه اندازه گیری شده یا با توابع API نشانگر در داخل
کدی که شمارنده ها را روشن و خاموش می کند. گروه های از پیش تنظیم شده با مفید وجود دارد
مجموعه رویدادها و معیارهای مشتق شده علاوه بر این، رویدادهای دلخواه را می توان با سفارشی اندازه گیری کرد
مجموعه های رویداد نشانگر API می تواند چندین ناحیه با نام را اندازه گیری کند. نتایج در انباشته شده است
تماس های متعدد پردازنده های x86 زیر پشتیبانی می شوند:

· اینتل هسته 2: همه انواع شمارنده ها: PMC[0-1]، FIXC[0-2]

· اینتل نهالم: شمارنده ها: PMC[0-3]، FIXC[0-2]، UPMC[0-7]

· اینتل نهالم سابق: شمارنده ها: 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]

· اینتل وستمر:
شمارنده ها: PMC[0-3]، FIXC[0-2]، UPMC[0-7]

· اینتل وست مور سابق: شمارنده ها: 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]

· اینتل شنی پل: پشتیبانی کامل از RAPL شمارنده ها: PMC[0-3]، FIXC[0-2]، PWR[0-3]

· اینتل شنی پل PS: پشتیبانی جزئی برای uncore، پشتیبانی کامل RAPL. شمارنده ها:
PMC[0-3]، FIXC[0-2]، PWR [0-3]. MBOX[0-3]C[0-3]

· اینتل پیچک پل: پشتیبانی کامل از RAPL شمارنده ها: PMC[0-3]، FIXC[0-2]، PWR[0-3]

· اینتل پیچک پل 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] تعمیر

· اینتل هاسول: پشتیبانی کامل از RAPL شمارنده ها: PMC[0-3]، FIXC[0-2]، PWR[0-3]

· اینتل حسول PS: بدون پشتیبانی uncore، پشتیبانی کامل از RAPL. شمارنده ها: PMC[0-3]،
FIXC[0-2]، PWR[0-3]

· اینتل اتم سیلورمونت: پشتیبانی کامل از RAPL شمارنده ها: PMC[0-1]، FIXC[0-2]، PWR[0-1]

· اینتل پنتیوم M: انواع Banias و Dothan. شمارنده ها: PMC[0-1]

· اینتل Q6: روی P3 تست شده

· AMD K8: همه انواع شمارنده ها: PMC[0-3]

· AMD K10: پردازنده های مبتنی بر بارسلون، شانگهای، استانبول، MagnyCours. شمارنده ها:
PMC[0-3]

OPTIONS


-v اطلاعات نسخه را در خروجی استاندارد چاپ می کند، سپس خارج می شود.

-h یک پیام راهنما را در خروجی استاندارد چاپ می کند، سپس خارج می شود.

-H پیام کمک گروه را چاپ می کند (همراه با سوئیچ -g استفاده کنید).

-V خروجی پرمخاطب در حین اجرا برای اشکال زدایی.

-m در حالت API نشانگر اجرا شود

-a چاپ گروه های عملکرد موجود برای پردازنده فعلی.

-e شمارنده های موجود و رویدادهای عملکرد پردازنده فعلی را چاپ کنید.

-o
تمام خروجی ها را به جای stdout در یک فایل ذخیره کنید. برای نام فایل زیر
متغیرهایی پشتیبانی می شوند: %j برای PBS_JOBID، %r برای MPI RANK (فقط Intel MPI در
لحظه)، %h نام میزبان و %p برای فرآیند pid. جانشین ها باید باشند
به عنوان مثال، -o test_%h_%p جدا شده است. شما باید یک پسوند برای the مشخص کنید
نام فایل. برای txt خروجی همانطور که در فایل است چاپ می شود. پسوندهای دیگر باعث الف می شوند
فیلتر روی خروجی فیلترهای موجود csv (مقادیر جدا شده با کاما) و xml هستند
در حال حاضر.

-O جداول را برای نتایج چاپ نکنید، به جای آن از CSV به راحتی قابل تجزیه استفاده کنید.

-i اطلاعات cpuid را در مورد پردازنده و نظارت بر عملکرد اینتل چاپ کنید
ویژگی ها، سپس خارج شوید.

-c
لیست عددی پردازنده ها را مشخص کنید. لیست ممکن است حاوی چندین مورد باشد،
با کاما و محدوده از هم جدا می شوند. به عنوان مثال 0,3,9،11،XNUMX-XNUMX.

-C
لیست عددی پردازنده ها را مشخص کنید. لیست ممکن است حاوی چندین مورد باشد،
با کاما و محدوده از هم جدا می شوند. به عنوان مثال 0,3,9،11،XNUMX-XNUMX. این نوع نیز پین خواهد شد
رشته ها به هسته ها همچنین می توان از شماره گذاری منطقی استفاده کرد.

-g <performance گروه> or <performance واقعه تنظیم رشته >
مشخص کنید کدام گروه عملکرد را اندازه گیری کنید. این می تواند یکی از تگ های خروجی باشد
پرچم -a همچنین یک مجموعه رویداد سفارشی را می توان با یک لیست جدا شده با کاما مشخص کرد
مناسبت ها. هر رویداد دارای فرمت eventId:register است که رجیستر یکی است
ثبت‌های شمارنده عملکرد پشتیبانی شده از معماری.

-t <frequency of اندازه گیری>
حالت جدول زمانی برای اندازه‌گیری‌های زمان حل‌شده، پسوندهای ممکن «s» و «ms» مانند
100 میلی‌ثانیه فرمت خروجی:

<Result thread0> <Result thread1> ...

-S
حالت گوشی پزشکی با مدت زمان بر حسب ثانیه. می توان از آن برای اندازه گیری یک برنامه استفاده کرد
از بیرون.

مثال


زیرا likwid-perfctr اقدامات لازم بر روی پردازنده ها و نه برنامه های منفرد ضروری است
برای اطمینان از اینکه فرآیندها و موضوعات به منابع اختصاصی پین شده اند. شما هم می توانید پین کنید
برنامه را خودتان یا از عملکرد پین داخلی استفاده کنید.

1. به عنوان لفاف با گروه عملکرد:

likwid-perfctr -C 0-2 -g TLB ./cacheBench -n 2 -l 1048576 -i 100 -t جریان

پردازش والد به پردازنده 0، Thread 0 به پردازنده 1 و Thread 1 به پردازنده پین ​​می شود.
پردازنده 2.

2. به عنوان بسته بندی با مجموعه رویداد سفارشی در AMD:

likwid-perfctr -C 0-4 -g INSTRUCTIONS_RETIRED_SSE:PMC0,CPU_CLOCKS_UNHALTED:PMC3 ./myApp

مشخص شده است که این رویداد INSTRUCTIONS_RETIRED_SSE بر روی شمارنده اندازه گیری می شود PMC0 و
رویداد CPU_CLOCKS_UNHALTED روی پیشخوان PMC3. امکان محاسبه زمان اجرا وجود دارد
همه موضوعات بر اساس CPU_CLOCKS_UNHALTED رویداد. اگر این را می خواهید، باید آن را وارد کنید
این رویداد در رشته رویداد سفارشی شما همانطور که در بالا نشان داده شده است.

3. به عنوان بسته بندی با مجموعه رویداد سفارشی در اینتل:

likwid-perfctr -C 0 -g INSTR_RETIRED_ANY:FIXC0،CPU_CLK_UNHALTED_CORE:FIXC1 ./myApp

در پردازنده‌های اینتل، رویدادهای ثابت روی شمارنده‌های اختصاصی اندازه‌گیری می‌شوند. اینها هستند
INSTR_RETIRED_ANY , CPU_CLK_UNHALTED_CORE. و CPU_CLK_UNHALTED_REF اگر پیکربندی کنید
این شمارنده های ثابت، likwid-perfctr زمان اجرا و معیارهای CPI را برای شما محاسبه خواهد کرد
را اجرا کنید.

4. استفاده از نشانگر API برای اندازه‌گیری تنها بخش‌هایی از کد (این می‌تواند با هر دو مورد استفاده شود
گروه ها یا مجموعه رویدادهای سفارشی):

likwid-perfctr -m -C 0-4 -g INSTRUCTIONS_RETIRED_SSE:PMC0,CPU_CLOCKS_UNHALTED:PMC3
./cacheBench

شما باید کد خود را با liblikwid.a/.so پیوند دهید و از فراخوانی های API نشانگر استفاده کنید. در
قطعه کد زیر تماس های لازم را نشان می دهد:

#عبارتند از

/* فقط یک رشته آن را فراخوانی می کند */
اگر (threadId == 0)
{
likwid_markerInit();
}
/* اگر می خواهید یک برنامه رشته ای را اندازه گیری کنید
* باید likwid_markerThreadInit() را فراخوانی کنید
* آماده سازی، به عنوان مثال با OpenMP */
#پراگما omp موازی
{
likwid_markerThreadInit();
}
مانع
likwid_markerStartRegion("معیار");
/* کد شما برای اندازه گیری اینجاست.*/

likwid_markerStopRegion("Benchmark");
مانع
/* دوباره فقط یک رشته می تواند نشانگرها را ببندد */
اگر (threadId == 0)
{
likwid_markerClose();
}

5. استفاده از likwid در حالت تایم لاین:

likwid-perfctr -c 0-3 -g FLOPS_DP -t 300ms ./myApp > out.txt

این شمارنده ها را هر 300 میلی ثانیه در هسته های فیزیکی 0-3 خوانده و نتایج را در آن می نویسد
out.txt. برای حالت تایم لاین یک اپلیکیشن frontend likwid-scope وجود دارد که فعال می کند
طرح زنده رویدادهای انتخاب شده برای نمونه کدهای بیشتر، نگاهی به WIKI likwid بیندازید
صفحات فرآیندها هستند نه به CPU های 0-3 پین شده است.

6. استفاده از likwid در حالت گوشی پزشکی:

likwid-perfctr -c 0-3 -g FLOPS_DP -S 2s

با این کار شمارنده ها شروع می شود و بعد از 2 ثانیه روی هسته های فیزیکی 0-3 آنها را خوانده و می نویسد
نتایج به stdout. فرآیندها هستند نه به CPU های 0-3 پین شده است.

با استفاده از خدمات onworks.net از likwid-perfctr به صورت آنلاین استفاده کنید



جدیدترین برنامه های آنلاین لینوکس و ویندوز