I am using mpiexec to run a couple of hello world executables. They each run, but the number of processes is always 1 where it looks like there should be 4 processes. Does someone understand why? Also I'm not sure why stty is giving me an invalid argument. Thanks!
Here is the output:
/bin/stty: standard input: invalid argument
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
Here is the c file:
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
int rank, size;
MPI_Init (&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Hello 开发者_运维技巧world from process %d of %d\n", rank, size);
fflush(stdout);
MPI_Finalize();
return 0;
}
Here is the submission script:
#!/bin/bash
#PBS -N helloWorld
#PBS -l select=4:ncpus=2
#PBS -j oe
#PBS -o output
#PBS -l walltime=3:00
cd $PBS_O_WORKDIR
mpiexec ./helloWorld
Steven:
The above should work; it looks like something along the line (PBS <-> MPI library <-> mpiexec) is misconfigured.
The first, most obvious guess -- is the mpiexec the same mpi launching program that corresponds to the library you compiled with? If you do a which mpiexec
in your script, do you get something that corresponds to the which mpicc
when you compile the program? Do you have to do anything like a "module load [mpi package]" before you compile?
Similarly, is your mpiexec PBS-aware? If not, you might have to specify a hostfile (${PBS_NODEFILE}) somehow, and the number of processors.
What mpi are you using, and what system are you running on -- is it a publically available system with documentation we can look at?
精彩评论