2013-01-28 43 views
6

Tôi cần triển khai phép nhân ma trận trên GPU với CUDA cho ma trận lớn. Kích thước của mỗi ma trận một mình lớn hơn bộ nhớ GPU. Vì vậy, tôi nghĩ rằng tôi cần một thuật toán để làm điều đó một cách hiệu quả. Tôi đã đi khắp nơi trên internet nhưng không thể tìm thấy. Bất cứ ai có thể cho tôi tên hoặc liên kết của các thuật toán như vậy.Nhân ma trận lớn trên gpu

Cảm ơn bạn

+1

Điều gì đơn giản là chia các ma trận như '[A0; A1] * [B0 B1] = [A0 * B0 A0 * B1; A1 * B0 A1 * B1] '? Đó có thể là một khởi đầu tốt. – kangshiyin

Trả lời

13

Không thực sự là một thuật toán chính thức cho việc này; nói chung, các loại hoạt động đại số tuyến tính mà toàn bộ vấn đề không được lưu trữ trong bộ nhớ đồng thời được gọi là hoạt động "ngoài lõi".

Để giải quyết nó, bạn không cần một thuật toán đặc biệt phức tạp, chỉ cần thư viện CUBLAS và bút chì và giấy. Ví dụ, bạn có thể phân hủy các sản phẩm ma trận như thế này:

enter image description here

mà cung cấp cho bạn bốn hoạt động nhân tiểu ma trận độc lập. Đây có thể được tính toán bằng cách sử dụng bốn cuộc gọi đến CUBLAS gemm bằng cách sử dụng mã máy chủ rất đơn giản. Bạn có thể mở rộng ý tưởng cho nhiều ma trận phụ như được yêu cầu để phù hợp với kích thước vấn đề và dung lượng GPU của bạn. Nguyên tắc tương tự cũng có thể được sử dụng để thực hiện các vấn đề nhân ma trận trên nhiều GPU (xem this question để biết ví dụ). Thay vào đó, bạn có thể tìm thấy việc triển khai thực hiện ý tưởng chính xác này ở Harvard đã phát triển hệ thống mã hóa SciGPU-GEMM và trong việc triển khai linpack HPL-CUDA (tuyên bố từ chối trách nhiệm: Tôi liên kết với codebase thứ hai).

+0

+1. Sự phân hủy đến từ đâu? Câu trả lời tuyệt vời tất nhiên! – Rekin

+1

@Rekin: Tôi không hiểu bạn đang hỏi gì. Toán học cho nó xuất phát từ đầu của tôi và hình ảnh bạn thấy được hiển thị trong LaTeX với gif của tôi và được tải lên dịch vụ lưu trữ hình ảnh SO. – talonmies

+0

Xin lỗi, tôi đang đề cập đến công thức toán học. Tôi đã lấy một lớp đại số một thời gian trước đây và ma trận lớn nhân chủ đề đã được trình bày như là một trong những vấn đề nhất để giải quyết tính toán. Nó để lại cho tôi cảm giác sai lầm là không thể. – Rekin

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