2012-03-16 39 views
6

Trong một số mã, chúng ta cần lấy các véc tơ tự động và các giá trị tự động cho vấn đề tổng quát riêng với các ma trận đối xứng thực (Ax = lamba Bx). Mã này sử dụng DSPGVX từ LACPACK. Chúng tôi muốn tăng tốc độ lên GPU bằng chức năng MAGMA. Chúng tôi đã hỏi trên diễn đàn này và nhận được câu trả lời về vấn đề nàyHiệu năng kém để tính toán các giá trị riêng và các giá trị riêng trên GPU

http://icl.cs.utk.edu/magma/docs/zhegvx_8cpp.html

Kích thước của ma trận của chúng tôi (N) đi 100-50.000 và thậm chí nhiều hơn, liên quan đến số nguyên tử trong một phân tử. Chúng tôi quan sát:

a) cho N lớn hơn 2500 (xấp xỉ), MAGMA không hoạt động; lỗi phân đoạn b) MAGMA chạy luôn chậm hơn LAPACK tuần tự, khoảng 10 lần chậm hơn

Hành vi này có bình thường và chúng ta có thể vượt qua nó không? Ai có thể báo cáo bất kỳ tài liệu tham khảo, nơi bất cứ ai làm việc trên các vấn đề tương tự này được một tốc độ phong nha?

Cảm ơn

+3

Ý của bạn là "không hoạt động" ... nó có chạy không? Liệu nó tạo ra kết quả sai, nó có bị hỏng và ghi vào thời gian chạy không? – prelic

+0

Bạn đang chạy GPU gì? – talonmies

+0

Tesla c2070 với ram 4gb – flow

Trả lời

4

Theo kinh nghiệm của mình, bạn có thể đạt được các lợi ích hiệu suất cao hơn bằng cách chuyển sang một trình đo lường tốt hơn. Người giải quyết tốt nhất mà tôi biết là ARPACK. Bạn sẽ đạt được nhiều lợi ích nhất mà ma trận của bạn có một số cấu trúc, ví dụ nếu chúng thưa thớt. Bộ giải này cũng hiệu quả nhất nếu bạn chỉ cần trích ra một phần nhỏ trong tổng số các eigenpairs.

Tôi sẽ bắt đầu bằng cách thử trình giải quyết này về các sự cố của bạn đang chạy trên CPU. Bạn có thể thấy rằng điều này một mình cho hiệu suất đủ cho nhu cầu của bạn. Nếu không thì nó tương đối dễ di chuyển lõi tính toán cho ARPACK tới GPU. Hoặc, có sẵn các phiên bản ARPACK song song.

+0

Bạn có nghĩ ARPACK có thể được áp dụng cho trường hợp các ma trận dày đặc không?NẾU vậy, bạn có thể chỉ ra một số ví dụ? cảm ơn – flow

+0

Nó làm cho không có giả định về loại ma trận. Đọc về giao diện đảo ngược và bạn sẽ hiểu tại sao điều này lại như vậy. –

+0

bạn xứng đáng để giành chiến thắng tiền thưởng, không chỉ vì câu trả lời cảm hứng của bạn mà còn cho hình ảnh tuyệt vời của bạn, nhờ – flow

2

Bạn đã thử CULA http://www.culatools.com/ chưa? CULA là Lapack được chuyển đổi cho CUDA bởi NVIDIA, vì vậy ít nhất trong lý thuyết nó nên có một trong những thực hiện tốt nhất cho vấn đề eigenvalue tổng quát. Tôi nghĩ rằng phiên bản chính xác duy nhất là miễn phí để bạn có thể thử.

+0

Tôi đã có một cái nhìn nhưng tôi không thấy bất kỳ thông tin nào liên quan đến việc triển khai các vấn đề chung về giá trị riêng. Chỉ có thông tin về vấn đề eigenvalue đơn giản được báo cáo ở đó, tôi có đúng không? – flow

+2

@flow Bạn nói đúng. Tôi đã sử dụng CULA chỉ để giải quyết một vấn đề riêng biệt đối xứng không phải cho vấn đề tổng quát. Xin lỗi sự hiểu lầm. – mmisu

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