Изпълнение на задание на множество възли на клъстер GridEngine

Имам достъп до 128-ядрен клъстер, на който бих искал да изпълнявам паралелна работа. Клъстерът използва Sun GridEngine и моята програма е написана да работи с помощта на Parallel Python, numpy, scipy на Python 2.5.8. Изпълнението на заданието на единичен възел (4 ядра) дава ~3,5 пъти подобрение спрямо едно ядро. Сега бих искал да пренеса това на следващото ниво и да разделя работата на ~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

Някой има ли идея как да стане това?


person Chinmay Kanchi    schedule 06.10.2010    source източник
comment
Защо някой ще гласува против този въпрос? Хората наистина трябва да оставят коментар, ако имат отрицателна обратна връзка.   -  person Rik Smith-Unna    schedule 21.01.2013


Отговори (1)


Да, трябва да включите опцията Grid Engine -np 16 във вашия скрипт по следния начин:

# Use 16 processors
#$ -np 16

или на командния ред, когато изпратите скрипта. Или, за по-трайни уговорки, използвайте файл .sge_request.

На всички инсталации на GE, които някога съм използвал, това ще ви даде 16 процесора (или процесорни ядра в наши дни) на толкова малко възли, колкото е необходимо, така че ако вашите възли имат 4 ядра, ще получите 4 възела, ако имат 8 2 и скоро. За да поставите задачата, да речем 2 ядра на 8 възела (което може да искате да направите, ако имате нужда от много памет за всеки процес) е малко по-сложно и трябва да се консултирате с вашия екип за поддръжка.

person High Performance Mark    schedule 07.10.2010
comment
Добавянето на ~$ -np 8 води до грешка, казваща Unable to read script file because of error: ERROR! invalid option argument "-np". Сега имам решение само за Python за това, но би било хубаво да имам друга опция. - person Chinmay Kanchi; 07.10.2010
comment
@Chinmay Kanchi: добавете #$ -np 16, а не ~$ -np 16 - person High Performance Mark; 07.10.2010
comment
Да, това бях направил. Пропуснах # в коментара. наздраве - person Chinmay Kanchi; 07.10.2010