mirror of
https://github.com/NVIDIA/cuda-samples.git
synced 2025-07-01 20:20:29 +08:00
Bug4914019 & 4191696: Append pid in shmName for MIG multiple thread scenario
This commit is contained in:
parent
952d6edf92
commit
ad9908e32b
@ -99,8 +99,18 @@ static void childProcess(int id)
|
|||||||
std::vector<void *> ptrs;
|
std::vector<void *> ptrs;
|
||||||
std::vector<cudaEvent_t> events;
|
std::vector<cudaEvent_t> events;
|
||||||
std::vector<char> verification_buffer(DATA_SIZE);
|
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");
|
printf("Failed to create shared memory slab\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@ -195,10 +205,20 @@ static void parentProcess(char *app)
|
|||||||
std::vector<void *> ptrs;
|
std::vector<void *> ptrs;
|
||||||
std::vector<cudaEvent_t> events;
|
std::vector<cudaEvent_t> events;
|
||||||
std::vector<Process> processes;
|
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));
|
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");
|
printf("Failed to create shared memory slab\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -102,13 +102,23 @@ static void childProcess(int id)
|
|||||||
int threads = 128;
|
int threads = 128;
|
||||||
cudaDeviceProp prop;
|
cudaDeviceProp prop;
|
||||||
std::vector<void *> ptrs;
|
std::vector<void *> ptrs;
|
||||||
|
pid_t pid;
|
||||||
|
char pidString[20] = {0};
|
||||||
|
char lshmName[40] = {0};
|
||||||
|
|
||||||
std::vector<char> verification_buffer(DATA_SIZE);
|
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;
|
ipcHandle *ipcChildHandle = NULL;
|
||||||
checkIpcErrors(ipcOpenSocket(ipcChildHandle));
|
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");
|
printf("Failed to create shared memory slab\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@ -245,6 +255,16 @@ static void parentProcess(char *app)
|
|||||||
std::vector<void *> ptrs;
|
std::vector<void *> ptrs;
|
||||||
std::vector<Process> processes;
|
std::vector<Process> processes;
|
||||||
cudaMemAllocationHandleType handleType = cudaMemHandleTypeNone;
|
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));
|
checkCudaErrors(cudaGetDeviceCount(&devCount));
|
||||||
std::vector<CUdevice> devices(devCount);
|
std::vector<CUdevice> devices(devCount);
|
||||||
@ -252,7 +272,7 @@ static void parentProcess(char *app)
|
|||||||
cuDeviceGet(&devices[i], i);
|
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");
|
printf("Failed to create shared memory slab\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -310,10 +310,20 @@ static void childProcess(int devId, int id, char **argv)
|
|||||||
ipcHandle *ipcChildHandle = NULL;
|
ipcHandle *ipcChildHandle = NULL;
|
||||||
int blocks = 0;
|
int blocks = 0;
|
||||||
int threads = 128;
|
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));
|
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");
|
printf("Failed to create shared memory slab\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@ -421,11 +431,20 @@ static void parentProcess(char *app)
|
|||||||
volatile shmStruct *shm = NULL;
|
volatile shmStruct *shm = NULL;
|
||||||
sharedMemoryInfo info;
|
sharedMemoryInfo info;
|
||||||
std::vector<Process> processes;
|
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));
|
checkCudaErrors(cuDeviceGetCount(&devCount));
|
||||||
std::vector<CUdevice> devices(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");
|
printf("Failed to create shared memory slab\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user