2012-09-27 69 views
1

希望这是一个简单的问题,我忽略了一个答案,但在我今天早上的搜索中,我一直没有结果。在多个核心上运行不同的程序

我的计算机上有四个内核,并且想要在多核上同时运行R中的不同程序(循环)。如果我打开四个R会话,它们会自动放置在不同的内核上,还是需要找出一种方法来降雪?

我已经成功地使用过之前的降雪来运行相同的程序,但之前有不同的值。但是,降雪会让我在不同的内核上运行完全不同的程序吗?我是否可以将每个模拟循环设置为不同的功能(即:func1,func2,func3,func4),然后让每个功能分配给不同的内核?

感谢所有帮助

+1

你为什么不做一个实验,看看会发生什么? –

+0

@BenBolker好评 – csgillespie

+0

嗨,本,不幸的是我不能做一个适当的测试,因为我在一个相当大的模拟中使用了我的核心。尝试设计我的下一个模拟,而当前正在运行,所以我可以准备好去。似乎我会遵循Henrik的建议,即只使用多个R会话而不需要降雪 – user1399311

回答

4

我不知道它是如何在不同的操作系统,但在Windows您的操作系统注意到了这一问题。因此,您可以根据需要打开任意数量的R会话,并且它们将分布在各个核心之间(每个进程最多占用一个核心)。如果你打开更多的R会话比你有CPU,那么显然有些人将无法使用完整的CPU。

所以不需要在这里使用降雪。

+0

我不明白倒票。如果你有完全不同的东西来计算,那么'降雪'或'并行'是不必要的,并且按照OP的提议开放不同的R控制台。然后由OS完成跨核心分配。 – Henrik

3

回答这个问题最简单的方法是:

  1. 创建四个函数,每次取一两分钟运行
  2. 使用snowfall
  3. 看看你CPU处理器使用情况。

但要回答你的问题,是的,他们将分布在核心之间。

可能更容易只使用parallel包附带有R 2.15

+0

我一直认为'parallel'更容易,因为它a)带有所有最新版本,并且b)实际上是更好的重写/代码审查“雪”和“多核”的部分。 –

+0

所有最近的版本都是重头戏。 – csgillespie

相关问题