2012-09-27 108 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

相關問題