Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 3 additions & 20 deletions amdsmi.spec
Original file line number Diff line number Diff line change
@@ -1,22 +1,5 @@
## INCLUDE rocm-config
### RPM external amdsmi %{rocm_version_num}

Source: %{rocm_systems_source}
Requires: rocm-core python3

%prep
%setup -q -n rocm-systems/projects/%{n}

%build

cmake \
-S %{_builddir}/rocm-systems/projects/%{n} \
-B %{_builddir}/build \
-DCMAKE_INSTALL_PREFIX=%{i} \
-DCMAKE_BUILD_TYPE=%{cmake_build_type} \
-DCMAKE_PREFIX_PATH="%{cmake_prefix_path}" \
-DBUILD_TESTING=OFF

make -C %{_builddir}/build %{makeprocesses} VERBOSE=1
%install
make -C %{_builddir}/build %{makeprocesses} install VERBOSE=1
Requires: rocm-core python3 libnl libmnl
%define cmake_args -DBUILD_TESTING=OFF -DCMAKE_SHARED_LINKER_FLAGS="-L$LIBNL_ROOT/lib -L$LIBMNL_ROOT/lib" -DCMAKE_EXE_LINKER_FLAGS="-L$LIBNL_ROOT/lib -L$LIBMNL_ROOT/lib"
## INCLUDE rocm-systems-build
19 changes: 1 addition & 18 deletions aqlprofile.spec
Original file line number Diff line number Diff line change
@@ -1,21 +1,4 @@
## INCLUDE rocm-config
### RPM external aqlprofile %{rocm_version_num}

Source: %{rocm_systems_source}
Requires: rocm-core rocr-runtime
%prep
%setup -q -n rocm-systems/projects/%{n}

%build

cmake \
-S %{_builddir}/rocm-systems/projects/%{n} \
-B %{_builddir}/build \
-DCMAKE_INSTALL_PREFIX=%{i} \
-DCMAKE_BUILD_TYPE=%{cmake_build_type} \
-DCMAKE_PREFIX_PATH=%{cmake_prefix_path}

make -C %{_builddir}/build %{makeprocesses} VERBOSE=1

%install
make -C %{_builddir}/build %{makeprocesses} install VERBOSE=1
## INCLUDE rocm-systems-build
22 changes: 22 additions & 0 deletions elfutils.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
### RPM external elfutils 0.195
Source: https://sourceware.org/elfutils/ftp/%{realversion}/elfutils-%{realversion}.tar.bz2
BuildRequires: gmake bison flex
Requires: zlib bz2lib xz
%define keep_pkgconfig true

%prep
%setup -n %{n}-%{realversion}

%build
export CPPFLAGS="-I${ZLIB_ROOT}/include -I${BZ2LIB_ROOT}/include -I${XZ_ROOT}/include"
export LDFLAGS="-L${ZLIB_ROOT}/lib -L${BZ2LIB_ROOT}/lib -L${XZ_ROOT}/lib"
./configure --prefix=%{i} --disable-static --enable-install-elfh \
--disable-libdebuginfod --disable-debuginfod \
--enable-thread-safety --disable-nls
make %{makeprocesses}

%install
make install

%post
%relocateConfigAll lib/pkgconfig *.pc
8 changes: 4 additions & 4 deletions hipify.spec
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
## INCLUDE rocm-config
## INCLUDE rocm-config
### RPM external hipify %{rocm_version_num}
Source0: https://github.com/ROCm/HIPIFY/archive/refs/tags/rocm-%{rocm_version_num}.tar.gz
Source0: git+https://github.com/ROCm/HIPIFY.git?obj=amd-develop/therock-%{rocm_version_num}&export=hipify&export=%{n}&submodules=1&output=/%{n}.tar.gz
Requires: rocm-llvm

%prep
%setup -q -n HIPIFY-rocm-%{realversion}
%setup -q -n %{n}

%build
CMAKE_ARGS=(
-B %{_builddir}/build
-S %{_builddir}/HIPIFY-rocm-%{realversion}
-S %{_builddir}/%{n}
-DCMAKE_INSTALL_PREFIX=%{i}
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=${ROCM_LLVM_ROOT}/lib/llvm/bin/clang \
Expand Down
17 changes: 17 additions & 0 deletions libmnl.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
### RPM external libmnl 1.0.5
Source: https://netfilter.org/projects/libmnl/files/libmnl-%{realversion}.tar.bz2
BuildRequires: gmake
%define keep_pkgconfig true

%prep
%setup -n %{n}-%{realversion}

%build
./configure --prefix=%{i} --disable-static
make %{makeprocesses}

%install
make install

%post
%relocateConfigAll lib/pkgconfig *.pc
19 changes: 19 additions & 0 deletions libnl.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### RPM external libnl 3.12.0
%define version_path libnl%(echo %{realversion} | tr . _)
Source: git+https://github.com/thom311/libnl.git?obj=main/%{version_path}&export=%{n}&output=/%{n}-%{realversion}.tar.gz
BuildRequires: gmake autotools swig flex bison
%define keep_pkgconfig true

%prep
%setup -n %{n}

%build
autoreconf -vif
./configure --prefix=%{i} --disable-static
make %{makeprocesses} VERBOSE=1

%install
make install

%post
%relocateConfigAll lib/pkgconfig *.pc
185 changes: 185 additions & 0 deletions miopen-ai-heuristic-guard-fix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
--- projects/miopen/src/solver/conv/conv_hip_implicit_gemm_grouped_fwd_xdlops.cpp
+++ projects/miopen/src/solver/conv/conv_hip_implicit_gemm_grouped_fwd_xdlops.cpp
@@ -31,11 +31,9 @@
#include <miopen/env.hpp>
#include <miopen/generic_search.hpp>
#include <miopen/conv/data_invoke_params.hpp>
-#if MIOPEN_ENABLE_AI_KERNEL_TUNING
#include <miopen/conv/heuristics/ai_heuristics.hpp>
#include <miopen/conv/heuristics/ai_candidate_selection.hpp>
#include <miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp>
-#endif
#include <miopen/solver/implicitgemm_ck_util_common.hpp>
#include <miopen/solver/ck_impl_lib_loader.hpp>
MIOPEN_DECLARE_ENV_VAR_BOOL(MIOPEN_DEBUG_GROUP_CONV_IMPLICIT_GEMM_HIP_FWD_XDLOPS)
--- projects/miopen/src/solver/conv/conv_hip_implicit_gemm_grouped_bwd_xdlops.cpp
+++ projects/miopen/src/solver/conv/conv_hip_implicit_gemm_grouped_bwd_xdlops.cpp
@@ -32,11 +32,9 @@
#include <miopen/generic_search.hpp>
#include <miopen/conv/data_invoke_params.hpp>
#include <miopen/solver/problem_description_interpreter.hpp>
-#if MIOPEN_ENABLE_AI_KERNEL_TUNING
#include <miopen/conv/heuristics/ai_heuristics.hpp>
#include <miopen/conv/heuristics/ai_candidate_selection.hpp>
#include <miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp>
-#endif
#include <miopen/solver/implicitgemm_ck_util_common.hpp>
#include <miopen/solver/ck_impl_lib_loader.hpp>
MIOPEN_DECLARE_ENV_VAR_BOOL(MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_GROUP_BWD_XDLOPS)
--- projects/miopen/src/solver/conv/conv_hip_implicit_gemm_grouped_wrw_xdlops.cpp
+++ projects/miopen/src/solver/conv/conv_hip_implicit_gemm_grouped_wrw_xdlops.cpp
@@ -33,11 +33,9 @@
#include <miopen/conv/wrw_invoke_params.hpp>
#include <miopen/solver/problem_description_interpreter.hpp>
#include <miopen/solver/ck_impl_lib_loader.hpp>
-#if MIOPEN_ENABLE_AI_KERNEL_TUNING
#include <miopen/conv/heuristics/ai_heuristics.hpp>
#include <miopen/conv/heuristics/ai_candidate_selection.hpp>
#include <miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp>
-#endif
#include <miopen/solver/implicitgemm_ck_util_common.hpp>
MIOPEN_DECLARE_ENV_VAR_BOOL(MIOPEN_DEBUG_GROUP_CONV_IMPLICIT_GEMM_HIP_WRW_XDLOPS)
MIOPEN_DECLARE_ENV_VAR_BOOL(MIOPEN_DEBUG_GROUP_CONV_IMPLICIT_GEMM_HIP_WRW_XDLOPS_AI_HEUR)
--- projects/miopen/src/solver/conv/conv_hip_implicit_gemm_3d_grouped_fwd_xdlops.cpp
+++ projects/miopen/src/solver/conv/conv_hip_implicit_gemm_3d_grouped_fwd_xdlops.cpp
@@ -34,11 +34,9 @@
#include <miopen/generic_search.hpp>
#include <miopen/conv/data_invoke_params.hpp>
#include <miopen/solver/problem_description_interpreter.hpp>
-#if MIOPEN_ENABLE_AI_KERNEL_TUNING
#include <miopen/conv/heuristics/ai_heuristics.hpp>
#include <miopen/conv/heuristics/ai_candidate_selection.hpp>
#include <miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp>
-#endif
#include <miopen/solver/implicitgemm_ck_util_common.hpp>
#include <miopen/solver/ck_impl_lib_loader.hpp>

--- projects/miopen/src/include/miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp
+++ projects/miopen/src/include/miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp
@@ -154,6 +154,50 @@
}
};

+/**
+ * @brief Configuration state for heuristic initialization results
+ *
+ * This struct holds the output state from AI heuristics. It's designed to be
+ * passed by reference to the centralized heuristics function, which will
+ * populate it with results.
+ *
+ * @note Kept outside the MIOPEN_ENABLE_AI_KERNEL_TUNING guard below because
+ * solvers use it unconditionally for fallback (non-AI) kernel selection state.
+ */
+struct HeuristicInitState
+{
+ std::vector<std::string>& valid_kernels;
+ int& index;
+ int& split_k;
+ std::string& kernel_id;
+
+ HeuristicInitState(std::vector<std::string>& vk, int& idx, int& sk, std::string& kid)
+ : valid_kernels(vk), index(idx), split_k(sk), kernel_id(kid)
+ {
+ }
+
+ void Reset(bool uses_split_k)
+ {
+ index = 0;
+ kernel_id = "";
+ split_k = uses_split_k ? 1 : 0;
+ }
+
+ void SetResult(int idx, int sk, bool uses_split_k)
+ {
+ index = idx;
+ split_k = sk;
+ if(uses_split_k && idx >= 0 && idx < static_cast<int>(valid_kernels.size()))
+ {
+ kernel_id = valid_kernels[idx] + "+" + std::to_string(sk);
+ }
+ else if(idx >= 0 && idx < static_cast<int>(valid_kernels.size()))
+ {
+ kernel_id = valid_kernels[idx];
+ }
+ }
+};
+
} // namespace conv
} // namespace solver
} // namespace miopen
@@ -257,47 +301,6 @@
// Centralized AI Heuristics Runner
// ============================================================================

-/**
- * @brief Configuration state for heuristic initialization results
- *
- * This struct holds the output state from AI heuristics. It's designed to be
- * passed by reference to the centralized heuristics function, which will
- * populate it with results.
- */
-struct HeuristicInitState
-{
- std::vector<std::string>& valid_kernels;
- int& index;
- int& split_k;
- std::string& kernel_id;
-
- HeuristicInitState(std::vector<std::string>& vk, int& idx, int& sk, std::string& kid)
- : valid_kernels(vk), index(idx), split_k(sk), kernel_id(kid)
- {
- }
-
- void Reset(bool uses_split_k)
- {
- index = 0;
- kernel_id = "";
- split_k = uses_split_k ? 1 : 0;
- }
-
- void SetResult(int idx, int sk, bool uses_split_k)
- {
- index = idx;
- split_k = sk;
- if(uses_split_k && idx >= 0 && idx < static_cast<int>(valid_kernels.size()))
- {
- kernel_id = valid_kernels[idx] + "+" + std::to_string(sk);
- }
- else if(idx >= 0 && idx < static_cast<int>(valid_kernels.size()))
- {
- kernel_id = valid_kernels[idx];
- }
- }
-};
-
// ============================================================================
// Generic Helper Template for KTN Lambda Functions
// ============================================================================
--- projects/miopen/src/solver/conv/conv_hip_implicit_gemm_3d_grouped_wrw_xdlops.cpp
+++ projects/miopen/src/solver/conv/conv_hip_implicit_gemm_3d_grouped_wrw_xdlops.cpp
@@ -39,11 +39,9 @@
#include <miopen/conv/wrw_invoke_params.hpp>
#include <miopen/solver/problem_description_interpreter.hpp>
#include <miopen/solver/ck_impl_lib_loader.hpp>
-#if MIOPEN_ENABLE_AI_KERNEL_TUNING
#include <miopen/conv/heuristics/ai_heuristics.hpp>
#include <miopen/conv/heuristics/ai_candidate_selection.hpp>
#include <miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp>
-#endif
#include <miopen/solver/implicitgemm_ck_util_common.hpp>

namespace miopen {
--- projects/miopen/src/solver/conv/conv_hip_implicit_gemm_3d_grouped_bwd_xdlops.cpp
+++ projects/miopen/src/solver/conv/conv_hip_implicit_gemm_3d_grouped_bwd_xdlops.cpp
@@ -33,11 +33,9 @@
#include <miopen/generic_search.hpp>
#include <miopen/conv/data_invoke_params.hpp>
#include <miopen/solver/problem_description_interpreter.hpp>
-#if MIOPEN_ENABLE_AI_KERNEL_TUNING
#include <miopen/conv/heuristics/ai_heuristics.hpp>
#include <miopen/conv/heuristics/ai_candidate_selection.hpp>
#include <miopen/conv/heuristics/ai_conv_nd_kernel_tuning_utils.hpp>
-#endif
#include <miopen/solver/implicitgemm_ck_util_common.hpp>
#include <miopen/solver/ck_impl_lib_loader.hpp>

Loading