GithubHelp home page GithubHelp logo

permon / permonsvm Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 3.0 1.84 MB

PERMON SVM classifier (PermonSVM)

Home Page: http://permon.vsb.cz/permonsvm.htm

License: BSD 2-Clause "Simplified" License

Makefile 3.16% C 95.52% Shell 0.54% Python 0.78%

permonsvm's Introduction

PERMON toolbox

PERMON (Parallel Efficient Robust Modular Object Numerical) is a software toolbox for the scalable (parallel) solution of quadratic programming (QP) problems based on PETSc. It also includes domain decomposition methods (FETI and Total FETI) and Support Vector Machines (SVM) machine learning methods.

Project homepage: http://permon.vsb.cz

PERMON contains following modules:

  • PermonQP - this repository
    • solvers and routines for solution of QP problems
    • constrained (Total) FETI domain decomposition methods able to solve contact problems
  • PermonSVM - SVM machine learning implementation based on PermonQP - separate repository

Please use GitHub for issues and pull requests.

Quick guide to PERMON installation

  1. set environment variables PETSC_DIR and PETSC_ARCH pointing to a PETSc instance

    • PETSC_ARCH is empty in case of "prefix" PETSc installation
    • for more details about PETSc installation and the two environment variables, see PETSc documentation
  2. set PERMON_DIR variable pointing to the PERMON directory (probably this file's parent directory)

  3. build PERMON simply using makefile (makes use of PETSc buildsystem):

    make

  4. if the build is successful, there is a new subdirectory named $PETSC_ARCH, the program library is $PETSC_ARCH/lib/libpermon.{so,a}

    • shared library (.so) is built only if PETSc has been configured with option --with-shared-libraries
    • all compiler settings are inherited from PETSc

Documentation and examples

The documentation of the routines is available at http://permon.vsb.cz/documentation.htm. There are several examples in the tutorials directory illustrating the basic usage of both modules.

Supported PETSc versions

PERMON tries to support newest versions of PETSc as soon as possible. The releases are tagged with major.minor.sub-minor numbers. The major.minor numbers correspond to the major.minor release numbers of the supported PETSc version.

permonsvm's People

Contributors

haplav avatar jkruzik avatar mpecha avatar rtmills avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

permonsvm's Issues

test exbinfile_1+c fails with PETSc 3.14

test:
nsize: 4
args: -f $PERMON_SVM_DIR/src/tutorials/data/heart_scale.svmlight -f_test $PERMON_SVM_DIR/src/tutorials/data/heart_scale.t.svmlight

returns number of support vectors NSV=45 while the correct answer is NSV=44. This was traced to one component in the solution being 1e-18 (a numerical zero with lb = 0 <= x <= 1 = ub = C) while for the reference solution with 1 MPI rank the component is exactly 0. The support vectors are dermined by
TRY( VecWhichBetween(lb, x, ub, &svm_binary->is_sv) );

leading to one incorrectly identified SV.

SVMDatasetInfo is weird

  1. I think it should be called SVMDatasetView
  2. Why it takes Xt and y arguments when these are properties stashed in the SVM?
  3. Maybe the output can differ based on PetscViewerFormat of the viewer.

Fix code style

Fix code style according to PETSc style guide and remove/rename legacy macros/functions.

  • Replace TRY() with ierr= ;CHKERRQ(ierr);
  • Do not use a space after the ) in a cast or between the type and the * in a cast.
  • replace %f formatting string with %g and always cast to double
  • fix whitespace issues in function declarations, calls, and variable declarations
  • remove trailing whitespaces
  • remove #undef __FUNCT__ / #define __FUNCT__ (permon/permon#17)
  • remove FLLOP macros/functions in favour of PETSC macros/functions or rename them to PERMON (permon/permon#41)

The issues are valid also for PermonQP and should be fixed at the same time.

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.