ROCM.ECLASS
部分: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主内容
名称
rocm.eclass - 用于 ROCm 包的通用函数和变量,这些包是用 HIP 编写的描述
ROCm 包,如 sci-libs/<roc|hip>*,以及基于 ROCm 库构建的包,可以使用此 eclass 提供的变量和函数。 它通过 USE_EXPAND 处理 AMDGPU_TARGETS 变量,因此用户可以编辑 USE 标志来控制要编译的 GPU 架构。 使用 ${ROCM_USEDEP} 可以确保依赖项之间的一致性。 Ebuilds 可以调用函数 get_amdgpu_flag 将激活的目标转换为 GPU 编译标志,并将它们传递给配置。 函数 rocm_use_hipcc 将活动编译器切换到 hipcc 并清除不兼容的标志(这对 /etc/portage/make.conf 中仅包含 gcc 标志的用户很有用)。 函数 check_amdgpu 可以帮助 ebuild 在 src_test 阶段确保对 GPU 设备的读写权限,如果不可用,则会抛出友好的错误消息。 但是,src_configure 通常不应该访问任何 AMDGPU 设备。 如果它确实访问了,通常意味着 CMakeLists.txt 忽略了 AMDGPU_TARGETS,而倾向于自动检测的 GPU,这不是我们想要的。
支持的 EAPIS
8示例
ROCm 库的示例 ebuild,位于 https://github.com/ROCmSoftwarePlatform,它使用 cmake 进行构建和测试,并依赖于 rocBLASROCM_VERSION=${PV} inherit cmake rocm # ROCm libraries SRC_URI is usually in form of: SRC_URI="https://github.com/ROCmSoftwarePlatform/${PN}/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" S=${WORKDIR}/${PN}-rocm-${PV} SLOT="0/$(ver_cut 1-2)" IUSE="test" REQUIRED_USE="${ROCM_REQUIRED_USE}" RESTRICT="!test? ( test )" RDEPEND=" dev-util/hip sci-libs/rocBLAS:${SLOT}[${ROCM_USEDEP}] " src_configure() { rocm_use_hipcc local mycmakeargs=( -DAMDGPU_TARGETS="$(get_amdgpu_flags)" -DBUILD_CLIENTS_TESTS=$(usex test ON OFF) ) cmake_src_configure } src_test() { check_amdgpu # export LD_LIBRARY_PATH=<path to built lib dir> if necessary cmake_src_test # for packages using the cmake test # For packages using a standalone test binary rather than cmake test, # just execute it (or using edob) }
依赖于 ROCm 库的包的示例 - 一个依赖于 rocBLAS 的包,使用逗号分隔的 ${HCC_AMDGPU_TARGET} 来确定 GPU 架构,并需要 ROCm 版本 >=5.1
ROCM_VERSION=5.1 inherit rocm IUSE="rocm" REQUIRED_USE="rocm? ( ${ROCM_REQUIRED_USE} )" DEPEND="rocm? ( >=dev-util/hip-${ROCM_VERSION} >=sci-libs/rocBLAS-${ROCM_VERSION}[${ROCM_USEDEP}] )" src_configure() { if use rocm; then local amdgpu_flags=$(get_amdgpu_flags) export HCC_AMDGPU_TARGET=${amdgpu_flags//;/,} fi default } src_test() { use rocm && check_amdgpu default }
函数
- _rocm_set_globals
- 设置对 ebuilds 有用的全局变量:IUSE、ROCM_REQUIRED_USE 和 ROCM_USEDEP,除非设置了 ROCM_SKIP_GLOBALS。
- get_amdgpu_flags get_amdgpu_flags
- 将指定的 amdgpu_targets use 标志转换为编译标志。 将默认目标特性追加到 GPU 架构。 请参见 https://llvm.net.cn/docs/AMDGPUUsage.html#target-features
- check_amdgpu check_amdgpu
- 授予并检查 AMDGPU 设备的读写权限,如果不可用,则退出。
- rocm_use_hipcc rocm_use_hipcc
- 将活动 C 和 C++ 编译器切换到 hipcc,清除不支持的标志并设置 ROCM_TARGET_LST 文件。
ECLASS 变量
- ROCM_VERSION (必填) (在继承之前设置)
- 当前包的 ROCm 版本。 对于 ROCm 库,它应该是 ${PV}; 对于依赖于 ROCm 库的其他包,可以将其设置为与 ROCm 库所需的版本相匹配。
- ROCM_REQUIRED_USE (由 ECLASS 生成)
- 需要至少一个 AMDGPU 目标进行编译。 ROCm 库的示例用法
REQUIRED_USE="${ROCM_REQUIRED_USE}"
依赖于 ROCm 库的包的示例用法IUSE="rocm" REQUIRED_USE="rocm? ( ${ROCM_REQUIRED_USE} )"
- ROCM_USEDEP (由 ECLASS 生成)
- 这是一个 eclass 生成的 USE-依赖字符串,可以用于依赖于为相同 AMDGPU 架构构建的另一个 ROCm 包。
生成的 USE-标志列表与使用 rocm.eclass 的包兼容。
示例用法
DEPEND="sci-libs/rocBLAS[${ROCM_USEDEP}]"
- ROCM_SKIP_GLOBALS
- 控制是否执行 _rocm_set_globals()。 此变量用于调用 check_amdgpu() 但不需要定义 amdgpu_targets_* USE-标志的 ebuilds,例如 dev-util/hip 和 dev-libs/rocm-opencl-runtime。
示例用法
ROCM_SKIP_GLOBALS=1 inherit rocm
作者
Yiyang Wu <[email protected]>维护者
Gentoo 科学项目 <[email protected]>报告 Bug
请通过 https://bugs.gentoo.org/ 报告 Bug文件
rocm.eclass另请参见
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/rocm.eclass
索引
本文件由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日,格林威治标准时间 03:27:00