Skip to content

Commit

Permalink
Add reduction tutorial (#128)
Browse files Browse the repository at this point in the history
Co-authored-by: Máté Ferenc Nagy-Egri <mate@streamhpc.com>
  • Loading branch information
neon60 and MathiasMagnus committed Aug 26, 2024
1 parent b6e6ecc commit b1b2122
Show file tree
Hide file tree
Showing 55 changed files with 6,404 additions and 0 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ enable_testing()
add_subdirectory(Applications)
add_subdirectory(HIP-Basic)
add_subdirectory(Libraries)
add_subdirectory(Tutorials)
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ A collection of examples to enable new users to start using ROCm. Advanced users
- [remove_points](https://github.com/ROCm/rocm-examples/tree/develop/Libraries/rocThrust/remove_points/): Simple program that demonstrates the usage of the `thrust` random number generation, host vector, generation, tuple, zip iterator, and conditional removal templates. It generates a number of random points in a unit square and then removes all of them outside the unit circle.
- [saxpy](https://github.com/ROCm/rocm-examples/tree/develop/Libraries/rocThrust/saxpy/): Simple program that implements the SAXPY operation (`y[i] = a * x[i] + y[i]`) using rocThrust and showcases the usage of the vector and functor templates and of `thrust::fill` and `thrust::transform` operations.
- [vectors](https://github.com/ROCm/rocm-examples/tree/develop/Libraries/rocThrust/vectors/): Simple program that showcases the `host_vector` and the `device_vector` of rocThrust.
- [Tutorials](https://github.com/ROCm/rocm-examples/tree/develop/Tutorials/): Showcases HIP Documentation Tutorials.
- [reduction](https://github.com/ROCm/rocm-examples/tree/develop/Tutorials/reduction/): Showcases a reduction tutorial for HIP Documentation.

## Prerequisites

Expand Down
29 changes: 29 additions & 0 deletions Tutorials/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# MIT License
#
# Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
project(Tutorials LANGUAGES CXX)

file(RELATIVE_PATH folder_bin ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/${folder_bin})

add_subdirectory(reduction)
63 changes: 63 additions & 0 deletions Tutorials/reduction/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# MIT License
#
# Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

if("${GPU_RUNTIME}" STREQUAL "CUDA")
if(${CMAKE_VERSION} VERSION_LESS "3.25.2")
message(
STATUS
"Skipped: Reduction tutorial, because CMake version is too low."
)
return()
endif()
cmake_minimum_required(VERSION 3.25.2)
else()
cmake_minimum_required(VERSION 3.21)
endif()

project(Reduction LANGUAGES CXX)

file(RELATIVE_PATH folder_bin ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/${folder_bin})

option(REDUCTION_BUILD_TESTING "Build Reduction tests" ON)
option(REDUCTION_BUILD_BENCHMARKS "Build Reduction benchmarks" ON)
option(REDUCTION_BUILD_EXAMPLES "Build Reduction examples" ON)

add_library(Reduction IMPORTED INTERFACE)

target_include_directories(Reduction INTERFACE include)

if(REDUCTION_BUILD_TESTING)
enable_testing()
enable_language(CXX) # GTest::GTest depends on Threads::Threads
add_subdirectory(test)
endif()

if(REDUCTION_BUILD_BENCHMARKS)
enable_language(CXX) # benchmark::benchmark depends on Threads::Threads
add_subdirectory(benchmark)
endif()

if(REDUCTION_BUILD_EXAMPLES)
enable_language(CXX) # TBB::tbb depends on Threads::Threads
add_subdirectory(example)
endif()
Loading

0 comments on commit b1b2122

Please sign in to comment.