From 2b41b90ace980cfa1ed79b9e60893532f37037a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannik=20B=C3=B6ttcher?= Date: Tue, 11 Jul 2023 21:25:13 +0200 Subject: [PATCH 1/2] opensycl: add maintainer --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 1cc16179a1d..1d5487728a0 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -17935,6 +17935,12 @@ githubId = 73759599; name = "Yaya"; }; + yboettcher = { + name = "Yannik Böttcher"; + github = "yboettcher"; + githubId = 39460066; + email = "yannikboettcher@outlook.de"; + }; ydlr = { name = "ydlr"; email = "ydlr@ydlr.io"; From 925cfb87a3353c5dec4a9435fbb8ea7b9a9b10c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannik=20B=C3=B6ttcher?= Date: Tue, 11 Jul 2023 21:26:02 +0200 Subject: [PATCH 2/2] opensycl: init at 0.9.4 --- .../compilers/opensycl/default.nix | 67 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 3 + 2 files changed, 70 insertions(+) create mode 100644 pkgs/development/compilers/opensycl/default.nix diff --git a/pkgs/development/compilers/opensycl/default.nix b/pkgs/development/compilers/opensycl/default.nix new file mode 100644 index 00000000000..d6f11798f19 --- /dev/null +++ b/pkgs/development/compilers/opensycl/default.nix @@ -0,0 +1,67 @@ +{ lib +, fetchFromGitHub +, llvmPackages_15 +, lld_15 +, rocm-device-libs +, python3 +, rocm-runtime +, cmake +, boost +, libxml2 +, libffi +, makeWrapper +, hip +, rocmSupport ? false +}: +let + inherit (llvmPackages_15) stdenv; +in +stdenv.mkDerivation rec { + pname = "OpenSYCL"; + version = "0.9.4"; + + src = fetchFromGitHub { + owner = "OpenSYCL"; + repo = "OpenSYCL"; + rev = "v${version}"; + sha256 = "sha256-5YkuUOAnvoAD5xDKxKMPq0B7+1pb6hVisPAhs0Za1ls="; + }; + + nativeBuildInputs = [ + cmake + makeWrapper + ]; + + buildInputs = [ + libxml2 + libffi + boost + llvmPackages_15.openmp + llvmPackages_15.libclang.dev + llvmPackages_15.llvm + ] ++ lib.optionals rocmSupport [ + hip + rocm-runtime + ]; + + # opensycl makes use of clangs internal headers. Its cmake does not successfully discover them automatically on nixos, so we supply the path manually + cmakeFlags = [ + "-DCLANG_INCLUDE_PATH=${llvmPackages_15.libclang.dev}/include" + ]; + + postFixup = '' + wrapProgram $out/bin/syclcc-clang \ + --prefix PATH : ${lib.makeBinPath [ python3 lld_15 ]} \ + --add-flags "-L${llvmPackages_15.openmp}/lib" \ + --add-flags "-I${llvmPackages_15.openmp.dev}/include" \ + '' + lib.optionalString rocmSupport '' + --add-flags "--rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode" + ''; + + meta = with lib; { + homepage = "https://github.com/OpenSYCL/OpenSYCL"; + description = "Multi-backend implementation of SYCL for CPUs and GPUs"; + maintainers = with maintainers; [ yboettcher ]; + license = licenses.bsd2; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc3904692e4..0b6dd1420c7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16902,6 +16902,9 @@ with pkgs; opensmalltalk-vm = callPackage ../development/compilers/opensmalltalk-vm { }; + opensycl = darwin.apple_sdk_11_0.callPackage ../development/compilers/opensycl { }; + opensyclWithRocm = opensycl.override { rocmSupport = true; }; + ravedude = callPackage ../development/tools/rust/ravedude { }; rhack = callPackage ../development/tools/rust/rhack { };