Tag: 分享

CUDA:使用网格划分循环减少共享内存

关于在CUDA内核中共享内存中网格跨越循环和优化缩减算法的使用,我有以下问题。 想象一下,你有1D数组,其元素数多于网格中的线程数(BLOCK_SIZE * GRID_SIZE)。 在这种情况下,您将编写此类内核: #define BLOCK_SIZE (8) #define GRID_SIZE (8) #define N (2000) // … __global__ void gridStridedLoop_kernel(double *global_1D_array) { int idx = threadIdx.x + blockIdx.x * blockDim.x; int i; // N is a total number of elements in the global_1D_array array for (i = idx; i < N; i += blockDim.x * gridDim.x) […]

如何与其他进程共享现有的char *?

我正在尝试使用shmget和shmat与其他forked + execed进程共享一些内存: char test[]=”test”; int shID; char *shptr; key_t shkey = 2404; shID = shmget(shkey, sizeof(char)*(strlen(test)+1), IPC_CREAT | 0666); if (shID >= 0) { shptr = shmat(shID, 0, 0); if (shptr==(char *)-1) { perror(“shmat”); } else { memcpy(shptr, &test, strlen(test)+1); …. //forking and execing …. shmdt(shptr); } } else { perror(“shmget”); } 这很好用。 问题是test[]将成为一个巨大的char* […]