mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			feature/co
			...
			sycl-linki
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6d25badce5 | ||
| 
						 | 
					adcc97cbbb | ||
| 
						 | 
					bc8c5fb16c | ||
| 
						 | 
					845d757bb0 | ||
| 
						 | 
					0d5470c363 | 
@@ -21,6 +21,7 @@ if BUILD_HDF5
 | 
			
		||||
  extra_headers+=serialisation/Hdf5Type.h
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
all: version-cache Version.h
 | 
			
		||||
 | 
			
		||||
version-cache:
 | 
			
		||||
@@ -53,6 +54,17 @@ Version.h: version-cache
 | 
			
		||||
include Make.inc
 | 
			
		||||
include Eigen.inc
 | 
			
		||||
 | 
			
		||||
extra_sources+=$(ZWILS_FERMION_FILES)
 | 
			
		||||
extra_sources+=$(WILS_FERMION_FILES)
 | 
			
		||||
extra_sources+=$(STAG_FERMION_FILES)
 | 
			
		||||
if BUILD_GPARITY
 | 
			
		||||
  extra_sources+=$(GP_FERMION_FILES)
 | 
			
		||||
endif
 | 
			
		||||
if BUILD_FERMION_REPS
 | 
			
		||||
  extra_sources+=$(ADJ_FERMION_FILES)
 | 
			
		||||
  extra_sources+=$(TWOIND_FERMION_FILES)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
lib_LIBRARIES = libGrid.a
 | 
			
		||||
 | 
			
		||||
CCFILES += $(extra_sources)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,67 +0,0 @@
 | 
			
		||||
#include <Grid/GridCore.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
 | 
			
		||||
NAMESPACE_BEGIN(Grid);
 | 
			
		||||
 | 
			
		||||
MemoryStats *MemoryProfiler::stats = nullptr;
 | 
			
		||||
bool         MemoryProfiler::debug = false;
 | 
			
		||||
 | 
			
		||||
void check_huge_pages(void *Buf,uint64_t BYTES)
 | 
			
		||||
{
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
  int fd = open("/proc/self/pagemap", O_RDONLY);
 | 
			
		||||
  assert(fd >= 0);
 | 
			
		||||
  const int page_size = 4096;
 | 
			
		||||
  uint64_t virt_pfn = (uint64_t)Buf / page_size;
 | 
			
		||||
  off_t offset = sizeof(uint64_t) * virt_pfn;
 | 
			
		||||
  uint64_t npages = (BYTES + page_size-1) / page_size;
 | 
			
		||||
  uint64_t pagedata[npages];
 | 
			
		||||
  uint64_t ret = lseek(fd, offset, SEEK_SET);
 | 
			
		||||
  assert(ret == offset);
 | 
			
		||||
  ret = ::read(fd, pagedata, sizeof(uint64_t)*npages);
 | 
			
		||||
  assert(ret == sizeof(uint64_t) * npages);
 | 
			
		||||
  int nhugepages = npages / 512;
 | 
			
		||||
  int n4ktotal, nnothuge;
 | 
			
		||||
  n4ktotal = 0;
 | 
			
		||||
  nnothuge = 0;
 | 
			
		||||
  for (int i = 0; i < nhugepages; ++i) {
 | 
			
		||||
    uint64_t baseaddr = (pagedata[i*512] & 0x7fffffffffffffULL) * page_size;
 | 
			
		||||
    for (int j = 0; j < 512; ++j) {
 | 
			
		||||
      uint64_t pageaddr = (pagedata[i*512+j] & 0x7fffffffffffffULL) * page_size;
 | 
			
		||||
      ++n4ktotal;
 | 
			
		||||
      if (pageaddr != baseaddr + j * page_size)
 | 
			
		||||
	++nnothuge;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  int rank = CartesianCommunicator::RankWorld();
 | 
			
		||||
  printf("rank %d Allocated %d 4k pages, %d not in huge pages\n", rank, n4ktotal, nnothuge);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string sizeString(const size_t bytes)
 | 
			
		||||
{
 | 
			
		||||
  constexpr unsigned int bufSize = 256;
 | 
			
		||||
  const char             *suffixes[7] = {"", "K", "M", "G", "T", "P", "E"};
 | 
			
		||||
  char                   buf[256];
 | 
			
		||||
  size_t                 s     = 0;
 | 
			
		||||
  double                 count = bytes;
 | 
			
		||||
  
 | 
			
		||||
  while (count >= 1024 && s < 7)
 | 
			
		||||
    {
 | 
			
		||||
      s++;
 | 
			
		||||
      count /= 1024;
 | 
			
		||||
    }
 | 
			
		||||
  if (count - floor(count) == 0.0)
 | 
			
		||||
    {
 | 
			
		||||
      snprintf(buf, bufSize, "%d %sB", (int)count, suffixes[s]);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      snprintf(buf, bufSize, "%.1f %sB", count, suffixes[s]);
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
  return std::string(buf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
NAMESPACE_END(Grid);
 | 
			
		||||
 | 
			
		||||
@@ -4,4 +4,10 @@ bench-local: all
 | 
			
		||||
	./Benchmark_su3
 | 
			
		||||
	./Benchmark_memory_bandwidth
 | 
			
		||||
	./Benchmark_wilson
 | 
			
		||||
	./Benchmark_dwf --dslash-unroll
 | 
			
		||||
	./Benchmark_dwf --dslash-unroll
 | 
			
		||||
 | 
			
		||||
OBJECTS=$(shell find ../Grid/ -name '*.o') 
 | 
			
		||||
 | 
			
		||||
Benchmark_dwf_fp32.nolib:	Benchmark_dwf_fp32.o
 | 
			
		||||
	$(CXXLINK)  Benchmark_dwf_fp32.o $(OBJECTS) $(LIBS)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								configure.ac
									
									
									
									
									
								
							@@ -123,6 +123,20 @@ case ${ac_LAPACK} in
 | 
			
		||||
        AC_DEFINE([USE_LAPACK],[1],[use LAPACK]);;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
############### fermions
 | 
			
		||||
AC_ARG_ENABLE([fermion-reps],
 | 
			
		||||
    [AC_HELP_STRING([--fermion-reps=yes|no], [enable extra fermion representation support])],
 | 
			
		||||
    [ac_FERMION_REPS=${enable_fermion_reps}], [ac_FERMION_REPS=yes])
 | 
			
		||||
 | 
			
		||||
AM_CONDITIONAL(BUILD_FERMION_REPS, [ test "${ac_FERMION_REPS}X" == "yesX" ])
 | 
			
		||||
 | 
			
		||||
AC_ARG_ENABLE([gparity],
 | 
			
		||||
    [AC_HELP_STRING([--enable-gparity=yes|no], [enable G-parity support])],
 | 
			
		||||
    [ac_GPARITY=${enable_gparity}], [ac_GPARITY=yes])
 | 
			
		||||
 | 
			
		||||
AM_CONDITIONAL(BUILD_GPARITY, [ test "${ac_GPARITY}X" == "yesX" ])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############### Nc
 | 
			
		||||
AC_ARG_ENABLE([Nc],
 | 
			
		||||
    [AC_HELP_STRING([--enable-Nc=2|3|4], [enable number of colours])],
 | 
			
		||||
 
 | 
			
		||||
@@ -6,13 +6,36 @@ home=`pwd`
 | 
			
		||||
cd $home/Grid
 | 
			
		||||
HFILES=`find . -type f -name '*.h' -not -name '*Hdf5*' -not -path '*/gamma-gen/*' -not -path '*/Old/*' -not -path '*/Eigen/*'`
 | 
			
		||||
HFILES="$HFILES"
 | 
			
		||||
CCFILES=`find . -name '*.cc' -not -path '*/gamma-gen/*' -not -name '*Communicator*.cc' -not -name '*SharedMemory*.cc' -not -name '*Hdf5*'`
 | 
			
		||||
CCFILES=`find . -name '*.cc' -not -path '*/instantiation/*/*' -not -path '*/gamma-gen/*' -not -name '*Communicator*.cc' -not -name '*SharedMemory*.cc' -not -name '*Hdf5*'`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ZWILS_FERMION_FILES=` find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/ZWilsonImpl*' `
 | 
			
		||||
WILS_FERMION_FILES=`  find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/WilsonImpl*' `
 | 
			
		||||
STAG_FERMION_FILES=`  find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/Staggered*' `
 | 
			
		||||
GP_FERMION_FILES=`    find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/Gparity*' `
 | 
			
		||||
ADJ_FERMION_FILES=`   find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/WilsonAdj*' `
 | 
			
		||||
TWOIND_FERMION_FILES=`find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/WilsonTwoIndex*'`
 | 
			
		||||
 | 
			
		||||
HPPFILES=`find . -type f -name '*.hpp'`
 | 
			
		||||
echo HFILES=$HFILES $HPPFILES > Make.inc
 | 
			
		||||
echo >> Make.inc
 | 
			
		||||
echo CCFILES=$CCFILES >> Make.inc
 | 
			
		||||
 | 
			
		||||
echo ZWILS_FERMION_FILES=$ZWILS_FERMION_FILES >> Make.inc
 | 
			
		||||
echo WILS_FERMION_FILES=$WILS_FERMION_FILES   >> Make.inc
 | 
			
		||||
echo STAG_FERMION_FILES=$STAG_FERMION_FILES   >> Make.inc
 | 
			
		||||
echo GP_FERMION_FILES=$GP_FERMION_FILES   >> Make.inc
 | 
			
		||||
echo ADJ_FERMION_FILES=$ADJ_FERMION_FILES   >> Make.inc
 | 
			
		||||
echo TWOIND_FERMION_FILES=$TWOIND_FERMION_FILES   >> Make.inc
 | 
			
		||||
 | 
			
		||||
cd $home
 | 
			
		||||
echo CCFILES=$CCFILES > nolib.inc
 | 
			
		||||
echo ZWILS_FERMION_FILES=$ZWILS_FERMION_FILES >> nolib.inc
 | 
			
		||||
echo WILS_FERMION_FILES=$WILS_FERMION_FILES   >> nolib.inc
 | 
			
		||||
echo STAG_FERMION_FILES=$STAG_FERMION_FILES   >> nolib.inc
 | 
			
		||||
echo GP_FERMION_FILES=$GP_FERMION_FILES   >> nolib.inc
 | 
			
		||||
echo ADJ_FERMION_FILES=$ADJ_FERMION_FILES   >> nolib.inc
 | 
			
		||||
echo TWOIND_FERMION_FILES=$TWOIND_FERMION_FILES   >> nolib.inc
 | 
			
		||||
 | 
			
		||||
# tests Make.inc
 | 
			
		||||
cd $home/tests
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user