2012-09-03 55 views
13

Tôi đã tìm kiếm một cách dễ dàng để cài đặt/biên dịch Numpy với OpenBLAS nhưng không tìm thấy câu trả lời dễ dàng. Tất cả các tài liệu tôi đã thấy có quá nhiều kiến ​​thức như được cấp cho một người như tôi, những người không được sử dụng để biên dịch phần mềm. Có hai gói trong Ubuntu liên quan đến OpenBLAS: libopenblas-baselibopenblas-dev. Khi chúng được cài đặt, tôi nên làm gì để cài đặt lại Numpy với chúng? Cảm ơn!Làm thế nào để sử dụng gọn gàng với OpenBLAS thay vì Atlas trong Ubuntu?

Lưu ý rằng khi các gói OpenBLAS này được cài đặt, Numpy không hoạt động nữa: không thể nhập: ImportError: /usr/lib/liblapack.so.3gf: biểu tượng không xác định: ATL_chemv. Sự cố cũng xảy ra khi cài đặt Theano với website instructions cho Ubuntu.

Điều này đã được chú ý here rồi.

+0

Vì tôi không có hướng dẫn từng bước: Bạn có thể phải chạy sudo update-alternatives --all và đặt cài đặt cho điều đó (bạn có thể không phải thực hiện việc này nếu bạn chưa cài đặt Atlas). Bạn cũng phải cài đặt liblapack3gf mà tôi tin. Cá nhân tôi đã có một số vấn đề với các gói khác khi làm điều đó (shogun), nhưng có lẽ điều đó không quan trọng đối với bạn. Và chạy "import numpy; numpy.test()" trước và sau khi bạn thay đổi mọi thứ ... – seberg

+0

Nó thực sự hiệu quả! : liblipack3gf đã được cài đặt và sử dụng các giải pháp thay thế cập nhật --all và chọn giải pháp thay thế '/ usr/lib/lapack/liblapack.so.3gf' cho' liblapack.so.3gf' – PierreE

+1

Nếu bạn chỉ gỡ cài đặt tất cả gói atlas , sau đó lỗi này biến mất. – user239558

Trả lời

13

Run sudo update-alternatives --all và thiết lập liblapack.so.3gf-/usr/lib/lapack/liblapack.so.3gf

1

xem xét sử dụng EasyBuild (http://hpcugent.github.io/easybuild/), một framework mã nguồn mở để xây dựng và cài đặt phần mềm.

Nó cho phép bạn (rất dễ dàng) xây dựng và cài đặt (khoa học) phần mềm với trình biên dịch khác nhau và sử dụng các thư viện BLAS khác nhau (ATLAS, OpenBLAS, ACML, Intel MKL, ...).

Khi bạn cài đặt EasyBuild (tip pro: sử dụng thủ tục bootstrapping mô tả ở https://github.com/hpcugent/easybuild/wiki/Bootstrapping-EasyBuild), nó nắm để chạy một lệnh duy nhất, một cái gì đó như:

eb numpy-1.6.2-goolf-1.4.10-Python-2.7.3.eb -ldr

này sẽ lần đầu tiên xây dựng và cài đặt đầy đủ trình biên dịch toolchain (goolf: GCC + OpenBLAS + OpenMPI + LAPACK + FFTW), và sau đó xây dựng Python và numpy với toolchain đó. Và tất cả điều đó trong khi bạn đang ăn trưa. ;-)

Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển EasyBuild.

+0

Eb có tạo bản phát hành mới nhất không. python 2.7.5, numpy 1.7.1 vv? –

+0

Xem https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs/p/Python và https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs/ n/numpy cho các tập tin easyconfig trong bản phát hành mới nhất. EasyBuild v1.5 (phát hành kế hoạch cuối tuần này), sẽ thêm các tệp easyconfig cho Python 2.7.5 (xem https://github.com/hpcugent/easybuild-easyconfigs/tree/develop/easybuild/easyconfigs/p/Python), nhưng thường cài đặt các phiên bản mới đã được hỗ trợ rất dễ dàng: chỉ cần tăng số phiên bản trong tệp easyconfig và đặt nó vào 'eb'. –

10

Để thêm vào câu trả lời được chấp nhận (sử dụng update-alternatives), lý do là vì OpenBlas không tương thích với phiên bản Atlas của Lapack. Đối với mỗi Blas và LAPACK phiên bản:

  1. Mặc định Blas + Mặc định LAPACK => OK
  2. OpenBlas + Mặc định LAPACK => OK
  3. Atlas-Blas + Mặc định LAPACK => OK
  4. Atlas- Blas + Atlas-Lapack => OK
  5. OpenBlas + Atlas-Lapack => L ERI! (Trường hợp sau đây.)

Đây là từ cả hai kinh nghiệm cá nhân (với cùng vấn đề chính xác) và nhận ra lý do tại sao sự kết hợp này không được đề cập in this comparison blog.

Nhân tiện, bạn chỉ có thể tìm các tệp cần thiết trong /etc/alternatives/, thường với tên tệp bắt đầu bằng lib*. Đối với mỗi người, hãy làm sudo update-alternatives --config <filename>.Ví dụ, làm gì để sau:

  • sudo update-alternatives --config libblas.so
  • sudo update-alternatives --config libblas.so.3

để thay đổi phiên bản Blas.

+0

Câu trả lời hay. Tôi đã giải quyết vấn đề của mình bằng cách cài đặt 'liblapack3' ngoài' libopenblas-base' và 'libatlas3-base'. –

+0

Giải quyết, cảm ơn rất nhiều vì câu trả lời tuyệt vời của bạn. – TurtleIzzy

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