Tôi đang xem xét việc nghịch đảo của một ma trận lớn, kích thước phổ biến 1000 x 1000, nhưng đôi khi vượt quá 100000 x 100000 (hiện không thành công do thời gian và bộ nhớ). Tôi biết rằng tình cảm bình thường là 'đừng lấy nghịch đảo, tìm cách khác để làm điều đó', nhưng điều đó là không thể vào lúc này. Lý do cho điều này là do việc sử dụng phần mềm đã được thực hiện mà hy vọng sẽ có được nghịch đảo ma trận. (Lưu ý: Tôi đang tìm cách thay đổi điều này, nhưng điều đó sẽ mất nhiều thời gian)Đảo ngược ma trận lớn
Hiện tại chúng tôi đang sử dụng phương pháp phân tích LU từ các lần recopies số và tôi hiện đang trong quá trình thử nghiệm thư viện riêng . Thư viện eigen có vẻ ổn định hơn và nhanh hơn một chút, nhưng tôi vẫn đang trong giai đoạn thử nghiệm về độ chính xác. Tôi đã xem qua nhanh các thư viện khác như ATLAS và LAPACK nhưng chưa thực hiện bất kỳ thử nghiệm đáng kể nào với các thư viện này. Có vẻ như thư viện eigen không sử dụng các phương thức đồng thời để tính toán nghịch đảo (mặc dù không cho phần hệ số LU của nghịch đảo) và theo như tôi có thể nói ATLAS và LAPACK giống nhau trong giới hạn này. (Tôi hiện đang thử nghiệm sự khác biệt về tốc độ cho eigen với openMP và không có.)
Câu hỏi đầu tiên là bất cứ ai có thể giải thích làm thế nào để tối ưu hóa ma trận đảo ngược bằng cách song song. Tôi tìm thấy một bài báo here mà nói về ma trận đảo ngược các thuật toán song song, nhưng tôi không hiểu. Có vẻ như this bài viết về một phương pháp khác? Tôi cũng không chắc chắn nếu scaLAPACK hoặc PETSc là hữu ích?
Câu hỏi thứ hai, tôi đọc this bài viết sử dụng GPU để tăng hiệu suất, nhưng tôi chưa bao giờ được mã hóa cho GPU và do đó không có ý tưởng gì đang cố gắng truyền đạt, nhưng các biểu đồ ở phía dưới trông khá đáng báo động. Làm thế nào điều này thậm chí có thể, và làm thế nào để tôi bắt đầu đi về việc thực hiện một cái gì đó như thế này nếu nó là đúng.
Tôi cũng tìm thấy this bài viết, chưa có thời gian để đọc qua nó để hiểu, nhưng nó có vẻ đầy hứa hẹn, vì bộ nhớ là một vấn đề hiện tại với phần mềm của chúng tôi.
Mọi thông tin về các bài viết này hoặc các vấn đề nói chung sẽ giúp ích rất nhiều. Và một lần nữa tôi xin lỗi nếu câu hỏi này có vẻ mơ hồ, tôi sẽ cố gắng mở rộng hơn nếu cần thiết.
là ma trận thưa thớt hay dày đặc? có rất nhiều cách tốt và nhanh để hoạt động trên các ma trận thưa thớt, vì vậy hy vọng rằng bạn là một trong số đó. – vlsd
Bạn có thể muốn xem [FLAME] (http://z.cs.utexas.edu/wiki/flame.wiki/FrontPage). Nó được cho là tạo ra mã đại số tuyến tính chính xác và hiệu quả được chứng minh toán học hoạt động trên nhiều nền tảng song song khác nhau, bao gồm cả GPU. –
Tôi sẽ xem FLAME, chưa nghe về nó cho đến bây giờ. Cảm ơn. – Onekuo