From 952d6edf921b4e9283aab683a0078457ac9c3218 Mon Sep 17 00:00:00 2001 From: shawnz Date: Tue, 1 Apr 2025 16:07:32 +0800 Subject: [PATCH 1/4] Bug 5196977: Include helper_gl.h before cuda_gl_interop.h --- Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp | 2 +- Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp | 2 +- Samples/5_Domain_Specific/nbody/render_particles.cpp | 2 +- Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp | 2 +- Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp index a4cc4890..e19eed80 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp +++ b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp @@ -46,12 +46,12 @@ #endif // includes +#include #include #include #include #include #include -#include #include #include #include diff --git a/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp b/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp index 555fdde6..71c08ee2 100644 --- a/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp +++ b/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp @@ -87,11 +87,11 @@ #endif // includes +#include #include #include #include // includes cuda.h and cuda_runtime_api.h #include -#include #include #include #include diff --git a/Samples/5_Domain_Specific/nbody/render_particles.cpp b/Samples/5_Domain_Specific/nbody/render_particles.cpp index 12432f9e..dfcbf966 100644 --- a/Samples/5_Domain_Specific/nbody/render_particles.cpp +++ b/Samples/5_Domain_Specific/nbody/render_particles.cpp @@ -29,10 +29,10 @@ #define HELPERGL_EXTERN_GL_FUNC_IMPLEMENTATION #include +#include #include #include #include -#include #include #define GL_POINT_SPRITE_ARB 0x8861 diff --git a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp index 3952b7b6..6c675ca9 100644 --- a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp +++ b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp @@ -33,11 +33,11 @@ #include #define HELPERGL_EXTERN_GL_FUNC_IMPLEMENTATION +#include #include #include #include #include -#include #include "ParticleSystem.cuh" #include "ParticleSystem.h" diff --git a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu index 09838164..2912c2c0 100644 --- a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu +++ b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu @@ -31,9 +31,9 @@ This file contains simple wrapper functions that call the CUDA kernels #define HELPERGL_EXTERN_GL_FUNC_IMPLEMENTATION #include #include +#include #include #include -#include #include #include "ParticleSystem.cuh" From ad9908e32b4ec023c9401e8174f8c2bc624b0aea Mon Sep 17 00:00:00 2001 From: shawnz Date: Wed, 2 Apr 2025 11:20:09 +0800 Subject: [PATCH 2/4] Bug4914019 & 4191696: Append pid in shmName for MIG multiple thread scenario --- Samples/0_Introduction/simpleIPC/simpleIPC.cu | 24 +++++++++++++++++-- .../streamOrderedAllocationIPC.cu | 24 +++++++++++++++++-- .../memMapIPCDrv/memMapIpc.cpp | 23 ++++++++++++++++-- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/Samples/0_Introduction/simpleIPC/simpleIPC.cu b/Samples/0_Introduction/simpleIPC/simpleIPC.cu index 1e2a9a93..544be8bd 100644 --- a/Samples/0_Introduction/simpleIPC/simpleIPC.cu +++ b/Samples/0_Introduction/simpleIPC/simpleIPC.cu @@ -99,8 +99,18 @@ static void childProcess(int id) std::vector ptrs; std::vector events; std::vector verification_buffer(DATA_SIZE); + pid_t pid; + char pidString[20] = {0}; + char lshmName[40] = {0}; - if (sharedMemoryOpen(shmName, sizeof(shmStruct), &info) != 0) { + pid = getppid(); + snprintf(pidString, sizeof(pidString), "%d", pid); + strcat(lshmName, shmName); + strcat(lshmName, pidString); + + printf("CP: lshmName = %s\n", lshmName); + + if (sharedMemoryOpen(lshmName, sizeof(shmStruct), &info) != 0) { printf("Failed to create shared memory slab\n"); exit(EXIT_FAILURE); } @@ -195,10 +205,20 @@ static void parentProcess(char *app) std::vector ptrs; std::vector events; std::vector processes; + pid_t pid; + char pidString[20] = {0}; + char lshmName[40] = {0}; + + pid = getpid(); + snprintf(pidString, sizeof(pidString), "%d", pid); + strcat(lshmName, shmName); + strcat(lshmName, pidString); + + printf("PP: lshmName = %s\n", lshmName); checkCudaErrors(cudaGetDeviceCount(&devCount)); - if (sharedMemoryCreate(shmName, sizeof(*shm), &info) != 0) { + if (sharedMemoryCreate(lshmName, sizeof(*shm), &info) != 0) { printf("Failed to create shared memory slab\n"); exit(EXIT_FAILURE); } diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu index 199a862c..b7dbdf66 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu @@ -102,13 +102,23 @@ static void childProcess(int id) int threads = 128; cudaDeviceProp prop; std::vector ptrs; + pid_t pid; + char pidString[20] = {0}; + char lshmName[40] = {0}; std::vector verification_buffer(DATA_SIZE); + pid = getppid(); + snprintf(pidString, sizeof(pidString), "%d", pid); + strcat(lshmName, shmName); + strcat(lshmName, pidString); + + printf("CP: lshmName = %s\n", lshmName); + ipcHandle *ipcChildHandle = NULL; checkIpcErrors(ipcOpenSocket(ipcChildHandle)); - if (sharedMemoryOpen(shmName, sizeof(shmStruct), &info) != 0) { + if (sharedMemoryOpen(lshmName, sizeof(shmStruct), &info) != 0) { printf("Failed to create shared memory slab\n"); exit(EXIT_FAILURE); } @@ -245,6 +255,16 @@ static void parentProcess(char *app) std::vector ptrs; std::vector processes; cudaMemAllocationHandleType handleType = cudaMemHandleTypeNone; + pid_t pid; + char pidString[20] = {0}; + char lshmName[40] = {0}; + + pid = getpid(); + snprintf(pidString, sizeof(pidString), "%d", pid); + strcat(lshmName, shmName); + strcat(lshmName, pidString); + + printf("PP: lshmName = %s\n", lshmName); checkCudaErrors(cudaGetDeviceCount(&devCount)); std::vector devices(devCount); @@ -252,7 +272,7 @@ static void parentProcess(char *app) cuDeviceGet(&devices[i], i); } - if (sharedMemoryCreate(shmName, sizeof(*shm), &info) != 0) { + if (sharedMemoryCreate(lshmName, sizeof(*shm), &info) != 0) { printf("Failed to create shared memory slab\n"); exit(EXIT_FAILURE); } diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp index 7811a9c0..d95ffb64 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp +++ b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp @@ -310,10 +310,20 @@ static void childProcess(int devId, int id, char **argv) ipcHandle *ipcChildHandle = NULL; int blocks = 0; int threads = 128; + pid_t pid; + char pidString[20] = {0}; + char lshmName[40] = {0}; + + pid = getppid(); + snprintf(pidString, sizeof(pidString), "%d", pid); + strcat(lshmName, shmName); + strcat(lshmName, pidString); + + printf("CP: lshmName = %s\n", lshmName); checkIpcErrors(ipcOpenSocket(ipcChildHandle)); - if (sharedMemoryOpen(shmName, sizeof(shmStruct), &info) != 0) { + if (sharedMemoryOpen(lshmName, sizeof(shmStruct), &info) != 0) { printf("Failed to create shared memory slab\n"); exit(EXIT_FAILURE); } @@ -421,11 +431,20 @@ static void parentProcess(char *app) volatile shmStruct *shm = NULL; sharedMemoryInfo info; std::vector processes; + pid_t pid; + char pidString[20] = {0}; + char lshmName[40] = {0}; + pid = getpid(); + snprintf(pidString, sizeof(pidString), "%d", pid); + strcat(lshmName, shmName); + strcat(lshmName, pidString); + + printf("PP: lshmName = %s\n", lshmName); checkCudaErrors(cuDeviceGetCount(&devCount)); std::vector devices(devCount); - if (sharedMemoryCreate(shmName, sizeof(*shm), &info) != 0) { + if (sharedMemoryCreate(lshmName, sizeof(*shm), &info) != 0) { printf("Failed to create shared memory slab\n"); exit(EXIT_FAILURE); } From 718fe6486d68bbf7d5b56c4eaa8d4a8cfff01032 Mon Sep 17 00:00:00 2001 From: shawnz Date: Wed, 2 Apr 2025 15:10:29 +0800 Subject: [PATCH 3/4] Bug 5199167: Adjust the include header files sequence for simpleD3D11/simpleD3D11Texture --- Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp | 2 +- .../5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp index dad4828e..8528dd9d 100644 --- a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp +++ b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp @@ -31,8 +31,8 @@ #pragma warning(disable : 4312) -#include #include +#include // This header inclues all the necessary D3D11 and CUDA includes #include diff --git a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp index ade0e2b1..3ba66867 100644 --- a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp +++ b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp @@ -31,8 +31,8 @@ #pragma warning(disable : 4312) -#include #include +#include // This header inclues all the necessary D3D11 and CUDA includes #include From b013387a39c0e34973f854b8a9cdabb09b3b07c1 Mon Sep 17 00:00:00 2001 From: shawnz Date: Thu, 3 Apr 2025 11:23:26 +0800 Subject: [PATCH 4/4] Update code format --- Samples/0_Introduction/simpleIPC/simpleIPC.cu | 4 ++-- .../streamOrderedAllocationIPC.cu | 4 ++-- Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp | 4 ++-- Samples/4_CUDA_Libraries/cudaNvSci/main.cpp | 2 +- Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp | 4 +++- Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp | 4 +++- Samples/5_Domain_Specific/nbody/render_particles.cpp | 4 +++- Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp | 3 +++ .../simpleD3D11Texture/simpleD3D11Texture.cpp | 3 +++ Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp | 4 ++++ .../5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu | 6 +++++- 11 files changed, 31 insertions(+), 11 deletions(-) diff --git a/Samples/0_Introduction/simpleIPC/simpleIPC.cu b/Samples/0_Introduction/simpleIPC/simpleIPC.cu index 544be8bd..b921cbb1 100644 --- a/Samples/0_Introduction/simpleIPC/simpleIPC.cu +++ b/Samples/0_Introduction/simpleIPC/simpleIPC.cu @@ -101,7 +101,7 @@ static void childProcess(int id) std::vector verification_buffer(DATA_SIZE); pid_t pid; char pidString[20] = {0}; - char lshmName[40] = {0}; + char lshmName[40] = {0}; pid = getppid(); snprintf(pidString, sizeof(pidString), "%d", pid); @@ -207,7 +207,7 @@ static void parentProcess(char *app) std::vector processes; pid_t pid; char pidString[20] = {0}; - char lshmName[40] = {0}; + char lshmName[40] = {0}; pid = getpid(); snprintf(pidString, sizeof(pidString), "%d", pid); diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu index b7dbdf66..3bfa9fe5 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu @@ -104,7 +104,7 @@ static void childProcess(int id) std::vector ptrs; pid_t pid; char pidString[20] = {0}; - char lshmName[40] = {0}; + char lshmName[40] = {0}; std::vector verification_buffer(DATA_SIZE); @@ -257,7 +257,7 @@ static void parentProcess(char *app) cudaMemAllocationHandleType handleType = cudaMemHandleTypeNone; pid_t pid; char pidString[20] = {0}; - char lshmName[40] = {0}; + char lshmName[40] = {0}; pid = getpid(); snprintf(pidString, sizeof(pidString), "%d", pid); diff --git a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp index d95ffb64..06a6661b 100644 --- a/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp +++ b/Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp @@ -311,8 +311,8 @@ static void childProcess(int devId, int id, char **argv) int blocks = 0; int threads = 128; pid_t pid; - char pidString[20] = {0}; - char lshmName[40] = {0}; + char pidString[20] = {0}; + char lshmName[40] = {0}; pid = getppid(); snprintf(pidString, sizeof(pidString), "%d", pid); diff --git a/Samples/4_CUDA_Libraries/cudaNvSci/main.cpp b/Samples/4_CUDA_Libraries/cudaNvSci/main.cpp index 461fc906..b01dc430 100644 --- a/Samples/4_CUDA_Libraries/cudaNvSci/main.cpp +++ b/Samples/4_CUDA_Libraries/cudaNvSci/main.cpp @@ -25,8 +25,8 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include #include +#include #include #include #include diff --git a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp index e19eed80..8eeb9da8 100644 --- a/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp +++ b/Samples/4_CUDA_Libraries/oceanFFT/oceanFFT.cpp @@ -45,8 +45,10 @@ #include #endif -// includes +// includes for OpenGL #include + +// includes #include #include #include diff --git a/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp b/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp index 71c08ee2..c6bcb450 100644 --- a/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp +++ b/Samples/5_Domain_Specific/marchingCubes/marchingCubes.cpp @@ -86,8 +86,10 @@ #include #endif -// includes +// includes for OpenGL #include + +// includes #include #include #include // includes cuda.h and cuda_runtime_api.h diff --git a/Samples/5_Domain_Specific/nbody/render_particles.cpp b/Samples/5_Domain_Specific/nbody/render_particles.cpp index dfcbf966..8c596fac 100644 --- a/Samples/5_Domain_Specific/nbody/render_particles.cpp +++ b/Samples/5_Domain_Specific/nbody/render_particles.cpp @@ -27,9 +27,11 @@ #include "render_particles.h" +// includes for OpenGL +#include + #define HELPERGL_EXTERN_GL_FUNC_IMPLEMENTATION #include -#include #include #include #include diff --git a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp index 8528dd9d..1596c022 100644 --- a/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp +++ b/Samples/5_Domain_Specific/simpleD3D11/simpleD3D11.cpp @@ -31,7 +31,10 @@ #pragma warning(disable : 4312) +// includes for Windows #include + +// includes for multimedia #include // This header inclues all the necessary D3D11 and CUDA includes diff --git a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp index 3ba66867..113d1bd9 100644 --- a/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp +++ b/Samples/5_Domain_Specific/simpleD3D11Texture/simpleD3D11Texture.cpp @@ -31,7 +31,10 @@ #pragma warning(disable : 4312) +// includes for Windows #include + +// includes for multimedia #include // This header inclues all the necessary D3D11 and CUDA includes diff --git a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp index 6c675ca9..c016a88d 100644 --- a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp +++ b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem.cpp @@ -33,7 +33,11 @@ #include #define HELPERGL_EXTERN_GL_FUNC_IMPLEMENTATION + +// includes for OpenGL #include + +// includes #include #include #include diff --git a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu index 2912c2c0..69af1466 100644 --- a/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu +++ b/Samples/5_Domain_Specific/smokeParticles/ParticleSystem_cuda.cu @@ -29,9 +29,13 @@ This file contains simple wrapper functions that call the CUDA kernels */ #define HELPERGL_EXTERN_GL_FUNC_IMPLEMENTATION + +// includes for OpenGL +#include + +// includes #include #include -#include #include #include #include