Просмотр исходного кода

Start on the MPI launcher program

Ian Goldberg 14 лет назад
Родитель
Сommit
e6f5357c28
2 измененных файлов с 30 добавлено и 1 удалено
  1. 8 1
      Makefile
  2. 22 0
      mpi.cc

+ 8 - 1
Makefile

@@ -20,6 +20,7 @@
 GMP ?= /usr/local
 GMP ?= /usr/local
 CUDA ?= /usr/local/cuda
 CUDA ?= /usr/local/cuda
 LIBEVENT ?= /usr/local
 LIBEVENT ?= /usr/local
+MPI ?= /usr/local
 CXX ?= g++
 CXX ?= g++
 
 
 WORDS = 24
 WORDS = 24
@@ -32,7 +33,7 @@ NVCC=nvcc $(NVCCOPTS)
 CXXFILES = dlrho.cc gen_N.cc
 CXXFILES = dlrho.cc gen_N.cc
 CUFILES = parrhoasm.cu dpstream.cu
 CUFILES = parrhoasm.cu dpstream.cu
 OFILES = dlrho.o gen_N.o cudadl.o controller.o controller_main.o evutils.o dpnode.o dpnode_main.o worker.o worker_main.o
 OFILES = dlrho.o gen_N.o cudadl.o controller.o controller_main.o evutils.o dpnode.o dpnode_main.o worker.o worker_main.o
-TARGETS = gen_N dlrho controller dpnode worker
+TARGETS = gen_N dlrho controller dpnode worker mpi
 
 
 all: $(TARGETS)
 all: $(TARGETS)
 
 
@@ -60,6 +61,12 @@ dpnode: dpnode.o evutils.o dpnode_main.o
 worker: worker.o evutils.o cudadl.o worker_main.o
 worker: worker.o evutils.o cudadl.o worker_main.o
 	g++ -g -Wall $^ -o $@ -L$(LIBEVENT)/lib -Wl,-rpath=$(LIBEVENT)/lib -levent -levent_pthreads -lntl -L$(GMP) -lgmp -lpthread -L$(CUDA)/lib64 -lcudart
 	g++ -g -Wall $^ -o $@ -L$(LIBEVENT)/lib -Wl,-rpath=$(LIBEVENT)/lib -levent -levent_pthreads -lntl -L$(GMP) -lgmp -lpthread -L$(CUDA)/lib64 -lcudart
 
 
+mpi: mpi.o
+	mpiCC -g -Wall $^ -o $@ -L$(LIBEVENT)/lib $(LIBEVENT)/lib/libevent.a $(LIBEVENT)/lib/libevent_pthreads.a -lntl -L$(GMP) -lgmp -lpthread -L$(CUDA)/lib64 -lcudart
+
+mpi.o: mpi.cc
+	mpiCC $(CXXFLAGS) $(CPPFLAGS) $^ -c -o $@
+
 clean:
 clean:
 	-rm -f $(OFILES)
 	-rm -f $(OFILES)
 
 

+ 22 - 0
mpi.cc

@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <mpi.h>
+
+int main(int argc, char **argv)
+{
+    // Init MPI
+    MPI_Init(&argc, &argv);
+
+    char hostname[257];
+    gethostname(hostname, 256);
+
+    int rank, size;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    MPI_Comm_size(MPI_COMM_WORLD, &size);
+
+    printf("%s %d %d %d\n", hostname, getpid(), rank, size);
+
+    MPI_Finalize();
+
+    return 0;
+}