Comments (15)
Then you can try to surround the solve() call with
Eigen::internal::set_is_malloc_allowed(false);
solver->solver();
Eigen::internal::set_is_malloc_allowed(true);
NOTE: Don't forget to compile in Debug
with EIGEN_RUNTIME_NO_MALLOC defined somewhere.
from proxsuite.
I tried with 3.4.0, allocations still happen. Here is the corresponding call graph:
@fabinsch You can find all relevant function names with allocations in the figure.
from proxsuite.
Seems to be eigen stuff. It has the nice Eigen::internal::set_is_malloc_allowed(false);
function to detect runtime allocations.
With https://gitlab.com/libeigen/eigen/-/merge_requests/1055 it even supports reallocs.
from proxsuite.
It is definitely Eigen, as the lowest node of the call graph above already reveals. This means, that Eigen is used wrong or has some unknown version incompatibility with ProxQP.
from proxsuite.
@fennel-labs Thanks for raising this issue.
Could you try with Eigen 3.4.0?
from proxsuite.
With @Bambade we checked the dense backend and we could find that we actually have some allocations in the dense factorize function. It fails if we set_malloc_allowed
to false
here.
from proxsuite.
@fennel-labs We have fixed the heap allocations in the code in #92.
Hope it will solve your issue.
from proxsuite.
@jcarpent I can confirm, that this fixes the issue under Eigen 3.4.0. With 3.3.4 heap allocations are still observed.
from proxsuite.
Could provide the call graph for 3.3.4 after the fix?
from proxsuite.
@fennel-labs I've just updated the PR with further fixes. Should be fine hopefully.
from proxsuite.
You were a minute faster than me, here is the call graph. I will try the new changes immediately.
from proxsuite.
@jcarpent Some allocations are still left:
from proxsuite.
@fennel-labs 2ec747d should fix the issue on Eigen 3.3.4
from proxsuite.
@jcarpent Yes, allocations are gone now for both, 3.3.4 and 3.4.0. Thank you so much!
from proxsuite.
Thanks @fennel-labs for the quick feedback. We really appreciate it.
from proxsuite.
Related Issues (20)
- Unable to install the package HOT 2
- step length $\alpha$
- does proxqp optimize the case when objective matrix(H) is dense but inequality constraint matrix(C) is very sparse, HOT 3
- How to specify a CPU time limit like qpOASES HOT 14
- Time consumption VS OSQP(with MPC problem) HOT 10
- Add support of nonconvex QPs HOT 1
- Build failure on ROS Buildfarm for Iron Binaries HOT 8
- ProxQP on old Clang/GCC HOT 8
- Potential typo when computing `primal_feasibility_in_rhs_0` in `global_primal_residual`? HOT 2
- Add a wheel for Apple M1 and Python 3.11 HOT 3
- Include failure: couldn't find "proxsuite/config.hpp" HOT 1
- Question about installation from source. HOT 4
- Too strict symmetric check in model.is_valid() HOT 2
- Any suggestion for setting params for float? HOT 2
- Building error HOT 20
- Detect infeasible QP problem before solving it HOT 2
- Dealing with CPU/GPU in QPFunctionFn's backward
- Type error about QPFunction with structurally infeasible HOT 5
- Question about the support of parallel HOT 1
- Fail to install by using python 3.12.2 and pip HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from proxsuite.