1

如果我在MPI配置中的Beowulf集羣的多個節點上運行相同的二進制文件(這意味着相同的體系結構),是否可以安全地通過MPI傳遞函數指針作爲告訴另一個節點調用函數的方式?在什麼情況下,如果有的話,同一個二進制文件中的同一個函數在不同的機器或不同的實例上有不同的虛擬地址?MPI +函數指針?

回答

4

將每個集合MPI_FILE_OPEN(MPI維護的)中的一個共享文件指針以外的指針傳遞給其他進程是沒有意義的。單獨的地址空間意味着指針值在除生成它之外的任何進程中都是無用的。

另一方面,您可以傳遞有關的信息,其中函數您希望每個進程調用,或使每個進程單獨決定。這取決於你的代碼在做什麼,當然。

+0

[This answer](https://stackoverflow.com/a/22772214/1804173)建議通過禁用ASLR來發送函數指針。 – bluenote10

4

只需創建一個用已知順序填充的函數數組並傳遞函數的ID。