通常,我通过以下方式使用makefile运行代码:
CC = 'mpicc -D_MPI = 4' make cav2d2phase.tst
我在4个处理器上并行运行代码。
现在我的主要功能包含参数:
int main (int argc, char * argv []) {
if (argc> 1)
Ra = atof (argv [1]);
if (argc> 2)
Pr = atof (argv [2]);
size (npe ());
origin (-0.5, -0.5);
dimensions (ny = 1);
DT = 0.1;
TOLERANCE = 1e-6;
N = 1 << MINLEVEL;
// Ra = 1e5; Pr = 1 .;
B = 1.2;
run ();
}
我不知道如何通过直接在外壳中为变量Ra和Pr分配数值来启动此代码。
例如:
CC = 'mpicc -D_MPI = 4' make cav2d2phase.tst 2 Ra = 1e6
答案 0 :(得分:1)
目前尚不清楚如何从Makefile内部调用C代码,但是您可以将Make命令行变量传递给程序。
假设您的应用程序在Makefile中的调用方式如下
cav2d2phase.tst: …
./your-program <$< >$@
只需将其更改为
cav2d2phase.tst: …
./your-program ${Ra} ${Pr} <$< >$@
并调用您的make目标:
CC='mpicc -D_MPI = 4' make cav2d2phase.tst 2 Ra=1e6