mirror of
https://github.com/NVIDIA/cuda-samples.git
synced 2025-04-10 18:22:11 +01:00
Merge pull request #5 from XSShawnZeng/cmake_transition
Cmake transition
This commit is contained in:
commit
03a7300081
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
build
|
||||
.vs
|
||||
.vs
|
||||
.clangd
|
||||
|
@ -25,3 +25,17 @@ target_compile_options(simpleTexture PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:--extend
|
||||
target_compile_features(simpleTexture PRIVATE cxx_std_17 cuda_std_17)
|
||||
|
||||
set_target_properties(simpleTexture PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET simpleTexture POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/teapot512.pgm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET simpleTexture POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/ref_rotated.pgm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
@ -43,6 +43,20 @@ add_custom_command(
|
||||
COMMENT "Building CUDA fatbin: ${CUDA_FATBIN_FILE}"
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET simpleTextureDrv POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/teapot512.pgm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET simpleTextureDrv POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/ref_rotated.pgm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Create a dummy target for fatbin generation
|
||||
add_custom_target(generate_fatbin_textureDrv ALL DEPENDS ${CUDA_FATBIN_FILE})
|
||||
|
||||
|
@ -47,3 +47,24 @@ target_compile_features(boxFilter PRIVATE cxx_std_17 cuda_std_17)
|
||||
else()
|
||||
message(STATUS "OpenGL not found - will not build sample 'boxFilter'")
|
||||
endif()
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET boxFilter POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/teapot1024.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET boxFilter POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/ref_14.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET boxFilter POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/ref_22.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
@ -36,3 +36,17 @@ add_custom_command(TARGET dct8x8 POST_BUILD
|
||||
${REF_DATA}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET dct8x8 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/teapot512.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET dct8x8 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/teapot512.bmp
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
@ -25,3 +25,24 @@ target_compile_options(eigenvalues PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:--extended
|
||||
target_compile_features(eigenvalues PRIVATE cxx_std_17 cuda_std_17)
|
||||
|
||||
set_target_properties(eigenvalues PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET eigenvalues POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/diagonal.dat
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET eigenvalues POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/superdiagonal.dat
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET eigenvalues POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/reference.dat
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
@ -25,3 +25,24 @@ target_compile_options(segmentationTreeThrust PRIVATE $<$<COMPILE_LANGUAGE:CUDA>
|
||||
target_compile_features(segmentationTreeThrust PRIVATE cxx_std_17 cuda_std_17)
|
||||
|
||||
set_target_properties(segmentationTreeThrust PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET segmentationTreeThrust POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/test.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET segmentationTreeThrust POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/ref_00.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET segmentationTreeThrust POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/ref_09.ppm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
@ -47,3 +47,10 @@ target_compile_features(freeImageInteropNPP PRIVATE cxx_std_17 cuda_std_17)
|
||||
else()
|
||||
message(STATUS "FreeImage not found - will not build sample 'freeImageInteropNPP'")
|
||||
endif()
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET freeImageInteropNPP POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../Common/data/teapot512.pgm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
@ -48,3 +48,10 @@ target_compile_features(histEqualizationNPP PRIVATE cxx_std_17 cuda_std_17)
|
||||
else()
|
||||
message(STATUS "FreeImage not found - will not build sample 'histEqualizationNPP'")
|
||||
endif()
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET histEqualizationNPP POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../Common/data/teapot512.pgm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
@ -35,3 +35,24 @@ target_link_libraries(watershedSegmentationNPP PRIVATE
|
||||
CUDA::nppif
|
||||
CUDA::cudart
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET watershedSegmentationNPP POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../Common/data/teapot_512x512_8u_Gray.raw
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET watershedSegmentationNPP POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../Common/data/CT_skull_512x512_8u_Gray.raw
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
||||
|
||||
# Copy data files to output directory
|
||||
add_custom_command(TARGET watershedSegmentationNPP POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../Common/data/Rocks_512x512_8u_Gray.raw
|
||||
${CMAKE_CURRENT_BINARY_DIR}/
|
||||
)
|
@ -33,32 +33,5 @@ cudaDeviceGetAttribute, cudaNvSciBufMultiplanar, cudaDestroyExternalMemory, cuDr
|
||||
Download and install the [CUDA Toolkit 12.8](https://developer.nvidia.com/cuda-downloads) for your corresponding platform.
|
||||
Make sure the dependencies mentioned in [Dependencies]() section above are installed.
|
||||
|
||||
## Build and Run
|
||||
|
||||
### Linux
|
||||
The Linux samples are built using makefiles. To use the makefiles, change the current directory to the sample directory you wish to build, and run make:
|
||||
```
|
||||
$ cd <sample_dir>
|
||||
$ make
|
||||
```
|
||||
The samples makefiles can take advantage of certain options:
|
||||
* **TARGET_ARCH=<arch>** - cross-compile targeting a specific architecture. Allowed architectures are aarch64.
|
||||
By default, TARGET_ARCH is set to HOST_ARCH. On a x86_64 machine, not setting TARGET_ARCH is the equivalent of setting TARGET_ARCH=x86_64.<br/>
|
||||
`$ make TARGET_ARCH=aarch64` <br/>
|
||||
See [here](http://docs.nvidia.com/cuda/cuda-samples/index.html#cross-samples) for more details.
|
||||
* **dbg=1** - build with debug symbols
|
||||
```
|
||||
$ make dbg=1
|
||||
```
|
||||
* **SMS="A B ..."** - override the SM architectures for which the sample will be built, where `"A B ..."` is a space-delimited list of SM architectures. For example, to generate SASS for SM 50 and SM 60, use `SMS="50 60"`.
|
||||
```
|
||||
$ make SMS="50 60"
|
||||
```
|
||||
|
||||
* **HOST_COMPILER=<host_compiler>** - override the default g++ host compiler. See the [Linux Installation Guide](http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements) for a list of supported host compilers.
|
||||
```
|
||||
$ make HOST_COMPILER=g++
|
||||
```
|
||||
|
||||
## References (for more details)
|
||||
|
||||
|
80
cmake/toolchains/toolchain-aarch64-qnx.cmake
Normal file
80
cmake/toolchains/toolchain-aarch64-qnx.cmake
Normal file
@ -0,0 +1,80 @@
|
||||
#==============================================================================
|
||||
# Toolchain file for cross-compiling to aarch64 QNX
|
||||
#==============================================================================
|
||||
|
||||
# Cross-compiling, so tell CMake that we are not building for the host system
|
||||
set(CMAKE_SYSTEM_NAME QNX)
|
||||
|
||||
# Target processor architecture
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# QNX host and target come from environment
|
||||
# Adjust these or hard-code paths as needed:
|
||||
#
|
||||
# set(QNX_HOST "/path/to/qnx/host") # e.g. /qnx/qnx710/host/linux/x86_64
|
||||
# set(QNX_TARGET "/path/to/qnx/target") # e.g. /qnx/qnx710/target/qnx7
|
||||
#
|
||||
# You can also pass them on the cmake command line:
|
||||
# cmake -D QNX_HOST=/path/to/qnx/host \
|
||||
# -D QNX_TARGET=/path/to/qnx/target \
|
||||
# -DCMAKE_TOOLCHAIN_FILE=toolchain-aarch64-qnx.cmake ..
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# C/C++ Compilers from QNX
|
||||
#----------------------------------------------------------------------------
|
||||
find_program(QNX_QCC NAMES qcc PATHS "${QNX_HOST}/usr/bin")
|
||||
find_program(QNX_QPLUS NAMES q++ PATHS "${QNX_HOST}/usr/bin")
|
||||
|
||||
if(NOT QNX_QCC OR NOT QNX_QPLUS)
|
||||
message(FATAL_ERROR "Could not find qcc or q++ in QNX_HOST=${QNX_HOST}/usr/bin")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER "${QNX_QCC}")
|
||||
set(CMAKE_CXX_COMPILER "${QNX_QPLUS}")
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Sysroot (if you want CMake to know the default sysroot)
|
||||
#----------------------------------------------------------------------------
|
||||
# This is optional, but convenient if the QNX headers/libraries must be found:
|
||||
#----------------------------------------------------------------------------
|
||||
if(DEFINED QNX_TARGET)
|
||||
set(CMAKE_SYSROOT "${QNX_TARGET}")
|
||||
endif()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Additional preprocessor definitions & include paths
|
||||
#----------------------------------------------------------------------------
|
||||
add_compile_options(
|
||||
-D_QNX_SOURCE
|
||||
-DWIN_INTERFACE_CUSTOM
|
||||
)
|
||||
|
||||
# Add an include path to /usr/include/aarch64-qnx-gnu:
|
||||
include_directories("/usr/include/aarch64-qnx-gnu")
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Linker flags
|
||||
#----------------------------------------------------------------------------
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/lib/aarch64-qnx-gnu")
|
||||
|
||||
# Because the Makefile also adds -Wl,-rpath-link,/usr/lib/aarch64-qnx-gnu:
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath-link,/usr/lib/aarch64-qnx-gnu")
|
||||
|
||||
# If you have a “target filesystem” (TARGET_FS) to link with:
|
||||
# -L$(TARGET_FS)/usr/lib
|
||||
# -L$(TARGET_FS)/usr/libnvidia
|
||||
# etc., you can optionally extend the link flags. For example:
|
||||
#
|
||||
# if(DEFINED TARGET_FS)
|
||||
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
|
||||
# -L${TARGET_FS}/usr/lib -Wl,-rpath-link,${TARGET_FS}/usr/lib \
|
||||
# -L${TARGET_FS}/usr/libnvidia -Wl,-rpath-link,${TARGET_FS}/usr/libnvidia")
|
||||
# include_directories("${TARGET_FS}/../include")
|
||||
# endif()
|
||||
|
||||
# If you need to link additional libraries, e.g. -lslog2 under certain conditions:
|
||||
# list(APPEND EXTRA_LIBS "slog2")
|
||||
# ...
|
||||
#----------------------------------------------------------------------------
|
Loading…
x
Reference in New Issue
Block a user