about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authormarkuskowa <markus.kowalewski@gmail.com>2023-05-26 14:49:42 +0200
committerGitHub <noreply@github.com>2023-05-26 14:49:42 +0200
commitb1dae64b54756a85d8e7df9afebb1f6cb79ececf (patch)
treeb2b89e6e304c994fae012939ae96b5194223069e /pkgs/development
parent80264b939dcea4e69a277ee5eb37414687731e79 (diff)
parenta615eb5a75f5892439ee71c9f645022b2acdca7e (diff)
Merge pull request #233834 from sheepforce/taco
taco: init at 02-08-2022_unstable
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/libraries/taco/default.nix54
-rw-r--r--pkgs/development/libraries/taco/taco.patch13
2 files changed, 67 insertions, 0 deletions
diff --git a/pkgs/development/libraries/taco/default.nix b/pkgs/development/libraries/taco/default.nix
new file mode 100644
index 0000000000000..1bd404806f107
--- /dev/null
+++ b/pkgs/development/libraries/taco/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, lib
+, fetchgit
+, cmake
+, llvmPackages
+, enablePython ? false
+, python ? null
+}:
+
+let pyEnv = python.withPackages (p: with p; [ numpy scipy ]);
+
+in stdenv.mkDerivation rec {
+  pname = "taco";
+  version = "unstable-2022-08-02";
+
+  src = fetchgit {
+    url = "https://github.com/tensor-compiler/${pname}.git";
+    rev = "2b8ece4c230a5f0f0a74bc6f48e28edfb6c1c95e";
+    fetchSubmodules = true;
+    hash = "sha256-PnBocyRLiLALuVS3Gkt/yJeslCMKyK4zdsBI8BFaTSg=";
+  };
+
+  # Remove test cases from cmake build as they violate modern C++ expectations
+  patches = [ ./taco.patch ];
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = lib.optional stdenv.isDarwin llvmPackages.openmp;
+
+  propagatedBuildInputs = lib.optional enablePython pyEnv;
+
+  cmakeFlags = [
+    "-DOPENMP=ON"
+  ] ++ lib.optional enablePython "-DPYTHON=ON" ;
+
+  postInstall = lib.strings.optionalString enablePython ''
+    mkdir -p $out/${python.sitePackages}
+    cp -r lib/pytaco $out/${python.sitePackages}/.
+  '';
+
+  # The standard CMake test suite fails a single test of the CLI interface.
+  doCheck = false;
+
+  # Cython somehow gets built with references to /build/.
+  # However, the python module works flawlessly.
+  dontFixup = enablePython;
+
+  meta = with lib; {
+    description = "Computes sparse tensor expressions on CPUs and GPUs";
+    license = licenses.mit;
+    homepage = "https://github.com/tensor-compiler/taco";
+    maintainers = [ maintainers.sheepforce ];
+  };
+}
diff --git a/pkgs/development/libraries/taco/taco.patch b/pkgs/development/libraries/taco/taco.patch
new file mode 100644
index 0000000000000..1fc61c2aa5ad0
--- /dev/null
+++ b/pkgs/development/libraries/taco/taco.patch
@@ -0,0 +1,13 @@
+diff --git a/test/tests-tensor_types.cpp b/test/tests-tensor_types.cpp
+index 39d1b30a..c507da81 100644
+--- a/test/tests-tensor_types.cpp
++++ b/test/tests-tensor_types.cpp
+@@ -45,7 +45,7 @@ TYPED_TEST_P(VectorTensorTest, types) {
+   ASSERT_EQ(t, a.getComponentType());
+   ASSERT_EQ(1, a.getOrder());
+   ASSERT_EQ(5, a.getDimension(0));
+-  map<vector<int>,TypeParam> vals = {{{0}, 1.0}, {{2}, 2.0}};
++  map<vector<int>,TypeParam> vals = {{{0}, (TypeParam)1.0}, {{2}, (TypeParam)2.0}};
+   for (auto& val : vals) {
+     a.insert(val.first, val.second);
+   }