Tôi đang sử dụng các cuộc gọi MPI để chạy một quy trình trên nhiều quy trình bằng cách sử dụng C++. Một vài dòng đầu tiên trong chức năng chính của tôi trông giống như:Truyền đối số qua dòng lệnh với MPI
int main(int argc, char *argv[]){
int comm_sz;
int my_rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
x = atoi(argv[4]);
y = atoi(argv[5]);
Bây giờ khi tôi thực hiện và chạy chương trình của tôi sử dụng
mpiexec -n 1 program 10 10
Tôi muốn x và y được gán các giá trị 10 và 10, như họ là những đối số 4 và 5 đã trôi qua. Nhưng điều này không xảy ra và nó gán các biến này thành 0 và 0 cho phù hợp. và chương trình của tôi không chạy như mong muốn.
Tôi có mã nối tiếp đang chạy khi tôi thay đổi các số này. Chỉ là tôi mới làm quen với MPI.
Bạn có thể đề xuất nơi tôi đang đi sai?
Bạn đã thử in nội dung của 'argv' chưa? Kết quả là gì? – suszterpatt
Tôi đã làm. Khi tôi in ra các nội dung trong mảng, nó đã nhận ra hai đối số 10, 10 nhưng không ở vị trí 4 và 5. – freshmaster
Dường như đọc chúng như argv [1] và argv [2]. Tôi giải quyết vấn đề của tôi có, nhưng tôi muốn biết tại sao điều này lại xảy ra. Tôi không hiểu chính xác MPI_Init. – freshmaster