2016-03-30 23 views
2

Düğüm başına düğüm sayısını değişken olarak ayarlamak istiyorum: #SBATCH --ntasks-per-node = s * 2; (s, programa parametre olarak ilettiğim düğüm başına yuva sayısıdır). olarak takip kodu: test.c dosyasının bir parçası:Programıma ilettiğim parametreyi temel alarak, slurmdaki düğüm başına düşen görev sayısını nasıl belirleyebilirim?

if (argc < 3) 
{ 
fprintf(stderr, "Usage: mpiexec program <#sockets>\n"); 
exit(1); 
} 
s = atoi(argv[1]); 

Bash komut dosyası (slurm):

#!/bin/bash 
#SBATCH --job-name=test 
#SBATCH --time=00:30:00 
#SBATCH --account=1234 
#SBATCH --output=./test.out 
#SBATCH --nodes=4 
#SBATCH --mem-per-cpu=3900M 
#SBATCH --ntasks-per-node=s*2  ??? 
#SBATCH --exclusive 

source /cluster/bin/jobsetup 
module load intel/2015.3 
module load openmpi.intel/1.8.6 

cd ~/filedir 
mpirun --map-by ppr:2:socket --report-bindings ./test 4 > ./test 

I 8 gibi ntasks başına düğüm sabit tutar set ise, o iyi çalışıyor. Ama onu programıma geçirdiğim parametreye göre nasıl ayarlayabilirim? Herhangi bir yardım için minnettarım.

cevap

2

Bu mümkün değil. Programınız çalıştıktan sonra, SLURM zaten düğüm başına düşen görevlerin sayısını düzeltmek zorunda kaldı. Bu programı çalıştırmak için gereklidir.

Bununla ilgili olarak bunu değiştirebilirsiniz: SLURM'de düğüm başına düşen görevlerin sayısını ayarlayın ve programınızda okuyun. Bu amaçla, SLURM bir dizi ortam değişkenini sağlar. 'u getenv ile okuyabilirsiniz. Ancak, bunun tek bir tam sayı değil, düğümden düğüme farklı olabileceğini göz önünde bulundurmalısınız. Tüm düğümler için aynıysa, her biri 8 çekirdek olan iki düğüm için 8(x2) biçiminde olacaktır.