Merge pull request #4585 from martin-frbg/issue1881

Cap the number of parallel threads for GEMM;GETRF and POTRF to ensure sensible workloads on big systems
This commit is contained in:
Martin Kroeker
2024-04-03 18:35:16 +02:00
committed by GitHub
3 changed files with 25 additions and 12 deletions

View File

@@ -95,14 +95,19 @@ int NAME(blasint *M, blasint *N, FLOAT *a, blasint *ldA, blasint *ipiv, blasint
#ifdef SMP
args.common = NULL;
#ifndef DOUBLE
if (args.m*args.n < 40000)
#else
if (args.m*args.n < 10000)
int nmax = 40000;
#else
int nmax = 10000;
#endif
args.nthreads=1;
else
args.nthreads = num_cpu_avail(4);
if (args.m*args.n <nmax) {
args.nthreads = 1;
} else {
args.nthreads = num_cpu_avail(4);
if ((args.m*args.n)/args.nthreads <nmax)
args.nthreads = (args.m*args.n)/nmax;
}
if (args.nthreads == 1) {
#endif

View File

@@ -113,13 +113,17 @@ int NAME(char *UPLO, blasint *N, FLOAT *a, blasint *ldA, blasint *Info){
#ifdef SMP
args.common = NULL;
#ifndef DOUBLE
if (args.n <128)
#else
if (args.n <64)
int nmax = 128;
#else
int nmax = 64;
#endif
if (args.n <nmax) {
args.nthreads = 1;
else
args.nthreads = num_cpu_avail(4);
} else {
args.nthreads = num_cpu_avail(4);
if (args.n/args.nthreads <nmax)
args.nthreads = args.n/nmax;
}
if (args.nthreads == 1) {
#endif