mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-24 17:54:47 +01:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			6d7219b59d
			...
			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); | ||||
|  | ||||
| @@ -5,3 +5,9 @@ bench-local: all | ||||
| 	./Benchmark_memory_bandwidth | ||||
| 	./Benchmark_wilson | ||||
| 	./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