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

blis: init at 0.7.0 #97137

Merged
merged 2 commits into from Sep 8, 2020
Merged

blis: init at 0.7.0 #97137

merged 2 commits into from Sep 8, 2020

Conversation

danieldk
Copy link
Contributor

@danieldk danieldk commented Sep 4, 2020

Motivation for this change

Add the BLIS linear algebra library, which also implements the (C)BLAS interface. This is an alternative to the amd-blis derivation and also has (working) kernels for Intel CPUs.

Tested by building PyTorch with BLIS. Performance of a large transformer network is on-par with Intel MKL.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

'';

meta = with stdenv.lib; {
description = "BLAS-compatible linear algebra library";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we update the alternatives section of the manual to note this as an overlay choice?

https://hydra.nixos.org/build/126593072/download/1/nixpkgs/manual.html#sec-overlays-alternatives

Copy link
Contributor Author

@danieldk danieldk Sep 7, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a commit that adds AMD BLIS to that section.

We should probably also add a warning to the MKL item (in a separate PR) that it currently does not make much sense to use it on non-Intel CPUs without further precautions. Except for dgemm, MKL will currently use slow SSE kernels on e.g. AMD Zen and the old MKL_DEBUG_CPU_TYPE workaround was removed in 2020.1. It's still possible to circumvent the Intel check, but it's a bit more involved now. This is all a big shame, because you can easily get a 50% performance improvement by using PyTorch with MKL, because it will use batched GEMM. With other BLAS libraries, PyTorch will just use normal GEMM and there will be no batch-level parallelization except for very small matrices (probably because batched GEMM is more involved in order to not trash the caches).

Copy link
Contributor

@jonringer jonringer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
was also able to build manual

https://github.com/NixOS/nixpkgs/pull/97137
1 package built:
blis

@danieldk danieldk merged commit 466522c into NixOS:master Sep 8, 2020
@danieldk danieldk deleted the blis-0.7.0 branch September 8, 2020 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants