[英]Executing a particular function on specified core using openMP
是否可以使用OpenMP修復一個功能以在特定內核上運行?
例如:我有兩個功能,即: Foo1和Foo2
我的電腦(Linux操作系統)有兩個核心:CORE0和核心-1。
那么,如何才能同時 在core0 上 始終運行應用程序Foo1和在core1上始終運行Foo2 ?
我正在使用C ++進行編碼。
請幫忙!!
聽起來你想
omp_set_num_threads(2)
),然后 Foo1
或Foo2
。 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.