Git Product home page Git Product logo

Comments (7)

sarthakpati avatar sarthakpati commented on May 18, 2024 2

The reason why I had them together was because they are essentially related projects. In any case, I can do what you are suggesting without a problem.

from vcpkg.

saedrna avatar saedrna commented on May 18, 2024 2

Because vcpkg is lacking a blas/lapack port, this makes many libraries in scientific computing hard to port to vcpkg.

I am thinking that why not directly use a prebuild binary from openblas sourceforge repo? Because openblas is C, fortran and asm, all of them are ABI safe for different MSVC versions. This is much simpler.

from vcpkg.

traversaro avatar traversaro commented on May 18, 2024

I looked into this recently, but I do not plan to work on it anymore in the near future, so I provide by findings if anyone wants to continue working on this.

First of all, the lapack and blas reference implementation are distributed as a unique source archive [1], so I think it make sense to distribute them as a single vcpkg port. The usage of alternative OpenBLAS implementation is typically handled at loading time by tools such as update-alternatives [2] that are currently missing in vcpkg (marginally related issue: #164).
As an initial step, I would concentrate only on packaging the blas/lapack port, that I will simply call lapack.

The initial port prototype is available at :
https://github.com/traversaro/vcpkg/tree/add-lapack

It uses the gfortran (provided by mingw-w64 binaries [3]) compiler and the CMAKE_GNUtoMS [4] CMake option to convert the resulting shared libraries in a format compatible with MSVC. The problem is that the resulting dll are dynamically linked against the old msvcrt.dll instead of the proper modern crt.

I quickly checked this issue, and it seems to have been thoroughly investigated by the python community:

In particular, I think that the issue can now be partially solved, and the problems still remaining such as file descriptors should not affect a numeric library such as blas/lapack :

Another possible option is to link statically the CRT even on triplet that normally link it dynamically, but at the moment I can't fully evaluate the consequences of such a choice.

[1] : https://github.com/Reference-LAPACK/lapack
[2] : https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
[3] : https://mingw-w64.org/
[4] : https://blog.kitware.com/fortran-for-cc-developers-made-easier-with-cmake/

from vcpkg.

traversaro avatar traversaro commented on May 18, 2024

BLAS/LAPACK and OpenBLAS are separated projects. To avoid further confusion as in #294 (comment) , I suggest to rename this issue to cover just BLAS/LAPACK and eventually open a new one covering just OpenBLAS.

from vcpkg.

traversaro avatar traversaro commented on May 18, 2024

Thanks @sarthakcbica !

from vcpkg.

KindDragon avatar KindDragon commented on May 18, 2024

This feature can be closed now?

from vcpkg.

sarthakpati avatar sarthakpati commented on May 18, 2024

@KindDragon - yes! thanks to @saedrna for his work.

from vcpkg.

Related Issues (20)

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.