当我尝试使用MATLAB的dos()命令调用并行化的可执行文件时,它将不会运行可执行文件并返回错误.
就其本身而言,这个简单的C++程序完全按照您的预期运行:
/* Serial.exe */
#include <iostream>
int main(void) {
std::cout << "Apple!\n";
std::cout << "Banana!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果:
Apple!
Banana!
Run Code Online (Sandbox Code Playgroud)
这个是这样的:
/* 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;
}
Run Code Online (Sandbox Code Playgroud)
结果:
Apple!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Run Code Online (Sandbox Code Playgroud)
现在,我尝试使用以下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)
Run Code Online (Sandbox Code Playgroud)
结果:
Apple!
Banana! …Run Code Online (Sandbox Code Playgroud)