1
1
This commit was SVN r27126.
Этот коммит содержится в:
Ralph Castain 2012-08-24 02:22:11 +00:00
родитель b4a544ad2a
Коммит c8b511d18a
3 изменённых файлов: 1 добавлений и 151 удалений

Просмотреть файл

@ -1,4 +1,4 @@
PROGS = mpi_no_op mpi_barrier hello hello_nodename abort multi_abort simple_spawn concurrent_spawn spawn_multiple mpi_spin delayed_abort loop_spawn loop_child bad_exit pubsub hello_barrier segv accept connect hello_output hello_show_help crisscross read_write ziatest slave_spawn slave cell_spawn reduce-hang ziaprobe ziatest bcast_loop parallel_w8 parallel_w64 parallel_r8 parallel_r64 sio sendrecv_blaster early_abort debugger singleton_client_server intercomm_create spawn_tree init-exit77 mpi_info PROGS = mpi_no_op mpi_barrier hello hello_nodename abort multi_abort simple_spawn concurrent_spawn spawn_multiple mpi_spin delayed_abort loop_spawn loop_child bad_exit pubsub hello_barrier segv accept connect hello_output hello_show_help crisscross read_write ziatest slave reduce-hang ziaprobe ziatest bcast_loop parallel_w8 parallel_w64 parallel_r8 parallel_r64 sio sendrecv_blaster early_abort debugger singleton_client_server intercomm_create spawn_tree init-exit77 mpi_info
all: $(PROGS) all: $(PROGS)

Просмотреть файл

@ -1,80 +0,0 @@
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <mpi.h>
int main(int argc, char* argv[])
{
int msg, rc;
MPI_Comm child;
MPI_Info info;
int rank, size;
pid_t pid;
char *cellhost, *ptr, *app;
char hostname[128];
pid = getpid();
printf("Cell_spawn [pid %ld] starting up!\n", (long)pid);
MPI_Init(NULL, NULL);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
/* get our hostname */
gethostname(hostname, 128);
/* construct the name of our cell co-processor - for now, pick the "b" side */
if (NULL != (ptr = strchr(hostname, '.'))) {
/* truncate the name */
*ptr = '\0';
}
cellhost = strdup(hostname);
cellhost[strlen(cellhost)-1] = 'b';
printf("Master on host %s is spawning cell slave on host %s\n", hostname, cellhost);
MPI_Info_create(&info);
MPI_Info_set(info, "host", cellhost);
/* setup the prefix to point to the special packages area */
MPI_Info_set(info, "ompi_prefix", "/usr/projects/packages/openmpi/rhc/opt/slave");
/* declare this to be a local slave launch */
MPI_Info_set(info, "ompi_local_slave", "true");
/* at this time, we don't need to preload binaries as we cannot
* cross-compile OMPI programs. However, if you want to compile
* your program on a Cell, and then move it to the NFS server
* for later use, then turn the following lines on and indicate
* where you want the binary placed
*/
#if 0
MPI_Info_set(info, "ompi_preload_binary", "true");
MPI_Info_set(info, "ompi_preload_files_dest_dir", rdir);
MPI_Info_set(info, "ompi_preload_files", list-of-files);
MPI_Info_set(info, "ompi_preload_files_src_dir", getcwd(cwd, 256));
#endif
app = strdup("/usr/projects/packages/openmpi/rhc/cell_slave");
pid = getpid();
printf("Cell_spawn [pid %ld] about to spawn!\n", (long)pid);
if (MPI_SUCCESS != (rc = MPI_Comm_spawn(app, MPI_ARGV_NULL, 1, info,
0, MPI_COMM_SELF, &child, MPI_ERRCODES_IGNORE))) {
printf("Cell slave failed to spawn\n");
return rc;
}
printf("Cell_spawn done with spawn\n");
msg = 38;
printf("Cell_spawn sending message to child\n");
MPI_Send(&msg, 1, MPI_INT, 0, 1, child);
MPI_Comm_disconnect(&child);
printf("Cell_spawn disconnected\n");
MPI_Info_free(&info);
MPI_Finalize();
fprintf(stderr, "%d: exiting\n", pid);
return 0;
}

Просмотреть файл

@ -1,70 +0,0 @@
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <mpi.h>
int main(int argc, char* argv[])
{
int msg, rc;
MPI_Comm child;
MPI_Info info;
int rank, size;
pid_t pid;
char *host, *app, *rdir=NULL, *prefix;
char cwd[256];
if (argc < 3) {
printf("Usage: slave_spawn host prefix-for-host <remote-tmp-dir> <files-to-move>\n");
return 1;
}
host = argv[1];
prefix = argv[2];
app = "slave";
if (5 == argc) {
rdir = argv[4];
}
pid = getpid();
printf("Slave_spawn [pid %ld] starting up!\n", (long)pid);
MPI_Init(NULL, NULL);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Info_create(&info);
MPI_Info_set(info, "host", host);
MPI_Info_set(info, "ompi_prefix", prefix);
MPI_Info_set(info, "ompi_local_slave", "true");
if (NULL != rdir) {
MPI_Info_set(info, "ompi_preload_binary", "true");
MPI_Info_set(info, "ompi_preload_files_dest_dir", rdir);
}
if (argc == 6) {
/* files were specified */
MPI_Info_set(info, "ompi_preload_files", argv[5]);
MPI_Info_set(info, "ompi_preload_files_src_dir", getcwd(cwd, 256));
}
pid = getpid();
printf("Slave_spawn [pid %ld] about to spawn!\n", (long)pid);
if (MPI_SUCCESS != (rc = MPI_Comm_spawn(app, MPI_ARGV_NULL, 1, info,
0, MPI_COMM_SELF, &child, MPI_ERRCODES_IGNORE))) {
printf("Slave failed to spawn\n");
return rc;
}
printf("Slave_spawn done with spawn\n");
msg = 38;
printf("Slave_spawn sending message to child\n");
MPI_Send(&msg, 1, MPI_INT, 0, 1, child);
MPI_Comm_disconnect(&child);
printf("Slave_spawn disconnected\n");
MPI_Info_free(&info);
MPI_Finalize();
fprintf(stderr, "%d: exiting\n", pid);
return 0;
}