Files
TheRock/rocm-libraries/projects/rocrand/tools/CMakeLists.txt
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

140 lines
6.0 KiB
CMake

# MIT License
#
# Copyright (c) 2022-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.
set(CMAKE_CXX_STANDARD 17)
include(CheckCXXSourceCompiles)
set(HAVE_STD_FILESYSTEM_TEST [[
#include <filesystem>
int main()
{
std::filesystem::path p{"/"};
return 0;
}
]])
check_cxx_source_compiles("${HAVE_STD_FILESYSTEM_TEST}" HAVE_STD_FILESYSTEM)
add_custom_target(tools)
function(rocrand_add_tool TARGET_NAME)
add_executable(${TARGET_NAME} ${ARGN})
add_dependencies(tools ${TARGET_NAME})
if(NOT HAVE_STD_FILESYSTEM)
# if filesystem library is not available in the standard library,
# link to the separate library instead
target_link_options( ${TARGET_NAME} PRIVATE -lstdc++fs )
endif()
endfunction()
rocrand_add_tool(bin2typed bin2typed.cpp)
if(HIP_COMPILER STREQUAL "nvcc")
message(STATUS "Target lfsr113_precomputed_generator cannot be built for CUDA")
else()
rocrand_add_tool(lfsr113_precomputed_generator lfsr113_precomputed_generator.cpp)
target_link_libraries(lfsr113_precomputed_generator hip::device)
endif()
rocrand_add_tool(mrg31k3p_precomputed_generator mrg31k3p_precomputed_generator.cpp)
rocrand_add_tool(mrg32k3a_precomputed_generator mrg32k3a_precomputed_generator.cpp)
rocrand_add_tool(mt19937_precomputed_generator mt19937_precomputed_generator.cpp)
rocrand_add_tool(scrambled_sobol32_constants_generator scrambled_sobol32_constants_generator.cpp)
rocrand_add_tool(scrambled_sobol32_direction_vector_generator
scrambled_sobol32_direction_vector_generator.cpp)
rocrand_add_tool(scrambled_sobol64_constants_generator scrambled_sobol64_constants_generator.cpp)
rocrand_add_tool(scrambled_sobol64_direction_vector_generator
scrambled_sobol64_direction_vector_generator.cpp)
rocrand_add_tool(sobol32_direction_vector_generator sobol32_direction_vector_generator.cpp)
rocrand_add_tool(sobol64_direction_vector_generator sobol64_direction_vector_generator.cpp)
rocrand_add_tool(xorwow_precomputed_generator xorwow_precomputed_generator.cpp)
# Run all (scrabmbled_)sobol(32,64) precomputations and generate all output formats
# (binary files, cpp files, assembly files)
# reads the input direction numbers from a file named direction_numbers.txt in the current
# working directory
add_custom_target(precompute_sobol_directions)
foreach(NAME IN ITEMS "sobol32" "sobol64")
foreach(PREFIX IN ITEMS "" "scrambled_")
string(TOUPPER "${PREFIX}" PREFIX_UPPER)
set(INNER_NAME "${PREFIX}${NAME}")
set(${PREFIX_UPPER}DIRECTIONS_TARGET precompute_${INNER_NAME}_directions)
set(${PREFIX_UPPER}DIRECTIONS_EXE ${INNER_NAME}_direction_vector_generator)
set(${PREFIX_UPPER}SYMBOL rocrand_h_${INNER_NAME}_direction_vectors)
set(${PREFIX_UPPER}OUT_H
${PROJECT_SOURCE_DIR}/library/include/rocrand/rocrand_${INNER_NAME}_precomputed.h)
set(${PREFIX_UPPER}OUT_BIN_NAME rocrand_${INNER_NAME}_precomputed.bin)
set(${PREFIX_UPPER}OUT_BIN
${PROJECT_SOURCE_DIR}/library/src/${${PREFIX_UPPER}OUT_BIN_NAME})
set(${PREFIX_UPPER}NAME ${INNER_NAME})
endforeach()
add_custom_target(${DIRECTIONS_TARGET} ${DIRECTIONS_EXE}
${CMAKE_CURRENT_SOURCE_DIR}/direction_numbers.txt
${SYMBOL}
${OUT_H}
${OUT_BIN})
add_dependencies(${DIRECTIONS_TARGET} ${DIRECTIONS_EXE})
add_custom_target(${SCRAMBLED_DIRECTIONS_TARGET} ${SCRAMBLED_DIRECTIONS_EXE}
${OUT_BIN}
${SCRAMBLED_SYMBOL}
${SCRAMBLED_OUT_H}
${SCRAMBLED_OUT_BIN})
add_dependencies(${SCRAMBLED_DIRECTIONS_TARGET}
${SCRAMBLED_DIRECTIONS_EXE} ${DIRECTIONS_TARGET})
if(NAME STREQUAL sobol32)
set(SYMBOL_TYPE "unsigned int")
else()
set(SYMBOL_TYPE "unsigned long long")
endif()
foreach(PREFIX IN ITEMS "" "scrambled_")
string(TOUPPER "${PREFIX}" PREFIX_UPPER)
set(INNER_NAME "${PREFIX}${NAME}")
add_custom_target(precompute_${INNER_NAME}_directions_asm ${CMAKE_COMMAND}
-DSYMBOL=${${PREFIX_UPPER}SYMBOL}
-DINPUT_BIN=${${PREFIX_UPPER}OUT_BIN_NAME}
-DOUTPUT=${PROJECT_SOURCE_DIR}/library/src/rocrand_${INNER_NAME}_precomputed.S
-P ${CMAKE_CURRENT_LIST_DIR}/AsmEmbedSymbol.cmake)
add_custom_target(precompute_${INNER_NAME}_directions_cpp bin2typed
${${PREFIX_UPPER}OUT_BIN}
${${PREFIX_UPPER}SYMBOL}
${SYMBOL_TYPE}
${PROJECT_SOURCE_DIR}/library/src/rocrand_${INNER_NAME}_precomputed.cpp)
add_dependencies(precompute_${INNER_NAME}_directions_cpp
bin2typed ${${PREFIX_UPPER}DIRECTIONS_TARGET})
endforeach()
add_dependencies(precompute_sobol_directions
precompute_${NAME}_directions
precompute_${SCRAMBLED_NAME}_directions
precompute_${NAME}_directions_asm
precompute_${NAME}_directions_cpp
precompute_${SCRAMBLED_NAME}_directions_asm
precompute_${SCRAMBLED_NAME}_directions_cpp)
endforeach()