From 45edd3b41848f57e9863c0b4c3aa2d0cc2d24350 Mon Sep 17 00:00:00 2001 From: Daniƫl de Kok Date: Thu, 16 Jul 2020 20:23:05 +0200 Subject: nixos/manual: add a section about enabling OpenCL for AMD GPUs - Begin a new chapter "GPU Acceleration", this should also cover VA-API, OpenGL, Vulkan, etc. - Add a general blurb about OpenCL and how to check whether OpenCL devices are found. - Add a section about enabling OpenCL for AMD GPUs specifically. --- nixos/doc/manual/configuration/configuration.xml | 1 + nixos/doc/manual/configuration/gpu-accel.xml | 104 +++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 nixos/doc/manual/configuration/gpu-accel.xml (limited to 'nixos') diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index 507d28814ea..6eb8f50baca 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -18,6 +18,7 @@ + diff --git a/nixos/doc/manual/configuration/gpu-accel.xml b/nixos/doc/manual/configuration/gpu-accel.xml new file mode 100644 index 00000000000..61229390d07 --- /dev/null +++ b/nixos/doc/manual/configuration/gpu-accel.xml @@ -0,0 +1,104 @@ + + GPU acceleration + + + NixOS provides various APIs that benefit from GPU hardware + acceleration, such as VA-API and VDPAU for video playback; OpenGL and + Vulkan for 3D graphics; and OpenCL for general-purpose computing. + This chapter describes how to set up GPU hardware acceleration (as far + as this is not done automatically) and how to verify that hardware + acceleration is indeed used. + + + + Most of the aforementioned APIs are agnostic with regards to which + display server is used. Consequently, these instructions should apply + both to the X Window System and Wayland compositors. + + +
+ OpenCL + + + OpenCL is a + general compute API. It is used by various applications such as + Blender and Darktable to accelerate certain operations. + + + + OpenCL applications load drivers through the Installable Client + Driver (ICD) mechanism. In this mechanism, an ICD file + specifies the path to the OpenCL driver for a particular GPU family. + In NixOS, there are two ways to make ICD files visible to the ICD + loader. The first is through the OCL_ICD_VENDORS + environment variable. This variable can contain a directory which + is scanned by the ICL loader for ICD files. For example: + + $ export \ + OCL_ICD_VENDORS=`nix-build '<nixpkgs>' --no-out-link -A rocm-opencl-icd`/etc/OpenCL/vendors/ + + + + The second mechanism is to add the OpenCL driver package to + . This links the + ICD file under /run/opengl-driver, where it will + be visible to the ICD loader. + + + + The proper installation of OpenCL drivers can be verified through + the clinfo command of the clinfo + package. This command will report the number of hardware devides + that is found and give detailed information for each device: + + + $ clinfo | head -n3 +Number of platforms 1 +Platform Name AMD Accelerated Parallel Processing +Platform Vendor Advanced Micro Devices, Inc. + +
+ AMD + + + Modern AMD Graphics + Core Next (GCN) GPUs are supported through the + rocm-opencl-icd package. Adding this package to + enables OpenCL + support. However, OpenCL Image support is provided through the + non-free rocm-runtime-ext package. This package can + be added to the same configuration option, but requires that + allowUnfree option is is enabled for nixpkgs. Full + OpenCL support on supported AMD GPUs is thus enabled as follows: + + = [ + rocm-opencl-icd + rocm-runtime-ext +]; + + + + It is also possible to use the OpenCL Image extension without a + system-wide installation of the rocm-runtime-ext + package by setting the ROCR_EXT_DIR environment + variable to the directory that contains the extension: + + $ export \ +ROCR_EXT_DIR=`nix-build '<nixpkgs>' --no-out-link -A rocm-runtime-ext`/lib/rocm-runtime-ext + + + + With either approach, you can verify that OpenCL Image support + is indeed working with the clinfo command: + + $ clinfo | grep Image + Image support Yes + +
+
+
-- cgit 1.4.1