2012-02-18 15 views
5

Làm cách nào để đo lường FLOPS hoặc IOPS? Nếu tôi đo thời gian cho phép cộng/phép nhân dấu chấm động thông thường, nó có tương đương với FLOPS không?Cách đo FLOPS

+1

Bạn có nghĩa là "IPS" không? IOPS là một cái gì đó khá khác nhau. –

Trả lời

1

FLOP không được xác định rõ. mul FLOPS khác với FLOPS. Bạn phải đưa ra định nghĩa của riêng bạn hoặc lấy định nghĩa từ một điểm chuẩn nổi tiếng.

2

Thông thường bạn sử dụng một số điểm chuẩn nổi tiếng. Những thứ như MIPS và megaFLOPS không có ý nghĩa gì nhiều để bắt đầu, và nếu bạn không giới hạn chúng với các tiêu chí cụ thể, ngay cả một chút ý nghĩa đó cũng bị mất đi.

Thông thường, ví dụ: tốc độ nguyên sẽ được trích dẫn trong "MIPS drystone" và dấu chấm động trong "Linpack megaFLOPS". Trong đó, "drystone" và "Linpack" là tên của các điểm chuẩn được sử dụng để thực hiện các phép đo.

IOPS là các hoạt động I/O. Chúng giống nhau, mặc dù trong trường hợp này, không có nhiều thỏa thuận về (các) điểm chuẩn để sử dụng (mặc dù SPC-1 có vẻ khá phổ biến).

2

Bạn có thể sử dụng bộ đếm hiệu năng CPU để CPU tự đếm số hoạt động điểm động mà nó sử dụng cho chương trình cụ thể của bạn. Sau đó, nó là vấn đề đơn giản của việc phân chia này bởi thời gian chạy. Trên Linux các công cụ Perf cho phép điều này được thực hiện rất dễ dàng, tôi có một writeup vào các chi tiết của việc này trên blog của tôi ở đây:

http://www.bnikolic.co.uk/blog/hpc-howto-measure-flops.html

+0

Cảm ơn bạn đã đăng câu trả lời! Vui lòng đảm bảo đọc kỹ [FAQ on Self-Promotion] (http://stackoverflow.com/faq#promotion). Cũng lưu ý rằng nó là * bắt buộc * mà bạn đăng tuyên bố từ chối trách nhiệm mỗi khi bạn liên kết đến trang web/sản phẩm của riêng bạn. –

0

Đây là một cao kiến ​​trúc cụ thể câu hỏi, một ngây thơ/cơ bản/bắt đầu bắt đầu tôi sẽ khuyên bạn nên tìm hiểu xem có bao nhiêu hoạt động 1 nhân mất trên phần cứng cụ thể của bạn sau đó làm một phép nhân ma trận lớn, và xem phải mất bao lâu. Sau đó, bạn eaisly có thể ước tính Flop phần cứng cụ thể của bạn

tiêu chuẩn công nghiệp flops đo là nổi tiếng Linpack hoặc HPL high performance linpack, hãy thử nhìn vào nguồn hoặc chạy những tự mình

Tôi cũng xin tham khảo câu trả lời này là một tuyệt vời reference

3

FLOPS là các hoạt động điểm động trên giây. Để đo FLOPS, trước tiên bạn cần mã thực hiện các hoạt động đó. Nếu bạn có mã như vậy, những gì bạn có thể đo lường là thời gian thực hiện của nó. Bạn cũng cần phải tổng hợp hoặc ước tính (không đo lường!) Tất cả các hoạt động điểm nổi và chia cho thời gian trên tường đo được. Bạn nên đếm tất cả các hoạt động bình thường như bổ sung, trừ, nhân, chia (có, mặc dù chúng chậm hơn và tránh được tốt hơn, chúng vẫn là FLOPs ..). Hãy cẩn thận như thế nào bạn đếm! Những gì bạn thấy trong mã nguồn của bạn rất có thể không phải là những gì trình biên dịch tạo ra sau khi tất cả các tối ưu hóa. Để chắc chắn bạn có thể sẽ phải xem hội đồng ..

FLOPS không giống như Vận hành mỗi giây. Vì vậy, mặc dù một số kiến ​​trúc có một lệnh MAD (nhân và thêm) duy nhất, những lệnh đó vẫn được tính là hai FLOP. Tương tự như hướng dẫn SSE. Bạn đếm chúng như một hướng dẫn, mặc dù chúng thực hiện nhiều hơn một FLOP.

FLOPS không hoàn toàn vô nghĩa, nhưng bạn cần phải cẩn thận khi so sánh FLOPS của bạn với sb. elses FLOPS, đặc biệt là các nhà cung cấp phần cứng. Ví dụ. NVIDIA mang lại hiệu suất FLOPS cao nhất cho các thẻ của họ giả định các hoạt động MAD. Vì vậy, trừ khi mã của bạn có, bạn sẽ không bao giờ có được hiệu suất này. Hoặc là suy nghĩ lại thuật toán, hoặc sửa đổi FLOPS phần cứng đỉnh bằng một yếu tố chính xác, mà bạn cần phải tìm ra cho thuật toán của riêng bạn! Ví dụ: nếu mã của bạn chỉ thực hiện phép nhân, bạn sẽ chia nó thành 2. Đếm phải có thể nhận mã của bạn từ dưới mức tối ưu đến khá hiệu quả mà không thay đổi một dòng mã.