2015-06-17 19 views
6

Tôi là một người mới sử dụng các thói quen LAPACK, vì vậy tôi không biết sâu họ, và tôi muốn sử dụng chúng trong các vòng lặp song song (openmp).Chuỗi chủ đề LAPACK có an toàn không?

Tôi sử dụng Ubuntu 14.04LTS và cài đặt LAPACK bằng trình quản lý gói của mình. Phiên bản cài đặt là:

liblapack3 3.5.0-2ubuntu1  Library of linear algebra routines 3 - shared version 

Thư viện BLAS liên quan là:

libblas3 1.2.20110419-7 

Vì vậy, câu hỏi đầu tiên của tôi là khá đơn giản: Tôi có thể sử dụng bất kỳ chương trình con hoặc chức năng của LAPACK trong một vòng lặp song song sử dụng OpenMP ? Id est, chúng có an toàn không ?.

Một câu hỏi khác là: Tôi có thể sử dụng bất kỳ chương trình con hoặc hàm nào của LAPACK trong chương trình con thuần túy không ?, id est, trong chương trình con được mã hóa bởi tôi và được định nghĩa là thuần túy.

Nếu câu trả lời cho những câu hỏi này "không phải với tất cả các thủ tục LAPACK nhưng với một số trong số họ", sau đó, tôi có thể làm điều đó với các chương trình con sau ?:

  • dgetrs
  • dgetrf
  • dgetri
  • dgecon

Và một câu hỏi cuối cùng: làm thủ tục LAPACK sử dụng tất cả các lõi của tôi ?, id est, là họ đã p song song ?.

Trả lời

8

Thư viện LAPACK được dự kiến ​​là chuỗi an toàn. Nó không hỗ trợ nhiều luồng, vì vậy nó không sử dụng (tất cả) lõi hệ thống của bạn. Trên thực tế có một tuyên bố cụ thể rằng tất cả các chương trình con LAPACK là an toàn chỉ từ v3.3.

Mặt khác LAPACK được thiết kế để sử dụng các thư viện con BLAS rộng rãi. BLAS cơ bản cũng không sử dụng bất kỳ chủ đề nào. Tuy nhiên có một số triển khai BLAS phổ biến (ATLAS, OpenBLAS, MKL) có các phiên bản luồng của hầu hết các chương trình con BLAS. Nếu thư viện LAPACK của bạn đang sử dụng một trong các thư viện BLAS ở trên thì có thể là các chương trình con của chúng sẽ bắt đầu các luồng riêng của chúng. Tất nhiên, trong các thư viện trên, người dùng có thể kiểm soát số lượng các chủ đề được sử dụng. Bạn có thể tham khảo tài liệu của họ để tìm ra cách.

Vì vậy, bạn cần phải kiểm tra việc triển khai thư viện BLAS nào bạn sử dụng để có chế độ xem rõ ràng về việc sử dụng luồng của LAPACK.

Về việc sử dụng bên trong các hàm thuần túy, tôi muốn lưu ý rằng cả BLAS và LAPACK đều in các thông báo lỗi cụ thể trên màn hình (stdout hoặc stderr). Các thông báo này thường liên quan đến việc sử dụng sai của chương trình con và không phải lỗi toán học. Ví dụ: nếu bạn cố đảo ngược ma trận thứ nguyên không. Nếu bạn có thể đảm bảo điều này thì có lẽ bạn có thể nói nó là tinh khiết.

+1

Và tôi có thể thấy rằng tôi không thể sử dụng chúng trong hàm _pure_. Tôi nhận được lỗi sau: 'Lỗi: Cuộc gọi chương trình con đến 'dgetrs' tại (1) không phải là PURE' –

+0

Để tham khảo: MKL cung cấp giao diện cho các trình con tinh khiết 95 của Fortran https://software.intel.com/en-us/node/468670 – astrojuanlu

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