Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

## How to use multiprocessors?

Beginner
103 Views
I am testing MKL Sparse Solver PARDISO on linux with 8 processors. I've set the enviroment variable MKL_NUM_THREADS=8. However, the output keeps telling me it uses only processor(see enclosed below). Any idea what I did wrong?
Here is my make:
make sointel64 interface=lp64 compiler=gnu function=pardiso_sym_c
Here is the output:
```=== PARDISO is running in In-Core mode, because iparam(60)=0 ===

================  PARDISO: solving a  symmetric indef. system  ================

Summary PARDISO: ( reorder to reorder )
================

Times:
======
Time reorder: 0.000250 s
Time symbfct: 0.005507 s
Time malloc : 0.000074 s
Time total  : 0.006585 s total - sum: 0.000748 s

Statistics:
===========
< Parallel Direct Factorization with #processors: >         1
< Numerical Factorization with Level-3 BLAS performance >

< Linear system Ax = b>
#equations:                                     9
#non-zeros in A:                                19
non-zeros in A (%):                            23.456790

#right-hand sides:                              1

< Factors L and U >
#columns for each panel:                        128
#independent subgraphs:                         0
< Preprocessing with state of the art partitioning metis>
#supernodes:                                    6
size of largest supernode:                      4
number of nonzeros in L                       29
number of nonzeros in U                       1
number of nonzeros in L+U                     30

Reordering completed ...
Number of nonzeros in factors = 30
Number of factorization MFLOPS = 0 Percentage of computed non-zeros for LL^T factorization
0 %  3 %  13 %  24 %  31 %  44 %  100 %

================  PARDISO: solving a  symmetric indef. system  ================

Summary PARDISO: ( factorize to factorize )
================

Times:
======
Time A to LU: 0.000000 s
Time numfct : 0.001327 s
Time malloc : 0.000012 s
Time total  : 0.001343 s total - sum: 0.000004 s

Statistics:
===========
< Parallel Direct Factorization with #processors: >         1
< Numerical Factorization with Level-3 BLAS performance >

< Linear system Ax = b>
#equations:                                     9
#non-zeros in A:                                19
non-zeros in A (%):                            23.456790

#right-hand sides:                              1

< Factors L and U >
#columns for each panel:                        128
#independent subgraphs:                         0
< Preprocessing with state of the art partitioning metis>
#supernodes:                                    6
size of largest supernode:                      4
number of nonzeros in L                       29
number of nonzeros in U                       1
number of nonzeros in L+U                     30
gflop   for the numerical factorization:        0.000000

gflop/s for the numerical factorization:        0.000047

Factorization completed ...
================  PARDISO: solving a  symmetric indef. system  ================

Summary PARDISO: ( solve to solve )
================

Times:
======
Time solve  : 0.000047 s
Time total  : 0.000066 s total - sum: 0.000019 s

Statistics:
===========
< Parallel Direct Factorization with #processors: >         1
< Numerical Factorization with Level-3 BLAS performance >

< Linear system Ax = b>
#equations:                                     9
#non-zeros in A:                                19
non-zeros in A (%):                            23.456790

#right-hand sides:                              1

< Factors L and U >
#columns for each panel:                        128
#independent subgraphs:                         0
< Preprocessing with state of the art partitioning metis>
#supernodes:                                    6
size of largest supernode:                      4
number of nonzeros in L                       29
number of nonzeros in U                       1
number of nonzeros in L+U                     30
gflop   for the numerical factorization:        0.000000

gflop/s for the numerical factorization:        0.000047

Solve completed ...
The solution of the system is:
x [0] = -0.041860
x [1] = -0.003413
x [2] =  0.117250
x [3] = -0.112640
x [4] =  0.024172
x [5] = -0.107633
x [6] =  0.198720
x [7] =  0.190383
x [8] =  1.000000```

4 Replies
Employee
103 Views
Hi,
With best regards,
Beginner
103 Views
xeons03 270> make sointel64 interface=ilp64 compiler=gnu function=pardiso_sym_c

----- Compiling gnu_ilp64_parallel_intel64_so ----- pardiso_sym_c
gcc -m64 -w -DMKL_ILP64 -I"/opt/intel/Compiler/11.1/046/mkl/include" \
./source/pardiso_sym_c.c \
-L"/opt/intel/Compiler/11.1/046/mkl/lib/intel64" -lmkl_intel_ilp64 \
-lmkl_core \
-L"/opt/intel/Compiler/11.1/046/mkl/../lib/intel64" -liomp5 -lpthread -lm -o _results/gnu_ilp64_parallel_intel64_so/pardiso_sym_c.out
----- Execution gnu_ilp64_parallel_intel64_so ----- pardiso_sym_c
export LD_LIBRARY_PATH="/opt/intel/Compiler/11.1/046/mkl/lib/intel64":/opt/intel/Compiler/11.1/046/mkl/lib/em64t:/opt/intel/Compiler/11.1/046/mkl/../lib/intel64; \
_results/gnu_ilp64_parallel_intel64_so/pardiso_sym_c.out > _results/gnu_ilp64_parallel_intel64_so/pardiso_sym_c.res

Is it because my problem size is too small?
Employee
103 Views

More details on controlling# of threads using env variables can be found in the MKL user manual

http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/mklxe/mkl_userguide_lnx/...

--Vipin
Employee
103 Views
Hi,

You are correct, the task is too small and PARDISO decided to solve it using only 1 thread because there's no any benefit to use multithreading for such really small matrices.

Most likely, all is correct with threading in your program. Please just try to solvea matrix with substantially larger number of equations (say, more than one thousand).

Best regards,
Konstantin