| @@ -237,10 +237,9 @@ static int inner_advanced_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG * | |||||
| blasint *ipiv = (blasint *)args -> c; | blasint *ipiv = (blasint *)args -> c; | ||||
| //_Atomic | |||||
| BLASLONG jw; | BLASLONG jw; | ||||
| _Atomic BLASLONG *flag = (_Atomic BLASLONG *)args -> d; | |||||
| volatile BLASLONG *flag = (volatile BLASLONG *)args -> d; | |||||
| if (args -> a == NULL) { | if (args -> a == NULL) { | ||||
| TRSM_ILTCOPY(k, k, (FLOAT *)args -> b, lda, 0, sb); | TRSM_ILTCOPY(k, k, (FLOAT *)args -> b, lda, 0, sb); | ||||
| @@ -320,21 +319,21 @@ static int inner_advanced_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG * | |||||
| } | } | ||||
| MB; | MB; | ||||
| for (i = 0; i < args -> nthreads; i++) { | for (i = 0; i < args -> nthreads; i++) { | ||||
| LOCK_COMMAND(&getrf_lock); | |||||
| LOCK_COMMAND(&getrf_lock); | |||||
| job[mypos].working[i][CACHE_LINE_SIZE * bufferside] = (BLASLONG)buffer[bufferside]; | job[mypos].working[i][CACHE_LINE_SIZE * bufferside] = (BLASLONG)buffer[bufferside]; | ||||
| UNLOCK_COMMAND(&getrf_lock); | |||||
| UNLOCK_COMMAND(&getrf_lock); | |||||
| } | } | ||||
| } | } | ||||
| LOCK_COMMAND(&getrf_flag_lock); | |||||
| LOCK_COMMAND(&getrf_flag_lock); | |||||
| flag[mypos * CACHE_LINE_SIZE] = 0; | flag[mypos * CACHE_LINE_SIZE] = 0; | ||||
| UNLOCK_COMMAND(&getrf_flag_lock); | |||||
| UNLOCK_COMMAND(&getrf_flag_lock); | |||||
| if (m == 0) { | if (m == 0) { | ||||
| for (xxx = 0; xxx < DIVIDE_RATE; xxx++) { | for (xxx = 0; xxx < DIVIDE_RATE; xxx++) { | ||||
| LOCK_COMMAND(&getrf_lock); | |||||
| LOCK_COMMAND(&getrf_lock); | |||||
| job[mypos].working[mypos][CACHE_LINE_SIZE * xxx] = 0; | job[mypos].working[mypos][CACHE_LINE_SIZE * xxx] = 0; | ||||
| UNLOCK_COMMAND(&getrf_lock); | |||||
| UNLOCK_COMMAND(&getrf_lock); | |||||
| } | } | ||||
| } | } | ||||
| @@ -378,9 +377,9 @@ UNLOCK_COMMAND(&getrf_lock); | |||||
| MB; | MB; | ||||
| if (is + min_i >= m) { | if (is + min_i >= m) { | ||||
| LOCK_COMMAND(&getrf_lock); | |||||
| LOCK_COMMAND(&getrf_lock); | |||||
| job[current].working[mypos][CACHE_LINE_SIZE * bufferside] = 0; | job[current].working[mypos][CACHE_LINE_SIZE * bufferside] = 0; | ||||
| UNLOCK_COMMAND(&getrf_lock); | |||||
| UNLOCK_COMMAND(&getrf_lock); | |||||
| } | } | ||||
| } | } | ||||