diff --git a/.gitignore b/.gitignore index 71520c4..a6e9ce7 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,5 @@ Module.symvers Mkfile.old dkms.conf +PoissonSolver/2D-seq/.cache/clangd/index +PoissonSolver/2D-seq/compile_commands.json diff --git a/PoissonSolver/2D-seq/.clangd b/PoissonSolver/2D-seq/.clangd new file mode 100644 index 0000000..176d6aa --- /dev/null +++ b/PoissonSolver/2D-seq/.clangd @@ -0,0 +1,3 @@ +CompileFlags: + Add: [-D_GNU_SOURCE,-DANIMATE,-DARRAY_ALIGNMENT=64,-I./src/includes,-I./CLANG, -Ofast,-std=c99, -xc] + Compiler: clang diff --git a/PoissonSolver/2D-seq/Makefile b/PoissonSolver/2D-seq/Makefile index 53fcb50..095b573 100644 --- a/PoissonSolver/2D-seq/Makefile +++ b/PoissonSolver/2D-seq/Makefile @@ -21,8 +21,16 @@ VPATH = $(SRC_DIR) ASM = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.s,$(wildcard $(SRC_DIR)/*.c)) OBJ = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o,$(wildcard $(SRC_DIR)/*.c)) CPPFLAGS := $(CPPFLAGS) $(DEFINES) $(OPTIONS) $(INCLUDES) +c := , +clist = $(subst $(eval) ,$c,$(strip $1)) -${TARGET}: $(BUILD_DIR) $(OBJ) +define CLANGD_TEMPLATE +CompileFlags: + Add: [$(call clist,$(CPPFLAGS)), $(call clist,$(CFLAGS)), -xc] + Compiler: clang +endef + +${TARGET}: $(BUILD_DIR) .clangd $(OBJ) $(info ===> LINKING $(TARGET)) $(Q)${LINKER} ${LFLAGS} -o $(TARGET) $(OBJ) $(LIBS) @@ -59,4 +67,7 @@ tags: $(BUILD_DIR): @mkdir $(BUILD_DIR) +.clangd: + $(file > .clangd,$(CLANGD_TEMPLATE)) + -include $(OBJ:.o=.d) diff --git a/PoissonSolver/2D-seq/config.mk b/PoissonSolver/2D-seq/config.mk index 17f876a..f411253 100644 --- a/PoissonSolver/2D-seq/config.mk +++ b/PoissonSolver/2D-seq/config.mk @@ -1,8 +1,10 @@ -# Supported: GCC, CLANG, ICC -TAG ?= CLANG +# Supported: CLANG, CLANG, ICX +TAG ?= GCC #Feature options -OPTIONS += -DARRAY_ALIGNMENT=64 -#OPTIONS += -DVERBOSE_AFFINITY -#OPTIONS += -DVERBOSE_DATASIZE -#OPTIONS += -DVERBOSE_TIMER +OPTIONS += -DARRAY_ALIGNMENT=64 +#OPTIONS += -DANIMATE +#OPTIONS += -DDEBUG +#OPTIONS += -DVERBOSE_AFFINITY +#OPTIONS += -DVERBOSE_DATASIZE +#OPTIONS += -DVERBOSE_TIMER diff --git a/PoissonSolver/2D-seq/include_CLANG.mk b/PoissonSolver/2D-seq/include_CLANG.mk index 0d8a1ce..070960a 100644 --- a/PoissonSolver/2D-seq/include_CLANG.mk +++ b/PoissonSolver/2D-seq/include_CLANG.mk @@ -9,10 +9,7 @@ LIBS = # -lomp endif VERSION = --version -CFLAGS = -Ofast -std=c99 $(OPENMP) -#CFLAGS = -Ofast -fnt-store=aggressive -std=c99 $(OPENMP) #AMD CLANG +CFLAGS = -O3 -ffast-math -std=c99 $(OPENMP) LFLAGS = $(OPENMP) -lm -DEFINES = -D_GNU_SOURCE -DEFINES += -DANIMATE -# DEFINES += -DDEBUG +DEFINES = -D_GNU_SOURCE INCLUDES = diff --git a/PoissonSolver/2D-seq/include_GCC.mk b/PoissonSolver/2D-seq/include_GCC.mk index 427e798..c7489fe 100644 --- a/PoissonSolver/2D-seq/include_GCC.mk +++ b/PoissonSolver/2D-seq/include_GCC.mk @@ -7,8 +7,8 @@ OPENMP = -fopenmp endif VERSION = --version -CFLAGS = -Ofast -ffreestanding -std=c99 $(OPENMP) +CFLAGS = -O3 -ffast-math -ffreestanding -std=c99 $(OPENMP) LFLAGS = $(OPENMP) DEFINES = -D_GNU_SOURCE INCLUDES = -LIBS = +LIBS = -lm diff --git a/PoissonSolver/2D-seq/include_ICC.mk b/PoissonSolver/2D-seq/include_ICX.mk similarity index 59% rename from PoissonSolver/2D-seq/include_ICC.mk rename to PoissonSolver/2D-seq/include_ICX.mk index 94b8e20..1386c29 100644 --- a/PoissonSolver/2D-seq/include_ICC.mk +++ b/PoissonSolver/2D-seq/include_ICX.mk @@ -1,4 +1,4 @@ -CC = icc +CC = icx GCC = gcc LINKER = $(CC) @@ -7,7 +7,8 @@ OPENMP = -qopenmp endif VERSION = --version -CFLAGS = -O3 -xHost -qopt-zmm-usage=high -std=c99 $(OPENMP) +CFLAGS = -O3 -xHost -std=c99 $(OPENMP) +#CFLAGS += -qopt-zmm-usage=high #on CPUs with AVX512 support LFLAGS = $(OPENMP) DEFINES = -D_GNU_SOURCE INCLUDES = diff --git a/PoissonSolver/2D-seq/src/parameter.c b/PoissonSolver/2D-seq/src/parameter.c index 0dec654..0ad7614 100644 --- a/PoissonSolver/2D-seq/src/parameter.c +++ b/PoissonSolver/2D-seq/src/parameter.c @@ -2,12 +2,10 @@ * All rights reserved. * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. */ +#include "parameter.h" #include #include #include -//--- -#include "parameter.h" -#include "util.h" #define MAXLINE 4096 void initParameter(Parameter* param) @@ -35,7 +33,10 @@ void readParameter(Parameter* param, const char* filename) while (!feof(fp)) { line[0] = '\0'; - fgets(line, MAXLINE, fp); + if (fgets(line, MAXLINE, fp) == NULL && ferror(fp) != 0) { + fprintf(stderr, "Error in fgets function\n"); + } + for (i = 0; line[i] != '\0' && line[i] != '#'; i++) ; line[i] = '\0'; diff --git a/PoissonSolver/2D-seq/src/solver.c b/PoissonSolver/2D-seq/src/solver.c index 06dda9b..fd2a295 100644 --- a/PoissonSolver/2D-seq/src/solver.c +++ b/PoissonSolver/2D-seq/src/solver.c @@ -131,6 +131,7 @@ void solveRB(Solver* solver) int it = 0; double res = 1.0; int pass, jsw, isw; + char filename[20]; while ((res >= epssq) && (it < itermax)) { res = 0.0; @@ -198,6 +199,7 @@ void solveRBA(Solver* solver) double res = 1.0; int pass, jsw, isw; double omega = 1.0; + char filename[20]; while ((res >= epssq) && (it < itermax)) { res = 0.0;