gpt4 book ai didi

c++ - 使用 MATLAB 'dos' 命令调用并行化可执行文件的行为不同于独立可执行文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:10 26 4
gpt4 key购买 nike

当我尝试使用 MATLAB 的 dos() 命令调用并行化可执行文件时,它不会运行可执行文件并返回错误。

就其本身而言,这个简单的 C++ 程序完全按照您的预期运行:

/* Serial.exe */

#include <iostream>

int main(void) {

std::cout << "Apple!\n";
std::cout << "Banana!\n";

return 0;

}

结果:

Apple!
Banana!

这个也是:

/* Parallel */

#include <iostream>
#include <omp.h>

int main(void) {
std::cout << "Apple!\n";

#pragma omp parallel num_threads(8)
{
std::cout << "Banana!\n";
}

return 0;
}

结果:

Apple!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!

现在,我尝试使用以下 MATLAB 脚本调用这两个程序:

%%  MATLAB call script

exe_path_1 = 'C:\\Users\\Jim\\Documents\\MATLAB\\Serial.exe';
exe_path_2 = 'C:\\Users\\Jim\\Documents\\MATLAB\\Parallel.exe';

rtn_1 = dos(exe_path_1)
rtn_2 = dos(exe_path_2)

结果:

Apple!
Banana!
rtn_1 = 0
rtn_2 = -1.0737e+09

MATLAB 的 dos() 命令导致我的并行 C++ 代码失败的原因是什么?

最佳答案

我修复了通过 java 调用命令的类似问题。这是一些使用 java 类的 m 代码:​​

rt = java.lang.Runtime.getRuntime();
pr = rt.exec(command);
input= java.io.BufferedReader(java.io.InputStreamReader(pr.getInputStream()));
while(1)
f=(input.readLine());
if isempty(f)
break;
end
disp(char(f));
end

关于c++ - 使用 MATLAB 'dos' 命令调用并行化可执行文件的行为不同于独立可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24312211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com