2012-11-14 31 views
15

Tôi biết nó có vẻ kỳ lạ, nhưng đây là kịch bản của tôi:Hạt nhân CUDA có thể gọi hàm cublas không?

Tôi cần thực hiện phép nhân ma trận (A (n * k) * B (k * n)), nhưng tôi chỉ cần các phần tử chéo được đánh giá cho ma trận đầu ra. Tôi đã tìm kiếm thư viện cublas và không tìm thấy bất kỳ chức năng cấp 2 hoặc 3 nào có thể thực hiện điều đó. Vì vậy, tôi quyết định phân phối mỗi hàng của A và mỗi cột B thành các chuỗi CUDA. Đối với mỗi luồng (idx), tôi cần tính toán sản phẩm chấm "A [idx,:] * B [:, idx]" và lưu nó làm đầu ra đường chéo tương ứng. Bây giờ kể từ khi sản phẩm chấm này cũng mất một thời gian, và tôi tự hỏi liệu tôi bằng cách nào đó có thể gọi chức năng cublas ở đây (nói cublasSdot) để đạt được nó.

Nếu tôi bỏ lỡ một số chức năng cublas có thể đạt được mục tiêu của tôi trực tiếp (chỉ tính toán các yếu tố đường chéo cho phép nhân ma trận ma trận), câu hỏi này có thể bị loại bỏ.

Trả lời

11

Có thể.

"Giao diện ngôn ngữ và API thời gian chạy thiết bị có sẵn trong CUDA C/C++ là một tập con của API thời gian chạy CUDA có sẵn trên máy chủ. Cú pháp và ngữ nghĩa của API thời gian chạy CUDA đã được giữ lại trên thiết bị để tạo điều kiện thuận lợi Dễ dàng sử dụng lại mã cho các thói quen API có thể chạy trong môi trường máy chủ hoặc thiết bị. Một hạt nhân cũng có thể gọi các thư viện GPU như CUBLAS trực tiếp mà không cần phải quay lại CPU. " Source

Here bạn có thể xem và Phép nhân ma trận-vector bằng cách sử dụng hàm cuda và CUBLAS library cublasSgemv.

+7

Lưu ý rằng tính song song động, tính năng cho phép các cuộc gọi hạt nhân lồng nhau, chỉ được hỗ trợ trên Kepler GK110, một chip vừa được phát hành. GK110 chỉ có trong các sản phẩm tính giá cao cấp, với sản phẩm trung cấp là Tesla K20 với giá 3200 USD. –

+0

Vì vậy, đối với tesla m2090, đây là một GPU fermi, sự tương đồng năng động có thể không được hỗ trợ, phải không? –

+0

Hoàn toàn không được hỗ trợ, bạn có thể tạo hạt nhân khác để thực hiện điều đó trên GPU – RSFalcon7

3

Đảm bảo bạn đang sử dụng thư viện thiết bị để gọi cublas. Bạn không thể sử dụng cùng một thư viện mà bạn đã sử dụng để gọi nó từ máy chủ; chi tiết về việc sử dụng thư viện thiết bị cuda có thể được tìm thấy trên bộ công cụ cuda: http://docs.nvidia.com/cuda/cublas/index.html#device-api

Xem các mẫu cuda 5 dưới 7_CUDALibraries /.

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