2012-07-20 33 views
13

Numpy có thể được "liên kết/biên dịch" với các triển khai BLAS khác nhau (MKL, ACML, ATLAS, GotoBlas, v.v.). Đó không phải là luôn luôn đơn giản để cấu hình nhưng nó là có thể.Numpy, BLAS và CUBLAS

Bạn cũng có thể "liên kết/biên dịch" gọn gàng với việc triển khai CUBLAS của NVIDIA không?
Tôi không thể tìm thấy bất kỳ tài nguyên nào trên web và trước khi tôi dành quá nhiều thời gian để thử nó, tôi muốn đảm bảo rằng nó có thể thực hiện được.

Trả lời

15

Trong một từ: không, bạn không thể làm điều đó.

Có một scikit khá tốt cung cấp quyền truy cập vào CUBLAS từ scipy được gọi là scikits.cuda được xây dựng trên đầu trang của PyCUDA. PyCUDA cung cấp một lớp numpy.ndarray giống như lớp liền mạch cho phép thao tác các mảng cứng nhắc trong bộ nhớ GPU với CUDA. Vì vậy, bạn có thể sử dụng CUBLAS và CUDA với sự khó khăn, nhưng bạn không thể chỉ liên kết với CUBLAS và mong đợi nó hoạt động.

Ngoài ra còn có một thư viện thương mại cung cấp chức năng giống như cub và cublas và có giao diện hoặc ràng buộc Python, nhưng tôi sẽ để nó vào một trong những thứ mà bạn muốn điền vào.

+1

Cảm ơn thông tin. Tôi biết về các thư viện Python khác nhau cho phép truy cập vào CUDA. Tuy nhiên, mặc dù tôi có thể cấu hình Numpy để sử dụng Cublas, tôi sẽ không phải thay đổi bất kỳ thứ gì trong mã hiện có (hiện tại nó sử dụng '' numpy.dot() '' và các hàm Linealg khác với MKL hoặc GotoBlas2) và tôi có thể làm so sánh hiệu suất. Chỉ cần ra khỏi tò mò: Bạn có biết cơ hội những lý do kỹ thuật là lý do tại sao nó không thể liên kết numpy chống lại CUBLAS? –

+1

Đó là vì API không giống nhau, và có một lớp toàn bộ quản lý bộ nhớ mà ứng dụng tiêu chuẩn không biết gì về. – talonmies

+1

Điều này có thể làm thay đổi tình huống: http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/ mặc dù điều này áp dụng cho quãng tám nó cũng sẽ hoạt động cho Numpy –

4

đây là một khả năng:

http://www.cs.toronto.edu/~tijmen/gnumpy.html

này về cơ bản là một gnumpy + cudamat môi trường mà có thể được sử dụng để khai thác một GPU. cũng cùng một mã có thể chạy mà không có gpu bằng cách sử dụng npmat. tham khảo liên kết ở trên để tải xuống tất cả các tệp này.

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