Khi tôi cố gọi một tập tin thực thi song song với lệnh của MATLAB dos()
, nó sẽ không chạy được và trả về lỗi.Gọi một tập tin thực thi song song với lệnh MATLAB 'dos' hoạt động khác với lệnh thực thi độc lập
On riêng của mình, C này đơn giản chương trình ++ chạy chính xác như bạn mong chờ:
/* Serial.exe */
#include <iostream>
int main(void) {
std::cout << "Apple!\n";
std::cout << "Banana!\n";
return 0;
}
Kết quả:
Apple!
Banana!
Vì vậy, làm thế này:
/* 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;
}
Kết quả:
Apple!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Banana!
Bây giờ, tôi cố gắng gọi cho cả hai chương trình với kịch bản MATLAB sau:
%% 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)
Kết quả:
Apple!
Banana!
rtn_1 = 0
rtn_2 = -1.0737e+09
nó là gì về lệnh MATLAB của dos()
gây song song C của tôi ++ mã để Thất bại?
Nó có thể hoạt động đúng nhưng chỉ trả lại kết quả cuối cùng. Điều gì xảy ra nếu bạn sử dụng 'rtn_2 = dos (exe_path_2, '- echo')' hoặc '[rtn_2, cmdout_2] = dos (exe_path_2)'? – excaza
Sử dụng ''-echo'' không thay đổi kết quả. '[rtn_2, cmdout_2]' tạo ra cùng một giá trị 'rtn_2' và một chuỗi rỗng. – Jim
Phiên bản Matlab nào? Một số phiên bản cũ hơn IIRC không bật đa luồng theo mặc định, bạn phải đặt nó trong Preferences. – paisanco