2011-09-28 50 views
9

Tôi đang cố gắng sử dụng CUSP làm bộ giải mã tuyến tính bên ngoài cho Mathematica để sử dụng sức mạnh của GPU. Đây là CUSP Project webpage. Tôi yêu cầu một số gợi ý làm thế nào chúng ta có thể tích hợp CUSP với Mathematica. Tôi chắc rằng nhiều bạn ở đây sẽ quan tâm để thảo luận về điều này. Tôi nghĩ rằng viết một ma trận đầu vào và sau đó cho nó vào chương trình CUSP không phải là con đường để đi. Sử dụng Mathematica LibrarayFunctionLoad sẽ là cách tốt hơn để phân phối ma trận đầu vào cho bộ giải dựa trên GPU khi đang di chuyển. Điều gì sẽ là cách để cung cấp ma trận và ma trận bên tay phải trực tiếp từ Mathematica?Khả năng hàm thư viện của Mathematica

Dưới đây là một số đoạn mã CUSP.

#include <cusp/hyb_matrix.h> 
#include <cusp/io/matrix_market.h> 
#include <cusp/krylov/cg.h> 

int main(void) 
{ 
// create an empty sparse matrix structure (HYB format) 
cusp::hyb_matrix<int, float, cusp::device_memory> A; 

// load a matrix stored in MatrixMarket format 
cusp::io::read_matrix_market_file(A, "5pt_10x10.mtx"); 

// allocate storage for solution (x) and right hand side (b) 
cusp::array1d<float, cusp::device_memory> x(A.num_rows, 0); 
cusp::array1d<float, cusp::device_memory> b(A.num_rows, 1); 

// solve the linear system A * x = b with the Conjugate Gradient method 
cusp::krylov::cg(A, x, b); 

return 0; 
} 

Câu hỏi này cho chúng ta khả năng thảo luận về khả năng biên dịch của Mathematica 8. Cũng có thể gọi chủ đề giao diện mathlink của MMA. Tôi hy vọng mọi người ở đây thấy vấn đề này xứng đáng và đủ thú vị để suy ngẫm.

BR

+1

Hãy nhớ rằng định dạng StackOverflow không phù hợp cho các cuộc thảo luận. Nó không phải là một diễn đàn. Cố gắng giữ nguyên định dạng Hỏi & Đáp càng nhiều càng tốt. –

+1

@belisarius Tôi có quan điểm của bạn. Hãy cho tôi một chút thời gian sẽ đưa ra một câu hỏi cụ thể. Nhưng câu hỏi là làm thế nào để tấn công vấn đề này. Cảm ơn vì đã nhắc nhở.. – PlatoManiac

Trả lời

1

Nếu bạn muốn sử dụng LibraryLink (mà LibraryFunctionLoad được sử dụng để truy cập vào một chức năng thư viện động như một downvalue Mathematica) có thực sự không có nhiều chỗ để thảo luận, LibraryFunctions có thể nhận Mathematica tensors của đôi máy hoặc máy số nguyên và bạn đã hoàn thành.

Định dạng MTematicor Mathematica là một mảng dày đặc, giống như bạn sử dụng tự nhiên trong C, vì vậy nếu CUSP sử dụng một số định dạng khác, bạn sẽ cần phải viết một số mã keo để dịch giữa các biểu diễn.

Tham khảo LibraryLink tutorial để biết chi tiết đầy đủ.

Bạn sẽ muốn đặc biệt lưu ý phần "Quản lý bộ nhớ của bộ quản lý" trong trang Interaction with Mathematica và chọn chế độ "Được chia sẻ" để chỉ chuyển qua một tensor Mathematica bằng cách tham chiếu.

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