shared-memory相关内容

在未加载重复项的多个python脚本之间共享变量(文件中的数据)

我想加载 matrix_file.mtx 中包含的一个大矩阵.此负载必须进行一次.一旦将变量 matrix 加载到内存中,我希望许多python脚本共享它们而不重复,以便在bash中(或python本身)具有内存高效的多脚本程序.我可以想象这样的伪代码: #加载和共享脚本:进口份额矩阵= open("matrix_file.mtx","r")share.send_to_shared_ram(ma ..
发布时间:2021-04-14 20:44:22 Python

从壳shm_unlink?

我有一个程序,该程序使用正在处理的 shm_open 创建共享内存对象.它尝试使用 shm_unlink 释放对象,但是有时编程错误将导致其崩溃,然后再进行调用.在那种情况下,我需要“手动"取消链接共享内存对象,并且我希望能够在普通外壳中完成它,而无需编写任何C代码-即使用普通Linux实用程序. 可以做到吗?这个问题似乎是说在/dev/shm/path_passed_to_shm_open ..
发布时间:2021-04-14 20:19:49 服务器开发

使用mmap()初始化2D数组的共享内存,是否还需要映射内存以供后续指针使用?我应该改用shm吗?

我正在使用mmap()初始化父进程和子进程的共享内存空间,并且该对象恰好是双字符指针(即char**).这是必要的,因为我将在子进程中将用户输入存储到此2D数组,并且子进程终止后,父进程将访问相同的数据.阅读mmap()上的一些文档后,解决这个问题并不难,感觉很像malloc(),但是投入较少. 考虑以下代码,直接从我正在编写的程序中复制以下代码: /* mmap prot and f ..
发布时间:2021-02-08 19:45:47 其他开发

为什么我可以使用POSIX创建一个大于/dev/shm上安装的共享内存的共享内存?

我正在尝试在Ubuntu 16.04中使用共享内存IPC处理错误. 首先,我使用df -h在/dev/shm中检查了可用内存,具有500M可用空间,因此我快速编写了一些代码,以检查如果尝试创建大于安装大小的共享内存,会发生什么情况.代码如下(它已经被修改了好几次,所以我知道它不是很整洁): #include #include #include ..
发布时间:2021-02-08 19:45:32 C/C++开发

如何在共享内存派生进程中使用互斥锁?

我在一个多进程程序之间共享一个计数器变量,该程序使用fork()调用创建进程.我正在使用以下代码创建一个用于存储计数器的共享内存,并且每个进程都可以对其进行访问和递增. 这是主父线程中的线程创建机制 void createSHM() { int key = SHMKEY; int *shm; if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 06 ..
发布时间:2021-02-08 19:44:59 其他开发

如何使用合并的内存访问

我有"N"个线程在需要全局内存中M * N个浮点数的设备上同时执行.访问合并的全局内存的正确方法是什么?在这件事上,共享内存如何提供帮助? 解决方案 通常,当相邻线程访问内存中的相邻单元时,可以实现良好的合并访问.因此,如果tid拥有线程的索引,则访问: arr[tid] ---完美融合 arr[tid+5] ---几乎是完美的,可能未对齐 arr[tid*4] ---由于存在空 ..
发布时间:2020-11-20 00:46:49 其他开发

PHP中的共享内存文件

我使用openssl_pkcs7_sign和openssl_pkcs7_encrypt创建加密数据.这些功能仅接受文件名.我想将临时文件存储在共享内存中以提高性能.我了解在Linux中我可以file_put_contents('/dev/shm/xxx', data),但是对于Windows是不可能的. PHP中是否有可移植的方式来做到这一点? shmop_函数在这里有帮助吗?谢谢. PS: ..
发布时间:2020-11-05 20:45:31 PHP

如何在App Engine Flexible中更改/ dev / shm的大小

如何在App Engine Flexible应用中更改共享内存文件夹 / dev / shm 的大小? 默认情况下,它设置为64M,太低而无法运行许多应用程序(例如chrome)。我看不到任何更改方法。如果您有权访问 docker运行命令,但是在启动应用程序引擎灵活的应用程序时我们没有这种访问权限。 解决方案 A:否。 不幸的是,appengine尚无法(目前?)。有很多人遇到 ..

Windows DLL如何实际共享?

通过检查我在Windows计算机中拥有的几个DLL(例如KERNEL32.DLL),我注意到它们的任何部分,甚至只读数据部分都没有设置IMAGE_SCN_MEM_SHARED标志。 DLL是从.dll文件映射的,因此仅当您读取文件的页面时,该文件才会复制到物理内存中,但是,如果同一页面的内核32进程A和进程B都访问.dll,则该页面在物理内存中将存在两次。 我要问最后一条语句的准确性。 ..
发布时间:2020-10-24 01:36:58 C/C++开发

共享内存中的C ++ STL映射

我需要在共享内存中放置一个STL映射。也有多个进程访问该映射。任何指示其完成方式的指针? 我已经检查了此链接。但是需要一个更简单的方法。 在共享内存中映射 解决方案 要实现此目的,您需要使用一个自定义分配器,该分配器将从共享内存区域进行分配,以使映射节点全部位于共享内存中,从而使 pointer 类型不仅是原始指针,而且在映射到不同进程中的不同地址时可以引用共享内存区域。 您 ..
发布时间:2020-10-21 23:17:20 C/C++开发

涉及C对象的Python多处理共享内存问题

我正在开发一个程序,该程序使用外部C库来解析来自外部源的数据,并使用Python库在其上运行一些优化问题。优化非常耗时,因此使用多个CPU将是一个重要的优势。 基本上,我用Cython封装了C(++)结构,如下所示: cdef class CObject(object): cdef long p_sthg cdef OBJECT * sthg def __cinit ..
发布时间:2020-10-14 20:09:53 Python

pycuda共享内存错误“ pycuda._driver.LogicError:cuLaunchKernel失败:无效值”

我有一个奇怪的问题,我无法确定其起源: 我有一个工作的内核,可以加速某些特殊的Matrix-Vector乘法。基本上,大矩阵(10 ^ 6乘以10 ^ 6)是由少量小矩阵构成的。因此,我想将该数据放入共享内存中。但是,当我尝试添加共享内存时,只会出现以下错误: pycuda._driver.LogicError:cuLaunchKernel失败:无效值 所以我的工作内核是: ..
发布时间:2020-10-13 01:37:04 其他开发

如何在sbcl中存储映射tmpfs文件?

正如问题所述。我想使用共享内存在两个Lisp进程之间进行通信。关于如何执行此操作的任何指示? 我可以在Clozure上看到一些有关执行此操作的教程:- http://ccl.clozure.com/manual/chapter4.7.html 有人可以指向我指向类似的库来使用sbcl吗? 解决方案 对于可移植的实现,您可能想使用 osicat 库,该库为 osicat-p ..
发布时间:2020-10-06 06:28:25 其他开发

从共享内存中推入和检索ObjC中的NSObject指针的示例?

我知道共享对象(例如分布式对象)的更好方法,但是我的处境相当困难。我正在开发两个并行运行且需要共享对象的iPhone应用程序。该对象恰好是 CALayer ,并且两个应用程序都需要访问该对象。第二个应用程序将第一个应用程序的 CALayer 添加到第一个应用程序的 CALayer 中,并在那里工作。 看到正在使用共享内存,但是我找不到执行我所需要的任何有用的示例。有人可以演示将指针推到共享内 ..
发布时间:2020-09-28 21:37:39 移动开发

python进程可以共享活动对象吗?

我有一个多进程python应用程序(进程由uwsgi生成),需要将变量存储在RAM中,然后从几个不同的进程中读取和更新这些变量。我知道有很多可用的缓存选项,但是我发现的所有缓存选项只能存储字符串。 解决方案 是否可以使不同的python进程访问相同的虚拟内存,从而共享数据而无需进行转换甚至复制? p>除了 POSH,Python共享对象,它至少可以完成您想要做的一部分(放置Python Sv ..
发布时间:2020-09-28 05:23:40 Python

CUDA:什么时候使用共享内存,什么时候依靠L1缓存?

发布Compute Capability 2.0(Fermi)之后,我想知道共享内存是否还有用例。也就是说,什么时候使用共享内存比仅让L1在后台执行魔术更好? 共享内存仅仅是在那里让设计用于CC的算法吗? 2.0无需修改即可有效运行? 要通过共享内存进行协作,块中的线程将写入共享内存并与 __ syncthreads()。为什么不简单地(通过L1)写入全局内存,并与 __ thread ..
发布时间:2020-09-28 05:16:11 其他开发

在C中创建访问共享内存

所以我有一个问题,我真的不知道该怎么办。我希望也许您可以让我知道如何处理它。 我需要在共享内存中分配N个缓冲区。每个缓冲区应初始化为0。然后,我必须派生N / 2个子进程。 每个孩子(i)然后将值(i)写入缓冲区(i),睡眠一秒钟。然后读取当前缓冲区中的值,如果同时更改值,则会显示一条消息。然后孩子将i位置移动N / 2次。 所以我可以拥有 N缓冲区= 11 。(必须是素数) ..
发布时间:2020-09-24 01:26:57 其他开发