إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تتيح لك المهام متعددة المثيلات تشغيل مهمة Azure Batch على عقد حوسبة متعددة في وقت واحد. تتيح هذه المهام سيناريوهات حوسبة عالية الأداء مثل تطبيقات واجهة تمرير الرسائل (MPI) دفعة واحدة. في هذا المقال، تتعلم كيفية تنفيذ مهام متعددة الحالات باستخدام Azure. Compute.Batch.
إشعار
بينما تركز الأمثلة في هذا المقال على Azure. عقدات Compute.Batch وMS-MPI وWindows compute (وهي مفاهيم المهام متعددة المثيلات التي نوقشت هنا) تنطبق على منصات وتقنيات أخرى (مثل Python وIntel MPI على عقد لينكس، على سبيل المثال).
نظرة عامة على مهمة متعددة المثيلات
في الدُفعة، يتم تنفيذ كل مهمة عادةً على عقدة حساب واحدة - فأنت ترسل مهامًا متعددة إلى مهمة، وتقوم خدمة الدُفعة بجدولة كل مهمة للتنفيذ على عقدة. ومع ذلك، عن طريق تكوين إعدادات متعددة مثيلاتمهمة، يمكنك إخبار الدُفعة بإنشاء مهمة أساسية واحدة وعدة مهام فرعية يتم تنفيذها بعد ذلك على عقد متعددة.
عند إرسال مهمة ذات إعدادات متعددة المثيلات إلى مهمة، تنفذ الدُفعة عدة خطوات فريدة للمهام متعددة المثيلات:
- تنشئ خدمة الدفعة مجموعة أساسية واحدة وعدة المهام الفرعية استنادا إلى إعدادات المثيلات المتعددة. يطابق العدد الإجمالي للمهام (الأساسي بالإضافة إلى كافة المهام الفرعية) عدد المثيلات (حساب العقد) التي تحددها في إعدادات المثيلات المتعددة.
- تعيين الدفعة إحدى العقد المحسوبة كعقد رئيسيةوجدولة المهمة الأساسية لتنفيذها على الرئيسي. جدولة المهام الفرعية لتنفيذ على باقي العقد حساب المخصصة للمهمة متعدد المثيلات، تسك فرعي واحد لكل عقدة.
- تقوم المهام الأساسية وجميع المهام الفرعية بتنزيل أي ملفات موارد شائعة تحددها في إعدادات المثيلات المتعددة.
- بعد تحميل ملفات الموارد الشائعة، تقوم المهام الأساسية و الفرعية بتنفيذ أمر التنسيق الذي تحدده في إعدادات المثيلات المتعددة. يتم استخدام الأمر التنسيق عادة لإعداد العقد لتنفيذ المهمة. يمكن أن يتضمن ذلك بدء تشغيل خدمات الخلفية (مثل Microsoft MPI)
smpd.exeوالتحقق من أن العقد جاهزة لمعالجة الرسائل بين العقد. - المهمة الأساسية بتنفيذ الأمر التطبيق على العقدة الرئيسية بعد إتمام الأمر التنسيق بنجاح بواسطة الأساسي و كافة المهام الفرعية. الأمر التطبيق هو سطر الأوامر للمهمة متعددة المثيلات نفسها، ويتم تنفيذه فقط بواسطة المهمة الأساسية. في حل يستند إلى MS-MPI هذا هو المكان الذي تقوم فيه بتنفيذ التطبيق الذي تم تمكين MPI باستخدام
mpiexec.exe.
إشعار
على الرغم من أنها مميزة وظيفيا، إلا أن "مهمة التكرار الوظيفي" ليست نوعا فريدا من المهام مثل BatchStartTask أو BatchJobPreparationTask. مهمة تعدد النسخات هي ببساطة مهمة دفعية قياسية (BatchTask في Azure. Compute.Batch) التي تم تكوين إعدادات تعدد المثيلات الخاصة بها. في هذه المقالة، نشير إلى هذا كمهمة متعددة المثيلات.
متطلبات المهام متعددة المثيلات
تتطلب المهام متعددة المثيلات تجمعا مع تمكين الاتصال بين العقدة، ومع تعطيل تنفيذ المهام المتزامنة. لتعطيل تنفيذ المهام المتزامن، قم بتعيين خاصية BatchAccountPoolData.TaskSlotsPerNode على 1.
إشعار
تحد المجموعة من حجم تجمع تم تمكين الاتصال بين العقد.
يوضح هذا المقتطف الكودي كيفية إنشاء مجموعة للمهام متعددة المثيلات باستخدام Azure. مكتبة ResourceManager.Batch (ResourceManager.Batch Library).
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
ResourceIdentifier batchAccountResourceId =
BatchAccountResource.CreateResourceIdentifier("subscriptionId", "resourceGroupName", "accountName");
BatchAccountResource batchAccount = armClient.GetBatchAccountResource(batchAccountResourceId);
BatchAccountPoolCollection poolCollection = batchAccount.GetBatchAccountPools();
BatchAccountPoolData poolData = new BatchAccountPoolData()
{
VmSize = "standard_d1_v2",
DeploymentConfiguration = new BatchDeploymentConfiguration()
{
VmConfiguration = new BatchVmConfiguration(
imageReference: new BatchImageReference()
{
Publisher = "MicrosoftWindowsServer",
Offer = "WindowsServer",
Sku = "2019-datacenter-core",
Version = "latest"
},
nodeAgentSkuId: "batch.node.windows amd64")
},
ScaleSettings = new BatchAccountPoolScaleSettings()
{
FixedScale = new BatchAccountFixedScaleSettings() { TargetDedicatedNodes = 3 }
},
// Multi-instance tasks require inter-node communication, and those nodes
// must run only one task at a time.
InterNodeCommunication = InterNodeCommunicationState.Enabled,
TaskSlotsPerNode = 1
};
إشعار
إذا حاولت تشغيل مهمة متعددة المثيلات في تجمع مع تعطيل الاتصال الداخلي أو مع قيمة taskSlotsPerNode أكبر من 1، المهمة غير المجدولة أبدا--يبقى إلى أجل غير مسمى في الحالة "نشط".
لن تسمح التجمعات التي تم تمكين InterComputeNodeCommunication تلقائيا بإلغاء توفير العقدة.
استخدام StartTask لتثبيت MPI
لتشغيل تطبيقات MPI مع مهمة متعددة المثيلات، تحتاج أولا إلى تثبيت تطبيق MPI (MS-MPI أو Intel MPI، على سبيل المثال) على العقد حساب في التجمع. هذا وقت مناسب لاستخدام BatchAccountPoolStartTask، الذي ينفذ كلما انضمت عقدة إلى تجمع أو تم إعادة تشغيلها. تضيف هذه القطعة مهمة بدء إلى تعريف المجموعة تحدد حزمة إعداد MS-MPI كملف مورد. يتم تنفيذ سطر الأوامر الخاص بالمهمة بدء بعد تحميل ملف المورد إلى العقدة. في هذه الحالة، ينفذ سطر الأوامر تثبيت غير مراقب من MS-MPI.
// Add a start task to the pool which we use for installing MS-MPI on
// the nodes as they join the pool (or when they are restarted).
poolData.StartTask = new BatchAccountPoolStartTask()
{
CommandLine = "cmd /c MSMpiSetup.exe -unattend -force",
UserIdentity = new BatchUserIdentity()
{
AutoUser = new BatchAutoUserSpecification() { ElevationLevel = BatchUserAccountElevationLevel.Admin }
},
WaitForSuccess = true,
};
poolData.StartTask.ResourceFiles.Add(new BatchResourceFile()
{
HttpUri = new Uri("https://mystorageaccount.blob.core.windows.net/mycontainer/MSMpiSetup.exe"),
FilePath = "MSMpiSetup.exe"
});
// Create the fully configured pool.
ArmOperation<BatchAccountPoolResource> pool = await poolCollection.CreateOrUpdateAsync(
WaitUntil.Completed, "MultiInstanceSamplePool", poolData);
الوصول المباشر إلى الذاكرة.
عند اختيار حجم RDMA قادرة مثل A9 للعقد حساب في تجمع الدفعات الخاص بك، يمكن تطبيق MPI الاستفادة من Azure عالية الأداء، منخفضة الكمون الوصول المباشر إلى الذاكرة (RDMA) شبكة الاتصال.
ابحث عن الأحجام المحددة ك "RDMA قادرة" في أحجام الأجهزة الظاهرية في Azure (لتجمعات تكوين VirtualMachine) أو أحجام الخدمات السحابية (لتجمعات CloudServicesConfiguration).
إشعار
للاستفادة من RDMA على لينكس حساب العقد، يجب عليك استخدام إنتل MPI على العقد.
أنشئ مهمة متعددة المثيلات باستخدام Azure. Compute.Batch
الآن بعد أن قمنا بتغطية متطلبات التجمع وتركيب حزمة MPI، دعونا إنشاء مهمة متعددة المثيلات. في هذا المقتطف، ننشئ BatchTaskCreateOptions قياسي، ثم نضبط خاصية MultiInstanceSettings الخاصة به. كما ذكر سابقا، المهمة متعددة المثيلات ليست نوع مهمة مميزة، ولكن مهمة دفعة قياسية تم تكوينها مع إعدادات متعددة المثيلات.
// Create the multi-instance task. Its command line is the "application command"
// and will be executed *only* by the primary, and only after the primary and
// subtasks execute the CoordinationCommandLine.
BatchTaskCreateOptions myMultiInstanceTask = new BatchTaskCreateOptions(
id: "mymultiinstancetask",
commandLine: "cmd /c mpiexec.exe -wdir %AZ_BATCH_TASK_SHARED_DIR% MyMPIApplication.exe")
{
// Configure the task's MultiInstanceSettings. The CoordinationCommandLine will be executed by
// the primary and all subtasks.
MultiInstanceSettings = new MultiInstanceSettings(
@"cmd /c start cmd /c ""%MSMPI_BIN%\smpd.exe"" -d")
{
NumberOfInstances = numberOfNodes
}
};
myMultiInstanceTask.MultiInstanceSettings.CommonResourceFiles.Add(new ResourceFile()
{
HttpUri = new Uri("https://mystorageaccount.blob.core.windows.net/mycontainer/MyMPIApplication.exe"),
FilePath = "MyMPIApplication.exe"
});
// Submit the task to the job. Batch will take care of splitting it into subtasks and
// scheduling them for execution on the nodes.
await myBatchClient.CreateTaskAsync("mybatchjob", myMultiInstanceTask);
المهمة الأساسية والمهام الفرعية
عند إنشاء إعدادات مثيل متعددة لمهمة، يمكنك تحديد عدد العقد حساب لتنفيذ المهمة. عند إرسال المهمة إلى مهمة، تنشئ خدمة الدفعة مهمة أساسية واحدة والمهام الفرعية الكافية التي تتطابق مع عدد العقد التي حددتها.
يتم تعيين هذه المهام معرف عدد صحيح في نطاق 0 إلى numberOfInstances - 1. المهمة مع معرف 0 هي المهمة الأساسية، وجميع معرفات أخرى هي المهام الفرعية. على سبيل المثال، إذا قمت بإنشاء الإعدادات متعددة المثيلات التالية لمهمة، سيكون للمهمة الأساسية معرف 0، وسيكون لدى المهام الفرعية معرفات من 1 إلى 9.
int numberOfNodes = 10;
myMultiInstanceTask.MultiInstanceSettings = new MultiInstanceSettings("coord-cmd")
{
NumberOfInstances = numberOfNodes
};
العقدة الرئيسية.
عند إرسال مهمة متعددة المثيلات، يعين خدمة الدفعة إحدى العقد حساب العقدة "الرئيسي" وجداول المهمة الأساسية لتنفيذ على العقدة الرئيسية. تمت جدولة المهام الفرعية للتنفيذ على باقي العقد المخصصة للمهمة متعددة المثيلات.
قيادة التنسيق
يتم تنفيذ الأمر التنسيق بواسطة كل من المهام الأساسية و الفرعية.
استدعاء الأمر التنسيق هو حظر--لا ينفذ الدفعة الأمر التطبيق حتى يتم إرجاع الأمر التنسيق بنجاح لكافة المهام الفرعية. ولذلك يجب أن يبدأ الأمر التنسيق أية خدمات خلفية مطلوبة، والتحقق من أنها جاهزة للاستخدام، ثم إنهاء. على سبيل المثال، هذا الأمر التنسيق لحل باستخدام MS-MPI الإصدار 7 يبدأ تشغيل خدمة SMPD على العقدة، ثم إنهاء:
cmd /c start cmd /c ""%MSMPI_BIN%\smpd.exe"" -d
لاحظ استخدام start في هذا الأمر التنسيق. وهذا مطلوب لأن smpd.exe التطبيق لا يعود مباشرة بعد التنفيذ. بدون استخدام الأمر بدء تشغيل، لن يعود أمر التنسيق هذا، وبالتالي يمنع الأمر التطبيق من التشغيل.
أمر التطبيق
بمجرد انتهاء المهمة الأساسية وكافة المهام الفرعية من تنفيذ أمر التنسيق، يتم تنفيذ سطر الأوامر للمهمة متعددة المثيلات بواسطة المهمة الأساسية فقط. نطلق على هذا الأمر التطبيق لتمييزه عن أمر التنسيق.
بالنسبة لتطبيقات MS-MPI، استخدم الأمر التطبيق لتنفيذ التطبيق الذي تم تمكين MPI الخاص بك باستخدام mpiexec.exe. على سبيل المثال، هنا أمر تطبيق لحل باستخدام MS-MPI الإصدار 7:
cmd /c ""%MSMPI_BIN%\mpiexec.exe"" -c 1 -wdir %AZ_BATCH_TASK_SHARED_DIR% MyMPIApplication.exe
إشعار
لأن يستخدم MS-MPI mpiexec.exeCCP_NODES المتغير بشكل افتراضي (راجع متغيرات البيئة)، المثال سطر الأوامر التطبيق أعلاه يستبعد ذلك.
متغيرات البيئة
تُنشئ الدُفعة متغيرات بيئة متعددة خاصة بمهام متعددة المثيلات على العقد حساب المخصصة لمهمة متعددة المثيلات. يمكن أن تشير خطوط أوامر التنسيق والتطبيق إلى متغيرات البيئة هذه، كما يمكن للبرامج النصية والبرامج التي تنفذها.
يتم إنشاء متغيرات البيئة التالية بواسطة خدمة الدفعة للاستخدام بواسطة مهام متعددة المثيلات:
CCP_NODESAZ_BATCH_NODE_LISTAZ_BATCH_HOST_LISTAZ_BATCH_MASTER_NODEAZ_BATCH_TASK_SHARED_DIRAZ_BATCH_IS_CURRENT_NODE_MASTER
للحصول على تفاصيل كاملة حول هذه ومتغيرات بيئة عقدة الحوسبة الدفعية الأخرى، بما في ذلك محتوياتها وإمكانية رؤيتها، راجع حساب متغيرات بيئة العقدة.
تلميح
يحتوي نموذج التعليمات البرمجية MpI Batch Linux على مثال عن كيفية استخدام العديد من متغيرات البيئة.
ملفات الموارد
هناك مجموعتان من ملفات الموارد للنظر في المهام متعددة المثيلات: ملفات الموارد الشائعة التي تقوم كافة المهام بتنزيلها (الأساسية والمهام الفرعية)، وملفات الموارد المحددة للمهمة متعددة المثيلات نفسها، والتي يتم تنزيلها فقط للمهمة الأساسية.
يمكنك تحديد ملف مورد واحد أو أكثر من ملفات الموارد الشائعة في إعدادات المثيلات المتعددة لمهمة. يتم تحميل هذه الملفات الموارد الشائعة من موقع تخزين Azure في الدليل المشترك لمهمة كل عقدة بواسطة الأساسي و كافة المهام الفرعية. يمكنك الوصول إلى الدليل المشترك للمهمة من سطور أوامر التطبيق والتنسيق باستخدام متغير البيئة AZ_BATCH_TASK_SHARED_DIR. المسار AZ_BATCH_TASK_SHARED_DIR متطابق على كل عقدة المخصصة للمهمة متعددة المثيلات، وبالتالي يمكنك مشاركة أمر تنسيق واحد بين الأساسي و كافة المهام الفرعية. لا تقوم الدُفعة "بمشاركة" الدليل بمعنى الوصول عن بُعد، ولكن يمكنك استخدامه كنقطة تحميل أو مشاركة كما هو مذكور سابقًا في تلميح حول متغيرات البيئة.
يتم تحميل ملفات الموارد التي تحددها للمهمة متعددة المثيلات نفسها إلى دليل العمل الخاص بالمهمة AZ_BATCH_TASK_WORKING_DIR بشكل افتراضي. كما ذكرنا، على عكس ملفات الموارد الشائعة، تقوم المهمة الأساسية فقط بتنزيل ملفات الموارد المحددة للمهمة متعددة المثيلات نفسها.
هام
استخدم متغيرات البيئة دوما AZ_BATCH_TASK_SHARED_DIR ثم AZ_BATCH_TASK_WORKING_DIR للإشارة إلى هذه الدلائل في سطور الأوامر. لا تحاول إنشاء المسارات يدويا.
مدة عمل المهمة
يتحكم عمر المهمة الأساسية في عمر المهمة متعددة المثيلات بأكملها. عند إنهاء الأساسي، يتم إنهاء كافة المهام الفرعية. رمز إنهاء الأساسي هو رمز إنهاء المهمة، وبالتالي يتم استخدامه لتحديد نجاح أو فشل المهمة لأغراض إعادة المحاولة.
في حال فشل أي من المهام الفرعية إنهاء مع رمز إرجاع غير صفري على سبيل المثال، تفشل المهمة متعددة المثيلات بأكملها. ثم يتم إنهاء المهمة متعددة المثيلات وإعادة محاولة، حتى حد إعادة المحاولة الخاص بها.
عند حذف مهمة متعددة المثيلات، يتم حذف المهام الفرعية الأساسية وكافة أيضا بواسطة خدمة الدفعة. يتم حذف كافة الدلائل الفرعية وملفاتها من العقد حساب تماما كما لمهمة قياسية.
يتم احترام BatchTaskConstraints لمهام متعددة المثلات، مثل خصائص MaxTaskRetryCountوMaxWallClockTimeوRetentionTime كما هي للمهمة القياسية، وتطبق على المهام الأساسية وجميع المهام الفرعية. ومع ذلك، إذا قمت بتغيير خاصية RetentionTime بعد إضافة المهمة متعددة المثيلات إلى الوظيفة، فسيتم تطبيق هذا التغيير فقط على المهمة الأساسية، وستستمر جميع المهام الفرعية في استخدام RetentionTime الأصلي.
تعكس قائمة المهام الحديثة لعقدة حساب معرف المهام الفرعية إذا كانت المهمة الأخيرة جزءا من مهمة متعددة المثيلات.
الحصول على معلومات حول المهام الفرعية
للحصول على معلومات حول المهام الفرعية باستخدام Azure. مكتبة Compute.Batch استدعي طريقة BatchClient.GetTaskSubTasks. يقوم هذا الأسلوب بإرجاع معلومات حول كافة المهام الفرعية ومعلومات حول عقدة حساب التي نفذت المهام. من هذه المعلومات، يمكنك تحديد الدليل الجذر لكل subtask معرف التجمع حالته الحالية رمز الإنهاء والمزيد. يمكنك استخدام هذه المعلومات مع طريقة BatchClient.GetNodeFile للحصول على ملفات المهمة الفرعية. لاحظ أن هذا الأسلوب لا يرجع معلومات المهمة الأساسية (معرف 0).
إشعار
ما لم يذكر خلاف ذلك، Azure. طرق Compute.Batch التي تعمل على المهمة الرئيسية متعددة الإصدارات BatchTask نفسها تطبق only على المهمة الأساسية. على سبيل المثال، عندما تستدعي GetTaskFiles الطريقة في مهمة متعددة المثلات، يتم إرجاع ملفات المهمة الأساسية فقط.
يوضح مقتطف التعليمات البرمجية التالي كيفية الحصول على معلومات subtask بالإضافة إلى طلب محتويات الملف من العقد التي تم تنفيذها.
// Obtain the multi-instance task from the Batch service
BatchTask myMultiInstanceTask = await batchClient.GetTaskAsync("mybatchjob", "mymultiinstancetask");
_ = myMultiInstanceTask;
// Now iterate over the subtasks for the task and print their stdout and stderr
// output if the subtask has completed
await foreach (BatchSubtask subtask in batchClient.GetSubTasksAsync("mybatchjob", "mymultiinstancetask"))
{
Console.WriteLine("subtask: {0}", subtask.Id);
Console.WriteLine("exit code: {0}", subtask.ExitCode);
if (subtask.State == BatchSubtaskState.Completed)
{
BatchNode node = await batchClient.GetNodeAsync(
subtask.NodeInfo.PoolId,
subtask.NodeInfo.NodeId);
BinaryData stdOut = await batchClient.GetNodeFileAsync(
subtask.NodeInfo.PoolId, node.Id, $"{subtask.NodeInfo.TaskRootDirectory}/stdout.txt");
BinaryData stdErr = await batchClient.GetNodeFileAsync(
subtask.NodeInfo.PoolId, node.Id, $"{subtask.NodeInfo.TaskRootDirectory}/stderr.txt");
Console.WriteLine("node: {0}:", node.Id);
Console.WriteLine("stdout.txt: {0}", stdOut);
Console.WriteLine("stderr.txt: {0}", stdErr);
}
else
{
Console.WriteLine("\tSubtask {0} is in state {1}", subtask.Id, subtask.State);
}
}
نموذج التعليمات البرمجية
يوضح نموذج التعليمات البرمجية MultiInstanceTasks على GitHub كيفية استخدام مهمة متعددة المثيلات لتشغيل تطبيق MS-MPI على العقد حساب الدفعي. اتبع الخطوات التالية لتشغيل التعليمة البرمجية للعينة:
الإعداد
- تحميل MS-MPI SDK والتركيب Redist وتثبيتها. بعد التثبيت يمكنك التحقق من أنه تم تعيين متغيرات البيئة MS-MPI.
- إنشاء إصدار إصدارMPIHelloWorld نموذج MPI البرنامج. هذا هو البرنامج الذي سيتم تشغيله على حساب العقد بواسطة المهمة متعددة المثيلات.
- إنشاء ملف مضغوط يحتوي
MPIHelloWorld.exeعلى (التي بنيت في الخطوة 2) وMSMpiSetup.exe(التي قمت بتحميلها في الخطوة 1). ستقوم بتحميل هذا الملف البريدي كحزمة تطبيق في الخطوة التالية. - استخدم مدخل Microsoft Azure لإنشاء تطبيقيسمى "MPIHelloWorld"، وحدد الملف المضغوط الذي أنشأته في الخطوة السابقة كإصدار "1.0" من حزمة التطبيق. راجع تحميل وإدارة التطبيقات للحصول على مزيد من المعلومات.
تلميح
تحديث الإصدار من MPIHelloWorld.exe يضمن أنك لست مضطرًا إلى تضمين أي تبعيات إضافية (على سبيل المثال msvcp140d.dll أو vcruntime140d.dll) في حزمة التطبيق الخاصة بك.
التنفيذ
تحميل ملف .zip نماذج دفعية azure من GitHub.
افتح الحل MultiInstanceTasks في Visual Studio 2019. ملف الحل اسمه
MultiInstanceTasks.sln.azure-batch-samples\CSharp\ArticleProjects\MultiInstanceTasks\أدخل بيانات اعتماد حساب الدفعة والتخزين
AccountSettings.settingsفي المشروعMicrosoft.Azure.Batch.Samples.Common.إنشاء وتشغيل الحل MultiInstanceTasks لتنفيذ التطبيق نموذج MPI على حساب العقد في تجمع دفعي.
اختياري: استخدام مدخل Microsoft Azure أو مستكشف دفعي لفحص تجمع العينة المهمة و المهمة ("MultiInstanceSamplePool" " ، "MultiInstanceSampleJob" " ، "MultiInstanceSampleTask") قبل حذف الموارد.
تلميح
يمكنك تنزيل Visual Studio المجتمع مجانا إذا لم يكن لديك Visual Studio بالفعل.
الإخراج MultiInstanceTasks.exe مشابه للنص التالي:
Creating pool [MultiInstanceSamplePool]...
Creating job [MultiInstanceSampleJob]...
Adding task [MultiInstanceSampleTask] to job [MultiInstanceSampleJob]...
Awaiting task completion, timeout in 00:30:00...
Main task [MultiInstanceSampleTask] is in state [Completed] and ran on compute node [tvm-1219235766_1-20161017t162002z]:
---- stdout.txt ----
Rank 2 received string "Hello world" from Rank 0
Rank 1 received string "Hello world" from Rank 0
---- stderr.txt ----
Main task completed, waiting 00:00:10 for subtasks to complete...
---- Subtask information ----
subtask: 1
exit code: 0
node: tvm-1219235766_3-20161017t162002z
stdout.txt:
stderr.txt:
subtask: 2
exit code: 0
node: tvm-1219235766_2-20161017t162002z
stdout.txt:
stderr.txt:
Delete job? [yes] no: yes
Delete pool? [yes] no: yes
Sample complete, hit ENTER to exit...
الخطوات التالية
- اقرأ المزيد عن دعم MPI لنظام Linux على Azure Batch.
- تعرف على كيفية إنشاء تجمعات من عقد حساب Linux لاستخدامها في حلول Azure Batch MPI.