I have 4 tasks that are done independently by 4 cpu threads on a quad core cpu. They use the share memory to communicate. In each of these tasks I need to solve Ax=b with DSS. What I meant was if it is possible to call the same functions (from DSS routine) in the process of parallel threads? and if these call are run can be runsimultaneously?
The reason that I am asking this question is that, before this I was using my own LU solver, not DSS, and when I had 4 cpu threads the computation time reduced to onequarter in compare with a single thread computation, but now that I am using DSS at each thread I am not seeing any acceleration in compare with a single thread computation (with DSS)!!
Yes, it's possible to call DSS from different OpenMP threads, it's not a problem. As I see, you use 4 own threads and don;t need DSS/PARDISO to be threaded inside. In this case I would recommend you to link with MKL in sequential mode to reduce OpenMP-related overhead in MKL. But it should work for threaded MKL as well.
And of course, you will not observe any speed-up between a single DSS task and 4 DSS tasks ran in parallel. Your gain here is that you solve 4 tasks during the about the same time as you would solve 1 task.