gnu: Add rocm-opencl-runtime.
* gnu/packages/rocm.scm (rocm-opencl-runtime): New variable. * gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them.
parent
7221722dd5
commit
c0f10a5dd4
|
@ -1702,6 +1702,10 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \
|
%D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \
|
||||||
%D%/packages/patches/rnp-unbundle-googletest.patch \
|
%D%/packages/patches/rnp-unbundle-googletest.patch \
|
||||||
%D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
|
%D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
|
||||||
|
%D%/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch \
|
||||||
|
%D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
|
||||||
|
%D%/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch \
|
||||||
|
%D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
|
||||||
%D%/packages/patches/ruby-sanitize-system-libxml.patch \
|
%D%/packages/patches/ruby-sanitize-system-libxml.patch \
|
||||||
%D%/packages/patches/rust-1.19-mrustc.patch \
|
%D%/packages/patches/rust-1.19-mrustc.patch \
|
||||||
%D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
|
%D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
Add missing include dirs for ROCclr.
|
||||||
|
|
||||||
|
--- a/amdocl/CMakeLists.txt 2020-12-05 22:05:55.838529158 +0100
|
||||||
|
+++ b/amdocl/CMakeLists.txt 2020-12-05 22:07:35.677524507 +0100
|
||||||
|
@@ -23,6 +23,9 @@
|
||||||
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos)
|
||||||
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers)
|
||||||
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers/opencl2.2)
|
||||||
|
+include_directories(${ROCclr_DIR}/../../../include)
|
||||||
|
+include_directories(${ROCclr_DIR}/../../../include/compiler/lib/include/)
|
||||||
|
+include_directories(${ROCclr_DIR}/../../../include/elf/)
|
||||||
|
|
||||||
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
|
||||||
|
(CMAKE_${COMPILER}_COMPILER_ID MATCHES "Clang"))
|
|
@ -0,0 +1,28 @@
|
||||||
|
Do not build and install clinfo.
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
|
||||||
|
index 76847d3..3f62bfe 100644
|
||||||
|
--- a/CMakeLists.txt.orig
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -72,7 +72,7 @@ find_package(ROCclr REQUIRED CONFIG
|
||||||
|
|
||||||
|
add_subdirectory(khronos/icd)
|
||||||
|
add_subdirectory(amdocl)
|
||||||
|
-add_subdirectory(tools/clinfo)
|
||||||
|
+#add_subdirectory(tools/clinfo)
|
||||||
|
add_subdirectory(tools/cltrace)
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
add_subdirectory(tests/ocltst)
|
||||||
|
@@ -108,9 +108,9 @@ endif()
|
||||||
|
###--- Packaging ------------------------------------------------------------###
|
||||||
|
|
||||||
|
# MAIN package
|
||||||
|
-install(PROGRAMS $<TARGET_FILE:clinfo>
|
||||||
|
- DESTINATION bin
|
||||||
|
- COMPONENT MAIN)
|
||||||
|
+#install(PROGRAMS $<TARGET_FILE:clinfo>
|
||||||
|
+# DESTINATION bin
|
||||||
|
+# COMPONENT MAIN)
|
||||||
|
install(PROGRAMS $<TARGET_FILE:cltrace>
|
||||||
|
DESTINATION lib
|
||||||
|
COMPONENT MAIN)
|
|
@ -0,0 +1,25 @@
|
||||||
|
Do not build and install cltrace.
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
|
||||||
|
index c449db4..9cff673 100644
|
||||||
|
--- a/CMakeLists.txt.orig
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -73,7 +73,7 @@ find_package(ROCclr REQUIRED CONFIG
|
||||||
|
#add_subdirectory(khronos/icd)
|
||||||
|
add_subdirectory(amdocl)
|
||||||
|
#add_subdirectory(tools/clinfo)
|
||||||
|
-add_subdirectory(tools/cltrace)
|
||||||
|
+#add_subdirectory(tools/cltrace)
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
add_subdirectory(tests/ocltst)
|
||||||
|
endif()
|
||||||
|
@@ -108,9 +108,6 @@ endif()
|
||||||
|
#install(PROGRAMS $<TARGET_FILE:clinfo>
|
||||||
|
# DESTINATION bin
|
||||||
|
# COMPONENT MAIN)
|
||||||
|
-install(PROGRAMS $<TARGET_FILE:cltrace>
|
||||||
|
- DESTINATION lib
|
||||||
|
- COMPONENT MAIN)
|
||||||
|
install(PROGRAMS $<TARGET_FILE:amdocl64>
|
||||||
|
DESTINATION lib
|
||||||
|
COMPONENT MAIN)
|
|
@ -0,0 +1,63 @@
|
||||||
|
Do not build and install libOpenCL.
|
||||||
|
|
||||||
|
--- b/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -70,7 +70,7 @@
|
||||||
|
${ROCclr_DIR}
|
||||||
|
${LIBROCclr_STATIC_DIR})
|
||||||
|
|
||||||
|
-add_subdirectory(khronos/icd)
|
||||||
|
+#add_subdirectory(khronos/icd)
|
||||||
|
add_subdirectory(amdocl)
|
||||||
|
#add_subdirectory(tools/clinfo)
|
||||||
|
add_subdirectory(tools/cltrace)
|
||||||
|
@@ -93,9 +93,6 @@
|
||||||
|
OUTPUT_VARIABLE OPENCL_VERSION_GITDATE
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
-get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
|
||||||
|
-get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
|
||||||
|
-
|
||||||
|
find_package(ROCM QUIET CONFIG PATHS /opt/rocm)
|
||||||
|
|
||||||
|
if(ROCM_FOUND)
|
||||||
|
@@ -117,25 +114,6 @@
|
||||||
|
install(PROGRAMS $<TARGET_FILE:amdocl64>
|
||||||
|
DESTINATION lib
|
||||||
|
COMPONENT MAIN)
|
||||||
|
-install(PROGRAMS $<TARGET_FILE:OpenCL>
|
||||||
|
- DESTINATION lib
|
||||||
|
- COMPONENT MAIN)
|
||||||
|
-install(PROGRAMS $<TARGET_SONAME_FILE:OpenCL>
|
||||||
|
- DESTINATION lib
|
||||||
|
- COMPONENT MAIN)
|
||||||
|
-
|
||||||
|
-# DEV package
|
||||||
|
-install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL"
|
||||||
|
- DESTINATION include
|
||||||
|
- COMPONENT DEV
|
||||||
|
- USE_SOURCE_PERMISSIONS
|
||||||
|
- PATTERN cl_d3d10.h EXCLUDE
|
||||||
|
- PATTERN cl_d3d11.h EXCLUDE
|
||||||
|
- PATTERN cl_dx9_media_sharing.h EXCLUDE
|
||||||
|
- PATTERN cl_egl.h EXCLUDE)
|
||||||
|
-install(PROGRAMS $<TARGET_LINKER_FILE:OpenCL>
|
||||||
|
- DESTINATION lib
|
||||||
|
- COMPONENT DEV)
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# Packaging steps
|
||||||
|
--- a/khronos/icd/CMakeLists.txt 2020-06-07 16:05:32.425022904 +0200
|
||||||
|
+++ b/khronos/icd/CMakeLists.txt 2020-06-07 16:06:03.273022786 +0200
|
||||||
|
@@ -132,7 +132,7 @@
|
||||||
|
add_subdirectory (test)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-install (TARGETS OpenCL
|
||||||
|
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
+#install (TARGETS OpenCL
|
||||||
|
+# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
+# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
+# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
@ -253,3 +253,54 @@ applications to launch compute kernels to available HSA ROCm kernel agents.")
|
||||||
interact with to different backends such as ROCr or PAL. This abstraction
|
interact with to different backends such as ROCr or PAL. This abstraction
|
||||||
allows runtimes to work on Windows as well as on Linux without much effort.")
|
allows runtimes to work on Windows as well as on Linux without much effort.")
|
||||||
(license license:ncsa)))
|
(license license:ncsa)))
|
||||||
|
|
||||||
|
(define-public rocm-opencl-runtime
|
||||||
|
(package
|
||||||
|
(name "rocm-opencl-runtime")
|
||||||
|
(version %rocm-version)
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime.git")
|
||||||
|
(commit (string-append "rocm-" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1cglpiaj3ny1z74ssmy6j63vj92sfy4q38ix6qsga0mg3b2wvqz3"))
|
||||||
|
(patches
|
||||||
|
(search-patches
|
||||||
|
"rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch"
|
||||||
|
;; Do not install libOpenCL, which ocl-icd provides.
|
||||||
|
"rocm-opencl-runtime-4.3-noopencl.patch"
|
||||||
|
;; Guix includes a program clinfo already.
|
||||||
|
"rocm-opencl-runtime-4.3-noclinfo.patch"
|
||||||
|
;; cltrace linking fails, remove it.
|
||||||
|
"rocm-opencl-runtime-4.3-nocltrace.patch"))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
|
(arguments
|
||||||
|
`(#:tests? #f ; Not sure how to run them.
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'install 'create-icd
|
||||||
|
;; Manually install ICD, which simply consists of dumping
|
||||||
|
;; the path of the .so into the correct file.
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(vendors (string-append out "/etc/OpenCL/vendors"))
|
||||||
|
(sopath (string-append out "/lib/libamdocl64.so")))
|
||||||
|
(mkdir-p vendors)
|
||||||
|
(with-output-to-file (string-append vendors "/amdocl64.icd")
|
||||||
|
(lambda _ (display sopath)))))))))
|
||||||
|
(inputs
|
||||||
|
`(("mesa" ,mesa)
|
||||||
|
("rocm-comgr" ,rocm-comgr)
|
||||||
|
("rocr-runtime" ,rocr-runtime)
|
||||||
|
("rocclr" ,rocclr)
|
||||||
|
("ocl-icd" ,ocl-icd)
|
||||||
|
("glew" ,glew)))
|
||||||
|
(native-inputs `())
|
||||||
|
(home-page "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime")
|
||||||
|
(synopsis "ROCm OpenCL Runtime")
|
||||||
|
(description "OpenCL 2.0 compatible language runtime, supporting offline
|
||||||
|
and in-process/in-memory compilation.")
|
||||||
|
(license license:ncsa)))
|
||||||
|
|
Reference in New Issue