2011-08-04 44 views
10

Tôi đang cố gắng sử dụng MPI với ngôn ngữ lập trình D. D hỗ trợ đầy đủ cho C ABI và có thể liên kết với và gọi bất kỳ mã C nào. Tôi đã làm những thứ rõ ràng và dịch header Bộ KH & ĐT để D. sau đó tôi dịch a test program from Wikipedia để D. Tôi biên dịch nó với lệnh sau đây:MPI và D: Tùy chọn liên kết

dmd test.d -L-lmpistubs

Nó hoạt động khi tôi chỉ cần chạy ./test, và in:

0: We have 1 processors

Tuy nhiên, khi tôi chạy với mpiexec -n 8 test, nó in gì cả. Sự hiểu biết của tôi là thực thi MPI yêu cầu một loạt các tùy chọn liên kết lạ, đó là lý do tại sao các công cụ như mpicc tồn tại để tự động hóa quy trình. Tuy nhiên, điều này không giúp tôi nếu tôi đang cố gắng sử dụng MPI trong D. Tôi cho rằng đó là vì tôi không sử dụng các tùy chọn liên kết phù hợp. Ai đó có thể cho tôi biết số mpicc và cách tôi có thể thực hiện DMD không?

Chỉnh sửa: Tôi đã tìm thấy câu trả lời bằng cách sử dụng mpicc -showme. Điều này cho thấy các lệnh mpicc chuyển tiếp đến gcc. Tuy nhiên, tôi cũng nhận ra rằng tôi đã dịch sai phần đầu trang. Câu hỏi tiếp theo: How do to it right.

+0

bạn có sử dụng extern (C) khi bạn đang dịch không? –

+2

bạn đã thử chạy 'strace -f mpicc test.c' hoặc một cái gì đó như thế, để tìm các tùy chọn liên kết? Tôi cho rằng nó đang gọi 'ld' hoặc một cái gì đó như một tiến trình con. – gmfawcett

Trả lời

2

mpicc là tên gọi chung của các tập lệnh khác nhau và thậm chí là các chương trình. Một số người trong số họ có tùy chọn như -echo, -show, -compile-info, -link-info hoặc -showme hoặc tùy chọn môi trường để hiển thị những gì thực sự được gọi.

Hãy thử để kiểm tra là những gì nó thực sự với

file -k `which mpicc` 

Nếu đó là kịch bản, nó có thể được viết bằng sh, bash, perl, python. Bạn có thể dễ dàng xem và tìm tùy chọn chính xác. Nếu nó là một chương trình, cố gắng chạy

strings `which mpicc` 

Đôi khi strings có thể trích xuất tên tùy chọn và/hoặc các biến môi trường kiểm soát công việc của kịch bản.

Ngoài ra, hầu hết mpicc kiểm tra biến CC env để lấy tên trình biên dịch. Bạn có thể viết một kịch bản hoặc một chương trình mà sẽ chỉ in các đối số của nó và đặt CC env cho chương trình này.

Các vấn đề liên quan