diff --git a/interface/lapack/gesv.c b/interface/lapack/gesv.c index 546c2bed2d..51a38de60d 100644 --- a/interface/lapack/gesv.c +++ b/interface/lapack/gesv.c @@ -107,21 +107,33 @@ int NAME(blasint *N, blasint *NRHS, FLOAT *a, blasint *ldA, blasint *ipiv, #ifndef PPC440 buffer = (FLOAT *)blas_memory_alloc(1); - + sa = (FLOAT *)((BLASLONG)buffer + GEMM_OFFSET_A); sb = (FLOAT *)(((BLASLONG)sa + ((GEMM_P * GEMM_Q * COMPSIZE * SIZE + GEMM_ALIGN) & ~GEMM_ALIGN)) + GEMM_OFFSET_B); #endif #ifdef SMP args.common = NULL; -#ifndef DOUBLE - if (args.m*args.n < 40000) + +#if defined(_WIN64) && defined(_M_ARM64) + #ifdef COMPLEX + if (args.m * args.n > 600) + #else + if (args.m * args.n > 1000) + #endif + args.nthreads = num_cpu_avail(4); + else + args.nthreads = 1; #else - if (args.m*args.n < 10000) + #ifndef DOUBLE + if (args.m * args.n < 40000) + #else + if (args.m * args.n < 10000) + #endif + args.nthreads = 1; + else + args.nthreads = num_cpu_avail(4); #endif - args.nthreads=1; - else - args.nthreads = num_cpu_avail(4); if (args.nthreads == 1) { #endif