我目前正在为CLion上的一些MPI程序编写代码。当我通过CLion运行程序时,它只使用单个进程。
我知道我可以向CMake添加一些add_custom_command
,让它使用mpiexec
。这有点不方便,因为每当我运行程序时,由add_custom_command
进行的运行只是进入FLASH并且单个进程运行将刷新运行板。
我想知道是否有办法让CLion自动与mpiexec
一起运行?我检查了edit configurations
,但似乎我只能添加程序参数。
在这里问一个IDE问题可能很尴尬,如果我不这样做,我会立即删除这个问题。
答案 0 :(得分:2)
您可以在终端的多个进程中运行程序。如果您正在使用Cygwin的MPI,您可以在Cygwin终端中尝试:
> cd ThreadsandMPI/MPI/HellowWorld/
> rm helloworld.exe # if it exists, delete it
> mpic++ helloworld.cpp -o helloworld.exe
> mpirun -np 4 helloworld.exe # run 4 processes
但如果你想在不离开IDE的情况下这样做,那么它也是可能的。您需要创建一个名为MPI.xml
的文件(在C:\Users\<yourUserName>\.clion\config\tools
文件夹中),其中包含以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<toolSet name="MPI">
<tool name="mpic++" description="MPI C++ compiler" showInMainMenu="true" showInEditor="true" showInProject="true" showInSearchPopup="true" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
<exec>
<option name="COMMAND" value="C:\cygwin64\bin\sh.exe" />
<option name="PARAMETERS" value="-l -c "cd /cygdrive/d/CLion_Projects/$FileDirName$; mpic++ $FileName$ -o $FileNameWithoutExtension$.exe"" />
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
</exec>
</tool>
<tool name="mpirun" description="Runner for MPI" showInMainMenu="true" showInEditor="true" showInProject="true" showInSearchPopup="true" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
<exec>
<option name="COMMAND" value="C:\cygwin64\bin\sh.exe" />
<option name="PARAMETERS" value="-l -c "cd /cygdrive/d/Clion_Projects/$FileDirName$; mpirun -np $Prompt$ -bind-to core:overload-allowed $FileNameWithoutAllExtensions$"" />
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
</exec>
</tool>
</toolSet>
MPI.xml
中找到并替换2次出现
d/CLion_Projects
使用您自己的CLion项目目录路径sh.exe
的路径
在cygwin64\bin
文件夹中)D:\something
必须是d/something
,当然要避开路径中的空格此文件将集成MPI C ++编译器mpic++
的外部工具和MPI mpirun
的Runner。
顺便说一句,有关如何在here上将MPI设置为Clion的完整说明。