mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-03 21:44:33 +00:00 
			
		
		
		
	Improvements to huge memory
This commit is contained in:
		@@ -157,6 +157,7 @@ void CartesianCommunicator::ShmInitGeneric(void){
 | 
				
			|||||||
    perror("mmap failed ");
 | 
					    perror("mmap failed ");
 | 
				
			||||||
    exit(EXIT_FAILURE);  
 | 
					    exit(EXIT_FAILURE);  
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  if (!Hugepages ) madvise(ShmCommBuf,MAX_MPI_SHM_BYTES,MADV_HUGEPAGE);
 | 
				
			||||||
#else 
 | 
					#else 
 | 
				
			||||||
  ShmBufStorageVector.resize(MAX_MPI_SHM_BYTES);
 | 
					  ShmBufStorageVector.resize(MAX_MPI_SHM_BYTES);
 | 
				
			||||||
  ShmCommBuf=(void *)&ShmBufStorageVector[0];
 | 
					  ShmCommBuf=(void *)&ShmBufStorageVector[0];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -198,7 +198,7 @@ void CartesianCommunicator::Init(int *argc, char ***argv) {
 | 
				
			|||||||
  ShmCommBuf = 0;
 | 
					  ShmCommBuf = 0;
 | 
				
			||||||
  ShmCommBufs.resize(ShmSize);
 | 
					  ShmCommBufs.resize(ShmSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 1
 | 
					#if 0
 | 
				
			||||||
  char shm_name [NAME_MAX];
 | 
					  char shm_name [NAME_MAX];
 | 
				
			||||||
  if ( ShmRank == 0 ) {
 | 
					  if ( ShmRank == 0 ) {
 | 
				
			||||||
    for(int r=0;r<ShmSize;r++){
 | 
					    for(int r=0;r<ShmSize;r++){
 | 
				
			||||||
@@ -269,20 +269,24 @@ void CartesianCommunicator::Init(int *argc, char ***argv) {
 | 
				
			|||||||
  if ( ShmRank == 0 ) {
 | 
					  if ( ShmRank == 0 ) {
 | 
				
			||||||
    for(int r=0;r<ShmSize;r++){
 | 
					    for(int r=0;r<ShmSize;r++){
 | 
				
			||||||
      size_t size = CartesianCommunicator::MAX_MPI_SHM_BYTES;
 | 
					      size_t size = CartesianCommunicator::MAX_MPI_SHM_BYTES;
 | 
				
			||||||
      key_t key   = 0x4545 + r;
 | 
					      key_t key   = IPC_PRIVATE;
 | 
				
			||||||
      int flags = IPC_CREAT | SHM_R | SHM_W;
 | 
					      int flags = IPC_CREAT | SHM_R | SHM_W;
 | 
				
			||||||
#ifdef SHM_HUGETLB
 | 
					#ifdef SHM_HUGETLB
 | 
				
			||||||
      flags|=SHM_HUGETLB;
 | 
					      if (Hugepages) flags|=SHM_HUGETLB;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      if ((shmids[r]= shmget(key,size, flags)) < 0) {
 | 
					      if ((shmids[r]= shmget(key,size, flags)) ==-1) {
 | 
				
			||||||
	int errsv = errno;
 | 
						int errsv = errno;
 | 
				
			||||||
	printf("Errno %d\n",errsv);
 | 
						printf("Errno %d\n",errsv);
 | 
				
			||||||
 | 
						printf("key   %d\n",key);
 | 
				
			||||||
 | 
						printf("size  %lld\n",size);
 | 
				
			||||||
 | 
						printf("flags %d\n",flags);
 | 
				
			||||||
	perror("shmget");
 | 
						perror("shmget");
 | 
				
			||||||
	exit(1);
 | 
						exit(1);
 | 
				
			||||||
      }
 | 
					      } else { 
 | 
				
			||||||
	printf("shmid: 0x%x\n", shmids[r]);
 | 
						printf("shmid: 0x%x\n", shmids[r]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  MPI_Barrier(ShmComm);
 | 
					  MPI_Barrier(ShmComm);
 | 
				
			||||||
  MPI_Bcast(&shmids[0],ShmSize*sizeof(int),MPI_BYTE,0,ShmComm);
 | 
					  MPI_Bcast(&shmids[0],ShmSize*sizeof(int),MPI_BYTE,0,ShmComm);
 | 
				
			||||||
  MPI_Barrier(ShmComm);
 | 
					  MPI_Barrier(ShmComm);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user