2012-10-16 30 views
8

Hầu hết các BLAS Level 1 API có thể được viết một cách thẳng thắn thẳng về phía trước bằng cách sử dụng Fortran 9x + các phép gán vector và thủ tục nội tại.Các thủ tục BLAS Cấp 1 có phù hợp với trình biên dịch fortran hiện đại không?

Giả sử bạn đang sử dụng trình biên dịch tối ưu hóa hiện đại, như Intel Fortran và sửa các tùy chọn tối ưu hóa trình biên dịch mục tiêu cụ thể, có lợi ích nào khi sử dụng các thủ tục BLAS cấp 1 thay thế không, giả sử từ Intel MKL hoặc triển khai BLAS nhanh khác?

Nếu có, kích thước vectơ điển hình khi những lợi ích này xuất hiện là gì?

Trả lời

9

Điều đó tùy thuộc. Chúng tôi đã thử nghiệm điều này trước đây với trình biên dịch Intel và chạy vào kết quả đáng ngạc nhiên. Ví dụ: DOT_PRODUCT từ Fortran so với triển khai BLAS đã đưa ra các xu hướng khác nhau dựa trên kích thước sự cố. Khi số lượng các phần tử trong mảng lớn hơn, BLAS trở nên tốt hơn so với nội tại. Nhưng đối với kích thước vấn đề nhỏ, bản chất là nhanh hơn nhiều. Chúng tôi thực sự đo cho trường hợp sử dụng của chúng tôi những gì kích thước cắt được yêu cầu để làm cho một tốt hơn so với khác và thực sự sử dụng if-tuyên bố để quyết định cái nào để gọi. Tôi không thể chia sẻ những kết quả đó, nhưng tôi khuyến khích bạn tự mình thử nghiệm nó. Vẫn còn lợi ích khi sử dụng BLAS.