diff --git a/Makefile b/Makefile index 5a8f1cd..f275cce 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ TARGET = MDBench-$(TAG)-$(OPT_SCHEME) BUILD_DIR = ./$(TAG)-$(OPT_SCHEME) SRC_DIR = ./$(OPT_SCHEME) ASM_DIR = ./asm +COMMON_DIR = ./common CUDA_DIR = ./$(SRC_DIR)/cuda MAKE_DIR = ./ Q ?= @ @@ -13,7 +14,7 @@ include $(MAKE_DIR)/include_$(TAG).mk include $(MAKE_DIR)/include_LIKWID.mk include $(MAKE_DIR)/include_ISA.mk include $(MAKE_DIR)/include_GROMACS.mk -INCLUDES += -I./$(SRC_DIR)/includes +INCLUDES += -I./$(SRC_DIR)/includes -I./$(COMMON_DIR)/includes ifeq ($(strip $(DATA_LAYOUT)),AOS) DEFINES += -DAOS @@ -89,6 +90,7 @@ ASM = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.s,$(wildcard $(SRC_DIR)/*. OVERWRITE:= $(patsubst $(ASM_DIR)/%-new.s, $(BUILD_DIR)/%.o,$(wildcard $(ASM_DIR)/*-new.s)) OBJ = $(filter-out $(BUILD_DIR)/main% $(OVERWRITE),$(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o,$(wildcard $(SRC_DIR)/*.c))) OBJ += $(patsubst $(ASM_DIR)/%.s, $(BUILD_DIR)/%.o,$(wildcard $(ASM_DIR)/*.s)) +OBJ += $(patsubst $(COMMON_DIR)/%.c, $(BUILD_DIR)/%-common.o,$(wildcard $(COMMON_DIR)/*.c)) ifeq ($(strip $(TAG)),NVCC) OBJ += $(patsubst $(CUDA_DIR)/%.cu, $(BUILD_DIR)/%-cuda.o,$(wildcard $(CUDA_DIR)/*.cu)) endif @@ -114,6 +116,11 @@ $(BUILD_DIR)/%.o: %.c $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ $(Q)$(CC) $(CPPFLAGS) -MT $@ -MM $< > $(BUILD_DIR)/$*.d +$(BUILD_DIR)/%-common.o: $(COMMON_DIR)/%.c + $(info ===> COMPILE $@) + $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + $(Q)$(CC) $(CPPFLAGS) -MT $@ -MM $< > $(BUILD_DIR)/$*.d + $(BUILD_DIR)/%-cuda.o: %.cu $(info ===> COMPILE $@) $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ diff --git a/lammps/includes/util.h b/common/includes/util.h similarity index 100% rename from lammps/includes/util.h rename to common/includes/util.h diff --git a/lammps/util.c b/common/util.c similarity index 100% rename from lammps/util.c rename to common/util.c diff --git a/gromacs/includes/util.h b/gromacs/includes/util.h deleted file mode 100644 index 3da0bfc..0000000 --- a/gromacs/includes/util.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.eitzinger@fau.de - * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg - * - * This file is part of MD-Bench. - * - * MD-Bench is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with MD-Bench. If not, see . - * ======================================================================================= - */ -#ifndef __UTIL_H_ -#define __UTIL_H_ - -#ifndef MIN -# define MIN(x,y) ((x)<(y)?(x):(y)) -#endif - -#ifndef MAX -# define MAX(x,y) ((x)>(y)?(x):(y)) -#endif - -#ifndef ABS -# define ABS(a) ((a) >= 0 ? (a) : -(a)) -#endif - -#ifdef DEBUG -# define DEBUG_MESSAGE printf -#else -# define DEBUG_MESSAGE -#endif - -#ifndef MAXLINE -# define MAXLINE 4096 -#endif - -#if PRECISION == 1 -# define PRECISION_STRING "single" -#else -# define PRECISION_STRING "double" -#endif - -#define FF_LJ 0 -#define FF_EAM 1 - -extern double myrandom(int*); -extern void random_reset(int *seed, int ibase, double *coord); -extern int str2ff(const char *string); -extern const char* ff2str(int ff); -#endif diff --git a/gromacs/util.c b/gromacs/util.c deleted file mode 100644 index 0347ab6..0000000 --- a/gromacs/util.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.eitzinger@fau.de - * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg - * - * This file is part of MD-Bench. - * - * MD-Bench is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with MD-Bench. If not, see . - * ======================================================================================= - */ -#include - -#include - -/* Park/Miller RNG w/out MASKING, so as to be like f90s version */ -#define IA 16807 -#define IM 2147483647 -#define AM (1.0/IM) -#define IQ 127773 -#define IR 2836 -#define MASK 123459876 - -double myrandom(int* seed) -{ - int k= (*seed) / IQ; - double ans; - - *seed = IA * (*seed - k * IQ) - IR * k; - if(*seed < 0) *seed += IM; - ans = AM * (*seed); - return ans; -} - -void random_reset(int *seed, int ibase, double *coord) -{ - int i; - char *str = (char *) &ibase; - int n = sizeof(int); - unsigned int hash = 0; - - for (i = 0; i < n; i++) { - hash += str[i]; - hash += (hash << 10); - hash ^= (hash >> 6); - } - - str = (char *) coord; - n = 3 * sizeof(double); - for (i = 0; i < n; i++) { - hash += str[i]; - hash += (hash << 10); - hash ^= (hash >> 6); - } - - hash += (hash << 3); - hash ^= (hash >> 11); - hash += (hash << 15); - - // keep 31 bits of unsigned int as new seed - // do not allow seed = 0, since will cause hang in gaussian() - - *seed = hash & 0x7ffffff; - if (!(*seed)) *seed = 1; - - // warm up the RNG - - for (i = 0; i < 5; i++) myrandom(seed); - //save = 0; -} - -int str2ff(const char *string) -{ - if(strncmp(string, "lj", 2) == 0) return FF_LJ; - if(strncmp(string, "eam", 3) == 0) return FF_EAM; - return -1; -} - -const char* ff2str(int ff) -{ - if(ff == FF_LJ) { return "lj"; } - if(ff == FF_EAM) { return "eam"; } - return "invalid"; -}