我正在鏈接一個使用OpenMPI內部進程支持構建的庫。使用MPI的鏈接庫,我不知道,發生了什麼後面發生了什麼
我的應用程序正在構建,沒有MPI支持,我鏈接到這個庫。我不知道mpi問題背後發生了什麼。如果庫A從openmpi加載/調用函數,這是否意味着我可以使用runmpi運行我的應用程序以使庫進程自行分發?如果我決定讓應用程序MPI知道並且想要使用mpich2而不是OpenMPI,或者如果我想使用鏈接到mpich而不是openmpi的庫B,庫和我的應用程序是否會在各自的消息空間中運行?通常強制應用程序開發人員明確鏈接mpi實現以使用啓用了mpi的庫?
感謝您的澄清。另一個問題,雖然有點主觀。如果應用程序不使用MPI,但庫在內部傳遞MPI數據類型,是否有必要要求開發人員確保庫標頭將正確的mpi.h實現*和*鏈接與正確的mpi進行導入,即使我們根本不需要這些(當應該由庫對象加載並在源代碼中而不是在頭文件中處理時,這麼多額外的鏈接)。我正在尋找一些用於報告/更改請求的燃料。 – crasic
如果庫完全使用MPI,則對於整個應用程序而言,編譯和鏈接相同的MPI實現是非常必要的。這正是它在這個領域的工作原理。作爲編寫類似於使用MPI的庫的代碼的人,我會拒絕這樣的錯誤報告/更改請求,因爲它是無效的,而不是值得使用我的努力 – Novelocrat