این دستور mpirun.lam است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
mpirun - برنامه های MPI را روی گره های LAM اجرا کنید.
خلاصه
mpirun [-fhvO] [-c # | -np #] [-D | -wd dir] [-ger | -nger] [-sigs | -nsigs] [-ssi کلید
مقدار] [-nw | -w] [-nx] [-pty | -npty] [-s node] [-t | -توف | -ton] [-tv] [-x
VAR1[=VALUE1][,VAR2[=VALUE2]،...]] [[-p prefix_str] [-sa | -sf]] [where] برنامه [--
ارگ]
توجه داشته باشید: اگرچه هر کدام به صورت جداگانه اختیاری هستند، حداقل یکی از آنها جایی که, -np، یا -c باید
در فرم بالا مشخص شده است (یعنی زمانی که یک طرحواره استفاده نمی شود).
mpirun [-fhvO] [-D | -wd dir] [-ger | -nger] [-sigs | -nsigs] [-ssi مقدار کلید] [-nw | -w]
[-nx] [-pty | -npty] [-t | -توف | -ton] [-tv] [-x
طرحواره VAR1[=VALUE1][,VAR2[=VALUE2]،...]]
توجه داشته باشید: La -c2c و -لامد اکنون گزینه ها منسوخ شده اند. استفاده کنید -ssi بجای. "SSI" را ببینید
بخش، زیر
سریع خلاصه
اگر به سادگی به دنبال نحوه اجرای یک برنامه MPI هستید، احتمالاً می خواهید از آن استفاده کنید
خط فرمان زیر:
% mpirun C my_mpi_application
این یک کپی از را اجرا می کند my_mpi_application در هر CPU در جهان LAM فعلی.
در عوض، "N" را می توان به جای "C" استفاده کرد، که نشان می دهد یک کپی از
my_mpi_application باید روی هر گره (بر خلاف CPU) در LAM فعلی اجرا شود
کائنات. سرانجام:
% mpirun -np 4 my_mpi_application
می توان از آن برای گفتن به LAM برای اجرای صریح چهار کپی استفاده کرد my_mpi_application، برنامه ریزی در
یک مد چرخشی توسط CPU در جهان LAM. برای اطلاعات بیشتر به بقیه این صفحه مراجعه کنید
جزئیات، به ویژه بخش "نامگذاری مکان".
OPTIONS
دو شکل از وجود دارد mpirun دستور -- یکی برای برنامه ها (به عنوان مثال، به سبک SPMD
برنامه ها)، و یکی برای طرحواره های کاربردی (نگاه کنید به طرح برنامه(5)). هر دو شکل از mpirun
به طور پیش فرض از گزینه های زیر استفاده کنید: -nger -w. اینها ممکن است هرکدام توسط خودشان نادیده گرفته شوند
گزینه های مشابه، که در زیر توضیح داده شده است.
علاوه بر این، mpirun نام دایرکتوری که در آن فراخوانی شده است را در محلی ارسال می کند
به هر یک از گره های راه دور گره بزنید و سعی کنید به آن دایرکتوری تغییر دهید. را ببینید
بخش «دایرکتوری کاری فعلی»، در زیر.
-c # مترادف برای -np (به زیر مراجعه کنید)
-D از مکان برنامه اجرایی به عنوان دایرکتوری کاری فعلی برای ایجاد استفاده کنید
فرآیندها فهرست کاری فعلی فرآیندهای ایجاد شده تنظیم خواهد شد
قبل از فراخوانی برنامه کاربر این گزینه متقابلاً منحصر به فرد است
-wd.
-f توصیف کننده های استاندارد فایل ورودی/خروجی را پیکربندی نکنید - از پیش فرض ها استفاده کنید.
-h اطلاعات مفیدی را روی این دستور چاپ کنید.
-ger پروتکل و خطای ارتباطی GER (منابع پاکت تضمین شده) را فعال کنید
گزارش نویسی. دیدن لامپ ها(7) برای توصیف GER. این گزینه متقابل است
منحصر به فرد با -nger.
-nger GER (منابع پاکت تضمین شده) را غیرفعال کنید. این گزینه متقابلاً منحصر به فرد است
با -ger.
-نسیگ سیگنال های گیر LAM را در برنامه کاربر ندارید. این پیش فرض است و
متقابل با -Sigs.
-np # این تعداد کپی از برنامه را روی گره های داده شده اجرا کنید. این گزینه نشان می دهد
که فایل مشخص شده یک برنامه اجرایی است و نه یک برنامه کاربردی.
اگر هیچ گره ای مشخص نشده باشد، تمام گره های LAM برای زمان بندی در نظر گرفته می شوند. LAM خواهد شد
برنامه ها را به صورت دوره ای، "پیچیده شدن" (و
در صورت لزوم، زمانبندی چندین نسخه روی یک گره.
-npty پشتیبانی شبه tty را غیرفعال کنید. مگر اینکه با شبه tty مشکل داشته باشید
پشتیبانی، احتمالاً به این گزینه نیاز ندارید. متقابل انحصاری با -pty.
- منتظر نمانید تا تمام فرآیندها قبل از خروج کامل شوند mpirun. این گزینه است
متقابل منحصر به فرد با -w.
-nx محیط LAM_MPI_*، LAM_IMPI_* یا IMPI_* را بهطور خودکار صادر نکنید
متغیرهای گره های راه دور
-O چند کامپیوتر همگن است. هنگام ارسال پیام، از تبدیل داده استفاده نکنید.
این پرچم اکنون منسوخ شده است.
-پتی پشتیبانی شبه tty را فعال کنید. در میان چیزهای دیگر، این خط بافر را فعال کرد
خروجی (که احتمالا همان چیزی است که شما می خواهید). این پیش فرض است. متقابلا
انحصاری با -npty.
-s گره برنامه را از این گره بارگیری کنید. این گزینه در خط فرمان معتبر نیست
اگر یک طرح کاربردی مشخص شده باشد.
-Sigs سیگنال های LAM catch را در فرآیند کاربر داشته باشید. این گزینه متقابلاً منحصر به فرد است
با -نسیگ.
-ssi کلید ارزش
آرگومان ها را به ماژول های مختلف SSI ارسال کنید. بخش "SSI" را در زیر ببینید.
-t، -تن تولید ردیابی اجرا را برای همه فرآیندها فعال کنید. ردیابی خواهد شد
بدون هیچ اقدام دیگری ادامه دهید این گزینه ها متقابلاً منحصر به فرد هستند
-توف.
-توف تولید ردیابی اجرا را برای همه فرآیندها فعال کنید. تولید ردیابی برای
ترافیک ارسال پیام پس از تماس جمعی فرآیندها آغاز می شود
MPIL_Trace_on(2). توجه داشته باشید که تولید ردیابی برای انواع داده و ارتباط دهنده ها
اراده بدون در نظر گرفتن اینکه تولید ردیابی برای پیام ها فعال باشد یا نه ادامه دهید
نه این گزینه متقابلاً منحصر به فرد است -t و -تن.
-تلویزیون فرآیندها را تحت TotalView Debugger راه اندازی کنید.
-v پرحرف باشید؛ در حین انجام مراحل مهم را گزارش دهید.
-w منتظر بمانید تا همه برنامه ها قبل از آن خارج شوند mpirun خارج می شود.
-wd دیر قبل از اجرای برنامه کاربر، دایرکتوری dir را تغییر دهید. توجه داشته باشید که اگر
la -wd گزینه هم در خط فرمان و هم در یک طرح برنامه ظاهر می شود،
طرح واره بر خط فرمان ارجحیت خواهد داشت. این گزینه متقابل است
منحصر به فرد با -D.
-x قبل از اجرا، متغیرهای محیطی مشخص شده را به گره های راه دور صادر کنید
برنامه. متغیرهای محیط موجود را می توان مشخص کرد (به مثال ها مراجعه کنید
بخش، پایین)، یا نام متغیرهای جدید مشخص شده با مقادیر مربوطه. در
تجزیه کننده برای -x گزینه بسیار پیچیده نیست. حتی نمی فهمد
مقادیر نقل شده به کاربران توصیه می شود که متغیرها را در محیط تنظیم کنند و سپس
استفاده کنید -x برای صادرات (تعریف نکردن) آنها.
-سا نمایش وضعیت خروج از تمام فرآیندهای MPI صرف نظر از اینکه آیا آنها شکست می خورند یا
با موفقیت اجرا شود
-sf فقط در صورت عدم موفقیت یکی از آنها، وضعیت خروج همه فرآیندها را نمایش دهید.
-p prefix_str
پیشوندهای هر خط وضعیت فرآیند نمایش داده شده توسط [-sa] و [-sf] توسط
prefix_str.
جایی که مجموعه ای از شناسه گره ها و/یا CPU که نشان می دهد از کجا شروع کنید برنامهاست. دیدن
bhost(5) برای توصیف گره و شناسه های CPU. mpirun اراده
برنامه ریزی رتبه های مجاور در MPI_COMM_WORLD در همان گره زمانی که شناسه های CPU هستند
استفاده می شود. به عنوان مثال، اگر LAM با تعداد CPU 4 در n0 و CPU بوت شود
تعداد 2 روی n1 و جایی که C است، رتبه های 0 تا 3 روی n0 قرار می گیرند و
رتبه های 4 و 5 در n1 قرار خواهند گرفت.
قوس این آرگومان های زمان اجرا را به هر فرآیند جدید منتقل کنید. اینها همیشه باید باشند
آخرین استدلال به mpirun. اگر این گزینه در خط فرمان معتبر نیست
طرح برنامه مشخص شده است.
شرح
یک فراخوان از mpirun یک برنامه MPI را در حال اجرا تحت LAM راه اندازی می کند. اگر برنامه
به سادگی SPMD است، برنامه را می توان در آن مشخص کرد mpirun خط فرمان. اگر
برنامه MIMD است که شامل چندین برنامه است، یک طرح برنامه کاربردی در یک مورد نیاز است
فایل جداگانه دیدن طرح برنامه(5) برای توضیح نحو طرحواره برنامه، اما
اساسا شامل چندگانه است mpirun خطوط فرمان، کمتر از نام خود فرمان. در
امکان تعیین گزینه های مختلف برای نمونه های مختلف یک برنامه نیز یکی دیگر از موارد است
دلیل استفاده از طرحواره برنامه
موقعیت مکانی: نامگذاری
همانطور که در بالا توضیح داده شد ، mpirun می تواند مکان های دلخواه را در جهان LAM فعلی مشخص کند.
مکان ها را می توان با CPU یا گره مشخص کرد (که در SYNTAX با "where" مشخص شده است.
بخش، بالا). توجه داشته باشید که LAM فرآیندها را به CPU متصل نمی کند -- با تعیین مکان
"توسط CPU" واقعا یک مکانیسم راحت برای SMP ها است که در نهایت به یک
گره خاص
توجه داشته باشید که LAM به طور موثر رتبه های MPI_COMM_WORLD را از چپ به راست در جایی که،
صرف نظر از اینکه کدام نامگذاری استفاده می شود. این می تواند مهم باشد زیرا MPI معمولی
برنامه ها بیشتر تمایل دارند با همسایگان نزدیک خود (یعنی myrank +/- X) ارتباط برقرار کنند
همسایگان دور هنگامی که همسایه ها به یک گره ختم می شوند، می توان از RPI های shmem برای آن استفاده کرد
ارتباط به جای RPI های شبکه، که می تواند منجر به عملکرد سریعتر MPI شود.
تعیین مکان ها توسط گره، یک کپی از یک فایل اجرایی را برای هر گره مشخص شده راه اندازی می کند.
استفاده از کاپیتول "N" به LAM میگوید که از تمام گرههای موجود که لامبوت شدهاند استفاده کند (نگاه کنید به
لمبوت(1)). محدوده گره های خاص را نیز می توان به شکل "nR[,R]*" مشخص کرد، جایی که
R یک شماره گره منفرد یا یک محدوده معتبر از اعداد گره را در محدوده مشخص می کند
[0، num_nodes). مثلا:
mpirun N a.out
یک کپی از فایل اجرایی را اجرا می کند a.out در تمام گره های موجود در جهان LAM.
رتبه MPI_COMM_WORLD 0 روی n0، رتبه 1 روی n1 و غیره خواهد بود.
mpirun n0-3 a.out
یک کپی از فایل اجرایی را اجرا می کند a.out در گره های 0 تا 3. رتبه MPI_COMM_WORLD 0
روی n0، رتبه 1 روی n1 و غیره خواهد بود.
mpirun n0-3,8-11,15 a.out
یک کپی از فایل اجرایی را اجرا می کند a.out در گره های 0 تا 3، 8 تا 11 و 15.
رتبههای MPI_COMM_WORLD به ترتیب زیر مرتب میشوند: (0، n0)، (1، n1)، (2، n2)، (3، n3)،
(4، n8)، (5، n9)، (6، n10)، (7، n11)، (8، n15).
تعیین توسط CPU روش ارجح برای راه اندازی کارهای MPI است. مقصود این است که
طرح بوت مورد استفاده با لمبوت(1) نشان می دهد که چند CPU در هر گره موجود است،
و سپس تک و ساده mpirun دستور را می توان برای راه اندازی در همه آنها استفاده کرد. مانند
در بالا ذکر شد، مشخص کردن CPU ها در واقع فرآیندها را به CPU متصل نمی کند - بلکه فقط یک است
مکانیسم راحتی برای راه اندازی در SMP. در غیر این صورت، نماد by-CPU یکسان است
به عنوان نماد توسط گره، با این تفاوت که "C" و "c" به جای "N" و "n" استفاده می شود.
در مثال زیر فرض کنید که جهان LAM از چهار SMP 4 طرفه تشکیل شده است. بنابراین
c0-3 روی n0، c4-7 روی n1، c8-11 روی n2 و 13-15 روی n3 هستند.
mpirun C a.out
یک کپی از فایل اجرایی را اجرا می کند a.out در تمام CPU های موجود در جهان LAM.
این معمولاً سادهترین روش (و ترجیحی) برای راهاندازی تمام کارهای MPI است (حتی
اگر به یک فرآیند در هر گره حل شود). MPI_COMM_WORLD رتبه های 0-3 در n0 خواهد بود،
رتبه های 4-7 در n1، رتبه های 8-11 در n2 و رتبه های 13-15 در n3 قرار خواهند گرفت.
mpirun c0-3 a.out
یک کپی از فایل اجرایی را اجرا می کند a.out در CPU 0 تا 3. هر چهار رتبه از
MPI_COMM_WORLD در MPI_COMM_WORLD خواهد بود.
mpirun c0-3,8-11,15 a.out
یک کپی از فایل اجرایی را اجرا می کند a.out در CPU های 0 تا 3، 8 تا 11 و 15.
رتبه های MPI_COMM_WORLD 0-3 در n0، 4-7 در n2 و 8 در n3 خواهد بود.
دلیل اینکه نامگذاری توسط CPU بر نامگذاری توسط گره ترجیح داده می شود بهترین است
از طریق مثال نشان داده شده است. سعی کنید اولین نمونه CPU را اجرا کنید (با همان
نگاشت MPI_COMM_WORLD) با نامگذاری گره - یک کپی از را اجرا کنید a.out برای هر
CPU موجود، و تعداد همسایگان محلی را به حداکثر برسانید تا به طور بالقوه MPI را به حداکثر برسانید
کارایی. یکی از راه حل ها استفاده از دستور زیر است:
mpirun n0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3 a.out
این با این نسخهها کار، اما قطعا تایپ کردن آن دشوار است. معمولاً استفاده از پردازنده جانبی آسانتر است
نشانه گذاری. ممکن است تصور شود که موارد زیر معادل هستند:
mpirun N -np 16 a.out
این هست نه معادل است زیرا نگاشت رتبه MPI_COMM_WORLD توسط گره اختصاص داده می شود
به جای CPU بنابراین رتبه 0 روی n0، رتبه 1 روی n1 و غیره خواهد بود. توجه داشته باشید که
با این حال به دنبال is معادل، زیرا LAM فقدان a را به صورت "C" تفسیر می کند:
mpirun -np 16 a.out
با این حال، یک "C" می تواند راحت تر باشد، به خصوص برای اسکریپت های دسته ای
زیرا تعداد دقیق فرآیندها ممکن است بین ارسال های صف متفاوت باشد. از زمان دسته
سیستم تعداد نهایی CPUهای موجود را با داشتن یک اسکریپت عمومی تعیین می کند
به طور موثر می گوید "روی همه چیزهایی که به من دادی اجرا کن" ممکن است منجر به قابل حمل / استفاده مجدد بیشتر شود
اسکریپت.
در نهایت، لازم به ذکر است که تعیین چندگانه که در آن بندها کاملاً هستند
قابل قبول به این ترتیب، اختلاط سینتکس by-node و by-CPU نیز معتبر است، albiet
معمولا مفید نیست مثلا:
mpirun CN a.out
با این حال، در برخی موارد، تعیین چند بند می تواند مفید باشد. الف را در نظر بگیرید
برنامه موازی که در آن MPI_COMM_WORLD رتبه 0 یک "مدیر" خواهد بود و بنابراین مصرف می کند
چرخه های بسیار کمی CPU زیرا معمولاً منتظر بازگشت فرآیندهای "کارگر" است
نتایج. از این رو، احتمالاً مطلوب است که یک فرآیند "کارگر" روی همه موجودات اجرا شود
CPU ها، و یک فرآیند اضافی را اجرا کنید که "مدیر" خواهد بود:
mpirun c0 C manager-worker-program
کاربرد طرح or قابل اجرا برنامه؟
برای تشخیص دو شکل مختلف، mpirun در خط فرمان به دنبال کجا یا the است
-c گزینه. اگر هیچکدام مشخص نشده باشد، فایلی که در خط فرمان نامگذاری شده است فرض می شود
یک طرحواره کاربردی باشد اگر یکی یا هر دو مشخص شده باشد، فایل فرض می شود
تا یک برنامه اجرایی باشد. اگر کجا و -c هر دو مشخص می شوند، سپس کپی هایی از
برنامه بر روی گره ها/CPU های مشخص شده طبق یک زمان بندی LAM داخلی شروع می شود
خط مشی. مشخص کردن تنها یک گره به طور موثر LAM را مجبور می کند تا تمام کپی های برنامه را اجرا کند
در یک جا. اگر -c داده شده است، اما نه در کجا، پس تمام CPU های موجود در تمام گره های LAM هستند
استفاده شده. اگر کجا داده می شود، اما نه -c، سپس یک کپی از برنامه روی هر گره اجرا می شود.
برنامه انتقال
بهطور پیشفرض، LAM برنامههای اجرایی را در گره هدف که در آن یک خاص جستجو میکند، جستجو میکند
نمونه اجرا خواهد شد. اگر سیستم فایل به اشتراک گذاشته نشده باشد، گره های هدف به اشتراک گذاشته می شوند
همگن، و برنامه اغلب دوباره کامپایل می شود، داشتن LAM می تواند راحت باشد
برنامه را از یک گره منبع (معمولاً گره محلی) به هر گره هدف منتقل کنید. را
-s گزینه این رفتار را مشخص می کند و گره منبع واحد را مشخص می کند.
یافتن فایل ها
LAM با جستجوی دایرکتوری ها در PATH کاربر به دنبال یک برنامه اجرایی می گردد
متغیر محیطی همانطور که روی گره(های) منبع تعریف شده است. این رفتار با
ورود به گره منبع و اجرای برنامه از پوسته. در گره های راه دور،
"." مسیر دایرکتوری خانه است.
LAM به دنبال یک طرح کاربردی در سه فهرست می گردد: فهرست محلی، مقدار
از متغیر محیطی LAMAPPLDIR، و laminstalldir/boot، که در آن "laminstalldir" است
دایرکتوری که LAM/MPI در آن نصب شده است.
استاندارد I / O
LAM ورودی استاندارد یونیکس را به /dev/null در تمام گره های راه دور هدایت می کند. در گره محلی که
استناد کرد mpirun، ورودی استاندارد از آن به ارث می رسد mpirun. پیش فرض همان چیزی است که قبلا بود
گزینه -w برای جلوگیری از دسترسی متناقض به ترمینال.
LAM خروجی و خطای استاندارد یونیکس را به دیمون LAM در تمام گره های راه دور هدایت می کند. LAM
تمام خروجی/خطاهای گرفته شده را به گره ای که فراخوانی کرده است ارسال می کند mpirun و آن را بر روی
خروجی استاندارد/خطای mpirun. فرآیندهای محلی خروجی/خطای استاندارد را به ارث می برند
mpirun و مستقیماً به آن منتقل کنید.
بنابراین میتوان I/O استاندارد را برای برنامههای LAM با استفاده از حالت معمولی تغییر مسیر داد
رویه تغییر مسیر پوسته روشن است mpirun.
% mpirun C my_app my_input my_output
توجه داشته باشید که در این مثال فقط گره محلی (یعنی گره ای که mpirun در آن فراخوانی شده است
from) جریان را از my_input در stdin دریافت خواهد کرد. stdin در تمام گره های دیگر
به /dev/null گره خورده است. با این حال، stdout از همه گرهها در گره جمعآوری میشود
فایل my_output.
La -f گزینه از تمام تنظیمات مورد نیاز برای پشتیبانی از I/O استاندارد که در بالا توضیح داده شد اجتناب می کند.
فرآیندهای راه دور به طور کامل به /dev/null هدایت می شوند و فرآیندهای محلی فایل را به ارث می برند
توصیف کننده ها از لمبوت(1).
شبه تیتی پشتیبانی
La -پتی گزینه پشتیبانی شبه tty برای خروجی فرآیند را فعال کرده است (همچنین توسط
پیش فرض). این اجازه می دهد، در میان چیزهای دیگر، خروجی خط بافر از گره های راه دور
(که احتمالاً همان چیزی است که شما می خواهید). این گزینه را می توان با غیر فعال کرد -npty سوئیچ.
روند ختم / سیگنال اداره
در طول اجرای یک برنامه MPI، اگر رتبهای بهطور غیرعادی از بین برود (یا قبلاً خارج میشوید
استناد MPI_FINALIZEیا مرگ در نتیجه یک سیگنال) mpirun یک خطا چاپ خواهد کرد
پیام دهید و بقیه برنامه MPI را بکشید.
به طور پیشفرض، LAM/MPI تنها یک کنترلکننده سیگنال را برای یک سیگنال در برنامههای کاربر نصب میکند
(SIGUSR2 به طور پیشفرض، اما وقتی LAM پیکربندی و ساخته میشود، میتوان آن را لغو کرد).
بنابراین، برای کاربران ایمن است که کنترل کننده سیگنال خود را در برنامه های LAM/MPI نصب کنند
(LAM با بررسی وضعیت بازگشت فرآیند ارائه شده توسط سازمان متوجه موارد مرگ به وسیله سیگنال می شود
سیستم عامل).
کنترلکنندههای سیگنال کاربر احتمالاً باید از تلاش برای پاکسازی وضعیت MPI اجتناب کنند - LAM هیچکدام از این موارد نیست
thread-safe و async-signal-safe. به عنوان مثال، اگر یک خطای seg در MPI_SEND
(شاید به این دلیل که یک بافر بد وارد شده است) و یک کنترل کننده سیگنال کاربر فراخوانی می شود، اگر این
کاربر کنترل کننده تلاش می کند تا فراخوانی کند MPI_FINALIZE، از LAM/MPI ممکن است اتفاقات بدی بیفتد
در حال حاضر "در" MPI زمانی که خطا رخ داده است. از آنجا که mpirun متوجه خواهد شد که روند از بین رفته است
به دلیل سیگنال، احتمالاً لازم نیست (و ایمن ترین) برای کاربر فقط تمیز کردن
حالت غیر MPI
اگر -Sigs گزینه با استفاده می شود mpirun، LAM/MPI چندین کنترل کننده سیگنال را نصب می کند
به صورت محلی در هر رتبه برای گرفتن سیگنال ها، چاپ پیام های خطا و کشتن بقیه
برنامه MPI. این رفتار تا حدودی زائد است زیرا اکنون همه اینها توسط آن اداره می شود
mpirun، اما برای سازگاری با عقب مانده است.
روند خروج اساسنامه
La -سا, -sfو -p می توان از پارامترها برای نمایش وضعیت های موجود استفاده کرد
فرآیندهای MPI فردی با پایان یافتن آنها. -سا وضعیت های خروج را مجبور به نمایش می کند
برای تمام فرآیندها؛ -sf تنها در صورتی وضعیت های موجود را نمایش می دهد که حداقل یک فرآیند خاتمه یابد
یا با یک سیگنال یا وضعیت خروج غیر صفر (توجه داشته باشید که قبل از فراخوانی خارج شوید
MPI_FINALIZE باعث وضعیت خروج غیر صفر می شود).
وضعیت هر فرآیند، یکی در هر خط، در قالب زیر چاپ می شود:
prefix_string گره pid killed status
If کشته پس 1 است وضعیت شماره سیگنال است. اگر کشته پس 0 است وضعیت خروجی است
وضعیت فرآیند
به طور پیش فرض پیشوند_رشته "مپیرون:" است، اما -p می توان از این گزینه استفاده کرد
رشته
جاری کارگر فهرست راهنما
رفتار پیش فرض mpirun نسبت به دایرکتوری که پردازش می کند تغییر کرده است
در آغاز خواهد شد.
La -wd گزینه mpirun به کاربر این امکان را می دهد که قبل از خود به یک دایرکتوری دلخواه تغییر کند
برنامه فراخوانی می شود. همچنین می توان از آن در فایل های طرحواره برنامه برای مشخص کردن کار استفاده کرد
دایرکتوری ها در گره های خاص و/یا برای برنامه های خاص.
اگر -wd گزینه هم در یک فایل schema و هم در خط فرمان، فایل schema ظاهر می شود
دایرکتوری مقدار خط فرمان را لغو می کند.
La -D گزینه دایرکتوری کاری فعلی را به دایرکتوری تغییر می دهد
قابل اجرا ساکن است. نمی توان از آن در فایل های طرحواره برنامه استفاده کرد. -wd متقابل است
منحصر به فرد با -D.
اگر هیچ کدام -wd نه -D مشخص شده است، گره محلی نام دایرکتوری را به آنجا ارسال می کند
mpirun از هر یک از گره های راه دور فراخوانی شد. سپس گره های راه دور سعی می کنند
به آن دایرکتوری تغییر دهید اگر آنها شکست بخورند (به عنوان مثال، اگر دایرکتوری در آن وجود نداشته باشد
گره)، از دایرکتوری اصلی کاربر شروع می شود.
همه تغییر دایرکتوری قبل از فراخوانی برنامه کاربر اتفاق می افتد. صبر نمی کند تا
MPI_INIT نامیده میشود.
روند محیط
فرآیندها در برنامه MPI محیط خود را از شبح LAM به ارث می برند
گره ای که روی آن اجرا می شوند. محیط یک شبح LAM با بوت شدن ثابت می شود
LAM با لمبوت(1) و معمولاً از پوسته کاربر به ارث می رسد. در مبدا
گره، این پوسته ای خواهد بود که از آن لمبوت(1) مورد استناد قرار گرفت. در گره های راه دور، دقیقا
محیط توسط ماژول بوت SSI استفاده شده توسط تعیین می شود لمبوت(1). ماژول بوت rsh،
به عنوان مثال، از rsh/ssh برای راه اندازی شبح LAM در گره های راه دور استفاده می کند، و معمولا
قبل از راه اندازی شبح LAM، یک یا چند فایل تنظیم پوسته کاربر را اجرا می کند.
هنگام اجرای برنامههای مرتبط با پیوند پویا که به محیط LD_LIBRARY_PATH نیاز دارند
متغیری که قرار است تنظیم شود، باید دقت شود که هنگام بوت کردن به درستی تنظیم شود
LAM.
صادر شده است محیط متغیر
همه متغیرهای محیطی که به شکل LAM_MPI_*، LAM_IMPI_* یا IMPI_* نامگذاری شده اند
به طور خودکار به فرآیندهای جدید در گره های محلی و راه دور صادر می شود. این صادرات
ممکن است با مهار شود -nx گزینه.
علاوه بر این، -x گزینه ای برای mpirun می توان برای صادرات متغیرهای محیطی خاص استفاده کرد
به فرآیندهای جدید در حالی که نحو از -x گزینه اجازه می دهد تا تعریف جدید
متغیرها، توجه داشته باشید که تجزیه کننده این گزینه در حال حاضر بسیار پیچیده نیست - آن
حتی مقادیر نقل شده را درک نمی کند. به کاربران توصیه می شود که متغیرها را در
محیط و استفاده -x برای صادرات آنها؛ نه اینکه آنها را تعریف کنیم.
پی گیری نسل
دو سوئیچ تولید ردیابی از فرآیندهای در حال اجرا تحت LAM را کنترل می کنند و هر دو باید در آن باشند
موقعیت روشن برای آثاری که واقعاً تولید می شوند. سوئیچ اول توسط کنترل می شود
mpirun و سوئیچ دوم در ابتدا توسط تنظیم می شود mpirun اما می توان در زمان اجرا با
MPIL_Trace_on(2) و MPIL_Trace_off(2) -t (-تن معادل است) و -توف همه گزینه ها
سوئیچ اول را روشن کنید در غیر این صورت سوئیچ اول خاموش است و به آن زنگ می زند MPIL_Trace_on(2)
در برنامه کاربردی بی اثر هستند. در -t گزینه دوم را نیز روشن می کند
تعویض. -توف گزینه سوئیچ دوم را خاموش می کند. دیدن MPIL_Trace_on(2) و
لامتریس(1) برای جزئیات بیشتر.
لامپ ها داده ها تبدیل
کتابخانه MPI LAM پیام های MPI را از نمایش محلی به نمایندگی LAM تبدیل می کند
پس از ارسال آنها و سپس به نمایندگی محلی پس از دریافت آنها. اگر مورد
یک LAM متشکل از یک شبکه همگن از ماشین ها که در آن نمایندگی محلی
با نمایش LAM متفاوت است، این می تواند منجر به تبدیل های غیر ضروری شود.
La -O سوئیچ برای نشان دادن به LAM ضروری بود
همگن یا نه LAM اکنون به طور خودکار تعیین می کند که آیا یک کار MPI داده شده است یا خیر
همگن یا نه در -O پرچم بی سر و صدا برای سازگاری با عقب پذیرفته می شود،
اما نادیده گرفته می شود.
SSI (سیستم خدمات ما رابط)
La -ssi سوئیچ اجازه می دهد تا پارامترها را به ماژول های مختلف SSI منتقل کنید. SSI LAM
ماژول ها به تفصیل در لامسی(7). ماژول های SSI تاثیر مستقیمی بر MPI دارند
برنامهها زیرا اجازه میدهند پارامترهای قابل تنظیم در زمان اجرا (مانند کدام RPI) تنظیم شوند
درایور دستگاه ارتباطی برای استفاده، چه پارامترهایی برای ارسال به آن RPI و غیره).
La -ssi سوییچ دو آرگومان می گیرد: کلید و ارزش. کلید آرگومان به طور کلی مشخص می کند
کدام ماژول SSI مقدار را دریافت خواهد کرد. به عنوان مثال کلید "rpi" برای انتخاب استفاده می شود
کدام RPI برای انتقال پیام های MPI استفاده می شود. در ارزش آرگومان مقداری است که
تصویب شده است. مثلا:
mpirun -ssi rpi lamd N foo
به LAM میگوید از RPI "lamd" استفاده کند و یک کپی از "foo" را روی هر گره اجرا کند.
mpirun -ssi rpi tcp N foo
به LAM می گوید که از RPI "tcp" استفاده کند.
mpirun -ssi rpi sysv N foo
به LAM می گوید که از RPI "sysv" استفاده کند.
و غیره. ماژول های RPI SSI LAM در شرح داده شده اند lamssi_rpi(7).
La -ssi سوئیچ را می توان چندین بار برای تعیین موارد مختلف استفاده کرد کلید و / یا ارزش
استدلال ها اگر همینطور کلید بیش از یک بار مشخص شده است ارزشs با
یک کاما (") که آنها را از هم جدا می کند.
توجه داشته باشید که -ssi سوییچ به سادگی یک میانبر برای تنظیم متغیرهای محیطی است. در
همین اثر ممکن است با تنظیم متغیرهای محیطی مربوطه از قبل انجام شود
در حال اجرا mpirun. شکل متغیرهای محیطی که LAM تنظیم می کند عبارتند از:
LAM_MPI_SSI_key=مقدار.
توجه داشته باشید که -ssi سوئیچ هر متغیر محیطی که قبلاً تنظیم شده است را لغو می کند. همچنین توجه داشته باشید
آن ناشناخته کلید آرگومان ها همچنان به عنوان متغیر محیطی تنظیم می شوند -- آنها بررسی نمی شوند
(توسط mpirun) برای صحت. غیر قانونی یا نادرست ارزش استدلال ممکن است باشد یا نباشد
گزارش شده -- بستگی به ماژول SSI خاص دارد.
La -ssi سوئیچ قدیمی را منسوخ می کند -c2c و -لامد سوئیچ ها این سوئیچ ها قبلا بودند
مرتبط است زیرا LAM می تواند تنها دو RPI در یک زمان در دسترس داشته باشد: lamd RPI و یکی
از RPI های C2C. این دیگر درست نیست - همه RPIها اکنون در دسترس هستند و قابل انتخاب هستند
زمان اجرا انتخاب lamd RPI در مثال های بالا نشان داده شده است. در -c2c سوئیچ ندارد
ترجمه مستقیم از آنجایی که "C2C" به همه RPI های دیگر اشاره می کرد که لامد نبودند
RPI. همینطور، -ssi rpi ارزش باید برای انتخاب RPI خاص مورد نظر (خواه آن
"لامد" یا یکی از RPIهای دیگر است).
تضمین پاکت منابع
بهطور پیشفرض، LAM حداقل مقدار بافر پاکت پیام را برای هر MPI تضمین میکند
فرآیند جفت می شود و مانع می شود یا یک خطا را به فرآیندی که سعی در سرریز شدن دارد گزارش می کند
این منبع سیستم این ویژگی استحکام و اشکال زدایی در یک ماشین پیاده سازی شده است
روش خاص زمانی که از ارتباط مستقیم استفاده می شود. برای ارتباط عادی LAM از طریق
شبح LAM، یک پروتکل استفاده می شود. در -nger گزینه GER و اقدامات انجام شده را غیرفعال می کند
آن را حمایت کن. حداقل GER توسط مدیر سیستم در زمانی که LAM است پیکربندی می شود
نصب شده است. دیدن لامپ ها(7) برای جزئیات بیشتر.
مثال ها
حتماً نمونههای موجود در بخش «نامگذاری مکان» را نیز در بالا ببینید.
mpirun N prog1
بارگذاری و اجرای prog1 در تمام گره ها. $PATH کاربر را برای فایل اجرایی جستجو کنید
روی هر گره
mpirun -c 8 prog1
8 نسخه از prog1 را در هر جایی که LAM می خواهد اجرا کند اجرا کنید.
mpirun n8-10 -v -nw -s n3 prog1 -q
بارگذاری و اجرای prog1 در گره های 8، 9 و 10. جستجوی prog1 در گره 3 و انتقال
آن را به سه گره هدف. همانطور که هر فرآیند ایجاد می شود گزارش دهید. "-q" را به عنوان یک علامت بزنید
خط فرمان به هر فرآیند جدید. منتظر تکمیل فرآیندها نباشید
خارج شدن mpirun.
mpirun -v myapp
طرحواره برنامه، myapp را تجزیه کنید و تمام فرآیندهای مشخص شده در آن را شروع کنید. گزارش
همانطور که هر فرآیند ایجاد می شود.
mpirun -npty -wd /work/output -x DISPLAY C my_application
یک کپی از "my_application" را روی هر CPU موجود شروع کنید. تعداد موجود
CPU در هر گره قبلاً در هنگام بوت شدن LAM مشخص شده بود لمبوت(1). مانند
در بالا ذکر شد، mpirun رتبه های مجاور را در برنامه ریزی خواهد کرد MPI_COMM_WORLD در همان گره
هرجا که بشه. به عنوان مثال، اگر n0 دارای تعداد CPU 8 باشد و n1 دارای تعداد CPU 4 باشد،
mpirun قرار خواهد داد MPI_COMM_WORLD رتبه های 0 تا 7 در n0 و 8 تا 11 در n1.
این تمایل به به حداکثر رساندن ارتباطات روی گره برای بسیاری از برنامه های موازی دارد. هنگام استفاده
در ارتباط با شبکه چند پروتکلی / RPIهای حافظه مشترک در LAM (نگاه کنید به
RELEASE_NOTES و نصب فایلها با توزیع LAM)، ارتباط کلی
عملکرد می تواند بسیار خوب باشد. همچنین پشتیبانی pseudo-tty را غیرفعال کنید، دایرکتوری را به تغییر دهید
/work/output، و متغیر DISPLAY را به فرآیندهای جدید صادر کنید (شاید
my_application یک برنامه X مانند xv را برای نمایش خروجی فراخوانی می کند.
عیب یابی
mpirun: خطای فرمت Exec
این معمولاً به این معنی است که یا تعدادی از فرآیندها یا یک عبارت Where مناسب
مشخص نشده است، که نشان می دهد LAM نمی داند چند فرآیند اجرا شود. دیدن
بخش های EXAMPLES و "Location Nomenclature" در بالا، برای مثال هایی در مورد نحوه انجام
مشخص کنید که چند فرآیند اجرا شود و/یا کجا اجرا شود. با این حال، همچنین می تواند
به این معنی که یک کاراکتر غیر ASCII در طرح برنامه شناسایی شد. این هست
معمولا یک خطای استفاده از خط فرمان که در آن mpirun در انتظار یک طرح کاربردی است و
یک فایل اجرایی داده شد
mpirun: خطای نحوی در طرحواره برنامه، خط XXX
طرحواره برنامه را نمی توان به دلیل یک خطای استفاده یا نحو در آن تجزیه کرد
خط داده شده در فایل
filename: چنین فایل یا دایرکتوری وجود ندارد
این خطا در دو حالت ممکن است رخ دهد. یا فایل نامگذاری شده قابل یافتن نیست یا وجود دارد
یافت شد اما کاربر مجوزهای کافی برای اجرای برنامه را ندارد
طرح برنامه را بخوانید.
برگشت ارزش
mpirun اگر همه رتبه ها با شروع شده باشند، 0 را برمی گرداند mpirun پس از تماس با MPI_FINALIZE خارج شوید. یک غیر
اگر یک خطای داخلی در mpirun یا یک یا چند رتبه رخ داده باشد، مقدار صفر برگردانده می شود
قبل از تماس با MPI_FINALIZE خارج شد. اگر یک خطای داخلی در mpirun رخ دهد،
کد خطای مربوطه برگردانده می شود. در صورتی که یک یا چند رتبه از قبل خارج شوند
با فراخوانی MPI_FINALIZE، مقدار بازگشتی رتبه فرآیند که mpirun اول
اخطارها قبل از تماس با MPI_FINALIZE برگردانده خواهند شد. توجه داشته باشید که به طور کلی این
اولین رتبه ای خواهد بود که مرده است اما تضمین نمی شود.
با این حال، توجه داشته باشید که اگر - سوئیچ استفاده می شود، مقدار بازگشتی از mpirun استفاده نمی شود
وضعیت خروج از رتبه ها را نشان می دهد.
با استفاده از خدمات onworks.net به صورت آنلاین از mpirun.lam استفاده کنید