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
Member

@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.
@danieldk danieldk requested a review from jonringer Sep 6, 2020
'';

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

This comment has been minimized.

@bhipple

bhipple Sep 7, 2020
Contributor

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

This comment has been minimized.

@danieldk

danieldk Sep 7, 2020
Author Member

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

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
19 checks passed
19 checks passed
tests tests
Details
action
Details
blis, blis.passthru.tests on aarch64-linux No attempt
Details
Evaluation Performance Report Evaluator Performance Report
Details
Wait for ofborg
Details
blis, blis.passthru.tests on x86_64-linux Success
Details
grahamcofborg-eval ^.^!
Details
grahamcofborg-eval-check-maintainers matching changed paths to changed attrs...
Details
grahamcofborg-eval-check-meta config.nix: checkMeta = true
Details
grahamcofborg-eval-darwin nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./pkgs/t
Details
grahamcofborg-eval-lib-tests nix-build --arg pkgs import ./. {} ./lib/tests/release.nix
Details
grahamcofborg-eval-nixos nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./nixos/
Details
grahamcofborg-eval-nixos-manual nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./nixos/
Details
grahamcofborg-eval-nixos-options nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./nixos/
Details
grahamcofborg-eval-nixpkgs-manual nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./pkgs/t
Details
grahamcofborg-eval-nixpkgs-tarball nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./pkgs/t
Details
grahamcofborg-eval-nixpkgs-unstable-jobset nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="aeb5951"; rev="aeb5951978f29358bcf145d30e527398af67a463"; } ./pkgs/t
Details
grahamcofborg-eval-package-list nix-env -qa --json --file .
Details
grahamcofborg-eval-package-list-no-aliases nix-env -qa --json --file . --arg config { allowAliases = false; }
Details
@danieldk danieldk deleted the danieldk:blis-0.7.0 branch Sep 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants
You can’t perform that action at this time.