From 03309a2d4275a9186b748e033ee5f90a11492a2f Mon Sep 17 00:00:00 2001 From: Rob Nertney Date: Thu, 29 Jun 2023 19:33:40 +0000 Subject: [PATCH] Changelog updates --- CHANGELOG.md | 5 + README.md | 15 +- .../UnifiedMemoryStreams/Makefile | 4 + .../UnifiedMemoryStreams/README.md | 2 +- .../UnifiedMemoryStreams_vs2017.vcxproj | 4 +- .../UnifiedMemoryStreams_vs2019.vcxproj | 4 +- .../UnifiedMemoryStreams_vs2022.vcxproj | 4 +- Samples/0_Introduction/asyncAPI/Makefile | 4 + Samples/0_Introduction/asyncAPI/README.md | 2 +- .../asyncAPI/asyncAPI_vs2017.vcxproj | 4 +- .../asyncAPI/asyncAPI_vs2019.vcxproj | 4 +- .../asyncAPI/asyncAPI_vs2022.vcxproj | 4 +- Samples/0_Introduction/c++11_cuda/Makefile | 9 +- Samples/0_Introduction/c++11_cuda/README.md | 2 +- .../c++11_cuda/c++11_cuda_vs2017.vcxproj | 4 +- .../c++11_cuda/c++11_cuda_vs2019.vcxproj | 4 +- .../c++11_cuda/c++11_cuda_vs2022.vcxproj | 4 +- Samples/0_Introduction/clock/Makefile | 4 + Samples/0_Introduction/clock/README.md | 2 +- .../0_Introduction/clock/clock_vs2017.vcxproj | 4 +- .../0_Introduction/clock/clock_vs2019.vcxproj | 4 +- .../0_Introduction/clock/clock_vs2022.vcxproj | 4 +- Samples/0_Introduction/clock_nvrtc/Makefile | 4 + Samples/0_Introduction/clock_nvrtc/README.md | 2 +- .../clock_nvrtc/clock_nvrtc_vs2017.vcxproj | 4 +- .../clock_nvrtc/clock_nvrtc_vs2019.vcxproj | 4 +- .../clock_nvrtc/clock_nvrtc_vs2022.vcxproj | 4 +- .../0_Introduction/concurrentKernels/Makefile | 4 + .../concurrentKernels/README.md | 2 +- .../concurrentKernels_vs2017.vcxproj | 4 +- .../concurrentKernels_vs2019.vcxproj | 4 +- .../concurrentKernels_vs2022.vcxproj | 4 +- .../0_Introduction/cppIntegration/Makefile | 4 + .../0_Introduction/cppIntegration/README.md | 2 +- .../cppIntegration_vs2017.vcxproj | 4 +- .../cppIntegration_vs2019.vcxproj | 4 +- .../cppIntegration_vs2022.vcxproj | 4 +- Samples/0_Introduction/cppOverload/Makefile | 4 + Samples/0_Introduction/cppOverload/README.md | 2 +- .../cppOverload/cppOverload_vs2017.vcxproj | 4 +- .../cppOverload/cppOverload_vs2019.vcxproj | 4 +- .../cppOverload/cppOverload_vs2022.vcxproj | 4 +- Samples/0_Introduction/cudaOpenMP/Makefile | 4 + Samples/0_Introduction/cudaOpenMP/README.md | 2 +- .../cudaOpenMP/cudaOpenMP_vs2017.vcxproj | 4 +- .../cudaOpenMP/cudaOpenMP_vs2019.vcxproj | 4 +- .../cudaOpenMP/cudaOpenMP_vs2022.vcxproj | 4 +- .../0_Introduction/fp16ScalarProduct/Makefile | 4 + .../fp16ScalarProduct/README.md | 2 +- .../fp16ScalarProduct_vs2017.vcxproj | 4 +- .../fp16ScalarProduct_vs2019.vcxproj | 4 +- .../fp16ScalarProduct_vs2022.vcxproj | 4 +- Samples/0_Introduction/matrixMul/Makefile | 4 + Samples/0_Introduction/matrixMul/README.md | 2 +- .../matrixMul/matrixMul_vs2017.vcxproj | 4 +- .../matrixMul/matrixMul_vs2019.vcxproj | 4 +- .../matrixMul/matrixMul_vs2022.vcxproj | 4 +- Samples/0_Introduction/matrixMulDrv/Makefile | 4 + Samples/0_Introduction/matrixMulDrv/README.md | 2 +- .../matrixMulDrv/matrixMulDrv_vs2017.vcxproj | 4 +- .../matrixMulDrv/matrixMulDrv_vs2019.vcxproj | 4 +- .../matrixMulDrv/matrixMulDrv_vs2022.vcxproj | 4 +- .../matrixMulDynlinkJIT/Makefile | 4 + .../matrixMulDynlinkJIT/README.md | 2 +- .../matrixMulDynlinkJIT_vs2017.vcxproj | 4 +- .../matrixMulDynlinkJIT_vs2019.vcxproj | 4 +- .../matrixMulDynlinkJIT_vs2022.vcxproj | 4 +- .../0_Introduction/matrixMul_nvrtc/Makefile | 4 + .../0_Introduction/matrixMul_nvrtc/README.md | 2 +- .../matrixMul_nvrtc_vs2017.vcxproj | 4 +- .../matrixMul_nvrtc_vs2019.vcxproj | 4 +- .../matrixMul_nvrtc_vs2022.vcxproj | 4 +- Samples/0_Introduction/mergeSort/Makefile | 4 + Samples/0_Introduction/mergeSort/README.md | 2 +- .../mergeSort/mergeSort_vs2017.vcxproj | 4 +- .../mergeSort/mergeSort_vs2019.vcxproj | 4 +- .../mergeSort/mergeSort_vs2022.vcxproj | 4 +- .../0_Introduction/simpleAWBarrier/Makefile | 9 +- .../0_Introduction/simpleAWBarrier/README.md | 2 +- .../simpleAWBarrier_vs2017.vcxproj | 4 +- .../simpleAWBarrier_vs2019.vcxproj | 4 +- .../simpleAWBarrier_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleAssert/Makefile | 4 + Samples/0_Introduction/simpleAssert/README.md | 2 +- .../simpleAssert/simpleAssert_vs2017.vcxproj | 4 +- .../simpleAssert/simpleAssert_vs2019.vcxproj | 4 +- .../simpleAssert/simpleAssert_vs2022.vcxproj | 4 +- .../simpleAssert_nvrtc/Makefile | 4 + .../simpleAssert_nvrtc/README.md | 2 +- .../simpleAssert_nvrtc_vs2017.vcxproj | 4 +- .../simpleAssert_nvrtc_vs2019.vcxproj | 4 +- .../simpleAssert_nvrtc_vs2022.vcxproj | 4 +- .../simpleAtomicIntrinsics/Makefile | 4 + .../simpleAtomicIntrinsics/README.md | 2 +- .../simpleAtomicIntrinsics_vs2017.vcxproj | 4 +- .../simpleAtomicIntrinsics_vs2019.vcxproj | 4 +- .../simpleAtomicIntrinsics_vs2022.vcxproj | 4 +- .../simpleAtomicIntrinsics_nvrtc/Makefile | 4 + .../simpleAtomicIntrinsics_nvrtc/README.md | 2 +- ...impleAtomicIntrinsics_nvrtc_vs2017.vcxproj | 4 +- ...impleAtomicIntrinsics_nvrtc_vs2019.vcxproj | 4 +- ...impleAtomicIntrinsics_nvrtc_vs2022.vcxproj | 4 +- .../0_Introduction/simpleAttributes/Makefile | 4 + .../0_Introduction/simpleAttributes/README.md | 2 +- .../simpleAttributes_vs2017.vcxproj | 4 +- .../simpleAttributes_vs2019.vcxproj | 4 +- .../simpleAttributes_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleCUDA2GL/Makefile | 4 + .../0_Introduction/simpleCUDA2GL/README.md | 2 +- .../simpleCUDA2GL_vs2017.vcxproj | 4 +- .../simpleCUDA2GL_vs2019.vcxproj | 4 +- .../simpleCUDA2GL_vs2022.vcxproj | 4 +- .../0_Introduction/simpleCallback/Makefile | 4 + .../0_Introduction/simpleCallback/README.md | 2 +- .../simpleCallback_vs2017.vcxproj | 4 +- .../simpleCallback_vs2019.vcxproj | 4 +- .../simpleCallback_vs2022.vcxproj | 4 +- .../simpleCooperativeGroups/Makefile | 4 + .../simpleCooperativeGroups/README.md | 2 +- .../simpleCooperativeGroups_vs2017.vcxproj | 4 +- .../simpleCooperativeGroups_vs2019.vcxproj | 4 +- .../simpleCooperativeGroups_vs2022.vcxproj | 4 +- .../simpleCubemapTexture/Makefile | 4 + .../simpleCubemapTexture/README.md | 2 +- .../simpleCubemapTexture_vs2017.vcxproj | 4 +- .../simpleCubemapTexture_vs2019.vcxproj | 4 +- .../simpleCubemapTexture_vs2022.vcxproj | 4 +- .../0_Introduction/simpleDrvRuntime/Makefile | 4 + .../0_Introduction/simpleDrvRuntime/README.md | 2 +- .../simpleDrvRuntime_vs2017.vcxproj | 4 +- .../simpleDrvRuntime_vs2019.vcxproj | 4 +- .../simpleDrvRuntime_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleHyperQ/Makefile | 4 + Samples/0_Introduction/simpleHyperQ/README.md | 2 +- .../simpleHyperQ/simpleHyperQ_vs2017.vcxproj | 4 +- .../simpleHyperQ/simpleHyperQ_vs2019.vcxproj | 4 +- .../simpleHyperQ/simpleHyperQ_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleIPC/Makefile | 4 + Samples/0_Introduction/simpleIPC/README.md | 2 +- .../simpleIPC/simpleIPC_vs2017.vcxproj | 4 +- .../simpleIPC/simpleIPC_vs2019.vcxproj | 4 +- .../simpleIPC/simpleIPC_vs2022.vcxproj | 4 +- .../simpleLayeredTexture/Makefile | 4 + .../simpleLayeredTexture/README.md | 2 +- .../simpleLayeredTexture_vs2017.vcxproj | 4 +- .../simpleLayeredTexture_vs2019.vcxproj | 4 +- .../simpleLayeredTexture_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleMPI/Makefile | 4 + Samples/0_Introduction/simpleMPI/README.md | 2 +- .../simpleMPI/simpleMPI_vs2017.vcxproj | 4 +- .../simpleMPI/simpleMPI_vs2019.vcxproj | 4 +- .../simpleMPI/simpleMPI_vs2022.vcxproj | 4 +- .../0_Introduction/simpleMultiCopy/Makefile | 4 + .../0_Introduction/simpleMultiCopy/README.md | 2 +- .../simpleMultiCopy_vs2017.vcxproj | 4 +- .../simpleMultiCopy_vs2019.vcxproj | 4 +- .../simpleMultiCopy_vs2022.vcxproj | 4 +- .../0_Introduction/simpleMultiGPU/Makefile | 4 + .../0_Introduction/simpleMultiGPU/README.md | 2 +- .../simpleMultiGPU_vs2017.vcxproj | 4 +- .../simpleMultiGPU_vs2019.vcxproj | 4 +- .../simpleMultiGPU_vs2022.vcxproj | 4 +- .../0_Introduction/simpleOccupancy/Makefile | 4 + .../0_Introduction/simpleOccupancy/README.md | 2 +- .../simpleOccupancy_vs2017.vcxproj | 4 +- .../simpleOccupancy_vs2019.vcxproj | 4 +- .../simpleOccupancy_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleP2P/Makefile | 4 + Samples/0_Introduction/simpleP2P/README.md | 2 +- .../simpleP2P/simpleP2P_vs2017.vcxproj | 4 +- .../simpleP2P/simpleP2P_vs2019.vcxproj | 4 +- .../simpleP2P/simpleP2P_vs2022.vcxproj | 4 +- .../simplePitchLinearTexture/Makefile | 4 + .../simplePitchLinearTexture/README.md | 2 +- .../simplePitchLinearTexture_vs2017.vcxproj | 4 +- .../simplePitchLinearTexture_vs2019.vcxproj | 4 +- .../simplePitchLinearTexture_vs2022.vcxproj | 4 +- Samples/0_Introduction/simplePrintf/Makefile | 4 + Samples/0_Introduction/simplePrintf/README.md | 2 +- .../simplePrintf/simplePrintf_vs2017.vcxproj | 4 +- .../simplePrintf/simplePrintf_vs2019.vcxproj | 4 +- .../simplePrintf/simplePrintf_vs2022.vcxproj | 4 +- .../simpleSeparateCompilation/Makefile | 4 + .../simpleSeparateCompilation/README.md | 2 +- .../simpleSeparateCompilation_vs2017.vcxproj | 4 +- .../simpleSeparateCompilation_vs2019.vcxproj | 4 +- .../simpleSeparateCompilation_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleStreams/Makefile | 4 + .../0_Introduction/simpleStreams/README.md | 2 +- .../simpleStreams_vs2017.vcxproj | 4 +- .../simpleStreams_vs2019.vcxproj | 4 +- .../simpleStreams_vs2022.vcxproj | 4 +- .../simpleSurfaceWrite/Makefile | 4 + .../simpleSurfaceWrite/README.md | 2 +- .../simpleSurfaceWrite_vs2017.vcxproj | 4 +- .../simpleSurfaceWrite_vs2019.vcxproj | 4 +- .../simpleSurfaceWrite_vs2022.vcxproj | 4 +- .../0_Introduction/simpleTemplates/Makefile | 4 + .../0_Introduction/simpleTemplates/README.md | 2 +- .../simpleTemplates_vs2017.vcxproj | 4 +- .../simpleTemplates_vs2019.vcxproj | 4 +- .../simpleTemplates_vs2022.vcxproj | 4 +- .../simpleTemplates_nvrtc/Makefile | 4 + .../simpleTemplates_nvrtc/README.md | 2 +- .../simpleTemplates_nvrtc_vs2017.vcxproj | 4 +- .../simpleTemplates_nvrtc_vs2019.vcxproj | 4 +- .../simpleTemplates_nvrtc_vs2022.vcxproj | 4 +- Samples/0_Introduction/simpleTexture/Makefile | 4 + .../0_Introduction/simpleTexture/README.md | 2 +- .../simpleTexture_vs2017.vcxproj | 4 +- .../simpleTexture_vs2019.vcxproj | 4 +- .../simpleTexture_vs2022.vcxproj | 4 +- .../0_Introduction/simpleTexture3D/Makefile | 4 + .../0_Introduction/simpleTexture3D/README.md | 2 +- .../simpleTexture3D_vs2017.vcxproj | 4 +- .../simpleTexture3D_vs2019.vcxproj | 4 +- .../simpleTexture3D_vs2022.vcxproj | 4 +- .../0_Introduction/simpleTextureDrv/Makefile | 4 + .../0_Introduction/simpleTextureDrv/README.md | 2 +- .../simpleTextureDrv_vs2017.vcxproj | 4 +- .../simpleTextureDrv_vs2019.vcxproj | 4 +- .../simpleTextureDrv_vs2022.vcxproj | 4 +- .../simpleVoteIntrinsics/Makefile | 4 + .../simpleVoteIntrinsics/README.md | 2 +- .../simpleVoteIntrinsics_vs2017.vcxproj | 4 +- .../simpleVoteIntrinsics_vs2019.vcxproj | 4 +- .../simpleVoteIntrinsics_vs2022.vcxproj | 4 +- .../simpleVoteIntrinsics_nvrtc/Makefile | 4 + .../simpleVoteIntrinsics_nvrtc/README.md | 2 +- .../simpleVoteIntrinsics_nvrtc_vs2017.vcxproj | 4 +- .../simpleVoteIntrinsics_nvrtc_vs2019.vcxproj | 4 +- .../simpleVoteIntrinsics_nvrtc_vs2022.vcxproj | 4 +- .../0_Introduction/simpleZeroCopy/Makefile | 4 + .../0_Introduction/simpleZeroCopy/README.md | 2 +- .../simpleZeroCopy_vs2017.vcxproj | 4 +- .../simpleZeroCopy_vs2019.vcxproj | 4 +- .../simpleZeroCopy_vs2022.vcxproj | 4 +- .../0_Introduction/systemWideAtomics/Makefile | 4 + .../systemWideAtomics/README.md | 2 +- Samples/0_Introduction/template/Makefile | 4 + Samples/0_Introduction/template/README.md | 2 +- .../template/template_vs2017.vcxproj | 4 +- .../template/template_vs2019.vcxproj | 4 +- .../template/template_vs2022.vcxproj | 4 +- Samples/0_Introduction/vectorAdd/Makefile | 4 + Samples/0_Introduction/vectorAdd/README.md | 2 +- .../vectorAdd/vectorAdd_vs2017.vcxproj | 4 +- .../vectorAdd/vectorAdd_vs2019.vcxproj | 4 +- .../vectorAdd/vectorAdd_vs2022.vcxproj | 4 +- Samples/0_Introduction/vectorAddDrv/Makefile | 4 + Samples/0_Introduction/vectorAddDrv/README.md | 2 +- .../vectorAddDrv/vectorAddDrv_vs2017.vcxproj | 4 +- .../vectorAddDrv/vectorAddDrv_vs2019.vcxproj | 4 +- .../vectorAddDrv/vectorAddDrv_vs2022.vcxproj | 4 +- Samples/0_Introduction/vectorAddMMAP/Makefile | 4 + .../0_Introduction/vectorAddMMAP/README.md | 2 +- .../vectorAddMMAP_vs2017.vcxproj | 4 +- .../vectorAddMMAP_vs2019.vcxproj | 4 +- .../vectorAddMMAP_vs2022.vcxproj | 4 +- .../0_Introduction/vectorAdd_nvrtc/Makefile | 4 + .../0_Introduction/vectorAdd_nvrtc/README.md | 2 +- .../vectorAdd_nvrtc_vs2017.vcxproj | 4 +- .../vectorAdd_nvrtc_vs2019.vcxproj | 4 +- .../vectorAdd_nvrtc_vs2022.vcxproj | 4 +- Samples/1_Utilities/bandwidthTest/Makefile | 4 + Samples/1_Utilities/bandwidthTest/README.md | 2 +- .../bandwidthTest_vs2017.vcxproj | 4 +- .../bandwidthTest_vs2019.vcxproj | 4 +- .../bandwidthTest_vs2022.vcxproj | 4 +- Samples/1_Utilities/deviceQuery/Makefile | 4 + Samples/1_Utilities/deviceQuery/README.md | 2 +- .../deviceQuery/deviceQuery_vs2017.vcxproj | 4 +- .../deviceQuery/deviceQuery_vs2019.vcxproj | 4 +- .../deviceQuery/deviceQuery_vs2022.vcxproj | 4 +- Samples/1_Utilities/deviceQueryDrv/Makefile | 4 + Samples/1_Utilities/deviceQueryDrv/README.md | 2 +- .../deviceQueryDrv_vs2017.vcxproj | 4 +- .../deviceQueryDrv_vs2019.vcxproj | 4 +- .../deviceQueryDrv_vs2022.vcxproj | 4 +- Samples/1_Utilities/topologyQuery/Makefile | 4 + Samples/1_Utilities/topologyQuery/README.md | 2 +- .../topologyQuery_vs2017.vcxproj | 4 +- .../topologyQuery_vs2019.vcxproj | 4 +- .../topologyQuery_vs2022.vcxproj | 4 +- .../EGLStream_CUDA_CrossGPU/Makefile | 4 + .../EGLStream_CUDA_CrossGPU/README.md | 2 +- .../EGLStream_CUDA_Interop/Makefile | 4 + .../EGLStream_CUDA_Interop/README.md | 2 +- .../EGLSync_CUDAEvent_Interop/Makefile | 4 + .../EGLSync_CUDAEvent_Interop/README.md | 2 +- .../FunctionPointers_vs2017.vcxproj | 4 +- .../FunctionPointers_vs2019.vcxproj | 4 +- .../FunctionPointers_vs2022.vcxproj | 4 +- .../FunctionPointers/Makefile | 4 + .../FunctionPointers/README.md | 2 +- .../MC_EstimatePiInlineP_vs2017.vcxproj | 4 +- .../MC_EstimatePiInlineP_vs2019.vcxproj | 4 +- .../MC_EstimatePiInlineP_vs2022.vcxproj | 4 +- .../MC_EstimatePiInlineP/Makefile | 4 + .../MC_EstimatePiInlineP/README.md | 2 +- .../MC_EstimatePiInlineQ_vs2017.vcxproj | 4 +- .../MC_EstimatePiInlineQ_vs2019.vcxproj | 4 +- .../MC_EstimatePiInlineQ_vs2022.vcxproj | 4 +- .../MC_EstimatePiInlineQ/Makefile | 4 + .../MC_EstimatePiInlineQ/README.md | 2 +- .../MC_EstimatePiP_vs2017.vcxproj | 4 +- .../MC_EstimatePiP_vs2019.vcxproj | 4 +- .../MC_EstimatePiP_vs2022.vcxproj | 4 +- .../MC_EstimatePiP/Makefile | 4 + .../MC_EstimatePiP/README.md | 2 +- .../MC_EstimatePiQ_vs2017.vcxproj | 4 +- .../MC_EstimatePiQ_vs2019.vcxproj | 4 +- .../MC_EstimatePiQ_vs2022.vcxproj | 4 +- .../MC_EstimatePiQ/Makefile | 4 + .../MC_EstimatePiQ/README.md | 2 +- .../MC_SingleAsianOptionP_vs2017.vcxproj | 4 +- .../MC_SingleAsianOptionP_vs2019.vcxproj | 4 +- .../MC_SingleAsianOptionP_vs2022.vcxproj | 4 +- .../MC_SingleAsianOptionP/Makefile | 4 + .../MC_SingleAsianOptionP/README.md | 2 +- .../boxFilter/Makefile | 4 + .../boxFilter/README.md | 2 +- .../boxFilter/boxFilter_vs2017.vcxproj | 4 +- .../boxFilter/boxFilter_vs2019.vcxproj | 4 +- .../boxFilter/boxFilter_vs2022.vcxproj | 4 +- .../convolutionSeparable/Makefile | 4 + .../convolutionSeparable/README.md | 2 +- .../convolutionSeparable_vs2017.vcxproj | 4 +- .../convolutionSeparable_vs2019.vcxproj | 4 +- .../convolutionSeparable_vs2022.vcxproj | 4 +- .../convolutionTexture/Makefile | 4 + .../convolutionTexture/README.md | 2 +- .../convolutionTexture_vs2017.vcxproj | 4 +- .../convolutionTexture_vs2019.vcxproj | 4 +- .../convolutionTexture_vs2022.vcxproj | 4 +- .../2_Concepts_and_Techniques/cuHook/Makefile | 4 + .../cuHook/README.md | 2 +- .../2_Concepts_and_Techniques/dct8x8/Makefile | 4 + .../dct8x8/README.md | 2 +- .../dct8x8/dct8x8_vs2017.vcxproj | 4 +- .../dct8x8/dct8x8_vs2019.vcxproj | 4 +- .../dct8x8/dct8x8_vs2022.vcxproj | 4 +- .../eigenvalues/Makefile | 4 + .../eigenvalues/README.md | 2 +- .../eigenvalues/eigenvalues_vs2017.vcxproj | 4 +- .../eigenvalues/eigenvalues_vs2019.vcxproj | 4 +- .../eigenvalues/eigenvalues_vs2022.vcxproj | 4 +- .../histogram/Makefile | 4 + .../histogram/README.md | 2 +- .../histogram/histogram_vs2017.vcxproj | 4 +- .../histogram/histogram_vs2019.vcxproj | 4 +- .../histogram/histogram_vs2022.vcxproj | 4 +- .../imageDenoising/Makefile | 4 + .../imageDenoising/README.md | 2 +- .../imageDenoising_vs2017.vcxproj | 4 +- .../imageDenoising_vs2019.vcxproj | 4 +- .../imageDenoising_vs2022.vcxproj | 4 +- .../inlinePTX/Makefile | 4 + .../inlinePTX/README.md | 2 +- .../inlinePTX/inlinePTX_vs2017.vcxproj | 4 +- .../inlinePTX/inlinePTX_vs2019.vcxproj | 4 +- .../inlinePTX/inlinePTX_vs2022.vcxproj | 4 +- .../inlinePTX_nvrtc/Makefile | 4 + .../inlinePTX_nvrtc/README.md | 2 +- .../inlinePTX_nvrtc_vs2017.vcxproj | 4 +- .../inlinePTX_nvrtc_vs2019.vcxproj | 4 +- .../inlinePTX_nvrtc_vs2022.vcxproj | 4 +- .../interval/Makefile | 4 + .../interval/README.md | 2 +- .../interval/interval_vs2017.vcxproj | 4 +- .../interval/interval_vs2019.vcxproj | 4 +- .../interval/interval_vs2022.vcxproj | 4 +- .../particles/Makefile | 9 +- .../particles/README.md | 2 +- .../particles/particles_vs2017.vcxproj | 4 +- .../particles/particles_vs2019.vcxproj | 4 +- .../particles/particles_vs2022.vcxproj | 4 +- .../radixSortThrust/Makefile | 9 +- .../radixSortThrust/README.md | 2 +- .../radixSortThrust_vs2017.vcxproj | 4 +- .../radixSortThrust_vs2019.vcxproj | 4 +- .../radixSortThrust_vs2022.vcxproj | 4 +- .../reduction/Makefile | 9 +- .../reduction/README.md | 2 +- .../reduction/reduction_vs2017.vcxproj | 4 +- .../reduction/reduction_vs2019.vcxproj | 4 +- .../reduction/reduction_vs2022.vcxproj | 4 +- .../reductionMultiBlockCG/Makefile | 9 +- .../reductionMultiBlockCG/README.md | 2 +- .../reductionMultiBlockCG_vs2017.vcxproj | 4 +- .../reductionMultiBlockCG_vs2019.vcxproj | 4 +- .../reductionMultiBlockCG_vs2022.vcxproj | 4 +- .../scalarProd/Makefile | 4 + .../scalarProd/README.md | 2 +- .../scalarProd/scalarProd_vs2017.vcxproj | 4 +- .../scalarProd/scalarProd_vs2019.vcxproj | 4 +- .../scalarProd/scalarProd_vs2022.vcxproj | 4 +- .../2_Concepts_and_Techniques/scan/Makefile | 4 + .../2_Concepts_and_Techniques/scan/README.md | 2 +- .../scan/scan_vs2017.vcxproj | 4 +- .../scan/scan_vs2019.vcxproj | 4 +- .../scan/scan_vs2022.vcxproj | 4 +- .../segmentationTreeThrust/Makefile | 9 +- .../segmentationTreeThrust/README.md | 2 +- .../segmentationTreeThrust_vs2017.vcxproj | 4 +- .../segmentationTreeThrust_vs2019.vcxproj | 4 +- .../segmentationTreeThrust_vs2022.vcxproj | 4 +- .../shfl_scan/Makefile | 9 +- .../shfl_scan/README.md | 2 +- .../shfl_scan/shfl_scan_vs2017.vcxproj | 4 +- .../shfl_scan/shfl_scan_vs2019.vcxproj | 4 +- .../shfl_scan/shfl_scan_vs2022.vcxproj | 4 +- .../sortingNetworks/Makefile | 4 + .../sortingNetworks/README.md | 2 +- .../sortingNetworks_vs2017.vcxproj | 4 +- .../sortingNetworks_vs2019.vcxproj | 4 +- .../sortingNetworks_vs2022.vcxproj | 4 +- .../streamOrderedAllocation/Makefile | 4 + .../streamOrderedAllocation/README.md | 2 +- .../streamOrderedAllocation_vs2017.vcxproj | 4 +- .../streamOrderedAllocation_vs2019.vcxproj | 4 +- .../streamOrderedAllocation_vs2022.vcxproj | 4 +- .../streamOrderedAllocationIPC/Makefile | 4 + .../streamOrderedAllocationIPC/README.md | 2 +- .../streamOrderedAllocationIPC.cu | 5 +- .../streamOrderedAllocationP2P/Makefile | 4 + .../streamOrderedAllocationP2P/README.md | 2 +- .../streamOrderedAllocationP2P_vs2017.vcxproj | 4 +- .../streamOrderedAllocationP2P_vs2019.vcxproj | 4 +- .../streamOrderedAllocationP2P_vs2022.vcxproj | 4 +- .../threadFenceReduction/Makefile | 4 + .../threadFenceReduction/README.md | 2 +- .../threadFenceReduction_vs2017.vcxproj | 4 +- .../threadFenceReduction_vs2019.vcxproj | 4 +- .../threadFenceReduction_vs2022.vcxproj | 4 +- .../threadMigration/Makefile | 4 + .../threadMigration/README.md | 2 +- .../threadMigration_vs2017.vcxproj | 4 +- .../threadMigration_vs2019.vcxproj | 4 +- .../threadMigration_vs2022.vcxproj | 4 +- .../3_CUDA_Features/StreamPriorities/Makefile | 4 + .../StreamPriorities/README.md | 2 +- .../bf16TensorCoreGemm/Makefile | 9 +- .../bf16TensorCoreGemm/README.md | 2 +- .../bf16TensorCoreGemm_vs2017.vcxproj | 4 +- .../bf16TensorCoreGemm_vs2019.vcxproj | 4 +- .../bf16TensorCoreGemm_vs2022.vcxproj | 4 +- .../binaryPartitionCG/Makefile | 9 +- .../binaryPartitionCG/README.md | 2 +- .../binaryPartitionCG_vs2017.vcxproj | 4 +- .../binaryPartitionCG_vs2019.vcxproj | 4 +- .../binaryPartitionCG_vs2022.vcxproj | 4 +- .../3_CUDA_Features/bindlessTexture/Makefile | 4 + .../3_CUDA_Features/bindlessTexture/README.md | 2 +- .../bindlessTexture_vs2017.vcxproj | 4 +- .../bindlessTexture_vs2019.vcxproj | 4 +- .../bindlessTexture_vs2022.vcxproj | 4 +- .../cdpAdvancedQuicksort/Makefile | 9 +- .../cdpAdvancedQuicksort/README.md | 2 +- .../cdpAdvancedQuicksort_vs2017.vcxproj | 4 +- .../cdpAdvancedQuicksort_vs2019.vcxproj | 4 +- .../cdpAdvancedQuicksort_vs2022.vcxproj | 4 +- .../cdpBezierTessellation/Makefile | 4 + .../cdpBezierTessellation/README.md | 2 +- .../cdpBezierTessellation_vs2017.vcxproj | 4 +- .../cdpBezierTessellation_vs2019.vcxproj | 4 +- .../cdpBezierTessellation_vs2022.vcxproj | 4 +- Samples/3_CUDA_Features/cdpQuadtree/Makefile | 9 +- Samples/3_CUDA_Features/cdpQuadtree/README.md | 2 +- .../cdpQuadtree/cdpQuadtree_vs2017.vcxproj | 4 +- .../cdpQuadtree/cdpQuadtree_vs2019.vcxproj | 4 +- .../cdpQuadtree/cdpQuadtree_vs2022.vcxproj | 4 +- .../3_CUDA_Features/cdpSimplePrint/Makefile | 4 + .../3_CUDA_Features/cdpSimplePrint/README.md | 2 +- .../cdpSimplePrint_vs2017.vcxproj | 4 +- .../cdpSimplePrint_vs2019.vcxproj | 4 +- .../cdpSimplePrint_vs2022.vcxproj | 4 +- .../cdpSimpleQuicksort/Makefile | 4 + .../cdpSimpleQuicksort/README.md | 2 +- .../cdpSimpleQuicksort_vs2017.vcxproj | 4 +- .../cdpSimpleQuicksort_vs2019.vcxproj | 4 +- .../cdpSimpleQuicksort_vs2022.vcxproj | 4 +- .../cudaCompressibleMemory/Makefile | 4 + .../cudaCompressibleMemory/README.md | 2 +- .../cudaCompressibleMemory_vs2017.vcxproj | 4 +- .../cudaCompressibleMemory_vs2019.vcxproj | 4 +- .../cudaCompressibleMemory_vs2022.vcxproj | 4 +- .../cudaTensorCoreGemm/Makefile | 4 + .../cudaTensorCoreGemm/README.md | 2 +- .../cudaTensorCoreGemm_vs2017.vcxproj | 4 +- .../cudaTensorCoreGemm_vs2019.vcxproj | 4 +- .../cudaTensorCoreGemm_vs2022.vcxproj | 4 +- .../dmmaTensorCoreGemm/Makefile | 9 +- .../dmmaTensorCoreGemm/README.md | 2 +- .../dmmaTensorCoreGemm_vs2017.vcxproj | 4 +- .../dmmaTensorCoreGemm_vs2019.vcxproj | 4 +- .../dmmaTensorCoreGemm_vs2022.vcxproj | 4 +- .../globalToShmemAsyncCopy/Makefile | 9 +- .../globalToShmemAsyncCopy/README.md | 2 +- .../globalToShmemAsyncCopy_vs2017.vcxproj | 4 +- .../globalToShmemAsyncCopy_vs2019.vcxproj | 4 +- .../globalToShmemAsyncCopy_vs2022.vcxproj | 4 +- .../graphMemoryFootprint/Makefile | 4 + .../graphMemoryFootprint/README.md | 2 +- .../graphMemoryFootprint_vs2017.vcxproj | 4 +- .../graphMemoryFootprint_vs2019.vcxproj | 4 +- .../graphMemoryFootprint_vs2022.vcxproj | 4 +- .../3_CUDA_Features/graphMemoryNodes/Makefile | 4 + .../graphMemoryNodes/README.md | 2 +- .../graphMemoryNodes_vs2017.vcxproj | 4 +- .../graphMemoryNodes_vs2019.vcxproj | 4 +- .../graphMemoryNodes_vs2022.vcxproj | 4 +- .../immaTensorCoreGemm/Makefile | 4 + .../immaTensorCoreGemm/README.md | 2 +- .../immaTensorCoreGemm_vs2017.vcxproj | 4 +- .../immaTensorCoreGemm_vs2019.vcxproj | 4 +- .../immaTensorCoreGemm_vs2022.vcxproj | 4 +- .../3_CUDA_Features/jacobiCudaGraphs/Makefile | 4 + .../jacobiCudaGraphs/README.md | 2 +- .../jacobiCudaGraphs_vs2017.vcxproj | 4 +- .../jacobiCudaGraphs_vs2019.vcxproj | 4 +- .../jacobiCudaGraphs_vs2022.vcxproj | 4 +- Samples/3_CUDA_Features/memMapIPCDrv/Makefile | 4 + .../3_CUDA_Features/memMapIPCDrv/README.md | 2 +- .../memMapIPCDrv/memMapIPCDrv_vs2017.vcxproj | 4 +- .../memMapIPCDrv/memMapIPCDrv_vs2019.vcxproj | 4 +- .../memMapIPCDrv/memMapIPCDrv_vs2022.vcxproj | 4 +- Samples/3_CUDA_Features/newdelete/Makefile | 4 + Samples/3_CUDA_Features/newdelete/README.md | 2 +- .../newdelete/newdelete_vs2017.vcxproj | 4 +- .../newdelete/newdelete_vs2019.vcxproj | 4 +- .../newdelete/newdelete_vs2022.vcxproj | 4 +- Samples/3_CUDA_Features/ptxjit/Makefile | 4 + Samples/3_CUDA_Features/ptxjit/README.md | 2 +- .../ptxjit/ptxjit_vs2017.vcxproj | 4 +- .../ptxjit/ptxjit_vs2019.vcxproj | 4 +- .../ptxjit/ptxjit_vs2022.vcxproj | 4 +- .../3_CUDA_Features/simpleCudaGraphs/Makefile | 4 + .../simpleCudaGraphs/README.md | 2 +- .../simpleCudaGraphs_vs2017.vcxproj | 4 +- .../simpleCudaGraphs_vs2019.vcxproj | 4 +- .../simpleCudaGraphs_vs2022.vcxproj | 4 +- .../tf32TensorCoreGemm/Makefile | 9 +- .../tf32TensorCoreGemm/README.md | 2 +- .../tf32TensorCoreGemm_vs2017.vcxproj | 4 +- .../tf32TensorCoreGemm_vs2019.vcxproj | 4 +- .../tf32TensorCoreGemm_vs2022.vcxproj | 4 +- .../warpAggregatedAtomicsCG/Makefile | 9 +- .../warpAggregatedAtomicsCG/README.md | 2 +- .../warpAggregatedAtomicsCG_vs2017.vcxproj | 4 +- .../warpAggregatedAtomicsCG_vs2019.vcxproj | 4 +- .../warpAggregatedAtomicsCG_vs2022.vcxproj | 4 +- .../FilterBorderControlNPP_vs2017.vcxproj | 4 +- .../FilterBorderControlNPP_vs2019.vcxproj | 4 +- .../FilterBorderControlNPP_vs2022.vcxproj | 4 +- .../FilterBorderControlNPP/Makefile | 4 + .../FilterBorderControlNPP/README.md | 2 +- .../MersenneTwisterGP11213/Makefile | 4 + .../MersenneTwisterGP11213_vs2017.vcxproj | 4 +- .../MersenneTwisterGP11213_vs2019.vcxproj | 4 +- .../MersenneTwisterGP11213_vs2022.vcxproj | 4 +- .../MersenneTwisterGP11213/README.md | 2 +- Samples/4_CUDA_Libraries/batchCUBLAS/Makefile | 4 + .../4_CUDA_Libraries/batchCUBLAS/README.md | 2 +- .../batchCUBLAS/batchCUBLAS_vs2017.vcxproj | 4 +- .../batchCUBLAS/batchCUBLAS_vs2019.vcxproj | 4 +- .../batchCUBLAS/batchCUBLAS_vs2022.vcxproj | 4 +- .../Makefile | 4 + .../README.md | 2 +- ...rkersAndLabelCompressionNPP_vs2017.vcxproj | 4 +- ...rkersAndLabelCompressionNPP_vs2019.vcxproj | 4 +- ...rkersAndLabelCompressionNPP_vs2022.vcxproj | 4 +- .../4_CUDA_Libraries/boxFilterNPP/Makefile | 4 + .../4_CUDA_Libraries/boxFilterNPP/README.md | 2 +- .../boxFilterNPP/boxFilterNPP_vs2017.vcxproj | 4 +- .../boxFilterNPP/boxFilterNPP_vs2019.vcxproj | 4 +- .../boxFilterNPP/boxFilterNPP_vs2022.vcxproj | 4 +- .../cannyEdgeDetectorNPP/Makefile | 4 + .../cannyEdgeDetectorNPP/README.md | 2 +- .../cannyEdgeDetectorNPP_vs2017.vcxproj | 4 +- .../cannyEdgeDetectorNPP_vs2019.vcxproj | 4 +- .../cannyEdgeDetectorNPP_vs2022.vcxproj | 4 +- .../conjugateGradient/Makefile | 4 + .../conjugateGradient/README.md | 2 +- .../conjugateGradient_vs2017.vcxproj | 4 +- .../conjugateGradient_vs2019.vcxproj | 4 +- .../conjugateGradient_vs2022.vcxproj | 4 +- .../conjugateGradientCudaGraphs/Makefile | 4 + .../conjugateGradientCudaGraphs/README.md | 2 +- ...conjugateGradientCudaGraphs_vs2017.vcxproj | 4 +- ...conjugateGradientCudaGraphs_vs2019.vcxproj | 4 +- ...conjugateGradientCudaGraphs_vs2022.vcxproj | 4 +- .../conjugateGradientMultiBlockCG/Makefile | 9 +- .../conjugateGradientMultiBlockCG/README.md | 2 +- ...njugateGradientMultiBlockCG_vs2017.vcxproj | 4 +- ...njugateGradientMultiBlockCG_vs2019.vcxproj | 4 +- ...njugateGradientMultiBlockCG_vs2022.vcxproj | 4 +- .../conjugateGradientMultiDeviceCG/Makefile | 9 +- .../conjugateGradientMultiDeviceCG/README.md | 2 +- ...jugateGradientMultiDeviceCG_vs2017.vcxproj | 4 +- ...jugateGradientMultiDeviceCG_vs2019.vcxproj | 4 +- ...jugateGradientMultiDeviceCG_vs2022.vcxproj | 4 +- .../conjugateGradientPrecond/Makefile | 4 + .../conjugateGradientPrecond/README.md | 2 +- .../conjugateGradientPrecond_vs2017.vcxproj | 4 +- .../conjugateGradientPrecond_vs2019.vcxproj | 4 +- .../conjugateGradientPrecond_vs2022.vcxproj | 4 +- .../conjugateGradientUM/Makefile | 4 + .../conjugateGradientUM/README.md | 2 +- .../conjugateGradientUM_vs2017.vcxproj | 4 +- .../conjugateGradientUM_vs2019.vcxproj | 4 +- .../conjugateGradientUM_vs2022.vcxproj | 4 +- .../cuDLAErrorReporting/Makefile | 9 +- .../cuDLAErrorReporting/README.md | 2 +- .../4_CUDA_Libraries/cuDLAHybridMode/Makefile | 9 +- .../cuDLAHybridMode/README.md | 2 +- .../cuDLAStandaloneMode/Makefile | 9 +- .../cuDLAStandaloneMode/README.md | 2 +- .../cuSolverDn_LinearSolver/Makefile | 4 + .../cuSolverDn_LinearSolver/README.md | 2 +- .../cuSolverDn_LinearSolver_vs2017.vcxproj | 4 +- .../cuSolverDn_LinearSolver_vs2019.vcxproj | 4 +- .../cuSolverDn_LinearSolver_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/cuSolverRf/Makefile | 4 + Samples/4_CUDA_Libraries/cuSolverRf/README.md | 2 +- .../cuSolverRf/cuSolverRf_vs2017.vcxproj | 4 +- .../cuSolverRf/cuSolverRf_vs2019.vcxproj | 4 +- .../cuSolverRf/cuSolverRf_vs2022.vcxproj | 4 +- .../cuSolverSp_LinearSolver/Makefile | 4 + .../cuSolverSp_LinearSolver/README.md | 2 +- .../cuSolverSp_LinearSolver_vs2017.vcxproj | 4 +- .../cuSolverSp_LinearSolver_vs2019.vcxproj | 4 +- .../cuSolverSp_LinearSolver_vs2022.vcxproj | 4 +- .../cuSolverSp_LowlevelCholesky/Makefile | 4 + .../cuSolverSp_LowlevelCholesky/README.md | 2 +- ...cuSolverSp_LowlevelCholesky_vs2017.vcxproj | 4 +- ...cuSolverSp_LowlevelCholesky_vs2019.vcxproj | 4 +- ...cuSolverSp_LowlevelCholesky_vs2022.vcxproj | 4 +- .../cuSolverSp_LowlevelQR/Makefile | 4 + .../cuSolverSp_LowlevelQR/README.md | 2 +- .../cuSolverSp_LowlevelQR_vs2017.vcxproj | 4 +- .../cuSolverSp_LowlevelQR_vs2019.vcxproj | 4 +- .../cuSolverSp_LowlevelQR_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/cudaNvSci/Makefile | 9 +- Samples/4_CUDA_Libraries/cudaNvSci/README.md | 2 +- .../cudaNvSciNvMedia/Makefile | 9 +- .../cudaNvSciNvMedia/README.md | 2 +- .../freeImageInteropNPP/Makefile | 4 + .../freeImageInteropNPP/README.md | 2 +- .../freeImageInteropNPP_vs2017.vcxproj | 4 +- .../freeImageInteropNPP_vs2019.vcxproj | 4 +- .../freeImageInteropNPP_vs2022.vcxproj | 4 +- .../histEqualizationNPP/Makefile | 4 + .../histEqualizationNPP/README.md | 2 +- .../histEqualizationNPP_vs2017.vcxproj | 4 +- .../histEqualizationNPP_vs2019.vcxproj | 4 +- .../histEqualizationNPP_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/jitLto/Makefile | 4 + Samples/4_CUDA_Libraries/jitLto/README.md | 2 +- .../jitLto/jitLto_vs2017.vcxproj | 4 +- .../jitLto/jitLto_vs2019.vcxproj | 4 +- .../jitLto/jitLto_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/lineOfSight/Makefile | 9 +- .../4_CUDA_Libraries/lineOfSight/README.md | 2 +- .../lineOfSight/lineOfSight_vs2017.vcxproj | 4 +- .../lineOfSight/lineOfSight_vs2019.vcxproj | 4 +- .../lineOfSight/lineOfSight_vs2022.vcxproj | 4 +- .../4_CUDA_Libraries/matrixMulCUBLAS/Makefile | 4 + .../matrixMulCUBLAS/README.md | 2 +- .../matrixMulCUBLAS_vs2017.vcxproj | 4 +- .../matrixMulCUBLAS_vs2019.vcxproj | 4 +- .../matrixMulCUBLAS_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/nvJPEG/Makefile | 4 + Samples/4_CUDA_Libraries/nvJPEG/README.md | 2 +- .../nvJPEG/nvJPEG_vs2017.vcxproj | 4 +- .../nvJPEG/nvJPEG_vs2019.vcxproj | 4 +- .../nvJPEG/nvJPEG_vs2022.vcxproj | 4 +- .../4_CUDA_Libraries/nvJPEG_encoder/Makefile | 4 + .../4_CUDA_Libraries/nvJPEG_encoder/README.md | 2 +- .../nvJPEG_encoder_vs2017.vcxproj | 4 +- .../nvJPEG_encoder_vs2019.vcxproj | 4 +- .../nvJPEG_encoder_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/oceanFFT/Makefile | 4 + Samples/4_CUDA_Libraries/oceanFFT/README.md | 2 +- .../oceanFFT/oceanFFT_vs2017.vcxproj | 4 +- .../oceanFFT/oceanFFT_vs2019.vcxproj | 4 +- .../oceanFFT/oceanFFT_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/randomFog/Makefile | 4 + Samples/4_CUDA_Libraries/randomFog/README.md | 2 +- .../randomFog/randomFog_vs2017.vcxproj | 4 +- .../randomFog/randomFog_vs2019.vcxproj | 4 +- .../randomFog/randomFog_vs2022.vcxproj | 4 +- .../4_CUDA_Libraries/simpleCUBLAS/Makefile | 4 + .../4_CUDA_Libraries/simpleCUBLAS/README.md | 2 +- .../simpleCUBLAS/simpleCUBLAS_vs2017.vcxproj | 4 +- .../simpleCUBLAS/simpleCUBLAS_vs2019.vcxproj | 4 +- .../simpleCUBLAS/simpleCUBLAS_vs2022.vcxproj | 4 +- .../4_CUDA_Libraries/simpleCUBLASXT/Makefile | 4 + .../4_CUDA_Libraries/simpleCUBLASXT/README.md | 2 +- .../simpleCUBLASXT_vs2017.vcxproj | 4 +- .../simpleCUBLASXT_vs2019.vcxproj | 4 +- .../simpleCUBLASXT_vs2022.vcxproj | 4 +- .../4_CUDA_Libraries/simpleCUBLAS_LU/Makefile | 4 + .../simpleCUBLAS_LU/README.md | 2 +- .../simpleCUBLAS_LU_vs2017.vcxproj | 4 +- .../simpleCUBLAS_LU_vs2019.vcxproj | 4 +- .../simpleCUBLAS_LU_vs2022.vcxproj | 4 +- Samples/4_CUDA_Libraries/simpleCUFFT/Makefile | 4 + .../4_CUDA_Libraries/simpleCUFFT/README.md | 2 +- .../simpleCUFFT/simpleCUFFT_vs2017.vcxproj | 4 +- .../simpleCUFFT/simpleCUFFT_vs2019.vcxproj | 4 +- .../simpleCUFFT/simpleCUFFT_vs2022.vcxproj | 4 +- .../simpleCUFFT_2d_MGPU/Makefile | 4 + .../simpleCUFFT_2d_MGPU/README.md | 2 +- .../simpleCUFFT_2d_MGPU_vs2017.vcxproj | 4 +- .../simpleCUFFT_2d_MGPU_vs2019.vcxproj | 4 +- .../simpleCUFFT_2d_MGPU_vs2022.vcxproj | 4 +- .../simpleCUFFT_MGPU/Makefile | 4 + .../simpleCUFFT_MGPU/README.md | 2 +- .../simpleCUFFT_MGPU_vs2017.vcxproj | 4 +- .../simpleCUFFT_MGPU_vs2019.vcxproj | 4 +- .../simpleCUFFT_MGPU_vs2022.vcxproj | 4 +- .../simpleCUFFT_callback/Makefile | 9 +- .../simpleCUFFT_callback/README.md | 2 +- .../watershedSegmentationNPP/Makefile | 4 + .../watershedSegmentationNPP/README.md | 2 +- .../watershedSegmentationNPP_vs2017.vcxproj | 4 +- .../watershedSegmentationNPP_vs2019.vcxproj | 4 +- .../watershedSegmentationNPP_vs2022.vcxproj | 4 +- .../BlackScholes/BlackScholes_vs2017.vcxproj | 4 +- .../BlackScholes/BlackScholes_vs2019.vcxproj | 4 +- .../BlackScholes/BlackScholes_vs2022.vcxproj | 4 +- .../5_Domain_Specific/BlackScholes/Makefile | 4 + .../5_Domain_Specific/BlackScholes/README.md | 2 +- .../BlackScholes_nvrtc_vs2017.vcxproj | 4 +- .../BlackScholes_nvrtc_vs2019.vcxproj | 4 +- .../BlackScholes_nvrtc_vs2022.vcxproj | 4 +- .../BlackScholes_nvrtc/Makefile | 4 + .../BlackScholes_nvrtc/README.md | 2 +- .../FDTD3d/FDTD3d_vs2017.vcxproj | 4 +- .../FDTD3d/FDTD3d_vs2019.vcxproj | 4 +- .../FDTD3d/FDTD3d_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/FDTD3d/Makefile | 4 + Samples/5_Domain_Specific/FDTD3d/README.md | 2 +- .../HSOpticalFlow_vs2017.vcxproj | 4 +- .../HSOpticalFlow_vs2019.vcxproj | 4 +- .../HSOpticalFlow_vs2022.vcxproj | 4 +- .../5_Domain_Specific/HSOpticalFlow/Makefile | 4 + .../5_Domain_Specific/HSOpticalFlow/README.md | 2 +- Samples/5_Domain_Specific/Mandelbrot/Makefile | 4 + .../Mandelbrot/Mandelbrot_vs2017.vcxproj | 4 +- .../Mandelbrot/Mandelbrot_vs2019.vcxproj | 4 +- .../Mandelbrot/Mandelbrot_vs2022.vcxproj | 4 +- .../5_Domain_Specific/Mandelbrot/README.md | 2 +- .../MonteCarloMultiGPU/Makefile | 4 + .../MonteCarloMultiGPU_vs2017.vcxproj | 4 +- .../MonteCarloMultiGPU_vs2019.vcxproj | 4 +- .../MonteCarloMultiGPU_vs2022.vcxproj | 4 +- .../MonteCarloMultiGPU/README.md | 2 +- .../NV12toBGRandResize/Makefile | 4 + .../NV12toBGRandResize_vs2017.vcxproj | 4 +- .../NV12toBGRandResize_vs2019.vcxproj | 4 +- .../NV12toBGRandResize_vs2022.vcxproj | 4 +- .../NV12toBGRandResize/README.md | 2 +- .../SLID3D10Texture/README.md | 2 +- .../SLID3D10Texture_vs2017.vcxproj | 4 +- .../SLID3D10Texture_vs2019.vcxproj | 4 +- .../SLID3D10Texture_vs2022.vcxproj | 4 +- .../5_Domain_Specific/SobelFilter/Makefile | 4 + .../5_Domain_Specific/SobelFilter/README.md | 2 +- .../SobelFilter/SobelFilter_vs2017.vcxproj | 4 +- .../SobelFilter/SobelFilter_vs2019.vcxproj | 4 +- .../SobelFilter/SobelFilter_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/SobolQRNG/Makefile | 4 + Samples/5_Domain_Specific/SobolQRNG/README.md | 2 +- .../SobolQRNG/SobolQRNG_vs2017.vcxproj | 4 +- .../SobolQRNG/SobolQRNG_vs2019.vcxproj | 4 +- .../SobolQRNG/SobolQRNG_vs2022.vcxproj | 4 +- .../VFlockingD3D10/README.md | 2 +- .../VFlockingD3D10_vs2017.vcxproj | 4 +- .../VFlockingD3D10_vs2019.vcxproj | 4 +- .../VFlockingD3D10_vs2022.vcxproj | 4 +- .../5_Domain_Specific/bicubicTexture/Makefile | 4 + .../bicubicTexture/README.md | 2 +- .../bicubicTexture_vs2017.vcxproj | 4 +- .../bicubicTexture_vs2019.vcxproj | 4 +- .../bicubicTexture_vs2022.vcxproj | 4 +- .../bilateralFilter/Makefile | 4 + .../bilateralFilter/README.md | 2 +- .../bilateralFilter_vs2017.vcxproj | 4 +- .../bilateralFilter_vs2019.vcxproj | 4 +- .../bilateralFilter_vs2022.vcxproj | 4 +- .../binomialOptions/Makefile | 4 + .../binomialOptions/README.md | 2 +- .../binomialOptions_vs2017.vcxproj | 4 +- .../binomialOptions_vs2019.vcxproj | 4 +- .../binomialOptions_vs2022.vcxproj | 4 +- .../binomialOptions_nvrtc/Makefile | 4 + .../binomialOptions_nvrtc/README.md | 2 +- .../binomialOptions_nvrtc_vs2017.vcxproj | 4 +- .../binomialOptions_nvrtc_vs2019.vcxproj | 4 +- .../binomialOptions_nvrtc_vs2022.vcxproj | 4 +- .../convolutionFFT2D/Makefile | 4 + .../convolutionFFT2D/README.md | 2 +- .../convolutionFFT2D_vs2017.vcxproj | 4 +- .../convolutionFFT2D_vs2019.vcxproj | 4 +- .../convolutionFFT2D_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/dwtHaar1D/Makefile | 4 + Samples/5_Domain_Specific/dwtHaar1D/README.md | 2 +- .../dwtHaar1D/dwtHaar1D_vs2017.vcxproj | 4 +- .../dwtHaar1D/dwtHaar1D_vs2019.vcxproj | 4 +- .../dwtHaar1D/dwtHaar1D_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/dxtc/Makefile | 4 + Samples/5_Domain_Specific/dxtc/README.md | 2 +- .../dxtc/dxtc_vs2017.vcxproj | 4 +- .../dxtc/dxtc_vs2019.vcxproj | 4 +- .../dxtc/dxtc_vs2022.vcxproj | 4 +- .../fastWalshTransform/Makefile | 4 + .../fastWalshTransform/README.md | 2 +- .../fastWalshTransform_vs2017.vcxproj | 4 +- .../fastWalshTransform_vs2019.vcxproj | 4 +- .../fastWalshTransform_vs2022.vcxproj | 4 +- .../5_Domain_Specific/fluidsD3D9/README.md | 2 +- .../fluidsD3D9/fluidsD3D9_vs2017.vcxproj | 4 +- .../fluidsD3D9/fluidsD3D9_vs2019.vcxproj | 4 +- .../fluidsD3D9/fluidsD3D9_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/fluidsGL/Makefile | 4 + Samples/5_Domain_Specific/fluidsGL/README.md | 2 +- .../fluidsGL/fluidsGL_vs2017.vcxproj | 4 +- .../fluidsGL/fluidsGL_vs2019.vcxproj | 4 +- .../fluidsGL/fluidsGL_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/fluidsGLES/Makefile | 4 + .../5_Domain_Specific/fluidsGLES/README.md | 2 +- .../5_Domain_Specific/marchingCubes/Makefile | 9 +- .../5_Domain_Specific/marchingCubes/README.md | 2 +- .../marchingCubes_vs2017.vcxproj | 4 +- .../marchingCubes_vs2019.vcxproj | 4 +- .../marchingCubes_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/nbody/Makefile | 4 + Samples/5_Domain_Specific/nbody/README.md | 2 +- .../nbody/nbody_vs2017.vcxproj | 4 +- .../nbody/nbody_vs2019.vcxproj | 4 +- .../nbody/nbody_vs2022.vcxproj | 4 +- .../5_Domain_Specific/nbody_opengles/Makefile | 4 + .../nbody_opengles/README.md | 2 +- .../5_Domain_Specific/nbody_screen/Makefile | 4 + .../5_Domain_Specific/nbody_screen/README.md | 2 +- .../p2pBandwidthLatencyTest/Makefile | 4 + .../p2pBandwidthLatencyTest/README.md | 2 +- .../p2pBandwidthLatencyTest_vs2017.vcxproj | 4 +- .../p2pBandwidthLatencyTest_vs2019.vcxproj | 4 +- .../p2pBandwidthLatencyTest_vs2022.vcxproj | 4 +- .../5_Domain_Specific/postProcessGL/Makefile | 4 + .../5_Domain_Specific/postProcessGL/README.md | 2 +- .../postProcessGL_vs2017.vcxproj | 4 +- .../postProcessGL_vs2019.vcxproj | 4 +- .../postProcessGL_vs2022.vcxproj | 4 +- .../quasirandomGenerator/Makefile | 4 + .../quasirandomGenerator/README.md | 2 +- .../quasirandomGenerator_vs2017.vcxproj | 4 +- .../quasirandomGenerator_vs2019.vcxproj | 4 +- .../quasirandomGenerator_vs2022.vcxproj | 4 +- .../quasirandomGenerator_nvrtc/Makefile | 4 + .../quasirandomGenerator_nvrtc/README.md | 2 +- .../quasirandomGenerator_nvrtc_vs2017.vcxproj | 4 +- .../quasirandomGenerator_nvrtc_vs2019.vcxproj | 4 +- .../quasirandomGenerator_nvrtc_vs2022.vcxproj | 4 +- .../recursiveGaussian/Makefile | 4 + .../recursiveGaussian/README.md | 2 +- .../recursiveGaussian_vs2017.vcxproj | 4 +- .../recursiveGaussian_vs2019.vcxproj | 4 +- .../recursiveGaussian_vs2022.vcxproj | 4 +- .../5_Domain_Specific/simpleD3D10/README.md | 2 +- .../simpleD3D10/simpleD3D10_vs2017.vcxproj | 4 +- .../simpleD3D10/simpleD3D10_vs2019.vcxproj | 4 +- .../simpleD3D10/simpleD3D10_vs2022.vcxproj | 4 +- .../simpleD3D10RenderTarget/README.md | 2 +- .../simpleD3D10RenderTarget_vs2017.vcxproj | 4 +- .../simpleD3D10RenderTarget_vs2019.vcxproj | 4 +- .../simpleD3D10RenderTarget_vs2022.vcxproj | 4 +- .../simpleD3D10Texture/README.md | 2 +- .../simpleD3D10Texture_vs2017.vcxproj | 4 +- .../simpleD3D10Texture_vs2019.vcxproj | 4 +- .../simpleD3D10Texture_vs2022.vcxproj | 4 +- .../5_Domain_Specific/simpleD3D11/README.md | 2 +- .../simpleD3D11/simpleD3D11_vs2017.vcxproj | 4 +- .../simpleD3D11/simpleD3D11_vs2019.vcxproj | 4 +- .../simpleD3D11/simpleD3D11_vs2022.vcxproj | 4 +- .../simpleD3D11Texture/README.md | 2 +- .../simpleD3D11Texture_vs2017.vcxproj | 4 +- .../simpleD3D11Texture_vs2019.vcxproj | 4 +- .../simpleD3D11Texture_vs2022.vcxproj | 4 +- .../5_Domain_Specific/simpleD3D12/README.md | 2 +- .../simpleD3D12/simpleD3D12_vs2017.vcxproj | 4 +- .../simpleD3D12/simpleD3D12_vs2019.vcxproj | 4 +- .../simpleD3D12/simpleD3D12_vs2022.vcxproj | 4 +- .../5_Domain_Specific/simpleD3D9/README.md | 2 +- .../simpleD3D9/simpleD3D9_vs2017.vcxproj | 4 +- .../simpleD3D9/simpleD3D9_vs2019.vcxproj | 4 +- .../simpleD3D9/simpleD3D9_vs2022.vcxproj | 4 +- .../simpleD3D9Texture/README.md | 2 +- .../simpleD3D9Texture_vs2017.vcxproj | 4 +- .../simpleD3D9Texture_vs2019.vcxproj | 4 +- .../simpleD3D9Texture_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/simpleGL/Makefile | 4 + Samples/5_Domain_Specific/simpleGL/README.md | 2 +- .../simpleGL/simpleGL_vs2017.vcxproj | 4 +- .../simpleGL/simpleGL_vs2019.vcxproj | 4 +- .../simpleGL/simpleGL_vs2022.vcxproj | 4 +- Samples/5_Domain_Specific/simpleGLES/Makefile | 4 + .../5_Domain_Specific/simpleGLES/README.md | 2 +- .../simpleGLES_EGLOutput/Makefile | 4 + .../simpleGLES_EGLOutput/README.md | 2 +- .../simpleGLES_screen/Makefile | 4 + .../simpleGLES_screen/README.md | 2 +- .../5_Domain_Specific/simpleVulkan/Makefile | 9 +- .../5_Domain_Specific/simpleVulkan/README.md | 2 +- .../simpleVulkan/simpleVulkan_vs2017.vcxproj | 4 +- .../simpleVulkan/simpleVulkan_vs2019.vcxproj | 4 +- .../simpleVulkan/simpleVulkan_vs2022.vcxproj | 4 +- .../simpleVulkanMMAP/Makefile | 9 +- .../simpleVulkanMMAP/README.md | 2 +- .../simpleVulkanMMAP_vs2017.vcxproj | 4 +- .../simpleVulkanMMAP_vs2019.vcxproj | 4 +- .../simpleVulkanMMAP_vs2022.vcxproj | 4 +- .../5_Domain_Specific/smokeParticles/Makefile | 9 +- .../smokeParticles/README.md | 2 +- .../smokeParticles_vs2017.vcxproj | 4 +- .../smokeParticles_vs2019.vcxproj | 4 +- .../smokeParticles_vs2022.vcxproj | 4 +- .../stereoDisparity/Makefile | 4 + .../stereoDisparity/README.md | 2 +- .../stereoDisparity_vs2017.vcxproj | 4 +- .../stereoDisparity_vs2019.vcxproj | 4 +- .../stereoDisparity_vs2022.vcxproj | 4 +- .../volumeFiltering/Makefile | 4 + .../volumeFiltering/README.md | 2 +- .../volumeFiltering_vs2017.vcxproj | 4 +- .../volumeFiltering_vs2019.vcxproj | 4 +- .../volumeFiltering_vs2022.vcxproj | 4 +- .../5_Domain_Specific/volumeRender/Makefile | 4 + .../5_Domain_Specific/volumeRender/README.md | 2 +- .../5_Domain_Specific/volumeRender/volume.ppm | Bin 0 -> 786447 bytes .../volumeRender/volumeRender.cpp | 4 +- .../volumeRender/volumeRender_vs2017.vcxproj | 4 +- .../volumeRender/volumeRender_vs2019.vcxproj | 4 +- .../volumeRender/volumeRender_vs2022.vcxproj | 4 +- .../vulkanImageCUDA/Makefile | 9 +- .../vulkanImageCUDA/README.md | 2 +- .../vulkanImageCUDA_vs2017.vcxproj | 4 +- .../vulkanImageCUDA_vs2019.vcxproj | 4 +- .../vulkanImageCUDA_vs2022.vcxproj | 4 +- .../6_Performance/UnifiedMemoryPerf/Makefile | 4 + .../6_Performance/UnifiedMemoryPerf/README.md | 2 +- .../UnifiedMemoryPerf_vs2017.vcxproj | 4 +- .../UnifiedMemoryPerf_vs2019.vcxproj | 4 +- .../UnifiedMemoryPerf_vs2022.vcxproj | 4 +- Samples/6_Performance/alignedTypes/Makefile | 4 + Samples/6_Performance/alignedTypes/README.md | 2 +- .../alignedTypes/alignedTypes_vs2017.vcxproj | 4 +- .../alignedTypes/alignedTypes_vs2019.vcxproj | 4 +- .../alignedTypes/alignedTypes_vs2022.vcxproj | 4 +- Samples/6_Performance/transpose/Makefile | 4 + Samples/6_Performance/transpose/README.md | 2 +- .../transpose/transpose_vs2017.vcxproj | 4 +- .../transpose/transpose_vs2019.vcxproj | 4 +- .../transpose/transpose_vs2022.vcxproj | 4 +- Samples/7_libNVVM/CMakeLists.txt | 123 +++++++ Samples/7_libNVVM/Makefile | 46 +++ Samples/7_libNVVM/README.md | 90 +++++ Samples/7_libNVVM/common/include/DDSWriter.h | 120 +++++++ .../7_libNVVM/cuda-c-linking/CMakeLists.txt | 83 +++++ Samples/7_libNVVM/cuda-c-linking/README.md | 49 +++ .../cuda-c-linking/cuda-c-linking.cpp | 333 ++++++++++++++++++ .../7_libNVVM/cuda-c-linking/math-funcs.cu | 85 +++++ .../cuda-shared-memory/CMakeLists.txt | 40 +++ .../extern_shared_memory.ll | 58 +++ .../cuda-shared-memory/shared_memory.ll | 58 +++ .../device-side-launch/CMakeLists.txt | 50 +++ .../7_libNVVM/device-side-launch/README.md | 80 +++++ .../7_libNVVM/device-side-launch/dsl-gpu64.ll | 103 ++++++ Samples/7_libNVVM/device-side-launch/dsl.c | 257 ++++++++++++++ Samples/7_libNVVM/ptxgen/CMakeLists.txt | 46 +++ Samples/7_libNVVM/ptxgen/README.md | 27 ++ Samples/7_libNVVM/ptxgen/ptxgen.c | 267 ++++++++++++++ Samples/7_libNVVM/ptxgen/test.ll | 39 ++ Samples/7_libNVVM/simple/CMakeLists.txt | 49 +++ Samples/7_libNVVM/simple/README.md | 6 + Samples/7_libNVVM/simple/simple-gpu64.ll | 61 ++++ Samples/7_libNVVM/simple/simple.c | 237 +++++++++++++ Samples/7_libNVVM/syscalls/CMakeLists.txt | 39 ++ Samples/7_libNVVM/syscalls/malloc-free.ll | 60 ++++ Samples/7_libNVVM/syscalls/vprintf.ll | 92 +++++ Samples/7_libNVVM/utils/build.bat | 5 + Samples/7_libNVVM/utils/build.sh | 7 + Samples/7_libNVVM/uvmlite/CMakeLists.txt | 52 +++ Samples/7_libNVVM/uvmlite/README.md | 59 ++++ Samples/7_libNVVM/uvmlite/uvmlite.c | 323 +++++++++++++++++ Samples/7_libNVVM/uvmlite/uvmlite64.ll | 61 ++++ 999 files changed, 5254 insertions(+), 1366 deletions(-) create mode 100644 Samples/5_Domain_Specific/volumeRender/volume.ppm create mode 100644 Samples/7_libNVVM/CMakeLists.txt create mode 100644 Samples/7_libNVVM/Makefile create mode 100644 Samples/7_libNVVM/README.md create mode 100644 Samples/7_libNVVM/common/include/DDSWriter.h create mode 100644 Samples/7_libNVVM/cuda-c-linking/CMakeLists.txt create mode 100644 Samples/7_libNVVM/cuda-c-linking/README.md create mode 100644 Samples/7_libNVVM/cuda-c-linking/cuda-c-linking.cpp create mode 100644 Samples/7_libNVVM/cuda-c-linking/math-funcs.cu create mode 100644 Samples/7_libNVVM/cuda-shared-memory/CMakeLists.txt create mode 100644 Samples/7_libNVVM/cuda-shared-memory/extern_shared_memory.ll create mode 100644 Samples/7_libNVVM/cuda-shared-memory/shared_memory.ll create mode 100644 Samples/7_libNVVM/device-side-launch/CMakeLists.txt create mode 100644 Samples/7_libNVVM/device-side-launch/README.md create mode 100644 Samples/7_libNVVM/device-side-launch/dsl-gpu64.ll create mode 100644 Samples/7_libNVVM/device-side-launch/dsl.c create mode 100644 Samples/7_libNVVM/ptxgen/CMakeLists.txt create mode 100644 Samples/7_libNVVM/ptxgen/README.md create mode 100644 Samples/7_libNVVM/ptxgen/ptxgen.c create mode 100644 Samples/7_libNVVM/ptxgen/test.ll create mode 100644 Samples/7_libNVVM/simple/CMakeLists.txt create mode 100644 Samples/7_libNVVM/simple/README.md create mode 100644 Samples/7_libNVVM/simple/simple-gpu64.ll create mode 100644 Samples/7_libNVVM/simple/simple.c create mode 100644 Samples/7_libNVVM/syscalls/CMakeLists.txt create mode 100644 Samples/7_libNVVM/syscalls/malloc-free.ll create mode 100644 Samples/7_libNVVM/syscalls/vprintf.ll create mode 100755 Samples/7_libNVVM/utils/build.bat create mode 100755 Samples/7_libNVVM/utils/build.sh create mode 100644 Samples/7_libNVVM/uvmlite/CMakeLists.txt create mode 100644 Samples/7_libNVVM/uvmlite/README.md create mode 100644 Samples/7_libNVVM/uvmlite/uvmlite.c create mode 100644 Samples/7_libNVVM/uvmlite/uvmlite64.ll diff --git a/CHANGELOG.md b/CHANGELOG.md index 3596903c..9375c1af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Changelog +### CUDA 12.1 +* libNVVM samples received updates +* Fixed jitLto Case issues +* Enabled HOST_COMPILER flag to the makefiles for GCC which is untested but may still work. + ### CUDA 12.1 * Added new sample for Large Kernels diff --git a/README.md b/README.md index 05caa2ad..113a4c61 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,12 @@ # CUDA Samples -Samples for CUDA Developers which demonstrates features in CUDA Toolkit. This version supports [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads). +Samples for CUDA Developers which demonstrates features in CUDA Toolkit. This version supports [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads). ## Release Notes This section describes the release notes for the CUDA Samples on GitHub only. -### CUDA 12.1 -* Added JIT LTO Sample -* Adding Large Kernel Sample +### CUDA 12.2 ### [older versions...](./CHANGELOG.md) @@ -16,7 +14,7 @@ This section describes the release notes for the CUDA Samples on GitHub only. ### Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. For system requirements and installation instructions of cuda toolkit, please refer to the [Linux Installation Guide](http://docs.nvidia.com/cuda/cuda-installation-guide-linux/), and the [Windows Installation Guide](http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html). ### Getting the CUDA Samples @@ -91,6 +89,9 @@ Samples that are specific to domain (Graphics, Finance, Image Processing). ### [6. Performance](./Samples/6_Performance/README.md) Samples that demonstrate performance optimization. +### [7. libNVVM](./Samples/7_libNVVM/README.md) +Samples that demonstrate the use of libNVVVM and NVVM IR. + ## Dependencies Some CUDA Samples rely on third-party applications and/or libraries, or features provided by the CUDA Toolkit and Driver, to either build or execute. These dependencies are listed below. @@ -245,6 +246,10 @@ FP16 is a 16-bit floating-point format. One bit is used for the sign, five bits NVCC support of [C++11 features](https://en.wikipedia.org/wiki/C++11). +#### CMake + +The libNVVM samples are built using [CMake](https://cmake.org/) 3.10 or later. + ## Contributors Guide We welcome your input on issues and suggestions for samples. At this time we are not accepting contributions from the public, check back here as we evolve our contribution model. diff --git a/Samples/0_Introduction/UnifiedMemoryStreams/Makefile b/Samples/0_Introduction/UnifiedMemoryStreams/Makefile index 24262828..c1ea802a 100644 --- a/Samples/0_Introduction/UnifiedMemoryStreams/Makefile +++ b/Samples/0_Introduction/UnifiedMemoryStreams/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/UnifiedMemoryStreams/README.md b/Samples/0_Introduction/UnifiedMemoryStreams/README.md index 955b7c9a..0587b046 100644 --- a/Samples/0_Introduction/UnifiedMemoryStreams/README.md +++ b/Samples/0_Introduction/UnifiedMemoryStreams/README.md @@ -28,7 +28,7 @@ cudaStreamDestroy, cudaFree, cudaMallocManaged, cudaStreamAttachMemAsync, cudaSe ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2017.vcxproj b/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2017.vcxproj index 77ddb7bd..0e426003 100644 --- a/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2017.vcxproj +++ b/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2019.vcxproj b/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2019.vcxproj index e7b6256e..afd4c4c0 100644 --- a/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2019.vcxproj +++ b/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2022.vcxproj b/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2022.vcxproj index 0a19b547..5737b539 100644 --- a/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2022.vcxproj +++ b/Samples/0_Introduction/UnifiedMemoryStreams/UnifiedMemoryStreams_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/asyncAPI/Makefile b/Samples/0_Introduction/asyncAPI/Makefile index cc2c90f4..3b9985af 100644 --- a/Samples/0_Introduction/asyncAPI/Makefile +++ b/Samples/0_Introduction/asyncAPI/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/asyncAPI/README.md b/Samples/0_Introduction/asyncAPI/README.md index 10f9472a..7583b4ac 100644 --- a/Samples/0_Introduction/asyncAPI/README.md +++ b/Samples/0_Introduction/asyncAPI/README.md @@ -27,7 +27,7 @@ cudaProfilerStop, cudaMalloc, cudaMemcpyAsync, cudaFree, cudaMallocHost, cudaPro ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/asyncAPI/asyncAPI_vs2017.vcxproj b/Samples/0_Introduction/asyncAPI/asyncAPI_vs2017.vcxproj index 4a42f22c..775624ae 100644 --- a/Samples/0_Introduction/asyncAPI/asyncAPI_vs2017.vcxproj +++ b/Samples/0_Introduction/asyncAPI/asyncAPI_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/asyncAPI/asyncAPI_vs2019.vcxproj b/Samples/0_Introduction/asyncAPI/asyncAPI_vs2019.vcxproj index 1d85a702..df3c3711 100644 --- a/Samples/0_Introduction/asyncAPI/asyncAPI_vs2019.vcxproj +++ b/Samples/0_Introduction/asyncAPI/asyncAPI_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/asyncAPI/asyncAPI_vs2022.vcxproj b/Samples/0_Introduction/asyncAPI/asyncAPI_vs2022.vcxproj index b3ad7e72..872f7bdf 100644 --- a/Samples/0_Introduction/asyncAPI/asyncAPI_vs2022.vcxproj +++ b/Samples/0_Introduction/asyncAPI/asyncAPI_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/c++11_cuda/Makefile b/Samples/0_Introduction/c++11_cuda/Makefile index c077687a..3defa373 100644 --- a/Samples/0_Introduction/c++11_cuda/Makefile +++ b/Samples/0_Introduction/c++11_cuda/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/0_Introduction/c++11_cuda/README.md b/Samples/0_Introduction/c++11_cuda/README.md index 492646f9..c9b44a58 100644 --- a/Samples/0_Introduction/c++11_cuda/README.md +++ b/Samples/0_Introduction/c++11_cuda/README.md @@ -30,7 +30,7 @@ cudaMalloc, cudaMemcpy, cudaMemset, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2017.vcxproj b/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2017.vcxproj index ba244ce7..d0be3d79 100644 --- a/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2017.vcxproj +++ b/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2019.vcxproj b/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2019.vcxproj index 1bc1828d..16e06945 100644 --- a/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2019.vcxproj +++ b/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2022.vcxproj b/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2022.vcxproj index 5287aca4..37efb472 100644 --- a/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2022.vcxproj +++ b/Samples/0_Introduction/c++11_cuda/c++11_cuda_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/clock/Makefile b/Samples/0_Introduction/clock/Makefile index a423c6eb..62519008 100644 --- a/Samples/0_Introduction/clock/Makefile +++ b/Samples/0_Introduction/clock/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/clock/README.md b/Samples/0_Introduction/clock/README.md index ed40ec28..e38280f2 100644 --- a/Samples/0_Introduction/clock/README.md +++ b/Samples/0_Introduction/clock/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/clock/clock_vs2017.vcxproj b/Samples/0_Introduction/clock/clock_vs2017.vcxproj index 4b280d9d..f42defa3 100644 --- a/Samples/0_Introduction/clock/clock_vs2017.vcxproj +++ b/Samples/0_Introduction/clock/clock_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/clock/clock_vs2019.vcxproj b/Samples/0_Introduction/clock/clock_vs2019.vcxproj index 15044481..cb70878e 100644 --- a/Samples/0_Introduction/clock/clock_vs2019.vcxproj +++ b/Samples/0_Introduction/clock/clock_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/clock/clock_vs2022.vcxproj b/Samples/0_Introduction/clock/clock_vs2022.vcxproj index 73a1f1ce..9a079c83 100644 --- a/Samples/0_Introduction/clock/clock_vs2022.vcxproj +++ b/Samples/0_Introduction/clock/clock_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/clock_nvrtc/Makefile b/Samples/0_Introduction/clock_nvrtc/Makefile index b7a808e0..5eb485ec 100644 --- a/Samples/0_Introduction/clock_nvrtc/Makefile +++ b/Samples/0_Introduction/clock_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/clock_nvrtc/README.md b/Samples/0_Introduction/clock_nvrtc/README.md index 30201540..452759f1 100644 --- a/Samples/0_Introduction/clock_nvrtc/README.md +++ b/Samples/0_Introduction/clock_nvrtc/README.md @@ -33,7 +33,7 @@ cudaBlockSize, cudaGridSize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2017.vcxproj index d48f1989..37e416a0 100644 --- a/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2019.vcxproj index b543b213..95b6f92a 100644 --- a/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2022.vcxproj index b9e790fa..68105641 100644 --- a/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/clock_nvrtc/clock_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/concurrentKernels/Makefile b/Samples/0_Introduction/concurrentKernels/Makefile index 26233bfd..42cefe0d 100644 --- a/Samples/0_Introduction/concurrentKernels/Makefile +++ b/Samples/0_Introduction/concurrentKernels/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/concurrentKernels/README.md b/Samples/0_Introduction/concurrentKernels/README.md index cea7e98d..ebe2ac4d 100644 --- a/Samples/0_Introduction/concurrentKernels/README.md +++ b/Samples/0_Introduction/concurrentKernels/README.md @@ -27,7 +27,7 @@ cudaStreamDestroy, cudaMalloc, cudaMemcpyAsync, cudaFree, cudaMallocHost, cudaEv ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2017.vcxproj b/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2017.vcxproj index 53967e62..7ae143cd 100644 --- a/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2017.vcxproj +++ b/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2019.vcxproj b/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2019.vcxproj index 21d080e7..ec18c09c 100644 --- a/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2019.vcxproj +++ b/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2022.vcxproj b/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2022.vcxproj index bf58c342..c6d6fdc5 100644 --- a/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2022.vcxproj +++ b/Samples/0_Introduction/concurrentKernels/concurrentKernels_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/cppIntegration/Makefile b/Samples/0_Introduction/cppIntegration/Makefile index 0a9f1d76..fa6a8f7c 100644 --- a/Samples/0_Introduction/cppIntegration/Makefile +++ b/Samples/0_Introduction/cppIntegration/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/cppIntegration/README.md b/Samples/0_Introduction/cppIntegration/README.md index 7648114f..f278cf4f 100644 --- a/Samples/0_Introduction/cppIntegration/README.md +++ b/Samples/0_Introduction/cppIntegration/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/cppIntegration/cppIntegration_vs2017.vcxproj b/Samples/0_Introduction/cppIntegration/cppIntegration_vs2017.vcxproj index 3e7e326d..73aa64c5 100644 --- a/Samples/0_Introduction/cppIntegration/cppIntegration_vs2017.vcxproj +++ b/Samples/0_Introduction/cppIntegration/cppIntegration_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/0_Introduction/cppIntegration/cppIntegration_vs2019.vcxproj b/Samples/0_Introduction/cppIntegration/cppIntegration_vs2019.vcxproj index afc8b0b8..867c4cec 100644 --- a/Samples/0_Introduction/cppIntegration/cppIntegration_vs2019.vcxproj +++ b/Samples/0_Introduction/cppIntegration/cppIntegration_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/0_Introduction/cppIntegration/cppIntegration_vs2022.vcxproj b/Samples/0_Introduction/cppIntegration/cppIntegration_vs2022.vcxproj index 7fcb0e36..ba18e951 100644 --- a/Samples/0_Introduction/cppIntegration/cppIntegration_vs2022.vcxproj +++ b/Samples/0_Introduction/cppIntegration/cppIntegration_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/0_Introduction/cppOverload/Makefile b/Samples/0_Introduction/cppOverload/Makefile index c25b1a8e..0fff096c 100644 --- a/Samples/0_Introduction/cppOverload/Makefile +++ b/Samples/0_Introduction/cppOverload/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/cppOverload/README.md b/Samples/0_Introduction/cppOverload/README.md index 5e8828d0..9cdeac8c 100644 --- a/Samples/0_Introduction/cppOverload/README.md +++ b/Samples/0_Introduction/cppOverload/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFuncSetCacheConfig, cudaFree, cudaMallocHost, cudaSetDevice, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/cppOverload/cppOverload_vs2017.vcxproj b/Samples/0_Introduction/cppOverload/cppOverload_vs2017.vcxproj index fbd66fe6..6387c2ef 100644 --- a/Samples/0_Introduction/cppOverload/cppOverload_vs2017.vcxproj +++ b/Samples/0_Introduction/cppOverload/cppOverload_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/cppOverload/cppOverload_vs2019.vcxproj b/Samples/0_Introduction/cppOverload/cppOverload_vs2019.vcxproj index 2b4724fa..8cba31c5 100644 --- a/Samples/0_Introduction/cppOverload/cppOverload_vs2019.vcxproj +++ b/Samples/0_Introduction/cppOverload/cppOverload_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/cppOverload/cppOverload_vs2022.vcxproj b/Samples/0_Introduction/cppOverload/cppOverload_vs2022.vcxproj index 97def76a..c9b573b6 100644 --- a/Samples/0_Introduction/cppOverload/cppOverload_vs2022.vcxproj +++ b/Samples/0_Introduction/cppOverload/cppOverload_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/cudaOpenMP/Makefile b/Samples/0_Introduction/cudaOpenMP/Makefile index b372a0f6..6e1993f4 100644 --- a/Samples/0_Introduction/cudaOpenMP/Makefile +++ b/Samples/0_Introduction/cudaOpenMP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/cudaOpenMP/README.md b/Samples/0_Introduction/cudaOpenMP/README.md index 1b2be596..88baf775 100644 --- a/Samples/0_Introduction/cudaOpenMP/README.md +++ b/Samples/0_Introduction/cudaOpenMP/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaGetLastError, cudaSetDevice, cudaG ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2017.vcxproj b/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2017.vcxproj index 0be516e4..2287f0b5 100644 --- a/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2017.vcxproj +++ b/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2019.vcxproj b/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2019.vcxproj index 2adadeef..b8b57dac 100644 --- a/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2019.vcxproj +++ b/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2022.vcxproj b/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2022.vcxproj index e88d08ff..ec9e65c7 100644 --- a/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2022.vcxproj +++ b/Samples/0_Introduction/cudaOpenMP/cudaOpenMP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/fp16ScalarProduct/Makefile b/Samples/0_Introduction/fp16ScalarProduct/Makefile index 1e08f5f8..74b5adb6 100644 --- a/Samples/0_Introduction/fp16ScalarProduct/Makefile +++ b/Samples/0_Introduction/fp16ScalarProduct/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/fp16ScalarProduct/README.md b/Samples/0_Introduction/fp16ScalarProduct/README.md index d34cc4cd..39f28774 100644 --- a/Samples/0_Introduction/fp16ScalarProduct/README.md +++ b/Samples/0_Introduction/fp16ScalarProduct/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaMallocHost, cudaFreeHost, cudaMalloc, cudaGetDevicePro ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2017.vcxproj b/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2017.vcxproj index ba2a7ab5..27ad90dd 100644 --- a/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2017.vcxproj +++ b/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2019.vcxproj b/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2019.vcxproj index 9a6f1fae..31bf6643 100644 --- a/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2019.vcxproj +++ b/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2022.vcxproj b/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2022.vcxproj index bd9a3645..06a65ca2 100644 --- a/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2022.vcxproj +++ b/Samples/0_Introduction/fp16ScalarProduct/fp16ScalarProduct_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/matrixMul/Makefile b/Samples/0_Introduction/matrixMul/Makefile index 3e63199d..eab4472e 100644 --- a/Samples/0_Introduction/matrixMul/Makefile +++ b/Samples/0_Introduction/matrixMul/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/matrixMul/README.md b/Samples/0_Introduction/matrixMul/README.md index f55a454e..1c7d3f36 100644 --- a/Samples/0_Introduction/matrixMul/README.md +++ b/Samples/0_Introduction/matrixMul/README.md @@ -27,7 +27,7 @@ cudaStreamCreateWithFlags, cudaProfilerStop, cudaMalloc, cudaFree, cudaMallocHos ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/matrixMul/matrixMul_vs2017.vcxproj b/Samples/0_Introduction/matrixMul/matrixMul_vs2017.vcxproj index 7312e6f8..2391b36f 100644 --- a/Samples/0_Introduction/matrixMul/matrixMul_vs2017.vcxproj +++ b/Samples/0_Introduction/matrixMul/matrixMul_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/matrixMul/matrixMul_vs2019.vcxproj b/Samples/0_Introduction/matrixMul/matrixMul_vs2019.vcxproj index 9281a5dc..771c5d5b 100644 --- a/Samples/0_Introduction/matrixMul/matrixMul_vs2019.vcxproj +++ b/Samples/0_Introduction/matrixMul/matrixMul_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/matrixMul/matrixMul_vs2022.vcxproj b/Samples/0_Introduction/matrixMul/matrixMul_vs2022.vcxproj index e4704de7..b7892909 100644 --- a/Samples/0_Introduction/matrixMul/matrixMul_vs2022.vcxproj +++ b/Samples/0_Introduction/matrixMul/matrixMul_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/matrixMulDrv/Makefile b/Samples/0_Introduction/matrixMulDrv/Makefile index f1837df1..f9ad912c 100644 --- a/Samples/0_Introduction/matrixMulDrv/Makefile +++ b/Samples/0_Introduction/matrixMulDrv/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/matrixMulDrv/README.md b/Samples/0_Introduction/matrixMulDrv/README.md index 77da4657..bb9723de 100644 --- a/Samples/0_Introduction/matrixMulDrv/README.md +++ b/Samples/0_Introduction/matrixMulDrv/README.md @@ -27,7 +27,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuMemcpyHtoD, cuDeviceGetName, cuDeviceTotalMem, c ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2017.vcxproj b/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2017.vcxproj index ed1a2ee8..1e41888b 100644 --- a/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2017.vcxproj +++ b/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2019.vcxproj b/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2019.vcxproj index 532e2e4c..18ebafe8 100644 --- a/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2019.vcxproj +++ b/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2022.vcxproj b/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2022.vcxproj index 9ddfdf2d..cc53f148 100644 --- a/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2022.vcxproj +++ b/Samples/0_Introduction/matrixMulDrv/matrixMulDrv_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/matrixMulDynlinkJIT/Makefile b/Samples/0_Introduction/matrixMulDynlinkJIT/Makefile index cd0ca3d9..1b78b299 100644 --- a/Samples/0_Introduction/matrixMulDynlinkJIT/Makefile +++ b/Samples/0_Introduction/matrixMulDynlinkJIT/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/matrixMulDynlinkJIT/README.md b/Samples/0_Introduction/matrixMulDynlinkJIT/README.md index f62f44c0..d8691a83 100644 --- a/Samples/0_Introduction/matrixMulDynlinkJIT/README.md +++ b/Samples/0_Introduction/matrixMulDynlinkJIT/README.md @@ -27,7 +27,7 @@ cuMemcpyDtoH, cuDeviceGetName, cuParamSeti, cuModuleLoadDataEx, cuModuleGetFunct ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2017.vcxproj b/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2017.vcxproj index fb6dd853..b0af30b6 100644 --- a/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2017.vcxproj +++ b/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -116,6 +116,6 @@ - + diff --git a/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2019.vcxproj b/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2019.vcxproj index d87005b6..e635f760 100644 --- a/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2019.vcxproj +++ b/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2022.vcxproj b/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2022.vcxproj index ca897cff..98570f01 100644 --- a/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2022.vcxproj +++ b/Samples/0_Introduction/matrixMulDynlinkJIT/matrixMulDynlinkJIT_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/0_Introduction/matrixMul_nvrtc/Makefile b/Samples/0_Introduction/matrixMul_nvrtc/Makefile index 8a10a547..5750def2 100644 --- a/Samples/0_Introduction/matrixMul_nvrtc/Makefile +++ b/Samples/0_Introduction/matrixMul_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/matrixMul_nvrtc/README.md b/Samples/0_Introduction/matrixMul_nvrtc/README.md index 4400ec2a..5b92b521 100644 --- a/Samples/0_Introduction/matrixMul_nvrtc/README.md +++ b/Samples/0_Introduction/matrixMul_nvrtc/README.md @@ -30,7 +30,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuMemcpyHtoD, cuCtxSynchronize, cuMemAlloc, cuMemF ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2017.vcxproj index 27008c01..dda07449 100644 --- a/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -113,6 +113,6 @@ xcopy /y /e /s "$(CudaToolkitDir)include\cooperative_groups" .\cooperative_group - + diff --git a/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2019.vcxproj index 862f8cbd..be2d9187 100644 --- a/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -109,6 +109,6 @@ xcopy /y /e /s "$(CudaToolkitDir)include\cooperative_groups" .\cooperative_group - + diff --git a/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2022.vcxproj index ebb508cc..37db8747 100644 --- a/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/matrixMul_nvrtc/matrixMul_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -109,6 +109,6 @@ xcopy /y /e /s "$(CudaToolkitDir)include\cooperative_groups" .\cooperative_group - + diff --git a/Samples/0_Introduction/mergeSort/Makefile b/Samples/0_Introduction/mergeSort/Makefile index ec10cf93..33fdba18 100644 --- a/Samples/0_Introduction/mergeSort/Makefile +++ b/Samples/0_Introduction/mergeSort/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/mergeSort/README.md b/Samples/0_Introduction/mergeSort/README.md index 08f70c8c..0c5ac3ba 100644 --- a/Samples/0_Introduction/mergeSort/README.md +++ b/Samples/0_Introduction/mergeSort/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaDeviceSynchronize, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/mergeSort/mergeSort_vs2017.vcxproj b/Samples/0_Introduction/mergeSort/mergeSort_vs2017.vcxproj index 49fb4187..55498b34 100644 --- a/Samples/0_Introduction/mergeSort/mergeSort_vs2017.vcxproj +++ b/Samples/0_Introduction/mergeSort/mergeSort_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/0_Introduction/mergeSort/mergeSort_vs2019.vcxproj b/Samples/0_Introduction/mergeSort/mergeSort_vs2019.vcxproj index 8a619749..7d9ca860 100644 --- a/Samples/0_Introduction/mergeSort/mergeSort_vs2019.vcxproj +++ b/Samples/0_Introduction/mergeSort/mergeSort_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/mergeSort/mergeSort_vs2022.vcxproj b/Samples/0_Introduction/mergeSort/mergeSort_vs2022.vcxproj index 16191763..ab4de321 100644 --- a/Samples/0_Introduction/mergeSort/mergeSort_vs2022.vcxproj +++ b/Samples/0_Introduction/mergeSort/mergeSort_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleAWBarrier/Makefile b/Samples/0_Introduction/simpleAWBarrier/Makefile index b95e9e05..e0b09e0b 100644 --- a/Samples/0_Introduction/simpleAWBarrier/Makefile +++ b/Samples/0_Introduction/simpleAWBarrier/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -305,13 +309,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 51000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.1.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.1.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.1.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/0_Introduction/simpleAWBarrier/README.md b/Samples/0_Introduction/simpleAWBarrier/README.md index 0f58e0c6..b13f6ee1 100644 --- a/Samples/0_Introduction/simpleAWBarrier/README.md +++ b/Samples/0_Introduction/simpleAWBarrier/README.md @@ -30,7 +30,7 @@ cudaStreamCreateWithFlags, cudaFree, cudaDeviceGetAttribute, cudaMallocHost, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2017.vcxproj b/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2017.vcxproj index 4db4f0fd..59335426 100644 --- a/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2019.vcxproj b/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2019.vcxproj index 12258921..7fa91ff4 100644 --- a/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2022.vcxproj b/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2022.vcxproj index 72d1b025..838122aa 100644 --- a/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleAWBarrier/simpleAWBarrier_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAssert/Makefile b/Samples/0_Introduction/simpleAssert/Makefile index 702b2918..97051382 100644 --- a/Samples/0_Introduction/simpleAssert/Makefile +++ b/Samples/0_Introduction/simpleAssert/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleAssert/README.md b/Samples/0_Introduction/simpleAssert/README.md index 848b53c5..18e82da1 100644 --- a/Samples/0_Introduction/simpleAssert/README.md +++ b/Samples/0_Introduction/simpleAssert/README.md @@ -27,7 +27,7 @@ cudaDeviceSynchronize, cudaGetErrorString ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleAssert/simpleAssert_vs2017.vcxproj b/Samples/0_Introduction/simpleAssert/simpleAssert_vs2017.vcxproj index 8a88d5f1..8b608217 100644 --- a/Samples/0_Introduction/simpleAssert/simpleAssert_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleAssert/simpleAssert_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleAssert/simpleAssert_vs2019.vcxproj b/Samples/0_Introduction/simpleAssert/simpleAssert_vs2019.vcxproj index a38be98d..87573328 100644 --- a/Samples/0_Introduction/simpleAssert/simpleAssert_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleAssert/simpleAssert_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAssert/simpleAssert_vs2022.vcxproj b/Samples/0_Introduction/simpleAssert/simpleAssert_vs2022.vcxproj index 7b63c0d7..3a110640 100644 --- a/Samples/0_Introduction/simpleAssert/simpleAssert_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleAssert/simpleAssert_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAssert_nvrtc/Makefile b/Samples/0_Introduction/simpleAssert_nvrtc/Makefile index 395e203a..cf55bdc2 100644 --- a/Samples/0_Introduction/simpleAssert_nvrtc/Makefile +++ b/Samples/0_Introduction/simpleAssert_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleAssert_nvrtc/README.md b/Samples/0_Introduction/simpleAssert_nvrtc/README.md index 29b1ad23..ff7b1ed4 100644 --- a/Samples/0_Introduction/simpleAssert_nvrtc/README.md +++ b/Samples/0_Introduction/simpleAssert_nvrtc/README.md @@ -30,7 +30,7 @@ cuModuleGetFunction, cuLaunchKernel, cuCtxSynchronize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2017.vcxproj index 883c8331..4d2a3e83 100644 --- a/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2019.vcxproj index 6ef96278..630f4236 100644 --- a/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2022.vcxproj index a0d895ab..518701c2 100644 --- a/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleAssert_nvrtc/simpleAssert_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics/Makefile b/Samples/0_Introduction/simpleAtomicIntrinsics/Makefile index 43e83f7b..9de4a6a9 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics/Makefile +++ b/Samples/0_Introduction/simpleAtomicIntrinsics/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics/README.md b/Samples/0_Introduction/simpleAtomicIntrinsics/README.md index f3e619a7..a19b0f0a 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics/README.md +++ b/Samples/0_Introduction/simpleAtomicIntrinsics/README.md @@ -27,7 +27,7 @@ cudaStreamCreateWithFlags, cudaFree, cudaMallocHost, cudaFreeHost, cudaStreamSyn ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2017.vcxproj b/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2017.vcxproj index 9b7b4ef3..ffe787d3 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2019.vcxproj b/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2019.vcxproj index 3530ea54..032ec37f 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2022.vcxproj b/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2022.vcxproj index 5d159495..68d9f310 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleAtomicIntrinsics/simpleAtomicIntrinsics_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/Makefile b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/Makefile index 0bdae63e..73ada20b 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/Makefile +++ b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/README.md b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/README.md index 9bd055e4..d4f1fc48 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/README.md +++ b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/README.md @@ -33,7 +33,7 @@ cudaBlockSize, cudaGridSize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2017.vcxproj index 28ffb9e6..2baf3ab9 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2019.vcxproj index 9a18f646..038cc29e 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2022.vcxproj index aae454d3..81e79127 100644 --- a/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleAtomicIntrinsics_nvrtc/simpleAtomicIntrinsics_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleAttributes/Makefile b/Samples/0_Introduction/simpleAttributes/Makefile index 6b062f46..5e2459ce 100644 --- a/Samples/0_Introduction/simpleAttributes/Makefile +++ b/Samples/0_Introduction/simpleAttributes/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleAttributes/README.md b/Samples/0_Introduction/simpleAttributes/README.md index 48bac265..bae0f405 100644 --- a/Samples/0_Introduction/simpleAttributes/README.md +++ b/Samples/0_Introduction/simpleAttributes/README.md @@ -27,7 +27,7 @@ cudaFree, cudaMallocHost, cudaFreeHost, cudaStreamSynchronize, cudaStreamSetAttr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2017.vcxproj b/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2017.vcxproj index cbb5eed1..4be6dc03 100644 --- a/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2019.vcxproj b/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2019.vcxproj index 5582a390..07236da8 100644 --- a/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2022.vcxproj b/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2022.vcxproj index 574a723d..2f4e7bf4 100644 --- a/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleAttributes/simpleAttributes_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleCUDA2GL/Makefile b/Samples/0_Introduction/simpleCUDA2GL/Makefile index 86a7b3ce..14de6141 100644 --- a/Samples/0_Introduction/simpleCUDA2GL/Makefile +++ b/Samples/0_Introduction/simpleCUDA2GL/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleCUDA2GL/README.md b/Samples/0_Introduction/simpleCUDA2GL/README.md index 19c1f200..d45183b3 100644 --- a/Samples/0_Introduction/simpleCUDA2GL/README.md +++ b/Samples/0_Introduction/simpleCUDA2GL/README.md @@ -30,7 +30,7 @@ cudaHostAlloc, cudaGraphicsUnmapResources, cudaMalloc, cudaFree, cudaGraphicsRes ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2017.vcxproj b/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2017.vcxproj index dda6f8e1..86c0d8fb 100644 --- a/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2019.vcxproj b/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2019.vcxproj index 56f9fc01..f325f20d 100644 --- a/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2022.vcxproj b/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2022.vcxproj index fddd8cc8..b68e5ddf 100644 --- a/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleCUDA2GL/simpleCUDA2GL_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/0_Introduction/simpleCallback/Makefile b/Samples/0_Introduction/simpleCallback/Makefile index 3003b1ba..f8a66113 100644 --- a/Samples/0_Introduction/simpleCallback/Makefile +++ b/Samples/0_Introduction/simpleCallback/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleCallback/README.md b/Samples/0_Introduction/simpleCallback/README.md index 03ae524d..f4c799e7 100644 --- a/Samples/0_Introduction/simpleCallback/README.md +++ b/Samples/0_Introduction/simpleCallback/README.md @@ -27,7 +27,7 @@ cudaHostAlloc, cudaStreamDestroy, cudaFree, cudaSetDevice, cudaGetDeviceCount, c ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleCallback/simpleCallback_vs2017.vcxproj b/Samples/0_Introduction/simpleCallback/simpleCallback_vs2017.vcxproj index 6ae83884..0eac13a0 100644 --- a/Samples/0_Introduction/simpleCallback/simpleCallback_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleCallback/simpleCallback_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/simpleCallback/simpleCallback_vs2019.vcxproj b/Samples/0_Introduction/simpleCallback/simpleCallback_vs2019.vcxproj index 7d9ec15d..7676531c 100644 --- a/Samples/0_Introduction/simpleCallback/simpleCallback_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleCallback/simpleCallback_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleCallback/simpleCallback_vs2022.vcxproj b/Samples/0_Introduction/simpleCallback/simpleCallback_vs2022.vcxproj index a3e62f8f..1ceaf912 100644 --- a/Samples/0_Introduction/simpleCallback/simpleCallback_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleCallback/simpleCallback_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleCooperativeGroups/Makefile b/Samples/0_Introduction/simpleCooperativeGroups/Makefile index 165c8f04..baa1349e 100644 --- a/Samples/0_Introduction/simpleCooperativeGroups/Makefile +++ b/Samples/0_Introduction/simpleCooperativeGroups/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleCooperativeGroups/README.md b/Samples/0_Introduction/simpleCooperativeGroups/README.md index 9cacb140..222d5fc6 100644 --- a/Samples/0_Introduction/simpleCooperativeGroups/README.md +++ b/Samples/0_Introduction/simpleCooperativeGroups/README.md @@ -27,7 +27,7 @@ cudaDeviceSynchronize, cudaGetErrorString ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2017.vcxproj b/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2017.vcxproj index 4cc25406..d5975aef 100644 --- a/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2019.vcxproj b/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2019.vcxproj index 36e8c5fb..e8766b5f 100644 --- a/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2022.vcxproj b/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2022.vcxproj index 6b8f047c..13f13f80 100644 --- a/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleCooperativeGroups/simpleCooperativeGroups_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleCubemapTexture/Makefile b/Samples/0_Introduction/simpleCubemapTexture/Makefile index e68488f5..8ff8ef72 100644 --- a/Samples/0_Introduction/simpleCubemapTexture/Makefile +++ b/Samples/0_Introduction/simpleCubemapTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleCubemapTexture/README.md b/Samples/0_Introduction/simpleCubemapTexture/README.md index d32f6633..be7863dc 100644 --- a/Samples/0_Introduction/simpleCubemapTexture/README.md +++ b/Samples/0_Introduction/simpleCubemapTexture/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaCreateChannelDesc, cudaFreeArray, cudaFree, cudaPitchedPtr, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2017.vcxproj b/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2017.vcxproj index f4ba578a..5bf758b3 100644 --- a/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2019.vcxproj b/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2019.vcxproj index f06fcd2d..ec4d419f 100644 --- a/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2022.vcxproj b/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2022.vcxproj index 3ea43c14..581e7356 100644 --- a/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleCubemapTexture/simpleCubemapTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleDrvRuntime/Makefile b/Samples/0_Introduction/simpleDrvRuntime/Makefile index 5529c840..e1606837 100644 --- a/Samples/0_Introduction/simpleDrvRuntime/Makefile +++ b/Samples/0_Introduction/simpleDrvRuntime/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleDrvRuntime/README.md b/Samples/0_Introduction/simpleDrvRuntime/README.md index 1528e07f..31b87134 100644 --- a/Samples/0_Introduction/simpleDrvRuntime/README.md +++ b/Samples/0_Introduction/simpleDrvRuntime/README.md @@ -30,7 +30,7 @@ cudaStreamCreateWithFlags, cudaFree, cudaMallocHost, cudaFreeHost, cudaStreamSyn ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2017.vcxproj b/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2017.vcxproj index 6bbf8e18..16d4b24a 100644 --- a/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2019.vcxproj b/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2019.vcxproj index 25dcbd37..3637fc4d 100644 --- a/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2022.vcxproj b/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2022.vcxproj index 59504f4a..7552efa2 100644 --- a/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleDrvRuntime/simpleDrvRuntime_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleHyperQ/Makefile b/Samples/0_Introduction/simpleHyperQ/Makefile index 69de161d..14b34ace 100644 --- a/Samples/0_Introduction/simpleHyperQ/Makefile +++ b/Samples/0_Introduction/simpleHyperQ/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleHyperQ/README.md b/Samples/0_Introduction/simpleHyperQ/README.md index 589ca7dd..9381aee3 100644 --- a/Samples/0_Introduction/simpleHyperQ/README.md +++ b/Samples/0_Introduction/simpleHyperQ/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaStreamDestroy, cudaMalloc, cudaFree, cudaMallocHost, cudaEventSy ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2017.vcxproj b/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2017.vcxproj index c4f9fb3b..a305ea68 100644 --- a/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2019.vcxproj b/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2019.vcxproj index b4789f41..47d7a52a 100644 --- a/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2022.vcxproj b/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2022.vcxproj index b86668dc..99315ae1 100644 --- a/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleHyperQ/simpleHyperQ_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleIPC/Makefile b/Samples/0_Introduction/simpleIPC/Makefile index d0bfb940..a4d1b885 100644 --- a/Samples/0_Introduction/simpleIPC/Makefile +++ b/Samples/0_Introduction/simpleIPC/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleIPC/README.md b/Samples/0_Introduction/simpleIPC/README.md index 6b7c52bb..338daf85 100644 --- a/Samples/0_Introduction/simpleIPC/README.md +++ b/Samples/0_Introduction/simpleIPC/README.md @@ -30,7 +30,7 @@ cudaSetDevice, cudaIpcCloseMemHandle, cudaEventDestroy, cudaGetDeviceCount, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleIPC/simpleIPC_vs2017.vcxproj b/Samples/0_Introduction/simpleIPC/simpleIPC_vs2017.vcxproj index 7550b910..c05e21ad 100644 --- a/Samples/0_Introduction/simpleIPC/simpleIPC_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleIPC/simpleIPC_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/simpleIPC/simpleIPC_vs2019.vcxproj b/Samples/0_Introduction/simpleIPC/simpleIPC_vs2019.vcxproj index 00d307f1..a452eea4 100644 --- a/Samples/0_Introduction/simpleIPC/simpleIPC_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleIPC/simpleIPC_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleIPC/simpleIPC_vs2022.vcxproj b/Samples/0_Introduction/simpleIPC/simpleIPC_vs2022.vcxproj index 9ecade48..c8c0ec84 100644 --- a/Samples/0_Introduction/simpleIPC/simpleIPC_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleIPC/simpleIPC_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleLayeredTexture/Makefile b/Samples/0_Introduction/simpleLayeredTexture/Makefile index 162fa7f3..b1a0b9dd 100644 --- a/Samples/0_Introduction/simpleLayeredTexture/Makefile +++ b/Samples/0_Introduction/simpleLayeredTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleLayeredTexture/README.md b/Samples/0_Introduction/simpleLayeredTexture/README.md index a41b3a88..c6312996 100644 --- a/Samples/0_Introduction/simpleLayeredTexture/README.md +++ b/Samples/0_Introduction/simpleLayeredTexture/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaCreateChannelDesc, cudaFreeArray, cudaFree, cudaPitchedPtr, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2017.vcxproj b/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2017.vcxproj index 6617073d..b8a6eab2 100644 --- a/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2019.vcxproj b/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2019.vcxproj index 2073fc62..b365dace 100644 --- a/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2022.vcxproj b/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2022.vcxproj index 9fc8e39f..addd0078 100644 --- a/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleLayeredTexture/simpleLayeredTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleMPI/Makefile b/Samples/0_Introduction/simpleMPI/Makefile index 49e051c2..3cd4f240 100644 --- a/Samples/0_Introduction/simpleMPI/Makefile +++ b/Samples/0_Introduction/simpleMPI/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleMPI/README.md b/Samples/0_Introduction/simpleMPI/README.md index 2c63bce4..f4eb9a72 100644 --- a/Samples/0_Introduction/simpleMPI/README.md +++ b/Samples/0_Introduction/simpleMPI/README.md @@ -30,7 +30,7 @@ cudaMalloc, cudaGetLastError, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleMPI/simpleMPI_vs2017.vcxproj b/Samples/0_Introduction/simpleMPI/simpleMPI_vs2017.vcxproj index 3e1f12cc..752fdc31 100644 --- a/Samples/0_Introduction/simpleMPI/simpleMPI_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleMPI/simpleMPI_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/simpleMPI/simpleMPI_vs2019.vcxproj b/Samples/0_Introduction/simpleMPI/simpleMPI_vs2019.vcxproj index 62fcd8ff..b4263c75 100644 --- a/Samples/0_Introduction/simpleMPI/simpleMPI_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleMPI/simpleMPI_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleMPI/simpleMPI_vs2022.vcxproj b/Samples/0_Introduction/simpleMPI/simpleMPI_vs2022.vcxproj index e2b166e2..71c26d39 100644 --- a/Samples/0_Introduction/simpleMPI/simpleMPI_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleMPI/simpleMPI_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleMultiCopy/Makefile b/Samples/0_Introduction/simpleMultiCopy/Makefile index 9cd492b0..2db21586 100644 --- a/Samples/0_Introduction/simpleMultiCopy/Makefile +++ b/Samples/0_Introduction/simpleMultiCopy/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleMultiCopy/README.md b/Samples/0_Introduction/simpleMultiCopy/README.md index bf1ba386..cd882f33 100644 --- a/Samples/0_Introduction/simpleMultiCopy/README.md +++ b/Samples/0_Introduction/simpleMultiCopy/README.md @@ -27,7 +27,7 @@ cudaHostAlloc, cudaStreamDestroy, cudaMalloc, cudaMemcpyAsync, cudaFree, cudaSet ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2017.vcxproj b/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2017.vcxproj index 2b19f87f..5b788b08 100644 --- a/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2019.vcxproj b/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2019.vcxproj index 67b947f0..6810bc51 100644 --- a/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2022.vcxproj b/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2022.vcxproj index bd9abffb..1f67c853 100644 --- a/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleMultiCopy/simpleMultiCopy_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleMultiGPU/Makefile b/Samples/0_Introduction/simpleMultiGPU/Makefile index 53f697ce..02a154c5 100644 --- a/Samples/0_Introduction/simpleMultiGPU/Makefile +++ b/Samples/0_Introduction/simpleMultiGPU/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleMultiGPU/README.md b/Samples/0_Introduction/simpleMultiGPU/README.md index 351b8a72..533b342d 100644 --- a/Samples/0_Introduction/simpleMultiGPU/README.md +++ b/Samples/0_Introduction/simpleMultiGPU/README.md @@ -27,7 +27,7 @@ cudaStreamDestroy, cudaFree, cudaMallocHost, cudaSetDevice, cudaFreeHost, cudaSt ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2017.vcxproj b/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2017.vcxproj index f75ea4be..fcbe76e5 100644 --- a/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2019.vcxproj b/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2019.vcxproj index 1ddb498f..dace7382 100644 --- a/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2022.vcxproj b/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2022.vcxproj index 4d4068cc..38c03881 100644 --- a/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleMultiGPU/simpleMultiGPU_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleOccupancy/Makefile b/Samples/0_Introduction/simpleOccupancy/Makefile index e6b1e1f5..a0542a70 100644 --- a/Samples/0_Introduction/simpleOccupancy/Makefile +++ b/Samples/0_Introduction/simpleOccupancy/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleOccupancy/README.md b/Samples/0_Introduction/simpleOccupancy/README.md index 1343d074..f090060c 100644 --- a/Samples/0_Introduction/simpleOccupancy/README.md +++ b/Samples/0_Introduction/simpleOccupancy/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaEventRecord, cudaGetDevice, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2017.vcxproj b/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2017.vcxproj index 57a8b039..befd51f1 100644 --- a/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2019.vcxproj b/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2019.vcxproj index 901867c7..858fc5d8 100644 --- a/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2022.vcxproj b/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2022.vcxproj index a0c323ce..505a0036 100644 --- a/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleOccupancy/simpleOccupancy_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleP2P/Makefile b/Samples/0_Introduction/simpleP2P/Makefile index 3ea0c1c8..f2fdab24 100644 --- a/Samples/0_Introduction/simpleP2P/Makefile +++ b/Samples/0_Introduction/simpleP2P/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleP2P/README.md b/Samples/0_Introduction/simpleP2P/README.md index 1bd8a19d..78ae01f6 100644 --- a/Samples/0_Introduction/simpleP2P/README.md +++ b/Samples/0_Introduction/simpleP2P/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaMalloc, cudaFree, cudaMallocHost, cudaEventCreateWithFlags, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleP2P/simpleP2P_vs2017.vcxproj b/Samples/0_Introduction/simpleP2P/simpleP2P_vs2017.vcxproj index fe604654..1c25bb5e 100644 --- a/Samples/0_Introduction/simpleP2P/simpleP2P_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleP2P/simpleP2P_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleP2P/simpleP2P_vs2019.vcxproj b/Samples/0_Introduction/simpleP2P/simpleP2P_vs2019.vcxproj index 13322207..88ce05c5 100644 --- a/Samples/0_Introduction/simpleP2P/simpleP2P_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleP2P/simpleP2P_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleP2P/simpleP2P_vs2022.vcxproj b/Samples/0_Introduction/simpleP2P/simpleP2P_vs2022.vcxproj index b0487966..24868635 100644 --- a/Samples/0_Introduction/simpleP2P/simpleP2P_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleP2P/simpleP2P_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simplePitchLinearTexture/Makefile b/Samples/0_Introduction/simplePitchLinearTexture/Makefile index 301be0eb..956ee1ee 100644 --- a/Samples/0_Introduction/simplePitchLinearTexture/Makefile +++ b/Samples/0_Introduction/simplePitchLinearTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simplePitchLinearTexture/README.md b/Samples/0_Introduction/simplePitchLinearTexture/README.md index 6e8bb84a..27e67e2a 100644 --- a/Samples/0_Introduction/simplePitchLinearTexture/README.md +++ b/Samples/0_Introduction/simplePitchLinearTexture/README.md @@ -27,7 +27,7 @@ cudaMallocArray, cudaFreeArray, cudaFree, cudaMallocPitch, cudaDestroyTextureObj ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2017.vcxproj b/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2017.vcxproj index a6f2ae5e..4cd32daf 100644 --- a/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2017.vcxproj +++ b/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2019.vcxproj b/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2019.vcxproj index e585e6e0..e2174f6a 100644 --- a/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2019.vcxproj +++ b/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2022.vcxproj b/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2022.vcxproj index 5f6130f5..ee61c1f7 100644 --- a/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2022.vcxproj +++ b/Samples/0_Introduction/simplePitchLinearTexture/simplePitchLinearTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simplePrintf/Makefile b/Samples/0_Introduction/simplePrintf/Makefile index dfc57711..45f43aa6 100644 --- a/Samples/0_Introduction/simplePrintf/Makefile +++ b/Samples/0_Introduction/simplePrintf/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simplePrintf/README.md b/Samples/0_Introduction/simplePrintf/README.md index b4bc3ee4..b3552f8f 100644 --- a/Samples/0_Introduction/simplePrintf/README.md +++ b/Samples/0_Introduction/simplePrintf/README.md @@ -27,7 +27,7 @@ cudaGetDeviceProperties, cudaDeviceSynchronize, cudaGetDevice ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simplePrintf/simplePrintf_vs2017.vcxproj b/Samples/0_Introduction/simplePrintf/simplePrintf_vs2017.vcxproj index f8f78762..57739413 100644 --- a/Samples/0_Introduction/simplePrintf/simplePrintf_vs2017.vcxproj +++ b/Samples/0_Introduction/simplePrintf/simplePrintf_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simplePrintf/simplePrintf_vs2019.vcxproj b/Samples/0_Introduction/simplePrintf/simplePrintf_vs2019.vcxproj index 17b4e84c..80a12abd 100644 --- a/Samples/0_Introduction/simplePrintf/simplePrintf_vs2019.vcxproj +++ b/Samples/0_Introduction/simplePrintf/simplePrintf_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simplePrintf/simplePrintf_vs2022.vcxproj b/Samples/0_Introduction/simplePrintf/simplePrintf_vs2022.vcxproj index 688778f2..4ed41877 100644 --- a/Samples/0_Introduction/simplePrintf/simplePrintf_vs2022.vcxproj +++ b/Samples/0_Introduction/simplePrintf/simplePrintf_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleSeparateCompilation/Makefile b/Samples/0_Introduction/simpleSeparateCompilation/Makefile index 416f1b5d..cca7ac69 100644 --- a/Samples/0_Introduction/simpleSeparateCompilation/Makefile +++ b/Samples/0_Introduction/simpleSeparateCompilation/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleSeparateCompilation/README.md b/Samples/0_Introduction/simpleSeparateCompilation/README.md index c4b57ed2..73f148bc 100644 --- a/Samples/0_Introduction/simpleSeparateCompilation/README.md +++ b/Samples/0_Introduction/simpleSeparateCompilation/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaMemcpyFromSymbol, cudaFree, cudaGetLastError, cudaMalloc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2017.vcxproj b/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2017.vcxproj index ab8ee653..74c18ca4 100644 --- a/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2019.vcxproj b/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2019.vcxproj index 45a93bdc..fb6e45aa 100644 --- a/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2022.vcxproj b/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2022.vcxproj index 14d4974a..b6b592c4 100644 --- a/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleSeparateCompilation/simpleSeparateCompilation_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/0_Introduction/simpleStreams/Makefile b/Samples/0_Introduction/simpleStreams/Makefile index b33fb9cf..f59124a2 100644 --- a/Samples/0_Introduction/simpleStreams/Makefile +++ b/Samples/0_Introduction/simpleStreams/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleStreams/README.md b/Samples/0_Introduction/simpleStreams/README.md index 2b2cb8a4..a5cc0839 100644 --- a/Samples/0_Introduction/simpleStreams/README.md +++ b/Samples/0_Introduction/simpleStreams/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaSetDeviceFlags, cudaSetDevice, cudaEventDestroy, cudaStreamCreat ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleStreams/simpleStreams_vs2017.vcxproj b/Samples/0_Introduction/simpleStreams/simpleStreams_vs2017.vcxproj index ad9122f3..f9aee355 100644 --- a/Samples/0_Introduction/simpleStreams/simpleStreams_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleStreams/simpleStreams_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleStreams/simpleStreams_vs2019.vcxproj b/Samples/0_Introduction/simpleStreams/simpleStreams_vs2019.vcxproj index c5e30b2d..54e54c39 100644 --- a/Samples/0_Introduction/simpleStreams/simpleStreams_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleStreams/simpleStreams_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleStreams/simpleStreams_vs2022.vcxproj b/Samples/0_Introduction/simpleStreams/simpleStreams_vs2022.vcxproj index 7befc8df..85aaca4e 100644 --- a/Samples/0_Introduction/simpleStreams/simpleStreams_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleStreams/simpleStreams_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleSurfaceWrite/Makefile b/Samples/0_Introduction/simpleSurfaceWrite/Makefile index dbca4b48..89f6dfc6 100644 --- a/Samples/0_Introduction/simpleSurfaceWrite/Makefile +++ b/Samples/0_Introduction/simpleSurfaceWrite/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleSurfaceWrite/README.md b/Samples/0_Introduction/simpleSurfaceWrite/README.md index 0705c26e..3215e902 100644 --- a/Samples/0_Introduction/simpleSurfaceWrite/README.md +++ b/Samples/0_Introduction/simpleSurfaceWrite/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaCreateChannelDesc, cudaMallocArray, cudaFreeArray, cudaFree, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2017.vcxproj b/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2017.vcxproj index c1fa653a..723019a9 100644 --- a/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2019.vcxproj b/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2019.vcxproj index 23495cec..ede6ed04 100644 --- a/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2022.vcxproj b/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2022.vcxproj index b268ffd2..7aef6554 100644 --- a/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleSurfaceWrite/simpleSurfaceWrite_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleTemplates/Makefile b/Samples/0_Introduction/simpleTemplates/Makefile index 492bf61f..410c37de 100644 --- a/Samples/0_Introduction/simpleTemplates/Makefile +++ b/Samples/0_Introduction/simpleTemplates/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleTemplates/README.md b/Samples/0_Introduction/simpleTemplates/README.md index f01e95d6..3b6db2d1 100644 --- a/Samples/0_Introduction/simpleTemplates/README.md +++ b/Samples/0_Introduction/simpleTemplates/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaMemcpy, cudaGetDeviceProperties, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2017.vcxproj b/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2017.vcxproj index 91684367..66a1f245 100644 --- a/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2019.vcxproj b/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2019.vcxproj index 38151280..8c1efd7b 100644 --- a/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2022.vcxproj b/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2022.vcxproj index 5a11be10..8a83f524 100644 --- a/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleTemplates/simpleTemplates_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleTemplates_nvrtc/Makefile b/Samples/0_Introduction/simpleTemplates_nvrtc/Makefile index f2413f52..78ab245c 100644 --- a/Samples/0_Introduction/simpleTemplates_nvrtc/Makefile +++ b/Samples/0_Introduction/simpleTemplates_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleTemplates_nvrtc/README.md b/Samples/0_Introduction/simpleTemplates_nvrtc/README.md index 038cb6e0..3ae52e22 100644 --- a/Samples/0_Introduction/simpleTemplates_nvrtc/README.md +++ b/Samples/0_Introduction/simpleTemplates_nvrtc/README.md @@ -30,7 +30,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuMemcpyHtoD, cuCtxSynchronize, cuMemAlloc, cuMemF ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2017.vcxproj index a9fb9605..5b8236b4 100644 --- a/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2019.vcxproj index 3e8a1aec..b3b7527a 100644 --- a/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2022.vcxproj index 0ea36960..1b0f91b4 100644 --- a/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleTemplates_nvrtc/simpleTemplates_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/simpleTexture/Makefile b/Samples/0_Introduction/simpleTexture/Makefile index 00749c89..bc6e97f5 100644 --- a/Samples/0_Introduction/simpleTexture/Makefile +++ b/Samples/0_Introduction/simpleTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleTexture/README.md b/Samples/0_Introduction/simpleTexture/README.md index 46d25a0a..54a6de54 100644 --- a/Samples/0_Introduction/simpleTexture/README.md +++ b/Samples/0_Introduction/simpleTexture/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaCreateChannelDesc, cudaMallocArray, cudaFreeArray, cudaFree, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleTexture/simpleTexture_vs2017.vcxproj b/Samples/0_Introduction/simpleTexture/simpleTexture_vs2017.vcxproj index d490a6e6..3cb62e47 100644 --- a/Samples/0_Introduction/simpleTexture/simpleTexture_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleTexture/simpleTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleTexture/simpleTexture_vs2019.vcxproj b/Samples/0_Introduction/simpleTexture/simpleTexture_vs2019.vcxproj index 54b18a56..9148d396 100644 --- a/Samples/0_Introduction/simpleTexture/simpleTexture_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleTexture/simpleTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleTexture/simpleTexture_vs2022.vcxproj b/Samples/0_Introduction/simpleTexture/simpleTexture_vs2022.vcxproj index c23e5e41..c0d60053 100644 --- a/Samples/0_Introduction/simpleTexture/simpleTexture_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleTexture/simpleTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleTexture3D/Makefile b/Samples/0_Introduction/simpleTexture3D/Makefile index a5817723..93124c22 100644 --- a/Samples/0_Introduction/simpleTexture3D/Makefile +++ b/Samples/0_Introduction/simpleTexture3D/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleTexture3D/README.md b/Samples/0_Introduction/simpleTexture3D/README.md index 62947ae3..d1c37e11 100644 --- a/Samples/0_Introduction/simpleTexture3D/README.md +++ b/Samples/0_Introduction/simpleTexture3D/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFreeArray, cudaFree, cudaPitchedPtr, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2017.vcxproj b/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2017.vcxproj index 6008afe5..5614112b 100644 --- a/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2019.vcxproj b/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2019.vcxproj index a5078ce9..b2dfab1a 100644 --- a/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2022.vcxproj b/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2022.vcxproj index 6d2e38b4..5dd82255 100644 --- a/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleTexture3D/simpleTexture3D_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/0_Introduction/simpleTextureDrv/Makefile b/Samples/0_Introduction/simpleTextureDrv/Makefile index c10f1a78..d57e1596 100644 --- a/Samples/0_Introduction/simpleTextureDrv/Makefile +++ b/Samples/0_Introduction/simpleTextureDrv/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleTextureDrv/README.md b/Samples/0_Introduction/simpleTextureDrv/README.md index 2c4f1500..2ecd5e9f 100644 --- a/Samples/0_Introduction/simpleTextureDrv/README.md +++ b/Samples/0_Introduction/simpleTextureDrv/README.md @@ -27,7 +27,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuModuleLoadData, cuDeviceGetName, cuDeviceGetAttr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2017.vcxproj b/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2017.vcxproj index b82177b8..c64aabb4 100644 --- a/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2019.vcxproj b/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2019.vcxproj index 110a23d3..d5112ffe 100644 --- a/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2022.vcxproj b/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2022.vcxproj index 441824e4..14fe209a 100644 --- a/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleTextureDrv/simpleTextureDrv_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleVoteIntrinsics/Makefile b/Samples/0_Introduction/simpleVoteIntrinsics/Makefile index 39525a21..8e30c98b 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics/Makefile +++ b/Samples/0_Introduction/simpleVoteIntrinsics/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleVoteIntrinsics/README.md b/Samples/0_Introduction/simpleVoteIntrinsics/README.md index 0e1afa1e..a258a693 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics/README.md +++ b/Samples/0_Introduction/simpleVoteIntrinsics/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMalloc, cudaGetDeviceProperties ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2017.vcxproj b/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2017.vcxproj index 09ea9e02..6d5c8d72 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2019.vcxproj b/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2019.vcxproj index 2a638d24..f2106069 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2022.vcxproj b/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2022.vcxproj index 089ce824..68643df8 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleVoteIntrinsics/simpleVoteIntrinsics_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/Makefile b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/Makefile index 03a469f1..538ddbca 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/Makefile +++ b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/README.md b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/README.md index 9e34c26c..665de800 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/README.md +++ b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/README.md @@ -30,7 +30,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuMemcpyHtoD, cuCtxSynchronize, cuMemAlloc, cuMemF ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2017.vcxproj index e1c538d1..7e549eca 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2019.vcxproj index e95092eb..62ef8b97 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2022.vcxproj index b0f47782..206e2124 100644 --- a/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleVoteIntrinsics_nvrtc/simpleVoteIntrinsics_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleZeroCopy/Makefile b/Samples/0_Introduction/simpleZeroCopy/Makefile index a52aac02..79cb6a85 100644 --- a/Samples/0_Introduction/simpleZeroCopy/Makefile +++ b/Samples/0_Introduction/simpleZeroCopy/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/simpleZeroCopy/README.md b/Samples/0_Introduction/simpleZeroCopy/README.md index 9d04ca3f..cc1e2a5b 100644 --- a/Samples/0_Introduction/simpleZeroCopy/README.md +++ b/Samples/0_Introduction/simpleZeroCopy/README.md @@ -27,7 +27,7 @@ cudaHostAlloc, cudaSetDeviceFlags, cudaHostRegister, cudaSetDevice, cudaGetDevic ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2017.vcxproj b/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2017.vcxproj index 0f306757..286958fc 100644 --- a/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2017.vcxproj +++ b/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2019.vcxproj b/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2019.vcxproj index 2320a902..8896410a 100644 --- a/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2019.vcxproj +++ b/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2022.vcxproj b/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2022.vcxproj index c4af1735..58b96710 100644 --- a/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2022.vcxproj +++ b/Samples/0_Introduction/simpleZeroCopy/simpleZeroCopy_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/systemWideAtomics/Makefile b/Samples/0_Introduction/systemWideAtomics/Makefile index 793784d2..ce22b796 100644 --- a/Samples/0_Introduction/systemWideAtomics/Makefile +++ b/Samples/0_Introduction/systemWideAtomics/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/systemWideAtomics/README.md b/Samples/0_Introduction/systemWideAtomics/README.md index 11b879c6..16adccf1 100644 --- a/Samples/0_Introduction/systemWideAtomics/README.md +++ b/Samples/0_Introduction/systemWideAtomics/README.md @@ -30,7 +30,7 @@ cudaDeviceSynchronize, cudaMallocManaged, cudaGetDeviceProperties, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/template/Makefile b/Samples/0_Introduction/template/Makefile index 778d6366..5bb987e9 100644 --- a/Samples/0_Introduction/template/Makefile +++ b/Samples/0_Introduction/template/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/template/README.md b/Samples/0_Introduction/template/README.md index 3fe47385..7c283ec3 100644 --- a/Samples/0_Introduction/template/README.md +++ b/Samples/0_Introduction/template/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/template/template_vs2017.vcxproj b/Samples/0_Introduction/template/template_vs2017.vcxproj index 878b893a..804ea35e 100644 --- a/Samples/0_Introduction/template/template_vs2017.vcxproj +++ b/Samples/0_Introduction/template/template_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/template/template_vs2019.vcxproj b/Samples/0_Introduction/template/template_vs2019.vcxproj index df949971..7695d8b4 100644 --- a/Samples/0_Introduction/template/template_vs2019.vcxproj +++ b/Samples/0_Introduction/template/template_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/template/template_vs2022.vcxproj b/Samples/0_Introduction/template/template_vs2022.vcxproj index 059b9638..c6153fff 100644 --- a/Samples/0_Introduction/template/template_vs2022.vcxproj +++ b/Samples/0_Introduction/template/template_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/0_Introduction/vectorAdd/Makefile b/Samples/0_Introduction/vectorAdd/Makefile index 2763a7ea..4ac555e7 100644 --- a/Samples/0_Introduction/vectorAdd/Makefile +++ b/Samples/0_Introduction/vectorAdd/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/vectorAdd/README.md b/Samples/0_Introduction/vectorAdd/README.md index ec6ffe72..4586cf59 100644 --- a/Samples/0_Introduction/vectorAdd/README.md +++ b/Samples/0_Introduction/vectorAdd/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaGetLastError, cudaMalloc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/vectorAdd/vectorAdd_vs2017.vcxproj b/Samples/0_Introduction/vectorAdd/vectorAdd_vs2017.vcxproj index 77f90d6b..5e56183b 100644 --- a/Samples/0_Introduction/vectorAdd/vectorAdd_vs2017.vcxproj +++ b/Samples/0_Introduction/vectorAdd/vectorAdd_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/vectorAdd/vectorAdd_vs2019.vcxproj b/Samples/0_Introduction/vectorAdd/vectorAdd_vs2019.vcxproj index fb6d9bf8..cf9f4aae 100644 --- a/Samples/0_Introduction/vectorAdd/vectorAdd_vs2019.vcxproj +++ b/Samples/0_Introduction/vectorAdd/vectorAdd_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/vectorAdd/vectorAdd_vs2022.vcxproj b/Samples/0_Introduction/vectorAdd/vectorAdd_vs2022.vcxproj index c58b0342..4ad0b4a0 100644 --- a/Samples/0_Introduction/vectorAdd/vectorAdd_vs2022.vcxproj +++ b/Samples/0_Introduction/vectorAdd/vectorAdd_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/vectorAddDrv/Makefile b/Samples/0_Introduction/vectorAddDrv/Makefile index d256af9e..c163e969 100644 --- a/Samples/0_Introduction/vectorAddDrv/Makefile +++ b/Samples/0_Introduction/vectorAddDrv/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/vectorAddDrv/README.md b/Samples/0_Introduction/vectorAddDrv/README.md index e39b9cc4..a12cbe4e 100644 --- a/Samples/0_Introduction/vectorAddDrv/README.md +++ b/Samples/0_Introduction/vectorAddDrv/README.md @@ -27,7 +27,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuMemcpyHtoD, cuModuleLoadData, cuCtxSynchronize, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2017.vcxproj b/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2017.vcxproj index b6c80ccf..a7eefb8f 100644 --- a/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2017.vcxproj +++ b/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2019.vcxproj b/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2019.vcxproj index ab5610de..7c46b6d8 100644 --- a/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2019.vcxproj +++ b/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2022.vcxproj b/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2022.vcxproj index 8c961c30..f582f881 100644 --- a/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2022.vcxproj +++ b/Samples/0_Introduction/vectorAddDrv/vectorAddDrv_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/vectorAddMMAP/Makefile b/Samples/0_Introduction/vectorAddMMAP/Makefile index 4a1e0e51..a9ede4b7 100644 --- a/Samples/0_Introduction/vectorAddMMAP/Makefile +++ b/Samples/0_Introduction/vectorAddMMAP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/vectorAddMMAP/README.md b/Samples/0_Introduction/vectorAddMMAP/README.md index 23ef8a32..dc791cfd 100644 --- a/Samples/0_Introduction/vectorAddMMAP/README.md +++ b/Samples/0_Introduction/vectorAddMMAP/README.md @@ -27,7 +27,7 @@ cuMemcpyDtoH, cuDeviceCanAccessPeer, cuModuleGetFunction, cuMemSetAccess, cuMemR ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2017.vcxproj b/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2017.vcxproj index ad9ff411..ab1997cc 100644 --- a/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2017.vcxproj +++ b/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2019.vcxproj b/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2019.vcxproj index 57965b93..5ca66fe4 100644 --- a/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2019.vcxproj +++ b/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2022.vcxproj b/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2022.vcxproj index 1a3d125a..bdaa80ef 100644 --- a/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2022.vcxproj +++ b/Samples/0_Introduction/vectorAddMMAP/vectorAddMMAP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/0_Introduction/vectorAdd_nvrtc/Makefile b/Samples/0_Introduction/vectorAdd_nvrtc/Makefile index e8fc5f67..bf27a058 100644 --- a/Samples/0_Introduction/vectorAdd_nvrtc/Makefile +++ b/Samples/0_Introduction/vectorAdd_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/0_Introduction/vectorAdd_nvrtc/README.md b/Samples/0_Introduction/vectorAdd_nvrtc/README.md index 8aba1bc1..2e315e1e 100644 --- a/Samples/0_Introduction/vectorAdd_nvrtc/README.md +++ b/Samples/0_Introduction/vectorAdd_nvrtc/README.md @@ -33,7 +33,7 @@ cudaBlockSize, cudaGridSize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2017.vcxproj b/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2017.vcxproj index 0b07258e..54290f47 100644 --- a/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2017.vcxproj +++ b/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2019.vcxproj b/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2019.vcxproj index 339afcb3..06398729 100644 --- a/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2019.vcxproj +++ b/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2022.vcxproj b/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2022.vcxproj index 095aa0ac..3fa8eedb 100644 --- a/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2022.vcxproj +++ b/Samples/0_Introduction/vectorAdd_nvrtc/vectorAdd_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/bandwidthTest/Makefile b/Samples/1_Utilities/bandwidthTest/Makefile index 215d0c77..3132ee58 100644 --- a/Samples/1_Utilities/bandwidthTest/Makefile +++ b/Samples/1_Utilities/bandwidthTest/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/1_Utilities/bandwidthTest/README.md b/Samples/1_Utilities/bandwidthTest/README.md index 3dcc6aef..d66d37a0 100644 --- a/Samples/1_Utilities/bandwidthTest/README.md +++ b/Samples/1_Utilities/bandwidthTest/README.md @@ -27,7 +27,7 @@ cudaHostAlloc, cudaMemcpy, cudaMalloc, cudaMemcpyAsync, cudaFree, cudaGetErrorSt ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2017.vcxproj b/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2017.vcxproj index 9ff12d8c..909e9a47 100644 --- a/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2017.vcxproj +++ b/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2019.vcxproj b/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2019.vcxproj index 0ac249cc..f4884732 100644 --- a/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2019.vcxproj +++ b/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2022.vcxproj b/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2022.vcxproj index 511b85fa..cebbd496 100644 --- a/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2022.vcxproj +++ b/Samples/1_Utilities/bandwidthTest/bandwidthTest_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/deviceQuery/Makefile b/Samples/1_Utilities/deviceQuery/Makefile index 44e54af1..c1f2ab45 100644 --- a/Samples/1_Utilities/deviceQuery/Makefile +++ b/Samples/1_Utilities/deviceQuery/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/1_Utilities/deviceQuery/README.md b/Samples/1_Utilities/deviceQuery/README.md index 95bed31d..0da81ee8 100644 --- a/Samples/1_Utilities/deviceQuery/README.md +++ b/Samples/1_Utilities/deviceQuery/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaGetErrorString, cudaDeviceCanAccessPeer, cudaSetDevic ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/1_Utilities/deviceQuery/deviceQuery_vs2017.vcxproj b/Samples/1_Utilities/deviceQuery/deviceQuery_vs2017.vcxproj index 4a63fc9d..1dbc6f1e 100644 --- a/Samples/1_Utilities/deviceQuery/deviceQuery_vs2017.vcxproj +++ b/Samples/1_Utilities/deviceQuery/deviceQuery_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/1_Utilities/deviceQuery/deviceQuery_vs2019.vcxproj b/Samples/1_Utilities/deviceQuery/deviceQuery_vs2019.vcxproj index 8406be69..37e3e6e0 100644 --- a/Samples/1_Utilities/deviceQuery/deviceQuery_vs2019.vcxproj +++ b/Samples/1_Utilities/deviceQuery/deviceQuery_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/deviceQuery/deviceQuery_vs2022.vcxproj b/Samples/1_Utilities/deviceQuery/deviceQuery_vs2022.vcxproj index 2db391f2..e1740411 100644 --- a/Samples/1_Utilities/deviceQuery/deviceQuery_vs2022.vcxproj +++ b/Samples/1_Utilities/deviceQuery/deviceQuery_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/deviceQueryDrv/Makefile b/Samples/1_Utilities/deviceQueryDrv/Makefile index 93fa4949..a99867d4 100644 --- a/Samples/1_Utilities/deviceQueryDrv/Makefile +++ b/Samples/1_Utilities/deviceQueryDrv/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/1_Utilities/deviceQueryDrv/README.md b/Samples/1_Utilities/deviceQueryDrv/README.md index 6f66cbfc..8a411a63 100644 --- a/Samples/1_Utilities/deviceQueryDrv/README.md +++ b/Samples/1_Utilities/deviceQueryDrv/README.md @@ -30,7 +30,7 @@ cudaSetDevice ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2017.vcxproj b/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2017.vcxproj index 5092bced..beb87b4a 100644 --- a/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2017.vcxproj +++ b/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2019.vcxproj b/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2019.vcxproj index 24f0d10e..063bdadb 100644 --- a/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2019.vcxproj +++ b/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2022.vcxproj b/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2022.vcxproj index 9d815cce..62d4bfa4 100644 --- a/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2022.vcxproj +++ b/Samples/1_Utilities/deviceQueryDrv/deviceQueryDrv_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/topologyQuery/Makefile b/Samples/1_Utilities/topologyQuery/Makefile index 936463ce..ff050adf 100644 --- a/Samples/1_Utilities/topologyQuery/Makefile +++ b/Samples/1_Utilities/topologyQuery/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/1_Utilities/topologyQuery/README.md b/Samples/1_Utilities/topologyQuery/README.md index 33291303..43483e3f 100644 --- a/Samples/1_Utilities/topologyQuery/README.md +++ b/Samples/1_Utilities/topologyQuery/README.md @@ -27,7 +27,7 @@ cudaGetDeviceCount, cudaDeviceGetAttribute ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/1_Utilities/topologyQuery/topologyQuery_vs2017.vcxproj b/Samples/1_Utilities/topologyQuery/topologyQuery_vs2017.vcxproj index 4eee24f8..cdbc2fda 100644 --- a/Samples/1_Utilities/topologyQuery/topologyQuery_vs2017.vcxproj +++ b/Samples/1_Utilities/topologyQuery/topologyQuery_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/1_Utilities/topologyQuery/topologyQuery_vs2019.vcxproj b/Samples/1_Utilities/topologyQuery/topologyQuery_vs2019.vcxproj index f61c0150..66b8446f 100644 --- a/Samples/1_Utilities/topologyQuery/topologyQuery_vs2019.vcxproj +++ b/Samples/1_Utilities/topologyQuery/topologyQuery_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/1_Utilities/topologyQuery/topologyQuery_vs2022.vcxproj b/Samples/1_Utilities/topologyQuery/topologyQuery_vs2022.vcxproj index b9d7c218..3264ae01 100644 --- a/Samples/1_Utilities/topologyQuery/topologyQuery_vs2022.vcxproj +++ b/Samples/1_Utilities/topologyQuery/topologyQuery_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/Makefile b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/Makefile index a31a41d8..178e8458 100644 --- a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/Makefile +++ b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/README.md b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/README.md index 5ca06ee2..21839502 100644 --- a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/README.md +++ b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_CrossGPU/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaMalloc, cudaProducerPresentFrame, cudaFree, cudaGetErrorString, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/Makefile b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/Makefile index 7597fb66..c70bcc3b 100644 --- a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/Makefile +++ b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/README.md b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/README.md index 4a0d2597..f8b1fa62 100644 --- a/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/README.md +++ b/Samples/2_Concepts_and_Techniques/EGLStream_CUDA_Interop/README.md @@ -33,7 +33,7 @@ cudaProducerReadYUVFrame, cudaProducerTest, cudaProducerDeinit, cudaDeviceCreate ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/Makefile b/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/Makefile index 23bd191b..0241761a 100644 --- a/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/Makefile +++ b/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/README.md b/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/README.md index 73eff599..d4f5f10f 100644 --- a/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/README.md +++ b/Samples/2_Concepts_and_Techniques/EGLSync_CUDAEvent_Interop/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaDeviceSynchronize, cudaGetValueMis ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2017.vcxproj index 61c9ae75..df8cda23 100644 --- a/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2019.vcxproj index af65fe61..2ace0691 100644 --- a/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2022.vcxproj index 9ae20be2..00500c8c 100644 --- a/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/FunctionPointers/FunctionPointers_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/FunctionPointers/Makefile b/Samples/2_Concepts_and_Techniques/FunctionPointers/Makefile index a971933c..e7b1ebab 100644 --- a/Samples/2_Concepts_and_Techniques/FunctionPointers/Makefile +++ b/Samples/2_Concepts_and_Techniques/FunctionPointers/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/FunctionPointers/README.md b/Samples/2_Concepts_and_Techniques/FunctionPointers/README.md index 2ca5ebf8..e632f2e0 100644 --- a/Samples/2_Concepts_and_Techniques/FunctionPointers/README.md +++ b/Samples/2_Concepts_and_Techniques/FunctionPointers/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2017.vcxproj index 45e5edb6..7e502815 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2019.vcxproj index b5cc8664..c29b6b0b 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2022.vcxproj index 84acb0d3..1f038342 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/MC_EstimatePiInlineP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/Makefile b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/Makefile index 2379b4e3..ebb1ba53 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/Makefile +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/README.md b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/README.md index cfa5186d..ff411aa6 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/README.md +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineP/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaSetDevice, cudaGetDeviceCount, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2017.vcxproj index 7c06c290..fe85092b 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2019.vcxproj index 29770fc8..4de8d4ca 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2022.vcxproj index 351d4bc0..834890be 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/MC_EstimatePiInlineQ_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/Makefile b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/Makefile index 34a1db44..cbef9171 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/Makefile +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/README.md b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/README.md index 8e1fa2a7..68b78466 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/README.md +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiInlineQ/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaSetDevice, cudaGetDeviceCount, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2017.vcxproj index ad4ec899..ec45e298 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2019.vcxproj index 85e9fc95..6b576e48 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2022.vcxproj index 63a41df3..d995e2b8 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/MC_EstimatePiP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/Makefile b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/Makefile index 3955113f..9baf49b5 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/Makefile +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/README.md b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/README.md index 4938dedd..406d0fe0 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/README.md +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiP/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaSetDevice, cudaGetDeviceCount, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2017.vcxproj index b65dd0ad..7ed07903 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2019.vcxproj index 293f287a..b636ff1a 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2022.vcxproj index a5288d91..d6cb12d0 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/MC_EstimatePiQ_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/Makefile b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/Makefile index 6d7134e9..9a2f2d3a 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/Makefile +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/README.md b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/README.md index cf505a6e..91c957bb 100644 --- a/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/README.md +++ b/Samples/2_Concepts_and_Techniques/MC_EstimatePiQ/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaSetDevice, cudaGetDeviceCount, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2017.vcxproj index 668cb4bc..f58c7baa 100644 --- a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2019.vcxproj index 102da69e..fdd7f4ab 100644 --- a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2022.vcxproj index 847a4d44..bc387eb5 100644 --- a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/MC_SingleAsianOptionP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/Makefile b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/Makefile index b6b63dd6..85eacfd1 100644 --- a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/Makefile +++ b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/README.md b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/README.md index cbccc6d2..2c4a603b 100644 --- a/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/README.md +++ b/Samples/2_Concepts_and_Techniques/MC_SingleAsianOptionP/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaSetDevice, cudaGetDeviceCount, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/boxFilter/Makefile b/Samples/2_Concepts_and_Techniques/boxFilter/Makefile index 11161b37..09ae6e24 100644 --- a/Samples/2_Concepts_and_Techniques/boxFilter/Makefile +++ b/Samples/2_Concepts_and_Techniques/boxFilter/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/boxFilter/README.md b/Samples/2_Concepts_and_Techniques/boxFilter/README.md index 4729fcee..24981864 100644 --- a/Samples/2_Concepts_and_Techniques/boxFilter/README.md +++ b/Samples/2_Concepts_and_Techniques/boxFilter/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaCreateChannelDesc, cudaMallocArray, cudaFreeArra ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2017.vcxproj index 0d27d0ab..6b17ccc8 100644 --- a/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2019.vcxproj index f3593bca..13ce1ea5 100644 --- a/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -115,6 +115,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2022.vcxproj index 1b066818..6a6e13db 100644 --- a/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/boxFilter/boxFilter_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -115,6 +115,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/convolutionSeparable/Makefile b/Samples/2_Concepts_and_Techniques/convolutionSeparable/Makefile index f8cbdfef..781fb328 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionSeparable/Makefile +++ b/Samples/2_Concepts_and_Techniques/convolutionSeparable/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/convolutionSeparable/README.md b/Samples/2_Concepts_and_Techniques/convolutionSeparable/README.md index 8a015641..ec7ca787 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionSeparable/README.md +++ b/Samples/2_Concepts_and_Techniques/convolutionSeparable/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMemcpyToSymbol, cudaMalloc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2017.vcxproj index b1d66da8..5d2d48db 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2019.vcxproj index b6f543b2..7d407f60 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2022.vcxproj index ebbdd5c3..14b70151 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/convolutionSeparable/convolutionSeparable_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/convolutionTexture/Makefile b/Samples/2_Concepts_and_Techniques/convolutionTexture/Makefile index ed15173f..f2b678b6 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionTexture/Makefile +++ b/Samples/2_Concepts_and_Techniques/convolutionTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/convolutionTexture/README.md b/Samples/2_Concepts_and_Techniques/convolutionTexture/README.md index 5dd80e8f..21339d95 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionTexture/README.md +++ b/Samples/2_Concepts_and_Techniques/convolutionTexture/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree, cudaMemcpyToArray, cudaDev ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2017.vcxproj index eaad1ac4..e1c3dc00 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2019.vcxproj index f05d140d..a4c52571 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2022.vcxproj index c1617920..987ddcfe 100644 --- a/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/convolutionTexture/convolutionTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/cuHook/Makefile b/Samples/2_Concepts_and_Techniques/cuHook/Makefile index 96b57bd9..9f0cf2f8 100644 --- a/Samples/2_Concepts_and_Techniques/cuHook/Makefile +++ b/Samples/2_Concepts_and_Techniques/cuHook/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/cuHook/README.md b/Samples/2_Concepts_and_Techniques/cuHook/README.md index ca7d5027..4702e3f6 100644 --- a/Samples/2_Concepts_and_Techniques/cuHook/README.md +++ b/Samples/2_Concepts_and_Techniques/cuHook/README.md @@ -32,7 +32,7 @@ cudaDeviceReset, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/dct8x8/Makefile b/Samples/2_Concepts_and_Techniques/dct8x8/Makefile index f6c7541d..285446d0 100644 --- a/Samples/2_Concepts_and_Techniques/dct8x8/Makefile +++ b/Samples/2_Concepts_and_Techniques/dct8x8/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/dct8x8/README.md b/Samples/2_Concepts_and_Techniques/dct8x8/README.md index a4b014e6..46afcc9d 100644 --- a/Samples/2_Concepts_and_Techniques/dct8x8/README.md +++ b/Samples/2_Concepts_and_Techniques/dct8x8/README.md @@ -27,7 +27,7 @@ cudaMallocArray, cudaFreeArray, cudaFree, cudaMallocPitch, cudaDestroyTextureObj ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2017.vcxproj index ca4770f3..2837d948 100644 --- a/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -115,6 +115,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2019.vcxproj index d38aaae8..70b7e360 100644 --- a/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2022.vcxproj index bfff0f7d..e3649cdd 100644 --- a/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/dct8x8/dct8x8_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/eigenvalues/Makefile b/Samples/2_Concepts_and_Techniques/eigenvalues/Makefile index 0711e6c1..67505f65 100644 --- a/Samples/2_Concepts_and_Techniques/eigenvalues/Makefile +++ b/Samples/2_Concepts_and_Techniques/eigenvalues/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/eigenvalues/README.md b/Samples/2_Concepts_and_Techniques/eigenvalues/README.md index d1cecf7e..75de7c33 100644 --- a/Samples/2_Concepts_and_Techniques/eigenvalues/README.md +++ b/Samples/2_Concepts_and_Techniques/eigenvalues/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaDeviceSynchronize, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2017.vcxproj index 3fe21efa..1b0cae81 100644 --- a/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -122,6 +122,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2019.vcxproj index bd91a533..3fd6bb16 100644 --- a/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2022.vcxproj index c7c35cb8..b86bed10 100644 --- a/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/eigenvalues/eigenvalues_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/histogram/Makefile b/Samples/2_Concepts_and_Techniques/histogram/Makefile index 0783b1f8..0aff0de0 100644 --- a/Samples/2_Concepts_and_Techniques/histogram/Makefile +++ b/Samples/2_Concepts_and_Techniques/histogram/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/histogram/README.md b/Samples/2_Concepts_and_Techniques/histogram/README.md index f720b074..3f707898 100644 --- a/Samples/2_Concepts_and_Techniques/histogram/README.md +++ b/Samples/2_Concepts_and_Techniques/histogram/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMalloc, cudaGetDeviceProperties ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2017.vcxproj index 1994467a..2eb91eec 100644 --- a/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2019.vcxproj index 8e6f9ce6..ca98629f 100644 --- a/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2022.vcxproj index 40c003c1..a9fa64cf 100644 --- a/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/histogram/histogram_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/imageDenoising/Makefile b/Samples/2_Concepts_and_Techniques/imageDenoising/Makefile index 2b842427..ecbf667d 100644 --- a/Samples/2_Concepts_and_Techniques/imageDenoising/Makefile +++ b/Samples/2_Concepts_and_Techniques/imageDenoising/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/imageDenoising/README.md b/Samples/2_Concepts_and_Techniques/imageDenoising/README.md index f8076321..43622fb7 100644 --- a/Samples/2_Concepts_and_Techniques/imageDenoising/README.md +++ b/Samples/2_Concepts_and_Techniques/imageDenoising/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2017.vcxproj index c179c271..142f6609 100644 --- a/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -123,6 +123,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2019.vcxproj index 7858dbf8..3cbc522a 100644 --- a/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2022.vcxproj index 694acc97..9c77da70 100644 --- a/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/imageDenoising/imageDenoising_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX/Makefile b/Samples/2_Concepts_and_Techniques/inlinePTX/Makefile index 8b20a0f2..d05a24d2 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX/Makefile +++ b/Samples/2_Concepts_and_Techniques/inlinePTX/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX/README.md b/Samples/2_Concepts_and_Techniques/inlinePTX/README.md index 74dfb6b8..4e74a70d 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX/README.md +++ b/Samples/2_Concepts_and_Techniques/inlinePTX/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaMallocHost, cudaGetLastError, cudaGridSize, cudaBlockS ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2017.vcxproj index 03d7008a..ae316732 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2019.vcxproj index 51b5627c..564ff375 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2022.vcxproj index 1b7cf00a..f51a87c4 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/inlinePTX/inlinePTX_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/Makefile b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/Makefile index d802c503..291d4854 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/Makefile +++ b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/README.md b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/README.md index 8b7addf9..97b19b5e 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/README.md +++ b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/README.md @@ -33,7 +33,7 @@ cudaBlockSize, cudaGridSize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2017.vcxproj index ae99a1ec..3d7d31f9 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2019.vcxproj index 8024850c..50e52b05 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2022.vcxproj index 7cfd4420..e1d7997a 100644 --- a/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/inlinePTX_nvrtc/inlinePTX_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/interval/Makefile b/Samples/2_Concepts_and_Techniques/interval/Makefile index 9699294b..9e369a5d 100644 --- a/Samples/2_Concepts_and_Techniques/interval/Makefile +++ b/Samples/2_Concepts_and_Techniques/interval/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/interval/README.md b/Samples/2_Concepts_and_Techniques/interval/README.md index f805d2f9..82f98123 100644 --- a/Samples/2_Concepts_and_Techniques/interval/README.md +++ b/Samples/2_Concepts_and_Techniques/interval/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFuncSetCacheConfig, cudaMalloc, cudaFree, cudaGetLastError, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/interval/interval_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/interval/interval_vs2017.vcxproj index df579dec..580f8551 100644 --- a/Samples/2_Concepts_and_Techniques/interval/interval_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/interval/interval_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -213,6 +213,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/interval/interval_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/interval/interval_vs2019.vcxproj index d8e70b21..674249e4 100644 --- a/Samples/2_Concepts_and_Techniques/interval/interval_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/interval/interval_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -209,6 +209,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/interval/interval_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/interval/interval_vs2022.vcxproj index 004707ed..1ce865ea 100644 --- a/Samples/2_Concepts_and_Techniques/interval/interval_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/interval/interval_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -209,6 +209,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/particles/Makefile b/Samples/2_Concepts_and_Techniques/particles/Makefile index a8ae1d86..5da2007a 100644 --- a/Samples/2_Concepts_and_Techniques/particles/Makefile +++ b/Samples/2_Concepts_and_Techniques/particles/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -313,13 +317,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/2_Concepts_and_Techniques/particles/README.md b/Samples/2_Concepts_and_Techniques/particles/README.md index a30c8c08..517cca76 100644 --- a/Samples/2_Concepts_and_Techniques/particles/README.md +++ b/Samples/2_Concepts_and_Techniques/particles/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGraphicsResourceGetMappedP ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/particles/particles_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/particles/particles_vs2017.vcxproj index 2d18bc91..3dba36ce 100644 --- a/Samples/2_Concepts_and_Techniques/particles/particles_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/particles/particles_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -129,6 +129,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/particles/particles_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/particles/particles_vs2019.vcxproj index 9fe919e3..6138b0f8 100644 --- a/Samples/2_Concepts_and_Techniques/particles/particles_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/particles/particles_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -125,6 +125,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/particles/particles_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/particles/particles_vs2022.vcxproj index fd565cbe..0aa3f97c 100644 --- a/Samples/2_Concepts_and_Techniques/particles/particles_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/particles/particles_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -125,6 +125,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/radixSortThrust/Makefile b/Samples/2_Concepts_and_Techniques/radixSortThrust/Makefile index f4afda21..92be51ab 100644 --- a/Samples/2_Concepts_and_Techniques/radixSortThrust/Makefile +++ b/Samples/2_Concepts_and_Techniques/radixSortThrust/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -293,13 +297,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/2_Concepts_and_Techniques/radixSortThrust/README.md b/Samples/2_Concepts_and_Techniques/radixSortThrust/README.md index e37d63d3..3fb8dace 100644 --- a/Samples/2_Concepts_and_Techniques/radixSortThrust/README.md +++ b/Samples/2_Concepts_and_Techniques/radixSortThrust/README.md @@ -27,7 +27,7 @@ cudaEventSynchronize, cudaEventRecord, cudaGetDevice, cudaEventDestroy, cudaEven ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2017.vcxproj index 5670c47e..cfb8183e 100644 --- a/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2019.vcxproj index c286dd4e..1ff47a30 100644 --- a/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2022.vcxproj index 75c6cc25..eca4d229 100644 --- a/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/radixSortThrust/radixSortThrust_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/reduction/Makefile b/Samples/2_Concepts_and_Techniques/reduction/Makefile index 8c1feee3..8ec8d635 100644 --- a/Samples/2_Concepts_and_Techniques/reduction/Makefile +++ b/Samples/2_Concepts_and_Techniques/reduction/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/2_Concepts_and_Techniques/reduction/README.md b/Samples/2_Concepts_and_Techniques/reduction/README.md index 80372a29..d83daf85 100644 --- a/Samples/2_Concepts_and_Techniques/reduction/README.md +++ b/Samples/2_Concepts_and_Techniques/reduction/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaSetDevice, cudaDeviceSynchronize, cudaGetDevice, cudaM ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2017.vcxproj index 7e4ccea8..69b0aafa 100644 --- a/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2019.vcxproj index 62af5d3d..1bc793f7 100644 --- a/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2022.vcxproj index 7cf54d59..c9f2f2db 100644 --- a/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/reduction/reduction_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/Makefile b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/Makefile index f087eee5..eaaf0c2f 100644 --- a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/Makefile +++ b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -311,13 +315,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/README.md b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/README.md index e90ce8a0..95381768 100644 --- a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/README.md +++ b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaSetDevice, cudaDeviceSynchronize, cudaLaunchCooperativ ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2017.vcxproj index 16fcec24..a326a925 100644 --- a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2019.vcxproj index a916c4fc..11d1213f 100644 --- a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2022.vcxproj index 5c38dc85..eaf40622 100644 --- a/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/reductionMultiBlockCG/reductionMultiBlockCG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/scalarProd/Makefile b/Samples/2_Concepts_and_Techniques/scalarProd/Makefile index 2ed7b08f..316337e7 100644 --- a/Samples/2_Concepts_and_Techniques/scalarProd/Makefile +++ b/Samples/2_Concepts_and_Techniques/scalarProd/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/scalarProd/README.md b/Samples/2_Concepts_and_Techniques/scalarProd/README.md index c5ddb171..ce1b230e 100644 --- a/Samples/2_Concepts_and_Techniques/scalarProd/README.md +++ b/Samples/2_Concepts_and_Techniques/scalarProd/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaDeviceSynchronize, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2017.vcxproj index 202ec350..1b0d0760 100644 --- a/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2019.vcxproj index 5d31be6f..ddb1f457 100644 --- a/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2022.vcxproj index bedb793d..357d7063 100644 --- a/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/scalarProd/scalarProd_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/scan/Makefile b/Samples/2_Concepts_and_Techniques/scan/Makefile index 5de0c5d0..20a84991 100644 --- a/Samples/2_Concepts_and_Techniques/scan/Makefile +++ b/Samples/2_Concepts_and_Techniques/scan/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/scan/README.md b/Samples/2_Concepts_and_Techniques/scan/README.md index c803dfbd..6cf37742 100644 --- a/Samples/2_Concepts_and_Techniques/scan/README.md +++ b/Samples/2_Concepts_and_Techniques/scan/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaDeviceSynchronize, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/scan/scan_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/scan/scan_vs2017.vcxproj index dcffec2a..27f82832 100644 --- a/Samples/2_Concepts_and_Techniques/scan/scan_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/scan/scan_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/scan/scan_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/scan/scan_vs2019.vcxproj index 4468ca32..098263b9 100644 --- a/Samples/2_Concepts_and_Techniques/scan/scan_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/scan/scan_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/scan/scan_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/scan/scan_vs2022.vcxproj index 68d383d0..88317649 100644 --- a/Samples/2_Concepts_and_Techniques/scan/scan_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/scan/scan_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/Makefile b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/Makefile index 661c52a7..8befa5f5 100644 --- a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/Makefile +++ b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -293,13 +297,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/README.md b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/README.md index 8b8d0f17..fb45c58a 100644 --- a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/README.md +++ b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaMemGetInfo, cudaEventSynchronize, cudaEventRecord, cudaMemset, c ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2017.vcxproj index ac60e680..b1b64caa 100644 --- a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2019.vcxproj index e7ed3541..b8d4c2b0 100644 --- a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2022.vcxproj index 130f21b1..ba63a5c5 100644 --- a/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/segmentationTreeThrust/segmentationTreeThrust_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/shfl_scan/Makefile b/Samples/2_Concepts_and_Techniques/shfl_scan/Makefile index 4f5ae399..627a2bc4 100644 --- a/Samples/2_Concepts_and_Techniques/shfl_scan/Makefile +++ b/Samples/2_Concepts_and_Techniques/shfl_scan/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/2_Concepts_and_Techniques/shfl_scan/README.md b/Samples/2_Concepts_and_Techniques/shfl_scan/README.md index f83418dd..2dcd7849 100644 --- a/Samples/2_Concepts_and_Techniques/shfl_scan/README.md +++ b/Samples/2_Concepts_and_Techniques/shfl_scan/README.md @@ -28,7 +28,7 @@ cudaMemcpy, cudaFree, cudaMallocHost, cudaEventSynchronize, cudaEventRecord, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2017.vcxproj index 2804c28f..3171723b 100644 --- a/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2019.vcxproj index 3d10536f..9c7f47a5 100644 --- a/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2022.vcxproj index b0a0d1bb..6b554b50 100644 --- a/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/shfl_scan/shfl_scan_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/sortingNetworks/Makefile b/Samples/2_Concepts_and_Techniques/sortingNetworks/Makefile index 096003b7..9e8e0b57 100644 --- a/Samples/2_Concepts_and_Techniques/sortingNetworks/Makefile +++ b/Samples/2_Concepts_and_Techniques/sortingNetworks/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/sortingNetworks/README.md b/Samples/2_Concepts_and_Techniques/sortingNetworks/README.md index 14b7fa12..c0d55d57 100644 --- a/Samples/2_Concepts_and_Techniques/sortingNetworks/README.md +++ b/Samples/2_Concepts_and_Techniques/sortingNetworks/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaDeviceSynchronize, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2017.vcxproj index 54865825..f0b61eed 100644 --- a/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2019.vcxproj index 9cd835fb..ff7cf03d 100644 --- a/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2022.vcxproj index 6bdfd503..818e6e10 100644 --- a/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/sortingNetworks/sortingNetworks_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/Makefile b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/Makefile index edc4b58a..b551270f 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/Makefile +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/README.md b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/README.md index 1059a08a..28bf55da 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/README.md +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/README.md @@ -27,7 +27,7 @@ cudaDeviceGetDefaultMemPool, cudaFreeAsync, cudaStreamCreateWithFlags, cudaStrea ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2017.vcxproj index dbb18a36..d601aa07 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2019.vcxproj index 7593dd99..2305ff26 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2022.vcxproj index 6f9600bb..c32a6a0c 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocation/streamOrderedAllocation_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/Makefile b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/Makefile index b62e73f2..37d08561 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/Makefile +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/README.md b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/README.md index 3af25653..97b3b7f4 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/README.md +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/README.md @@ -30,7 +30,7 @@ cudaDeviceGetAttribute, cudaMemPoolImportFromShareableHandle, cudaSetDevice, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu index fbea954c..51c9dcd8 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu @@ -368,8 +368,11 @@ static void parentProcess(char *app) { checkCudaErrors(cudaMemPoolExportToShareableHandle( &shareableHandles[i], pools[i], handleType, 0)); - // Get the opaque ‘bag-of-bits’ representing the allocation + // Memset handle to 0 to make sure call to `cudaMemPoolImportPointer` in + // childProcess will fail if the following call to + // `cudaMemPoolExportPointer` fails. memset((void *)&shm->exportPtrData[i], 0, sizeof(cudaMemPoolPtrExportData)); + // Get the opaque ‘bag-of-bits’ representing the allocation checkCudaErrors(cudaMemPoolExportPointer( (cudaMemPoolPtrExportData *)&shm->exportPtrData[i], ptr)); ptrs.push_back(ptr); diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/Makefile b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/Makefile index 8c418346..532ef73f 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/Makefile +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/README.md b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/README.md index af629381..00edba7e 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/README.md +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/README.md @@ -27,7 +27,7 @@ cudaDeviceGetDefaultMemPool, cudaFreeAsync, cudaStreamCreateWithFlags, cudaMemPo ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2017.vcxproj index 81cf7b5a..0bda1250 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2019.vcxproj index bab637ba..8287d8fa 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2022.vcxproj index 8e3ee45c..eebf23d6 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationP2P/streamOrderedAllocationP2P_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/threadFenceReduction/Makefile b/Samples/2_Concepts_and_Techniques/threadFenceReduction/Makefile index ef813ea2..5f4646b1 100644 --- a/Samples/2_Concepts_and_Techniques/threadFenceReduction/Makefile +++ b/Samples/2_Concepts_and_Techniques/threadFenceReduction/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/threadFenceReduction/README.md b/Samples/2_Concepts_and_Techniques/threadFenceReduction/README.md index 3ac08411..910016d8 100644 --- a/Samples/2_Concepts_and_Techniques/threadFenceReduction/README.md +++ b/Samples/2_Concepts_and_Techniques/threadFenceReduction/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMalloc, cudaGetDeviceProperties ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2017.vcxproj index 8b24af4a..006c4aa7 100644 --- a/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2019.vcxproj index 6de95f04..08a87e66 100644 --- a/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2022.vcxproj index 1ed74429..b8867a24 100644 --- a/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/threadFenceReduction/threadFenceReduction_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/threadMigration/Makefile b/Samples/2_Concepts_and_Techniques/threadMigration/Makefile index d9796fb9..d7e735bc 100644 --- a/Samples/2_Concepts_and_Techniques/threadMigration/Makefile +++ b/Samples/2_Concepts_and_Techniques/threadMigration/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/2_Concepts_and_Techniques/threadMigration/README.md b/Samples/2_Concepts_and_Techniques/threadMigration/README.md index 6c2d8261..5d716ed6 100644 --- a/Samples/2_Concepts_and_Techniques/threadMigration/README.md +++ b/Samples/2_Concepts_and_Techniques/threadMigration/README.md @@ -27,7 +27,7 @@ cuMemcpyDtoH, cuLaunchKernel, cuModuleLoadData, cuDeviceGetName, cuDeviceGet, cu ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2017.vcxproj b/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2017.vcxproj index e86ca043..a6548587 100644 --- a/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2017.vcxproj +++ b/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2019.vcxproj b/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2019.vcxproj index 7798ffb3..aa06e5ea 100644 --- a/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2019.vcxproj +++ b/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2022.vcxproj b/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2022.vcxproj index 93ab436d..c9aaae03 100644 --- a/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2022.vcxproj +++ b/Samples/2_Concepts_and_Techniques/threadMigration/threadMigration_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/StreamPriorities/Makefile b/Samples/3_CUDA_Features/StreamPriorities/Makefile index 76187119..5083641e 100644 --- a/Samples/3_CUDA_Features/StreamPriorities/Makefile +++ b/Samples/3_CUDA_Features/StreamPriorities/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/StreamPriorities/README.md b/Samples/3_CUDA_Features/StreamPriorities/README.md index 664dbbb7..46ff019e 100644 --- a/Samples/3_CUDA_Features/StreamPriorities/README.md +++ b/Samples/3_CUDA_Features/StreamPriorities/README.md @@ -28,7 +28,7 @@ cudaMemcpy, cudaStreamCreateWithPriority, cudaDeviceGetStreamPriorityRange, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/bf16TensorCoreGemm/Makefile b/Samples/3_CUDA_Features/bf16TensorCoreGemm/Makefile index 5c8933e4..6fa432f3 100644 --- a/Samples/3_CUDA_Features/bf16TensorCoreGemm/Makefile +++ b/Samples/3_CUDA_Features/bf16TensorCoreGemm/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -311,13 +315,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 51000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.1.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.1.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.1.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/bf16TensorCoreGemm/README.md b/Samples/3_CUDA_Features/bf16TensorCoreGemm/README.md index 0ef9e716..fd0c4449 100644 --- a/Samples/3_CUDA_Features/bf16TensorCoreGemm/README.md +++ b/Samples/3_CUDA_Features/bf16TensorCoreGemm/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaGetErrorString, cudaGetLastError, cudaEventSynchronize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2017.vcxproj b/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2017.vcxproj index d497922c..75356c9f 100644 --- a/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2019.vcxproj b/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2019.vcxproj index 57d7333a..34e7d6a6 100644 --- a/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2022.vcxproj b/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2022.vcxproj index ba6e4301..8585fe85 100644 --- a/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/bf16TensorCoreGemm/bf16TensorCoreGemm_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/binaryPartitionCG/Makefile b/Samples/3_CUDA_Features/binaryPartitionCG/Makefile index 34df9731..5cbfd13d 100644 --- a/Samples/3_CUDA_Features/binaryPartitionCG/Makefile +++ b/Samples/3_CUDA_Features/binaryPartitionCG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/binaryPartitionCG/README.md b/Samples/3_CUDA_Features/binaryPartitionCG/README.md index b680e906..a708a8e8 100644 --- a/Samples/3_CUDA_Features/binaryPartitionCG/README.md +++ b/Samples/3_CUDA_Features/binaryPartitionCG/README.md @@ -27,7 +27,7 @@ cudaStreamCreateWithFlags, cudaFree, cudaMallocHost, cudaFreeHost, cudaStreamSyn ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2017.vcxproj b/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2017.vcxproj index 5fdfb9e9..30c7ece3 100644 --- a/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2019.vcxproj b/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2019.vcxproj index d1cca422..c76cca83 100644 --- a/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2022.vcxproj b/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2022.vcxproj index 614ed8f2..06c32b79 100644 --- a/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/binaryPartitionCG/binaryPartitionCG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/bindlessTexture/Makefile b/Samples/3_CUDA_Features/bindlessTexture/Makefile index ff9b455f..43672676 100644 --- a/Samples/3_CUDA_Features/bindlessTexture/Makefile +++ b/Samples/3_CUDA_Features/bindlessTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/bindlessTexture/README.md b/Samples/3_CUDA_Features/bindlessTexture/README.md index 4de0001a..abc00862 100644 --- a/Samples/3_CUDA_Features/bindlessTexture/README.md +++ b/Samples/3_CUDA_Features/bindlessTexture/README.md @@ -28,7 +28,7 @@ cudaMemcpy, cudaGetMipmappedArrayLevel, cudaGraphicsMapResources, cudaDestroySur ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2017.vcxproj b/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2017.vcxproj index ac37cc4d..7b804f4b 100644 --- a/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2019.vcxproj b/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2019.vcxproj index 2f66c8c6..e755f4e4 100644 --- a/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2022.vcxproj b/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2022.vcxproj index 054c584f..88f60615 100644 --- a/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/bindlessTexture/bindlessTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/Makefile b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/Makefile index fcb44e8f..7ad291ba 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/Makefile +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/README.md b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/README.md index 0c596b33..3abaae21 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/README.md +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/README.md @@ -28,7 +28,7 @@ cudaStreamCreateWithFlags, cudaMemcpy, cudaMemcpyAsync, cudaFree, cudaGetErrorSt ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2017.vcxproj b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2017.vcxproj index 5d3ef361..ef15d77f 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2019.vcxproj b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2019.vcxproj index 159e35fd..f8fa2ec6 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2022.vcxproj b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2022.vcxproj index 491264b1..c80b9674 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/cdpAdvancedQuicksort_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/Makefile b/Samples/3_CUDA_Features/cdpBezierTessellation/Makefile index 1d39dcad..470f8622 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/Makefile +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/README.md b/Samples/3_CUDA_Features/cdpBezierTessellation/README.md index 423c5ff8..2bd28946 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/README.md +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/README.md @@ -28,7 +28,7 @@ cudaMemcpy, cudaFree, cudaGetDeviceCount, cudaMalloc, cudaGetDeviceProperties ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2017.vcxproj b/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2017.vcxproj index e3765803..fac7f19e 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2019.vcxproj b/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2019.vcxproj index 2e2088d0..4b8f48bd 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2022.vcxproj b/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2022.vcxproj index 694e0e5e..037d843f 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/cdpBezierTessellation_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpQuadtree/Makefile b/Samples/3_CUDA_Features/cdpQuadtree/Makefile index 8fbe4505..0a08289b 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/Makefile +++ b/Samples/3_CUDA_Features/cdpQuadtree/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/cdpQuadtree/README.md b/Samples/3_CUDA_Features/cdpQuadtree/README.md index ce2a0735..d17ece52 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/README.md +++ b/Samples/3_CUDA_Features/cdpQuadtree/README.md @@ -28,7 +28,7 @@ cudaMemcpy, cudaFree, cudaGetLastError, cudaDeviceSetLimit, cudaMalloc, cudaGetD ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2017.vcxproj b/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2017.vcxproj index 5c672776..1a7a3d47 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2019.vcxproj b/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2019.vcxproj index 39321c12..b4020e54 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2022.vcxproj b/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2022.vcxproj index acd3bb44..7454e602 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cdpQuadtree/cdpQuadtree_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/Makefile b/Samples/3_CUDA_Features/cdpSimplePrint/Makefile index cba7467a..67f6ebcb 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/Makefile +++ b/Samples/3_CUDA_Features/cdpSimplePrint/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/README.md b/Samples/3_CUDA_Features/cdpSimplePrint/README.md index 80914faf..1b8ef8cc 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/README.md +++ b/Samples/3_CUDA_Features/cdpSimplePrint/README.md @@ -28,7 +28,7 @@ cudaDeviceSynchronize, cudaGetLastError, cudaGetDeviceProperties, cudaDeviceSetL ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2017.vcxproj b/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2017.vcxproj index 949a7766..a812134c 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2019.vcxproj b/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2019.vcxproj index 0d907d9c..a4630bd7 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2022.vcxproj b/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2022.vcxproj index d91e7da1..67bd63de 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cdpSimplePrint/cdpSimplePrint_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/Makefile b/Samples/3_CUDA_Features/cdpSimpleQuicksort/Makefile index 4c86c61d..882d5f4b 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/Makefile +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/README.md b/Samples/3_CUDA_Features/cdpSimpleQuicksort/README.md index 44a2fe6d..c1f9a58b 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/README.md +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/README.md @@ -28,7 +28,7 @@ cudaStreamCreateWithFlags, cudaMemcpy, cudaStreamDestroy, cudaFree, cudaDeviceSy ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2017.vcxproj b/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2017.vcxproj index 0f2cebe4..9846f71d 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2019.vcxproj b/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2019.vcxproj index 3b62872b..66528d22 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2022.vcxproj b/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2022.vcxproj index 824933b4..50795d96 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/cdpSimpleQuicksort_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cudaCompressibleMemory/Makefile b/Samples/3_CUDA_Features/cudaCompressibleMemory/Makefile index 8d0631b6..6504cea1 100644 --- a/Samples/3_CUDA_Features/cudaCompressibleMemory/Makefile +++ b/Samples/3_CUDA_Features/cudaCompressibleMemory/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/cudaCompressibleMemory/README.md b/Samples/3_CUDA_Features/cudaCompressibleMemory/README.md index 82e8e964..30e5ed8e 100644 --- a/Samples/3_CUDA_Features/cudaCompressibleMemory/README.md +++ b/Samples/3_CUDA_Features/cudaCompressibleMemory/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaEventSynchronize, cudaEventRecord, cudaEventElapsedTime, cudaOcc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2017.vcxproj b/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2017.vcxproj index 5048cae5..979e6dd9 100644 --- a/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2019.vcxproj b/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2019.vcxproj index 1710ad8e..6bd5d896 100644 --- a/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2022.vcxproj b/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2022.vcxproj index 6bcee63a..e17484f0 100644 --- a/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cudaCompressibleMemory/cudaCompressibleMemory_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/cudaTensorCoreGemm/Makefile b/Samples/3_CUDA_Features/cudaTensorCoreGemm/Makefile index 9416c74b..9e9f26a7 100644 --- a/Samples/3_CUDA_Features/cudaTensorCoreGemm/Makefile +++ b/Samples/3_CUDA_Features/cudaTensorCoreGemm/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/cudaTensorCoreGemm/README.md b/Samples/3_CUDA_Features/cudaTensorCoreGemm/README.md index adb3b390..2bc888f3 100644 --- a/Samples/3_CUDA_Features/cudaTensorCoreGemm/README.md +++ b/Samples/3_CUDA_Features/cudaTensorCoreGemm/README.md @@ -31,7 +31,7 @@ cudaMemcpy, cudaFree, cudaGetErrorString, cudaGetLastError, cudaEventSynchronize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2017.vcxproj b/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2017.vcxproj index db375c93..cb0f2920 100644 --- a/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2019.vcxproj b/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2019.vcxproj index 6ec95ea3..97d3f3e4 100644 --- a/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2022.vcxproj b/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2022.vcxproj index fdf2274a..8906a8c0 100644 --- a/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/cudaTensorCoreGemm/cudaTensorCoreGemm_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/Makefile b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/Makefile index b51f215c..134a0759 100644 --- a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/Makefile +++ b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -311,13 +315,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 51000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.1.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.1.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.1.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/README.md b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/README.md index c5b37035..bb032258 100644 --- a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/README.md +++ b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaGetErrorString, cudaGetLastError, cudaEventSynchronize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2017.vcxproj b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2017.vcxproj index da7e5f69..237ab80a 100644 --- a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2019.vcxproj b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2019.vcxproj index 741efc8c..ffa85082 100644 --- a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2022.vcxproj b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2022.vcxproj index d71881b9..40eaaa18 100644 --- a/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/dmmaTensorCoreGemm/dmmaTensorCoreGemm_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/Makefile b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/Makefile index df60b745..3c92e0e8 100644 --- a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/Makefile +++ b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -299,13 +303,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 51000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.1.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.1.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.1.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/README.md b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/README.md index f3143c90..9eb8abbb 100644 --- a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/README.md +++ b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/README.md @@ -30,7 +30,7 @@ cudaStreamCreateWithFlags, cudaMalloc, cudaDeviceGetAttribute, cudaFree, cudaMal ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2017.vcxproj b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2017.vcxproj index 110555b4..c0c87119 100644 --- a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2019.vcxproj b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2019.vcxproj index eddefef4..f78997a9 100644 --- a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2022.vcxproj b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2022.vcxproj index 1f8b383b..a2ba13ba 100644 --- a/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/globalToShmemAsyncCopy/globalToShmemAsyncCopy_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/graphMemoryFootprint/Makefile b/Samples/3_CUDA_Features/graphMemoryFootprint/Makefile index ab05a414..a65a991c 100644 --- a/Samples/3_CUDA_Features/graphMemoryFootprint/Makefile +++ b/Samples/3_CUDA_Features/graphMemoryFootprint/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/graphMemoryFootprint/README.md b/Samples/3_CUDA_Features/graphMemoryFootprint/README.md index 6e187979..b41dcaf5 100644 --- a/Samples/3_CUDA_Features/graphMemoryFootprint/README.md +++ b/Samples/3_CUDA_Features/graphMemoryFootprint/README.md @@ -27,7 +27,7 @@ cudaGraphAddMemAllocNode, cudaStreamCreateWithFlags, cudaGraphInstantiate, cudaS ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2017.vcxproj b/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2017.vcxproj index 50e28007..aad961a4 100644 --- a/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2019.vcxproj b/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2019.vcxproj index 6e51cf2e..bd053bb0 100644 --- a/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2022.vcxproj b/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2022.vcxproj index 5bbbd9a4..9d233e4c 100644 --- a/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/graphMemoryFootprint/graphMemoryFootprint_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/graphMemoryNodes/Makefile b/Samples/3_CUDA_Features/graphMemoryNodes/Makefile index 01d4838f..630e29a8 100644 --- a/Samples/3_CUDA_Features/graphMemoryNodes/Makefile +++ b/Samples/3_CUDA_Features/graphMemoryNodes/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/graphMemoryNodes/README.md b/Samples/3_CUDA_Features/graphMemoryNodes/README.md index 1ad367f7..bf6f7896 100644 --- a/Samples/3_CUDA_Features/graphMemoryNodes/README.md +++ b/Samples/3_CUDA_Features/graphMemoryNodes/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaDeviceGetAttribute, cudaDriverGetVersion, cudaGraphLaunch, cudaE ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2017.vcxproj b/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2017.vcxproj index 54af918e..70b56727 100644 --- a/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2019.vcxproj b/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2019.vcxproj index 29a52af2..8cf00d19 100644 --- a/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2022.vcxproj b/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2022.vcxproj index ac40befc..601ba85d 100644 --- a/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/graphMemoryNodes/graphMemoryNodes_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/immaTensorCoreGemm/Makefile b/Samples/3_CUDA_Features/immaTensorCoreGemm/Makefile index c7a572c6..ca600724 100644 --- a/Samples/3_CUDA_Features/immaTensorCoreGemm/Makefile +++ b/Samples/3_CUDA_Features/immaTensorCoreGemm/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/immaTensorCoreGemm/README.md b/Samples/3_CUDA_Features/immaTensorCoreGemm/README.md index 33afda69..5ddc26e5 100644 --- a/Samples/3_CUDA_Features/immaTensorCoreGemm/README.md +++ b/Samples/3_CUDA_Features/immaTensorCoreGemm/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaGetErrorString, cudaGetLastError, cudaEventSynchronize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2017.vcxproj b/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2017.vcxproj index 4c5883c7..ff40cc56 100644 --- a/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2019.vcxproj b/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2019.vcxproj index eb39b5c4..f79b6b08 100644 --- a/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2022.vcxproj b/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2022.vcxproj index 789dd9cb..a93056a4 100644 --- a/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/immaTensorCoreGemm/immaTensorCoreGemm_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/jacobiCudaGraphs/Makefile b/Samples/3_CUDA_Features/jacobiCudaGraphs/Makefile index 50f50d51..ff0b63b0 100644 --- a/Samples/3_CUDA_Features/jacobiCudaGraphs/Makefile +++ b/Samples/3_CUDA_Features/jacobiCudaGraphs/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/jacobiCudaGraphs/README.md b/Samples/3_CUDA_Features/jacobiCudaGraphs/README.md index 00ff2e8e..2e40f933 100644 --- a/Samples/3_CUDA_Features/jacobiCudaGraphs/README.md +++ b/Samples/3_CUDA_Features/jacobiCudaGraphs/README.md @@ -25,7 +25,7 @@ cudaExtent, cudaGraphLaunch, cudaGraphAddMemcpyNode, cudaMallocHost, cudaPitched ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2017.vcxproj b/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2017.vcxproj index 8469e9c6..ea60387f 100644 --- a/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2019.vcxproj b/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2019.vcxproj index 45ed160e..f9b4207f 100644 --- a/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2022.vcxproj b/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2022.vcxproj index 2a0ea1e1..517310cd 100644 --- a/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/jacobiCudaGraphs/jacobiCudaGraphs_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/Makefile b/Samples/3_CUDA_Features/memMapIPCDrv/Makefile index 5d9a55ad..2ed35d4c 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/Makefile +++ b/Samples/3_CUDA_Features/memMapIPCDrv/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/README.md b/Samples/3_CUDA_Features/memMapIPCDrv/README.md index 4403006e..f46c54ac 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/README.md +++ b/Samples/3_CUDA_Features/memMapIPCDrv/README.md @@ -30,7 +30,7 @@ cuDeviceCanAccessPeer, cuMemImportFromShareableHandle, cuModuleLoadDataEx, cuMod ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2017.vcxproj b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2017.vcxproj index 9c353303..e38a0142 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2019.vcxproj b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2019.vcxproj index 2b076b8c..4cdfbc1f 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2022.vcxproj b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2022.vcxproj index 6ba5c9a1..09e21b9a 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIPCDrv_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/3_CUDA_Features/newdelete/Makefile b/Samples/3_CUDA_Features/newdelete/Makefile index 13d30adc..a9284d9a 100644 --- a/Samples/3_CUDA_Features/newdelete/Makefile +++ b/Samples/3_CUDA_Features/newdelete/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/newdelete/README.md b/Samples/3_CUDA_Features/newdelete/README.md index 61de7af5..0ca91dd0 100644 --- a/Samples/3_CUDA_Features/newdelete/README.md +++ b/Samples/3_CUDA_Features/newdelete/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaDeviceSetLimit, cudaMalloc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/newdelete/newdelete_vs2017.vcxproj b/Samples/3_CUDA_Features/newdelete/newdelete_vs2017.vcxproj index 646241c9..67ece0f3 100644 --- a/Samples/3_CUDA_Features/newdelete/newdelete_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/newdelete/newdelete_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/newdelete/newdelete_vs2019.vcxproj b/Samples/3_CUDA_Features/newdelete/newdelete_vs2019.vcxproj index ac3675f3..0697141e 100644 --- a/Samples/3_CUDA_Features/newdelete/newdelete_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/newdelete/newdelete_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/newdelete/newdelete_vs2022.vcxproj b/Samples/3_CUDA_Features/newdelete/newdelete_vs2022.vcxproj index 2f511a0c..de8818d9 100644 --- a/Samples/3_CUDA_Features/newdelete/newdelete_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/newdelete/newdelete_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/ptxjit/Makefile b/Samples/3_CUDA_Features/ptxjit/Makefile index f36c9287..1dbec277 100644 --- a/Samples/3_CUDA_Features/ptxjit/Makefile +++ b/Samples/3_CUDA_Features/ptxjit/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/ptxjit/README.md b/Samples/3_CUDA_Features/ptxjit/README.md index e89d0fe3..49c618ff 100644 --- a/Samples/3_CUDA_Features/ptxjit/README.md +++ b/Samples/3_CUDA_Features/ptxjit/README.md @@ -30,7 +30,7 @@ cudaMalloc, cudaDriverGetVersion, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2017.vcxproj b/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2017.vcxproj index 3b287857..32578711 100644 --- a/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2019.vcxproj b/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2019.vcxproj index 0dbc10b4..628c79e4 100644 --- a/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2022.vcxproj b/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2022.vcxproj index a542b62d..46955d15 100644 --- a/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/ptxjit/ptxjit_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/simpleCudaGraphs/Makefile b/Samples/3_CUDA_Features/simpleCudaGraphs/Makefile index dd707ab6..4d10e5b1 100644 --- a/Samples/3_CUDA_Features/simpleCudaGraphs/Makefile +++ b/Samples/3_CUDA_Features/simpleCudaGraphs/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/3_CUDA_Features/simpleCudaGraphs/README.md b/Samples/3_CUDA_Features/simpleCudaGraphs/README.md index 1e32f53c..22236fea 100644 --- a/Samples/3_CUDA_Features/simpleCudaGraphs/README.md +++ b/Samples/3_CUDA_Features/simpleCudaGraphs/README.md @@ -25,7 +25,7 @@ cudaGraphClone, cudaExtent, cudaGraphLaunch, cudaStreamCreate, cudaLaunchHostFun ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2017.vcxproj b/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2017.vcxproj index db5b7521..084e2253 100644 --- a/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2019.vcxproj b/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2019.vcxproj index a72d8b6c..3d1c01c8 100644 --- a/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2022.vcxproj b/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2022.vcxproj index 2fddecbb..6ad0eea7 100644 --- a/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/simpleCudaGraphs/simpleCudaGraphs_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/tf32TensorCoreGemm/Makefile b/Samples/3_CUDA_Features/tf32TensorCoreGemm/Makefile index 60d69051..90f9badd 100644 --- a/Samples/3_CUDA_Features/tf32TensorCoreGemm/Makefile +++ b/Samples/3_CUDA_Features/tf32TensorCoreGemm/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -311,13 +315,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 51000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.1.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.1.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.1.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/tf32TensorCoreGemm/README.md b/Samples/3_CUDA_Features/tf32TensorCoreGemm/README.md index 7c4149fc..017ed53b 100644 --- a/Samples/3_CUDA_Features/tf32TensorCoreGemm/README.md +++ b/Samples/3_CUDA_Features/tf32TensorCoreGemm/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaGetErrorString, cudaGetLastError, cudaEventSynchronize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2017.vcxproj b/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2017.vcxproj index 98e7ecf4..61d6f6a0 100644 --- a/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2019.vcxproj b/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2019.vcxproj index a48c322a..8336b5c9 100644 --- a/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2022.vcxproj b/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2022.vcxproj index 516bc8f7..b0d7e6bc 100644 --- a/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/tf32TensorCoreGemm/tf32TensorCoreGemm_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/Makefile b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/Makefile index 1a3d2a1d..2b14baa1 100644 --- a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/Makefile +++ b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -293,13 +297,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/README.md b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/README.md index c846f6f1..8438858f 100644 --- a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/README.md +++ b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/README.md @@ -25,7 +25,7 @@ cudaMemcpy, cudaFree, cudaDeviceGetAttribute, cudaMemset, cudaMalloc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2017.vcxproj b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2017.vcxproj index 3854b6cd..a5ef5349 100644 --- a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2017.vcxproj +++ b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2019.vcxproj b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2019.vcxproj index d53654f6..b183c1c3 100644 --- a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2019.vcxproj +++ b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2022.vcxproj b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2022.vcxproj index 1ba0f2f6..b6ee288a 100644 --- a/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2022.vcxproj +++ b/Samples/3_CUDA_Features/warpAggregatedAtomicsCG/warpAggregatedAtomicsCG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2017.vcxproj index 34188c43..3dd2784a 100644 --- a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2019.vcxproj index 89babc22..7e2a0713 100644 --- a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2022.vcxproj index 97c0e4bd..647a5e8b 100644 --- a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/FilterBorderControlNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/Makefile b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/Makefile index 9dfe95dd..479027b1 100644 --- a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/Makefile +++ b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/README.md b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/README.md index 73a31788..d21737f9 100644 --- a/Samples/4_CUDA_Libraries/FilterBorderControlNPP/README.md +++ b/Samples/4_CUDA_Libraries/FilterBorderControlNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaDeviceReset, cudaSetDevice, cudaGetDeviceCount, cudaD ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/Makefile b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/Makefile index 9def65c4..4f3844c1 100644 --- a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/Makefile +++ b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2017.vcxproj b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2017.vcxproj index e7a27219..f33351d6 100644 --- a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2019.vcxproj b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2019.vcxproj index 2aea576e..858e5fb4 100644 --- a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2022.vcxproj b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2022.vcxproj index ab4e2473..48739f26 100644 --- a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/MersenneTwisterGP11213_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/README.md b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/README.md index dbd4ed70..907b0169 100644 --- a/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/README.md +++ b/Samples/4_CUDA_Libraries/MersenneTwisterGP11213/README.md @@ -30,7 +30,7 @@ cudaStreamCreateWithFlags, cudaStreamDestroy, cudaFree, cudaMallocHost, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/batchCUBLAS/Makefile b/Samples/4_CUDA_Libraries/batchCUBLAS/Makefile index ba14106d..81b4d51b 100644 --- a/Samples/4_CUDA_Libraries/batchCUBLAS/Makefile +++ b/Samples/4_CUDA_Libraries/batchCUBLAS/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/batchCUBLAS/README.md b/Samples/4_CUDA_Libraries/batchCUBLAS/README.md index 9cb405c3..c9573303 100644 --- a/Samples/4_CUDA_Libraries/batchCUBLAS/README.md +++ b/Samples/4_CUDA_Libraries/batchCUBLAS/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaGetLastError, cudaDeviceSynchroniz ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2017.vcxproj b/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2017.vcxproj index adfdd854..8ef7d08d 100644 --- a/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2019.vcxproj b/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2019.vcxproj index ddd858d0..b9db1c6f 100644 --- a/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2022.vcxproj b/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2022.vcxproj index 99aea34a..0c412838 100644 --- a/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/batchCUBLAS/batchCUBLAS_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/Makefile b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/Makefile index e6ee70d9..d984775a 100644 --- a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/Makefile +++ b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/README.md b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/README.md index f02adba0..b4d2969d 100644 --- a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/README.md +++ b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaMallocPitch, cudaFree, cudaDeviceGetAttribute, cudaMa ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2017.vcxproj index 9de10a67..5c083700 100644 --- a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2019.vcxproj index 785f076d..9f2463fa 100644 --- a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2022.vcxproj index 81f69862..08c25be5 100644 --- a/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/batchedLabelMarkersAndLabelCompressionNPP/batchedLabelMarkersAndLabelCompressionNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/boxFilterNPP/Makefile b/Samples/4_CUDA_Libraries/boxFilterNPP/Makefile index 946fbb03..64fcaacd 100644 --- a/Samples/4_CUDA_Libraries/boxFilterNPP/Makefile +++ b/Samples/4_CUDA_Libraries/boxFilterNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/boxFilterNPP/README.md b/Samples/4_CUDA_Libraries/boxFilterNPP/README.md index 19e9b6d6..84f2ea24 100644 --- a/Samples/4_CUDA_Libraries/boxFilterNPP/README.md +++ b/Samples/4_CUDA_Libraries/boxFilterNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaDriverGetVersion ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2017.vcxproj index cbd52704..6eb1bf42 100644 --- a/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2019.vcxproj index e13675ab..5bf26b90 100644 --- a/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2022.vcxproj index 71688dea..e5f328a0 100644 --- a/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/boxFilterNPP/boxFilterNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/Makefile b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/Makefile index 7618723d..1b99eafc 100644 --- a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/Makefile +++ b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/README.md b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/README.md index ed98a54b..080aa680 100644 --- a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/README.md +++ b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaFree, cudaSetDevice, cudaGetDeviceCount, cudaDeviceIn ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2017.vcxproj index 52ae86c2..9eba59c0 100644 --- a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2019.vcxproj index f9bcb4f3..abddb382 100644 --- a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2022.vcxproj index 4a074347..87caf0ef 100644 --- a/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/cannyEdgeDetectorNPP/cannyEdgeDetectorNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradient/Makefile b/Samples/4_CUDA_Libraries/conjugateGradient/Makefile index dcf16b37..adbd1e65 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradient/Makefile +++ b/Samples/4_CUDA_Libraries/conjugateGradient/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/conjugateGradient/README.md b/Samples/4_CUDA_Libraries/conjugateGradient/README.md index 3cd2d6f0..dd76befa 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradient/README.md +++ b/Samples/4_CUDA_Libraries/conjugateGradient/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMalloc, cudaGetDeviceProperties ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2017.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2017.vcxproj index c1a84827..760356cd 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2019.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2019.vcxproj index 6bc9bedc..59e3fc33 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2022.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2022.vcxproj index a2f7aeae..b7c11406 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradient/conjugateGradient_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/Makefile b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/Makefile index 49d8e4cd..023e2778 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/Makefile +++ b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/README.md b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/README.md index 1a99bfd3..d3b0df6b 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/README.md +++ b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/README.md @@ -30,7 +30,7 @@ cudaGraphInstantiate, cudaStreamDestroy, cudaStreamBeginCapture, cudaFree, cudaM ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2017.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2017.vcxproj index 84187cf3..0dd57299 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2019.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2019.vcxproj index 8cefc49d..9ad9432b 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2022.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2022.vcxproj index 73463279..dfe48063 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientCudaGraphs/conjugateGradientCudaGraphs_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/Makefile b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/Makefile index ff6a665b..5feec116 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/Makefile +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -311,13 +315,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/README.md b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/README.md index d8f41886..f1328c74 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/README.md +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/README.md @@ -30,7 +30,7 @@ cudaFree, cudaMallocManaged, cudaDeviceSynchronize, cudaEventRecord, cudaLaunchC ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2017.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2017.vcxproj index b7207afa..5d789ae8 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2019.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2019.vcxproj index 02043841..084a21ce 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2022.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2022.vcxproj index 472222d1..77d76189 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiBlockCG/conjugateGradientMultiBlockCG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/Makefile b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/Makefile index 186c74ba..960c7f81 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/Makefile +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -311,13 +315,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/README.md b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/README.md index 7b1d41f9..d13bf9eb 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/README.md +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/README.md @@ -30,7 +30,7 @@ cudaHostAlloc, cudaMemPrefetchAsync, cudaFree, cudaLaunchCooperativeKernel, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2017.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2017.vcxproj index 40e0855c..a076d7ad 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2019.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2019.vcxproj index 703e8c8e..ae89e959 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2022.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2022.vcxproj index a3f3ed86..38702f04 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientMultiDeviceCG/conjugateGradientMultiDeviceCG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/Makefile b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/Makefile index c6912938..a8439da7 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/Makefile +++ b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/README.md b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/README.md index dcf2c72c..ae502c7b 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/README.md +++ b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaMemset, cudaMalloc, cudaGetDeviceProperties ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2017.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2017.vcxproj index 5f15ddd2..a1197849 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2019.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2019.vcxproj index 017ed947..99ed0d2a 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2022.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2022.vcxproj index baed9621..4e8041b3 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientPrecond/conjugateGradientPrecond_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientUM/Makefile b/Samples/4_CUDA_Libraries/conjugateGradientUM/Makefile index b51265b4..aef6a0d5 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientUM/Makefile +++ b/Samples/4_CUDA_Libraries/conjugateGradientUM/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/conjugateGradientUM/README.md b/Samples/4_CUDA_Libraries/conjugateGradientUM/README.md index c58be9d5..5c9825dd 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientUM/README.md +++ b/Samples/4_CUDA_Libraries/conjugateGradientUM/README.md @@ -28,7 +28,7 @@ cudaFree, cudaMallocManaged, cudaDeviceSynchronize, cudaMalloc, cudaGetDevicePro ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2017.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2017.vcxproj index 8797b19d..d4328f03 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2019.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2019.vcxproj index 29f9acae..25bc92b7 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2022.vcxproj b/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2022.vcxproj index 9552f8a4..3f58b0bc 100644 --- a/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/conjugateGradientUM/conjugateGradientUM_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuDLAErrorReporting/Makefile b/Samples/4_CUDA_Libraries/cuDLAErrorReporting/Makefile index 01b321d9..02d79f4a 100644 --- a/Samples/4_CUDA_Libraries/cuDLAErrorReporting/Makefile +++ b/Samples/4_CUDA_Libraries/cuDLAErrorReporting/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -319,13 +323,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/cuDLAErrorReporting/README.md b/Samples/4_CUDA_Libraries/cuDLAErrorReporting/README.md index bfd709b3..82e0bbab 100644 --- a/Samples/4_CUDA_Libraries/cuDLAErrorReporting/README.md +++ b/Samples/4_CUDA_Libraries/cuDLAErrorReporting/README.md @@ -27,7 +27,7 @@ cudaStreamCreateWithFlags, cudaStreamDestroy, cudaFree, cudaGetErrorName, cudaSe ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuDLAHybridMode/Makefile b/Samples/4_CUDA_Libraries/cuDLAHybridMode/Makefile index 78f340b0..26f3645e 100644 --- a/Samples/4_CUDA_Libraries/cuDLAHybridMode/Makefile +++ b/Samples/4_CUDA_Libraries/cuDLAHybridMode/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -319,13 +323,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/cuDLAHybridMode/README.md b/Samples/4_CUDA_Libraries/cuDLAHybridMode/README.md index ef64db87..f90fedd9 100644 --- a/Samples/4_CUDA_Libraries/cuDLAHybridMode/README.md +++ b/Samples/4_CUDA_Libraries/cuDLAHybridMode/README.md @@ -27,7 +27,7 @@ cudaStreamCreateWithFlags, cudaStreamDestroy, cudaFree, cudaGetErrorName, cudaSe ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/Makefile b/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/Makefile index 46d6e269..be7d600a 100644 --- a/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/Makefile +++ b/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -322,13 +326,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/README.md b/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/README.md index 2d470596..14c03834 100644 --- a/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/README.md +++ b/Samples/4_CUDA_Libraries/cuDLAStandaloneMode/README.md @@ -27,7 +27,7 @@ aarch64 ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/Makefile b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/Makefile index 34068b62..6218c90d 100644 --- a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/Makefile +++ b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/README.md b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/README.md index f56a6014..8f915355 100644 --- a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/README.md +++ b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaStreamDestroy, cudaFree, cudaDeviceSynchronize, cudaMemset, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2017.vcxproj b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2017.vcxproj index 558c2ada..c3be8c99 100644 --- a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2019.vcxproj b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2019.vcxproj index 10447c20..53d54690 100644 --- a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2022.vcxproj b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2022.vcxproj index 013b96b2..e36e43c4 100644 --- a/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverDn_LinearSolver/cuSolverDn_LinearSolver_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverRf/Makefile b/Samples/4_CUDA_Libraries/cuSolverRf/Makefile index 770ae2c8..647f7558 100644 --- a/Samples/4_CUDA_Libraries/cuSolverRf/Makefile +++ b/Samples/4_CUDA_Libraries/cuSolverRf/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/cuSolverRf/README.md b/Samples/4_CUDA_Libraries/cuSolverRf/README.md index b1e02828..376f480e 100644 --- a/Samples/4_CUDA_Libraries/cuSolverRf/README.md +++ b/Samples/4_CUDA_Libraries/cuSolverRf/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaStreamDestroy, cudaFree, cudaDeviceSynchronize, cudaMalloc, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2017.vcxproj b/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2017.vcxproj index 860396af..253f20e5 100644 --- a/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2019.vcxproj b/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2019.vcxproj index 6a7b2322..5794b1f1 100644 --- a/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2022.vcxproj b/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2022.vcxproj index 80869af9..d50ffab0 100644 --- a/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverRf/cuSolverRf_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/Makefile b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/Makefile index 600ec487..df3ebf35 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/Makefile +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/README.md b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/README.md index e47596c0..8d14fb50 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/README.md +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/README.md @@ -33,7 +33,7 @@ cudaStreamDestroy, cudaFree, cudaDeviceSynchronize, cudaMalloc, cudaStreamCreate ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2017.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2017.vcxproj index c9168e72..ee3d3c86 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2019.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2019.vcxproj index 71ba7660..fb01dd22 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2022.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2022.vcxproj index e9af4359..281384f9 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LinearSolver/cuSolverSp_LinearSolver_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/Makefile b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/Makefile index 2e075354..65266657 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/Makefile +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/README.md b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/README.md index c5097e47..774f403a 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/README.md +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaStreamDestroy, cudaFree, cudaMalloc, cudaStreamCreate ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2017.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2017.vcxproj index e8f7d02b..5bc63255 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2019.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2019.vcxproj index 153975fe..fccf03f4 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2022.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2022.vcxproj index 093f5990..91a9deac 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelCholesky/cuSolverSp_LowlevelCholesky_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/Makefile b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/Makefile index 6b18cec5..85adca6f 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/Makefile +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/README.md b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/README.md index 66803d5f..b639e77c 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/README.md +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/README.md @@ -33,7 +33,7 @@ cudaMemcpy, cudaStreamDestroy, cudaFree, cudaMalloc, cudaStreamCreate ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2017.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2017.vcxproj index e97fce19..b8c1560a 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2019.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2019.vcxproj index 4249182e..681b1093 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2022.vcxproj b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2022.vcxproj index 5577843e..63a52c54 100644 --- a/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/cuSolverSp_LowlevelQR/cuSolverSp_LowlevelQR_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/cudaNvSci/Makefile b/Samples/4_CUDA_Libraries/cudaNvSci/Makefile index 6f77efed..9fed51ff 100644 --- a/Samples/4_CUDA_Libraries/cudaNvSci/Makefile +++ b/Samples/4_CUDA_Libraries/cudaNvSci/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -316,13 +320,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/cudaNvSci/README.md b/Samples/4_CUDA_Libraries/cudaNvSci/README.md index eaffc19d..81a1faf4 100644 --- a/Samples/4_CUDA_Libraries/cudaNvSci/README.md +++ b/Samples/4_CUDA_Libraries/cudaNvSci/README.md @@ -33,7 +33,7 @@ cudaExternalMemoryGetMappedBuffer, cudaImportExternalSemaphore, cudaDeviceGetAtt ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/Makefile b/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/Makefile index 88b6c965..48ccd9de 100644 --- a/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/Makefile +++ b/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -327,13 +331,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/README.md b/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/README.md index 41c02e51..4dde5eb5 100644 --- a/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/README.md +++ b/Samples/4_CUDA_Libraries/cudaNvSciNvMedia/README.md @@ -33,7 +33,7 @@ cudaImportExternalSemaphore, cudaGetMipmappedArrayLevel, cudaSetDevice, cudaDest ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/freeImageInteropNPP/Makefile b/Samples/4_CUDA_Libraries/freeImageInteropNPP/Makefile index 06c77bca..b3c105ad 100644 --- a/Samples/4_CUDA_Libraries/freeImageInteropNPP/Makefile +++ b/Samples/4_CUDA_Libraries/freeImageInteropNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/freeImageInteropNPP/README.md b/Samples/4_CUDA_Libraries/freeImageInteropNPP/README.md index d7f8dcd8..7f457c8c 100644 --- a/Samples/4_CUDA_Libraries/freeImageInteropNPP/README.md +++ b/Samples/4_CUDA_Libraries/freeImageInteropNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaSetDevice, cudaGetDeviceCount, cudaDeviceInit, cudaDr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2017.vcxproj index 42958754..323eb853 100644 --- a/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2019.vcxproj index b59cb8e9..c5c12d4c 100644 --- a/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2022.vcxproj index d4b6acfd..34301adb 100644 --- a/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/freeImageInteropNPP/freeImageInteropNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/histEqualizationNPP/Makefile b/Samples/4_CUDA_Libraries/histEqualizationNPP/Makefile index a74c1ad3..a3c4248c 100644 --- a/Samples/4_CUDA_Libraries/histEqualizationNPP/Makefile +++ b/Samples/4_CUDA_Libraries/histEqualizationNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/histEqualizationNPP/README.md b/Samples/4_CUDA_Libraries/histEqualizationNPP/README.md index ed68653a..edb5ab67 100644 --- a/Samples/4_CUDA_Libraries/histEqualizationNPP/README.md +++ b/Samples/4_CUDA_Libraries/histEqualizationNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaMemcpy, cudaFree, cudaSetDevice, cudaGetDeviceCount, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2017.vcxproj index 22eab902..453b2b6c 100644 --- a/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2019.vcxproj index 9574fee3..3b5f6e95 100644 --- a/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2022.vcxproj index b0f5eca8..dbf5b368 100644 --- a/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/histEqualizationNPP/histEqualizationNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/jitLto/Makefile b/Samples/4_CUDA_Libraries/jitLto/Makefile index 569238b6..552eb2e8 100644 --- a/Samples/4_CUDA_Libraries/jitLto/Makefile +++ b/Samples/4_CUDA_Libraries/jitLto/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/jitLto/README.md b/Samples/4_CUDA_Libraries/jitLto/README.md index afc1e174..e3945ad2 100644 --- a/Samples/4_CUDA_Libraries/jitLto/README.md +++ b/Samples/4_CUDA_Libraries/jitLto/README.md @@ -30,7 +30,7 @@ cuModuleLoad, cuModuleLoadDataEx, cuModuleGetFunction, cuMemAlloc, cuMemFree, cu ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2017.vcxproj b/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2017.vcxproj index 1340c2ab..acc084e6 100644 --- a/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2019.vcxproj b/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2019.vcxproj index 6079a67a..a5204787 100644 --- a/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2022.vcxproj b/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2022.vcxproj index 347a014c..ee43acb1 100644 --- a/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/jitLto/jitLto_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/lineOfSight/Makefile b/Samples/4_CUDA_Libraries/lineOfSight/Makefile index d47962d8..54011cbd 100644 --- a/Samples/4_CUDA_Libraries/lineOfSight/Makefile +++ b/Samples/4_CUDA_Libraries/lineOfSight/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -293,13 +297,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/lineOfSight/README.md b/Samples/4_CUDA_Libraries/lineOfSight/README.md index ea9e8e82..d33d5f0b 100644 --- a/Samples/4_CUDA_Libraries/lineOfSight/README.md +++ b/Samples/4_CUDA_Libraries/lineOfSight/README.md @@ -27,7 +27,7 @@ cudaCreateChannelDesc, cudaMallocArray, cudaFreeArray, cudaDeviceSynchronize, cu ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2017.vcxproj b/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2017.vcxproj index 31a61313..56438e4d 100644 --- a/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2019.vcxproj b/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2019.vcxproj index ecb4d97e..a255bc3f 100644 --- a/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2022.vcxproj b/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2022.vcxproj index 51675e91..e9bb05fd 100644 --- a/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/lineOfSight/lineOfSight_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/Makefile b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/Makefile index 4a084974..c781defa 100644 --- a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/Makefile +++ b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/README.md b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/README.md index 7789e5ec..d28bc127 100644 --- a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/README.md +++ b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaEventSynchronize, cudaEventRecord, cudaMalloc, cudaEve ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2017.vcxproj b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2017.vcxproj index 51be48cb..e05541f6 100644 --- a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2019.vcxproj b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2019.vcxproj index 0d8e2e09..715d055e 100644 --- a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2022.vcxproj b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2022.vcxproj index 47eebd46..47d5ecb6 100644 --- a/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/matrixMulCUBLAS/matrixMulCUBLAS_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/nvJPEG/Makefile b/Samples/4_CUDA_Libraries/nvJPEG/Makefile index b3a4092a..473813f5 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG/Makefile +++ b/Samples/4_CUDA_Libraries/nvJPEG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/nvJPEG/README.md b/Samples/4_CUDA_Libraries/nvJPEG/README.md index cd3ae33c..967febe7 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG/README.md +++ b/Samples/4_CUDA_Libraries/nvJPEG/README.md @@ -28,7 +28,7 @@ cudaHostAlloc, cudaStreamCreateWithFlags, cudaStreamDestroy, cudaFree, cudaEvent ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2017.vcxproj b/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2017.vcxproj index 4dee5bae..73a7e630 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2019.vcxproj b/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2019.vcxproj index 8b3a410a..40f1024a 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2022.vcxproj b/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2022.vcxproj index 095ca4d3..cfd4601b 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/nvJPEG/nvJPEG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/nvJPEG_encoder/Makefile b/Samples/4_CUDA_Libraries/nvJPEG_encoder/Makefile index 433ba36d..ed4cfe5a 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG_encoder/Makefile +++ b/Samples/4_CUDA_Libraries/nvJPEG_encoder/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/nvJPEG_encoder/README.md b/Samples/4_CUDA_Libraries/nvJPEG_encoder/README.md index 4c4348dd..fb6fa437 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG_encoder/README.md +++ b/Samples/4_CUDA_Libraries/nvJPEG_encoder/README.md @@ -28,7 +28,7 @@ cudaFree, cudaGetErrorString, cudaEventSynchronize, cudaDeviceSynchronize, cudaE ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2017.vcxproj b/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2017.vcxproj index 07163d6f..5ffdd318 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2019.vcxproj b/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2019.vcxproj index 17eb1f74..cc342f13 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2022.vcxproj b/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2022.vcxproj index 849cff3a..62b1b273 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/nvJPEG_encoder/nvJPEG_encoder_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/oceanFFT/Makefile b/Samples/4_CUDA_Libraries/oceanFFT/Makefile index 7bc87e12..77705a1f 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/Makefile +++ b/Samples/4_CUDA_Libraries/oceanFFT/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/oceanFFT/README.md b/Samples/4_CUDA_Libraries/oceanFFT/README.md index 126937ca..19b898ee 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/README.md +++ b/Samples/4_CUDA_Libraries/oceanFFT/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMalloc, cudaFree, cudaGraphicsResour ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2017.vcxproj b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2017.vcxproj index bf4b9314..e82f23a7 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2019.vcxproj b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2019.vcxproj index f5d25bca..e27adfbf 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2022.vcxproj b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2022.vcxproj index 70604eba..1794e534 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/randomFog/Makefile b/Samples/4_CUDA_Libraries/randomFog/Makefile index a36c55b9..8c96318c 100644 --- a/Samples/4_CUDA_Libraries/randomFog/Makefile +++ b/Samples/4_CUDA_Libraries/randomFog/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/randomFog/README.md b/Samples/4_CUDA_Libraries/randomFog/README.md index cd966e1d..ed5db2f7 100644 --- a/Samples/4_CUDA_Libraries/randomFog/README.md +++ b/Samples/4_CUDA_Libraries/randomFog/README.md @@ -30,7 +30,7 @@ cudaMalloc, cudaGetErrorString, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2017.vcxproj b/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2017.vcxproj index 3b2ccac9..c00757d2 100644 --- a/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2019.vcxproj b/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2019.vcxproj index 2a8fc3e4..7e458ac3 100644 --- a/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2022.vcxproj b/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2022.vcxproj index 9300e63a..90c88269 100644 --- a/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/randomFog/randomFog_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS/Makefile b/Samples/4_CUDA_Libraries/simpleCUBLAS/Makefile index 265cbf6e..63225a72 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS/README.md b/Samples/4_CUDA_Libraries/simpleCUBLAS/README.md index 0822a607..7a2c6b1c 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS/README.md @@ -30,7 +30,7 @@ cudaMalloc, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2017.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2017.vcxproj index 6197cba8..4ed9e2c3 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2019.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2019.vcxproj index 28534041..7dada838 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2022.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2022.vcxproj index e22e0614..62da6376 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS/simpleCUBLAS_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLASXT/Makefile b/Samples/4_CUDA_Libraries/simpleCUBLASXT/Makefile index 17861fdb..f892667c 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLASXT/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUBLASXT/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/simpleCUBLASXT/README.md b/Samples/4_CUDA_Libraries/simpleCUBLASXT/README.md index 489166ff..5879c6ca 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLASXT/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUBLASXT/README.md @@ -30,7 +30,7 @@ cudaGetDeviceProperties, cudaGetDeviceCount, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2017.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2017.vcxproj index c82ed81d..8e3368e5 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2019.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2019.vcxproj index 61ad0626..e9f3c8d5 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2022.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2022.vcxproj index f86b1573..94c86af3 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLASXT/simpleCUBLASXT_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/Makefile b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/Makefile index 090bf928..461a74cf 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/README.md b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/README.md index ff2e52d4..065e275d 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/README.md @@ -30,7 +30,7 @@ cudaGetErrorEnum, cudaMalloc, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2017.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2017.vcxproj index 0a2e4933..07df03e3 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2019.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2019.vcxproj index f779be76..c9c5387d 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2022.vcxproj b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2022.vcxproj index d46150a6..72501137 100644 --- a/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUBLAS_LU/simpleCUBLAS_LU_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT/Makefile b/Samples/4_CUDA_Libraries/simpleCUFFT/Makefile index b3d1f3b4..4e209436 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUFFT/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT/README.md b/Samples/4_CUDA_Libraries/simpleCUFFT/README.md index 3000efc1..5ef5cc12 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUFFT/README.md @@ -30,7 +30,7 @@ cudaMalloc, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2017.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2017.vcxproj index 7d39b97c..742f995c 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2019.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2019.vcxproj index 2ef0a9b5..84101529 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2022.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2022.vcxproj index 201c44ae..38ab9082 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT/simpleCUFFT_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/Makefile b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/Makefile index aa01b2d0..15a3c68a 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/README.md b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/README.md index 8e88d0e2..05aa7827 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/README.md @@ -30,7 +30,7 @@ cudaXtFree, cudaMemcpy, cudaFree, cudaSetDevice, cudaGetDeviceCount, cudaDeviceS ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2017.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2017.vcxproj index b18f1e13..0a904f94 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2019.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2019.vcxproj index 96ded58c..a54f8eb7 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2022.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2022.vcxproj index f9f36aaa..7723193e 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_2d_MGPU/simpleCUFFT_2d_MGPU_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/Makefile b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/Makefile index 179972b5..eb4c0c36 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/README.md b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/README.md index d248b545..dfe484b4 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/README.md @@ -30,7 +30,7 @@ cudaXtFree, cudaSetDevice, cudaGetDeviceCount, cudaDeviceSynchronize, cudaGetDev ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2017.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2017.vcxproj index 91724d9a..006bbdd1 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2019.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2019.vcxproj index 3c859830..02dccdbe 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2022.vcxproj b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2022.vcxproj index 93239a54..cceafbcb 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_MGPU/simpleCUFFT_MGPU_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_callback/Makefile b/Samples/4_CUDA_Libraries/simpleCUFFT_callback/Makefile index 68137ddb..475d93ae 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_callback/Makefile +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_callback/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -305,13 +309,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 53000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.3.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.3.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.3.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/4_CUDA_Libraries/simpleCUFFT_callback/README.md b/Samples/4_CUDA_Libraries/simpleCUFFT_callback/README.md index 6c042531..ccd39361 100644 --- a/Samples/4_CUDA_Libraries/simpleCUFFT_callback/README.md +++ b/Samples/4_CUDA_Libraries/simpleCUFFT_callback/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaMemcpyFromSymbol, cudaGetDevice, cudaMalloc, cudaGetDe ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/Makefile b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/Makefile index 388c59b0..5379fcf7 100644 --- a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/Makefile +++ b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/README.md b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/README.md index ebf0e769..ae433939 100644 --- a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/README.md +++ b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaFree, cudaDeviceGetAttribute, cudaDriverGetVersion, c ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2017.vcxproj b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2017.vcxproj index ea8367ba..82cacddd 100644 --- a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2017.vcxproj +++ b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2019.vcxproj b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2019.vcxproj index c3cffafb..0784ae67 100644 --- a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2019.vcxproj +++ b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2022.vcxproj b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2022.vcxproj index 3ac4b3c0..40d09bda 100644 --- a/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2022.vcxproj +++ b/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2017.vcxproj b/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2017.vcxproj index 23d6c3a1..9ca2e016 100644 --- a/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2019.vcxproj b/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2019.vcxproj index f8aa72a2..19c1b01a 100644 --- a/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2022.vcxproj b/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2022.vcxproj index d63c011d..9f3de55c 100644 --- a/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/BlackScholes/BlackScholes_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes/Makefile b/Samples/5_Domain_Specific/BlackScholes/Makefile index c6d1114a..c5886311 100644 --- a/Samples/5_Domain_Specific/BlackScholes/Makefile +++ b/Samples/5_Domain_Specific/BlackScholes/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/BlackScholes/README.md b/Samples/5_Domain_Specific/BlackScholes/README.md index 4ff3b247..cdd877d2 100644 --- a/Samples/5_Domain_Specific/BlackScholes/README.md +++ b/Samples/5_Domain_Specific/BlackScholes/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaDeviceSynchronize, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2017.vcxproj b/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2017.vcxproj index 04e067a0..51c79bca 100644 --- a/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2019.vcxproj b/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2019.vcxproj index c8342eec..3f2b2559 100644 --- a/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2022.vcxproj b/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2022.vcxproj index e1d99b31..b79a4ff7 100644 --- a/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/BlackScholes_nvrtc/BlackScholes_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/5_Domain_Specific/BlackScholes_nvrtc/Makefile b/Samples/5_Domain_Specific/BlackScholes_nvrtc/Makefile index d1a2a29a..c2b6f52b 100644 --- a/Samples/5_Domain_Specific/BlackScholes_nvrtc/Makefile +++ b/Samples/5_Domain_Specific/BlackScholes_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/BlackScholes_nvrtc/README.md b/Samples/5_Domain_Specific/BlackScholes_nvrtc/README.md index 1a769a88..a196e917 100644 --- a/Samples/5_Domain_Specific/BlackScholes_nvrtc/README.md +++ b/Samples/5_Domain_Specific/BlackScholes_nvrtc/README.md @@ -33,7 +33,7 @@ cudaBlockSize, cudaGridSize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2017.vcxproj b/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2017.vcxproj index 7bbfc21c..fb0a373b 100644 --- a/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2019.vcxproj b/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2019.vcxproj index f912c2cf..7173bba3 100644 --- a/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2022.vcxproj b/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2022.vcxproj index 8c3bc416..bab091f6 100644 --- a/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/FDTD3d/FDTD3d_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/FDTD3d/Makefile b/Samples/5_Domain_Specific/FDTD3d/Makefile index e57c639f..588f9bee 100644 --- a/Samples/5_Domain_Specific/FDTD3d/Makefile +++ b/Samples/5_Domain_Specific/FDTD3d/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/FDTD3d/README.md b/Samples/5_Domain_Specific/FDTD3d/README.md index d26c46f3..6af21d46 100644 --- a/Samples/5_Domain_Specific/FDTD3d/README.md +++ b/Samples/5_Domain_Specific/FDTD3d/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaMalloc, cudaFree, cudaFuncGetAttributes, cudaSetDevice, cudaGetD ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2017.vcxproj b/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2017.vcxproj index 6157aee6..ed3e2653 100644 --- a/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2019.vcxproj b/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2019.vcxproj index 2f4b5aa5..61fccee6 100644 --- a/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2022.vcxproj b/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2022.vcxproj index 51553971..c453a97a 100644 --- a/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/HSOpticalFlow/HSOpticalFlow_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/HSOpticalFlow/Makefile b/Samples/5_Domain_Specific/HSOpticalFlow/Makefile index 54b71869..e532ed87 100644 --- a/Samples/5_Domain_Specific/HSOpticalFlow/Makefile +++ b/Samples/5_Domain_Specific/HSOpticalFlow/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/HSOpticalFlow/README.md b/Samples/5_Domain_Specific/HSOpticalFlow/README.md index 396edfe1..468368c7 100644 --- a/Samples/5_Domain_Specific/HSOpticalFlow/README.md +++ b/Samples/5_Domain_Specific/HSOpticalFlow/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaMemcpy, cudaMemset, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/Mandelbrot/Makefile b/Samples/5_Domain_Specific/Mandelbrot/Makefile index 10d7697f..b03fedea 100644 --- a/Samples/5_Domain_Specific/Mandelbrot/Makefile +++ b/Samples/5_Domain_Specific/Mandelbrot/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2017.vcxproj b/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2017.vcxproj index f694cd5b..5645aac9 100644 --- a/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -121,6 +121,6 @@ - + diff --git a/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2019.vcxproj b/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2019.vcxproj index 56db94dd..56f126c2 100644 --- a/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2022.vcxproj b/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2022.vcxproj index a0c4dc57..69798a71 100644 --- a/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/Mandelbrot/Mandelbrot_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/Mandelbrot/README.md b/Samples/5_Domain_Specific/Mandelbrot/README.md index 7cb72683..47f6b620 100644 --- a/Samples/5_Domain_Specific/Mandelbrot/README.md +++ b/Samples/5_Domain_Specific/Mandelbrot/README.md @@ -30,7 +30,7 @@ cudaGLUnmapBufferObject, cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaG ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/MonteCarloMultiGPU/Makefile b/Samples/5_Domain_Specific/MonteCarloMultiGPU/Makefile index ada171fd..f608ae9a 100644 --- a/Samples/5_Domain_Specific/MonteCarloMultiGPU/Makefile +++ b/Samples/5_Domain_Specific/MonteCarloMultiGPU/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2017.vcxproj b/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2017.vcxproj index 83362d31..81a10826 100644 --- a/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2019.vcxproj b/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2019.vcxproj index 40000671..c8a75a8e 100644 --- a/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2022.vcxproj b/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2022.vcxproj index 07c06b71..dd33f24e 100644 --- a/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/MonteCarloMultiGPU/MonteCarloMultiGPU_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/MonteCarloMultiGPU/README.md b/Samples/5_Domain_Specific/MonteCarloMultiGPU/README.md index 47820c9a..e37fcad6 100644 --- a/Samples/5_Domain_Specific/MonteCarloMultiGPU/README.md +++ b/Samples/5_Domain_Specific/MonteCarloMultiGPU/README.md @@ -30,7 +30,7 @@ cudaStreamDestroy, cudaMalloc, cudaFree, cudaMallocHost, cudaSetDevice, cudaEven ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/NV12toBGRandResize/Makefile b/Samples/5_Domain_Specific/NV12toBGRandResize/Makefile index 71ff90a9..121a70cb 100644 --- a/Samples/5_Domain_Specific/NV12toBGRandResize/Makefile +++ b/Samples/5_Domain_Specific/NV12toBGRandResize/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2017.vcxproj b/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2017.vcxproj index c83c724e..71c27dcf 100644 --- a/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2019.vcxproj b/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2019.vcxproj index 220d7387..8a0eb5e2 100644 --- a/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2022.vcxproj b/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2022.vcxproj index 494f5bd4..06621a4b 100644 --- a/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/NV12toBGRandResize/NV12toBGRandResize_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/NV12toBGRandResize/README.md b/Samples/5_Domain_Specific/NV12toBGRandResize/README.md index 4084b9e0..1e49cb79 100644 --- a/Samples/5_Domain_Specific/NV12toBGRandResize/README.md +++ b/Samples/5_Domain_Specific/NV12toBGRandResize/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaStreamDestroy, cudaMalloc, cudaFree, cudaMallocManaged, cudaStre ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/SLID3D10Texture/README.md b/Samples/5_Domain_Specific/SLID3D10Texture/README.md index 9e2d20f3..d29ac3c8 100644 --- a/Samples/5_Domain_Specific/SLID3D10Texture/README.md +++ b/Samples/5_Domain_Specific/SLID3D10Texture/README.md @@ -33,7 +33,7 @@ cudaGraphicsUnmapResources, cudaMalloc, cudaMallocPitch, cudaGetErrorString, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2017.vcxproj b/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2017.vcxproj index 042681f9..84219b39 100644 --- a/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2019.vcxproj b/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2019.vcxproj index cf78a7b7..016f519a 100644 --- a/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2022.vcxproj b/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2022.vcxproj index 22da3f2f..f86f420e 100644 --- a/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/SLID3D10Texture/SLID3D10Texture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/SobelFilter/Makefile b/Samples/5_Domain_Specific/SobelFilter/Makefile index dd95faa4..380500b4 100644 --- a/Samples/5_Domain_Specific/SobelFilter/Makefile +++ b/Samples/5_Domain_Specific/SobelFilter/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/SobelFilter/README.md b/Samples/5_Domain_Specific/SobelFilter/README.md index 99148825..01243317 100644 --- a/Samples/5_Domain_Specific/SobelFilter/README.md +++ b/Samples/5_Domain_Specific/SobelFilter/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2017.vcxproj b/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2017.vcxproj index 0ba2f4ad..103f23ee 100644 --- a/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2019.vcxproj b/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2019.vcxproj index c6c3c99a..13a4291d 100644 --- a/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2022.vcxproj b/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2022.vcxproj index b9343e50..411fd4f6 100644 --- a/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/SobelFilter/SobelFilter_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/SobolQRNG/Makefile b/Samples/5_Domain_Specific/SobolQRNG/Makefile index 0713a681..3df0f5bc 100644 --- a/Samples/5_Domain_Specific/SobolQRNG/Makefile +++ b/Samples/5_Domain_Specific/SobolQRNG/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/SobolQRNG/README.md b/Samples/5_Domain_Specific/SobolQRNG/README.md index 22d84eef..9b17e903 100644 --- a/Samples/5_Domain_Specific/SobolQRNG/README.md +++ b/Samples/5_Domain_Specific/SobolQRNG/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaGetErrorString, cudaFree, cudaDeviceSynchronize, cudaGetDevice, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2017.vcxproj b/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2017.vcxproj index ac89e88e..cc68512d 100644 --- a/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2019.vcxproj b/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2019.vcxproj index 9d6e9680..053d3abe 100644 --- a/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2022.vcxproj b/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2022.vcxproj index 22ee54a7..4cfd3998 100644 --- a/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/SobolQRNG/SobolQRNG_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/VFlockingD3D10/README.md b/Samples/5_Domain_Specific/VFlockingD3D10/README.md index 991d762e..a77d5cfe 100644 --- a/Samples/5_Domain_Specific/VFlockingD3D10/README.md +++ b/Samples/5_Domain_Specific/VFlockingD3D10/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGetErrorString, cudaGraphi ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2017.vcxproj b/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2017.vcxproj index 15f95d1f..89b47868 100644 --- a/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2019.vcxproj b/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2019.vcxproj index b774c796..89ffc9c1 100644 --- a/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2022.vcxproj b/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2022.vcxproj index 369238a0..5ebbc88c 100644 --- a/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/VFlockingD3D10/VFlockingD3D10_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/bicubicTexture/Makefile b/Samples/5_Domain_Specific/bicubicTexture/Makefile index c6dd7b4b..1fa1bae8 100644 --- a/Samples/5_Domain_Specific/bicubicTexture/Makefile +++ b/Samples/5_Domain_Specific/bicubicTexture/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/bicubicTexture/README.md b/Samples/5_Domain_Specific/bicubicTexture/README.md index 2ee1e6a7..f3335112 100644 --- a/Samples/5_Domain_Specific/bicubicTexture/README.md +++ b/Samples/5_Domain_Specific/bicubicTexture/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaCreateChannelDesc, cudaMallocArray, cudaFreeArra ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2017.vcxproj b/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2017.vcxproj index 3ef03c72..15ee6097 100644 --- a/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2019.vcxproj b/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2019.vcxproj index ddcd31e8..94c50c20 100644 --- a/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2022.vcxproj b/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2022.vcxproj index c1f7cd97..d7238544 100644 --- a/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/bicubicTexture/bicubicTexture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/bilateralFilter/Makefile b/Samples/5_Domain_Specific/bilateralFilter/Makefile index c68e76e9..4410ff33 100644 --- a/Samples/5_Domain_Specific/bilateralFilter/Makefile +++ b/Samples/5_Domain_Specific/bilateralFilter/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/bilateralFilter/README.md b/Samples/5_Domain_Specific/bilateralFilter/README.md index 29872724..23d7f4f9 100644 --- a/Samples/5_Domain_Specific/bilateralFilter/README.md +++ b/Samples/5_Domain_Specific/bilateralFilter/README.md @@ -30,7 +30,7 @@ cudaRuntimeGetVersion, cudaGraphicsUnmapResources, cudaMallocPitch, cudaFree, cu ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2017.vcxproj b/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2017.vcxproj index 56d8d940..bd7a409a 100644 --- a/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -120,6 +120,6 @@ - + diff --git a/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2019.vcxproj b/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2019.vcxproj index 8fcf3a54..e7375b10 100644 --- a/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -116,6 +116,6 @@ - + diff --git a/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2022.vcxproj b/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2022.vcxproj index e88b4502..f6aaa3db 100644 --- a/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/bilateralFilter/bilateralFilter_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -116,6 +116,6 @@ - + diff --git a/Samples/5_Domain_Specific/binomialOptions/Makefile b/Samples/5_Domain_Specific/binomialOptions/Makefile index 528a726d..7cd0426f 100644 --- a/Samples/5_Domain_Specific/binomialOptions/Makefile +++ b/Samples/5_Domain_Specific/binomialOptions/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/binomialOptions/README.md b/Samples/5_Domain_Specific/binomialOptions/README.md index ab9c87ee..2a69b255 100644 --- a/Samples/5_Domain_Specific/binomialOptions/README.md +++ b/Samples/5_Domain_Specific/binomialOptions/README.md @@ -27,7 +27,7 @@ cudaDeviceSynchronize, cudaMemcpyToSymbol, cudaMemcpyFromSymbol ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2017.vcxproj b/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2017.vcxproj index 2f979e7a..17c9de7d 100644 --- a/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2019.vcxproj b/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2019.vcxproj index a16fb04a..8af660f0 100644 --- a/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2022.vcxproj b/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2022.vcxproj index 0299743d..6461359c 100644 --- a/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/binomialOptions/binomialOptions_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/binomialOptions_nvrtc/Makefile b/Samples/5_Domain_Specific/binomialOptions_nvrtc/Makefile index 878ac2e9..1a9eca45 100644 --- a/Samples/5_Domain_Specific/binomialOptions_nvrtc/Makefile +++ b/Samples/5_Domain_Specific/binomialOptions_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/binomialOptions_nvrtc/README.md b/Samples/5_Domain_Specific/binomialOptions_nvrtc/README.md index bee0d650..749a31f1 100644 --- a/Samples/5_Domain_Specific/binomialOptions_nvrtc/README.md +++ b/Samples/5_Domain_Specific/binomialOptions_nvrtc/README.md @@ -33,7 +33,7 @@ cudaBlockSize, cudaGridSize ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2017.vcxproj b/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2017.vcxproj index 9d24f4f1..ee9e681e 100644 --- a/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2019.vcxproj b/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2019.vcxproj index e8fdfd18..ed71d2e4 100644 --- a/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2022.vcxproj b/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2022.vcxproj index ccdd6d22..812656e9 100644 --- a/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/binomialOptions_nvrtc/binomialOptions_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/convolutionFFT2D/Makefile b/Samples/5_Domain_Specific/convolutionFFT2D/Makefile index 7e24eac3..4297d56c 100644 --- a/Samples/5_Domain_Specific/convolutionFFT2D/Makefile +++ b/Samples/5_Domain_Specific/convolutionFFT2D/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/convolutionFFT2D/README.md b/Samples/5_Domain_Specific/convolutionFFT2D/README.md index ea9a8a86..498e586f 100644 --- a/Samples/5_Domain_Specific/convolutionFFT2D/README.md +++ b/Samples/5_Domain_Specific/convolutionFFT2D/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaFree, cudaDestroyTextureObject, cudaDeviceSynchronize, cudaCreat ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2017.vcxproj b/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2017.vcxproj index ab786e6d..edce641a 100644 --- a/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2019.vcxproj b/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2019.vcxproj index 67811bb7..081e25af 100644 --- a/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2022.vcxproj b/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2022.vcxproj index 506bc124..1d4862f6 100644 --- a/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/convolutionFFT2D/convolutionFFT2D_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/dwtHaar1D/Makefile b/Samples/5_Domain_Specific/dwtHaar1D/Makefile index 4bfa75ae..0ee7c65f 100644 --- a/Samples/5_Domain_Specific/dwtHaar1D/Makefile +++ b/Samples/5_Domain_Specific/dwtHaar1D/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/dwtHaar1D/README.md b/Samples/5_Domain_Specific/dwtHaar1D/README.md index 09e61ca7..1462bf56 100644 --- a/Samples/5_Domain_Specific/dwtHaar1D/README.md +++ b/Samples/5_Domain_Specific/dwtHaar1D/README.md @@ -27,7 +27,7 @@ cudaMalloc, cudaMemcpy, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2017.vcxproj b/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2017.vcxproj index b69f5f23..37d1d980 100644 --- a/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2019.vcxproj b/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2019.vcxproj index 376fbb17..bbd8e518 100644 --- a/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2022.vcxproj b/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2022.vcxproj index 6957ca87..ef3db000 100644 --- a/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/dwtHaar1D/dwtHaar1D_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/dxtc/Makefile b/Samples/5_Domain_Specific/dxtc/Makefile index 9bb10b89..1b9e06b1 100644 --- a/Samples/5_Domain_Specific/dxtc/Makefile +++ b/Samples/5_Domain_Specific/dxtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/dxtc/README.md b/Samples/5_Domain_Specific/dxtc/README.md index 27e5a426..871bf28b 100644 --- a/Samples/5_Domain_Specific/dxtc/README.md +++ b/Samples/5_Domain_Specific/dxtc/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaGetDevice, cudaMalloc, cudaGetD ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/dxtc/dxtc_vs2017.vcxproj b/Samples/5_Domain_Specific/dxtc/dxtc_vs2017.vcxproj index 3af36602..75360caa 100644 --- a/Samples/5_Domain_Specific/dxtc/dxtc_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/dxtc/dxtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/dxtc/dxtc_vs2019.vcxproj b/Samples/5_Domain_Specific/dxtc/dxtc_vs2019.vcxproj index 1e7715c7..8653c2ec 100644 --- a/Samples/5_Domain_Specific/dxtc/dxtc_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/dxtc/dxtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/dxtc/dxtc_vs2022.vcxproj b/Samples/5_Domain_Specific/dxtc/dxtc_vs2022.vcxproj index fd2937a3..69ab8968 100644 --- a/Samples/5_Domain_Specific/dxtc/dxtc_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/dxtc/dxtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/fastWalshTransform/Makefile b/Samples/5_Domain_Specific/fastWalshTransform/Makefile index ef64843d..ca79a87f 100644 --- a/Samples/5_Domain_Specific/fastWalshTransform/Makefile +++ b/Samples/5_Domain_Specific/fastWalshTransform/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/fastWalshTransform/README.md b/Samples/5_Domain_Specific/fastWalshTransform/README.md index 574932dc..8bb9b6e7 100644 --- a/Samples/5_Domain_Specific/fastWalshTransform/README.md +++ b/Samples/5_Domain_Specific/fastWalshTransform/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMemset, cudaMalloc ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2017.vcxproj b/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2017.vcxproj index 620fde8c..3b9e19f5 100644 --- a/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2019.vcxproj b/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2019.vcxproj index 9f0171f3..7e4ce2bc 100644 --- a/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2022.vcxproj b/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2022.vcxproj index 1209eaf6..b00abcb6 100644 --- a/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/fastWalshTransform/fastWalshTransform_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -104,6 +104,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsD3D9/README.md b/Samples/5_Domain_Specific/fluidsD3D9/README.md index 9f488909..47de23e2 100644 --- a/Samples/5_Domain_Specific/fluidsD3D9/README.md +++ b/Samples/5_Domain_Specific/fluidsD3D9/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2017.vcxproj b/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2017.vcxproj index 03621482..62b1a594 100644 --- a/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2019.vcxproj b/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2019.vcxproj index 81b687ae..4f27b482 100644 --- a/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2022.vcxproj b/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2022.vcxproj index be0118da..f97e624b 100644 --- a/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/fluidsD3D9/fluidsD3D9_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsGL/Makefile b/Samples/5_Domain_Specific/fluidsGL/Makefile index 4a7d75ee..acccf6a0 100644 --- a/Samples/5_Domain_Specific/fluidsGL/Makefile +++ b/Samples/5_Domain_Specific/fluidsGL/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/fluidsGL/README.md b/Samples/5_Domain_Specific/fluidsGL/README.md index e3772e35..267234d4 100644 --- a/Samples/5_Domain_Specific/fluidsGL/README.md +++ b/Samples/5_Domain_Specific/fluidsGL/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2017.vcxproj b/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2017.vcxproj index 04ca8584..3aa704f4 100644 --- a/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -120,6 +120,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2019.vcxproj b/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2019.vcxproj index f79b5a88..76a0a251 100644 --- a/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -116,6 +116,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2022.vcxproj b/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2022.vcxproj index 54a81472..fc951383 100644 --- a/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/fluidsGL/fluidsGL_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -116,6 +116,6 @@ - + diff --git a/Samples/5_Domain_Specific/fluidsGLES/Makefile b/Samples/5_Domain_Specific/fluidsGLES/Makefile index aa4ba20c..8fa4ca3a 100644 --- a/Samples/5_Domain_Specific/fluidsGLES/Makefile +++ b/Samples/5_Domain_Specific/fluidsGLES/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/fluidsGLES/README.md b/Samples/5_Domain_Specific/fluidsGLES/README.md index 41c628e9..bfa5c17a 100644 --- a/Samples/5_Domain_Specific/fluidsGLES/README.md +++ b/Samples/5_Domain_Specific/fluidsGLES/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaFreeArray, cudaFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/marchingCubes/Makefile b/Samples/5_Domain_Specific/marchingCubes/Makefile index 6b7fae61..30f40e57 100644 --- a/Samples/5_Domain_Specific/marchingCubes/Makefile +++ b/Samples/5_Domain_Specific/marchingCubes/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -313,13 +317,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/5_Domain_Specific/marchingCubes/README.md b/Samples/5_Domain_Specific/marchingCubes/README.md index 23acc3e9..d53729d7 100644 --- a/Samples/5_Domain_Specific/marchingCubes/README.md +++ b/Samples/5_Domain_Specific/marchingCubes/README.md @@ -30,7 +30,7 @@ cudaGLUnmapBufferObject, cudaGraphicsUnmapResources, cudaCreateChannelDesc, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2017.vcxproj b/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2017.vcxproj index 65385729..91c26e24 100644 --- a/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2019.vcxproj b/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2019.vcxproj index f8f271bf..954eb214 100644 --- a/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -115,6 +115,6 @@ - + diff --git a/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2022.vcxproj b/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2022.vcxproj index e5c238b0..0f2ff814 100644 --- a/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/marchingCubes/marchingCubes_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -115,6 +115,6 @@ - + diff --git a/Samples/5_Domain_Specific/nbody/Makefile b/Samples/5_Domain_Specific/nbody/Makefile index dd934927..e218084b 100644 --- a/Samples/5_Domain_Specific/nbody/Makefile +++ b/Samples/5_Domain_Specific/nbody/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/nbody/README.md b/Samples/5_Domain_Specific/nbody/README.md index 70a59f55..aeb4a067 100644 --- a/Samples/5_Domain_Specific/nbody/README.md +++ b/Samples/5_Domain_Specific/nbody/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaSetDeviceFlags, cudaGraphicsResourceSetMapFlags, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/nbody/nbody_vs2017.vcxproj b/Samples/5_Domain_Specific/nbody/nbody_vs2017.vcxproj index 588cd836..52523480 100644 --- a/Samples/5_Domain_Specific/nbody/nbody_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/nbody/nbody_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -125,6 +125,6 @@ - + diff --git a/Samples/5_Domain_Specific/nbody/nbody_vs2019.vcxproj b/Samples/5_Domain_Specific/nbody/nbody_vs2019.vcxproj index cf45705a..ba211bb9 100644 --- a/Samples/5_Domain_Specific/nbody/nbody_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/nbody/nbody_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -121,6 +121,6 @@ - + diff --git a/Samples/5_Domain_Specific/nbody/nbody_vs2022.vcxproj b/Samples/5_Domain_Specific/nbody/nbody_vs2022.vcxproj index 85a6c13f..41230026 100644 --- a/Samples/5_Domain_Specific/nbody/nbody_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/nbody/nbody_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -121,6 +121,6 @@ - + diff --git a/Samples/5_Domain_Specific/nbody_opengles/Makefile b/Samples/5_Domain_Specific/nbody_opengles/Makefile index f46847fb..1ba63daa 100644 --- a/Samples/5_Domain_Specific/nbody_opengles/Makefile +++ b/Samples/5_Domain_Specific/nbody_opengles/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/nbody_opengles/README.md b/Samples/5_Domain_Specific/nbody_opengles/README.md index 4c5ee4ca..28316827 100644 --- a/Samples/5_Domain_Specific/nbody_opengles/README.md +++ b/Samples/5_Domain_Specific/nbody_opengles/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaSetDeviceFlags, cudaGraphicsResourceSetMapFlags, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/nbody_screen/Makefile b/Samples/5_Domain_Specific/nbody_screen/Makefile index 581ae1d2..c87afabe 100644 --- a/Samples/5_Domain_Specific/nbody_screen/Makefile +++ b/Samples/5_Domain_Specific/nbody_screen/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/nbody_screen/README.md b/Samples/5_Domain_Specific/nbody_screen/README.md index 6cf9fd5f..66dbac15 100644 --- a/Samples/5_Domain_Specific/nbody_screen/README.md +++ b/Samples/5_Domain_Specific/nbody_screen/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaSetDeviceFlags, cudaGraphicsResourceSetMapFlags, ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/Makefile b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/Makefile index d5a9f46e..d48f67ef 100644 --- a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/Makefile +++ b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/README.md b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/README.md index e96a37c0..8b0ecf2d 100644 --- a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/README.md +++ b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/README.md @@ -27,7 +27,7 @@ cudaSetDevice, cudaEventDestroy, cudaOccupancyMaxPotentialBlockSize, cudaCheckEr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2017.vcxproj b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2017.vcxproj index 9595e669..4b1882ec 100644 --- a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2019.vcxproj b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2019.vcxproj index 238da7d2..42aaf150 100644 --- a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2022.vcxproj b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2022.vcxproj index 5eb245c3..a21922df 100644 --- a/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/p2pBandwidthLatencyTest/p2pBandwidthLatencyTest_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/postProcessGL/Makefile b/Samples/5_Domain_Specific/postProcessGL/Makefile index b3d3f4f2..d346bc75 100644 --- a/Samples/5_Domain_Specific/postProcessGL/Makefile +++ b/Samples/5_Domain_Specific/postProcessGL/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/postProcessGL/README.md b/Samples/5_Domain_Specific/postProcessGL/README.md index 653d37da..e6c9b217 100644 --- a/Samples/5_Domain_Specific/postProcessGL/README.md +++ b/Samples/5_Domain_Specific/postProcessGL/README.md @@ -30,7 +30,7 @@ cudaHostAlloc, cudaGraphicsUnmapResources, cudaMalloc, cudaFree, cudaGetChannelD ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2017.vcxproj b/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2017.vcxproj index c0d9141d..5d196a6c 100644 --- a/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2019.vcxproj b/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2019.vcxproj index fe2da478..f7203ca4 100644 --- a/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2022.vcxproj b/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2022.vcxproj index 37c1e147..c0c158a8 100644 --- a/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/postProcessGL/postProcessGL_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/quasirandomGenerator/Makefile b/Samples/5_Domain_Specific/quasirandomGenerator/Makefile index 8171005e..48cc189e 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator/Makefile +++ b/Samples/5_Domain_Specific/quasirandomGenerator/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/quasirandomGenerator/README.md b/Samples/5_Domain_Specific/quasirandomGenerator/README.md index c5680d05..9b750620 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator/README.md +++ b/Samples/5_Domain_Specific/quasirandomGenerator/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMemset, cudaMemcpyToSymbol, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2017.vcxproj b/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2017.vcxproj index a26c227e..d6b73ab1 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2019.vcxproj b/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2019.vcxproj index 544c9228..62ab103d 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2022.vcxproj b/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2022.vcxproj index f8f4c9ac..909d6764 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/quasirandomGenerator/quasirandomGenerator_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/Makefile b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/Makefile index e253dd32..620f28f6 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/Makefile +++ b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/README.md b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/README.md index eef7b0e8..307c4926 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/README.md +++ b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/README.md @@ -30,7 +30,7 @@ cuMemcpyDtoH, cuMemAlloc, cuMemFree ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2017.vcxproj b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2017.vcxproj index 087cd37f..e3bb69b6 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2019.vcxproj b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2019.vcxproj index 48857474..2fc22b9a 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2022.vcxproj b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2022.vcxproj index 9b356b2a..fb89cb03 100644 --- a/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/quasirandomGenerator_nvrtc/quasirandomGenerator_nvrtc_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/5_Domain_Specific/recursiveGaussian/Makefile b/Samples/5_Domain_Specific/recursiveGaussian/Makefile index a75f96a7..ae114d95 100644 --- a/Samples/5_Domain_Specific/recursiveGaussian/Makefile +++ b/Samples/5_Domain_Specific/recursiveGaussian/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/recursiveGaussian/README.md b/Samples/5_Domain_Specific/recursiveGaussian/README.md index a57025f4..c674ba68 100644 --- a/Samples/5_Domain_Specific/recursiveGaussian/README.md +++ b/Samples/5_Domain_Specific/recursiveGaussian/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGraphicsResourceGetMappedP ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2017.vcxproj b/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2017.vcxproj index d4a07ba9..523e9d06 100644 --- a/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2019.vcxproj b/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2019.vcxproj index 28800e18..9f144890 100644 --- a/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2022.vcxproj b/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2022.vcxproj index ac714ac4..6d1b27e7 100644 --- a/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/recursiveGaussian/recursiveGaussian_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10/README.md b/Samples/5_Domain_Specific/simpleD3D10/README.md index 50894359..a9dc1687 100644 --- a/Samples/5_Domain_Specific/simpleD3D10/README.md +++ b/Samples/5_Domain_Specific/simpleD3D10/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaGetErrorString, cudaGraphicsResourceGetMappedPoi ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2017.vcxproj index c4f2593e..eded0dec 100644 --- a/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2019.vcxproj index 4818990b..a32872db 100644 --- a/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2022.vcxproj index 075375d1..e7196cbd 100644 --- a/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10/simpleD3D10_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/README.md b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/README.md index 794a8bc4..a69a552b 100644 --- a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/README.md +++ b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaMalloc, cudaUnbindTexture, cudaGetEr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2017.vcxproj index c7ecb648..8c5da395 100644 --- a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2019.vcxproj index 75189993..d958a80d 100644 --- a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2022.vcxproj index 84304867..94d0cf9a 100644 --- a/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10RenderTarget/simpleD3D10RenderTarget_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10Texture/README.md b/Samples/5_Domain_Specific/simpleD3D10Texture/README.md index 2674d967..95f7f4c6 100644 --- a/Samples/5_Domain_Specific/simpleD3D10Texture/README.md +++ b/Samples/5_Domain_Specific/simpleD3D10Texture/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMalloc, cudaMallocPitch, cudaGetErrorString, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2017.vcxproj index e8ca311c..b4de2d0a 100644 --- a/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2019.vcxproj index 3b1cc527..1e493d22 100644 --- a/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2022.vcxproj index e9bff569..7ef4c097 100644 --- a/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D10Texture/simpleD3D10Texture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D11/README.md b/Samples/5_Domain_Specific/simpleD3D11/README.md index 0a95ed36..d7fe68ed 100644 --- a/Samples/5_Domain_Specific/simpleD3D11/README.md +++ b/Samples/5_Domain_Specific/simpleD3D11/README.md @@ -30,7 +30,7 @@ cudaImportKeyedMutex, cudaExternalMemoryGetMappedBuffer, cudaStreamCreateWithFla ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2017.vcxproj index 1392a763..3080966d 100644 --- a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2019.vcxproj index 7db92f92..34e32529 100644 --- a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2022.vcxproj index 791d3502..b17ff777 100644 --- a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D11Texture/README.md b/Samples/5_Domain_Specific/simpleD3D11Texture/README.md index 3db723e6..52bc5f17 100644 --- a/Samples/5_Domain_Specific/simpleD3D11Texture/README.md +++ b/Samples/5_Domain_Specific/simpleD3D11Texture/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMalloc, cudaMallocPitch, cudaGetErrorString, cud ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2017.vcxproj index 4e0e2131..8c3ac911 100644 --- a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -112,6 +112,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2019.vcxproj index eabe0506..e7a18b63 100644 --- a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2022.vcxproj index d80d5545..38867caa 100644 --- a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -108,6 +108,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D12/README.md b/Samples/5_Domain_Specific/simpleD3D12/README.md index 7525e0a0..90c1d003 100644 --- a/Samples/5_Domain_Specific/simpleD3D12/README.md +++ b/Samples/5_Domain_Specific/simpleD3D12/README.md @@ -30,7 +30,7 @@ cudaWaitExternalSemaphoresAsync, cudaExternalMemoryGetMappedBuffer, cudaImportEx ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2017.vcxproj index dda03bf9..0b77fc53 100644 --- a/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2019.vcxproj index 2f973c81..ecc0d27a 100644 --- a/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2019.vcxproj @@ -39,7 +39,7 @@ - + @@ -120,6 +120,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2022.vcxproj index 91068e37..71ca16be 100644 --- a/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12_vs2022.vcxproj @@ -39,7 +39,7 @@ - + @@ -120,6 +120,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D9/README.md b/Samples/5_Domain_Specific/simpleD3D9/README.md index 8e7656e6..e0153232 100644 --- a/Samples/5_Domain_Specific/simpleD3D9/README.md +++ b/Samples/5_Domain_Specific/simpleD3D9/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaGraphicsResourceGetMappedPointer, cudaGetLastErr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2017.vcxproj index 389b9b71..6ae2f780 100644 --- a/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -109,6 +109,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2019.vcxproj index bf5b8e3f..acf7daf7 100644 --- a/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2022.vcxproj index 8f4e3180..1870fe5e 100644 --- a/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D9/simpleD3D9_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -105,6 +105,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D9Texture/README.md b/Samples/5_Domain_Specific/simpleD3D9Texture/README.md index e2b164b3..25dba9e4 100644 --- a/Samples/5_Domain_Specific/simpleD3D9Texture/README.md +++ b/Samples/5_Domain_Specific/simpleD3D9Texture/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMalloc, cudaMallocPitch, cudaFree, cudaGetLastEr ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2017.vcxproj index fdd3be88..673b7877 100644 --- a/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -111,6 +111,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2019.vcxproj index 1e37a808..e9ea4087 100644 --- a/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2022.vcxproj index d6195bff..ef0cbea2 100644 --- a/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleD3D9Texture/simpleD3D9Texture_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleGL/Makefile b/Samples/5_Domain_Specific/simpleGL/Makefile index c28452a6..17769a6f 100644 --- a/Samples/5_Domain_Specific/simpleGL/Makefile +++ b/Samples/5_Domain_Specific/simpleGL/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/simpleGL/README.md b/Samples/5_Domain_Specific/simpleGL/README.md index e4897ae9..a8f42d35 100644 --- a/Samples/5_Domain_Specific/simpleGL/README.md +++ b/Samples/5_Domain_Specific/simpleGL/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGraphicsResourceGetMappedP ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2017.vcxproj index b6c8fa6c..121ba2a8 100644 --- a/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2019.vcxproj index cd419cc5..2a73dea2 100644 --- a/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2022.vcxproj index f630f163..c48333cb 100644 --- a/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleGL/simpleGL_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleGLES/Makefile b/Samples/5_Domain_Specific/simpleGLES/Makefile index 6e9a9663..05424cd0 100644 --- a/Samples/5_Domain_Specific/simpleGLES/Makefile +++ b/Samples/5_Domain_Specific/simpleGLES/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/simpleGLES/README.md b/Samples/5_Domain_Specific/simpleGLES/README.md index b147e41f..4ecca45d 100644 --- a/Samples/5_Domain_Specific/simpleGLES/README.md +++ b/Samples/5_Domain_Specific/simpleGLES/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGraphicsResourceGetMappedP ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleGLES_EGLOutput/Makefile b/Samples/5_Domain_Specific/simpleGLES_EGLOutput/Makefile index 630c7acf..4fdd337b 100644 --- a/Samples/5_Domain_Specific/simpleGLES_EGLOutput/Makefile +++ b/Samples/5_Domain_Specific/simpleGLES_EGLOutput/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/simpleGLES_EGLOutput/README.md b/Samples/5_Domain_Specific/simpleGLES_EGLOutput/README.md index dd6f45c3..a57af23d 100644 --- a/Samples/5_Domain_Specific/simpleGLES_EGLOutput/README.md +++ b/Samples/5_Domain_Specific/simpleGLES_EGLOutput/README.md @@ -35,7 +35,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGraphicsResourceGetMappedP ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleGLES_screen/Makefile b/Samples/5_Domain_Specific/simpleGLES_screen/Makefile index a525df9f..4a764a2e 100644 --- a/Samples/5_Domain_Specific/simpleGLES_screen/Makefile +++ b/Samples/5_Domain_Specific/simpleGLES_screen/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/simpleGLES_screen/README.md b/Samples/5_Domain_Specific/simpleGLES_screen/README.md index 2e7cb712..6cb4545c 100644 --- a/Samples/5_Domain_Specific/simpleGLES_screen/README.md +++ b/Samples/5_Domain_Specific/simpleGLES_screen/README.md @@ -30,7 +30,7 @@ cudaGraphicsUnmapResources, cudaMemcpy, cudaFree, cudaGraphicsResourceGetMappedP ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleVulkan/Makefile b/Samples/5_Domain_Specific/simpleVulkan/Makefile index 9ee42376..697cb867 100644 --- a/Samples/5_Domain_Specific/simpleVulkan/Makefile +++ b/Samples/5_Domain_Specific/simpleVulkan/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -327,13 +331,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/5_Domain_Specific/simpleVulkan/README.md b/Samples/5_Domain_Specific/simpleVulkan/README.md index 61c18787..9c3e33bc 100644 --- a/Samples/5_Domain_Specific/simpleVulkan/README.md +++ b/Samples/5_Domain_Specific/simpleVulkan/README.md @@ -30,7 +30,7 @@ cudaStreamCreateWithFlags, cudaExternalMemoryGetMappedBuffer, cudaSignalSemaphor ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2017.vcxproj index f0050935..467c076c 100644 --- a/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -121,6 +121,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2019.vcxproj index e373dd1b..5e13a3ca 100644 --- a/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2022.vcxproj index 58933565..9f119aad 100644 --- a/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleVulkan/simpleVulkan_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleVulkanMMAP/Makefile b/Samples/5_Domain_Specific/simpleVulkanMMAP/Makefile index 66c79858..aace0d8b 100644 --- a/Samples/5_Domain_Specific/simpleVulkanMMAP/Makefile +++ b/Samples/5_Domain_Specific/simpleVulkanMMAP/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -329,13 +333,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/5_Domain_Specific/simpleVulkanMMAP/README.md b/Samples/5_Domain_Specific/simpleVulkanMMAP/README.md index fb35c3ac..3e5e54b5 100644 --- a/Samples/5_Domain_Specific/simpleVulkanMMAP/README.md +++ b/Samples/5_Domain_Specific/simpleVulkanMMAP/README.md @@ -33,7 +33,7 @@ cudaWaitExternalSemaphoresAsync, cudaImportExternalSemaphore, cudaDeviceGetAttri ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2017.vcxproj b/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2017.vcxproj index 030c9282..e7c7bdd2 100644 --- a/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -123,6 +123,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2019.vcxproj b/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2019.vcxproj index 9c313186..f843a49f 100644 --- a/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2022.vcxproj b/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2022.vcxproj index 504af167..6936c4f0 100644 --- a/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/simpleVulkanMMAP/simpleVulkanMMAP_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -119,6 +119,6 @@ - + diff --git a/Samples/5_Domain_Specific/smokeParticles/Makefile b/Samples/5_Domain_Specific/smokeParticles/Makefile index 19323ad0..9e127436 100644 --- a/Samples/5_Domain_Specific/smokeParticles/Makefile +++ b/Samples/5_Domain_Specific/smokeParticles/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -313,13 +317,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 50000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 5.0.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 5.0.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 5.0.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/5_Domain_Specific/smokeParticles/README.md b/Samples/5_Domain_Specific/smokeParticles/README.md index 52003c7a..60ae9bf2 100644 --- a/Samples/5_Domain_Specific/smokeParticles/README.md +++ b/Samples/5_Domain_Specific/smokeParticles/README.md @@ -30,7 +30,7 @@ cudaExtent, cudaPitchedPtr, cudaCreateTextureObject, cudaMemcpyToSymbol ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2017.vcxproj b/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2017.vcxproj index 61c483f7..f916acff 100644 --- a/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -137,6 +137,6 @@ - + diff --git a/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2019.vcxproj b/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2019.vcxproj index d7c11cc6..b6ba793c 100644 --- a/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -133,6 +133,6 @@ - + diff --git a/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2022.vcxproj b/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2022.vcxproj index 0251279c..b8c3c9b3 100644 --- a/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/smokeParticles/smokeParticles_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -133,6 +133,6 @@ - + diff --git a/Samples/5_Domain_Specific/stereoDisparity/Makefile b/Samples/5_Domain_Specific/stereoDisparity/Makefile index 33694e2d..87dbd9f1 100644 --- a/Samples/5_Domain_Specific/stereoDisparity/Makefile +++ b/Samples/5_Domain_Specific/stereoDisparity/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/stereoDisparity/README.md b/Samples/5_Domain_Specific/stereoDisparity/README.md index 40bc7145..e5e44791 100644 --- a/Samples/5_Domain_Specific/stereoDisparity/README.md +++ b/Samples/5_Domain_Specific/stereoDisparity/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaEventSynchronize, cudaDeviceSynchronize, cudaCreateTex ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2017.vcxproj b/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2017.vcxproj index 8bf83168..aac0bd91 100644 --- a/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2019.vcxproj b/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2019.vcxproj index 0a0170b3..3aa13bcd 100644 --- a/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2022.vcxproj b/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2022.vcxproj index cfe09cd0..c8943ef6 100644 --- a/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/stereoDisparity/stereoDisparity_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/5_Domain_Specific/volumeFiltering/Makefile b/Samples/5_Domain_Specific/volumeFiltering/Makefile index dcee5c9c..cf8708ca 100644 --- a/Samples/5_Domain_Specific/volumeFiltering/Makefile +++ b/Samples/5_Domain_Specific/volumeFiltering/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/volumeFiltering/README.md b/Samples/5_Domain_Specific/volumeFiltering/README.md index 0d7b8a8f..5b97725a 100644 --- a/Samples/5_Domain_Specific/volumeFiltering/README.md +++ b/Samples/5_Domain_Specific/volumeFiltering/README.md @@ -30,7 +30,7 @@ cudaMemcpy, cudaGraphicsMapResources, cudaDestroySurfaceObject, cudaExtent, cuda ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2017.vcxproj b/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2017.vcxproj index 69a67a50..90feb3e7 100644 --- a/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -122,6 +122,6 @@ - + diff --git a/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2019.vcxproj b/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2019.vcxproj index 89a7ef2f..5dcc6577 100644 --- a/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2022.vcxproj b/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2022.vcxproj index 23226749..0cfdd878 100644 --- a/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/volumeFiltering/volumeFiltering_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/volumeRender/Makefile b/Samples/5_Domain_Specific/volumeRender/Makefile index 3d558175..5b5d73a3 100644 --- a/Samples/5_Domain_Specific/volumeRender/Makefile +++ b/Samples/5_Domain_Specific/volumeRender/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/5_Domain_Specific/volumeRender/README.md b/Samples/5_Domain_Specific/volumeRender/README.md index fe7fcbe5..845bd36d 100644 --- a/Samples/5_Domain_Specific/volumeRender/README.md +++ b/Samples/5_Domain_Specific/volumeRender/README.md @@ -30,7 +30,7 @@ cudaProfilerStop, cudaGraphicsUnmapResources, cudaMemcpy, cudaMallocArray, cudaF ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/volumeRender/volume.ppm b/Samples/5_Domain_Specific/volumeRender/volume.ppm new file mode 100644 index 0000000000000000000000000000000000000000..38ae48133cbffe187e92f45132dbaa7d73d6a523 GIT binary patch literal 786447 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 - + @@ -118,6 +118,6 @@ - + diff --git a/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2019.vcxproj b/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2019.vcxproj index 38f9fc2f..16d98062 100644 --- a/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2022.vcxproj b/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2022.vcxproj index 1634bc73..7d35611b 100644 --- a/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/volumeRender/volumeRender_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -114,6 +114,6 @@ - + diff --git a/Samples/5_Domain_Specific/vulkanImageCUDA/Makefile b/Samples/5_Domain_Specific/vulkanImageCUDA/Makefile index 7b166ecc..53c5bc90 100644 --- a/Samples/5_Domain_Specific/vulkanImageCUDA/Makefile +++ b/Samples/5_Domain_Specific/vulkanImageCUDA/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ @@ -327,13 +331,16 @@ ifeq ($(TARGET_OS),linux) #$(warning $(GCCVERSION)) IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 47000) - + ifneq ($(CUSTOM_HOST_COMPILER), 1) ifeq ($(IS_MIN_VERSION), 1) $(info >>> GCC Version is greater or equal to 4.7.0 <<<) else $(info >>> Waiving build. Minimum GCC version required is 4.7.0<<<) SAMPLE_ENABLED := 0 endif + else + $(warning >>> Custom HOST_COMPILER set; skipping GCC version check. This may lead to unintended behavior. Please note the minimum equivalent GCC version is 4.7.0 <<<) + endif endif # Gencode arguments diff --git a/Samples/5_Domain_Specific/vulkanImageCUDA/README.md b/Samples/5_Domain_Specific/vulkanImageCUDA/README.md index aca26778..07b2c5a5 100644 --- a/Samples/5_Domain_Specific/vulkanImageCUDA/README.md +++ b/Samples/5_Domain_Specific/vulkanImageCUDA/README.md @@ -30,7 +30,7 @@ cudaVkSemaphoreSignal, cudaWaitExternalSemaphoresAsync, cudaMemcpy, cudaVkImport ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2017.vcxproj b/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2017.vcxproj index 67ba59f7..6e2b26e0 100644 --- a/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2017.vcxproj +++ b/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -117,6 +117,6 @@ - + diff --git a/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2019.vcxproj b/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2019.vcxproj index 47db4dfd..43a9a122 100644 --- a/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2019.vcxproj +++ b/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2022.vcxproj b/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2022.vcxproj index d4ad085c..4ab41471 100644 --- a/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2022.vcxproj +++ b/Samples/5_Domain_Specific/vulkanImageCUDA/vulkanImageCUDA_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -113,6 +113,6 @@ - + diff --git a/Samples/6_Performance/UnifiedMemoryPerf/Makefile b/Samples/6_Performance/UnifiedMemoryPerf/Makefile index a0a08e37..a7230f13 100644 --- a/Samples/6_Performance/UnifiedMemoryPerf/Makefile +++ b/Samples/6_Performance/UnifiedMemoryPerf/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/6_Performance/UnifiedMemoryPerf/README.md b/Samples/6_Performance/UnifiedMemoryPerf/README.md index 91b236cd..b6c23f24 100644 --- a/Samples/6_Performance/UnifiedMemoryPerf/README.md +++ b/Samples/6_Performance/UnifiedMemoryPerf/README.md @@ -28,7 +28,7 @@ cudaMemcpy, cudaStreamDestroy, cudaMemPrefetchAsync, cudaFree, cudaMallocHost, c ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. Make sure the dependencies mentioned in [Dependencies]() section above are installed. ## Build and Run diff --git a/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2017.vcxproj b/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2017.vcxproj index 7f34f2ba..fcd760ca 100644 --- a/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2017.vcxproj +++ b/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -110,6 +110,6 @@ - + diff --git a/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2019.vcxproj b/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2019.vcxproj index b848ec20..f8d4ed16 100644 --- a/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2019.vcxproj +++ b/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2022.vcxproj b/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2022.vcxproj index 7bffbaf8..252aa1fe 100644 --- a/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2022.vcxproj +++ b/Samples/6_Performance/UnifiedMemoryPerf/UnifiedMemoryPerf_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -106,6 +106,6 @@ - + diff --git a/Samples/6_Performance/alignedTypes/Makefile b/Samples/6_Performance/alignedTypes/Makefile index 7c83f9f6..191b3e09 100644 --- a/Samples/6_Performance/alignedTypes/Makefile +++ b/Samples/6_Performance/alignedTypes/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/6_Performance/alignedTypes/README.md b/Samples/6_Performance/alignedTypes/README.md index 9eff0b03..6b4c6805 100644 --- a/Samples/6_Performance/alignedTypes/README.md +++ b/Samples/6_Performance/alignedTypes/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaFree, cudaDeviceSynchronize, cudaMemset, cudaMalloc, cudaGetDevi ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/6_Performance/alignedTypes/alignedTypes_vs2017.vcxproj b/Samples/6_Performance/alignedTypes/alignedTypes_vs2017.vcxproj index 3a821d65..a4e9dfca 100644 --- a/Samples/6_Performance/alignedTypes/alignedTypes_vs2017.vcxproj +++ b/Samples/6_Performance/alignedTypes/alignedTypes_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/6_Performance/alignedTypes/alignedTypes_vs2019.vcxproj b/Samples/6_Performance/alignedTypes/alignedTypes_vs2019.vcxproj index d39c9dee..decf9c3c 100644 --- a/Samples/6_Performance/alignedTypes/alignedTypes_vs2019.vcxproj +++ b/Samples/6_Performance/alignedTypes/alignedTypes_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/6_Performance/alignedTypes/alignedTypes_vs2022.vcxproj b/Samples/6_Performance/alignedTypes/alignedTypes_vs2022.vcxproj index 40b10f11..c9417830 100644 --- a/Samples/6_Performance/alignedTypes/alignedTypes_vs2022.vcxproj +++ b/Samples/6_Performance/alignedTypes/alignedTypes_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/6_Performance/transpose/Makefile b/Samples/6_Performance/transpose/Makefile index dfb05cbe..1f6d156e 100644 --- a/Samples/6_Performance/transpose/Makefile +++ b/Samples/6_Performance/transpose/Makefile @@ -113,6 +113,10 @@ ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) endif # host compiler +ifdef HOST_COMPILER + CUSTOM_HOST_COMPILER = 1 +endif + ifeq ($(TARGET_OS),darwin) ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) HOST_COMPILER ?= clang++ diff --git a/Samples/6_Performance/transpose/README.md b/Samples/6_Performance/transpose/README.md index 6cae8464..cd559986 100644 --- a/Samples/6_Performance/transpose/README.md +++ b/Samples/6_Performance/transpose/README.md @@ -27,7 +27,7 @@ cudaMemcpy, cudaMalloc, cudaFree, cudaGetLastError, cudaEventSynchronize, cudaEv ## Prerequisites -Download and install the [CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. +Download and install the [CUDA Toolkit 12.2](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. ## Build and Run diff --git a/Samples/6_Performance/transpose/transpose_vs2017.vcxproj b/Samples/6_Performance/transpose/transpose_vs2017.vcxproj index 9090ad45..38f515a3 100644 --- a/Samples/6_Performance/transpose/transpose_vs2017.vcxproj +++ b/Samples/6_Performance/transpose/transpose_vs2017.vcxproj @@ -38,7 +38,7 @@ - + @@ -107,6 +107,6 @@ - + diff --git a/Samples/6_Performance/transpose/transpose_vs2019.vcxproj b/Samples/6_Performance/transpose/transpose_vs2019.vcxproj index 4ffba952..c3aaa36a 100644 --- a/Samples/6_Performance/transpose/transpose_vs2019.vcxproj +++ b/Samples/6_Performance/transpose/transpose_vs2019.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/6_Performance/transpose/transpose_vs2022.vcxproj b/Samples/6_Performance/transpose/transpose_vs2022.vcxproj index 56cd3583..713512c5 100644 --- a/Samples/6_Performance/transpose/transpose_vs2022.vcxproj +++ b/Samples/6_Performance/transpose/transpose_vs2022.vcxproj @@ -34,7 +34,7 @@ - + @@ -103,6 +103,6 @@ - + diff --git a/Samples/7_libNVVM/CMakeLists.txt b/Samples/7_libNVVM/CMakeLists.txt new file mode 100644 index 00000000..6f9e7675 --- /dev/null +++ b/Samples/7_libNVVM/CMakeLists.txt @@ -0,0 +1,123 @@ +# Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cmake_minimum_required(VERSION 3.10.0) + +project(libnvvm-samples) +enable_testing() +set_property(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS TRUE) +set(CMAKE_C_STANDARD 11) + +# Initialize the CUDA Toolkit search using CUDA_HOME if the user specified it. +if (DEFINED ENV{CUDA_HOME}) + if (${CMAKE_VERSION} VERSION_LESS 3.18.0) + set(CUDA_TOOLKIT_ROOT_DIR "$ENV{CUDA_HOME}" CACHE PATH "Path to CUDA Toolkit.") + else () # cmake 3.17 introduced FindCUDAToolkit + set(CUDAToolkit_ROOT "$ENV{CUDA_HOME}" CACHE PATH "Path to CUDA Toolkit.") + endif () +endif () + +# Locate the root directory of the CUDA Toolkit. +# cmake 3.18 introduces the CUDAToolkit_LIBRARY_ROOT variable. +# This will update CUDA_HOME to a value discovered by find_package. +if (${CMAKE_VERSION} VERSION_LESS 3.18.0) + find_package(CUDA REQUIRED) + set(CUDA_HOME "${CUDA_TOOLKIT_ROOT_DIR}") + get_filename_component(CUDA_LIB_ROOT "${CUDA_cudart_static_LIBRARY}" DIRECTORY) + find_library(CUDA_LIB NAMES cuda cuda.lib PATHS "${CUDA_LIB_ROOT}" "${CUDA_LIB_ROOT}/stubs") + include_directories("${CUDA_INCLUDE_DIRS}") + find_library(CUDADEVRT_LIB cudadevrt PATHS "${CUDA_LIB_ROOT}" "${CUDA_LIB_ROOT}/stubs") +else () # Else, we're using cmake versions >= 3.18. + cmake_policy(SET CMP0074 NEW) # Use CUDAToolkit_ROOT as a cmake prefix. + find_package(CUDAToolkit REQUIRED) + set(CUDA_LIB "${CUDA_cuda_driver_LIBRARY}") + include_directories("${CUDAToolkit_INCLUDE_DIRS}") + get_filename_component(CUDA_HOME "${CUDAToolkit_BIN_DIR}" DIRECTORY) + find_library(CUDADEVRT_LIB cudadevrt PATH "${CUDAToolkit_LIBRARY_DIR}") +endif () +message(STATUS "Using CUDA_HOME: ${CUDA_HOME}") +message(STATUS "Using CUDA_LIB: ${CUDA_LIB}") +if (("${CUDA_HOME}" STREQUAL "") OR ("${CUDA_LIB}" STREQUAL "")) + message(FATAL_ERROR "Failed to locate paths to the CUDA toolkit and nvcc.") +endif () + +# Find the nvvm directory in the toolkit. +find_file(LIBNVVM_HOME nvvm PATHS "$ENV{LIBNVVM_HOME}" "${CUDA_HOME}") +message(STATUS "Using LIBNVVM_HOME: ${LIBNVVM_HOME}") + +# Find libNVVM and nvvm.h. +# (Linux: nvvm/lib64, windows: nvvm/lib/x64) +find_library(NVVM_LIB nvvm PATHS "${LIBNVVM_HOME}/lib64" "${LIBNVVM_HOME}/lib/x64") +find_file(NVVM_H nvvm.h PATH "${LIBNVVM_HOME}/include") +get_filename_component(NVVM_INCLUDE_DIR ${NVVM_H} DIRECTORY) +include_directories(${NVVM_INCLUDE_DIR}) +message(STATUS "Using libnvvm header: ${NVVM_H}") +message(STATUS "Using libnvvm header path: ${NVVM_INCLUDE_DIR}") +message(STATUS "Using libnvvm library: ${NVVM_LIB}") + +# Set the rpath to libnvvm. +find_path(LIBNVVM_RPATH lib lib64 PATHS "$ENV{LIBNVVM_HOME}" "${CUDA_HOME}") +get_filename_component(LIBNVVM_RPATH ${NVVM_LIB} DIRECTORY) +set(CMAKE_INSTALL_RPATH "${LIBNVVM_RPATH}") +message(STATUS "Using rpath: ${CMAKE_INSTALL_RPATH}") + +# On Windows, locate the nvvm.dll so we can install it. +if (WIN32) + find_file(NVVM_DLL nvvm64_40_0.dll PATHS "${LIBNVVM_HOME}/bin") + if (NOT NVVM_DLL) + message(FATAL_ERROR "Found nvvm .h/.lib, but not .dll") + endif() + install(FILES ${NVVM_DLL} DESTINATION bin) + file(COPY ${NVVM_DLL} DESTINATION "${CMAKE_BINARY_DIR}") +endif (WIN32) + +add_definitions(-DLIBDEVICE_MAJOR_VERSION=1) +add_definitions(-DLIBDEVICE_MINOR_VERSION=0) +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/common/include") + +# If you wish to build the cuda-c-linking sample and have the LLVM dependencies +# met, then set the ENABLE_CUDA_C_LINKING_SAMPLE variable. This variable can be +# set locally or by adding "-DENABLE_CUDA_C_LINKING_SAMPLE=1" to your cmake +# invocation. See the note about "cuda-c-linking" in README.md. +if (ENABLE_CUDA_C_LINKING_SAMPLE) + # Include the LLVM dev package which is required to build cuda-c-linking. + find_package(LLVM CONFIG PATHS "$ENV{LLVM_HOME}") + if (LLVM_FOUND) + add_subdirectory(cuda-c-linking) + else () + message(STATUS "Skipping the build of the cuda-c-linking sample: Failed to locate the LLVM package.") + endif () +else () + message(STATUS "Skipping the build of the cuda-c-linking sample.") +endif () + +# Samples +add_subdirectory(cuda-shared-memory) +add_subdirectory(device-side-launch) +add_subdirectory(simple) +add_subdirectory(syscalls) +add_subdirectory(ptxgen) +add_subdirectory(uvmlite) diff --git a/Samples/7_libNVVM/Makefile b/Samples/7_libNVVM/Makefile new file mode 100644 index 00000000..9c890257 --- /dev/null +++ b/Samples/7_libNVVM/Makefile @@ -0,0 +1,46 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +all: build + +.PHONY: build +build: + @mkdir -p build ; \ + cd build && \ + cmake -DCMAKE_INSTALL_PREFIX=../install .. && $(MAKE) install + +.PHONY: testrun +testrun: build + +@$(MAKE) -s -C build test + +# The cuda-samples toplevel Makefile will invoke the CMake generated 'clean' +# target for each libNVVM samples. +clean: + +.PHONY: clobber +clobber: + $(RM) -r install + $(RM) -r build diff --git a/Samples/7_libNVVM/README.md b/Samples/7_libNVVM/README.md new file mode 100644 index 00000000..9aa39ed0 --- /dev/null +++ b/Samples/7_libNVVM/README.md @@ -0,0 +1,90 @@ +libNVVM and NVVM IR Samples +=========================== + +Introduction +------------ + +The following samples illustrate the use of libNVVM and NVVM IR. + +- cuda-shared-memory - A directory containing NVVM IR programs that demonstrate + CUDA 'shared' memory usage. + +- cuda-c-linking - Builds an NVVM IR program using the LLVM IR build APIs. It + will link the generated PTX with a PTX generated by nvcc, and launch the + linked program on GPU using CUDA driver APIs. + +- device-side-launch - Demonstrates launching a kernel within a kernel (CUDA + dynamic parallelism). + +- ptxgen -A standalone NVVM IR program to PTX compiler. It will link the + libDevice library with the input NVVM IR program, verify the IR for + conformance to the NVVM IR specification, and then generate PTX. + +- simple - Reads in a NVVM IR program from a file, compiles it to PTX, and + launches the program on GPU using CUDA driver APIs. + +- syscalls - A directory containing NVVM IR programs that demonstrate the use of + device side malloc/free/vprintf functions. + +- uvmlite - Demonstrates the use of unified virtual memory. + +Steps for Building the Samples +------------------------------ + +The following environment variables can be used to control the build +process for the samples. If not specified, CUDA_HOME will be derived by +looking for nvcc in your PATH. CMake will try to automatically +identify all of these paths. + +- CUDA_HOME : The directory where the CUDA toolkit is installed, + e.g., /usr/local/cuda. +- LIBNVVM_HOME : The directory where libNVVM components are located. + e.g., $CUDA_HOME/nvvm. +- LLVM_HOME : This should point to the install directory if you built llvm + locally. This is only required for building the cuda-c-linking + sample (see the cuda-c-linking note below). + +After setting the environment variables and adding the path to the CMake tool +via the PATH environment variable, sample script utils/build.sh (for Linux) or +utils/build.bat (for Windows) may be executed. This script will use build +directory "build" to build the samples, and then install them in the "install" +directory. + +If you chose to build using Visual Studio and its integrated CMake support, +then simply run "Build All" and "Install libnvvm-samples." The installed +samples will be copied to out/install/\/bin/ + +Alternatively, we provide a Makefile that will automatically build these +samples on Linux as part of the toplevel cuda-samples build. Windows users +should build manually via utils/built.bat or Visual Studio's CMake integration. + +A Note About the cuda-c-linking Sample +-------------------------------------- + +This sample requires a development package (or locally-built) LLVM library +between versions 7 to 14 inclusive. LLVM 15 defaults to using opaque pointers, +which are currently not supported in libNVVM. + +The LLVM_HOME environment variable is required for users who wish to build the +cuda-c-linking sample and have a locally built copy of LLVM that they wish to +use. That sample requires the development package of LLVM with the LLVM header +files and libraries. + +If the LLVM dependencies are met, the user can enable the building of this +sample by setting the CMake variable "ENABLE_CUDA_C_LINKING_SAMPLE" from either +the command line invocation of CMake or by modifying the CMakeLists.txt in this +directory. + +Windows users should download LLVM 14 sources from llvm.org and build+install +LLVM locally. Using the llvm.org provided Windows installer lacks some of +the required components the cuda-c-linking sample depends on. + +For Ubuntu users, the "llvm-dev" package contains the LLVM headers and libraries +this sample requires, the user should not have to explicitly define an LLVM_HOME +in this case. + +Windows users will want to build this sample using the same CMake build mode +as they built LLVM with. For instance if they built LLVM in Release mode, +then this sample should also be built in Release mode. The utils/build.bat can +be updated to reflect this: Add "-DCMAKE_BUILD_TYPE=Release" to the CMake +invocation. diff --git a/Samples/7_libNVVM/common/include/DDSWriter.h b/Samples/7_libNVVM/common/include/DDSWriter.h new file mode 100644 index 00000000..a3a07378 --- /dev/null +++ b/Samples/7_libNVVM/common/include/DDSWriter.h @@ -0,0 +1,120 @@ +// Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DDSWRITER_H +#define DDSWRITER_H + +#include + +typedef int DWORD; + +/// DDS File Structures +struct DDSPixelFormat { + DWORD Size; + DWORD Flags; + DWORD FourCC; + DWORD RGBBitCount; + DWORD RBitMask; + DWORD GBitMask; + DWORD BBitMask; + DWORD ABitMask; +}; + +struct DDSHeader { + DWORD Size; + DWORD Flags; + DWORD Height; + DWORD Width; + DWORD PitchOrLinearSize; + DWORD Depth; + DWORD MipMapCount; + DWORD Reserved1[11]; + DDSPixelFormat PixelFormat; + DWORD Caps; + DWORD Caps2; + DWORD Caps3; + DWORD Caps4; + DWORD Reserved2; +}; + +#define DDPF_ALPHAPIXELS 0x1 +#define DDPF_RGB 0x40 + +#define DDSD_CAPS 0x1 +#define DDSD_HEIGHT 0x2 +#define DDSD_WIDTH 0x4 +#define DDSD_PIXELFORMAT 0x1000 + +#define DDSCAPS_TEXTURE 0x1000 + + +/// WriteDDS - Writes image data to a .dds file. The data is expected to be +/// (R, G, B, A) tuples of 32-bit floating-point data of dimensions +/// width X height. The floating-point data should be normalized to [0,1] and +/// will be scaled to a [0, 255] 8-bit value. +void writeDDS(const char *filename, const float *data, unsigned width, + unsigned height) { + // Write out the result as a .dds file + // This is a quick and dirty DDS writer + DDSHeader header; + memset(&header, 0, sizeof(DDSHeader)); + + header.Size = sizeof(DDSHeader); + header.Flags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT; + header.Height = height; + header.Width = width; + header.PitchOrLinearSize = width*4; + header.Caps = DDSCAPS_TEXTURE; + + header.PixelFormat.Size = sizeof(DDSPixelFormat); + header.PixelFormat.Flags = DDPF_RGB | DDPF_ALPHAPIXELS; + header.PixelFormat.RGBBitCount = 32; + header.PixelFormat.ABitMask = 0xFF000000; + header.PixelFormat.RBitMask = 0x00FF0000; + header.PixelFormat.GBitMask = 0x0000FF00; + header.PixelFormat.BBitMask = 0x000000FF; + + std::ofstream str(filename, std::ios::binary); + int magic = 0x20534444; + str.write((const char*)&magic, 4); + str.write((const char*)&header, sizeof(header)); + for(unsigned j = 0; j < height; ++j) { + for(unsigned i = 0; i < width; ++i) { + unsigned char r, g, b, a; + r = (unsigned char)(data[j*width*4+i*4+0] * 255.0); + g = (unsigned char)(data[j*width*4+i*4+1] * 255.0); + b = (unsigned char)(data[j*width*4+i*4+2] * 255.0); + a = (unsigned char)(data[j*width*4+i*4+3] * 255.0); + str.write((const char*)&b, 1); + str.write((const char*)&g, 1); + str.write((const char*)&r, 1); + str.write((const char*)&a, 1); + } + } + str.close(); +} + +#endif diff --git a/Samples/7_libNVVM/cuda-c-linking/CMakeLists.txt b/Samples/7_libNVVM/cuda-c-linking/CMakeLists.txt new file mode 100644 index 00000000..193b0067 --- /dev/null +++ b/Samples/7_libNVVM/cuda-c-linking/CMakeLists.txt @@ -0,0 +1,83 @@ +# Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +message(STATUS "Found LLVM Version ${LLVM_PACKAGE_VERSION}") +if (LLVM_PACKAGE_VERSION VERSION_GREATER_EQUAL "15" OR + LLVM_PACKAGE_VERSION VERSION_LESS "7") + message(STATUS "The cuda-c-linking sample is expected to build with " + "LLVM development libraries v7 to v14, opaque pointers are " + "not yet supported in libNVVM.") + return() +endif () + +add_executable(cuda-c-linking cuda-c-linking.cpp) +add_custom_target(clobber) +add_custom_target(testrun) +add_test(NAME cuda-c-linking + COMMAND cuda-c-linking + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") +target_link_libraries(cuda-c-linking ${NVVM_LIB} ${CUDA_LIB}) + +# See https://llvm.org/docs/CMake.html#developing-llvm-passes-out-of-source +separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS}) +add_definitions(${LLVM_DEFINITIONS_LIST}) +include_directories(${LLVM_INCLUDE_DIRS}) +llvm_map_components_to_libnames(llvm_libs core support) +target_link_libraries(cuda-c-linking ${llvm_libs}) + +if (UNIX) + set_target_properties(cuda-c-linking PROPERTIES + LINK_FLAGS "-Wl,-rpath,${LIBNVVM_RPATH}") +endif() + +############################## +### Math Lib +############################## + +### The math library can be built to support a number of GPU platforms using the +### common compute_50 architecture. +### For a collection of specific architecutres, the compiler options +### "-gencode=compute_XX,code=sm_XX"... can be used multiple times in the same +### nvcc invocation. +### The result is bundled into a system library using the 'nvcc -lib' feature. +### >> nvcc -m64 -arch=compute_50 -dc math-funcs.cu -o math-funcs64.o +### >> nvcc -m64 -lib math-funcs64.o -o libmathfuncs64.a + +enable_language(CUDA) +set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -dc") # -dc: Build for device only. +if (${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.18.0) + set(CMAKE_CUDA_ARCHITECTURES 50) +endif () +if (WIN32) + set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_INCLUDES 0) + set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_LIBRARIES 0) + set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_OBJECTS 0) +endif () +add_library(mathfuncs64 STATIC math-funcs.cu) +set_target_properties(mathfuncs64 PROPERTIES PREFIX "lib" + OUTPUT_NAME "mathfuncs64" + SUFFIX ".a" CUDA_SEPERABLE_COMPILATION ON) +install(TARGETS cuda-c-linking mathfuncs64 DESTINATION bin) diff --git a/Samples/7_libNVVM/cuda-c-linking/README.md b/Samples/7_libNVVM/cuda-c-linking/README.md new file mode 100644 index 00000000..3c150354 --- /dev/null +++ b/Samples/7_libNVVM/cuda-c-linking/README.md @@ -0,0 +1,49 @@ +Introduction +============ + +This sample demonstrates linking a libnvvm-generated module with an existing +CUDA C library. The LLVM C++ API is used to generate an LLVM IR module that +conforms to the NVVM IR specification and contains a call to an externally- +defined function, and this module is compiled to PTX with libnvvm. The JIT +linker (part of the CUDA Driver API) is then used to assemble the PTX and link +it with the math library, creating a linked CUBIN image. This image is then +executed on the first CUDA device on the system. + +Files +----- + +- cuda-c-linking.cpp - Main source file demonstrating the generated of a + PTX file using libnvvm and linking it with a CUDA C + device library + +- math-funcs - CUDA C device library source file + +- CMakeLists.txt - CMake build script + +Building +-------- + +This sample is optionally built as part of the libnvvm samples from the CUDA +samples tree. Please see the README file at the root of the libnvvm samples +for build instructions. + +Usage +----- + +Once built, the sample can be executed by running the "cuda-c-linking" binary. + +Linux: + + $ cd $SAMPLES_INSTALL_DIR + $ ./cuda-c-linking + +Windows: + + $ cd %SAMPLES_INSTALL_DIR% + $ cuda-c-linking.exe + +For inspection purposes, the following command-line options are available: + +- -save-ptx - Write generated PTX kernel to cuda-c-linking.kernel.ptx +- -save-ir - Write generated LLVM IR to cuda-c-linking.kernel.ll +- -save-cubin - Write linked CUBIN image to cuda-c-linking.linked.cubin diff --git a/Samples/7_libNVVM/cuda-c-linking/cuda-c-linking.cpp b/Samples/7_libNVVM/cuda-c-linking/cuda-c-linking.cpp new file mode 100644 index 00000000..1fd62c38 --- /dev/null +++ b/Samples/7_libNVVM/cuda-c-linking/cuda-c-linking.cpp @@ -0,0 +1,333 @@ +// Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "DDSWriter.h" + +static_assert(sizeof(void *) == 8, "Only 64bit targets are supported."); +using namespace llvm; + +static cl::opt SaveCubin("save-cubin", + cl::desc("Write linker cubin to disk"), + cl::init(false)); +static cl::opt SaveIR("save-ir", cl::desc("Write LLVM IR to disk"), + cl::init(false)); +static cl::opt SavePTX("save-ptx", cl::desc("Write PTX to disk"), + cl::init(false)); + +// Width and height of the output image. +const unsigned width = 1024; +const unsigned height = 512; + +// If 'err' is non-zero, emit an error message and exit. +#define checkCudaErrors(err) __checkCudaErrors(err, __FILE__, __LINE__) +static void __checkCudaErrors(CUresult err, const char *filename, int line) { + assert(filename); + if (CUDA_SUCCESS != err) { + const char *ename = NULL; + const CUresult res = cuGetErrorName(err, &ename); + fprintf(stderr, + "CUDA API Error %04d: \"%s\" from file <%s>, " + "line %i.\n", + err, ((CUDA_SUCCESS == res) ? ename : "Unknown"), filename, line); + exit(err); + } +} + +// Verify that the NVVM result code is success, or terminate otherwise. +void checkNVVMCall(nvvmResult res) { + if (res != NVVM_SUCCESS) { + errs() << "libnvvm call failed\n"; + exit(res); + } +} + +/// generateModule - Generate and LLVM IR module that calls an +/// externally-defined function +std::unique_ptr generateModule(LLVMContext &context) { + // Create the module and setup the layout and triple. + auto mod = std::make_unique("nvvm-module", context); + mod->setDataLayout( + "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-" + "f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:" + "64"); + mod->setTargetTriple("nvptx64-nvidia-cuda"); + + // Get pointers to some commonly-used types. + Type *voidTy = Type::getVoidTy(context); + Type *floatTy = Type::getFloatTy(context); + Type *i32Ty = Type::getInt32Ty(context); + Type *floatGenericPtrTy = PointerType::get(floatTy, /* address space */ 0); + + // void @mandelbrot(float*) + Type *mandelbrotParamTys[] = {floatGenericPtrTy}; + FunctionType *mandelbrotTy = + FunctionType::get(voidTy, mandelbrotParamTys, false); + FunctionCallee mandelbrotFunc = + mod->getOrInsertFunction("mandelbrot", mandelbrotTy); + + // Kernel argument types. + Type *paramTys[] = {floatGenericPtrTy}; + + // Kernel function type. + FunctionType *funcTy = FunctionType::get(voidTy, paramTys, false); + + // Kernel function. + Function *func = + Function::Create(funcTy, GlobalValue::ExternalLinkage, "kernel", *mod); + func->arg_begin()->setName("ptr"); + + // 'entry' basic block in kernel function. + BasicBlock *entry = BasicBlock::Create(context, "entry", func); + + // Build the entry block. + IRBuilder<> builder(entry); + builder.CreateCall(mandelbrotFunc, func->arg_begin()); + builder.CreateRetVoid(); + + // Create kernel metadata. + Metadata *mdVals[] = {ValueAsMetadata::get(func), + MDString::get(context, "kernel"), + ConstantAsMetadata::get(ConstantInt::getTrue(context))}; + MDNode *kernelMD = MDNode::get(context, mdVals); + NamedMDNode *nvvmAnnot = mod->getOrInsertNamedMetadata("nvvm.annotations"); + nvvmAnnot->addOperand(kernelMD); + + // Set the NVVM IR version to 2.0. + auto *two = ConstantInt::get(Type::getInt32Ty(context), 2); + auto *zero = ConstantInt::get(Type::getInt32Ty(context), 0); + auto *versionMD = MDNode::get( + context, {ConstantAsMetadata::get(two), ConstantAsMetadata::get(zero)}); + NamedMDNode *nvvmIRVersion = mod->getOrInsertNamedMetadata("nvvmir.version"); + nvvmIRVersion->addOperand(versionMD); + + return mod; +} + +// Use libNVVM to compile an NVVM IR module to PTX. +std::string generatePtx(const std::string &module, int devMajor, int devMinor, + const char *moduleName) { + assert(moduleName); + + // libNVVM initialization. + nvvmProgram compileUnit; + checkNVVMCall(nvvmCreateProgram(&compileUnit)); + + // Create a libNVVM compilation unit from the NVVM IR. + checkNVVMCall(nvvmAddModuleToProgram(compileUnit, module.c_str(), + module.size(), moduleName)); + std::string computeArg = "-arch=compute_"; + computeArg += utostr(devMajor); + computeArg += utostr(devMinor); + + // Compile the NVVM IR into PTX. + const char *options[] = {computeArg.c_str()}; + nvvmResult res = nvvmCompileProgram(compileUnit, 1, options); + if (res != NVVM_SUCCESS) { + errs() << "nvvmCompileProgram failed!\n"; + size_t logSize; + nvvmGetProgramLogSize(compileUnit, &logSize); + char *msg = new char[logSize]; + nvvmGetProgramLog(compileUnit, msg); + errs() << msg << "\n"; + delete[] msg; + exit(EXIT_FAILURE); + } + + // Get the result PTX size and source. + size_t ptxSize = 0; + checkNVVMCall(nvvmGetCompiledResultSize(compileUnit, &ptxSize)); + char *ptx = new char[ptxSize]; + checkNVVMCall(nvvmGetCompiledResult(compileUnit, ptx)); + + // Clean-up libNVVM. + checkNVVMCall(nvvmDestroyProgram(&compileUnit)); + + return std::string(ptx); +} + +int main(int argc, char **argv) { + cl::ParseCommandLineOptions(argc, argv, "cuda-c-linking"); + + // Locate the pre-built library. + std::string libpath0 = sys::fs::getMainExecutable(argv[0], (void *)main); + SmallString<256> libpath(libpath0); + const char *mathlibFile = "libmathfuncs64.a"; + sys::path::remove_filename(libpath); + sys::path::append(libpath, mathlibFile); + + if (!sys::fs::exists(libpath.c_str())) { + errs() << "Unable to locate math library, expected at " << libpath << '\n'; + return EXIT_FAILURE; + } + + outs() << "Using math library: " << libpath.str() << "\n"; + + // Initialize CUDA and obtain device 0. + checkCudaErrors(cuInit(0)); + int nDevices; + checkCudaErrors(cuDeviceGetCount(&nDevices)); + if (nDevices == 0) { + errs() << "Failed to locate any CUDA compute devices.\n"; + exit(EXIT_FAILURE); + } + CUdevice device; + checkCudaErrors(cuDeviceGet(&device, 0)); + + char name[128]; + checkCudaErrors(cuDeviceGetName(name, 128, device)); + outs() << "Using CUDA Device [0]: " << name << "\n"; + + int devMajor = 0, devMinor = 0; + checkCudaErrors(cuDeviceGetAttribute( + &devMajor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, device)); + checkCudaErrors(cuDeviceGetAttribute( + &devMinor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, device)); + outs() << "Device Compute Capability: " << devMajor << "." << devMinor + << "\n"; + if (devMajor < 5) { + errs() << "ERROR: Device 0 is not sm_50 or later.\n"; + return 1; + } + + // Generate the IR module + LLVMContext ctx; + std::string moduleStr; + auto module = generateModule(ctx); + + if (SaveIR) { + std::error_code err; + raw_fd_ostream out("cuda-c-linking.kernel.ll", err); + out << *(module.get()); + } + + // Write the module to a string. + { + llvm::raw_string_ostream str(moduleStr); + str << *module.get(); + } + + // Generate PTX. + std::string ptx = generatePtx(moduleStr, devMajor, devMinor, + module->getModuleIdentifier().c_str()); + if (SavePTX) { + std::error_code err; + raw_fd_ostream out("cuda-c-linking.kernel.ptx", err); + out << ptx; + } + + // Create the CUDA context. + CUcontext context; + checkCudaErrors(cuCtxCreate(&context, 0, device)); + + // Create a JIT linker and generate the result CUBIN. + CUlinkState linker; + char linkerInfo[1024]{}; + char linkerErrors[1024]{}; + CUjit_option linkerOptions[] = { + CU_JIT_INFO_LOG_BUFFER, CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES, + CU_JIT_ERROR_LOG_BUFFER, CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES, + CU_JIT_LOG_VERBOSE}; + void *linkerOptionValues[] = {linkerInfo, reinterpret_cast(1024), + linkerErrors, reinterpret_cast(1024), + reinterpret_cast(1)}; + checkCudaErrors(cuLinkCreate(5, linkerOptions, linkerOptionValues, &linker)); + checkCudaErrors(cuLinkAddData(linker, CU_JIT_INPUT_PTX, (void *)ptx.c_str(), + ptx.size(), "", 0, NULL, NULL)); + checkCudaErrors(cuLinkAddFile(linker, CU_JIT_INPUT_LIBRARY, libpath.c_str(), + 0, NULL, NULL)); + void *cubin; + size_t cubinSize; + checkCudaErrors(cuLinkComplete(linker, &cubin, &cubinSize)); + outs() << "Linker Log:\n" << linkerInfo << "\n" << linkerErrors << "\n"; + if (SaveCubin) { + std::error_code err; + raw_fd_ostream out("cuda-c-linking.linked.cubin", err, sys::fs::OF_None); + out.write(reinterpret_cast(cubin), cubinSize); + } + + // Create a module and load the cubin into it. + CUmodule cudaModule; + checkCudaErrors(cuModuleLoadDataEx(&cudaModule, cubin, 0, 0, 0)); + + // Now that the CUBIN is loaded, we can release the linker. + checkCudaErrors(cuLinkDestroy(linker)); + + // Get kernel function. + CUfunction function; + checkCudaErrors(cuModuleGetFunction(&function, cudaModule, "kernel")); + + // Device data. + CUdeviceptr devBuffer; + checkCudaErrors(cuMemAlloc(&devBuffer, sizeof(float) * width * height * 4)); + float *data = new float[width * height * 4]; + + // Each thread will generate one pixel, and we'll subdivide the problem into + // 16x16 chunks. + const unsigned blockSizeX = 16; + const unsigned blockSizeY = 16; + const unsigned blockSizeZ = 1; + const unsigned gridSizeX = width / 16; + const unsigned gridSizeY = height / 16; + const unsigned gridSizeZ = 1; + + // Execute the kernel. + outs() << "Launching kernel\n"; + void *params[] = {&devBuffer}; + checkCudaErrors(cuLaunchKernel(function, gridSizeX, gridSizeY, gridSizeZ, + blockSizeX, blockSizeY, blockSizeZ, 0, NULL, + params, NULL)); + + // Retrieve the result data from the device. + checkCudaErrors( + cuMemcpyDtoH(&data[0], devBuffer, sizeof(float) * width * height * 4)); + + writeDDS("mandelbrot.dds", data, width, height); + outs() << "Output saved to mandelbrot.dds\n"; + + // Cleanup. + delete[] data; + checkCudaErrors(cuMemFree(devBuffer)); + checkCudaErrors(cuModuleUnload(cudaModule)); + checkCudaErrors(cuCtxDestroy(context)); + + return 0; +} diff --git a/Samples/7_libNVVM/cuda-c-linking/math-funcs.cu b/Samples/7_libNVVM/cuda-c-linking/math-funcs.cu new file mode 100644 index 00000000..8eba3d14 --- /dev/null +++ b/Samples/7_libNVVM/cuda-c-linking/math-funcs.cu @@ -0,0 +1,85 @@ +// Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Simple implementation of Mandelbrot set from Wikipedia +// http://en.wikipedia.org/wiki/Mandelbrot_set + +// Note that this kernel is meant to be a simple, straight-forward +// implementation, and so may not represent optimized GPU code. +extern "C" +__device__ +void mandelbrot(float* Data) { + + // Which pixel am I? + unsigned DataX = blockIdx.x * blockDim.x + threadIdx.x; + unsigned DataY = blockIdx.y * blockDim.y + threadIdx.y; + unsigned Width = gridDim.x * blockDim.x; + unsigned Height = gridDim.y * blockDim.y; + + float R, G, B, A; + + // Scale coordinates to (-2.5, 1) and (-1, 1) + + float NormX = (float)DataX / (float)Width; + NormX *= 3.5f; + NormX -= 2.5f; + + float NormY = (float)DataY / (float)Height; + NormY *= 2.0f; + NormY -= 1.0f; + + float X0 = NormX; + float Y0 = NormY; + + float X = 0.0f; + float Y = 0.0f; + + unsigned Iter = 0; + unsigned MaxIter = 1000; + + // Iterate + while(X*X + Y*Y < 4.0f && Iter < MaxIter) { + float XTemp = X*X - Y*Y + X0; + Y = 2.0f*X*Y + Y0; + + X = XTemp; + + Iter++; + } + + unsigned ColorG = Iter % 50; + unsigned ColorB = Iter % 25; + + R = 0.0f; + G = (float)ColorG / 50.0f; + B = (float)ColorB / 25.0f; + A = 1.0f; + + Data[DataY*Width*4+DataX*4+0] = R; + Data[DataY*Width*4+DataX*4+1] = G; + Data[DataY*Width*4+DataX*4+2] = B; + Data[DataY*Width*4+DataX*4+3] = A; +} diff --git a/Samples/7_libNVVM/cuda-shared-memory/CMakeLists.txt b/Samples/7_libNVVM/cuda-shared-memory/CMakeLists.txt new file mode 100644 index 00000000..0a018dc8 --- /dev/null +++ b/Samples/7_libNVVM/cuda-shared-memory/CMakeLists.txt @@ -0,0 +1,40 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +add_custom_target(clobber) +add_custom_target(testrun) + +add_test(NAME test-cuda-shared-memory-shared_memory + COMMAND "${CMAKE_BINARY_DIR}/ptxgen/ptxgen" "${CMAKE_CURRENT_SOURCE_DIR}/shared_memory.ll" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") + +add_test(NAME test-cuda-shared-memory-extern_shared_memory + COMMAND "${CMAKE_BINARY_DIR}/ptxgen/ptxgen" "${CMAKE_CURRENT_SOURCE_DIR}/extern_shared_memory.ll" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") + +set_tests_properties(test-cuda-shared-memory-shared_memory + test-cuda-shared-memory-extern_shared_memory + PROPERTIES FIXTURES_REQUIRED PTXGENTEST) diff --git a/Samples/7_libNVVM/cuda-shared-memory/extern_shared_memory.ll b/Samples/7_libNVVM/cuda-shared-memory/extern_shared_memory.ll new file mode 100644 index 00000000..b0e442bc --- /dev/null +++ b/Samples/7_libNVVM/cuda-shared-memory/extern_shared_memory.ll @@ -0,0 +1,58 @@ +; Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +; This NVVM IR program shows how to use unsize external shared memory. +; What it does is similar to the following CUDA C code. +; +; extern __shared__ int a[]; +; +; __global__ void foo() +; { +; int *p1 = a; +; float *p2 = (float *)&a[10]; +; +; *p1 = 10; +; *p2 = 21.0f; +; } +; + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +@a = external addrspace(3) global [0 x i32] + +define void @foo() { +entry: + store i32 10, i32 addrspace(3)* getelementptr inbounds ([0 x i32], [0 x i32] addrspace(3)* @a, i64 0, i64 0), align 4 + store float 2.100000e+01, float addrspace(3)* bitcast (i32 addrspace(3)* getelementptr inbounds ([0 x i32], [0 x i32] addrspace(3)* @a, i64 0, i64 10) to float addrspace(3)*), align 4 + ret void +} + +!nvvm.annotations = !{!0} +!0 = !{void ()* @foo, !"kernel", i32 1} + +!nvvmir.version = !{!1} +!1 = !{i32 2, i32 0} diff --git a/Samples/7_libNVVM/cuda-shared-memory/shared_memory.ll b/Samples/7_libNVVM/cuda-shared-memory/shared_memory.ll new file mode 100644 index 00000000..a4712026 --- /dev/null +++ b/Samples/7_libNVVM/cuda-shared-memory/shared_memory.ll @@ -0,0 +1,58 @@ +; Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +; This NVVM IR program shows how to use shared memory. +; What it does is similar to the following CUDA C code. +; +; +; __shared__ int a; +; __shared__ int b[10]; +; +; __global__ void foo() +; { +; a = 1; +; b[5] = 2; +; } +; + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +@a = internal addrspace(3) global i32 undef, align 4 +@b = internal addrspace(3) global [10 x i32] undef, align 4 + +define void @foo() { +entry: + store i32 1, i32 addrspace(3)* @a, align 4 + store i32 2, i32 addrspace(3)* getelementptr inbounds ([10 x i32], [10 x i32] addrspace(3)* @b, i64 0, i64 5), align 4 + ret void +} + +!nvvm.annotations = !{!0} +!0 = !{void ()* @foo, !"kernel", i32 1} + +!nvvmir.version = !{!1} +!1 = !{i32 2, i32 0} diff --git a/Samples/7_libNVVM/device-side-launch/CMakeLists.txt b/Samples/7_libNVVM/device-side-launch/CMakeLists.txt new file mode 100644 index 00000000..bc96961f --- /dev/null +++ b/Samples/7_libNVVM/device-side-launch/CMakeLists.txt @@ -0,0 +1,50 @@ +# Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(CMAKE_INSTALL_RPATH ${LIBNVVM_HOME}) +set(CMAKE_INCLUDE_CURRENT_DIR YES) +set_property(SOURCE dsl.c + PROPERTY COMPILE_DEFINITIONS LIBCUDADEVRT="${CUDADEVRT_LIB}") + +add_executable(dsl dsl.c) +add_custom_target(clobber) +add_custom_target(testrun) +add_test(NAME device-side-launch COMMAND dsl + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") +target_link_libraries(dsl ${NVVM_LIB} ${CUDA_LIB}) + +if (WIN32) + set_target_properties(dsl PROPERTIES COMPILE_FLAGS "/wd4996") +else (WIN32) + set_target_properties(dsl PROPERTIES LINK_FLAGS "-Wl,-rpath,${LIBNVVM_RPATH}") +endif (WIN32) + +install(TARGETS dsl DESTINATION bin) +install(FILES dsl-gpu64.ll DESTINATION bin) + +# 'dsl' will load dsl-gpu64.ll from the current working directory. That +# .ll file should be present where tests are executed (the build directory). +file(COPY dsl-gpu64.ll DESTINATION "${CMAKE_BINARY_DIR}") diff --git a/Samples/7_libNVVM/device-side-launch/README.md b/Samples/7_libNVVM/device-side-launch/README.md new file mode 100644 index 00000000..9b3a35ee --- /dev/null +++ b/Samples/7_libNVVM/device-side-launch/README.md @@ -0,0 +1,80 @@ +Device-Side Launch From NVVM IR +=============================== + +This document is for the programming language and compiler implementers who +target NVVM IR and plan to support Dynamic Parallelism in their langauge. +It provides the low-level details related to supporting kernel launches at +the NVVM IR level. + +This document assumes the CUDA runtime is used. The method for device-side +launch using the OpenCL runtime is similar but different. + +This document is written after the "Device-Side Launch from PTX" +section from CUDA C Programming Guide +(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#device-side-launch-from-ptx). + +Kernel Launch APIs +------------------ + +Device-side kernel launches can be implemented using the following two APIs +in an NVVM IR program: cudaLaunchDevice() and cudaGetParameterBuffer(). +cudaLaunchDevice() launches the specified kernel with the parameter buffer +that is obtained by calling cudaGetParameterBuffer() and filled with the +parameters to the launched kernel. The parameter buffer can be NULL, i.e., +no need to invoke cudaGetParameterBuffer(), if the launched kernel does not +take any parameters. + +cudaLaunchDevice +---------------- + +At the NVVM IR level, cudaLaunchDeviceV2() needs to be declared in the +form shown below before it is used. + + ; NVVM IR level declaration of cudaLaunchDeviceV2 + declare i32 @cudaLaunchDeviceV2(i8*, %struct.CUstream_st*) + +The CUDA-level declaration below is mapped to one of the aftorementioned NVVM +IR level declarations and is found in the system header file +cuda_device_runtime_api.h. The function is defined in the cudadevrt system +library, which must be linked with a program in order to use device-side +kernel launch functionality. + + extern __device__ __cudart_builtin__ cudaError_t CUDARTAPI + cudaLaunchDeviceV2(void *parameterBuffer, cudaStream_t stream); + +The first parameter is a pointer to the parameter buffer, and the +second parameter is the stream associated with the launch. The layout +of the parameter buffer is explained in "Parameter Buffer Layout" +below. + +cudaGetParameterBuffer +---------------------- + +cudaGetParameterBufferV2() needs to be declared at the NVVM IR level +before it's used. The NVVM IR level declaration must be in the form +given below: + + ; NVVM IR level declaration of cudaGetParameterBufferV2 + declare i8* @cudaGetParameterBufferV2(i8*, %struct.dim3, %struct.dim3, i32) + +The following CUDA-level declaration of cudaGetParameterBufferV2() is +mapped to the aforementioned NVVM IR level declaration: + + extern __device__ __cudart_builtin__ void * CUDARTAPI + cudaGetParameterBufferV2(void *func, dim3 gridDimension, + dim3 blockDimension, + unsigned int sharedMemSize); + +The first parameter is a pointer to the kernel to be launched, and the +other parameters specify the launch configuration, i.e., as grid +dimension, block dimension, and shared memory size. + +Parameter Buffer Layout +----------------------- + +Parameter reordering in the parameter buffer is prohibited, and each individual +parameter placed in the parameter buffer is required to be aligned. That is, +each parameter must be placed at the n-th byte in the parameter buffer, where n +is the smallest multiple of the parameter size that is greater than the offset +of the last byte taken by the preceding parameter. The maximum size of the +parameter buffer is 4KB. diff --git a/Samples/7_libNVVM/device-side-launch/dsl-gpu64.ll b/Samples/7_libNVVM/device-side-launch/dsl-gpu64.ll new file mode 100644 index 00000000..9f414ba7 --- /dev/null +++ b/Samples/7_libNVVM/device-side-launch/dsl-gpu64.ll @@ -0,0 +1,103 @@ +; Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +; This NVVM IR program shows how to call cudaGetParameterBuffer and cudaLaunchDevice functions. +; What it does is similar to the following CUDA C code. +; +; __global__ void kernel(int depth) +; { +; if (threadIdx.x == 0) { +; printf("kernel launched, depth = %d\n", depth); +; } +; +; __syncthreads(); +; +; if (++depth > 3) +; return; +; +; kernel<<<1,1>>>(depth); +; +; } + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +%struct.dim3 = type { i32, i32, i32 } +%struct.CUstream_st = type opaque + +@"$str" = private addrspace(1) constant [29 x i8] c"kernel launched, depth = %d\0A\00" + +define void @kernel(i32 %depth) { +entry: + %tmp31 = alloca i32, align 8 + %gen2local = addrspacecast i32* %tmp31 to i32 addrspace(5)* + %tmp31.sub = bitcast i32* %tmp31 to i8* + %0 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x() + %cmp = icmp eq i32 %0, 0 + br i1 %cmp, label %if.then, label %if.end + +if.then: ; preds = %entry + %1 = addrspacecast i8 addrspace(1)* getelementptr inbounds ([29 x i8], [29 x i8] addrspace(1)* @"$str", i64 0, i64 0) to i8 addrspace(0)* + store i32 %depth, i32 addrspace(5)* %gen2local, align 8 + %call = call i32 @vprintf(i8* %1, i8* %tmp31.sub) + br label %if.end + +if.end: ; preds = %if.then, %entry + call void @llvm.cuda.syncthreads() + %inc = add nsw i32 %depth, 1 + %cmp5 = icmp sgt i32 %inc, 3 + br i1 %cmp5, label %return, label %if.end7 + +if.end7: ; preds = %if.end + %call15 = call i8* @cudaGetParameterBufferV2(i8* bitcast (void (i32)* @kernel to i8*), %struct.dim3 { i32 1, i32 1, i32 1 }, %struct.dim3 { i32 1, i32 1, i32 1 }, i32 0) + %tobool = icmp eq i8* %call15, null + br i1 %tobool, label %return, label %cond.true + +cond.true: ; preds = %if.end7 + %conv = bitcast i8* %call15 to i32* + store i32 %inc, i32* %conv, align 4 + %call20 = call i32 @cudaLaunchDeviceV2(i8* %call15, %struct.CUstream_st* null) + br label %return + +return: ; preds = %cond.true, %if.end7, %if.end + ret void +} + +declare i32 @llvm.nvvm.read.ptx.sreg.tid.x() nounwind readnone + +declare i32 @vprintf(i8* nocapture, i8*) nounwind + +declare void @llvm.cuda.syncthreads() nounwind + +declare i8* @cudaGetParameterBufferV2(i8*, %struct.dim3, %struct.dim3, i32) + +declare i32 @cudaLaunchDeviceV2(i8*, %struct.CUstream_st*) + +!nvvm.annotations = !{!0} +!0 = !{void (i32)* @kernel, !"kernel", i32 1} + +!nvvmir.version = !{!1} +!1 = !{i32 2, i32 0} diff --git a/Samples/7_libNVVM/device-side-launch/dsl.c b/Samples/7_libNVVM/device-side-launch/dsl.c new file mode 100644 index 00000000..b3cce986 --- /dev/null +++ b/Samples/7_libNVVM/device-side-launch/dsl.c @@ -0,0 +1,257 @@ +// Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// The full path to the libcudadevrt.a is determined by the build environment. +const char *_libCudaDevRt = LIBCUDADEVRT; + +static const char *getLibCudaDevRtName(void) { + // Check that the library exists. + FILE *fh = fopen(_libCudaDevRt, "rb"); + if (fh == NULL) { + fprintf(stderr, "Error locating the libcudadevrt runtime: %s\n", + _libCudaDevRt); + exit(EXIT_FAILURE); + } + fclose(fh); + return _libCudaDevRt; +} + +// If 'err' is non-zero, emit an error message and exit. +#define checkCudaErrors(err) __checkCudaErrors(err, __FILE__, __LINE__) +static void __checkCudaErrors(CUresult err, const char *filename, int line) { + assert(filename); + if (CUDA_SUCCESS != err) { + const char *ename = NULL; + const CUresult res = cuGetErrorName(err, &ename); + fprintf(stderr, + "CUDA API Error %04d: \"%s\" from file <%s>, " + "line %i.\n", + err, ((CUDA_SUCCESS == res) ? ename : "Unknown"), filename, line); + exit(err); + } +} + +static char *loadProgramSource(const char *filename, size_t *size) { + assert(filename && size); + char *source = NULL; + *size = 0; + FILE *fh = fopen(filename, "rb"); + if (fh) { + struct stat statbuf; + stat(filename, &statbuf); + source = (char *)malloc(statbuf.st_size + 1); + if (source) { + fread(source, statbuf.st_size, 1, fh); + source[statbuf.st_size] = 0; + *size = statbuf.st_size + 1; + } + } else { + fprintf(stderr, "Error reading file %s\n", filename); + exit(EXIT_FAILURE); + } + return source; +} + +// Compile the NVVM IR into PTX. +static char *generatePTX(const char *ll, size_t size, const char *filename, + int devMajor, int devMinor) { + assert(ll && filename); + + // Create a program instance for libNVVM. + nvvmProgram program; + nvvmResult result = nvvmCreateProgram(&program); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmCreateProgram: Failed\n"); + exit(EXIT_FAILURE); + } + + // Add the NVVM IR as a module to our libNVVM program. + result = nvvmAddModuleToProgram(program, ll, size, filename); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmAddModuleToProgram: Failed\n"); + exit(EXIT_FAILURE); + } + + // Dynamically construct the compute capability. + char arch[32] = {0}; + snprintf(arch, sizeof(arch) - 1, "-arch=compute_%d%d", devMajor, devMinor); + + // Compile the IR into PTX. + const char *options[] = {arch}; + result = nvvmCompileProgram(program, 1, options); + if (result != NVVM_SUCCESS) { + char *Msg = NULL; + size_t LogSize; + fprintf(stderr, "nvvmCompileProgram: Failed\n"); + nvvmGetProgramLogSize(program, &LogSize); + Msg = (char *)malloc(LogSize); + nvvmGetProgramLog(program, Msg); + fprintf(stderr, "%s\n", Msg); + free(Msg); + exit(EXIT_FAILURE); + } + + size_t ptxSize = 0; + result = nvvmGetCompiledResultSize(program, &ptxSize); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmGetCompiledResultSize: Failed\n"); + exit(EXIT_FAILURE); + } + + char *ptx = malloc(ptxSize); + assert(ptx); + result = nvvmGetCompiledResult(program, ptx); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmGetCompiledResult: Failed\n"); + free(ptx); + exit(EXIT_FAILURE); + } + + result = nvvmDestroyProgram(&program); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmDestroyProgram: Failed\n"); + free(ptx); + exit(EXIT_FAILURE); + } + + return ptx; +} + +// Return the device compute capability in major and minor. +static CUdevice cudaDeviceInit(int *major, int *minor) { + assert(major && minor); + // Count the number of CUDA compute capable devices.. + CUresult err = cuInit(0); + int deviceCount = 0; + if (CUDA_SUCCESS == err) + checkCudaErrors(cuDeviceGetCount(&deviceCount)); + if (deviceCount == 0) { + fprintf(stderr, "cudaDeviceInit error: no devices supporting CUDA\n"); + exit(EXIT_FAILURE); + } + + // Get the first device discovered (device 0) and print its name. + CUdevice cuDevice = 0; + checkCudaErrors(cuDeviceGet(&cuDevice, 0)); + char name[128] = {0}; + checkCudaErrors(cuDeviceGetName(name, sizeof(name), cuDevice)); + printf("Using CUDA Device [0]: %s\n", name); + + // Get and test the compute capability. + checkCudaErrors(cuDeviceGetAttribute( + major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, cuDevice)); + checkCudaErrors(cuDeviceGetAttribute( + minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, cuDevice)); + printf("compute capability = %d.%d\n", *major, *minor); + if (*major < 5) { + fprintf(stderr, "Device 0 is not sm_50 or later\n"); + exit(EXIT_FAILURE); + } + return cuDevice; +} + +static CUresult buildKernel(CUcontext *phContext, CUdevice *phDevice, + CUmodule *phModule, CUfunction *phKernel) { + assert(phContext && phDevice && phModule && phKernel); + + // Initialize CUDA and obtain the device's compute capability. + int major = 0, minor = 0; + *phDevice = cudaDeviceInit(&major, &minor); + checkCudaErrors(cuCtxCreate(phContext, 0, *phDevice)); + + // Get the NVVM IR from file. + size_t size = 0; + const char *filename = "dsl-gpu64.ll"; + char *ll = loadProgramSource(filename, &size); + fprintf(stdout, "NVVM IR ll file loaded\n"); + + // Use libNVVM to generate PTX. + char *ptx = generatePTX(ll, size, filename, major, minor); + fprintf(stdout, "PTX generated:\n"); + fprintf(stdout, "%s\n", ptx); + + // Create a context and link the PTX and device library. + const char *libCudaDevRtName = getLibCudaDevRtName(); + void *cubin = NULL; + size_t cubinSize = 0; + CUlinkState linkState; + checkCudaErrors(cuLinkCreate(0, NULL, NULL, &linkState)); + checkCudaErrors(cuLinkAddData(linkState, CU_JIT_INPUT_PTX, (void *)ptx, + strlen(ptx) + 1, 0, 0, 0, 0)); + checkCudaErrors(cuLinkAddFile(linkState, CU_JIT_INPUT_LIBRARY, + libCudaDevRtName, 0, NULL, NULL)); + checkCudaErrors(cuLinkComplete(linkState, &cubin, &cubinSize)); + + // Load the linked binary. + checkCudaErrors(cuModuleLoadData(phModule, cubin)); + + // Locate the kernel entry point. + checkCudaErrors(cuModuleGetFunction(phKernel, *phModule, "kernel")); + + checkCudaErrors(cuLinkDestroy(linkState)); + free(ll); + free(ptx); + return CUDA_SUCCESS; +} + +int main(int argc, char **argv) { + const unsigned int nThreads = 1; + const unsigned int nBlocks = 1; + + // Initialize the device and get a handle to the kernel. + CUcontext hContext = 0; + CUdevice hDevice = 0; + CUmodule hModule = 0; + CUfunction hKernel = 0; + checkCudaErrors(buildKernel(&hContext, &hDevice, &hModule, &hKernel)); + + // Launch the kernel. + int depth = 0; + void *params[] = {&depth}; + checkCudaErrors(cuLaunchKernel(hKernel, nBlocks, 1, 1, nThreads, 1, 1, 0, + NULL, params, NULL)); + + if (hModule) { + checkCudaErrors(cuModuleUnload(hModule)); + hModule = 0; + } + if (hContext) { + checkCudaErrors(cuCtxDestroy(hContext)); + hContext = 0; + } + + return 0; +} diff --git a/Samples/7_libNVVM/ptxgen/CMakeLists.txt b/Samples/7_libNVVM/ptxgen/CMakeLists.txt new file mode 100644 index 00000000..85d341f1 --- /dev/null +++ b/Samples/7_libNVVM/ptxgen/CMakeLists.txt @@ -0,0 +1,46 @@ +# Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +add_executable(ptxgen ptxgen.c) +add_custom_target(clobber) +add_custom_target(testrun) +add_test(NAME ptxgenTest + COMMAND ptxgen "${CMAKE_CURRENT_SOURCE_DIR}/test.ll" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") +set_tests_properties(ptxgenTest PROPERTIES FIXTURES_SETUP PTXGENTEST) + +target_link_libraries(ptxgen ${NVVM_LIB}) + +if (WIN32) + set_target_properties(ptxgen PROPERTIES + COMPILE_FLAGS "/wd4996 -DLIBNVVM_HOME=\"${LIBNVVM_HOME}\"") +else (WIN32) + set_target_properties(ptxgen PROPERTIES + COMPILE_FLAGS "-DLIBNVVM_HOME=\"${LIBNVVM_HOME}\"" + LINK_FLAGS "-Wl,-rpath,${LIBNVVM_RPATH}") +endif (WIN32) + +install(TARGETS ptxgen DESTINATION bin) diff --git a/Samples/7_libNVVM/ptxgen/README.md b/Samples/7_libNVVM/ptxgen/README.md new file mode 100644 index 00000000..8d838d29 --- /dev/null +++ b/Samples/7_libNVVM/ptxgen/README.md @@ -0,0 +1,27 @@ +Introduction +============ + +ptxgen is a simple IR compiler that generates PTX code in stdout with the +input NVVM IR files. It generates warnings, errors, and other messages in +stderr. When multiple input files are given, it links them into a single +module before the compilation, and generates a single PTX module. + +ptxgen always links the libDevice library with the input NVVM IR program. + +Before compiling the input IR, ptxgen will verify the IR for conformance +to the NVVM IR specification. + +Usage +----- + +The command-line options, except for the program name and the input file +names, are directly passed to nvvmCompileProgram without modification. +Each input NVVM IR file can be either in the bitcode representation or +in the text representation. Input file names and command-line options can be +interleaved. + +For example, + + $ ptxgen a.ll -arch=compute_50 b.bc + +links a.ll and b.bc, and generates PTX code for the compute_50 architecture. diff --git a/Samples/7_libNVVM/ptxgen/ptxgen.c b/Samples/7_libNVVM/ptxgen/ptxgen.c new file mode 100644 index 00000000..d8058389 --- /dev/null +++ b/Samples/7_libNVVM/ptxgen/ptxgen.c @@ -0,0 +1,267 @@ +// Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include +#include +#include +#include +#include +#include + +/* Two levels of indirection to stringify LIBDEVICE_MAJOR_VERSION and + * LIBDEVICE_MINOR_VERSION correctly. */ +#define getLibDeviceName() \ + _getLibDeviceName(LIBDEVICE_MAJOR_VERSION, LIBDEVICE_MINOR_VERSION) +#define _getLibDeviceName(MAJOR, MINOR) __getLibDeviceName(MAJOR, MINOR) +#define __getLibDeviceName(MAJOR, MINOR) \ + ("/libdevice/libdevice." #MAJOR #MINOR ".bc") + +#define getLibnvvmHome() _getLibnvvmHome(LIBNVVM_HOME) +#define _getLibnvvmHome(NVVM_HOME) __getLibnvvmHome(NVVM_HOME) +#define __getLibnvvmHome(NVVM_HOME) (#NVVM_HOME) + +typedef enum { + PTXGEN_SUCCESS = 0x0000, + PTXGEN_FILE_IO_ERROR = 0x0001, + PTXGEN_BAD_ALLOC_ERROR = 0x0002, + PTXGEN_LIBNVVM_COMPILATION_ERROR = 0x0004, + PTXGEN_LIBNVVM_ERROR = 0x0008, + PTXGEN_INVALID_USAGE = 0x0010, + PTXGEN_LIBNVVM_HOME_UNDEFINED = 0x0020, + PTXGEN_LIBNVVM_VERIFICATION_ERROR = 0x0040 +} PTXGenStatus; + +typedef enum { PTXGEN_INPUT_PROGRAM, PTXGEN_INPUT_LIBDEVICE } PTXGENInput; + +static PTXGenStatus getLibDevicePath(char **buffer) { + assert(buffer); + + const char *libnvvmPath = getLibnvvmHome(); + if (libnvvmPath == NULL) { + fprintf(stderr, "The environment variable LIBNVVM_HOME undefined\n"); + return PTXGEN_LIBNVVM_HOME_UNDEFINED; + } + + const char *libdevice = getLibDeviceName(); + *buffer = malloc(strlen(libnvvmPath) + strlen(libdevice) + 1); + if (*buffer == NULL) { + fprintf(stderr, "Failed to allocate memory\n"); + return PTXGEN_BAD_ALLOC_ERROR; + } + + // Concatenate libnvvmPath with libdevice. + *buffer = strcat(strcpy(*buffer, libnvvmPath), libdevice); + + return PTXGEN_SUCCESS; +} + +static PTXGenStatus addFileToProgram(const char *filename, nvvmProgram prog, + PTXGENInput inputType) { + assert(filename); + + // Open the input file. + FILE *f = fopen(filename, "rb"); + if (f == NULL) { + fprintf(stderr, "Failed to open %s\n", filename); + return PTXGEN_FILE_IO_ERROR; + } + + // Allocate a buffer for the input. + struct stat fileStat; + fstat(fileno(f), &fileStat); + char *buffer = malloc(fileStat.st_size); + if (buffer == NULL) { + fprintf(stderr, "Failed to allocate memory\n"); + return PTXGEN_BAD_ALLOC_ERROR; + } + const size_t size = fread(buffer, 1, fileStat.st_size, f); + if (ferror(f)) { + fprintf(stderr, "Failed to read %s\n", filename); + fclose(f); + free(buffer); + return PTXGEN_FILE_IO_ERROR; + } + fclose(f); + + // Add the input to the libNVVM program instance. + nvvmResult result; + if (inputType == PTXGEN_INPUT_LIBDEVICE) + result = nvvmLazyAddModuleToProgram(prog, buffer, size, filename); + else + result = nvvmAddModuleToProgram(prog, buffer, size, filename); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "Failed to add the module %s to the compilation unit\n", + filename); + free(buffer); + return PTXGEN_LIBNVVM_ERROR; + } + + free(buffer); + return PTXGEN_SUCCESS; +} + +// Read the nvvmProgram compilation log. +static PTXGenStatus dumpCompilationLog(nvvmProgram prog) { + size_t logSize; + PTXGenStatus status = PTXGEN_SUCCESS; + if (nvvmGetProgramLogSize(prog, &logSize) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to get the compilation log size\n"); + status = PTXGEN_LIBNVVM_ERROR; + } else { + char *log = malloc(logSize); + if (log == NULL) { + fprintf(stderr, "Failed to allocate memory\n"); + status = PTXGEN_BAD_ALLOC_ERROR; + } else if (nvvmGetProgramLog(prog, log) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to get the compilation log\n"); + status = PTXGEN_LIBNVVM_ERROR; + } else { + fprintf(stderr, "%s\n", log); + } + free(log); + } + return status; +} + +static PTXGenStatus generatePTX(unsigned numOptions, const char **options, + unsigned numFilenames, const char **filenames) { + // Create the compilation unit (the libNVVM program instance). + nvvmProgram prog; + if (nvvmCreateProgram(&prog) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to create the compilation unit\n"); + return PTXGEN_LIBNVVM_ERROR; + } + + // Add the module to the compilation unit. + for (unsigned i = 0; i < numFilenames; ++i) { + PTXGenStatus status = + addFileToProgram(filenames[i], prog, PTXGEN_INPUT_PROGRAM); + if (status != PTXGEN_SUCCESS) { + nvvmDestroyProgram(&prog); + return status; + } + } + + // Verify the compilation unit. + if (nvvmVerifyProgram(prog, numOptions, options) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to verify the compilation unit\n"); + return PTXGEN_LIBNVVM_VERIFICATION_ERROR; + } + + // Add libdevice to the libNVVM program instance. + char *libDeviceName; + PTXGenStatus status = getLibDevicePath(&libDeviceName); + if (status != PTXGEN_SUCCESS) { + nvvmDestroyProgram(&prog); + return status; + } + status = addFileToProgram(libDeviceName, prog, PTXGEN_INPUT_LIBDEVICE); + free(libDeviceName); + if (status != PTXGEN_SUCCESS) { + nvvmDestroyProgram(&prog); + return status; + } + + // Display the compilation log. + status |= dumpCompilationLog(prog); + if (status & PTXGEN_LIBNVVM_VERIFICATION_ERROR) { + nvvmDestroyProgram(&prog); + return status; + } + + // Compile the compilation unit. + if (nvvmCompileProgram(prog, numOptions, options) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to generate PTX from the compilation unit\n"); + status |= PTXGEN_LIBNVVM_COMPILATION_ERROR; + } else { + size_t ptxSize; + if (nvvmGetCompiledResultSize(prog, &ptxSize) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to get the PTX output size\n"); + status |= PTXGEN_LIBNVVM_ERROR; + } else { + char *ptx = malloc(ptxSize); + if (ptx == NULL) { + fprintf(stderr, "Failed to allocate memory\n"); + status |= PTXGEN_BAD_ALLOC_ERROR; + } else if (nvvmGetCompiledResult(prog, ptx) != NVVM_SUCCESS) { + fprintf(stderr, "Failed to get the PTX output\n"); + status |= PTXGEN_LIBNVVM_ERROR; + } else { + fprintf(stdout, "%s\n", ptx); + } + free(ptx); + } + } + + status |= dumpCompilationLog(prog); + + // Release the resources. + nvvmDestroyProgram(&prog); + + return status; +} + +static void showUsage(void) { + fprintf(stderr, + "Usage: ptxgen [OPTION]... [FILE]...\n" + " [FILE] could be a .bc file or a .ll file\n"); +} + +int main(int argc, char *argv[]) { + PTXGenStatus status = PTXGEN_SUCCESS; + + if (argc == 1) { + showUsage(); + return PTXGEN_INVALID_USAGE; + } + + // Extract libNVVM options and the input file names. + unsigned numOptions = 0, numFilenames = 0; + const char **options = malloc((argc - 1) * sizeof(char *)); + const char **filenames = malloc((argc - 1) * sizeof(char *)); + assert(options && filenames); + for (int i = 1; i < argc; ++i) { + if (argv[i][0] == '-') { + options[numOptions] = argv[i]; + ++numOptions; + } else { + filenames[numFilenames] = argv[i]; + ++numFilenames; + } + } + + if (numFilenames == 0) { + showUsage(); + status = PTXGEN_INVALID_USAGE; + } else { + // Use libNVVM to generate PTX. + status = generatePTX(numOptions, options, numFilenames, filenames); + } + + free(options); + free(filenames); + return status; +} diff --git a/Samples/7_libNVVM/ptxgen/test.ll b/Samples/7_libNVVM/ptxgen/test.ll new file mode 100644 index 00000000..5ba677c0 --- /dev/null +++ b/Samples/7_libNVVM/ptxgen/test.ll @@ -0,0 +1,39 @@ +; Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +define void @_Z9testEmptyv() { +entry: + ret void +} + +!nvvmir.version = !{!0} +!nvvm.annotations = !{!1} + +!0 = !{i32 2, i32 0} +!1 = !{void ()* @_Z9testEmptyv, !"kernel", i32 1} diff --git a/Samples/7_libNVVM/simple/CMakeLists.txt b/Samples/7_libNVVM/simple/CMakeLists.txt new file mode 100644 index 00000000..a4053c76 --- /dev/null +++ b/Samples/7_libNVVM/simple/CMakeLists.txt @@ -0,0 +1,49 @@ +# Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(CMAKE_INSTALL_RPATH ${LIBNVVM_HOME}) +set(CMAKE_INCLUDE_CURRENT_DIR YES) + +add_executable(simple simple.c) +add_custom_target(clobber) +add_custom_target(testrun) +add_test(NAME simple COMMAND simple WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") + +target_link_libraries(simple ${NVVM_LIB} ${CUDA_LIB}) + +if (WIN32) + set_target_properties(simple PROPERTIES COMPILE_FLAGS "/wd4996") +else (WIN32) + set_target_properties(simple PROPERTIES + LINK_FLAGS "-Wl,-rpath,${LIBNVVM_RPATH}") +endif (WIN32) + +install(TARGETS simple DESTINATION bin) +install(FILES simple-gpu64.ll DESTINATION bin) + +# 'simple' will load simple-gpu64.ll from the current working directory. That +# .ll file should be present where tests are executed (the build directory). +file(COPY simple-gpu64.ll DESTINATION "${CMAKE_BINARY_DIR}") diff --git a/Samples/7_libNVVM/simple/README.md b/Samples/7_libNVVM/simple/README.md new file mode 100644 index 00000000..649da348 --- /dev/null +++ b/Samples/7_libNVVM/simple/README.md @@ -0,0 +1,6 @@ +Introduction +============ + +simple is a C program that illustrates the use of libNVVM. +simple converts the simple-gpu64.ll NVVM-IR file into PTX via the libNVVM API +and forwards that PTX to the CUDA driver for GPU execution. diff --git a/Samples/7_libNVVM/simple/simple-gpu64.ll b/Samples/7_libNVVM/simple/simple-gpu64.ll new file mode 100644 index 00000000..aae5838e --- /dev/null +++ b/Samples/7_libNVVM/simple/simple-gpu64.ll @@ -0,0 +1,61 @@ +; Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +define i32 @ave(i32 %a, i32 %b) { +entry: + %add = add nsw i32 %a, %b + %div = sdiv i32 %add, 2 + ret i32 %div +} + +define void @simple(i32* %data) { +entry: + %0 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() + %1 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x() + %mul = mul i32 %0, %1 + %2 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x() + %add = add i32 %mul, %2 + %call = call i32 @ave(i32 %add, i32 %add) + %idxprom = sext i32 %add to i64 + %arrayidx = getelementptr inbounds i32, i32* %data, i64 %idxprom + store i32 %call, i32* %arrayidx, align 4 + ret void +} + +declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() nounwind readnone + +declare i32 @llvm.nvvm.read.ptx.sreg.ntid.x() nounwind readnone + +declare i32 @llvm.nvvm.read.ptx.sreg.tid.x() nounwind readnone + +!nvvm.annotations = !{!1} +!1 = !{void (i32*)* @simple, !"kernel", i32 1} + +!nvvmir.version = !{!2} +!2 = !{i32 2, i32 0, i32 3, i32 1} diff --git a/Samples/7_libNVVM/simple/simple.c b/Samples/7_libNVVM/simple/simple.c new file mode 100644 index 00000000..aab09de9 --- /dev/null +++ b/Samples/7_libNVVM/simple/simple.c @@ -0,0 +1,237 @@ +// Copyright (c) 1993-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include +#include +#include +#include +#include +#include +#include +#include + +// If 'err' is non-zero, emit an error message and exit. +#define checkCudaErrors(err) __checkCudaErrors(err, __FILE__, __LINE__) +static void __checkCudaErrors(CUresult err, const char *filename, int line) { + assert(filename); + if (CUDA_SUCCESS != err) { + const char *ename = NULL; + const CUresult res = cuGetErrorName(err, &ename); + fprintf(stderr, + "CUDA API Error %04d: \"%s\" from file <%s>, " + "line %i.\n", + err, ((CUDA_SUCCESS == res) ? ename : "Unknown"), filename, line); + exit(err); + } +} + +// Return a CUDA capable device or exit if one cannot be found. +static CUdevice cudaDeviceInit(void) { + CUresult err = cuInit(0); + int deviceCount = 0; + if (CUDA_SUCCESS == err) + checkCudaErrors(cuDeviceGetCount(&deviceCount)); + if (deviceCount == 0) { + fprintf(stderr, "cudaDeviceInit error: no devices supporting CUDA\n"); + exit(EXIT_FAILURE); + } + + // Locate a CUDA supporting device and its name. + CUdevice cuDevice = 0; + checkCudaErrors(cuDeviceGet(&cuDevice, 0)); + char name[128]; + cuDeviceGetName(name, sizeof(name), cuDevice); + printf("Using CUDA Device [0]: %s\n", name); + + // Obtain the device's compute capability. + int major = 0; + checkCudaErrors(cuDeviceGetAttribute( + &major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, cuDevice)); + if (major < 5) { + fprintf(stderr, "Device 0 is not sm_50 or later\n"); + exit(EXIT_FAILURE); + } + return cuDevice; +} + +static CUresult initCUDA(CUcontext *phContext, CUdevice *phDevice, + CUmodule *phModule, CUfunction *phKernel, + const char *ptx) { + assert(phContext && phDevice && phModule && phKernel && ptx); + + // Initialize. + *phDevice = cudaDeviceInit(); + + // Create a CUDA context on the device. + checkCudaErrors(cuCtxCreate(phContext, 0, *phDevice)); + + // Load the PTX. + checkCudaErrors(cuModuleLoadDataEx(phModule, ptx, 0, 0, 0)); + + // Locate the kernel entry point. + checkCudaErrors(cuModuleGetFunction(phKernel, *phModule, "simple")); + + return CUDA_SUCCESS; +} + +static char *loadProgramSource(const char *filename, size_t *size) { + assert(filename && size); + char *source = NULL; + *size = 0; + FILE *fh = fopen(filename, "rb"); + if (fh) { + struct stat statbuf; + stat(filename, &statbuf); + source = malloc(statbuf.st_size + 1); + assert(source); + fread(source, statbuf.st_size, 1, fh); + source[statbuf.st_size] = 0; + *size = statbuf.st_size + 1; + } else { + fprintf(stderr, "Error reading file %s\n", filename); + exit(EXIT_FAILURE); + } + return source; +} + +static char *generatePTX(const char *ir, size_t size, const char *filename) { + assert(ir && filename); + + // Create a program instance for use with libNVVM. + nvvmProgram program; + nvvmResult result = nvvmCreateProgram(&program); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmCreateProgram: Failed\n"); + exit(EXIT_FAILURE); + } + + // Add the NVVM IR to the program instance. + result = nvvmAddModuleToProgram(program, ir, size, filename); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmAddModuleToProgram: Failed\n"); + exit(EXIT_FAILURE); + } + + // Compile the NVVM IR into PTX. + result = nvvmCompileProgram(program, 0, NULL); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmCompileProgram: Failed\n"); + size_t logSize; + nvvmGetProgramLogSize(program, &logSize); + char *msg = malloc(logSize); + assert(msg); + nvvmGetProgramLog(program, msg); + fprintf(stderr, "%s\n", msg); + free(msg); + exit(EXIT_FAILURE); + } + + // Obrain the resulting PTX. + size_t ptxSize; + result = nvvmGetCompiledResultSize(program, &ptxSize); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmGetCompiledResultSize: Failed\n"); + exit(EXIT_FAILURE); + } + char *ptx = malloc(ptxSize); + assert(ptx); + result = nvvmGetCompiledResult(program, ptx); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmGetCompiledResult: Failed\n"); + free(ptx); + exit(EXIT_FAILURE); + } + + // Cleanup the libNVVM program instance. + result = nvvmDestroyProgram(&program); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmDestroyProgram: Failed\n"); + free(ptx); + exit(EXIT_FAILURE); + } + + return ptx; +} + +int main(int argc, char **argv) { + const unsigned int nThreads = 32; + const unsigned int nBlocks = 1; + const size_t memSize = nThreads * nBlocks * sizeof(int); + const char *filename = "simple-gpu64.ll"; + + // Retrieve the NVVM IR from filename and create the kernel parameters. + size_t size = 0; + char *ir = loadProgramSource(filename, &size); + fprintf(stdout, "NVVM IR (.ll) file loaded\n"); + + // Use libNVVM to generate PTX from the NVVM IR. + char *ptx = generatePTX(ir, size, filename); + fprintf(stdout, "PTX generated:\n"); + fprintf(stdout, "%s\n", ptx); + + // Initialize the device and get a handle to the kernel. + CUcontext hContext = 0; + CUdevice hDevice = 0; + CUmodule hModule = 0; + CUfunction hKernel = 0; + checkCudaErrors(initCUDA(&hContext, &hDevice, &hModule, &hKernel, ptx)); + + // Allocate memory on the host and device. + int *hData = malloc(memSize); + if (!hData) { + fprintf(stderr, "Could not allocate host memory\n"); + exit(EXIT_FAILURE); + } + CUdeviceptr dData = 0; + checkCudaErrors(cuMemAlloc(&dData, memSize)); + + // Launch the kernel. + void *params[] = {&dData}; + checkCudaErrors(cuLaunchKernel(hKernel, nBlocks, 1, 1, nThreads, 1, 1, 0, + NULL, params, NULL)); + fprintf(stdout, "CUDA kernel launched\n"); + + // Copy the result back to the host. + checkCudaErrors(cuMemcpyDtoH(hData, dData, memSize)); + + // Print the result. + for (unsigned i = 0; i < nBlocks * nThreads; i++) + fprintf(stdout, "%d ", hData[i]); + fprintf(stdout, "\n"); + + // Cleanup. + if (dData) + checkCudaErrors(cuMemFree(dData)); + if (hModule) + checkCudaErrors(cuModuleUnload(hModule)); + if (hContext) + checkCudaErrors(cuCtxDestroy(hContext)); + free(hData); + free(ir); + free(ptx); + + return 0; +} diff --git a/Samples/7_libNVVM/syscalls/CMakeLists.txt b/Samples/7_libNVVM/syscalls/CMakeLists.txt new file mode 100644 index 00000000..bffae373 --- /dev/null +++ b/Samples/7_libNVVM/syscalls/CMakeLists.txt @@ -0,0 +1,39 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +add_custom_target(clobber) +add_custom_target(testrun) + +add_test(NAME test-syscalls-malloc-free + COMMAND "${CMAKE_BINARY_DIR}/ptxgen/ptxgen" "${CMAKE_CURRENT_SOURCE_DIR}/malloc-free.ll" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") + +add_test(NAME test-syscalls-vprintf + COMMAND "${CMAKE_BINARY_DIR}/ptxgen/ptxgen" "${CMAKE_CURRENT_SOURCE_DIR}/vprintf.ll" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") + +set_tests_properties(test-syscalls-vprintf test-syscalls-malloc-free + PROPERTIES FIXTURES_REQUIRED PTXGENTEST) diff --git a/Samples/7_libNVVM/syscalls/malloc-free.ll b/Samples/7_libNVVM/syscalls/malloc-free.ll new file mode 100644 index 00000000..525ca59d --- /dev/null +++ b/Samples/7_libNVVM/syscalls/malloc-free.ll @@ -0,0 +1,60 @@ +; Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +; This NVVM IR program shows how to call the malloc and free functions. +; What it does is similar to the following CUDA C code. +; +; __device__ int *p; +; +; __global__ void foo() +; { +; p = (int *)malloc(128); +; free(p); +; } +; + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +@p = internal addrspace(1) global i32* null, align 8 + +define void @foo() { +entry: + %call = tail call i8* @malloc(i64 128) + %conv = bitcast i8* %call to i32* + store i32* %conv, i32* addrspace(1)* @p, align 8 + tail call void @free(i8* %call) + ret void +} + +declare noalias i8* @malloc(i64) nounwind +declare void @free(i8* nocapture) nounwind + +!nvvm.annotations = !{!0} +!0 = !{void ()* @foo, !"kernel", i32 1} + +!nvvmir.version = !{!1} +!1 = !{i32 2, i32 0} diff --git a/Samples/7_libNVVM/syscalls/vprintf.ll b/Samples/7_libNVVM/syscalls/vprintf.ll new file mode 100644 index 00000000..2f1a6d47 --- /dev/null +++ b/Samples/7_libNVVM/syscalls/vprintf.ll @@ -0,0 +1,92 @@ +; Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +; This NVVM IR programs shows how to call the vprintf function. +; What it does is similar to the following CUDA C code. +; +; __global__ void foo(char c, short s, int i, long l, +; float f, double d, char* p) +; { +; printf("Hello world from %c %hi %d %ld %f %f %s\n", c, s, i, l, f, d, p); +; } +; +; There is no direct printf() support. In order to use +; vprintf(), a local buffer is allocated. Integer types that +; are shorter than int need to be extended to int and float +; needs to be extended to double before being pushed into +; the local buffer. + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +@"$str" = private addrspace(4) constant [41 x i8] c"Hello world from %c %hi %d %ld %f %f %s\0A\00" + +define void @foo(i8 signext %c, i16 signext %s, i32 %i, i64 %l, float %f, double %d, i8* %p) { +entry: + %tmp = alloca [12 x i32], align 8 + %tmp2 = getelementptr inbounds [12 x i32], [12 x i32]* %tmp, i64 0, i64 0 + %gen2local = addrspacecast i32* %tmp2 to i32 addrspace(5)* + + %conv = sext i8 %c to i32 + store i32 %conv, i32 addrspace(5)* %gen2local, align 8 + + %conv2 = sext i16 %s to i32 + %getElem11 = getelementptr i32, i32 addrspace(5)* %gen2local, i64 1 + store i32 %conv2, i32 addrspace(5)* %getElem11, align 4 + + %getElem12 = getelementptr i32, i32 addrspace(5)* %gen2local, i64 2 + store i32 %i, i32 addrspace(5)* %getElem12, align 8 + + %getElem13 = getelementptr i32, i32 addrspace(5)* %gen2local, i64 4 + %bitCast = bitcast i32 addrspace(5)* %getElem13 to i64 addrspace(5)* + store i64 %l, i64 addrspace(5)* %bitCast, align 8 + + %getElem14 = getelementptr i32, i32 addrspace(5)* %gen2local, i64 6 + %conv6 = fpext float %f to double + %bitCast15 = bitcast i32 addrspace(5)* %getElem14 to double addrspace(5)* + store double %conv6, double addrspace(5)* %bitCast15, align 8 + + %getElem16 = getelementptr i32, i32 addrspace(5)* %gen2local, i64 8 + %bitCast17 = bitcast i32 addrspace(5)* %getElem16 to double addrspace(5)* + store double %d, double addrspace(5)* %bitCast17, align 8 + + %getElem18 = getelementptr i32, i32 addrspace(5)* %gen2local, i64 10 + %bitCast19 = bitcast i32 addrspace(5)* %getElem18 to i8* addrspace(5)* + store i8* %p, i8* addrspace(5)* %bitCast19, align 8 + + %0 = addrspacecast i8 addrspace(4)* getelementptr inbounds ([41 x i8], [41 x i8] addrspace(4)* @"$str", i64 0, i64 0) to i8* + %1 = bitcast [12 x i32]* %tmp to i8* + %call = call i32 @vprintf(i8* %0, i8* %1) + ret void +} + +declare i32 @vprintf(i8* nocapture, i8*) nounwind + +!nvvm.annotations = !{!0} +!0 = !{void (i8, i16, i32, i64, float, double, i8*)* @foo, !"kernel", i32 1} + +!nvvmir.version = !{!1} +!1 = !{i32 2, i32 0} diff --git a/Samples/7_libNVVM/utils/build.bat b/Samples/7_libNVVM/utils/build.bat new file mode 100755 index 00000000..55e5f2e3 --- /dev/null +++ b/Samples/7_libNVVM/utils/build.bat @@ -0,0 +1,5 @@ +mkdir build +cd build +cmake.exe -DCMAKE_INSTALL_PREFIX=..\install -G "NMake Makefiles" .. +nmake && nmake test && nmake install +cd .. diff --git a/Samples/7_libNVVM/utils/build.sh b/Samples/7_libNVVM/utils/build.sh new file mode 100755 index 00000000..536ba608 --- /dev/null +++ b/Samples/7_libNVVM/utils/build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=../install .. +make && make test && make install +cd .. diff --git a/Samples/7_libNVVM/uvmlite/CMakeLists.txt b/Samples/7_libNVVM/uvmlite/CMakeLists.txt new file mode 100644 index 00000000..809c42d4 --- /dev/null +++ b/Samples/7_libNVVM/uvmlite/CMakeLists.txt @@ -0,0 +1,52 @@ +# Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(CMAKE_INSTALL_RPATH ${LIBNVVM_HOME}) +set(CMAKE_INCLUDE_CURRENT_DIR YES) +set_property(SOURCE uvmlite.c + PROPERTY COMPILE_DEFINITIONS LIBCUDADEVRT="${CUDADEVRT_LIB}") + +add_executable(uvmlite uvmlite.c) +add_custom_target(clobber) +add_custom_target(testrun) +add_test(NAME uvmlite COMMAND uvmlite WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") +target_link_libraries(uvmlite ${NVVM_LIB} ${CUDA_LIB}) + +if (WIN32) + set (LIB_ARCH_SUFFIX "/x64") + set_target_properties(uvmlite PROPERTIES COMPILE_FLAGS "/wd4996") +else (WIN32) + set (LIB_ARCH_SUFFIX "64") + set_target_properties(uvmlite PROPERTIES + LINK_FLAGS "-Wl,-rpath,${LIBNVVM_RPATH}") +endif () + +install(TARGETS uvmlite DESTINATION bin) +install(FILES uvmlite64.ll DESTINATION bin) + +# 'uvmlite' will load uvmlite64.ll from the current working directory. That +# .ll file should be present where tests are executed (the build directory). +file(COPY uvmlite64.ll DESTINATION "${CMAKE_BINARY_DIR}") diff --git a/Samples/7_libNVVM/uvmlite/README.md b/Samples/7_libNVVM/uvmlite/README.md new file mode 100644 index 00000000..643212af --- /dev/null +++ b/Samples/7_libNVVM/uvmlite/README.md @@ -0,0 +1,59 @@ +Unified Virtual Memory Lite (UVM-lite) From NVVM IR +=================================================== + +This document is for the programming language and compiler +implementers who target NVVM IR and plan to support Unified Virtual +Memory Lite (UVM-lite) in their language. It provides the low-level +details related to supporting kernel launches at the NVVM IR level. + +This document assumes the CUDA runtime is used. For the limits and +restrictions, please refer to the official CUDA documents. + +Allocating a variable in the unified virtual memory environment. +---------------------------------------------------------------- + +In a system that supports unified virtual memory environment, a +variable can be allocated at a location where host and other devices +in the system can reference the variable directly. We call such a +variable a managed variable and say that the variable has the +managed attribute or is managed. The attribute can be specified +using a metadata. + + @xxx = internal addrspace(1) global i32 10, align 4 + + ... + + !1 = !{i32 addrspace(1)* @xxx, !"managed", i32 1} + +A global variable, e.g., @xxx, can be defined and used as usual, but +here we have a metadata that specifies the managed attributes. (Note +that the attribute can only be used with variables in the global +address space.) + +Accessing a managed variable in the host +---------------------------------------- + +To access a managed variable defined in the NVVM IR code, we should +retrieve a device pointer first, which can be done using cuModuleGetGlobal(). + + CUdeviceptr devp_xxx; // device pointer to xxx + size_t size_xxx; // size of xxx + result = cuModuleGetGlobal(&devp_xxx, &size_xxx, hModule, "xxx"); + +Whether or not the pointer points to managed memory may be queried +by calling cuPointerGetAttribute() with the pointer attribute +CU_POINTER_ATTRIBUTE_IS_MANAGED. + + unsigned int attrVal; + result = cuPointerGetAttribute(&attrVal, CU_POINTER_ATTRIBUTE_IS_MANAGED, devp_xxx); + // result will be 1 if the pointer is managed or zero otherwise. + +It is safe to use cuPointerGetAttribute to get the host pointers, +since the device pointers are opaque. + + void *host_ptr_xxx; + int *p_xxx; + + result = cuPointerGetAttribute(&host_ptr_xxx, CU_POINTER_ATTRIBUTE_HOST_POINTER, devp_xxx); + p_xxx = (int *)devp_xxx; + *p_xxx += 1; // read & write without explicit copying diff --git a/Samples/7_libNVVM/uvmlite/uvmlite.c b/Samples/7_libNVVM/uvmlite/uvmlite.c new file mode 100644 index 00000000..3f8c54b9 --- /dev/null +++ b/Samples/7_libNVVM/uvmlite/uvmlite.c @@ -0,0 +1,323 @@ +// Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define ERROR_IF(expr) \ + if (expr) { \ + fprintf(stderr, "Failed check at %s:%d\n", __FILE__, __LINE__); \ + exit(EXIT_FAILURE); \ + } + +// If 'err' is non-zero, emit an error message and exit. +#define checkCudaErrors(err) __checkCudaErrors(err, __FILE__, __LINE__) +static void __checkCudaErrors(CUresult err, const char *filename, int line) { + assert(filename); + if (CUDA_SUCCESS != err) { + const char *ename = NULL; + const CUresult res = cuGetErrorName(err, &ename); + fprintf(stderr, + "CUDA API Error %04d: \"%s\" from file <%s>, " + "line %i.\n", + err, ((CUDA_SUCCESS == res) ? ename : "Unknown"), filename, line); + exit(err); + } +} + +// Compile the NVVM IR into PTX. +static char *generatePTX(const char *ll, size_t size, const char *filename, + int devMajor, int devMinor) { + assert(ll && filename); + + // Create a program instance for libNVVM. + nvvmProgram program; + nvvmResult result = nvvmCreateProgram(&program); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmCreateProgram: Failed\n"); + exit(EXIT_FAILURE); + } + + // Add the NVVM IR as a module to our libNVVM program. + result = nvvmAddModuleToProgram(program, ll, size, filename); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmAddModuleToProgram: Failed\n"); + exit(EXIT_FAILURE); + } + + // Dynamically construct the compute capability. + char arch[32] = {0}; + snprintf(arch, sizeof(arch) - 1, "-arch=compute_%d%d", devMajor, devMinor); + + // Compile the IR into PTX. + const char *options[] = {arch}; + result = nvvmCompileProgram(program, 1, options); + if (result != NVVM_SUCCESS) { + char *Msg = NULL; + size_t LogSize; + fprintf(stderr, "nvvmCompileProgram: Failed\n"); + nvvmGetProgramLogSize(program, &LogSize); + Msg = (char *)malloc(LogSize); + nvvmGetProgramLog(program, Msg); + fprintf(stderr, "%s\n", Msg); + free(Msg); + exit(EXIT_FAILURE); + } + + size_t ptxSize = 0; + result = nvvmGetCompiledResultSize(program, &ptxSize); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmGetCompiledResultSize: Failed\n"); + exit(EXIT_FAILURE); + } + + char *ptx = malloc(ptxSize); + assert(ptx); + result = nvvmGetCompiledResult(program, ptx); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmGetCompiledResult: Failed\n"); + free(ptx); + exit(EXIT_FAILURE); + } + + result = nvvmDestroyProgram(&program); + if (result != NVVM_SUCCESS) { + fprintf(stderr, "nvvmDestroyProgram: Failed\n"); + free(ptx); + exit(EXIT_FAILURE); + } + + return ptx; +} + +static char *loadProgramSource(const char *filename, size_t *size) { + assert(filename && size); + *size = 0; + char *source = NULL; + FILE *fh = fopen(filename, "rb"); + if (fh) { + struct stat statbuf; + stat(filename, &statbuf); + source = (char *)malloc(statbuf.st_size + 1); + if (source) { + fread(source, statbuf.st_size, 1, fh); + source[statbuf.st_size] = 0; + *size = statbuf.st_size + 1; + } + } else { + fprintf(stderr, "Error reading file %s\n", filename); + exit(EXIT_FAILURE); + } + return source; +} + +// Return the device compute capability in major and minor. +static CUdevice cudaDeviceInit(int *major, int *minor) { + assert(major && minor); + // Count the number of CUDA compute capable devices.. + CUresult err = cuInit(0); + int deviceCount = 0; + if (CUDA_SUCCESS == err) + checkCudaErrors(cuDeviceGetCount(&deviceCount)); + if (deviceCount == 0) { + fprintf(stderr, "cudaDeviceInit error: no devices supporting CUDA\n"); + exit(EXIT_FAILURE); + } + + // Get the first device discovered (device 0) and print its name. + CUdevice cuDevice = 0; + checkCudaErrors(cuDeviceGet(&cuDevice, 0)); + char name[128] = {0}; + checkCudaErrors(cuDeviceGetName(name, sizeof(name), cuDevice)); + printf("Using CUDA Device [0]: %s\n", name); + + // Get and test the compute capability. + checkCudaErrors(cuDeviceGetAttribute( + major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, cuDevice)); + checkCudaErrors(cuDeviceGetAttribute( + minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, cuDevice)); + printf("compute capability = %d.%d\n", *major, *minor); + if (*major < 5) { + fprintf(stderr, "Device 0 is not sm_50 or later\n"); + exit(EXIT_FAILURE); + } + + // Check if managed memory is supported. + int supportsUvm = 0; + checkCudaErrors(cuDeviceGetAttribute( + &supportsUvm, CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY, cuDevice)); + if (!supportsUvm) { + printf("This device does not support managed memory."); + exit(EXIT_SUCCESS); + } + + // Check if unified addressing is supported (host and device share same + // the address space). + int supportsUva = 0; + checkCudaErrors(cuDeviceGetAttribute( + &supportsUva, CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING, cuDevice)); + if (!supportsUva) { + printf("This device does not support a unified address space."); + exit(EXIT_SUCCESS); + } + + return cuDevice; +} + +static CUresult buildKernel(CUcontext *phContext, CUdevice *phDevice, + CUmodule *phModule, CUfunction *phKernel) { + assert(phContext && phDevice && phModule && phKernel); + + // Initialize CUDA and obtain the device's compute capability. + int major = 0, minor = 0; + *phDevice = cudaDeviceInit(&major, &minor); + + // Create a context on the device. + checkCudaErrors(cuCtxCreate(phContext, 0, *phDevice)); + + // Get the NVVM IR from file. + size_t size = 0; + const char *filename = "uvmlite64.ll"; + char *ll = loadProgramSource(filename, &size); + fprintf(stdout, "NVVM IR ll file loaded\n"); + + // Use libNVVM to generate PTX. + char *ptx = generatePTX(ll, size, filename, major, minor); + fprintf(stdout, "PTX generated:\n"); + fprintf(stdout, "%s\n", ptx); + + // Load module from PTX. + checkCudaErrors(cuModuleLoadDataEx(phModule, ptx, 0, NULL, NULL)); + + // Locate the kernel entry point. + checkCudaErrors(cuModuleGetFunction(phKernel, *phModule, "test_kernel")); + + free(ll); + free(ptx); + return CUDA_SUCCESS; +} + +int main(void) { + const unsigned int nThreads = 1; + const unsigned int nBlocks = 1; + + // Pointers to the variables in the managed memory. + // See uvmlite64.ll for their definition. + CUdeviceptr devp_xxx, devp_yyy; + size_t size_xxx, size_yyy; + int *p_xxx, *p_yyy; + + // Initialize the device and get a handle to the kernel + CUcontext hContext = 0; + CUdevice hDevice = 0; + CUmodule hModule = 0; + CUfunction hKernel = 0; + checkCudaErrors(buildKernel(&hContext, &hDevice, &hModule, &hKernel)); + + // Whether or not a device supports unified addressing may be queried by + // calling cuDeviceGetAttribute() with the deivce attribute + // CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING. + { + int attrVal; + checkCudaErrors(cuDeviceGetAttribute( + &attrVal, CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING, hDevice)); + ERROR_IF(attrVal != 1); + } + + // Get the address of the variable xxx, yyy in the managed memory. + checkCudaErrors(cuModuleGetGlobal(&devp_xxx, &size_xxx, hModule, "xxx")); + checkCudaErrors(cuModuleGetGlobal(&devp_yyy, &size_yyy, hModule, "yyy")); + + // Whether or not the pointer points to managed memory may be queried by + // calling cuPointerGetAttribute() with the pointer attribute + // CU_POINTER_ATTRIBUTE_IS_MANAGED. + { + unsigned int attrVal; + + checkCudaErrors(cuPointerGetAttribute( + &attrVal, CU_POINTER_ATTRIBUTE_IS_MANAGED, devp_xxx)); + ERROR_IF(attrVal != 1); + checkCudaErrors(cuPointerGetAttribute( + &attrVal, CU_POINTER_ATTRIBUTE_IS_MANAGED, devp_yyy)); + ERROR_IF(attrVal != 1); + } + + // Since CUdeviceptr is opaque, it is safe to use cuPointerGetAttribute to get + // the host pointers. + { + void *host_ptr_xxx, *host_ptr_yyy; + + checkCudaErrors(cuPointerGetAttribute( + &host_ptr_xxx, CU_POINTER_ATTRIBUTE_HOST_POINTER, devp_xxx)); + checkCudaErrors(cuPointerGetAttribute( + &host_ptr_yyy, CU_POINTER_ATTRIBUTE_HOST_POINTER, devp_yyy)); + + p_xxx = (int *)host_ptr_xxx; + p_yyy = (int *)host_ptr_yyy; + } + + printf("The initial value of xxx initialized by the device = %d\n", *p_xxx); + printf("The initial value of yyy initialized by the device = %d\n", *p_yyy); + + ERROR_IF(*p_xxx != 10); + ERROR_IF(*p_yyy != 100); + + // The host adds 1 and 11 to xxx and yyy. + *p_xxx += 1; + *p_yyy += 11; + + printf("The host added 1 and 11 to xxx and yyy.\n"); + + // Launch the kernel with the following parameters. + { + void *params[] = {(void *)&devp_xxx}; + checkCudaErrors(cuLaunchKernel(hKernel, nBlocks, 1, 1, nThreads, 1, 1, 0, + NULL, params, NULL)); + } + checkCudaErrors(cuCtxSynchronize()); + + printf("kernel added 20 and 30 to xxx and yyy, respectively.\n"); + printf("The final value checked in the host: xxx = %d, yyy = %d\n", *p_xxx, + *p_yyy); + + if (hModule) { + checkCudaErrors(cuModuleUnload(hModule)); + hModule = 0; + } + if (hContext) { + checkCudaErrors(cuCtxDestroy(hContext)); + hContext = 0; + } + + return 0; +} diff --git a/Samples/7_libNVVM/uvmlite/uvmlite64.ll b/Samples/7_libNVVM/uvmlite/uvmlite64.ll new file mode 100644 index 00000000..9bc8f470 --- /dev/null +++ b/Samples/7_libNVVM/uvmlite/uvmlite64.ll @@ -0,0 +1,61 @@ +; Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of NVIDIA CORPORATION nor the names of its +; contributors may be used to endorse or promote products derived +; from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +; the initial value of xxx is 10 +@xxx = internal addrspace(1) global i32 10, align 4 + +; the initial value of yyy is 100 +@yyy = internal addrspace(1) global i32 100, align 4 + +@llvm.used = appending global [3 x i8*] [i8* bitcast (i8* addrspacecast (i32 addrspace(1)* @xxx to i8*) to i8*), i8* bitcast (i8* addrspacecast (i32 addrspace(1)* @yyy to i8*) to i8*), i8* bitcast (void (i32*)* @test_kernel to i8*)], section "llvm.metadata" + +; %ptr can be in the managed space, and its address can be directly used in the host and device. +; See the uvmlite.c, which passes the device pointer of xxx as the kernel parameter. +; This kernel also directly accesses @yyy, which is also managed. +define void @test_kernel(i32* nocapture %ptr) nounwind alwaysinline { + ; *%ptr = *%ptr + 20 + %gen2other = addrspacecast i32* %ptr to i32 addrspace(1)* + %tmp1 = load i32, i32 addrspace(1)* %gen2other, align 4 + %add = add nsw i32 %tmp1, 20 + store i32 %add, i32 addrspace(1)* %gen2other, align 4 + + ; @yyy = @yyy + 30 + %tmp2 = load i32, i32 addrspace(1)* @yyy, align 4 + %add3 = add nsw i32 %tmp2, 30 + store i32 %add3, i32 addrspace(1)* @yyy, align 4 + ret void +} + +!nvvm.annotations = !{!7, !8, !9} +!nvvmir.version = !{!6} + +!6 = !{i32 2, i32 0} +!7 = !{i32 addrspace(1)* @xxx, !"managed", i32 1} +!8 = !{i32 addrspace(1)* @yyy, !"managed", i32 1} +!9 = !{void (i32*)* @test_kernel, !"kernel", i32 1}