Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BLAS/LAPACK Binaries #23

Closed
sarthakpati opened this issue Sep 20, 2016 · 7 comments
Closed

BLAS/LAPACK Binaries #23

sarthakpati opened this issue Sep 20, 2016 · 7 comments
Labels
category:new-port The issue is requesting a new library to be added; consider making a PR!

Comments

@sarthakpati
Copy link
Contributor

Libraries taking advantage of these would be great!

@ras0219-msft ras0219-msft added the category:new-port The issue is requesting a new library to be added; consider making a PR! label Sep 30, 2016
@tkelman tkelman mentioned this issue Dec 6, 2016
@traversaro
Copy link
Contributor

traversaro commented Feb 4, 2017

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/

@willyd willyd mentioned this issue Feb 20, 2017
@traversaro
Copy link
Contributor

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.

@sarthakpati
Copy link
Contributor Author

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.

@sarthakpati sarthakpati changed the title BLAS/LAPACK/OpenBLAS BLAS/LAPACK Feb 20, 2017
@sarthakpati sarthakpati changed the title BLAS/LAPACK BLAS/LAPACK Binaries Feb 20, 2017
@traversaro
Copy link
Contributor

Thanks @sarthakcbica !

@saedrna
Copy link
Contributor

saedrna commented Mar 21, 2017

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.

@KindDragon
Copy link
Contributor

This feature can be closed now?

@sarthakpati
Copy link
Contributor Author

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

strega-nil added a commit to strega-nil/vcpkg that referenced this issue May 5, 2021
* [osx] add support for rosetta

When running an x64 vcpkg binary on arm64, we should still have host processor be arm64

* depend on get_host_processor in system_triplet

* format

* handle default case

* include header

* Robert CRs
strega-nil added a commit to strega-nil/vcpkg that referenced this issue May 5, 2021
The following PRs are included:

* hopefully fix crash in constraints (microsoft#60)
* [vcpkg] allow --version to check the version (microsoft#50)
* Remove baseline warning (microsoft#27)
* [git] always pass autocrlf=false (microsoft#58)
* ignore QtCreator CMake project files (microsoft#54)
* ignore .DS_store files (microsoft#53)
* [vcpkg] x-add-version now also checks if the manifest file is properly formatted (microsoft#43)
* hopefully fix ci issue microsoft#16773 (microsoft#34)
* Add docs to set VCPKG_ROOT to run tests (microsoft#45)
* [vcpkg] x-add-version improve speed by calling get_builtin_baseline only once (microsoft#44)
* add clang-format version to format-cxxcode (microsoft#41)
* [vcpkg] Introduce experimental workaround X_VCPKG_NUGET_ID_PREFIX (microsoft#40)
* [supports] Add `native` identifier expression and x-check-support command (microsoft#29)
* [metrics] Split reporting of installs into name:triplet (microsoft#39)
* [vcpkg] Improve error when accessing missing feature (microsoft#38)
* [vcpkg] Allow shallow git registries (microsoft#37)
* Disable git autocrlf when archiving tree (microsoft#36)
* Use only named packages from extra registries (microsoft#35)
* [registries] add metrics (microsoft#30)
* Add vcpkg policy cmake helper port support (microsoft#17)
* [osx] add support for rosetta (microsoft#23)
* don't build tls12-download unless it's needed (microsoft#33)
* Add new telemetry points for versioning (microsoft#21)
* add cmake_minimum_required to vcpkg_tags (microsoft#25)
* [x-add-versions] Perform atomic replacement of versioning files (microsoft#28)
* [tools] support gsutil (microsoft#19)
* add CUDA 11.1 and 11.2 to KEEP_ENV_VARS defaults (microsoft#26)
* Add finite timeout on CURL metrics endpoint. (microsoft#22)
* fix UB in make_error_code(utf8_errc) (microsoft#18)
Be-ing added a commit to Be-ing/vcpkg that referenced this issue Oct 5, 2021
dempo93 pushed a commit to dempo93/vcpkg that referenced this issue Aug 23, 2022
Transition to IDLE changed and Unit Test extended
dempo93 pushed a commit to dempo93/vcpkg that referenced this issue Aug 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:new-port The issue is requesting a new library to be added; consider making a PR!
Projects
None yet
Development

No branches or pull requests

6 participants
@KindDragon @traversaro @saedrna @sarthakpati @ras0219-msft and others