我收到了名义上的错误:
mcfork(): Unable to fork: Cannot allocate memory
在尝试使用 mcapply 运行一个函数后,但 top 说我在 51%
这是在 EC2 实例上,但我确实有最新的 R。
有谁知道还有什么可能导致这个错误?
谢谢,
-N
最佳答案
问题可能正是错误消息所暗示的:没有足够的内存来 fork 和创建并行进程。
R 本质上需要为每个单独的进程创建内存中所有内容的副本(据我所知,它不使用共享内存)。如果您已经在单个进程中使用了 51% 的 RAM,那么您没有足够的内存来创建第二个进程,因为这总共需要 102% 的 RAM。
试试:
registerDoMC(2) ,例如,将并行线程数设置为 2(如果您使用的是 doMC 并行后端)。 rm(my_big_object))关于R 多核 mcfork() : Unable to fork: Cannot allocate memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668893/
我的电脑是双核core2Duo。我已经在应用程序的缓慢区域实现了多线程,但我仍然注意到CPU使用率从未超过50%,并且在多次迭代后仍然滞后。这是正常的吗?我希望它能让我的cpu达到100%,因为我将它分成4个线程。为什么它仍然可以限制在50%?谢谢参见WhatamIdoingwrong?(multithreading)对于我的实现,除了我修复了该代码存在的问题 最佳答案 查看您的代码,您在紧密循环中进行了大量分配——在每次迭代中,您动态分配两个双元素vector,然后将它们推回结果vector(从而复制这些vector);最后一次推
这很难说/问,所以请耐心等待:当我们看到汇编的输出时,这就是将要在CPU核心上执行的内容。但是,如果一个CPU有多个内核——所有的程序集都是在同一个内核上执行的吗?来自同一程序的程序集会在什么时候开始在不同的内核上执行?所以如果我有(汇编伪):ADDx,y,zSUBp,x,q我如何知道ADD和SUB是否会在同一个内核上执行?这与亲和性有关吗?我以为affinity只是将进程固定到CPU,而不是核心?我问这个是因为我想尝试了解您是否可以合理地预测连续的汇编指令是否在同一个内核上执行,以及我是否可以控制它们只在同一个内核上执行。我想了解如何决定将执行相同的程序代码从一个内核更改为另一个内核
我已经通过Qt在线安装程序安装了带有MinGW4.8和QtCreator的Qt5.1.1。我启动了QtCreator并使用基于QMainWindow(默认)的MainWindow类创建了新项目(Qt应用程序桌面)。它工作正常,编译后弹出一个主窗口。但是,当我使用C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe而不是C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe时,我得到如下所示的一些输出。jom1.0.13-empoweryourcoresC:\Qt\Qt5.1.1\Tools\QtCreator
根据MSDN文章GameTimingandMulticoreProcessors,QueryPerformanceFrequency()和QueryPerformanceCounter()函数据说是最好的。但如果不支持它,我可以使用timeGetTime()或仅使用GetTickCount()。QueryPerformanceFrequency()是否与CPU时钟相同,或者它是否使用自己的时钟或具有自己的频率且不随时间变化的时钟?如果频率随时间随机变化怎么办(尤其是在笔记本电脑中)如何使用SetThreadAffinityMask函数?(我看到的一些代码使用该函数将其更改为“1”,然后
我有一个在java环境中构建的游戏,我使用JVM。我有4个核心@2.4Ghz,我的服务器只使用其中一个核心...我已经尝试并搜索过,但我仍然没有设置多个内核来运行游戏的指南,比如说1个内核用于运行角色保存+加载,1个内核用于服务器本身,1个内核用于助手以帮助需要更多功率的其他核心。我什至不知道这是否可行,但这全都在java中,操作系统是WindowsServer2003,我已经很努力了,我只是不知道该怎么做。谁能帮帮我!非常感谢! 最佳答案 您不能使用Java直接将任务委托(delegate)给特定的CPU内核,但是如果您使用多线程
我想为我的应用程序保留一个核心。在我的搜索中,我可以找到dwProcessAffinityMask来限制我的进程在我想要的内核上运行。但这不防止其他进程的线程也在“我的”核心上运行。有没有办法禁止除我的进程/线程之外的任何(系统范围的)进程/线程使用特定的核心/处理器?即使可以设置SystemAffinityMask,这也无济于事,因为这也会禁止在该处理器/核心上执行我的进程/线程。 最佳答案 如果您的目标是确保您的进程及时运行,只需使用SetPriorityClass为您的进程设置高优先级(例如HIGH_PRIORITY_CLAS
在Windows下,我的应用程序使用QueryPerformanceCounter(和QueryPerformanceFrequency)来执行“高分辨率”时间戳。自Windows10以来(目前仅在Inteli7处理器上进行了测试),我们观察到QueryPerformanceCounter返回值的不稳定行为。有时,调用返回的值会跳得很远,然后又回到它以前的值。感觉好像线程已经从一个核心移动到另一个核心,并且在一段时间内返回了不同的计数器值(没有证据,只是一种直觉)。这在XP或7下从未观察到(没有有关Vista、8或8.1的数据)。一个“简单”的解决方法是使用BCDEdit启用UsePl
我正在写一本关于使用.NET4进行多核编程的书,我很想知道人们发现多核编程的哪些部分难以理解或预计难以理解? 最佳答案 什么是并行化的有用工作单元,我如何找到/组织一个?如果您fork的工作小于fork开销,那么所有这些并行原语都无济于事;事实上,这会给你带来一个很好的减速,而不是你所期望的。因此,最大的问题之一是找到明显比并行原语更昂贵的工作单元。这里的一个关键问题是没有人知道执行的成本是多少,包括并行原语本身。清楚地校准这些成本将非常有帮助。(顺便说一句,我们设计、实现并每天使用一种并行编程语言,PARLANSE,其目标是通过允
我正在使用PHP通过exec()调用FFMPEG命令。使用从另一个PHP脚本调用启动此命令的脚本proc_close(proc_open('php/phpdirectory/process.php&',array(),$foo));这很好用。ffmpeg命令被调用并“在后台”运行,留下第一个脚本返回给用户,在这种情况下继续上传文件。如果我使用多核机器怎么办?我将如何着手优化事物以便我可以为每个核心调用一个ffmpeg进程?或者多核机器进程是否会在内核之间拆分工作并更快地完成单个进程?有人吗? 最佳答案 FFMPEG进程的调度是由内核
我想在核心I7计算机系统上运行php。有什么方法可以在64位模式下运行php并使用核心的所有功能+启用超线程。 最佳答案 PHP不支持创建线程。 关于php-如何在多核pc上运行php,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7667660/