From c27925796dc64962a3609a92d0947fbef787c470 Mon Sep 17 00:00:00 2001 From: Aidan Chalk <3043914+LonelyCat124@users.noreply.github.com> Date: Wed, 7 Jul 2021 11:46:25 +0100 Subject: [PATCH 1/2] Added a first fortran example to prove the tool works for fortran code --- Makefile | 11 +++++++++-- src/otter-demo/omp-parallel-for-fortran.F90 | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/otter-demo/omp-parallel-for-fortran.F90 diff --git a/Makefile b/Makefile index 86c5c9e..c277a74 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ $(info Compiler: $(CC) [$(shell which $(CC))]) INCLUDE = -Iinclude -I/opt/otf2/include -I/ddn/data/$(USER)/local/include NOWARN = -Wno-unused-function -Wno-unused-variable CFLAGS = -Wall -Werror $(NOWARN) $(INCLUDE) -LDFLAGS = -Llib/ -L/opt/otf2/lib -L/ddn/data/$(USER)/local/lib -Wl,-rpath=`pwd -P`/lib/,-rpath=/ddn/data/$(USER)/local/lib +LDFLAGS = -Llib/ -L/opt/otf2/lib -L/ddn/data/$(USER)/local/lib -Wl,-rpath=`pwd -P`/lib/,-rpath=/ddn/data/$(USER)/local/lib -L/path/to/llvm/lib OTTER_DEFS = DTYPE_DEFS = -DDA_LEN=$(OTTER_DEFAULT_ARRAY_LENGTH) -DDA_INC=$(OTTER_DEFAULT_ARRAY_INCREMENT) TRACE_DEFS = @@ -35,9 +35,11 @@ DTYPEHEAD = $(wildcard include/otter-datatypes/*.h) $(COMMON_H) OMPSRC = $(wildcard src/otter-demo/*c) OMPEXE = $(patsubst src/otter-demo/omp-%.c, omp-%, $(OMPSRC)) OMPSRC_CPP = $(wildcard src/otter-demo/*.cpp) +OMPSRC_F90 = $(wildcard src/otter-demo/*.F90) OMPEXE_CPP = $(patsubst src/otter-demo/omp-%.cpp, omp-%, $(OMPSRC_CPP)) +OMPEXE_F90 = $(patsubst src/otter-demo/omp-%.F90, omp-%, $(OMPSRC_F90)) -BINS = $(OTTER) $(LIBDTYPE) $(LIBTRACE) $(OMPEXE) $(OMPEXE_CPP) +BINS = $(OTTER) $(LIBDTYPE) $(LIBTRACE) $(OMPEXE) $(OMPEXE_CPP) $(OMPEXE_F90) .PHONY: all clean cleanfiles run @@ -58,6 +60,11 @@ $(OMPEXE_CPP): $(OMPSRC_CPP) $(CXX) $(CFLAGS) $(DEBUG) -fopenmp src/otter-demo/$@.cpp -o $@ @echo $@ links to `ldd $@ | grep "[lib|libi|libg]omp"` +$(OMPEXE_F90) : $(OMPSRC_F90) + @echo COMPILING: $@ + $(F90) $(CFLAGS) $(DEBUG) -fopenmp src/otter-demo/$@.F90 -o $@ $(LDFLAGS) -lomp + @echo $@ links to `ldd $@ | grep "[lib|libi|libg]omp"` + ### Otter as a dynamic tool to be loaded by the runtime $(OTTER): $(OTTERSRC) $(OTTERHEAD) $(LIBTRACE) @printf "COMPILING %-12s (debug=%s, OTTER_DEFS=%s)" $@ $(DEBUG_OTTER) $(OTTER_DEFS) diff --git a/src/otter-demo/omp-parallel-for-fortran.F90 b/src/otter-demo/omp-parallel-for-fortran.F90 new file mode 100644 index 0000000..8e0a66a --- /dev/null +++ b/src/otter-demo/omp-parallel-for-fortran.F90 @@ -0,0 +1,19 @@ +#define THREADS 2 +#define LENGTH 20 + +PROGRAM omp_parallel_for +USE OMP_LIB + + integer, dimension(LENGTH) :: num + integer :: k + num(:) = 0 + + call omp_set_num_threads(THREADS) + + !$OMP PARALLEL DO + do k=1, LENGTH + num(k) = omp_get_thread_num() + end do + !$OMP END PARALLEL DO + +END PROGRAM From e8b48b468f3293bf3a132b343449d4bb5a65a30b Mon Sep 17 00:00:00 2001 From: Aidan Chalk <3043914+LonelyCat124@users.noreply.github.com> Date: Wed, 7 Jul 2021 11:46:25 +0100 Subject: [PATCH 2/2] Added a first fortran example to prove the tool works for fortran code --- Makefile | 11 +++++++++-- src/otter-demo/omp-parallel-for-fortran.F90 | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/otter-demo/omp-parallel-for-fortran.F90 diff --git a/Makefile b/Makefile index 86c5c9e..c277a74 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ $(info Compiler: $(CC) [$(shell which $(CC))]) INCLUDE = -Iinclude -I/opt/otf2/include -I/ddn/data/$(USER)/local/include NOWARN = -Wno-unused-function -Wno-unused-variable CFLAGS = -Wall -Werror $(NOWARN) $(INCLUDE) -LDFLAGS = -Llib/ -L/opt/otf2/lib -L/ddn/data/$(USER)/local/lib -Wl,-rpath=`pwd -P`/lib/,-rpath=/ddn/data/$(USER)/local/lib +LDFLAGS = -Llib/ -L/opt/otf2/lib -L/ddn/data/$(USER)/local/lib -Wl,-rpath=`pwd -P`/lib/,-rpath=/ddn/data/$(USER)/local/lib -L/path/to/llvm/lib OTTER_DEFS = DTYPE_DEFS = -DDA_LEN=$(OTTER_DEFAULT_ARRAY_LENGTH) -DDA_INC=$(OTTER_DEFAULT_ARRAY_INCREMENT) TRACE_DEFS = @@ -35,9 +35,11 @@ DTYPEHEAD = $(wildcard include/otter-datatypes/*.h) $(COMMON_H) OMPSRC = $(wildcard src/otter-demo/*c) OMPEXE = $(patsubst src/otter-demo/omp-%.c, omp-%, $(OMPSRC)) OMPSRC_CPP = $(wildcard src/otter-demo/*.cpp) +OMPSRC_F90 = $(wildcard src/otter-demo/*.F90) OMPEXE_CPP = $(patsubst src/otter-demo/omp-%.cpp, omp-%, $(OMPSRC_CPP)) +OMPEXE_F90 = $(patsubst src/otter-demo/omp-%.F90, omp-%, $(OMPSRC_F90)) -BINS = $(OTTER) $(LIBDTYPE) $(LIBTRACE) $(OMPEXE) $(OMPEXE_CPP) +BINS = $(OTTER) $(LIBDTYPE) $(LIBTRACE) $(OMPEXE) $(OMPEXE_CPP) $(OMPEXE_F90) .PHONY: all clean cleanfiles run @@ -58,6 +60,11 @@ $(OMPEXE_CPP): $(OMPSRC_CPP) $(CXX) $(CFLAGS) $(DEBUG) -fopenmp src/otter-demo/$@.cpp -o $@ @echo $@ links to `ldd $@ | grep "[lib|libi|libg]omp"` +$(OMPEXE_F90) : $(OMPSRC_F90) + @echo COMPILING: $@ + $(F90) $(CFLAGS) $(DEBUG) -fopenmp src/otter-demo/$@.F90 -o $@ $(LDFLAGS) -lomp + @echo $@ links to `ldd $@ | grep "[lib|libi|libg]omp"` + ### Otter as a dynamic tool to be loaded by the runtime $(OTTER): $(OTTERSRC) $(OTTERHEAD) $(LIBTRACE) @printf "COMPILING %-12s (debug=%s, OTTER_DEFS=%s)" $@ $(DEBUG_OTTER) $(OTTER_DEFS) diff --git a/src/otter-demo/omp-parallel-for-fortran.F90 b/src/otter-demo/omp-parallel-for-fortran.F90 new file mode 100644 index 0000000..8e0a66a --- /dev/null +++ b/src/otter-demo/omp-parallel-for-fortran.F90 @@ -0,0 +1,19 @@ +#define THREADS 2 +#define LENGTH 20 + +PROGRAM omp_parallel_for +USE OMP_LIB + + integer, dimension(LENGTH) :: num + integer :: k + num(:) = 0 + + call omp_set_num_threads(THREADS) + + !$OMP PARALLEL DO + do k=1, LENGTH + num(k) = omp_get_thread_num() + end do + !$OMP END PARALLEL DO + +END PROGRAM