2012-07-06 19 views
5

Tôi đang cố gắng chạy chương trình của mình bằng cách sử dụng trình lập lịch trình mô-men xoắn bằng cách chạy mpi. Mặc dù trong tập tin PBS tôi tải tất cả các thư viện bằng cáchĐang tải thư viện được chia sẻ trong open-mpi/mpi-run

export LD_LIBRARY_PATH=/path/to/library 

nhưng nó mang lại cho lỗi ví dụ:

error while loading shared libraries: libarmadillo.so.3: 
cannot open shared object file: No such file or directory. 

Tôi đoán lỗi nằm trong LD_LIBRARY_PATH biến không được thiết lập ở tất cả các nút. Làm thế nào tôi sẽ làm cho nó hoạt động?

+0

Bạn có thể đăng tập lệnh PBS của mình tại đây không? – chrisaycock

Trả lời

16

LD_LIBRARY_PATH không được tự động xuất sang quy trình MPI, được sinh ra bởi mpirun. Bạn nên sử dụng

mpirun -x LD_LIBRARY_PATH ... 

để đẩy giá trị LD_LIBRARY_PATH. Ngoài ra hãy đảm bảo rằng đường dẫn được chỉ định tồn tại trên tất cả các nút trong cụm và libarmadillo.so.3 có sẵn ở mọi nơi.

+2

Nếu mở MPI được biên dịch với hỗ trợ Torque/TM nguyên gốc, LD_LIBRARY_PATH (và phần còn lại của môi trường) sẽ được truyền cho tất cả các nút trong phân bổ tự động. Nếu mở MPI không được xây dựng với sự hỗ trợ Torque bản địa, thì tôi đoán bạn đang sử dụng rsh/ssh để khởi chạy, trong trường hợp này mệnh đề "-x LD_LIBRARY_PATH" là cần thiết. Tôi thực sự khuyên bạn nên xây dựng lại OMPI với sự hỗ trợ Torque/TM; nó tốt hơn hỗ trợ rsh/ssh vì nhiều lý do. –

+0

CẢM ƠN BẠN. Tôi đã lái xe với SHIT NÀY .... Xuất khẩu LD_LIBRARY_PATH là vụ phải cho phép các tiến trình con sử dụng các biến đó, nhưng hóa ra nó không. –

+0

@GregK. chỉ xuất các tác phẩm cho các tiến trình được khởi chạy trên cùng một nút trong đó 'mpiexec' chạy vì đó là các tiến trình con của tiến trình sau. Các tiến trình được khởi chạy trên các nút từ xa là con của trình nền con lai ORTE tương ứng và không trực tiếp kế thừa môi trường của 'mpiexec' nhưng chỉ môi trường được chuyển tiếp đến và được bổ sung bởi daemon. (Tôi có thể sai, Jeff Squyres biết rõ hơn) –

3

Trên một số hệ thống, môi trường của bạn không phải lúc nào cũng được lan truyền qua mpirun. Bạn nên đặt tất cả các biến đó trong tệp .bashrc của mình.

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