Hi,
I am a newbie and want to use LAM-MPI to checkpoint/restart my MPI application.
I have installed blcr-0.4.2 and lam-7.1.2, but entouner some problems.
My environment is RedHat 9 with kernel 2.4.20-8. LAM-MPI and blcr is installed in /home/cesc53/local.
1. I compile application with
$ mpicc hello_mpi.c -L/home/cesc53/local/lib -lcr -o hello_mpi
The error information is :
/home/cesc53/local/lib/libmpi.a(malloc.o)(.text+0x30e9): In function `ptmalloc_init':
: undefined reference to `pthread_atfork'
collect2: ld returned 1 exit status
2. Then I complie with
$ mpicc hello_mpi.c -o hello_mpi
That is OK.
I run application with
$ mpirun -ssi rpi crtcp C ./hello_mpi
It seems that the commad has syntax error. Following is displayed:
-----------------------------------------------------------------------------
Synopsis: mpirun [options] <app>
mpirun [options] <where> <program> [<prog args>]
Description: Start an MPI application in LAM/MPI.
Notes:
[options] Zero or more of the options listed below.
<app> LAM/MPI appschema.
<where> List of LAM nodes and/or CPUs (examples
below).
<program> Must be a LAM/MPI program that either
invokes MPI_INIT or has exactly one of
its children invoke MPI_INIT.
<prog args> Optional list of command line arguments
to <program>.
..........................
.........................
-----------------------------------------------------------------------------------------
Could you tell me what I have done wrong? And how to checkpoint a MPI application using LAM-MPI
with blcr?Thanks.
Regards,
Zhenxia Zhang
-----------------------------------------------------------------------------------------
laminfo:
LAM/MPI: 7.1.2
Prefix: /home/cesc53/local
Architecture: i686-pc-linux-gnu
Configured by: cesc53
Configured on: Wed Apr 12 14:00:36 CST 2006
Configure host: CESC53
Memory manager: ptmalloc2
C bindings: yes
C++ bindings: yes
Fortran bindings: no
C compiler: gcc
C++ compiler: g++
Fortran compiler: false
Fortran symbols: none
C profiling: yes
C++ profiling: yes
Fortran profiling: no
C++ exceptions: no
Thread support: yes
ROMIO support: yes
IMPI support: no
Debug support: no
Purify clean: no
SSI boot: globus (API v1.1, Module v0.6)
SSI boot: rsh (API v1.1, Module v1.1)
SSI boot: slurm (API v1.1, Module v1.0)
SSI coll: lam_basic (API v1.1, Module v7.1)
SSI coll: shmem (API v1.1, Module v1.0)
SSI coll: smp (API v1.1, Module v1.2)
SSI rpi: crtcp (API v1.1, Module v1.1)
SSI rpi: lamd (API v1.0, Module v7.1)
SSI rpi: sysv (API v1.0, Module v7.1)
SSI rpi: tcp (API v1.0, Module v7.1)
SSI rpi: usysv (API v1.0, Module v7.1)
SSI cr: blcr (API v1.0, Module v1.1)
SSI cr: self (API v1.0, Module v1.0)
----------------------------------------------------------------------------------------
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <mpi.h>
int main(int argc, char * argv[])
{
int rank,size,i,provided;
char name[512];
int namelen;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Get_processor_name(name, &namelen);
for (i=0; i<100; i++) {
printf ("Hello! 100 -- %d. I am %d of %d on %s.\n", i, rank, size, name);
sleep(1);
}
MPI_Finalize();
return 0;
}
|