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
140 lines
6.0 KiB
CMake
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()
|