簡體   English   中英

多核機器上的多個程序實例

[英]Multiple instances of program on multi-core machine

我假設一個雙核(每處理器2個核心)機器,帶有2個處理器,用於解決后面的問題; 所以共有4個“核心”。 因此出現了一些自然問題:

  1. 假設我編寫了一個簡單的串行程序並將其構建在Visual Studio中,並在每次運行中運行相同的程序兩次,例如,使用不同的輸入數據。 他們會在同一個處理器上運行嗎? 或不同的處理器? 每個RAM內存分配多少? 它是1個處理器(2個內核)的RAM內存還是總RAM? 我相信這兩個程序可以在不同的處理器上運行,每個程序都應該有1個處理器的RAM內存(2個內核); 但我並非100%肯定。 Linux上的行為會有什么不同嗎?

  2. 現在假設我的程序是使用分布式內存並行接口(如MPI)編寫的,我在np參數中使用2個處理器運行一次(比如說)。 該程序是否會使用兩個處理器(實際上是所有4個內核)? 這是參數-np的最佳值嗎? 換句話說,如果我用-np 3或-np 4做同樣的事情; 假設沒有額外的優勢是正確的嗎? 我想是的,但我並非百分之百確定。 我還假設我可以高於4(-np 5,-np 6等)。 在這種情況下,進程如何以np> 4的值競爭內存? 對於np> 4,性能會變差嗎?我想是的,也許這部分取決於問題的大小,但同樣不是100%肯定。

    接下來,假設我運行了兩個我的MPI構建的並行程序實例,兩個都帶有-np 2,每個實例都有不同的輸入數據。 首先,這可能嗎? 我假設它們都在兩個處理器上運行? 這兩個程序是如何同步的,它們如何逐個地單獨競爭內存? 這應該至少部分地基於啟動程序的順序,大概是?

  3. 最后,假設我的程序是使用共享內存並行接口(如OpenMP)編寫的,並且我運行了一次。 我可以運行多少“線程”來充分利用共享內存並行性 - 是2還是4? (因為我有2個處理器,每個處理器有2個核心)。 我的猜測是4; 因為所有4個內核都是單個共享內存單元的一部分? 那是對的嗎? 如果答案是4; 在超過4個線程上運行是否有意義? 我不確定這是否有效(與MPI不同,我相信我們可以做到-np 5,-np 6等等)。

最后,假設我運行共享內存並行程序的2個實例,每個實例都有不同的輸入數據。 我認為這是可能的,並且各個進程會以某種方式競爭內存,可能是程序啟動的順序?

他們運行的處理器完全取決於操作系統,取決於許多因素,包括同一台機器上發生的任何其他因素。 然而,常見的情況是,它們傾向於分別坐在一個核心上,偶爾交換到不同的核心(“偶爾”可能意味着每秒幾次甚至更頻繁)。

在正常的PC硬件上沒有自己的RAM,並且無論他們要求多少RAM,都會給出這些進程。

對於MPI進程,是的,您的並行性應該與核心數相匹配(假設CPU負載很大)。 如果兩個MPI進程使用-np 2運行,它們將只消耗所有四個核心。 增加任何東西,他們將開始抗衡。 如上所述,RAM與任何此類無關,盡管在存在爭用時高速緩存將受到影響。

這個“問題”太長了,所以我現在要停下來。

@Marcelo是絕對正確的,我想稍微擴展他的答案。

操作系統將根據系統中的其他內容和可用資源確定構成應用程序執行的線程的位置和時間。 每個應用程序都將在它自己的進程中運行,並且該進程可能有數量或數千個線程 操作系統(Windows,Linux,Mac等)將切換處理內核的執行上下文,以確保所有應用程序和服務都能獲得切片。

至於I / O訪問RAM等物理上由位於主板上的NorthBridge控制器控制的東西。 每個進程 (不是處理器!)將具有可以處理的分配量的RAM,可以在應用程序的生命周期內擴展或收縮...這當然僅限於系統上可用的資源量,還有值得注意的是,操作系統將負責將RAM請求交換到磁盤的物理可用性之外(即虛擬RAM)。 另一方面,您需要通過使用關鍵部分和其他線程同步機制來協調對應用程序內存的訪問。

OpenMP是一個庫,可以幫助你編寫多線程的parellel應用程序,並使保持線程同步的語法更容易....我會評論更多,但它已經有一段時間了,因為我已經使用它,我相信有人可以給更好的解釋。

我看到你正在使用Windows,所以我將總結說你可以在任務管理器中設置進程關聯性(進程可以運行的核心或核心)。 還有一個winapi電話,但名字逃脫了我

a)對於單線程程序,它們不會在同一個cpu上啟動(假設它的cpu綁定)。 您可以通過更改親和力來保證它。 在linux中有一個調用sched_setaffinity和一個用戶空間程序taskset

b)取決於MPI庫; 機器是特定於圖書館的。

c)它取決於具體的應用和數據模式。 對於小數據訪問但傳遞大量消息,您實際上可能會發現限制為1 CPU是最有效的模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM