簡體   English   中英

使用openMP在指定的內核上執行特定功能

[英]Executing a particular function on specified core using openMP

是否可以使用OpenMP修復一個功能以在特定內核上運行?

例如:我有兩個功能,即: Foo1Foo2

我的電腦(Linux操作系統)有兩個核心:CORE0核心-1。

那么,如何才能同時 在core0 始終運行應用程序Foo1和在core1上始終運行Foo2

我正在使用C ++進行編碼。

請幫忙!!

聽起來你想

  1. 將OpenMP線程數設置為2( omp_set_num_threads(2) ),然后
  2. 並行區域中 ,檢查線程ID並相應地調用Foo1Foo2

OpenMP文檔中描述了如何執行這些操作。

一種替代方法是創建兩個openMP任務,每個任務都運行一個功能。

感謝@Novelocrat和@Joachim的有用評論:

我這樣做是這樣的:

int main() {

#pragma omp parallel num_threads(2)
{
    #pragma omp sections
    {
        #pragma omp section
        {
            foo1();
        }
        #pragma omp section
        {
            foo2();
        }
    }
}

return 0; }

現在foo1()總是在線程1上運行,而foo2()總是在線程2上運行。

在運行時設置環境變量:GOMP_CPU_AFFINITY =“ 0 1”

將線程1綁定到core0,將線程2綁定到core1。

暫無
暫無

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

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