From f41317d8b22928e9cfce7022a791fd8e24189915 Mon Sep 17 00:00:00 2001 From: arjun-raj-kuppala <60718144+arjun-raj-kuppala@users.noreply.github.com> Date: Fri, 22 Jan 2021 04:07:36 -0800 Subject: AMD ROCm: Bump rocm-tensile with 3.9.0, 3.10.0, 4.0.0 releases (#20439) --- ...uire-openmp-when-tensile-use-openmp-is-on.patch | 90 ++++++++++++++++++++++ .../repos/builtin/packages/rocm-tensile/package.py | 36 +++++---- 2 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 var/spack/repos/builtin/packages/rocm-tensile/0002-require-openmp-when-tensile-use-openmp-is-on.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/rocm-tensile/0002-require-openmp-when-tensile-use-openmp-is-on.patch b/var/spack/repos/builtin/packages/rocm-tensile/0002-require-openmp-when-tensile-use-openmp-is-on.patch new file mode 100644 index 0000000000..4c616d47f2 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-tensile/0002-require-openmp-when-tensile-use-openmp-is-on.patch @@ -0,0 +1,90 @@ +diff --git a/HostLibraryTests/CMakeLists.txt b/HostLibraryTests/CMakeLists.txt +index 79e1529..034f8bb 100644 +--- a/HostLibraryTests/CMakeLists.txt ++++ b/HostLibraryTests/CMakeLists.txt +@@ -19,7 +19,7 @@ + # CTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ################################################################################ + +-cmake_minimum_required(VERSION 3.5) ++cmake_minimum_required(VERSION 3.9) + + project(TensileHostLibraryTest) + +@@ -78,21 +78,7 @@ if(TENSILE_USE_HIP) + endif() + + if(TENSILE_USE_OPENMP) +- #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_OPENMP") +- find_package(OpenMP QUIET) +- if (OPENMP_FOUND) +- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") +- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") +- else() +- if(EXISTS /etc/redhat-release) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp=libgomp") +- else() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") +- set(OPENMP_LIBRARY /usr/lib/x86_64-linux-gnu/libomp.so) +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENMP_LIBRARY}") +- endif() +- endif() ++ find_package(OpenMP REQUIRED) + endif() + + add_subdirectory(configs) +@@ -187,6 +173,6 @@ if(TENSILE_USE_HIP) + endif() + + if(TENSILE_USE_OPENMP) +- target_link_libraries(TensileTests PRIVATE "${OpenMP_EXE_LINKER_FLAGS}") ++ target_link_libraries(TensileTests PRIVATE OpenMP::OpenMP_CXX) + endif() + +diff --git a/Tensile/Source/CMakeLists.txt b/Tensile/Source/CMakeLists.txt +index 821fd53..fe65c9e 100644 +--- a/Tensile/Source/CMakeLists.txt ++++ b/Tensile/Source/CMakeLists.txt +@@ -61,21 +61,7 @@ if(TENSILE_NEW_CLIENT) + endif() + + if(TENSILE_USE_OPENMP) +- #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_OPENMP") +- find_package(OpenMP QUIET) +- if (OPENMP_FOUND) +- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") +- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") +- else () +- if(EXISTS /etc/redhat-release) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp=libgomp") +- else() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") +- set(OPENMP_LIBRARY /usr/lib/x86_64-linux-gnu/libomp.so) +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENMP_LIBRARY}") +- endif() +- endif() ++ find_package(OpenMP REQUIRED) + endif() + + #set(TENSILE_CXX_COMPILER "${CMAKE_CXX_COMPILER}") +diff --git a/Tensile/Source/client/CMakeLists.txt b/Tensile/Source/client/CMakeLists.txt +index 9ccba86..081280b 100644 +--- a/Tensile/Source/client/CMakeLists.txt ++++ b/Tensile/Source/client/CMakeLists.txt +@@ -52,12 +52,8 @@ target_link_libraries(TensileClient TensileHost ${Boost_LIBRARIES} rocm_smi) + add_executable(tensile_client main.cpp) + + target_link_libraries(tensile_client PRIVATE TensileHost TensileClient ${Boost_LIBRARIES}) +-if(OpenMP_FOUND) +- target_link_libraries(tensile_client PRIVATE "${OpenMP_EXE_LINKER_FLAGS}") +-else() +- set(OPENMP_LIBRARY /usr/lib/x86_64-linux-gnu/libomp.so) +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENMP_LIBRARY}") +- target_link_libraries(tensile_client PRIVATE "${OpenMP_EXE_LINKER_FLAGS}") ++if(TENSILE_USE_OPENMP) ++ target_link_libraries(tensile_client PRIVATE OpenMP::OpenMP_CXX) + endif() + + foreach(arch IN LISTS TENSILE_GPU_ARCHS) diff --git a/var/spack/repos/builtin/packages/rocm-tensile/package.py b/var/spack/repos/builtin/packages/rocm-tensile/package.py index 0c9cbd09a9..484de03ef7 100644 --- a/var/spack/repos/builtin/packages/rocm-tensile/package.py +++ b/var/spack/repos/builtin/packages/rocm-tensile/package.py @@ -14,17 +14,24 @@ class RocmTensile(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/Tensile/archive/rocm-3.8.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('4.0.0', sha256='cf105ce8c3e352d19713b3bf8bda77f25c1a692c4f2ca82d631ba15523ecc1cd') + version('3.10.0', sha256='8d5b50aadfa56a9195e4c387b8eb351c9b9b7671b136b624e07fe28db24bd330') + version('3.9.0', sha256='17a011f8c3433d4f8c2dddabd5854cf96c406d24592b3942deb51672c570882e') version('3.8.0', sha256='c78a11db85fdf54bfd26533ee6fa98f6a6e789fa423537993061497ac5f22ed6') version('3.7.0', sha256='488a7f76ea42a7601d0557f53068ec4832a2c7c06bb1b511470a4e35599a5a4d') version('3.5.0', sha256='71eb3eed6625b08a4cedb539dd9b596e3d4cc82a1a8063d37d94c0765b6f8257') - amdgpu_targets = ('all', 'gfx803', 'gfx900', 'gfx906', 'gfx908') + tensile_architecture = ('all', 'gfx803', 'gfx900', 'gfx906', 'gfx908') - variant('amdgpu_target', default='all', multi=True, values=amdgpu_targets) + variant('tensile_architecture', default='all', values=tensile_architecture, multi=False) + variant('openmp', default=True, description='Enable OpenMP') depends_on('cmake@3:', type='build') + # This is the default library format since 3.7.0 + depends_on('msgpack-c@3:', when='@3.7:') + depends_on('boost', type=('build', 'link')) - for ver in ['3.5.0', '3.7.0', '3.8.0']: + for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('rocm-device-libs@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) @@ -32,30 +39,28 @@ class RocmTensile(CMakePackage): # used in Tensile depends_on('rocm-smi@' + ver, type='build', when='@' + ver) depends_on('rocm-smi-lib@' + ver, type='build', when='@' + ver) - depends_on('llvm-amdgpu@' + ver, type='build', when='@' + ver) - - # This is the default library format since 3.7.0 - depends_on('msgpack-c@3:', when='@3.7:') - depends_on('boost@1.58.0', type=('build', 'link')) + depends_on('llvm-amdgpu@' + ver, type='build', when='@' + ver + '+openmp') + depends_on('llvm-amdgpu@' + ver + '~openmp', type='build', when='@' + ver + '~openmp') root_cmakelists_dir = 'Tensile/Source' # Status: https://github.com/ROCmSoftwarePlatform/Tensile/commit/a488f7dadba34f84b9658ba92ce9ec5a0615a087 # Not yet landed in 3.7.0, nor 3.8.0. - patch('0001-fix-compile-error.patch') + patch('0001-fix-compile-error.patch', when='@3.7.0:3.8.0') + patch('0002-require-openmp-when-tensile-use-openmp-is-on.patch', when='@3.9.0:') def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) def cmake_args(self): - archs = ",".join(self.spec.variants['amdgpu_target'].value) - + arch = self.spec.variants['tensile_architecture'].value args = [ '-Damd_comgr_DIR={0}'.format(self.spec['comgr'].prefix), '-DTensile_COMPILER=hipcc', - '-DTensile_ARCHITECTURE={0}'.format(archs), + '-DTensile_ARCHITECTURE={0}'.format(arch), '-DTensile_LOGIC=asm_full', '-DTensile_CODE_OBJECT_VERSION=V3', - '-DBoost_USE_STATIC_LIBS=Off', + '-DBoost_USE_STATIC_LIBS=OFF', + '-DTENSILE_USE_OPENMP=ON', '-DBUILD_WITH_TENSILE_HOST={0}'.format( 'ON' if '@3.7.0:' in self.spec else 'OFF' ) @@ -65,3 +70,8 @@ class RocmTensile(CMakePackage): args.append('-DTensile_LIBRARY_FORMAT=msgpack') return args + + def install(self, spec, prefix): + with working_dir(self.build_directory): + install_tree('./client', prefix.client) + install_tree('./lib', prefix.lib) -- cgit v1.2.3-70-g09d2