Tag: 共享内存

如何在FreeBSD中获取打开的posix共享内存段列表

在linux中,我可以通过获取/ dev / shm目录列表获得打开的posix共享内存段列表。 我如何以编程方式获取FreeBSD中所有打开的posix共享内存段的列表? 假设使用shm_open打开了段,我甚至不知道用作shm_open的第一个参数的名称的一部分。

共享内存有两个进程在C?

我想做以下事情: 父进程创建子进程。 然后子进程从用户读取n int并将它们存储在共享内存中。 然后父进程显示它们。 我达到了以下目的: #include #include #include #include #define SHMSIZE 27 int main() { int shmid; int *shm; int *n; if(fork() == 0) { shmid = shmget(2009, SHMSIZE, 0); shm = shmat(shmid, 0, 0); n = shm; int i; for(i=0; i<5; i++) { printf("Enter number: “, i); scanf(“%d”, n++); } printf (“Child wrote […]

pthreads中的内存模型规范

是否有任何保证何时在一个线程中的内存写入在使用pthread s的其他线程中可见? 与Java相比,Java语言规范有一个部分,它指定了锁和内存的交互,从而可以编写可移植的multithreadingJava代码。 是否有相应的pthreads规范? 当然,你总是可以让共享数据变得不稳定,但这不是我所追求的。 如果这取决于平台,是否有事实上的标准? 或者是否应该使用另一个线程库?

如何使用共享内存在两个进程之间进行通信

我试图在两个进程之间进行通信。 我试图在一个进程中将数据(如姓名,电话号码,地址)保存到共享内存,并尝试通过其他进程打印该数据。 process1.c #include #include #include int main () { int segment_id; char* shared_memory[3]; int segment_size; key_t shm_key; int i=0; const int shared_segment_size = 0x6400; /* Allocate a shared memory segment. */ segment_id = shmget (shm_key, shared_segment_size, IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR); /* Attach the shared memory segment. */ shared_memory[3] = (char*) shmat […]

如何使用cuda沿行方向对大型二维矩阵进行缩减? (每行的最大值和最大值索引)

我正在尝试沿2D矩阵的行方向实现缩减。 我从stackoverflow上找到的代码开始(非常感谢Robert!) thrust :: max_element比较cublasIsamax慢 – 更有效的实现? 上面的链接显示了一个在单行上执行缩减的自定义内核。 它将输入行分为多行,每行有1024个线程。 效果很好。 对于2D情况,除了现在有一个网格尺寸之外,一切都是一样的。 所以每个块的y维度仍然是1.问题是当我尝试将数据写入每个块内的共享内存(在代码中的“max_idx_kernel_reduction_within_block”内核中)时,需要很长时间(超过(#行) *(在1行上执行减少所需的时间。我宁愿运行for循环)。我知道我有很多元素但是我期待比这更快的东西。 我不认为内存访问模式是一个问题,但我听说TOTAL共享内存量可能是限制? : CUDA:合并全局内存访问速度比共享内存快吗? 另外,分配大型共享内存arrays会减慢程序的速度吗? 任何使我的代码更快的建议(第一个内核是瓶颈)? 非常感谢,非常感谢!! #include #include #include #include #include #define NCOLS 163317 // number of columns #define NROWS 8 // number of rows #define nTPB 1024 // Threads per Block. nTPB should be a power-of-2 #define MAX_BLOCKS_X ((NCOLS/nTPB)+1) // # […]