سؤال

لديّ إمكانية الوصول إلى مجموعة من 128 نواة أود تشغيل وظيفة موازية عليها. تستخدم المجموعة Sun GridEngine ويتم كتابة برنامجي لتشغيله باستخدام Python المتوازي ، Numpy ، Scipy على Python 2.5.8. يؤدي تشغيل المهمة على عقدة واحدة (4 نورز) إلى تحسن ~ 3.5x على قلب واحد. أود الآن أن نأخذ هذا إلى المستوى التالي وتقسيم المهمة عبر ~ 4 عقد. لي qsub يبدو السيناريو شيء من هذا القبيل:

#!/bin/bash
# The name of the job, can be whatever makes sense to you
#$ -N jobname

# The job should be placed into the queue 'all.q'.
#$ -q all.q

# Redirect output stream to this file.
#$ -o jobname_output.dat

# Redirect error stream to this file.

#$ -e jobname_error.dat

# The batchsystem should use the current directory as working directory.
# Both files will be placed in the current
# directory. The batchsystem assumes to find the executable in this directory.
#$ -cwd

# request Bourne shell as shell for job.
#$ -S /bin/sh

# print date and time
date

# spython is the server's version of Python 2.5. Using python instead of spython causes the program to run in python 2.3
spython programname.py

# print date and time again
date

هل لدى أي شخص أي فكرة عن كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

نعم ، تحتاج إلى تضمين خيار محرك الشبكة -np 16 إما في البرنامج النصي الخاص بك مثل هذا:

# Use 16 processors
#$ -np 16

أو على سطر الأوامر عند إرسال البرنامج النصي. أو ، للحصول على المزيد من الترتيبات الدائمة ، استخدم .sge_request ملف.

على جميع عمليات تثبيت GE التي استخدمتها على الإطلاق ، ستمنحك 16 معالجًا (أو نوى المعالجات هذه الأيام) على عدد قليل من العقد كما هو ضروري ، لذلك إذا كانت العقد الخاصة بك تحتوي قريباً. لوضع المهمة ، قل اثنين من النوى على 8 عقد (والتي قد ترغب في القيام بها إذا كنت بحاجة إلى الكثير من الذاكرة لكل عملية) أكثر تعقيدًا قليلاً ويجب عليك استشارة فريق الدعم الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top