انگلیسیفرانسویاسپانیایی

فاویکون OnWorks

orterun - آنلاین در ابر

orterun را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

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

برنامه:

نام


orterun، mpirun، mpiexec - کارهای سریال و موازی را در Open MPI اجرا کنید. اشرون، شمرون
- کارهای سریال و موازی را در Open SHMEM اجرا کنید.

توجه داشته باشید: mpirun, mpiexecو orterun همگی مترادف یکدیگر هستند و همچنین اشرون,
شممرون در صورتی که Open SHMEM نصب شده باشد. استفاده از هر یک از نام ها همان را ایجاد می کند
رفتار.

خلاصه


مدل داده های چندگانه یک فرآیند (SPMD):

mpirun [ گزینه ها ] [ ]

مدل داده های چندگانه دستورالعمل چندگانه (MIMD):

mpirun [گزینه_های_جهانی]
[گزینه_های محلی1] [ ] :
[گزینه_های محلی2] [ ] :
...:
[ local_optionsN ] [ ]

توجه داشته باشید که در هر دو مدل، فراخوانی mpirun از طریق یک مسیر مطلق نام معادل است
مشخص کردن -- پیشوند گزینه با a مقدار معادل دایرکتوری Where mpirun
ساکن است، منهای آخرین زیر شاخه آن. مثلا:

% /usr/local/bin/mpirun ...

برابر است با

% mpirun --پیشوند / usr / محلی

سریع خلاصه


اگر به سادگی به دنبال نحوه اجرای یک برنامه MPI هستید، احتمالاً می خواهید از a استفاده کنید
خط فرمان از فرم زیر:

% mpirun [ -np X] [ --hostfile ]

این نسخه X را اجرا خواهد کرد در محیط زمان اجرا فعلی شما (اگر در حال اجرا در زیر
یک مدیر منبع پشتیبانی شده، Open MPI's mpirun معمولاً به طور خودکار از
شروع کننده فرآیند مدیر منابع مربوطه، برخلاف، برای مثال، rsh or SSH,
که نیاز به استفاده از یک فایل میزبان دارند، یا به طور پیش‌فرض تمام کپی‌های X را روی آن اجرا می‌کنند
localhost)، زمان‌بندی (به‌طور پیش‌فرض) به صورت دورگرد توسط اسلات CPU. بقیه را ببینید
این صفحه برای جزئیات بیشتر

لطفاً توجه داشته باشید که mpirun به طور خودکار فرآیندها را از شروع سری v1.8 متصل می کند.
در غیاب هر دستورالعمل دیگری از دو الگوی الزام آور استفاده می شود:

اتصال به هسته: زمانی که تعداد فرآیندها <= 2 باشد

اتصال به سوکت: زمانی که تعداد فرآیندها > 2 باشد

اگر برنامه شما از رشته ها استفاده می کند، احتمالاً می خواهید مطمئن شوید که یا نیستید
اصلاً محدود می شود (با تعیین --bind-to none)، یا با استفاده از یک به چندین هسته محدود می شود
سطح اتصال مناسب یا تعداد خاصی از عناصر پردازش در هر برنامه
روند.

OPTIONS


mpirun نام دایرکتوری را که در آن در گره محلی فراخوانی شده است برای هر کدام ارسال می کند
از گره های راه دور، و سعی کنید به آن دایرکتوری تغییر دهید. به "کار فعلی" مراجعه کنید
دایرکتوری" بخش زیر برای جزئیات بیشتر.

برنامه قابل اجرا این به عنوان اولین استدلال غیر رسمی شناخته شده است
به mpirun.

این آرگومان های زمان اجرا را به هر فرآیند جدید منتقل کنید. اینها همیشه باید باشند
آخرین استدلال به mpirun. اگر از فایل زمینه برنامه استفاده می شود، خواهد بود
نادیده گرفته شد

-h, --کمک
راهنمای این دستور را نمایش دهید

-q, --ساکت
در حین اجرای برنامه، پیام های آموزنده را از orterun سرکوب کنید.

-v, -- پرحرف
پرحرف باشید

-V, - نسخه
چاپ شماره نسخه اگر استدلال دیگری ارائه نشود، این نیز باعث می شود
orterun برای خروج.

-نمایش نقشه, --نمایش نقشه
جدولی را نمایش دهید که مکان نقشه برداری شده هر فرآیند را قبل از راه اندازی نشان می دهد.

-نمایش-توسعه-نقشه, --نمایش-توسعه-نقشه
جدول دقیق تری را نشان دهید که مکان نگاشت هر فرآیند را قبل نشان می دهد
برای راه اندازی (معمولاً مورد علاقه توسعه دهندگان).

-نمایش تخصیص, --نمایش-تخصیص
تخصیص منابع شناسایی شده را نمایش دهید.

از یکی از گزینه های زیر استفاده کنید تا مشخص کنید روی کدام میزبان ها (گره ها) خوشه اجرا شود.
توجه داشته باشید که از شروع نسخه 1.8، mpirun یک شبح را روی هر میزبان راه اندازی می کند
در تخصیص (که توسط گزینه های زیر اصلاح شده است) در همان ابتدای
اجرا، صرف نظر از اینکه آیا فرآیندهای برنامه در نهایت به نقشه‌برداری می‌شوند یا خیر
آنجا اجرا کن این کار برای جمع آوری اطلاعات توپولوژی سخت افزار از
گره های راه دور، بنابراین به ما امکان می دهد فرآیندها را بر اساس توپولوژی شناخته شده نقشه برداری کنیم. با این حال، یک است
تغییر از رفتار در نسخه های قبلی که در آن شیاطین تنها پس از نقشه برداری راه اندازی می شدند
کامل بود، و بنابراین فقط در گره هایی که در آن فرآیندهای برنامه عملاً انجام می شد، رخ داد
اجرا شود

-H, -حالا, -روح
لیست میزبان هایی که فرآیندها را در آنها فراخوانی می کنند.

-فایل میزبان, --hostfile
یک فایل میزبان برای استفاده ارائه دهید.

-machinefile, --machinefile
مترادف برای -فایل میزبان.

-cpu-set, --cpu-set
فرآیندهای راه اندازی شده را به پردازنده منطقی مشخص شده در هر گره محدود کنید. توجه داشته باشید که
گزینه های الزام آور همچنان در پاکت مشخص شده اعمال می شوند - به عنوان مثال، شما می توانید
انتخاب کنید که هر فرآیند را فقط به یک cpu در مجموعه cpu مشخص شده متصل کنید.

گزینه های زیر تعداد فرآیندهایی را که باید راه اندازی شوند را مشخص می کند. توجه داشته باشید که هیچ یک از
گزینه ها مستلزم یک سیاست الزام آور خاص هستند - به عنوان مثال، درخواست N فرآیند برای هر سوکت
به این معنی نیست که فرآیندها به سوکت متصل می شوند.

-c, -n, --n, -np <#>
این تعداد کپی از برنامه را روی گره های داده شده اجرا کنید. این گزینه نشان دهنده آن است
فایل مشخص شده یک برنامه اجرایی است و نه یک زمینه برنامه. اگر نه
مقدار برای تعداد کپی هایی که باید اجرا شوند ارائه می شود (یعنی نه "-np" و نه
مترادف آن در خط فرمان ارائه می شود)، Open MPI به طور خودکار اجرا می شود
یک کپی از برنامه در هر شکاف فرآیند (برای توضیح یک "فرآیند به زیر مراجعه کنید
اسلات"). اما این ویژگی فقط در مدل SPMD قابل استفاده است و باز خواهد گشت
یک خطا (بدون شروع اجرای برنامه) در غیر این صورت.

- بر اساس نقشه ppr:N:
راه اندازی N برابر تعداد اشیاء از نوع مشخص شده در هر گره.

-npersocket, --npersocket <#persocket>
در هر گره، این تعداد پردازش چند برابر تعداد سوکت‌های پردازنده را راه‌اندازی کنید
گره در -npersocket گزینه نیز روشن می شود -پیوند به سوکت گزینه.
(منسوخ شده به نفع --map-by ppr:n:socket)

-npernode, --npernode <#pernode>
در هر گره، این تعداد فرآیند را راه اندازی کنید. (منسوخ شده به نفع --map-by
ppr:n:node)

-پرنود, -- پرنود
در هر گره، یک فرآیند را راه اندازی کنید - معادل -npernode 1. (منسوخ شده در
به نفع --map-by ppr:1:node)

برای ترسیم فرآیندها:

-- نقشه بر اساس
نقشه به شی مشخص شده، به طور پیش فرض به پریز. گزینه های پشتیبانی شده شامل اسلات،
hwthread، هسته، L1cache، L2cache، L3cache، سوکت، numa، برد، گره، ترتیبی،
فاصله و ppr. هر شی می تواند با افزودن یک : و هر یک، اصلاح کننده ها را شامل شود
ترکیبی از PE=n (پیوند کردن n عنصر پردازش به هر proc)، SPAN (تراز بار
فرآیندهای سراسر تخصیص)، OVERSUBSCRIBE (اجازه دادن به فرآیندهای بیشتر در یک گره
از عناصر پردازش) و NOOVERSUBSCRIBE. این شامل PPR می شود که در آن
الگوی با کولون دیگری خاتمه می یابد تا از اصلاح کننده ها جدا شود.

-bycore, --Bycore
پردازش های نقشه بر اساس هسته (منسوخ شده به نفع --map-by هسته)

-سوکت, -- توسط سوکت
پردازش های نقشه بر اساس سوکت (منسوخ شده به نفع --map-by سوکت)

-نولوکال, -- غیر محلی
هیچ کپی از برنامه راه اندازی شده را روی همان گره ای که orterun است اجرا نکنید
در حال اجرا این گزینه فهرست لوکال هاست را با آن لغو می کند -روح یا هر چیز دیگری
مکانیسم تعیین میزبان

بدون اشتراک, -- nooversubscribe
هیچ گره ای را بیش از حد اشتراک نکنید. خطا (بدون شروع هیچ فرآیندی) اگر
تعداد فرآیندهای درخواستی باعث اشتراک بیش از حد می شود. این گزینه به طور ضمنی
"max_slots" را برابر با مقدار "slots" برای هر گره قرار می دهد.

-bynode, --bynode
فرآیندهای راه‌اندازی یک در هر گره، دوچرخه‌سواری به گره به صورت دورگرد. این
فرآیندها را به طور یکنواخت بین گره ها پخش می کند و رتبه های MPI_COMM_WORLD را در یک دور اختصاص می دهد.
رابین، روش "توسط گره".

برای سفارش رتبه‌بندی فرآیندها در MPI_COMM_WORLD:

-- رتبه بر اساس
با توجه به شی مشخص شده، به صورت پیش‌فرض رتبه‌بندی می‌شود شکاف.
گزینه های پشتیبانی شده شامل اسلات، hwthread، هسته، L1cache، L2cache، L3cache، سوکت،
numa، برد و گره.

برای فرآیند اتصال:

--اتصال به
اتصال فرآیندها به شی مشخص شده، به طور پیش فرض به هسته. گزینه های پشتیبانی شده شامل
اسلات، hwthread، هسته، l1cache، l2cache، l3cache، سوکت، numa، برد، و هیچ.

-cpus-per-proc, --cpus-per-proc <#perproc>
هر فرآیند را به تعداد مشخص شده cpus متصل کنید. (منسوخ شده به نفع --map-
توسط :PE=n)

-cpus-در-رتبه, --cpus-در-رتبه <#perrank>
نام مستعار برای -cpus-per-proc. (منسوخ شده به نفع --map-by :PE=n)

-پیوند به هسته, -- اتصال به هسته
اتصال فرآیندها به هسته ها (منسوخ شده به نفع --bind-to core)

-پیوند به سوکت, -- اتصال به سوکت
اتصال فرآیندها به سوکت های پردازنده (منسوخ شده به نفع --bind-to socket)

-پیوند به هیچ, --پیوند به هیچ
فرآیندها را متصل نکنید (منسوخ شده به نفع --bind-to none)

-قطعات گزارش, --گزارش الزام آور
هر گونه الزام آور برای فرآیندهای راه اندازی شده را گزارش دهید.

اسلات-لیست, - لیست اسلات
فهرست شناسه‌های پردازنده که برای اتصال فرآیندهای MPI استفاده می‌شوند. اتصالات مشخص شده
برای تمام فرآیندهای MPI اعمال خواهد شد. برای نحو به توضیح زیر مراجعه کنید.

برای فایل های رتبه بندی:

-RF, -- فایل رتبه
یک فایل رتبه بندی ارائه کنید.

برای مدیریت I/O استاندارد:

-نام فایل خروجی, --نام فایل خروجی
stdout، stderr و stddiag همه فرآیندها را به یک فرآیند منحصر به فرد هدایت کنید
نسخه نام فایل مشخص شده هر دایرکتوری در نام فایل خواهد بود
به طور خودکار ایجاد شود. هر فایل خروجی از filename.id تشکیل می شود که در آن
شناسه رتبه فرآیندها در MPI_COMM_WORLD خواهد بود که در سمت چپ با صفر پر شده است.
ترتیب صحیح در لیست ها

-stdin, --stdin
رتبه MPI_COMM_WORLD فرآیندی که قرار است stdin را دریافت کند. پیش فرض به است
stdin را به MPI_COMM_WORLD رتبه 0 بفرستید، اما می توان از این گزینه برای فوروارد استفاده کرد
stdin به هر فرآیند. همچنین قابل قبول است که مشخص شود هیچ، نشان می دهد که خیر
فرآیندها برای دریافت stdin هستند.

-برچسب-خروجی, --برچسب-خروجی
هر خط خروجی را به stdout، stderr و stddiag با برچسب گذاری کنید [شناسه کار،
MCW_rank] نشان دهنده فرآیند jobid و رتبه MPI_COMM_WORLD از
فرآیندی که خروجی را تولید کرده و کانالی که آن را تولید کرده است.

-زمان-خروجی, --timestamp-output
هر خط خروجی را به stdout، stderr و stddiag مهر زمانی بزنید.

-xml, --xml
تمام خروجی ها را به stdout، stderr و stddiag در قالب xml ارائه دهید.

-xterm, --xterm
نمایش خروجی از فرآیندهای شناسایی شده توسط MPI_COMM_WORLD رتبه آنها در
ویندوز xterm جدا رتبه‌ها به‌عنوان فهرستی از کاما از هم جدا شده‌اند
محدوده، با -1 نشان دهنده همه است. برای هر کدام یک پنجره جداگانه ایجاد می شود
فرآیند مشخص شده توجه داشته باشید: xterm معمولاً پس از خاتمه، پنجره را خاتمه می دهد
فرآیند در حال اجرا در آن با این حال، با اضافه کردن یک "!" تا انتهای لیست
از رتبه های مشخص شده، گزینه های مناسب برای اطمینان از حفظ xterm ارائه خواهد شد
پنجره باز است بعد از فرآیند خاتمه می یابد، بنابراین به شما امکان می دهد روند را مشاهده کنید.
خروجی هر پنجره xterm متعاقباً باید به صورت دستی بسته شود. توجه داشته باشید: In
برخی از محیط‌ها، xterm ممکن است نیاز داشته باشد که فایل اجرایی در مسیر کاربر قرار گیرد، یا
به صورت مطلق یا نسبی مشخص شود. بنابراین، ممکن است لازم باشد که a را مشخص کنید
قابل اجرایی محلی به عنوان "./foo" به جای "foo". اگر xterm نتواند آن را پیدا کند
قابل اجرا، mpirun هنگ می کند، اما همچنان به ctrl-c به درستی پاسخ می دهد. اگر این
اتفاق می افتد، لطفا بررسی کنید که فایل اجرایی به درستی مشخص شده است و امتحان کنید
دوباره.

برای مدیریت فایل ها و محیط اجرا:

-مسیر, --مسیر
که هنگام تلاش برای مکان یابی فایل های اجرایی درخواستی استفاده می شود. این
قبل از استفاده از تنظیمات محلی PATH استفاده می شود.

-- پیشوند
دایرکتوری پیشوندی که برای تنظیم استفاده می شود PATH و LD_LIBRARY_PATH در
گره راه دور قبل از فراخوانی Open MPI یا فرآیند هدف. "Remote" را ببینید
بخش اجرا»، در زیر.

پیش بارگذاری-دودویی
قبل از راه اندازی ریموت، فایل اجرایی (های) مشخص شده را در ماشین های راه دور کپی کنید
فرآیندها فایل های اجرایی در دایرکتوری جلسه Open MPI کپی می شوند و
پس از اتمام کار حذف خواهد شد.

--پیش بارگذاری-فایل ها
لیست فایل های جدا شده با کاما را از قبل در فهرست کاری فعلی بارگذاری کنید
ماشین های راه دور که در آن فرآیندها قبل از شروع آن فرآیندها راه اندازی می شوند.

--preload-files-dest-dir
دایرکتوری مقصدی که برای فایل‌های پیش بارگذاری استفاده می‌شود، اگر غیر از فعلی باشد
دایرکتوری کار به طور پیش فرض، مسیرهای مطلق و نسبی ارائه شده توسط
---پرلود-فایل استفاده می شود.

--tmpdir
ریشه درخت دایرکتوری جلسه را فقط برای mpirun تنظیم کنید.

-wd
مترادف برای -wdir.

-wdir
به دایرکتوری تغییر دهید قبل از اجرای برنامه کاربر نگاه کنید به "جریان
بخش Working Directory برای یادداشت‌های مربوط به مسیرهای نسبی. توجه داشته باشید: اگر -wdir انتخاب
هم در خط فرمان و هم در زمینه برنامه ظاهر می شود، متن خواهد بود
بر خط فرمان ارجحیت دارد. بنابراین، اگر مسیر wdir مورد نظر باشد
در گره های باطن متفاوت است، پس باید به عنوان یک مسیر مطلق مشخص شود که
برای گره باطن درست است.

-x
قبل از اجرای متغیرهای محیطی مشخص شده را به گره های راه دور صادر کنید
برنامه فقط یک متغیر محیطی را می توان برای هر مشخص کرد -x گزینه. موجود
متغیرهای محیطی را می توان مشخص کرد یا نام متغیرهای جدیدی را با آن مشخص کرد
مقادیر مربوطه مثلا:
% mpirun -x DISPLAY -x OFILE=/tmp/out ...

تجزیه کننده برای -x گزینه بسیار پیچیده نیست. حتی نمی فهمد
مقادیر نقل شده به کاربران توصیه می شود که متغیرها را در محیط تنظیم کرده و سپس استفاده کنند
-x برای صادرات (تعریف نکردن) آنها.

تنظیم پارامترهای MCA:

-gmca, --gmca
پارامترهای MCA جهانی را که برای همه زمینه ها قابل اجرا هستند، منتقل کنید. هست
نام پارامتر؛ مقدار پارامتر است.

-mca, --mca
آرگومان ها را به ماژول های مختلف MCA ارسال کنید. بخش "MCA" را در زیر ببینید.

برای رفع اشکال:

اشکال زدایی, - رفع اشکال
دیباگر سطح کاربر که با علامت نشان داده شده است را فراخوانی کنید orte_base_user_debugger MCA
پارامتر.

اشکال زدایی, -- اشکال زدا
دنباله ای از اشکال زداها برای جستجوی زمان - رفع اشکال استفاده می شود (یعنی مترادف برای
orte_base_user_debugger پارامتر MCA).

-تلویزیون, --تلویزیون
فرآیندها را تحت دیباگر TotalView راه اندازی کنید. سازگاری با عقب منسوخ شده است
پرچم. مترادف برای - رفع اشکال.

گزینه های دیگری نیز وجود دارد:

--allow-run-as-root
اجازه دادن mpirun برای اجرا در هنگام اجرا توسط کاربر root (mpirun پیش فرض برای سقط
هنگامی که به عنوان کاربر اصلی راه اندازی شد).

-سقط شد, -- سقط شد <#>
حداکثر تعداد فرآیندهای متوقف شده را برای نمایش تنظیم کنید.

--برنامه
با نادیده گرفتن سایر گزینه های خط فرمان، یک appfile ارائه دهید.

-فرش کردن, -- کارتوفایل
ارائه فایل کارتوگرافی

--هترو
نشان می دهد که چندین app_context ارائه شده است که ترکیبی از 32/64 بیت است
باینری ها

-ترک-جلسه-پیوست, -- ترک-جلسه-پیوست
شیاطین OmpiRTE استفاده شده توسط این برنامه را جدا نکنید. این اجازه می دهد تا پیام های خطا
از شیاطین و همچنین محیط زیربنایی (مثلاً در هنگام شکست
راه اندازی شبح) به خروجی.

-ompi-server, --ompi-سرور <uri or فایل>
URI سرور Open MPI (یا mpirun برای استفاده به عنوان سرور) را مشخص کنید.
نام فایل (مشخص شده به عنوان file:filename) که حاوی آن اطلاعات است، یا
PID (مشخص شده به عنوان pid:#) mpirun برای استفاده به عنوان
سرور. سرور Open MPI برای پشتیبانی از داده های چند برنامه ای استفاده می شود
تبادل از طریق توابع MPI-2 MPI_Publish_name و MPI_Lookup_name.

-گزارش-pid, --گزارش-pid
هنگام راه‌اندازی، PID mpirun را چاپ کنید. کانال باید یا '-' به indi باشد
مشخص کنید که pid باید به stdout خروجی شود، یک '+' برای نشان دادن اینکه pid به
به stderr یا نام فایلی که pid باید روی آن نوشته شود، خروجی شود.

-گزارش-وری, --گزارش-وری
هنگام راه‌اندازی، URI mpirun را چاپ کنید. کانال باید یا '-' به indi باشد
نشان می دهد که URI باید به stdout خروجی شود، یک '+' برای نشان دادن اینکه URI باید به
به stderr یا نام فایلی که URI باید روی آن نوشته شود خروجی شود.

انتظار برای سرور, - انتظار برای سرور
قبل از راه‌اندازی کار، mpirun را متوقف کنید تا زمانی که ompi-server شناسایی شود. این مفید است
در اسکریپت هایی که ompi-server ممکن است در پس زمینه راه اندازی شود و بلافاصله دنبال شود
توسط mpirun دستوری که می خواهد به آن وصل شود. امپیرون تا هر دو مکث خواهد کرد
با سرور ompi مشخص شده تماس گرفته می شود یا از زمان انتظار سرور تجاوز می شود.

-سرور-زمان انتظار, --سرور-زمان انتظار
حداکثر زمان (بر حسب ثانیه) mpirun باید منتظر ompi-server باشد
شروع کنید. پیش فرض 10 ثانیه است.

گزینه های زیر برای توسعه دهندگان مفید است. آنها به طور کلی برای بیشتر مفید نیستند
کاربران ORTE و/یا MPI:

-d, --debug-devel
اشکال زدایی OmpiRTE (لایه زمان اجرا در Open MPI) را فعال کنید. این نیست
به طور کلی برای اکثر کاربران مفید است.

--debug-daemons
اشکال زدایی هر دیمون OmpiRTE مورد استفاده توسط این برنامه را فعال کنید.

--debug-daemon-file
اشکال زدایی هر دیمون OmpiRTE مورد استفاده توسط این برنامه را فعال کنید و خروجی را در آن ذخیره کنید
فایل های.

-پرتاب-عامل, - عامل پرتاب
نام فایل اجرایی که قرار است برای شروع فرآیندها در گره های راه دور استفاده شود.
پیش فرض "orted" است. از این گزینه می توان برای آزمایش مفاهیم جدید دیمون یا برای آزمایش استفاده کرد
بدون اینکه خود mpirun آنها را ببیند، گزینه ها را به دیمون ها برگردانید. برای
به عنوان مثال، تعیین یک عامل راه اندازی orted -mca odls_base_verbose 5 به
توسعه دهنده از orted درخواست کند تا خروجی اشکال زدایی را بدون درهم ریختگی از خود mpirun بخواهد.

-- بدون پیشوند
رفتار پیشوند خودکار را غیرفعال کنید

ممکن است گزینه های دیگری در لیست وجود داشته باشد mpirun --کمک.

محیط متغیر
MPIEXEC_TIMEOUT
حداکثر تعداد ثانیه که mpirun (mpiexec) اجرا خواهد شد. بعد از این خیلی
ثانیه ، mpirun کار راه اندازی شده را متوقف می کند و خارج می شود.

شرح


یک فراخوان از mpirun یک برنامه MPI را اجرا می کند که تحت Open MPI اجرا می شود. اگر
برنامه، داده های چندگانه تک فرآیندی (SPMD) است، برنامه را می توان بر روی آن مشخص کرد
la mpirun خط فرمان.

اگر برنامه چند دستورالعمل داده های متعدد (MIMD)، متشکل از چند
برنامه ها، مجموعه برنامه ها و آرگومان را می توان به یکی از دو روش مشخص کرد: Extended
آرگومان های خط فرمان، و زمینه برنامه.

یک زمینه برنامه، مجموعه برنامه MIMD را شامل تمام آرگومان ها در a توصیف می کند
فایل جداگانه این فایل اساسا شامل چندین مورد است mpirun خطوط فرمان، کمتر
خود نام فرمان امکان تعیین گزینه های مختلف برای موارد مختلف
نمونه های یک برنامه دلیل دیگری برای استفاده از زمینه برنامه است.

آرگومان‌های خط فرمان توسعه‌یافته، امکان توضیح طرح‌بندی برنامه را بر روی
خط فرمان با استفاده از دو نقطه (:) برای جدا کردن مشخصات برنامه ها و آرگومان ها.
برخی از گزینه ها به صورت سراسری در تمام برنامه های مشخص شده (به عنوان مثال --hostfile) تنظیم می شوند
بقیه مختص یک برنامه واحد هستند (مثلا -np).

تعیین میزبان گره ها
گره های میزبان را می توان بر روی آن شناسایی کرد mpirun خط فرمان با -حالا گزینه یا در یک
فایل میزبان

به عنوان مثال،

mpirun -H aa,aa,bb ./a.out
دو پردازش را روی گره aa و یکی روی bb راه اندازی می کند.

یا، فایل میزبان را در نظر بگیرید

% گربه myhostfile
اسلات aa=2
اسلات bb=2
اسلات سی سی=2

در اینجا، هر دو نام میزبان (aa، bb، و cc) و همچنین تعداد "اسلات" برای
هر یک. اسلات ها نشان می دهند که چه تعداد از فرآیندها می توانند به طور بالقوه روی یک گره اجرا شوند. برای بهترین
عملکرد، تعداد اسلات ها ممکن است به عنوان تعداد هسته های روی گره یا
تعداد سوکت های پردازنده اگر فایل میزبان اطلاعات اسلات ها را ارائه نمی دهد، الف
پیش فرض 1 در نظر گرفته شده است. هنگام اجرا تحت مدیریت منابع (به عنوان مثال، SLURM، گشتاور،
و غیره)، Open MPI هم نام هاست و هم تعداد اسلات ها را مستقیماً از آن دریافت می کند
مدیر منابع

mpirun -hostfile myhostfile ./a.out
دو فرآیند را در هر یک از سه گره راه اندازی می کند.

mpirun -hostfile myhostfile -host aa ./a.out
دو فرآیند را راه اندازی می کند، هر دو در گره aa.

mpirun -hostfile myhostfile -host dd ./a.out
هیچ میزبانی برای اجرا پیدا نمی کند و با خطا لغو می شود. یعنی هاست مشخص شده dd
در hostfile مشخص شده نیست.

تعیین شماره of فرآیندهای
همانطور که قبلاً دیدیم، تعداد فرآیندهایی که باید اجرا شوند را می توان با استفاده از فایل میزبان تنظیم کرد. دیگر
مکانیسم ها وجود دارد.

تعداد فرآیندهای راه اندازی شده را می توان به عنوان مضربی از تعداد گره ها یا مشخص کرد
سوکت های پردازنده موجود است مثلا،

mpirun -H aa,bb -npersocket 2 ./a.out
فرآیندهای 0-3 را در گره aa و فرآیند 4-7 را در گره bb راه اندازی می کند، جایی که aa و bb هر دو هستند.
گره های دو سوکت در -npersocket گزینه نیز روشن می شود -پیوند به سوکت گزینه،
که در بخش بعدی مورد بحث قرار می گیرد.

mpirun -H aa,bb -npernode 2 ./a.out
فرآیندهای 0-1 را در گره aa و پردازش های 2-3 را در گره bb راه اندازی می کند.

mpirun -H aa,bb -npernode 1 ./a.out
هر گره میزبان یک فرآیند را راه اندازی می کند.

mpirun -H aa,bb -pernode ./a.out
مثل این هست که -npernode 1.

جایگزین دیگر این است که تعداد فرآیندها را با -np گزینه. در نظر گرفتن
اکنون فایل میزبان

% گربه myhostfile
اسلات aa=4
اسلات bb=4
اسلات سی سی=4

اکنون،

mpirun -hostfile myhostfile -np 6 ./a.out
فرآیندهای 0-3 را در گره aa و پردازش های 4-5 را در گره bb راه اندازی می کند. باقیمانده
اسلات ها در فایل میزبان از زمانی که -np گزینه نشان داد که فقط 6
فرآیندها باید راه اندازی شود.

نقشه برداری فرآیندهای به گره ها: با استفاده از سیاست
مثال‌های بالا نگاشت پیش‌فرض فرآیندهای فرآیند به گره‌ها را نشان می‌دهند. این
نقشه برداری را نیز می توان با انواع مختلف کنترل کرد mpirun گزینه هایی که سیاست های نقشه برداری را توصیف می کنند.

همان hostfile فوق را در نظر بگیرید، دوباره با -np 6:

گره aa گره bb گره سی سی

mpirun 0 1 2 3 4 5

mpirun --map-by node 0 3 1 4 2 5

mpirun -nolocal 0 1 2 3 4 5

La -- نقشه بر اساس گره گزینه تعادل فرآیندها را در گره های موجود بارگذاری می کند،
شماره گذاری هر فرآیند به صورت گرد.

La -نولوکال گزینه از نگاشت هر فرآیند بر روی میزبان محلی جلوگیری می کند (در این
گره مورد aa). در حالی که mpirun به طور معمول منابع سیستم کمی را مصرف می کند، -نولوکال می تواند
برای راه اندازی مشاغل بسیار بزرگ که در آن mpirun ممکن است در واقع نیاز به استفاده از قابل توجه باشد
مقدار حافظه و/یا زمان پردازش

فقط به عنوان -np می تواند فرآیندهای کمتری را نسبت به اسلات های موجود مشخص کند، همچنین می تواند بیش از حد اشتراک داشته باشد
اسلات ها به عنوان مثال، با همان hostfile:

mpirun -hostfile myhostfile -np 14 ./a.out
فرآیندهای 0-3 را در گره aa، 4-7 در bb و 8-11 را در cc راه اندازی می کند. سپس آن را اضافه می کند
دو فرآیند باقی مانده به هر گره ای که انتخاب کند.

همچنین می توان محدودیت هایی را برای اشتراک بیش از حد مشخص کرد. به عنوان مثال، با همان hostfile:

mpirun -hostfile myhostfile -np 14 -nooversubscribe ./a.out
از آن زمان یک خطا ایجاد خواهد کرد بدون اشتراک مانع از اشتراک بیش از حد می شود.

محدودیت‌های اشتراک بیش از حد نیز می‌تواند در خود فایل میزبان مشخص شود:
% cat myhostfile
اسلات aa=4 max_slots=4
bb max_slots=4
اسلات سی سی=4

La max_slots فیلد چنین محدودیتی را مشخص می کند. وقتی این کار را می کند، جک پات مقدار پیش فرض به
حد. اکنون:

mpirun -hostfile myhostfile -np 14 ./a.out
باعث می شود 12 فرآیند اول مانند قبل راه اندازی شوند، اما دو فرآیند باقی مانده
فرآیندها به گره cc تحمیل خواهند شد. دو گره دیگر توسط
hostfile در برابر اشتراک بیش از حد توسط این شغل.

با استفاده از -- nooversubscribe گزینه می تواند مفید باشد زیرا Open MPI در حال حاضر دریافت نمی شود
مقادیر "max_slots" از مدیر منبع.

البته، -np همچنین می توان با استفاده از -H or -حالا گزینه. مثلا،

mpirun -H aa,bb -np 8 ./a.out
8 فرآیند را راه اندازی می کند. از آنجایی که تنها دو میزبان مشخص شده است، پس از دو میزبان اول
فرآیندها نقشه برداری می شوند، یکی به aa و یکی به bb، فرآیندهای باقی مانده بیش از حد اشتراک دارند
هاست های مشخص شده

و در اینجا یک مثال MIMD وجود دارد:

mpirun -H aa -np 1 hostname: -H bb,cc -np 2 uptime
فرآیند 0 در حال اجرا راه اندازی خواهد شد نام میزبان در گره aa و پردازش های 1 و 2 هر کدام در حال اجرا است
آپ تایم به ترتیب روی گره های bb و cc.

نقشه برداری رتبه بندی ، و الزام آور: Oh من!
Open MPI از یک روش سه مرحله ای برای تخصیص مکان ها و رتبه های فرآیند استفاده می کند:

نقشه برداری یک مکان پیش فرض به هر فرآیند اختصاص می دهد

رتبه بندی به هر فرآیند یک مقدار رتبه MPI_COMM_WORLD اختصاص می دهد

الزام آور هر فرآیند را برای اجرا بر روی پردازنده های خاص محدود می کند

La نقشه برداری step برای تخصیص یک مکان پیش فرض به هر فرآیند بر اساس نقشه کش استفاده می شود
شاغل بودن نقشه برداری توسط شکاف، گره، و به طور متوالی منجر به تخصیص
به سطح گره پردازش می کند. در مقابل، نگاشت بر اساس شی، به نقشه‌بردار اجازه انتساب را می‌دهد
فرآیند به یک شی واقعی در هر گره.

توجه داشته باشید: مکان تخصیص داده شده به فرآیند مستقل از محل اتصال آن است -
انتساب صرفاً به عنوان ورودی الگوریتم اتصال استفاده می شود.

نگاشت فرآیندهای فرآیند به گره ها را می توان نه تنها با سیاست های کلی تعریف کرد
اما همچنین، در صورت لزوم، از نگاشت های دلخواه استفاده کنید که با یک ساده توصیف نمی شوند
خط مشی. می‌توان از «نقشه‌نگار متوالی» استفاده کرد که فایل میزبان را خط به خط می‌خواند.
تخصیص فرآیندها به گره ها به هر ترتیبی که فایل میزبان مشخص می کند. استفاده کنید -mca rmaps
SEQ گزینه. به عنوان مثال، با استفاده از همان hostfile قبلی:

mpirun -hostfile myhostfile -mca rmaps seq ./a.out

سه پردازش را راه اندازی می کند، یکی در هر گره aa، bb و cc، به ترتیب. شکاف
شمارش مهم نیست؛ یک فرآیند در هر خط در هر گره ای که در آن فهرست شده است راه اندازی می شود
خط.

راه دیگر برای تعیین نگاشت دلخواه با یک فایل رتبه بندی است که جزئیات را به شما می دهد
کنترل بر اتصال فرآیند نیز. فایل های رتبه بندی در زیر مورد بحث قرار می گیرند.

فاز دوم بر روی رتبه بندی فرآیند در MPI_COMM_WORLD کار.
Open MPI این را از رویه نگاشت جدا می کند تا انعطاف پذیری بیشتری در آن ایجاد شود
قرارگیری نسبی فرآیندهای MPI این به بهترین وجه با در نظر گرفتن موارد زیر نشان داده می شود
در دو مورد از گزینه —map-by ppr:2:socket استفاده کردیم:

گره aa گره bb

رتبه بر اساس هسته 0 1 ! 2 3 4 5 ! 6 7

رتبه بندی سوکت 0 2 ! 1 3 4 6 ! 5 7

رتبه بندی سوکت:span 0 4 ! 1 5 2 6 ! 3 7

رتبه بندی بر اساس هسته و اسلات نتیجه یکسانی را ارائه می دهد - یک پیشرفت ساده
MPI_COMM_WORLD در هر گره رتبه بندی می کند. رتبه‌بندی بر اساس سوکت، رتبه‌بندی دوره‌ای را در داخل انجام می‌دهد
هر گره تا زمانی که به همه فرآیندها یک رتبه MCW اختصاص داده شود، و سپس به سمت پیشرفت می‌رود
گره بعدی اضافه کردن محدوده اصلاح کننده دستورالعمل رتبه بندی باعث ایجاد الگوریتم رتبه بندی می شود
برای در نظر گرفتن کل تخصیص به عنوان یک موجودیت واحد - بنابراین، رتبه های MCW اختصاص داده می شود
در تمام سوکت‌ها قبل از چرخش به ابتدا.

La الزام آور فاز در واقع هر فرآیند را به مجموعه معینی از پردازنده ها متصل می کند. این می تواند
اگر سیستم عامل فرآیندها را به صورت غیربهینه قرار دهد، عملکرد را بهبود بخشد. برای
به عنوان مثال، ممکن است برخی از سوکت های پردازنده چند هسته ای را بیش از حد مجاز کند و سوکت های دیگر را ترک کند
بیکار این می تواند منجر به رقابت غیرضروری فرآیندها برای منابع مشترک شود. یا، آن را
ممکن است فرآیندها را به طور گسترده گسترش دهد. در صورت عملکرد برنامه، این می تواند کمتر از حد مطلوب باشد
به هزینه های ارتباطات بین فرآیندی حساس است. صحافی همچنین می تواند عملکرد را حفظ کند
سیستم از مهاجرت بیش از حد فرآیندها، صرف نظر از اینکه این فرآیندها چقدر بهینه هستند
برای شروع قرار گرفتند.

پردازنده هایی که برای اتصال استفاده می شوند را می توان از نظر گروه بندی توپولوژیکی شناسایی کرد
- به عنوان مثال، اتصال به l3cache، هر فرآیند را به تمام پردازنده‌های موجود در محدوده
یک کش L3 در مکان اختصاص داده شده آنها. بنابراین، اگر فرآیندی توسط
نگاشت به یک سوکت خاص، سپس a -اتصال به l3cache بخشنامه باعث می شود که این فرآیند انجام شود
متصل به پردازنده هایی که یک حافظه نهان L3 را در آن سوکت به اشتراک می گذارند.

برای کمک به متعادل کردن بارها، دستورالعمل اتصال هنگام اتصال به از یک روش گرد روبین استفاده می کند
سطوح پایین تر از آنچه در نقشه کش استفاده می شود. به عنوان مثال، موردی را در نظر بگیرید که یک کار نقشه برداری می شود
به سطح سوکت، و سپس به هسته متصل می شود. هر سوکت دارای چندین هسته خواهد بود، بنابراین اگر
چندین فرآیند به یک سوکت معین نگاشت می شوند، الگوریتم اتصال هر کدام را اختصاص می دهد
فرآیندی که به یک سوکت به یک هسته منحصربه‌فرد به صورت دور روبین قرار دارد.

روش دیگر، فرآیندهایی که توسط l2cache نگاشت شده و سپس به سوکت متصل می شوند، به سادگی محدود می شوند.
به تمام پردازنده های موجود در سوکتی که در آن قرار دارند. به این ترتیب کاربران می توانند
اعمال کنترل دقیق بر موقعیت نسبی رتبه MCW و اتصال.

در نهایت، --گزارش الزام آور می تواند برای گزارش اتصالات استفاده شود.

به عنوان مثال، یک گره با دو سوکت پردازنده را در نظر بگیرید که هر کدام شامل چهار هسته است. ما
اجرا mpirun با -np 4 --گزارش الزام آور و گزینه های اضافی زیر:

% mpirun ... --map-by core --bind-to core
[...] ... اتصال فرزند [...،0] به cpus 0001
[...] ... اتصال فرزند [...،1] به cpus 0002
[...] ... اتصال فرزند [...،2] به cpus 0004
[...] ... اتصال فرزند [...،3] به cpus 0008

% mpirun ... --map-by socket --bind-to socket
[...] ... اتصال فرزند [...,0] به سوکت 0 cpus 000f
[...] ... اتصال فرزند [...،1] به سوکت 1 cpus 00f0
[...] ... اتصال فرزند [...,2] به سوکت 0 cpus 000f
[...] ... اتصال فرزند [...،3] به سوکت 1 cpus 00f0

% mpirun ... --map-by core:PE=2 --bind-to core
[...] ... اتصال فرزند [...،0] به cpus 0003
[...] ... اتصال فرزند [...،1] به cpus 000c
[...] ... اتصال فرزند [...،2] به cpus 0030
[...] ... اتصال فرزند [...،3] به cpus 00c0

% mpirun ... --bind-to none

در اینجا، --گزارش الزام آور اتصال هر فرآیند را به عنوان یک ماسک نشان می دهد. در حالت اول،
فرآیندها همانطور که با ماسک های 0001، 0002، 0004 نشان داده شده اند به هسته های متوالی متصل می شوند.
0008. در مورد دوم، فرآیندها همانطور که نشان داده شده است به تمام هسته ها در سوکت های متوالی متصل می شوند.
توسط ماسک های 000f و 00f0. چرخه فرآیندها از طریق سوکت های پردازنده به صورت گرد
رابین مد هر چند بار که لازم است. در مورد سوم، ماسک ها به ما نشان می دهند که 2
هسته ها در هر فرآیند محدود شده اند. در حالت چهارم صحافی خاموش است و خیر
اتصالات گزارش شده است.

پشتیبانی Open MPI برای اتصال فرآیند به سیستم عامل اصلی بستگی دارد.
بنابراین، برخی از گزینه های الزام آور فرآیند ممکن است در هر سیستمی در دسترس نباشد.

فرآیند اتصال را می توان با پارامترهای MCA نیز تنظیم کرد. استفاده از آنها کمتر راحت است
که از mpirun گزینه ها. از طرف دیگر، پارامترهای MCA را می توان نه تنها بر روی
mpirun خط فرمان، اما به طور متناوب در فایل سیستم یا کاربر mca-params.conf یا به عنوان
متغیرهای محیطی، همانطور که در بخش MCA در زیر توضیح داده شده است. برخی از نمونه ها عبارتند از:

مقدار کلید پارامتر MCA گزینه mpirun

--map-by هسته هسته rmaps_base_mapping_policy
سوکت --map-by سوکت rmaps_base_mapping_policy
--rank-by هسته هسته rmaps_base_ranking_policy
--bind-to core hwloc_base_binding_policy core
سوکت --bind-to socket hwloc_base_binding_policy
--bind-to none hwloc_base_binding_policy هیچکدام

فایل های رتبه بندی
Rankfiles فایل های متنی هستند که اطلاعات دقیقی را در مورد نحوه پردازش های فردی مشخص می کنند
باید به گره ها نگاشت شوند و به کدام پردازنده(های) متصل شوند. هر خط از a
rankfile مکان یک فرآیند را مشخص می کند (برای کارهای MPI، "رتبه" فرآیند اشاره دارد
به رتبه خود در MPI_COMM_WORLD). شکل کلی هر خط در فایل رتبه بندی به صورت زیر است:

رتبه = شکاف =

مثلا:

$ cat myrankfile
رتبه 0 = شکاف aa = 1:0-2
رتبه 1 = شکاف bb = 0:0,1،XNUMX
رتبه 2 = شکاف سی سی = 1-2
$ mpirun -H aa,bb,cc,dd -rf myrankfile ./a.out

یعنی که

رتبه 0 روی گره aa اجرا می شود، به سوکت منطقی 1، هسته های 0-2 متصل می شود.
رتبه 1 روی گره bb اجرا می شود، به سوکت منطقی 0، هسته های 0 و 1 متصل می شود.
رتبه 2 روی گره سی سی اجرا می شود که به هسته های منطقی 1 و 2 متصل است.

Rankfiles می تواند به طور متناوب برای تعیین استفاده شود فیزیکی مکان های پردازنده در این مورد،
نحو تا حدودی متفاوت است. سوکت ها دیگر به رسمیت شناخته نمی شوند، و تعداد اسلات
داده شده باید تعداد PU فیزیکی باشد زیرا اکثر سیستم عامل ها یک فیزیکی منحصر به فرد را اختصاص نمی دهند
شناسه هر هسته در گره. بنابراین، یک فایل رتبه بندی فیزیکی مناسب چیزی شبیه به آن است
به شرح زیر است:

$ cat myphysicalrankfile
رتبه 0 = شکاف aa = 1
رتبه 1 = شکاف bb = 8
رتبه 2=سی سی اسلات=6

این بدان معناست که

رتبه 0 بر روی گره aa اجرا می شود که به هسته ای که حاوی PU فیزیکی 1 است محدود می شود
رتبه 1 روی گره bb اجرا می شود که به هسته ای که حاوی PU 8 فیزیکی است متصل می شود
رتبه 2 بر روی گره cc اجرا می شود که به هسته ای که حاوی PU فیزیکی 6 است متصل می شود

فایل های رتبه ای به عنوان منطقی به طور پیش فرض و پارامتر MCA
rmaps_rank_file_physical باید روی 1 تنظیم شود تا نشان دهد که فایل رتبه باید باشد
در نظر گرفته شده به عنوان فیزیکی.

نام های میزبان لیست شده در بالا "مطلق" هستند، به این معنی که نام میزبان های قابل حل واقعی هستند
مشخص شده. با این حال، نام میزبان را می توان به عنوان "نسبی" نیز مشخص کرد، به این معنی که آنها هستند
در رابطه با لیستی از نام های میزبان مشخص شده خارجی (مثلاً توسط mpirun's
- آرگومان میزبان، فایل میزبان یا زمانبندی کار).

مشخصات "نسبی" به شکل "+n" است "، جایی که X یک عدد صحیح است که مقدار را مشخص می کند
نام میزبان X در مجموعه همه نام‌های میزبان موجود، نمایه‌سازی شده از 0. به عنوان مثال:

$ cat myrankfile
rank 0=+n0 slot=1:0-2
رتبه 1=+n1 اسلات=0:0,1،XNUMX
رتبه 2 = + n2 شکاف = 1-2
$ mpirun -H aa,bb,cc,dd -rf myrankfile ./a.out

با شروع با Open MPI نسخه 1.7، همه مکان‌های شکاف سوکت/هسته به صورت مشخص می‌شوند. منطقی
ایندکس ها (سری Open MPI v1.6 استفاده شده است فیزیکی شاخص ها). می توانید از ابزارهایی مانند
"lstopo" HWLOC برای یافتن شاخص های منطقی سوکت و هسته.

کاربرد زمینه or قابل اجرا برنامه؟
برای تشخیص دو شکل مختلف، mpirun در خط فرمان برای --برنامه گزینه.
اگر مشخص شده باشد، فایلی که در خط فرمان نامگذاری شده است، یک فرض می شود
زمینه برنامه اگر مشخص نشده باشد، فایل اجرایی فرض می شود
برنامه است.

یافتن فایل ها
اگر مسیر نسبی یا مطلقی برای یک فایل مشخص نشده باشد، Open MPI ابتدا به دنبال آن خواهد بود
فایل ها با جستجو در دایرکتوری های مشخص شده توسط --مسیر گزینه. اگر وجود ندارد --مسیر
گزینه را تنظیم کنید یا اگر فایل در آن یافت نشد --مسیر مکان، سپس Open MPI جستجو خواهد کرد
متغیر محیطی PATH کاربر همانطور که در گره(های) منبع تعریف شده است.

اگر دایرکتوری نسبی مشخص شده باشد، باید نسبت به دایرکتوری کاری اولیه باشد
توسط استارتر خاص مورد استفاده تعیین می شود. به عنوان مثال هنگام استفاده از استارترهای rsh یا ssh،
دایرکتوری اولیه به طور پیش فرض $HOME است. سایر شروع کننده ها ممکن است فهرست اولیه را روی آن تنظیم کنند
دایرکتوری کاری فعلی از فراخوانی mpirun.

جاری کارگر فهرست راهنما
La -wdir گزینه mpirun (و مترادف آن، -wd) به کاربر اجازه می دهد تا به دلخواه تغییر کند
دایرکتوری قبل از فراخوانی برنامه همچنین می توان از آن در فایل های زمینه برنامه استفاده کرد
برای تعیین دایرکتوری های کاری روی گره های خاص و/یا برای برنامه های خاص.

اگر -wdir گزینه هم در یک فایل زمینه و هم در خط فرمان، متن ظاهر می شود
فهرست فایل مقدار خط فرمان را لغو می کند.

اگر -wdir گزینه مشخص شده است، Open MPI تلاش خواهد کرد تا به مشخص شده تغییر کند
دایرکتوری در تمام گره های راه دور. اگر این شکست، mpirun سقط خواهد کرد.

اگر -wdir گزینه است نه مشخص شده، Open MPI نام دایرکتوری را به آنجا ارسال می کند mpirun
به هر یک از گره های راه دور فراخوانی شد. گره های راه دور سعی می کنند به آن تغییر کنند
فهرست راهنما. اگر آنها قادر نیستند (به عنوان مثال، اگر دایرکتوری در آن گره وجود نداشته باشد)، پس
Open MPI از دایرکتوری پیش فرض تعیین شده توسط شروع کننده استفاده می کند.

همه تغییر دایرکتوری قبل از فراخوانی برنامه کاربر اتفاق می افتد. صبر نمی کند تا
MPI_INIT نامیده میشود.

استاندارد I / O
Open MPI ورودی استاندارد یونیکس را به /dev/null در تمام فرآیندها به جز
فرآیند MPI_COMM_WORLD رتبه 0. فرآیند رتبه 0 MPI_COMM_WORLD ورودی استاندارد را به ارث می برد
از جانب mpirun. توجه داشته باشید: گره ای که فراخوانی کرد mpirun نیازی نیست که همان گره جایی باشد
روند MPI_COMM_WORLD رتبه 0 وجود دارد. Open MPI هدایت مجدد را انجام می دهد mpirun's
ورودی استاندارد به فرآیند رتبه 0.

Open MPI خروجی و خطای استاندارد یونیکس را از گره های راه دور به گره ای که فراخوانی کرده است هدایت می کند.
mpirun و آن را روی خروجی/خطای استاندارد چاپ می کند mpirun. فرآیندهای محلی به ارث می برند
خروجی استاندارد/خطای mpirun و مستقیماً به آن منتقل کنید.

بنابراین امکان تغییر مسیر I/O استاندارد برای برنامه های Open MPI با استفاده از
روش معمولی تغییر جهت پوسته روشن است mpirun.

% mpirun -np 2 my_app < ​​my_input > my_output

توجه داشته باشید که در این مثال فقط روند MPI_COMM_WORLD رتبه 0 جریان را دریافت خواهد کرد
از جانب my_input در stdin. stdin در تمام گره های دیگر به /dev/null گره خورده است.
با این حال، stdout از همه گره‌ها در گره جمع‌آوری می‌شود من_خروجی فایل.

سیگنال انتشار
هنگامی که orterun یک SIGTERM و SIGINT را دریافت می‌کند، سعی می‌کند کل کار را از بین ببرد
سپس تمام فرآیندهای موجود در کار را یک SIGTERM ارسال می‌کند، سپس چند ثانیه منتظر می‌ماند
ارسال تمام فرآیندهای موجود در کار یک SIGKILL.

سیگنال های SIGUSR1 و SIGUSR2 دریافت شده توسط orterun به تمام فرآیندهای موجود در
کار.

می توان فوروارد SIGSTOP و SIGCONT را به برنامه اجرا شده توسط mpirun توسط
تنظیم پارامتر MCA orte_forward_job_control روی 1. یک سیگنال SIGTSTOP به mpirun
سپس باعث می شود تا یک سیگنال SIGSTOP به تمام برنامه هایی که توسط mpirun و شروع شده اند ارسال شود
به همین ترتیب یک سیگنال SIGCONT به mpirun باعث ارسال SIGCONT می شود.

سیگنال های دیگر در حال حاضر توسط orterun منتشر نمی شوند.

روند ختم / سیگنال اداره
در طول اجرای برنامه MPI، اگر هر فرآیندی به طور غیرعادی از بین برود (یا در حال خروج
قبل از استناد MPI_FINALIZEیا مرگ در نتیجه یک سیگنال) mpirun چاپ خواهد شد
پیغام خطا داده و بقیه برنامه MPI را بکشید.

کنترل‌کننده‌های سیگنال کاربر احتمالاً باید از تلاش برای پاکسازی وضعیت MPI اجتناب کنند (MPI باز است
در حال حاضر async-signal-safe نیست. دیدن MPI_Init_thread(3) برای جزئیات در مورد
MPI_THREAD_MULTIPLE و ایمنی نخ). به عنوان مثال، اگر یک خطای تقسیم بندی در آن رخ دهد
MPI_SEND (شاید به این دلیل که بافر بدی وارد شده است) و کنترل کننده سیگنال کاربر است
فراخوانی می شود، اگر این کنترل کننده کاربر سعی در فراخوانی داشته باشد MPI_FINALIZE، اتفاقات بد ممکن است رخ دهد
از آنجایی که Open MPI از قبل در زمان وقوع خطا "در" MPI بود. از آنجا که mpirun متوجه خواهد شد
که فرآیند به دلیل یک سیگنال از بین رفته است، احتمالاً برای آن ضروری نیست (و ایمن ترین).
کاربر فقط حالت غیر MPI را پاک کند.

روند محیط
فرآیندها در برنامه MPI محیط خود را از شبح Open RTE به ارث می برند
گره ای که روی آن اجرا می شوند. محیط به طور معمول از آن به ارث می رسد
پوسته کاربر در گره های راه دور، محیط دقیق توسط ماژول بوت MCA تعیین می شود
استفاده شده. این rsh به عنوان مثال، ماژول راه اندازی از هر دو استفاده می کند rsh/SSH برای راه اندازی Open RTE
دیمون روی گره های راه دور، و معمولاً یک یا چند فایل تنظیم پوسته کاربر را اجرا می کند.
قبل از راه اندازی شبح Open RTE. هنگام اجرای برنامه های مرتبط به صورت پویا که
نیاز به LD_LIBRARY_PATH متغیر محیطی برای تنظیم، باید دقت شود تا اطمینان حاصل شود
که هنگام بوت کردن Open MPI به درستی تنظیم شده است.

برای جزئیات بیشتر به بخش "اجرای از راه دور" مراجعه کنید.

دور اعدام
باز کردن MPI مستلزم آن است که PATH متغیر محیطی برای یافتن فایل های اجرایی از راه دور تنظیم شود
گره ها (این معمولا فقط در مورد نیاز است rsh- یا SSHمحیط های مبتنی بر --
محیط‌های دسته‌ای/برنامه‌ریزی معمولاً محیط فعلی را برای اجرای آن کپی می‌کنند
مشاغل از راه دور، بنابراین اگر محیط فعلی داشته باشد PATH و / یا LD_LIBRARY_PATH به درستی تنظیم کنید،
گره های راه دور نیز آن را به درستی تنظیم می کنند). اگر Open MPI با shared کامپایل شده بود
پشتیبانی از کتابخانه، همچنین ممکن است لازم باشد LD_LIBRARY_PATH متغیر محیطی
روی گره های راه دور نیز تنظیم کنید (مخصوصاً برای یافتن کتابخانه های مشترک مورد نیاز برای اجرای کاربر).
برنامه های کاربردی MPI).

با این حال، همیشه مطلوب یا امکان پذیر نیست که فایل های راه اندازی پوسته را برای تنظیم ویرایش کنید PATH
و / یا LD_LIBRARY_PATH. -- پیشوند گزینه برای برخی از تنظیمات ساده ارائه شده است
جایی که این امکان پذیر نیست

La -- پیشوند گزینه یک آرگومان واحد می گیرد: دایرکتوری پایه در گره راه دور که در آن
Open MPI نصب شده است. Open MPI از این دایرکتوری برای تنظیم ریموت استفاده می کند PATH و
LD_LIBRARY_PATH قبل از اجرای هر برنامه Open MPI یا کاربر. این اجازه می دهد تا دویدن
کارهای MPI را بدون پیکربندی قبلی باز کنید PATH و LD_LIBRARY_PATH از راه دور
گره ها

Open MPI نام پایه "bindir" گره فعلی را اضافه می کند (دایرکتوری که در آن Open MPI's
فایل های اجرایی نصب می شوند) به پیشوند و از آن برای تنظیم استفاده می کند PATH روی گره راه دور
به طور مشابه، Open MPI نام پایه "libdir" گره فعلی را اضافه می کند (دایرکتوری که در آن
کتابخانه های MPI را باز کنید) به پیشوند و از آن برای تنظیم استفاده می کند LD_LIBRARY_PATH
روی گره راه دور مثلا:

Local bindir: /local/node/directory/bin

libdir محلی: /local/node/directory/lib64

اگر از خط فرمان زیر استفاده شود:

% mpirun --پیشوند / راه دور / گره / دایرکتوری

Open MPI "/remote/node/directory/bin" را به آن اضافه می کند PATH و
"/remote/node/directory/lib64" به D_LIBRARY_PATH در گره راه دور قبل از تلاش
برای اجرای هر چیزی

La -- پیشوند اگر مسیرهای نصب در گره راه دور کافی باشد، گزینه کافی نیست
متفاوت از گره محلی (به عنوان مثال، اگر "/ lib" در گره محلی استفاده می شود، اما "/lib64"است
در گره راه دور استفاده می شود)، یا اگر مسیرهای نصب چیزی غیر از a باشد
زیر شاخه تحت یک پیشوند مشترک.

توجه داشته باشید که در حال اجرا mpirun از طریق یک مسیر مطلق معادل مشخص کردن است -- پیشوند
بدون آخرین زیر شاخه در نام مسیر مطلق to mpirun. مثلا:

% /usr/local/bin/mpirun ...

برابر است با

% mpirun --پیشوند / usr / محلی

صادر شده است محیط متغیر
همه متغیرهای محیطی که به شکل OMPI_* نامگذاری شده اند به طور خودکار صادر می شوند
به فرآیندهای جدید در گره های محلی و راه دور. پارامترهای محیطی نیز می تواند باشد
با استفاده از پارامتر MCA، به فرآیندهای جدید ارسال می شود mca_base_env_list. -x
گزینه ای برای mpirun منسوخ شده است، اما نحو پارامتر MCA از قبل پیروی می کند
مثال. در حالی که نحو از -x گزینه و پارامتر MCA اجازه می دهد تا تعریف جدید
متغیرها، توجه داشته باشید که تجزیه کننده این گزینه ها در حال حاضر خیلی پیچیده نیستند -
حتی مقادیر نقل شده را درک نمی کند. به کاربران توصیه می شود که متغیرها را در
محیط و از گزینه صادرات آنها استفاده کنید. نه اینکه آنها را تعریف کنیم.

محیط MCA پارامترهای
La -mca سوئیچ اجازه می دهد تا پارامترها را به MCA مختلف (مولفه مدولار) منتقل کند
ماژول های معماری). ماژول های MCA تأثیر مستقیمی بر برنامه های MPI دارند زیرا اجازه می دهند
پارامترهای قابل تنظیم برای تنظیم در زمان اجرا (مانند درایور دستگاه ارتباطی BTL
استفاده کنید، چه پارامترهایی را به آن BTL منتقل کنید، و غیره).

La -mca سوییچ دو آرگومان می گیرد: و . استدلال به طور کلی
مشخص می کند که کدام ماژول MCA مقدار را دریافت می کند. به عنوان مثال "btl" استفاده می شود
برای انتخاب BTL که برای انتقال پیام های MPI استفاده شود. در استدلال است
ارزشی که گذشت مثلا:

mpirun -mca btl tcp,self -np 1 foo
به Open MPI می گوید که از BTL های "tcp" و "self" استفاده کند و یک کپی از "foo" را اجرا کند.
گره اختصاص داده شده

mpirun -mca btl self -np 1 foo
به Open MPI می گوید که از BTL "self" استفاده کند و یک کپی از "foo" اختصاص داده شده را اجرا کند.
گره

La -mca سوئیچ را می توان چندین بار برای تعیین موارد مختلف استفاده کرد و / یا
استدلال ها اگر همینطور بیش از یک بار مشخص شده است s به هم پیوسته اند
با کاما ("") که آنها را از هم جدا می کند.

توجه داشته باشید که -mca سوییچ به سادگی یک میانبر برای تنظیم متغیرهای محیطی است. در
همین اثر ممکن است با تنظیم متغیرهای محیطی مربوطه از قبل انجام شود
در حال اجرا mpirun. شکل متغیرهای محیطی که Open MPI تنظیم می کند به صورت زیر است:

OMPI_MCA_ =

بنابراین -mca سوئیچ هر متغیر محیطی که قبلاً تنظیم شده است را لغو می کند. را -mca
تنظیمات به طور مشابه پارامترهای MCA تنظیم شده در $OPAL_PREFIX/etc/openmpi-mca- را نادیده می گیرند.
فایل params.conf یا $HOME/.openmpi/mca-params.conf.

ناشناخته آرگومان ها همچنان به عنوان متغیر محیطی تنظیم می شوند -- آنها بررسی نمی شوند (توسط
mpirun) برای صحت. غیر قانونی یا نادرست استدلال ممکن است باشد یا نباشد
گزارش شده - بستگی به ماژول MCA خاص دارد.

برای یافتن انواع اجزای موجود تحت معماری MCA یا یافتن انواع موجود
از پارامترهای یک جزء خاص استفاده کنید ompi_info فرمان را ببینید ompi_info(1) مرد
صفحه برای اطلاعات دقیق در مورد دستور.

محل دویدن و پیاده روی as ریشه
تیم Open MPI اکیداً از اجرا توصیه می‌کند mpirun به عنوان کاربر اصلی MPI
برنامه ها باید به عنوان کاربران عادی (غیر روت) اجرا شوند.

با انعکاس این توصیه، mpirun به طور پیش‌فرض از اجرای روت خودداری می‌کند. برای نادیده گرفتن این
پیش فرض، می توانید اضافه کنید --allow-run-as-root گزینه به mpirun خط فرمان.

خروج وضعیت
هیچ تعریف استانداردی برای چه چیزی وجود ندارد mpirun باید به عنوان وضعیت خروج برگردد. بعد از
بحث قابل توجهی، ما بر روی روش زیر برای اختصاص دادن حل و فصل mpirun خروج
وضعیت (توجه: در توضیحات زیر، شغل "اصلی" برنامه اولیه است
توسط mpirun آغاز شده است - همه مشاغلی که توسط آن شغل ایجاد می شوند "ثانویه" تعیین می شوند.
شغل ها):

· اگر همه فرآیندها در کار اصلی معمولاً با وضعیت خروج 0 خاتمه می یابند، 0 را برمی گردانیم

· اگر یک یا چند فرآیند در کار اصلی معمولاً با خروجی غیر صفر خاتمه می یابد
وضعیت، وضعیت خروج از فرآیند را با پایین‌ترین رتبه MPI_COMM_WORLD به آن برمی‌گردانیم
وضعیت غیر صفر دارند

· اگر همه فرآیندها در کار اصلی معمولاً با وضعیت خروج 0 و یک یا خاتمه می یابند
فرآیندهای بیشتر در یک کار ثانویه معمولاً با وضعیت خروج غیر صفر خاتمه می یابد، ما (الف)
وضعیت خروج از فرآیند را با پایین ترین رتبه MPI_COMM_WORLD در پایین ترین، برگردانید
jobid وضعیت غیر صفر داشته باشد، و (ب) پیامی را که وضعیت خروج را خلاصه می کند، خروجی می دهد
مشاغل اولیه و کلیه مشاغل فرعی

· اگر گزینه cmd line --report-child-jobs-separately تنظیم شده باشد، ما -only- را برمی گردانیم
وضعیت خروج از شغل اصلی هرگونه وضعیت خروج غیر صفر در مشاغل ثانویه خواهد بود
تنها در یک بیانیه چاپی خلاصه گزارش شده است.

به‌طور پیش‌فرض، OMPI ثبت می‌کند و توجه می‌کند که پردازش‌های MPI با خاتمه غیر صفر خارج می‌شوند
وضعیت این به طور کلی یک "خاتمه غیر عادی" در نظر گرفته نمی شود - به عنوان مثال، OMPI این کار را نخواهد کرد
اگر یک یا چند پردازش وضعیت غیر صفر را برگرداند، یک کار MPI را لغو کنید. در عوض، پیش فرض
رفتار به سادگی تعداد فرآیندهای پایان یافته با وضعیت غیر صفر را گزارش می کند
اتمام کار

با این حال، در برخی موارد می‌تواند مطلوب باشد که در هر فرآیندی، کار متوقف شود
با وضعیت غیر صفر خاتمه می یابد. به عنوان مثال، یک کار غیر MPI ممکن است نتیجه بدی را از آن تشخیص دهد
یک محاسبه و می‌خواهد لغو شود، اما نمی‌خواهد یک فایل اصلی تولید کند. یا یک کار MPI
ممکن است پس از فراخوانی MPI_Finalize ادامه یابد، اما نشان می دهد که همه فرآیندها باید متوقف شوند
به دلیل برخی از نتایج پس از MPI.

پیش بینی نمی شود که این وضعیت مکرر رخ دهد. با این حال، به نفع
برای خدمت به جامعه گسترده تر، OMPI اکنون ابزاری دارد که به کاربران اجازه می دهد آن را هدایت کنند
پس از هر فرآیندی که با وضعیت غیر صفر خارج می شود، مشاغل لغو می شوند. تنظیم پارامتر MCA
"orte_abort_on_non_zero_status" به 1 باعث می شود OMPI یک بار تمام فرآیندها را لغو کند.
روند
با وضعیت غیر صفر خارج می شود.

خاتمه های ایجاد شده به این روش در کنسول به عنوان "غیر عادی" گزارش می شود
خاتمه، با اولین فرآیند خروج به همراه وضعیت خروج آن مشخص شد.

مثال ها


حتماً نمونه‌ها را در بخش‌های بالا نیز ببینید.

mpirun -np 4 -mca btl ib,tcp,self prog1
4 کپی از prog1 را با استفاده از BTLهای "ib"، "tcp" و "self" برای انتقال MPI اجرا کنید.
پیام ها.

mpirun -np 4 -mca btl tcp,sm,self
--mca btl_tcp_if_include eth0 prog1
4 کپی از prog1 را با استفاده از BTLهای "tcp"، "sm" و "self" برای انتقال MPI اجرا کنید.
پیام ها، با TCP که فقط از رابط eth0 برای برقراری ارتباط استفاده می کند. توجه داشته باشید که BTL های دیگر
پارامترهای if_include MCA مشابهی دارند.

برگشت ارزش


mpirun اگر تمام فرآیندها توسط شروع شده باشند، 0 را برمی گرداند mpirun پس از تماس با MPI_FINALIZE خارج شوید. آ
اگر خطای داخلی در mpirun یا یک یا چند خطا رخ داده باشد، مقدار غیر صفر برگردانده می شود
فرآیندها قبل از فراخوانی MPI_FINALIZE خارج شدند. اگر یک خطای داخلی در mpirun رخ داده است،
کد خطای مربوطه برگردانده می شود. در صورتی که یک یا چند فرآیند خارج شوند
قبل از فراخوانی MPI_FINALIZE، مقدار بازگشتی رتبه MPI_COMM_WORLD فرآیند
که mpirun اولین اخطارها قبل از تماس با MPI_FINALIZE برگردانده خواهند شد. توجه داشته باشید که،
به طور کلی، این اولین فرآیندی است که از بین رفته است اما تضمینی وجود ندارد.

با استفاده از خدمات onworks.net از orterun آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

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

  • 1
    بارگیری تصویر
    بارگیری تصویر
    خزیدن و دانلود تصاویر با استفاده از
    سلنیوم با استفاده از python3 و PyQt5.
    موتور جستجوی پشتیبانی شده: گوگل، بینگ،
    بایدو. ورودی کلمات کلیدی از صفحه کلید
    یا ورودی از ...
    دانلود نرم افزار Image Downloader
  • 2
    پلاگین Tomcat Eclipse
    پلاگین Tomcat Eclipse
    پلاگین Eclipse Tomcat فراهم می کند
    ادغام ساده سرورلت تامکت
    ظرفی برای توسعه جاوا
    برنامه های کاربردی وب شما می توانید به ما بپیوندید
    بحث...
    دانلود پلاگین Eclipse Tomcat
  • 3
    دسکتاپ WebTorrent
    دسکتاپ WebTorrent
    WebTorrent Desktop برای پخش جریانی است
    تورنت در مک، ویندوز یا لینوکس. آی تی
    به هر دو بیت تورنت وصل می شود
    همتایان وب تورنت اکنون وجود ندارد
    باید منتظر بود...
    دانلود WebTorrent Desktop
  • 4
    GenX
    GenX
    GenX یک برنامه علمی برای اصلاح است
    بازتاب اشعه ایکس، نوترون
    بازتابش و اشعه ایکس سطح
    داده های پراش با استفاده از دیفرانسیل
    الگوریتم تکامل ....
    GenX را دانلود کنید
  • 5
    pspp4 windows
    pspp4 windows
    PSPP یک برنامه برای آمار است
    تجزیه و تحلیل داده های نمونه برداری شده رایگان است
    جایگزینی برای برنامه اختصاصی
    SPSS. PSPP دارای هر دو مبتنی بر متن و
    ما گرافیکی...
    دانلود pspp4windows
  • 6
    برنامه های افزودنی Git
    برنامه های افزودنی Git
    Git Extensions یک ابزار UI مستقل است
    برای مدیریت مخازن Git. آن را نیز
    با Windows Explorer و
    مایکروسافت ویژوال استودیو
    (2015/2017/2019). این...
    برنامه های افزودنی Git را دانلود کنید
  • بیشتر "

دستورات لینوکس

Ad