OpenMP中定義的內核數量如何,此API如何知道核心的存在。OpenMP如何確定系統中的核心數量?
回答
OpenMP定義了一個內部控制變量(ICV)nthreads-var,它基本上控制了一個並行區域的線程數。
nthreads-var(如果未由環境變量OMP_NUM_THREADS
定義)的初始值是實現定義的。內核的數量看起來像是一個合理的默認設置。 GCCs(libgomp)爲BSD,Linux,mingw32,POSIX,rtems在gomp_init_num_threads
中實現它。您可以查看libgomp/config/<platform>/proc.c
下的具體實現。
Linux通過pthread_getaffinity_np
檢查線程關係,並將線程數設置爲允許進程運行的CPU數。 MinGW同樣通過GetProcessAffinityMask
。其餘平臺基本上使用sysconf(_SC_NPROCESSORS_ONLN)
。
OpenMP確實在OpenMP 4.0+的線程放置API中具有核心概念。 Linux上的GCC和Intel OpenMP運行時分析'sysfs'中的CPU條目,以便找出拓撲信息。 –
@HristoIliev好點。我認爲OP對於我試圖解決的OpenMP線程有一些更基本的誤解。編輯答案在技術上更加正確。 – Zulan
- 1. 如何將muti核心CPU轉換爲單核心繫統
- 2. 如何確定PC的CPU核心數量?
- 3. 如何確定C++中Linux系統RAM的數量?
- 4. 核心數據與文件系統
- 5. EF核心2.0無法確定關係
- 6. 如何找到物理核心的數量在Windows系統的C++代碼
- 7. OpenMP給出(核心轉儲)
- 8. 如何完全在多核系統上預留核心?
- 9. 矢量統計庫 - 數學核心庫
- 10. 如何從Lua腳本中確定系統的操作系統?
- 11. 在許多核心繫統中如何訪問共享內存
- 12. 如何使用核心數據關係?
- 13. 如何同步核心數據關係?
- 14. OpenMP,使用並行的所有核心
- 15. 核心操作系統LDAP集成
- 16. .NET核心Windows操作系統要求
- 17. 核心數據錯誤:如何正確
- 18. 確定asp.net核心中的端口
- 19. 獲取核心數據中一對多關係的數量
- 20. 確定ASP.NET MVC核心區
- 21. 在文件系統與核心數據中存儲圖像
- 22. OpenMP僅檢測多插槽/多核系統上的單個內核
- 23. 核心數據中的三元關係
- 24. 核心數據中的關係同步
- 25. 核心數據中的單向關係
- 26. 核心數據中的許多關係
- 27. 關係中的核心數據總和
- 28. OpenMP劃分循環通過核心
- 29. 核心數據無關係
- 30. iOS核心數據 - 關係
@zulan我檢查過,但它說nthreads-var的默認值是1,但核心數量通常大於1。所以這是否意味着它與no沒有關係。核心? –
它在哪裏說的? OpenMP標準4.5在2.3.2中說默認是* implementation defined *。 – Zulan