rocmPackages.clr: Add OpenCL test
Add a test that runs a simple OpenCL example on the GPU. Run with `eval $(nix-build -A rocmPackages.impureTests.opencl-example)`.
This commit is contained in:
parent
116bc09a7d
commit
01cada7dc6
3 changed files with 81 additions and 3 deletions
|
@ -147,10 +147,13 @@ in stdenv.mkDerivation (finalAttrs: {
|
|||
};
|
||||
|
||||
impureTests = {
|
||||
clr-icd = callPackage ./test.nix {
|
||||
rocm-smi = callPackage ./test-rocm-smi.nix {
|
||||
inherit rocm-smi;
|
||||
clr = finalAttrs.finalPackage;
|
||||
};
|
||||
opencl-example = callPackage ./test-opencl-example.nix {
|
||||
clr = finalAttrs.finalPackage;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
75
pkgs/development/rocm-modules/5/clr/test-opencl-example.nix
Normal file
75
pkgs/development/rocm-modules/5/clr/test-opencl-example.nix
Normal file
|
@ -0,0 +1,75 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, makeImpureTest
|
||||
, fetchFromGitHub
|
||||
, clr
|
||||
, cmake
|
||||
, pkg-config
|
||||
, glew
|
||||
, freeglut
|
||||
, opencl-headers
|
||||
, ocl-icd
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
examples = stdenv.mkDerivation {
|
||||
pname = "amd-app-samples";
|
||||
version = "2018-06-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OpenCL";
|
||||
repo = "AMD_APP_samples";
|
||||
rev = "54da6ca465634e78fc51fc25edf5840467ee2411";
|
||||
hash = "sha256-qARQpUiYsamHbko/I1gPZE9pUGJ+3396Vk2n7ERSftA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [ glew freeglut opencl-headers ocl-icd ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
# Example path is bin/x86_64/Release/cl/Reduction/Reduction
|
||||
cp -r bin/*/*/*/*/* $out/bin/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
cmakeFlags = [ "-DBUILD_CPP_CL=OFF" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Samples from the AMD APP SDK (with OpenCRun support) ";
|
||||
homepage = "https://github.com/OpenCL/AMD_APP_samples";
|
||||
license = licenses.bsd2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = lib.teams.rocm.members;
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
makeImpureTest {
|
||||
name = "opencl-example";
|
||||
testedPackage = "rocmPackages_5.clr";
|
||||
|
||||
sandboxPaths = [ "/sys" "/dev/dri" "/dev/kfd" ];
|
||||
|
||||
nativeBuildInputs = [ examples ];
|
||||
|
||||
OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors";
|
||||
|
||||
testScript = ''
|
||||
# Examples load resources from current directory
|
||||
cd ${examples}/bin
|
||||
echo OCL_ICD_VENDORS=$OCL_ICD_VENDORS
|
||||
pwd
|
||||
|
||||
HelloWorld | grep HelloWorld
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = teams.rocm.members;
|
||||
};
|
||||
}
|
|
@ -6,8 +6,8 @@
|
|||
}:
|
||||
|
||||
makeImpureTest {
|
||||
name = "clr-icd";
|
||||
testedPackage = "rocmPackages.clr";
|
||||
name = "rocm-smi";
|
||||
testedPackage = "rocmPackages_5.clr";
|
||||
nativeBuildInputs = [ clinfo rocm-smi ];
|
||||
OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors";
|
||||
|
Loading…
Reference in a new issue