MPI標準是否提供了一個預處理器宏,因此如果它是由MPI啓用的編譯器編譯的,我的C/C++代碼可以分支嗎?類似於OpenMP的_OPENMP
宏。MPI是否提供預處理器宏?
回答
按照MPI standard(頁335),您可以檢查MPI_VERSION
宏:
爲了應對變化的MPI標準,有編譯時和運行時的方式,以確定哪些該標準的版本正在使用的環境中使用。
「版本」 將由兩個獨立的整數表示,對於版本和顛覆:
在C,
#define MPI_VERSION 3 #define MPI_SUBVERSION 0
我嘗試過使用OpenMPI 1.6.5,而未定義MPI_VERSION。所以,顯然,並非所有的MPI實現都支持它:(。 – user2052436 2015-02-06 17:38:24
我不知道man,OpenMPI在OpenMPI項目誕生之後就已經在mpi.h中定義了這些定義:請參閱commit https://github.com/open- mpi/ompi/commit/566a050c2 - 雖然它是最初的骨架中的一大塊「土地大塊」,但github不會顯示ompi/include/mpi.h.in的第120行,但它在那麼 – 2015-02-07 03:19:03
@Rob:問題似乎是在頭文件中定義了這個宏,這種類型的打敗了OP檢測他是否可以包含頭文件的目的:-) – Cameron 2015-02-07 16:21:45
- 1. 預處理器宏
- 2. YAML預處理器/宏處理器
- 3. MPI處理器中MPI_Request是否全局?
- 4. 獲取預處理器宏
- 5. 預處理器宏變量
- 6. 預處理宏
- 7. C預處理器宏定義宏
- 8. Xcode中的預處理器忽略目標預處理器宏
- 9. 測試宏內是否定義了預處理器符號
- 10. 是否可以在宏內設置預處理器條件?
- 11. 與預處理宏
- 12. 檢查預處理宏是否是C字符串?
- 13. 內聯函數vs預處理器宏
- 14. 下預處理器宏擴展
- 15. 結合預處理器宏和變量
- 16. CMake:如何通過預處理器宏
- 17. 帶點的預處理器宏?
- 18. C預處理器,遞歸宏
- 19. 預處理器引用宏參數
- 20. C預處理器宏擴展
- 21. C預處理器宏替換
- 22. BOOST加固指南(預處理器宏)
- 23. SWIG中的預處理器宏
- 24. C預處理器,宏「重載」
- 25. C:宏中的預處理器?
- 26. Clang是否允許預處理器==?
- 27. MPI:內核還是處理器?
- 28. 計數預處理宏
- 29. Xcode的預處理宏
- 30. 的typedef在預處理宏
我想'#包括 「mpi.h」'只如果'#if defined(_MPI)' – user2052436 2015-02-05 21:10:43
不幸的是,這個功能不存在,因爲MPI是一個庫,並且不承擔任何編譯器支持。你甚至不需要使用例如CC = mpicc編譯MPI代碼。不過,您可以在應用程序/庫構建系統中定義此功能。 – Jeff 2015-09-05 20:57:57