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

Benchmark removal of libblas dependency #787

Open
MatthiasSchmidtblaicherQC opened this issue Apr 27, 2024 · 2 comments
Open

Benchmark removal of libblas dependency #787

MatthiasSchmidtblaicherQC opened this issue Apr 27, 2024 · 2 comments

Comments

@MatthiasSchmidtblaicherQC
Copy link
Contributor

We already don't install libblas on macOS because it is not available there. We should benchmark if it brings any benefit to Windows or ubuntu machines and, if not, remove it entirely. This would obviate the need for a separate environment specification on macOS.

@MarcAntoineSchmidtQC
Copy link
Member

I investigated this. I ran a benchmark problem on a linux machine with and without this line. The difference was significant (3.27 seconds vs 3.01 seconds), with many iterations showing the same results.

I found out a couple of things while doing this:

  • This dependency is installed no matter what. The only thing this line does is to force the installation of the intel MKL version of it. On Mac with the Apple silicon, this is not available because MKL is based on x86_64 architecture.
  • On osx_arm64, we have the openblas (default) and the accelerate version of these libraries. I tested switching to accelerate and it did not provide any runtime benefit.

It's unfortunate that the environment.yml file does not allow for an OS-specific dependency. While the runtime difference is significant, it has no impact on the conda or pypi package. I suggest that we remove this dependency from the environment.yml file, and suggest installing mkl in a section of the readme for speedup.

@stanmart
Copy link
Collaborator

stanmart commented May 29, 2024

If we were to switch to pixi for installing the dev environment, then we could do platform-specific dependencies and lockfiles both of which quite useful for reproducible benchmarking. Would this be an option in the future?

Edit: I also find it simpler when setting up an environment with tabmat and glum both installed in editable mode.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants