利用库包Pardiso.jl求解方程组时,设置线程数的问题

在使用Pardiso.jl求解方程组时,想设置其求解时的线程数,进行多线程计算;但我利用 set_nprocs!(ps, i)设置时,不管我的i取多少, get_nprocs(ps)得到的线程数都为2。我更改julia自身的线程数Threads.nthreads为i,再运行结果还是2。现在不知道是哪里出错了,所以想问一下
下面是一个示例代码:

    using SparseArrays
    using Pardiso

    ps = MKLPardisoSolver()
    set_nprocs!(ps, 8)
    get_nprocs(ps)
    A = sparse(rand(1000, 1000))
    B = rand(1000, 2)
    X = zeros(1000, 2)
    solve!(ps, X, A, B) 

下面是示例的运行情况:

julia>  using SparseArrays

julia>  using Pardiso

julia> ps = MKLPardisoSolver()
MKLPardisoSolver:
        Matrix type: Real nonsymmetric
        Phase: Analysis, numerical factorization, solve, iterative refinement

julia>     set_nprocs!(ps, 8)

julia>     get_nprocs(ps)
2

julia>     A = sparse(rand(1000, 1000))
1000×1000 SparseMatrixCSC{Float64,Int64} with 1000000 stored entries:
  [1   ,    1]  =  0.536508
  [2   ,    1]  =  0.223994
  [3   ,    1]  =  0.27551
  [4   ,    1]  =  0.779583
  ⋮
  [996 , 1000]  =  0.475305
  [997 , 1000]  =  0.421885
  [998 , 1000]  =  0.818858
  [999 , 1000]  =  0.657867
  [1000, 1000]  =  0.713921

julia>     B = rand(1000, 2)
1000×2 Array{Float64,2}:
 0.758533  0.461676
 0.794269  0.646466
 0.145926  0.474638
 0.41682   0.709873
 0.478481  0.622945
 ⋮
 0.171621  0.74124
 0.257501  0.586585
 0.825143  0.253205
 0.600026  0.250749

julia>     X = zeros(1000, 2)
1000×2 Array{Float64,2}:
 0.0  0.0
 0.0  0.0
 0.0  0.0
 0.0  0.0
 0.0  0.0
 ⋮
 0.0  0.0
 0.0  0.0
 0.0  0.0
 0.0  0.0

julia>     solve!(ps, X, A, B)
1000×2 Array{Float64,2}:
 -0.771206   -3.50291
  0.0667699   0.425585
 -0.314671   -0.128101
  0.317924    2.32667
  1.53918     3.54766
  ⋮
  1.88157     1.41786
  1.09144    -1.20533
  1.64837     1.90146
  0.256798   -2.55176

https://github.com/JuliaSparse/Pardiso.jl#pardiso-60-1

好的谢谢,我使用的是ps = MKLPardisoSolver(),然后按照那里面的MKL Pardiso要设置线程数就直接使用 set_nprocs!(ps, 8)就可以了,但我使用了之后,再get_nprocs(ps)还是等于2。是我使用的不对吗?

确实有问题,建议问作者

好的谢谢,我再看一下

备案号:京ICP备17009874号-2