|
|
|
@@ -1165,11 +1165,10 @@ void *blas_memory_alloc(int procpos){ |
|
|
|
#ifdef ALLOC_DEVICEDRIVER |
|
|
|
alloc_devicedirver, |
|
|
|
#endif |
|
|
|
/* Hugetlb implicitly assumes ALLOC_SHM */ |
|
|
|
#ifdef ALLOC_SHM |
|
|
|
#ifdef ALLOC_SHM && !defined(ALLOC_HUGETLB) |
|
|
|
alloc_shm, |
|
|
|
#endif |
|
|
|
#if ((defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS)) |
|
|
|
#if ((defined ALLOC_HUGETLB) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS)) |
|
|
|
alloc_hugetlb, |
|
|
|
#endif |
|
|
|
#ifdef ALLOC_MMAP |
|
|
|
@@ -1190,7 +1189,6 @@ void *blas_memory_alloc(int procpos){ |
|
|
|
struct alloc_t * alloc_info; |
|
|
|
struct alloc_t ** alloc_table; |
|
|
|
|
|
|
|
|
|
|
|
#if defined(SMP) && !defined(USE_OPENMP) |
|
|
|
int mi; |
|
|
|
LOCK_COMMAND(&alloc_lock); |
|
|
|
@@ -1282,7 +1280,7 @@ UNLOCK_COMMAND(&alloc_lock); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if (defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
#if (defined ALLOC_HUGETLB) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
if ((*func == alloc_hugetlb) && (map_address != (void *)-1)) hugetlb_allocated = 1; |
|
|
|
#endif |
|
|
|
|
|
|
|
@@ -2494,7 +2492,7 @@ static void *alloc_devicedirver(void *address){ |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef ALLOC_SHM |
|
|
|
#if defined(ALLOC_SHM) && !defined(ALLOC_HUGETLB) |
|
|
|
|
|
|
|
static void alloc_shm_free(struct release_t *release){ |
|
|
|
|
|
|
|
@@ -2506,7 +2504,9 @@ static void alloc_shm_free(struct release_t *release){ |
|
|
|
static void *alloc_shm(void *address){ |
|
|
|
void *map_address; |
|
|
|
int shmid; |
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
fprintf(stderr,"alloc_shm got called\n"); |
|
|
|
#endif |
|
|
|
shmid = shmget(IPC_PRIVATE, BUFFER_SIZE,IPC_CREAT | 0600); |
|
|
|
|
|
|
|
map_address = (void *)shmat(shmid, address, 0); |
|
|
|
@@ -2533,6 +2533,7 @@ static void *alloc_shm(void *address){ |
|
|
|
|
|
|
|
return map_address; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS |
|
|
|
|
|
|
|
@@ -2562,6 +2563,10 @@ static void *alloc_hugetlb(void *address){ |
|
|
|
|
|
|
|
void *map_address = (void *)-1; |
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
fprintf(stderr,"alloc_hugetlb got called\n"); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(OS_LINUX) || defined(OS_AIX) |
|
|
|
int shmid; |
|
|
|
|
|
|
|
@@ -2583,7 +2588,7 @@ static void *alloc_hugetlb(void *address){ |
|
|
|
|
|
|
|
if (map_address != (void *)-1){ |
|
|
|
shmctl(shmid, IPC_RMID, 0); |
|
|
|
} |
|
|
|
}else printf("alloc_hugetlb failed\n"); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
@@ -2645,7 +2650,6 @@ static void *alloc_hugetlb(void *address){ |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef ALLOC_HUGETLBFILE |
|
|
|
|
|
|
|
@@ -2762,11 +2766,10 @@ void *blas_memory_alloc(int procpos){ |
|
|
|
#ifdef ALLOC_DEVICEDRIVER |
|
|
|
alloc_devicedirver, |
|
|
|
#endif |
|
|
|
/* Hugetlb implicitly assumes ALLOC_SHM */ |
|
|
|
#ifdef ALLOC_SHM |
|
|
|
#ifdef ALLOC_SHM && !defined(ALLOC_HUGETLB) |
|
|
|
alloc_shm, |
|
|
|
#endif |
|
|
|
#if ((defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS)) |
|
|
|
#if ((defined ALLOC_HUGETLB) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS)) |
|
|
|
alloc_hugetlb, |
|
|
|
#endif |
|
|
|
#ifdef ALLOC_MMAP |
|
|
|
@@ -2945,8 +2948,22 @@ void *blas_memory_alloc(int procpos){ |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if (defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
#if (defined ALLOC_HUGETLB) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
if ((*func == alloc_hugetlb) && (map_address != (void *)-1)) hugetlb_allocated = 1; |
|
|
|
#ifdef DEBUG |
|
|
|
if (hugetlb_allocated) printf("allocating via shared memory with large page support (hugetlb)\n"); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if (defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
#ifdef DEBUG |
|
|
|
printf("allocating via shared memory\n"); |
|
|
|
#endif |
|
|
|
if ((*func == alloc_shm) && (map_address == (void *)-1)) { |
|
|
|
#ifndef OS_WINDOWS |
|
|
|
fprintf(stderr, "OpenBLAS Warning ... shared memory allocation was failed.\n"); |
|
|
|
#endif |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
func ++; |
|
|
|
@@ -3061,10 +3078,23 @@ allocation2: |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if (defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
#if (defined ALLOC_HUGETLB) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
#ifdef DEBUG |
|
|
|
fprintf(stderr,"OpenBLAS: allocating via shared memory with large page support (hugetlb)\n"); |
|
|
|
#endif |
|
|
|
if ((*func == alloc_hugetlb) && (map_address != (void *)-1)) hugetlb_allocated = 1; |
|
|
|
#endif |
|
|
|
|
|
|
|
#if (defined ALLOC_SHM) && (defined OS_LINUX || defined OS_AIX || defined __sun__ || defined OS_WINDOWS) |
|
|
|
#ifdef DEBUG |
|
|
|
fprintf(stderr,"allocating via shared memory\n"); |
|
|
|
#endif |
|
|
|
if ((*func == alloc_shm) && (map_address == (void *)-1)) { |
|
|
|
#ifndef OS_WINDOWS |
|
|
|
fprintf(stderr, "OpenBLAS Warning ... shared memory allocation was failed.\n"); |
|
|
|
#endif |
|
|
|
} |
|
|
|
#endif |
|
|
|
func ++; |
|
|
|
} |
|
|
|
|
|
|
|
|