diff --git a/Makefile b/Makefile index 920c5258a790f663161bf5db06685b4843f64da3..44945b2246ff9fa096f70c00f96e26ef7b2fc646 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,17 @@ .PHONY: build clean -build: mpi cracker +build: main mpi cracker + +main: + $(MAKE) -C src mpi: $(MAKE) -C src/mpi - + cracker: $(MAKE) -C src/cracker clean: + $(MAKE) -C src clean $(MAKE) -C src/mpi clean $(MAKE) -C src/cracker clean diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..64a45daadf9ad4cfc6797b5d9ce8439e8e1f6023 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,15 @@ +CFLAGS += -std=c99 -pedantic -Wall -Werror -Wextra -D_FORTIFY_SOURCE=2 -O3 -fPIC -fstack-protector-all -pie -s +LDFLAGS += -lmpi +CC = mpicc +.PHONY: all clean + +all: main + +main: mpi/mpi-layer.o main.o + $(CC) -o $@ $^ $(LDFLAGS) + +%.o: %.c %.h + $(CC) $(CPPFLAGS) -c $(CFLAGS) $(LDFLAGS) -o $@ $< + +clean: + rm -f *.o diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000000000000000000000000000000000000..d869f4c0dd81f3e35dd4c774c2c1595d7d2e8bd2 --- /dev/null +++ b/src/main.c @@ -0,0 +1,7 @@ +#include<stdio.h> +#include"mpi/mpi-layer.h" + +int main(int argc, char* argv[]) { + mpi_start(argc, argv); + return 0; +} diff --git a/src/mpi/Makefile b/src/mpi/Makefile index 9e9f5c3abe3939784a4c19ae4bdbde3f686dbf28..12de88eafc17c0e9d1e119eb071e9e5fd556c502 100644 --- a/src/mpi/Makefile +++ b/src/mpi/Makefile @@ -1,5 +1,4 @@ CFLAGS += -std=c99 -pedantic -Wall -Werror -Wextra -D_FORTIFY_SOURCE=2 -O3 -fPIC -fstack-protector-all -pie -s -LDFLAGS += -lmpi CC = mpicc .PHONY: all clean diff --git a/src/mpi/mpi-layer.c b/src/mpi/mpi-layer.c index d06636efb168920d5c69fa63119a1c5e2e853f06..e50e9cd7649bf179c511fa675d6da7ab6f020ca4 100644 --- a/src/mpi/mpi-layer.c +++ b/src/mpi/mpi-layer.c @@ -1,6 +1,23 @@ -#include <stdlib.h> -#include <mpi.h> +#include "mpi-layer.h" -void init (void) { - return; +int mpi_start (int argc, char* argv[]) { + int rank, size; + + MPI_Init(&argc, &argv); /* starts MPI */ + MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* get current process id */ + MPI_Comm_size(MPI_COMM_WORLD, &size); /* get number of processes */ + + printf("Process %d of %d: Hello!\n", rank, size); + node_logic(rank); + + //TODO: Signal handler for soft abort + MPI_Abort(MPI_COMM_WORLD, 0); + + MPI_Finalize(); + return 0; +} + +void node_logic (int rank) { + + return; } diff --git a/src/mpi/mpi-layer.h b/src/mpi/mpi-layer.h new file mode 100644 index 0000000000000000000000000000000000000000..cca3754e1272fea5b3ffd57421f1ea3472861bb8 --- /dev/null +++ b/src/mpi/mpi-layer.h @@ -0,0 +1,11 @@ +#ifndef MPI_INIT_H_ +#define MPI_INIT_H_ + +#include <stdlib.h> +#include <stdio.h> +#include <mpi.h> +#include <sys/wait.h> + +int mpi_start(int, char*[]); +void node_logic(int); +#endif