Merge pull request #2040 from martin-frbg/locks2002

Restore locking optimizations for OpenMP case
This commit is contained in:
Martin Kroeker 2019-03-04 15:07:14 +01:00 committed by GitHub
commit 6c83b878f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 10 deletions

View File

@ -2694,21 +2694,26 @@ void *blas_memory_alloc(int procpos){
position = 0; position = 0;
#if defined(SMP) && !defined(USE_OPENMP)
LOCK_COMMAND(&alloc_lock); LOCK_COMMAND(&alloc_lock);
#endif
do { do {
/* if (!memory[position].used) { */ #if defined(USE_OPENMP)
/* blas_lock(&memory[position].lock);*/ if (!memory[position].used) {
blas_lock(&memory[position].lock);
#endif
if (!memory[position].used) goto allocation; if (!memory[position].used) goto allocation;
/* blas_unlock(&memory[position].lock);*/ #if defined(USE_OPENMP)
/* } */ blas_unlock(&memory[position].lock);
}
#endif
position ++; position ++;
} while (position < NUM_BUFFERS); } while (position < NUM_BUFFERS);
#if defined(SMP) && !defined(USE_OPENMP)
UNLOCK_COMMAND(&alloc_lock); UNLOCK_COMMAND(&alloc_lock);
#endif
goto error; goto error;
allocation : allocation :
@ -2718,9 +2723,11 @@ void *blas_memory_alloc(int procpos){
#endif #endif
memory[position].used = 1; memory[position].used = 1;
#if defined(SMP) && !defined(USE_OPENMP)
UNLOCK_COMMAND(&alloc_lock); UNLOCK_COMMAND(&alloc_lock);
#else
blas_unlock(&memory[position].lock);
#endif
if (!memory[position].addr) { if (!memory[position].addr) {
do { do {
#ifdef DEBUG #ifdef DEBUG