Hiệu quả thực hiện thuật toán ma trận ba biến


12

Tôi đang giải quyết một vấn đề vật lý bằng cách sử dụng sơ đồ số ẩn. Điều này dẫn tôi đến việc giải một phương trình tuyến tính với ma trận ba cực. Tôi đã mã hóa thuật toán này từ Wikipedia. Tôi tự hỏi nếu có một thư viện hiệu quả cho phép giải quyết loại phương trình này theo cách tối ưu hóa. Một lưu ý quan trọng là bản thân ma trận chỉ thay đổi khi các tham số hệ thống thay đổi, vì vậy tôi đã có cơ hội để tính toán trước một số bước thuật toán để nhận phần thưởng hiệu quả tốt. Tôi đang sử dụng C ++.


Nó lớn như thế nào của một hệ thống, nó có cần phải song song không?
aterrel

1
Kích thước phụ thuộc vào độ chính xác cần thiết (từ hàng trăm đến hàng chục nghìn giá trị). Bây giờ tôi đang mã hóa trên máy tính một lõi, nhưng có thể truy cập vào siêu máy tính của trường đại học với nhiều cpus có sẵn, vì vậy hỗ trợ song song sẽ rất tốt.
gmk

Câu trả lời:


15

Có lẽ bạn nên bắt đầu với việc triển khai LAPACK ,? Gtsv, ví dụ: dgtsv . Nếu bạn muốn có một phiên bản bộ nhớ phân tán, thì bạn có thể muốn bắt đầu với p? Gtsv của ScaLAPACK.

EDIT: Vì ma trận của bạn không thay đổi thường xuyên, nên bạn có thể tránh việc thừa nhận ma trận ba biến bằng cách phá vỡ thói quen LAPACK? Gtsv thành bước nhân hóa ,? Gttrf và giai đoạn giải quyết ,? Gttrs. Các thói quen được đặt tên tương tự tồn tại trong ScaLAPACK phục vụ cho cùng một mục đích.


Cảm ơn bạn, nó trông giống như những gì tôi cần. Bây giờ tôi sẽ thử chạy thói quen này từ mã của tôi.
gmk

1
Vì bạn đang gọi nó từ C ++, hãy đảm bảo khai báo nguyên mẫu bên trong khối "C" {} bên ngoài. Tùy thuộc vào hệ thống của bạn, bạn có thể cần phải thêm một dấu gạch dưới vào tên thường trình.
Jack Poulson

2

Đối với các hệ thống song song phân tán : Tôi chưa thử ScaLAPACK, có bộ giải song song song song, có các ví dụ có sẵn trực tuyến . Tôi đã thử với một số thành công một phương pháp được đề xuất bởi David Moulton trong một ấn phẩm LANL . Mã hóa điều này có thể nhiều hơn bạn muốn làm, nhưng bằng cách sử dụng LAPACK, đó là hướng về phía trước.


1

Tôi tìm thấy một thuật toán đệ quy thú vị ở đây tại trang 975. Có vẻ đầy hứa hẹn, tôi tự hỏi những người có kinh nghiệm hơn nói gì về nó.


Công thức số có một số lỗi trong đó. Xét về nguồn mã để sử dụng, nó không phải là tốt nhất, mặc dù một số người coi đó là một tác phẩm kinh điển. Tôi sẽ ngạc nhiên nếu ScaLAPACK không thực hiện một thuật toán ít nhất là hiệu quả như giảm chu kỳ đệ quy.
Geoff Oxberry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.