Replies: 10 comments
-
Are all of these issues happening when using MKL (regardless of thread limit), or does it happen with QDLDL also? |
Beta Was this translation helpful? Give feedback.
-
it happens both with |
Beta Was this translation helpful? Give feedback.
-
My team has been using osqp (release: 0.6.2, qdldl_solver) in multi-thread environment for a year now. We use osqp to solve qp problems (smoothing a given curve) concurrently, maximumly three threads at a time (three qp problems at once). You need to disable some features in osqp when you compile it. I remember that at least you need to disable printf in osqp (configured in CMakeList in osqp project). In our design, we encapsuled osqp in a C++ class and we used each instance (of this class) for each thread. |
Beta Was this translation helpful? Give feedback.
-
By the way, when to release osqp v1.0. We are still on 0.6.2 in a production environment. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
sadly, failed with large optimal objective value. |
Beta Was this translation helpful? Give feedback.
-
We are working towards a v1.0 release, and a beta before that, soon. I hope to have more information about that later this month. |
Beta Was this translation helpful? Give feedback.
-
@sizsJEon how are you calling OSQP multithreaded? Are you using the same solver, data, etc, or have you made sure each thread has its own data and solver instances? |
Beta Was this translation helpful? Give feedback.
-
If I understood the raisimGym collectly, I made each environment has its own data and instances. and I confirmed that very simple qp problems are well solved in each environment. |
Beta Was this translation helpful? Give feedback.
-
when I use solver as qdldl(basic), I got large or zero optimal objective values. (even with time_limit) when I use solver as MKL_PARDISO_SOLVER, (I also removed all static variables which could thread-unsafe) |
Beta Was this translation helpful? Give feedback.
-
Hello, I am trying to use osqp with raisim which is a dynamics simulator that supports multithreading (using openmp), and vectorized Environment.
https://github.com/raisimTech/raisimLib
but when I'm trying to solve multiple qp problems at the same time,
( 1 qp problem at each envirionment. You can think of osqp_setup and osqp_solve is run in each environment.)
it is not solved properly.
If I solve qp for 1 env. It works perfect.
If I solve qp for 1 env each in 2 terminal windows, it also works perfect.
But,
If I solve qp for 2 env. It fails.
If I solve qp for 2 env each in 2 terminal windows, it also fails.
The main phenomenon is that the optimal objective value becomes extremely large,
( ex: optimal objective: -11923575.8758. If solved normally, it is less than -2000,)
true / false values of polish and warm_start had no effect.
and when I set thread more than 1,
The method of using linsys_solver as MKL_PARDISO_SOLVER also failed at setup phase like below,
ERROR in init_linsys_solver_pardiso: Error during symbolic factorization: -3
ERROR in osqp_setup: Linear system solver initialization.
so my main question is,
osqp is not compatible with multi-threading?
it seems to be some memories are global variable or thread-suffled.
Beta Was this translation helpful? Give feedback.
All reactions