Fix bugs and improve build system

Fix bug if ANIMATE define is set
Move all defines to config.mk
Add clangd generation in Makefile
Move ICC to ICX config
This commit is contained in:
2025-11-05 10:29:31 +01:00
parent 3408d39545
commit 38a96ddf8d
9 changed files with 39 additions and 20 deletions

2
.gitignore vendored
View File

@@ -53,3 +53,5 @@ Module.symvers
Mkfile.old
dkms.conf
PoissonSolver/2D-seq/.cache/clangd/index
PoissonSolver/2D-seq/compile_commands.json

View File

@@ -0,0 +1,3 @@
CompileFlags:
Add: [-D_GNU_SOURCE,-DANIMATE,-DARRAY_ALIGNMENT=64,-I./src/includes,-I./CLANG, -Ofast,-std=c99, -xc]
Compiler: clang

View File

@@ -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)

View File

@@ -1,8 +1,10 @@
# Supported: GCC, CLANG, ICC
TAG ?= CLANG
# Supported: CLANG, CLANG, ICX
TAG ?= GCC
#Feature options
OPTIONS += -DARRAY_ALIGNMENT=64
#OPTIONS += -DANIMATE
#OPTIONS += -DDEBUG
#OPTIONS += -DVERBOSE_AFFINITY
#OPTIONS += -DVERBOSE_DATASIZE
#OPTIONS += -DVERBOSE_TIMER

View File

@@ -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
INCLUDES =

View File

@@ -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

View File

@@ -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 =

View File

@@ -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 <stdio.h>
#include <stdlib.h>
#include <string.h>
//---
#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';

View File

@@ -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;