我正在向Fortran程序添加選項以使用多處理器使用MPI運行它。如果用戶要並行運行它,用戶需要指定不同的輸入文件---針對問題的每個域(處理器)的一個文件。該程序將默認查找特定的文件名(一個名爲「serial.inp」的文件)。因此,我需要程序知道它何時並行運行,以便它可以改爲查找其他文件名(例如「parallel_1.inp」,「parallel_2.inp」,「parallel_3.inp」等)。我首先想到的是讓用戶將參數傳遞給程序,當他們執行它,例如:使用mpiexec開始的程序是否知道它是以mpiexec開始的?
程序mpiexec -n 4 myprogram.exe -parallel
通過這種方式,它會尋找並行文件時辯論是存在的。但它似乎有點多餘。如果使用mpiexec調用該程序,毫無疑問用戶正試圖並行運行它。有什麼方法可以讓我的程序知道它是用mpiexec開始的?或者命令行參數是我最好的選擇?
這正是我正在尋找的。我對這段代碼的並行化非常嚴格。用戶需要使用與其模型中的域相同數量的特效。如果他們只有一個域,它將是一個串行運行,所以「-np 1」問題對我來說並不是一個問題。換句話說,不可能只有一個並行文件「parallel_1.inp」。他們必須有「serial.inp」或多個「parallel _ *。inp」文件。否則,他們會收到錯誤消息。 – rks171 2013-05-03 18:51:00