Browse Source

Bug4914019 & 4191696: Append pid in shmName for MIG multiple thread scenario

pull/53/merge
shawnz 3 months ago
parent
commit
ad9908e32b
  1. 24
      Samples/0_Introduction/simpleIPC/simpleIPC.cu
  2. 24
      Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu
  3. 23
      Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp

24
Samples/0_Introduction/simpleIPC/simpleIPC.cu

@ -99,8 +99,18 @@ static void childProcess(int id) @@ -99,8 +99,18 @@ static void childProcess(int id)
std::vector<void *> ptrs;
std::vector<cudaEvent_t> events;
std::vector<char> 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) @@ -195,10 +205,20 @@ static void parentProcess(char *app)
std::vector<void *> ptrs;
std::vector<cudaEvent_t> events;
std::vector<Process> 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);
}

24
Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/streamOrderedAllocationIPC.cu

@ -102,13 +102,23 @@ static void childProcess(int id) @@ -102,13 +102,23 @@ static void childProcess(int id)
int threads = 128;
cudaDeviceProp prop;
std::vector<void *> ptrs;
pid_t pid;
char pidString[20] = {0};
char lshmName[40] = {0};
std::vector<char> 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) @@ -245,6 +255,16 @@ static void parentProcess(char *app)
std::vector<void *> ptrs;
std::vector<Process> 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<CUdevice> devices(devCount);
@ -252,7 +272,7 @@ static void parentProcess(char *app) @@ -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);
}

23
Samples/3_CUDA_Features/memMapIPCDrv/memMapIpc.cpp

@ -310,10 +310,20 @@ static void childProcess(int devId, int id, char **argv) @@ -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) @@ -421,11 +431,20 @@ static void parentProcess(char *app)
volatile shmStruct *shm = NULL;
sharedMemoryInfo info;
std::vector<Process> 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<CUdevice> 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);
}

Loading…
Cancel
Save