Cách xác định số lượng FLOP mà máy tính của tôi có khả năng


15

Tôi muốn xác định số lượng lý thuyết của FLOP (Hoạt động điểm nổi) mà máy tính của tôi có thể làm được. Có thể ai đó xin vui lòng giúp tôi với điều này. (Tôi muốn so sánh máy tính của mình với một số siêu máy tính chỉ để có ý tưởng về sự khác biệt giữa chúng)

Câu trả lời:


9

FLOP / s đỉnh cao lý thuyết được đưa ra bởi: Số lượng lõi rất dễ dàng. Về lý thuyết, tần số trung bình phải là yếu tố trong một số lượng Turbo Boost (Intel) hoặc Turbo Core (AMD), nhưng tần số hoạt động là giới hạn thấp hơn. Các hoạt động trên mỗi chu kỳ phụ thuộc vào kiến ​​trúc và có thể khó tìm (8 đối với SandyBridge và IvyBridge, xem slide 26 ). Đây là chủ đề của câu hỏi tràn ngăn xếp này , bao gồm các con số cho một loạt các kiến ​​trúc hiện đại.

Số lượng lõi*Tần số trung bình*Hoạt động trên mỗi chu kỳ

1
Ok, tôi có 2 lõi, Tần số hoạt động: 1,8 GHz, Công nghệ Intel Turbo Boost: 3,00 Ghz, tôi không thể tìm thấy các hoạt động trên mỗi chu kỳ, đây là trang web: ark.intel.com/products/75460/ cảm ơn
Ol 'Đáng tin cậy

Haswell có thể làm 16 DP / chu kỳ. Tôi vừa thêm một liên kết trong phần thân câu trả lời vào câu trả lời SO.
Max Hutchinson

Điều này có nghĩa là máy tính của tôi có thể làm được: 2 x 3.000.000.000 Hz x 16 = 96 Giga FLOP?
Ol 'đáng tin cậy

Điều đó có nghĩa là nó có thể thực hiện trong khoảng từ 2 * 1,8 GHz * 16 DP = 57,6 GFLOP / s và 96 GFLOP / s, tùy thuộc vào tần số trung bình thực tế. Nếu bạn cần sử dụng một số duy nhất, 57.6 là số một công bằng hơn, IMO.
Max Hutchinson

2
Tỷ lệ FLOP nói chung là một thước đo kém về 'độ tốt' của bộ xử lý. Xem scicomp.stackexchange.com/questions/114/ . Ví dụ. Bạn có thể muốn nghĩ về chi phí giới hạn của nhiệm vụ của mình (ví dụ: tính toán ràng buộc với ràng buộc bộ nhớ so với ràng buộc đĩa) và tập trung vào phần cứng có liên quan (hệ thống tính toán, hệ thống bộ nhớ, I / O).
Max Hutchinson

4

Bạn sẽ cần biết mô hình và nhà cung cấp CPU trong máy của bạn. Khi bạn đã có, bạn có thể tra cứu trên trang web của nhà cung cấp (hoặc có thể trên Wikipedia) tốc độ xung nhịp, số chip / ổ cắm, số lõi trên mỗi chip, số lượng hoạt động điểm nổi trên mỗi chu kỳ và độ rộng vectơ của các hoạt động đó . Sau đó, bạn chỉ cần nhân lên.

Lấy ví dụ, bộ xử lý Intel Xeon E5-2680 "Sandy Bridge" ở Stampede nơi tôi làm việc. Thông số kỹ thuật là:

  • 2,7 GHz
  • 2 chip / nút, 8 lõi / chip
  • 2 hướng dẫn vector / chu kỳ
  • Hướng dẫn AVX rộng 256 bit (4 toán hạng chính xác kép đồng thời)

Nhân số đó cho 345,6 GF / nút hoặc 2,2 PF cho phần chưa được tăng tốc của hệ thống.

Chúng tôi thường nghĩ về các hoạt động có độ chính xác kép (64 bit), vì đó là độ chính xác cần thiết cho đại đa số người dùng của chúng tôi, nhưng bạn có thể làm lại phép tính theo thuật ngữ chính xác đơn nếu muốn. Điều này thường chỉ thay đổi yếu tố cuối cùng, giả sử 8 SP Flops / hướng dẫn thay vì 4 DP Flops / inst, nhưng nó có thể khác rất nhiều so với điều đó. Chẳng hạn, các GPU cũ hơn chỉ làm DP ở mức 1/8 tốc độ SP. Nếu bạn từng trích dẫn một số cho hệ thống của mình, bạn nên nói rõ về cái mà bạn đã sử dụng nếu nó không chính xác gấp đôi vì mọi người sẽ cho rằng đó là, nếu không.

Ngoài ra, nếu chip của bạn hỗ trợ các lệnh đa bội (FMA) được hợp nhất và nó có thể thực hiện chúng ở mức đầy đủ, thì hầu hết mọi người đều coi đây là 2 thao tác dấu phẩy động mặc dù bộ đếm hiệu suất phần cứng có thể chỉ coi đó là một lệnh.

Cuối cùng, bạn cũng có thể làm điều này cho bất kỳ máy gia tốc nào có thể tồn tại trong hệ thống của bạn (như GPU hoặc Xeon Phi) và thêm hiệu suất đó vào hiệu suất CPU để có được tổng số lý thuyết.


Không đủ để biết mô hình CPU, người ta cần tìm ra tần số hoạt động thực tế
Aksakal

@Aksakal, để phân tích lý thuyết, có thể chọn tần số danh nghĩa. Thật khó để biết tần số chip của bạn sẽ thực sự chạy ở mức nào vì điều đó có thể phụ thuộc vào khối lượng công việc và chất lượng điều hòa không khí của bạn.
Bill Barth

2

Tôi hiểu rằng bạn đã yêu cầu giá trị lý thuyết, nhưng vì điều này gần như luôn không thể truy cập được bởi bất kỳ mã thực tế nào, ngay cả LINPACK, bạn có thể muốn chạy DGEMM (tối ưu hóa) cho ma trận rất lớn. Lý do mà tôi thích phương pháp này là vì nó bộc lộ một số thiếu sót của một số bộ xử lý nhất định ngăn chúng đạt được giá trị flop đỉnh lý thuyết của chúng.

Ví dụ: GPU NVIDIA hiện đang thực hiện các hoạt động số nguyên và dấu phẩy động trên cùng một đường ống. Điều này có nghĩa là bạn chỉ có thể đạt được đỉnh flop / s lý thuyết nếu bạn không tính toán số nguyên nào . Vì lập chỉ mục mảng và bất kỳ hình thức truy cập dữ liệu nào khác đều yêu cầu số học số nguyên ở đâu đó, không có mã nào có thể đạt được mức đỉnh / lý thuyết trên GPU NVIDIA. Trong hầu hết các trường hợp, người ta thấy ~ 80% là giới hạn trên. Đối với các CPU phát hành đồng thời các số nguyên và các dấu phẩy động, đây không phải là vấn đề.

Trên một số bộ xử lý đa lõi giống GPU như Intel Knights Corner và Blue Gene / Q, khó đạt được mức flop / s cao hơn so với CPU truyền thống cho các vấn đề đường ống tương tự (mặc dù cả hai đều có thể đạt được ~ 90% đỉnh trong DGEMM lớn ít nhất ).


Tại sao không có mã nào có thể đạt được mức đỉnh / lý thuyết trên GPU NVIDIA?
skytree

Xem đoạn 2. Tuy nhiên, tất cả những điều này có liên quan đến các kiến ​​trúc cũ. Các kiến ​​trúc NVIDIA gần đây có thể thực hiện đồng thời số nguyên và dấu phẩy động và đạt được> 90% đỉnh trong DGEMM lớn.
Jeff
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.