Coder Social home page Coder Social logo

sympiler / nasoq Goto Github PK

View Code? Open in Web Editor NEW
70.0 70.0 18.0 1.37 MB

NASOQ:Numerically Accurate Sparsity Oriented QP Solver

Home Page: https://nasoq.github.io/

License: MIT License

CMake 13.53% C++ 83.69% Shell 2.58% MATLAB 0.19%
geometry-processing high-performance-computing linear-algebra machine-learning model-predictive-control model-reconstruction physics-simulation quadratic-programming robotics scientific-computing shape-deformation siggraph solvers sparse-linear-systems sparse-matrix

nasoq's Introduction

APM example workflow example workflow

Sympiler

Sympiler is a code generator for transforming sparse matrix methods. To access the list of publication and resources please visit: http://www.sympiler.com/

Quick Build Guide for Impatient Users

If you have CMake 3.16 or higher and a C++11 compiler, then:

git  clone --recursive https://github.com/sympiler/sympiler.git
cd sympiler
cmake -DCMAKE_BUILD_TYPE=Release  -S . -B build
cmake --build build --config Release -j 6 

For details, please see the table below.

Table of Contents:

nasoq's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nasoq's Issues

make install

Strictly speaking, no make install target is provided

cmake 3.10

The default cmake version of ubuntu 18.04 is 3.10. Does this version support

B->nzmax is not initialized when a problem has no inequality constraints

When B is empty, B->nzmax is never set, leading to it containing garbage values (which are then read and used during the NASOQ solve).

Changing

   if (B->nrow > 0) {
    B->nzmax = Bp[B_col];
   }

to

   if (B->nrow > 0) {
    B->nzmax = Bp[B_col];
   }
   else
   {
       B->nzmax = 0;
   }

on line 193 of nasoq.h fixes the problem.

MATLAB interface

Hi, is there any link to download the precompiled MATLAB binaries (in windows 64bit) without building from sources?

Python bindings?

Nice solver here ๐Ÿ˜ƒ Do you have plans to provide Python bindings?

If those become available I'd be happy to add them to the qpsolvers suite. I believe you would have many users there eager to try it out.

NASOQ contains LGPL code

NASOQ says it is MIT licensed, but comments in mgmres.cpp say that code is LGPL. I don't think re-licensing someone else's LGPL code as MIT is valid/legal.

Suspicious warning

ldlt_check.h:78:3: warning: 'delete[]' applied to a pointer that was allocated with 'new'; did you mean 'delete'?
      [-Wmismatched-new-delete]
  delete[]L_csc;
  ^     ~~
         
nasoq/ldl/ldlt_check.h:23:16: note: allocated with 'new' here
  CSC *L_csc = new CSC;

Is this code correct? Might be a leak

Take one iteration at a time and/or fire callback at each iteration

Is it possible to:

set up the NASOQ solver without taking iterations 
// do some of my code
take a single iteration of the NASOQ solver
// do some of my code
take a single iteration of the NASOQ solver
...

?

Alternatively, could I give a NASOQ a callback mycode(x) that will be called with the current solution/state of the NASOQ solver after each of its iteration?

Dubious lines of code

I caught these while trying to compile on Windows. I didn't fix them myself since I didn't want to break anything intentional:

  • Sym_BLAS.h line 419: == should be =?
  • Util.h line 764: int i = Ap[i] does not make sense
  • Util.h line 1185: status is never set
  • updown_test.h line 111: status is never set
  • linear_solver_wrapper.h line 422: status is never set
  • nasoq.h line 386: max_v and min_v are uninitialized
  • Util.h line 375: no return value
  • Util.h line 567: no return value
  • nasoq_driver.cpp line 309: no return value
  • linear_solver_wrapper.h line 849: no return value
  • qp_format_converter.h line 433: no return value
  • Util.h line 972: std::setprecision doesn't do anything unless fed into std::cout
  • qp_format_converter.h line 535: ditto
  • Util.h line 761: reads past the end of row_len array

low-rank update

Hi, Dr Cheshmi, I'm interested in your excellent work. I want to know that, when I take low-rank update of SPD using nasoq pakage, how can I change the "linear_solver_warpper.cpp"? Thank you!

TBB instead of OpenMP

I'd like to integrate nasoq into a larger piece of code that is using TBB for multithreading. I'm thinking of forking nasoq and replacing all openmp parallelism with TBB.

I'm nervous to stray to far from the official nasoq branch. The easiest solution would be if the official branch would consider merging this OpenMP with TBB replacement. Is there a special reason to use OpenMP instead of TBB?

Alternatively, it might be possible to abstract the code to take either openmp or tbb (e.g., via compiler flags).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.