IBM Spectrum LSF
بدءا من LSF 10.1 FixPack 9 (10.1.0.9) يعد Azure CycleCloud موفرا أصليا لموصل الموارد. توفر IBM الوثائق. توفر هذه الموارد إرشادات حول تكوين عقدة LSF Master للاتصال ب CycleCloud.
LSF هو منتج مرخص من IBM؛ يتطلب استخدام LSF في CycleCloud ملف استحقاق توفره IBM لعملائهم.
ملاحظة
LSF هو منتج مرخص من IBM؛ يتطلب استخدام LSF في CycleCloud ملف استحقاق توفره IBM لعملائه. يجب إضافة ثنائيات LSF وملف الاستحقاق إلى الدليل / الكائنات الثنائية كبيرة الحجم لاستخدام نظام المجموعة التلقائي بالكامل أو منشئ صور الجهاز الظاهري في هذا المشروع. لاستخدام نظام المجموعة المؤتمت بالكامل، أو يجب إضافة منشئ صور الجهاز الظاهري في ثنائيات LSF للمشروع وملف الاستحقاق إلى الدليل blobs/ .
السيناريوهات المدعومة لنوع نظام مجموعة CycleCloud LSF
يمكن ل LSF "استعارة" المضيفين من Azure لتشغيل المهام بطريقة عند الطلب، وإضافة المضيفين وإزالتها حسب الحاجة. نوع نظام مجموعة LSF مرن للتعامل مع عدة سيناريوهات في مجموعة واحدة:
- وظائف معدل النقل العالية (وحدة المعالجة المركزية & GPU)
- مقترن بإحكام (MPI، وحدة المعالجة المركزية & GPU)
- أولوية منخفضة
تتم معالجة هذه السيناريوهات عن طريق تكوين خصائص nodearrays وLSF متعددة بالتنسيق. تم تكوين nodearrays مسبقا في CycleCloud. يتيح التكوين المناسب ل LSF سيناريوهات الوظائف المختلفة.
عند تكوين LSF وفقا لهذه التوصيات، bsub
يمكن استخدام متطلبات -R
الموارد بالطريقة التالية:
استخدم مورد placementGroup لتشغيل مهمة مع شبكة InfiniBand المتصلة.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
بالنسبة لوحدات معالجة الرسومات، نوصي باستخدام دعم LSF لبناء جملة GPU الموسع. يتطلب عادة إضافة سمتين إلى lsf.conf: LSB_GPU_NEW_SYNTAX=extend
و LSF_GPU_AUTOCONFIG=Y
. مع تمكين دعم بناء الجملة الموسع، استخدم placementGroup مع -gpu
لتشغيل مهمة مقترنة بإحكام مع تسريع GPU.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
قم بتشغيل المهام الممكنة لوحدة معالجة الرسومات بطريقة متوازية.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
تشغيل مهمة اندفاع كبيرة على الأجهزة الظاهرية منخفضة السعة.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
تكوين LSF لنوع نظام مجموعة CycleCloud LSF
لتمكين هذه السيناريوهات كما هو موضح، أضف عددا من أنواع الموارد المشتركة إلى lsb.shared.
cyclecloudhost Boolean () () (instances from Azure CycleCloud)
cyclecloudmpi Boolean () () (instances that support MPI placement)
cyclecloudlowprio Boolean () () (instances that low priority / interruptible from Azure CycleCloud)
nodearray String () () (nodearray from CycleCloud)
placementgroup String () () (id used to note locality of machines)
instanceid String () () (unique host identifier)
من الممكن أن cyclecloudlowprio
يتم تركه، ولكنه يوفر فحصا إضافيا بأن الوظائف تعمل على إيجار الجهاز الظاهري المقصود.
قالب موفر LSF ل CycleCloud
يعرض موفر LSF CycleCloud عددا من التكوينات من خلال قالب الموفر. هذه التكوينات هي مجموعة فرعية من التكوين الكامل ل nodearray.
فيما يلي مثال على قالب LSF ل Cyclecloud من cyclecloudprov_templates.json:
{
"templateId": "ondemand",
"attributes": {
"type": ["String", "X86_64"],
"ncores": ["Numeric", "44"],
"ncpus": ["Numeric", "44"],
"mem": ["Numeric", "327830"],
"cyclecloudhost": ["Boolean", "1"],
"nodearray" : ["String", "ondemand"]
},
"priority" : 250,
"nodeArray": "ondemand",
"vmType" : "Standard_HC44rs",
"subnetId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Network/virtualNetworks/hpc-network/subnets/compute",
"imageId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Compute/images/lsf-worker-a4bc2f10",
"maxNumber": 500,
"keyPairLocation": "/opt/cycle_server/.ssh/id_rsa_admin.pem",
"customScriptUri": "https://aka.ms/user_data.sh",
"userData": "nodearray_name=ondemand"
}
سمات قالب LSF ل CycleCloud
لا يتم عرض جميع سمات nodearray بواسطة قالب موفر LSF. يمكن اعتبار هذه التجاوزات لتكوين CycleCloud nodearray. قالب LSF المطلوب الوحيد هو:
- معرف القالب
- nodeArray
يتم استنتاج البعض الآخر من تكوين CycleCloud، أو يمكن حذفه، أو ليس ضروريا على الإطلاق.
- imageId - صورة جهاز Azure الظاهري على سبيل المثال.
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"
تجاوز تكوين نظام مجموعة CycleCloud. - subnetId - شبكة Azure الفرعية على سبيل المثال.
"resource_group/vnet/subnet"
تجاوز تكوين نظام مجموعة CycleCloud. - vmType - على سبيل المثال.
"Standard_HC44rs"
تجاوز تكوين نظام مجموعة CycleCloud. - keyPairLocation - على سبيل المثال.
"~/.ssh/id_rsa_beta"
تجاوز تكوين نظام مجموعة CycleCloud. - customScriptUri - على سبيل المثال. "http://10.1.0.4/user_data.sh"، لا يوجد برنامج نصي إذا لم يتم تحديده.
- userData - على سبيل المثال.
"nodearray_name=gpumpi;placement_group_id=gpumpipg1"
فارغ إذا لم يتم تحديده.
ملاحظة حول PlacementGroups
تحتوي مراكز بيانات Azure على قدرة شبكة Infiniband لسيناريوهات HPC. هذه الشبكات، على عكس شبكة ethernet العادية، لها امتداد محدود. يتم وصف نطاقات الشبكة Infiniband بواسطة "PlacementGroups". إذا كانت الأجهزة الظاهرية موجودة في نفس مجموعة المواضع وكانت أنواع الأجهزة الظاهرية الخاصة التي تدعم Infiniband، فستشارك شبكة Infiniband.
تتطلب مجموعات المواضع هذه معالجة خاصة في LSF و CycleCloud.
فيما يلي مثال على قالب LSF ل Cyclecloud من cyclecloudprov_templates.json:
{
"templateId": "ondemandmpi-1",
"attributes": {
"nodearray": ["String", "ondemandmpi" ],
"zone": [ "String", "westus2"],
"mem": [ "Numeric", 8192.0],
"ncpus": [ "Numeric", 2],
"cyclecloudmpi": [ "Boolean", 1],
"placementgroup": [ "String", "ondemandmpipg1"],
"ncores": [ "Numeric", 2],
"cyclecloudhost": [ "Boolean", 1],
"type": [ "String", "X86_64"],
"cyclecloudlowprio": [ "Boolean", 0]
},
"maxNumber": 40,
"nodeArray": "ondemandmpi",
"placementGroupName": "ondemandmpipg1",
"priority": 448,
"customScriptUri": "https://aka.ms/user_data.sh",
"userData" : "nodearray_name=ondemandmpi;placement_group_id=ondemandmpipg1"
}
placementGroupName
يمكن أن يكون في هذا الملف أي شيء ولكنه سيحدد اسم placementGroup في CycleCloud. ستقيم أي عقد تم اقتراضها من CycleCloud من هذا القالب في مجموعة المواضع هذه، وإذا كانت أجهزة ظاهرية ممكنة ل Infiniband، فستشارك شبكة IB.
لاحظ أن placementGroupName
يطابق سمة placementgroup
المضيف ، وهذا مقصود وضروري. أيضا أن placement_group_id
يتم تعيين في userData
لاستخدامها في user_data.sh في وقت بدء المضيف.
ondemandmpi
قد تبدو السمة غريبة ولكنها تستخدم لمنع هذه المهمة من المطابقة على المضيفين حيث placementGroup
غير محددة.
غالبا عند استخدام مجموعات المواضع، سيكون هناك الحد الأقصى لحجم مجموعة المواضع الذي تحدده الخاصية Azure.MaxScaleSetSize
. تحد هذه الخاصية بشكل غير مباشر من عدد العقد التي يمكن إضافتها إلى مجموعة موضع ولكن لا يعتبرها LSF. لذلك من المهم تعيين MaxNumber
قالب LSF يساوي Azure.MaxScaleSetSize
في قالب نظام المجموعة.
user_data.sh
يوفر القالب سمات لتنفيذ برنامج نصي user_data.sh ؛ customScriptUri
و userData
. هذه هي URI ومتغيرات البيئة المخصصة للبرنامج النصي المدار من قبل المستخدم الذي يعمل عند بدء تشغيل العقدة. يتم تنزيل هذا البرنامج النصي بواسطة أمر CURL غير متزامن، لذا customScriptUri
يفشل طلب المصادقة. استخدم هذا البرنامج النصي من أجل:
- تكوين برامج LSF الخفية للعامل؛ بشكل
LSF_LOCAL_RESOURCES
خاص وLSF_MASTER_LIST
- إذا كان
LSF_TOP
على نظام ملفات مشترك، فقد يكون من المفيد إنشاء نسخة محلية منlsf.conf
وتعيينLSF_ENVDIR
المتغير قبل بدء تشغيل البرامج الخفية.
- إذا كان
- ابدأ تشغيل lim و res وsbatch daemons.
هناك بعض متغيرات البيئة الافتراضية التي تم تعيينها بواسطة موفر CycleCloud.
- rc_account
- template_id
- اسم الموفر
- clusterName
- cyclecloud_nodeid (يوصى بتعيين هذا إلى
instanceId
المورد)
متغيرات بيانات المستخدم الأخرى التي يمكن أن تكون مفيدة في إدارة الموارد في موفر CycleCloud هي:
- nodearray_name
- placement_group_id
ملاحظة
على الرغم من أن Windows هو نظام أساسي LSF مدعوم رسميا، إلا أن CycleCloud لا يدعم تشغيل LSF على Windows في الوقت الحالي.