Introduce common directory
Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
This commit is contained in:
		
							
								
								
									
										9
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								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 $@
 | 
			
		||||
 
 | 
			
		||||
@@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 * =======================================================================================
 | 
			
		||||
 */
 | 
			
		||||
#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
 | 
			
		||||
@@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 * =======================================================================================
 | 
			
		||||
 */
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include <util.h>
 | 
			
		||||
 | 
			
		||||
/* 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";
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user