[gentoo-dev] Re: [PATCH 2/2] profiles/desc: add amdgpu_targets.desc for USE_EXPAND

2022-08-08 Thread Benda Xu
Yiyang Wu  writes:

> +gfx1010 - RDNA GPU, codename navi10, including Radeon RX 
> 5700XT/5700/5700M/5700B/5700XTB/5600XT/5600/5600M, Radeon Pro 5700Xt/5700, 
> Radeon Pro W5700X/W5700

s/5700Xt/5700XT/

Benda



Re: [gentoo-dev] [PATCH 1/2] rocm.eclass: new eclass

2022-08-08 Thread Ulrich Mueller
> On Mon, 08 Aug 2022, Yiyang Wu wrote:
> +case ${EAPI} in
> + 0|1|2|3|4|5|6)
> + die "${ECLASS}: unsupported EAPI=${EAPI:-0} (too old)"
> + ;;
> + 7|8)
> + ;;
> + *)
> + die "${ECLASS}: unsupported EAPI=${EAPI} (unknown)"
> + ;;
> +esac

We no longer distinguished between too old and unknown. Modern style
is like this:

case ${EAPI} in
7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac


signature.asc
Description: PGP signature


[gentoo-dev] Re: [PATCH 0/2] rocm.eclass for ROCm packages written in HIP

2022-08-08 Thread wuyy
On Mon, Aug 08, 2022 at 10:15:25PM +0800, Yiyang Wu wrote:
> This eclass provides utilities for ROCm libraries in
> https://github.com/ROCmSoftwarePlatform, e.g. rocBLAS, rocFFT.
> It contains a USE_EXPAND, amdgpu_targets_*, which handles the GPU
> architecture to compile, and keep targets coherent among dependencies.
> Packages that depend on ROCm libraries, like cupy, can also make use of
> this eclass, mainly specify GPU architecture and it's corresponding
> dependencies via USE_EXPAND.
> 
> This is the core delivery in GSoC 2022 project "Refining ROCm Packages
> in Gentoo"
> 
> Yiyang Wu (2):
>   rocm.eclass: new eclass
>   profiles/desc: add amdgpu_targets.desc for USE_EXPAND
> 
>  eclass/rocm.eclass| 278 ++
>  profiles/base/make.defaults   |   2 +-
>  profiles/desc/amdgpu_targets.desc |  15 ++
>  3 files changed, 294 insertions(+), 1 deletion(-)
>  create mode 100644 eclass/rocm.eclass
>  create mode 100644 profiles/desc/amdgpu_targets.desc
> 
> -- 
> 2.34.1
> 
I have created a PR of this patch at 
https://github.com/gentoo/gentoo/pull/26784.
-- 
Yiyang Wu



[gentoo-dev] [PATCH 2/2] profiles/desc: add amdgpu_targets.desc for USE_EXPAND

2022-08-08 Thread Yiyang Wu
Signed-off-by: Yiyang Wu 
---
 profiles/desc/amdgpu_targets.desc | 15 +++
 1 file changed, 15 insertions(+)
 create mode 100644 profiles/desc/amdgpu_targets.desc

diff --git a/profiles/desc/amdgpu_targets.desc 
b/profiles/desc/amdgpu_targets.desc
new file mode 100644
index ..942ab51356fb
--- /dev/null
+++ b/profiles/desc/amdgpu_targets.desc
@@ -0,0 +1,15 @@
+# Copyright 1999-2022 Gentoo Authors.
+# Distributed under the terms of the GNU General Public License v2
+
+# Copied from 
https://www.coelacanth-dream.com/posts/2019/12/30/did-rid-product-matome-p2/#fn:67
+
+gfx803 - Fiji GPU, codename fiji, including Radeon R9 Nano/Fury/FuryX, Radeon 
Pro Duo, FirePro S9300x2, Radeon Instinct MI8 
+gfx900 - Vega GPU, codename vega10, including Radeon Vega Frontier Edition, 
Radeon RX Vega 56/64, Radeon RX Vega 64 Liquid, Radeon Pro Vega 48/56/64/64X, 
Radeon Pro WX 8200/9100, Radeon Pro V320/V340/SSG, Radeon Instinct MI25
+gfx906 - Vega GPU, codename vega20, including Radeon (Pro) VII, Radeon 
Instinct MI50/MI60
+gfx908 - CDNA Accelerator, codename arcturus, including AMD Instinct MI100 
Accelerator
+gfx90a - CDNA2 Accelerator, codename aldebaran, including AMD Instinct MI200 
series Accelerators
+gfx1010 - RDNA GPU, codename navi10, including Radeon RX 
5700XT/5700/5700M/5700B/5700XTB/5600XT/5600/5600M, Radeon Pro 5700Xt/5700, 
Radeon Pro W5700X/W5700
+gfx1011 - RDNA GPU, codename navi12, including Radeon Pro 5600M/V520
+gfx1012 - RDNA GPU, codename navi14, including Radeon RX 
5500XT/5500/5500M/5500XTB/5300/5300M, Radeon Pro 5500XT/5500M/5300/5300M, 
Radeon Pro W5500X/W5500/W5500M/W5300M
+gfx1030 - RDNA2 GPU, codename navi21/sienna cichlid, including Radeon RX 
6950XT/6900XT/6800XT/6800, Radeon Pro W6800
+gfx1031 - RDNA2 GPU, codename navi22/navy flounder, including Radeon RX 
6750XT/6700XT/6800M/6700M
-- 
2.34.1




[gentoo-dev] [PATCH 1/2] rocm.eclass: new eclass

2022-08-08 Thread Yiyang Wu
Closes: https://bugs.gentoo.org/810619
Signed-off-by: YiyangWu 
---
 eclass/rocm.eclass  | 278 
 profiles/base/make.defaults |   2 +-
 2 files changed, 279 insertions(+), 1 deletion(-)
 create mode 100644 eclass/rocm.eclass

diff --git a/eclass/rocm.eclass b/eclass/rocm.eclass
new file mode 100644
index ..e4b448f7b894
--- /dev/null
+++ b/eclass/rocm.eclass
@@ -0,0 +1,278 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: rocm.eclass
+# @MAINTAINER:
+# Gentoo Science Project 
+# @AUTHOR:
+# Yiyang Wu 
+# @SUPPORTED_EAPIS: 7 8
+# @BLURB: Common functions and variables for ROCm packages written in HIP
+# @DESCRIPTION:
+# ROCm packages such as sci-libs/* can utilize functions in this 
eclass.
+# Currently, it handles the AMDGPU_TARGETS variable via USE_EXPAND, so user can
+# use USE flag to control which GPU architecture to compile, and ensure 
coherence
+# among dependencies. It also specify CXX=hipcc, to let hipcc compile. Another
+# important function is src_test, which checks whether a valid KFD device 
exists
+# for testing, and then execute the test program.
+#
+# Most ROCm packages use cmake as build system, so this eclass does not export
+# phase functions which overwrites the phase functions in cmake.eclass. Ebuild
+# should explicitly call rocm_src_* in src_configure and src_test.
+# 
+# @EXAMPLE:
+# # Example for ROCm packages in https://github.com/ROCmSoftwarePlatform
+# inherit cmake rocm
+# 
SRC_URI="https://github.com/ROCmSoftwarePlatform/${PN}/archive/rocm-${PV}.tar.gz
 -> ${P}.tar.gz"
+# 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}]
+# "
+# 
+# S=${WORKDIR}/${PN}-rocm-${PV}
+#  
+# src_configure() {
+# local mycmakeargs=(
+# -DBUILD_CLIENTS_TESTS=$(usex test ON OFF)
+# )
+# rocm_src_configure
+# }
+# 
+# src_test() {
+# rocm_src_test
+# }
+# 
+# # Example for packages depend on ROCm libraries -- a package depend on
+# # rocBLAS, and use comma seperated ${HCC_AMDGPU_TARGET} to determine GPU
+# # architecture to compile. Requires ROCm version >5.
+# ROCM_VERSION=5
+# 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
+# }
+
+if [[ ! ${_ROCM_ECLASS} ]]; then
+
+case ${EAPI} in
+   0|1|2|3|4|5|6)
+   die "${ECLASS}: unsupported EAPI=${EAPI:-0} (too old)"
+   ;;
+   7|8)
+   ;;
+   *)
+   die "${ECLASS}: unsupported EAPI=${EAPI} (unknown)"
+   ;;
+esac
+
+inherit edo
+
+
+# @ECLASS_VARIABLE: ROCM_VERSION
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# The ROCm version of current package. Default is ${PV}, but for other packages
+# that depend on ROCm libraries, this can be set to match the version of
+# required ROCm libraries.
+
+# @ECLASS_VARIABLE: ALL_AMDGPU_TARGETS
+# @INTERNAL
+# @DESCRIPTION:
+# The list of USE flags corresponding to all AMDGPU targets in this ROCm
+# version. The value depends on ${PV}. Architectures and devices map:
+# https://www.coelacanth-dream.com/posts/2019/12/30/did-rid-product-matome-p2
+
+# @ECLASS_VARIABLE: OFFICIAL_AMDGPU_TARGETS
+# @INTERNAL
+# @DESCRIPTION:
+# The list of USE flags corresponding to all officlially supported AMDGPU
+# targets in this ROCm version, documented at
+# 
https://docs.amd.com/bundle/ROCm-Installation-Guide-v${PV}/page/Prerequisite_Actions.html.
+# USE flag of these architectures will be default on. Depends on ${PV}.
+
+# @ECLASS_VARIABLE: ROCM_REQUIRED_USE
+# @OUTPUT_VARIABLE
+# @DESCRIPTION:
+# Requires at least one AMDGPU target to be compiled.
+# Example use for ROCm libraries:
+# REQUIRED_USE="${ROCM_REQUIRED_USE}"
+# Example use for packages that depend on ROCm libraries
+# IUSE="rocm"
+# REQUIRED_USE="rocm? ( ${ROCM_REQUIRED_USE} )"
+
+# @ECLASS_VARIABLE: ROCM_USEDEP
+# @OUTPUT_VARIABLE
+# @DESCRIPTION:
+# This is an eclass-generated USE-dependency string which can be used to
+# depend on another ROCm package being built for the same AMDGPU architecture.
+#
+# The generated USE-flag list is compatible with packages using rocm.eclass.
+#
+# Example use:
+# @CODE
+# DEPEND="sci-libs/rocBLAS[${ROCM_USEDEP}]"
+# @CODE
+
+# @FUNCTION: _rocm_set_globals
+# @DESCRIPTION:
+# Set global variables used by the eclass: ALL_AMDGPU_TARGETS,
+# OFFICIAL_AMDGPU_TARGETS, ROCM_REQUIRED_USE, and ROCM_USEDEP
+_rocm_set_globals() {
+   case ${ROCM_VERSION:-${PV}} in
+   4*)
+   ALL_AMDGPU_TARGETS=(
+   

[gentoo-dev] [PATCH 0/2] rocm.eclass for ROCm packages written in HIP

2022-08-08 Thread Yiyang Wu
This eclass provides utilities for ROCm libraries in
https://github.com/ROCmSoftwarePlatform, e.g. rocBLAS, rocFFT.
It contains a USE_EXPAND, amdgpu_targets_*, which handles the GPU
architecture to compile, and keep targets coherent among dependencies.
Packages that depend on ROCm libraries, like cupy, can also make use of
this eclass, mainly specify GPU architecture and it's corresponding
dependencies via USE_EXPAND.

This is the core delivery in GSoC 2022 project "Refining ROCm Packages
in Gentoo"

Yiyang Wu (2):
  rocm.eclass: new eclass
  profiles/desc: add amdgpu_targets.desc for USE_EXPAND

 eclass/rocm.eclass| 278 ++
 profiles/base/make.defaults   |   2 +-
 profiles/desc/amdgpu_targets.desc |  15 ++
 3 files changed, 294 insertions(+), 1 deletion(-)
 create mode 100644 eclass/rocm.eclass
 create mode 100644 profiles/desc/amdgpu_targets.desc

-- 
2.34.1