1 điểm bởi GN⁺ 2023-12-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dựa trên siêu máy tính năm 1978 Cray 1, bài viết so sánh mức độ vượt trội của Raspberry Pi, thiết bị Android và PC trong các benchmark Livermore Loops, Linpack và Whetstone
  • Mốc chuẩn là hiệu năng phần cứng của Cray 1 ở 80MHz với tối đa 160MFLOPS, còn trong so sánh thực tế sử dụng các giá trị Livermore Loops trung bình nhân 11.9MFLOPS, Linpack 27MFLOPS và Whetstone ước tính 6MFLOPS
  • Raspberry Pi 1 năm 2012 nhanh hơn Cray 1 gấp 4.6 lần theo trung bình nhân Livermore Loops, còn Raspberry Pi 400 năm 2020 đạt tới 78.8 lần, 49.5 lần và 95.5 lần tương ứng trên ba benchmark
  • CPU Kryo 570 trên điện thoại Android tầm trung năm 2021 đạt 123 lần, 74 lần và 151 lần ở đơn nhân, còn laptop Core i5 1135G7 ghi nhận 359 lần, 337 lần và 226 lần khi biên dịch với AVX-512
  • Khi dùng SIMD và đa luồng, chênh lệch còn lớn hơn, nhưng các phép toán fused của AVX-512 có thể tạo ra kết quả số khác với giá trị kỳ vọng trước đây trong một số benchmark

Các benchmark làm chuẩn so sánh và Cray 1

  • Trọng tâm của phép so sánh là Lawrence Livermore Laboratory program kernels, tức Livermore Loops, vốn được dùng để kiểm chứng hiệu năng của Cray 1 đời đầu
    • Kết quả sử dụng phiên bản đã được chuyển sang mã C trong thập niên 1990
    • Livermore Loops đưa ra MFLOPS cho từng vòng lặp cùng giá trị nhỏ nhất, lớn nhất và nhiều loại trung bình; trung bình chính thức là trung bình nhân
  • Linpack 100Whetstone được dùng làm đối chiếu bổ sung
    • Linpack dựa trên linpack-pc.c sau khi được chuyển đổi cho PC và đưa vào Netlib
    • Whetstone, sau Harold Curnow là tác giả gốc, đã được mở rộng và biến thể bởi người kế nhiệm phần thiết kế; phiên bản vector hóa 100% ban đầu nhắm tới hệ thống Cray 1 đầu tiên được triển khai tại Anh
  • Các giá trị chuẩn chính của Cray 1 như sau
    • Hiệu năng phần cứng tối đa có thể đạt của Cray 1 80MHz được biết đến là 160MFLOPS, nhờ linked multiply and add cho ra hai kết quả mỗi xung nhịp
    • Kết quả Livermore Loops là tối đa 82.1MFLOPS, trung bình nhân 11.9MFLOPS và tối thiểu 1.2MFLOPS
    • Linpack đạt 27MFLOPS, còn Whetstone được ước tính là 6MFLOPS dựa trên kết quả Cray XMP

Thời điểm Raspberry Pi vượt qua Cray 1

  • Năm 2013, chương trình benchmark về bản chất giống với benchmark PC trên Linux đã được chạy trên Raspberry Pi đầu tiên
  • Khi đó, phần mô tả so sánh nói rằng Cray 1 năm 1978 có giá 7 triệu USD, nặng 10,500 pound và cần nguồn điện 115kW, trong khi Raspberry Pi giá khoảng 70 USD, nặng vài ounce, dùng nguồn 5W và nhanh hơn Cray 1 hơn 4.5 lần
    • So sánh này dựa trên trung bình nhân chính thức của Livermore Loops
  • Ba kết quả chính của Pi 1 là Livermore Loops 55MFLOPS, Linpack 42MFLOPS và Whetstone 94MFLOPS
    • Xung CPU cao gấp 8.8 lần Cray 1
    • MFLOPS so với Cray 1 lần lượt là 4.6 lần, 1.6 lần và 15.7 lần
  • Năm 2020, Raspberry Pi 400 ở 1800MHz cho kết quả 32-bit là Livermore Loops 819MFLOPS, Linpack 1147MFLOPS và Whetstone 498MFLOPS
  • Kết quả biên dịch SIMD 64-bit của Pi 400 đạt 78.8 lần, 49.5 lần và 95.5 lần so với Cray 1

Kết quả CPU ARM trên Android

  • Năm 2012, benchmark được chuyển để chạy trên Android dưới dạng mã ARM native và cần một chương trình frontend Java
  • Một số tablet Android đời đầu thiếu phần cứng hoặc phần mềm hỗ trợ tính toán dấu chấm động nhanh
  • Kết quả của ARM Cortex-A9 800MHz năm 2012 là Livermore Loops 20MFLOPS, Linpack 11MFLOPS và Whetstone 22MFLOPS
    • CPU MHz cao gấp 10 lần Cray 1, nhưng hệ số MFLOPS chỉ đạt 1.7 lần, 0.4 lần và 3.7 lần tương ứng
  • Sau đó, V7-A9 800MHz được cải thiện lên 115MFLOPS, 101MFLOPS và 155MFLOPS
    • Tương ứng 9.7 lần, 3.7 lần và 25.8 lần so với Cray 1
  • Năm 2021, CPU Kryo 570 trên điện thoại tầm trung đạt 1468MFLOPS, 1986MFLOPS và 905MFLOPS ở 2000MHz trong Livermore Loops, Linpack và Whetstone
    • So với Cray 1 là 123 lần, 74 lần và 151 lần
    • Xung CPU cao gấp 25 lần Cray 1

Hiệu năng đơn nhân của PC Windows và Linux

  • Từ thập niên 1990, các benchmark cho CPU Intel đã được phát triển cho DOS, OS/2, Windows và Linux
  • PC đầu tiên chạm tới điểm Livermore Loops trung bình của Cray 1 là Pentium 100MHz vào năm 1994
    • Livermore Loops 12MFLOPS, Linpack 12MFLOPS, Whetstone 16MFLOPS
    • So với Cray 1, CPU MHz và ba phép so sánh MFLOPS lần lượt xấp xỉ 1.3 lần, 1.0 lần, 0.44 lần và 2.6 lần
  • Năm 1995, Pentium Pro 200MHz đạt Livermore Loops 34MFLOPS, Linpack 49MFLOPS và Whetstone 41MFLOPS
    • Tương ứng 2.9 lần, 1.8 lần và 6.8 lần so với Cray 1
  • Năm 2007, đơn nhân Core 2 1820MHz ghi nhận 413MFLOPS, 998MFLOPS và 374MFLOPS
    • Tương ứng 35 lần, 37 lần và 62 lần so với Cray 1
  • Năm 2021, laptop Core i5 1135G7 cho 1387MFLOPS, 3541MFLOPS và 802MFLOPS ở 4150MHz
    • So với Cray 1 là 117 lần, 131 lần và 134 lần

Ảnh hưởng của biên dịch SIMD

  • Bài viết cũng so sánh kết quả khi biên dịch với các tùy chọn SIMD là SSE, AVX và AVX-512
    • SSE dùng thanh ghi vector 128-bit, AVX dùng 256-bit, còn AVX-512 dùng 512-bit
    • Ở số thực đơn chính xác, mỗi loại xử lý đồng thời 4, 8 và 16 số; ở số thực kép là 2, 4 và 8 số
  • Nếu dùng FMA thì hiệu năng tối đa kỳ vọng có thể tăng gấp đôi, nhưng độ chính xác kết quả tính toán có thể khác đi một chút
    • Benchmark sẽ báo những khác biệt này là lỗi
  • Trong kết quả SIMD trên Windows, Core i5 đạt 238 lần, 190 lần và 182 lần so với Cray 1 trên Livermore Loops, Linpack và Whetstone
  • Kết quả biên dịch trên Linux với gcc 9.3.0 và môi trường Ubuntu còn cao hơn
    • Kết quả AVX là 300 lần, 259 lần và 179 lần so với Cray 1
    • Kết quả AVX-512 là 359 lần, 337 lần và 226 lần
  • Tệp thực thi AVX-512 sẽ báo lỗi chương trình nếu chạy trên CPU cũ không có tùy chọn này

Vector Whetstone và so sánh với các siêu máy tính lịch sử

  • Vector Whetstone thực hiện cùng chức năng như Whetstone scalar, nhưng trên các vị trí bộ nhớ liên tiếp được xác định bởi tham số độ dài vector
  • Cray 1 đạt hiệu năng tối đa ở độ dài vector từ 64 word trở lên và cho thấy dạng đồ thị răng cưa
  • Bảng số liệu bao gồm kết quả Whetstone scalar và vector của 13 siêu máy tính từ năm 1978 đến 1991
    • Cray Y-MP được nêu là có xung nhịp và MFLOPS scalar khoảng gấp 2 lần Cray 1, còn MFLOPS vector gấp 4 lần
    • Cray Y-MP là hệ thống có hai đơn vị vector
  • Kết quả AVX-512 của Core i5 trong Vector Whetstone là trung bình 28,303MFLOPS ở đơn chính xác và 20,346MFLOPS ở kép chính xác
    • So với Cray 1 là 602 lần và 433 lần
    • Tốc độ đỉnh đơn chính xác là 75.1GFLOPS
  • Vector Whetstone của Raspberry Pi 400 đạt trung bình 2131MFLOPS ở đơn chính xác và 1184MFLOPS ở kép chính xác
    • Tương ứng 45 lần và 25 lần so với Cray 1

Whetstone đa luồng và MP MFLOPS

  • MP Whetstone chạy nhiều bản mã Whetstone tiêu chuẩn trong một chương trình duy nhất với 1, 2, 4 và 8 luồng
    • Nó được dùng để thể hiện thông lượng đa lõi so với đơn lõi CPU
  • Performance Monitor cho thấy laptop Core i5 chạy ở khoảng 4150MHz với 1 và 2 luồng, và khoảng 3800MHz với 4 và 8 luồng
  • Kết quả MP Whetstone 8 luồng như sau
    • Laptop Core i5 với AVX-512 đạt 1521 lần so với Cray 1
    • Điện thoại Android Kryo 570 đạt 757 lần
    • Raspberry Pi 400 đạt 400 lần
  • MP MFLOPS là benchmark được thiết kế để thể hiện gần mức hiệu năng tối đa bằng cách chạy các tổ hợp phép nhân và cộng dấu chấm động
    • Nó thực hiện 2, 8 và 32 floating point operations trên mỗi từ dữ liệu
    • Mặc định là 8 luồng, nhưng có thể chỉ định tối đa 64 luồng bằng tham số khi chạy
  • Các kết quả MP MFLOPS cao nhất của laptop Core i5 như sau
    • Đơn chính xác 325,915MFLOPS, tức 2671 lần so với Cray 1
    • Kép chính xác 160,641MFLOPS, tức 1317 lần so với Cray 1
    • Điện thoại Android đạt 35,686MFLOPS ở đơn chính xác, tương đương 293 lần so với Cray 1
    • Raspberry Pi 400 đạt 30,150MFLOPS ở đơn chính xác, tương đương 247 lần so với Cray 1

Độ chính xác số và những kết quả nhanh hơn dự kiến

  • Trong Livermore Loops dùng AVX-512, có trường hợp độ chính xác checksum giảm từ mức 15–16 chữ số xuống 12–13 chữ số
    • Có vẻ như phép toán fused chỉ làm tròn một lần thay vì làm tròn ở từng lệnh riêng
  • Với Linpack AVX-512 và Whetstone SSE, laptop Core i5 cũng ghi nhận sumcheck không chuẩn hoặc khác biệt trong kết quả
  • Một số kết quả SSE và AVX cao hơn mức MFLOPS/MHz tối đa được dự đoán trong tài liệu
    • Ví dụ SSE của Core i5 trong Livermore Loops đạt 3.56MFLOPS/MHz, mức được cho là không thể nếu không có FMA
    • Ví dụ AVX đạt 4.86MFLOPS/MHz, cao hơn 21.5% so với mức tối đa kỳ vọng
  • Sau khi kiểm tra mã disassembly, các ví dụ SSE và AVX đó không chứa lệnh theo dạng fused multiply and add
  • Mã disassembly của MP MFLOPS AVX-512 có chứa các lệnh fused multiply/add/subtract
    • Có 21 lệnh vector số học, trong khi số lệnh tối thiểu để đạt dạng FMA hoàn chỉnh là 16, nên tốc độ có thể đạt được được tính là 76.19% so với FMA hoàn chỉnh
    • Với điều chỉnh này, ước tính tốc độ tối đa của Cray 1 khi chạy hàm đó giảm từ 160MFLOPS xuống 122MFLOPS

Khoảng cách thay đổi theo loại công việc

  • Hệ số so với Cray 1 của Core i5 AVX-512, điện thoại Android và Raspberry Pi 400 thay đổi rất lớn tùy theo loại công việc
  • Trong nhóm so sánh đơn nhân, Core i5 AVX-512 đạt trung bình 359 lần ở Livermore Loops, 337 lần ở Linpack và 226 lần ở Whetstone
  • Điện thoại Android đạt 123 lần ở Livermore Loops, 74 lần ở Linpack và 151 lần ở Whetstone
  • Raspberry Pi 400 đạt khoảng 79 lần ở Livermore Loops, 50 lần ở Linpack và 96 lần ở Whetstone
  • Với các công việc tận dụng đa chương trình, đa luồng và SIMD, chênh lệch lớn hơn rất nhiều so với so sánh đơn nhân đơn giản; đồng thời, do số lõi CPU hiện đại, việc giảm xung và cấu hình big/LITTLE, hiệu năng đa lõi cũng trở nên khó dự đoán hơn

1 bình luận

 
GN⁺ 2023-12-26
Ý kiến trên Hacker News
  • Khi thấy những so sánh kiểu này, trước cả benchmark, tôi lại tò mò phép tính thực tế “anh hùng” nhất từng có thể chạy trên Cray-1 thời đó là gì, và ngày nay có thể tái hiện nó trên thiết bị như Raspberry Pi ra sao.
    Có thể là mô hình thời tiết/khí hậu, cũng có thể là thủy động lực học bức xạ. So với phần mềm phân tích phần tử hữu hạn hiện đại thì độ chính xác gần như chắc chắn rất thấp, nhưng bản thân việc thử cũng có vẻ thú vị.

    • Rất có khả năng đó là mô phỏng vũ khí hạt nhân.
      Chiếc đầu tiên được đưa tới Los Alamos.
      https://www.theatlantic.com/technology/archive/2014/01/these...
    • Một trong những khách hàng ban đầu là European Centre for Medium-Range Weather Forecasts, nên có lẽ nó được dùng cho dự báo thời tiết trung hạn.
    • Không phải Cray-1, nhưng vài năm sau hải quân đã dùng Cray 90 để tính toán CFD mô hình hóa dòng chảy quanh thân tàu, và mã được viết bằng Fortran.
      Ước gì có thể truy cập lại đoạn mã viết khi đó. Những tác vụ từng mất vài phút hoặc vài giờ trên Cray giờ có thể chạy trên Raspberry Pi chỉ trong vài giây.
    • Có thể thử chạy từ Spec ‘06. Trong đó có các micro-kernel của những workload “anh hùng” như vậy.
    • Khoảng năm 1979 tôi từng tham quan cơ sở NCAR ở Boulder và đã ngồi lên ghế của chiếc Cray-1 ở đó.
      Vì vậy đúng là nó được dùng cho tính toán thời tiết và khí hậu.
  • Tôi biết một người từng làm ở một phòng thí nghiệm quốc gia có siêu máy tính Cray-1 riêng; nó được đặt trong phòng máy có cửa sổ quan sát lớn để khách tham quan chiêm ngưỡng.
    Ngay trước khi một đoàn VIP lớn mà anh ấy quen biết tới tham quan, anh ấy trốn vào trong Cray-1 chờ sẵn. Khi đoàn tới, anh ấy bước ra khỏi Cray-1 trong lúc kéo khóa quần jeans lên, với vẻ mặt ngượng ngùng như vừa thở phào, rồi giả vờ giật mình khi thấy cả đoàn đang há hốc nhìn mình qua cửa kính và vội vàng biến mất.

  • Ngoài benchmark ra, tôi tò mò liệu có phần mềm nào khiến nó cho cảm giác nhanh đến vậy không.
    Các phần mềm tôi dùng hiện nay như GUI, IDE, compiler, bộ ứng dụng văn phòng có cảm giác như những phiên bản phát triển hơn của thứ từng chạy trên 386. Phần mềm Met dùng bây giờ hẳn được thiết kế với giả định máy tính nhanh hơn hàng triệu lần, nhưng chắc đâu đó vẫn có phần mềm thời đó cần tới Cray.

    • Không có đâu. Cray-1 chạy các tác vụ xử lý theo lô, phần lớn là mô phỏng khoa học mất nhiều giờ hoặc nhiều ngày.
      Nó có giao diện terminal và không được dùng cho các ứng dụng tương tác thời gian thực.
    • Khả năng cao nhất là các mã vật lý Fortran cũ.
      Ví dụ như tính tiết diện tán xạ từ các phần tử ma trận, hoặc những tác vụ có nhiều đại số tuyến tính có thể vector hóa.
    • Nhiều tác vụ thời đó mất hàng giờ thì nay có thể chưa tới 1 giây.
      Nghĩ về cơ khí, hồi đó có thể họ đã mô phỏng xe hơi biến dạng ra sao khi va chạm. Giờ đây các mô phỏng tương tự có thể được thực hiện thời gian thực trong trò chơi điện tử chỉ để cho vui. Trong game, tôi hiểu là người ta hầu như không làm vậy vì không thật sự cần mô hình vật lý chính xác, nhưng về khả năng thì làm được.
      Rendering cũng tương tự. Khi đó mỗi frame của Toy Story mất nhiều giờ để render, còn giờ chúng ta tạo được đồ họa thời gian thực có thể còn tốt hơn, dù điều này còn gây tranh luận.
  • Tôi đang chờ video tiếp theo của Jeff Geerling, trong đó anh ấy đặt Raspberry Pi vào vỏ Cray-1.

    • Nếu có case PC hình Cray-1 thì tuyệt.
      Một phiên bản nhỏ hơn cho Raspberry Pi cũng sẽ rất hay.
    • Hoặc nối mạng rồi nhét vào càng nhiều càng tốt cũng được.
  • So với RISC-V hỗ trợ Vector 1.0 thì hợp lý hơn.
    Vì Cray-1 là máy vector.

    • Đã có CPU RISC-V nào tích hợp hỗ trợ vector phần cứng thành chip thật chưa?
    • Hoặc cũng có thể so với GPU hay TPU.
  • Raspberry Pi, khác với Cray-1, không cung cấp chỗ ngồi rộng rãi.

    • Có người đã làm một cụm Pi Zero theo chủ đề Cray; nếu là chuột thì có lẽ đáp ứng điều kiện: https://www.clustered-pi.com/blog/clustered-pi-zero.html
    • Với giá của Cray, dù không tính lạm phát, cũng mua được kha khá ghế dùng ổn.
      Nếu tính cả tiền điện tiết kiệm được thì càng đúng.
    • Đúng vậy, các case Pi khá đáng thất vọng.
      Rất ít cái được làm mát đúng cách. flirc thì tốt, còn loại có quạt thì chỉ gây khó chịu.
      Tôi muốn có case Pi tích hợp breadboard.
      Hoặc một case có thể ngồi thoải mái cũng được.
    • Về thiết kế tối giản thì cũng không có cái ngầu như Cray-1.
  • Năm 2013 tôi mua CPU Intel x86 mới nhất và đắt nhất để lắp một PC mới.
    Vợ tôi bước vào phòng làm việc, nhìn biểu đồ trên màn hình rồi nói: “Trông không giống đang làm việc, nhưng em cũng không rõ anh đang làm gì?”
    Tôi đáp: “Anh đang tính xem PC của mình vào thời điểm nào thì từng là máy tính nhanh nhất Trái Đất. Nhìn thì có vẻ nếu đưa về năm 1992, nó còn tính toán giỏi hơn siêu máy tính mới nhất trị giá 90 triệu đô của Bộ Quốc phòng, loại chiếm đầy cả một căn phòng, em tin nổi không?”
    Cô ấy đáp: “Hay đấy. Vậy chuyện đó giúp trả nợ thẻ của nhà mình thế nào?”
    Đùa vậy thôi, dữ liệu để tính kiểu này có khá nhiều. Ví dụ ở đây: https://en.wikipedia.org/wiki/TOP500
    Nếu ngoại suy về quá khứ hoặc tìm dữ liệu cũ, tính toán của tôi còn dẫn tới kết luận vô lý kiểu như nếu đưa chiếc PC này về năm 1981 thì nó sẽ nhanh hơn tất cả máy tính trên Trái Đất cộng lại.

    • Một trong những máy tôi thích trên Top500 là SystemX.
      https://www.top500.org/system/173736/
      Khi được triển khai năm 2004, cụm gồm 1.100 hệ thống Apple PowerPC 970 này là máy tính mạnh thứ 7 trong danh sách.
      Hiệu năng Linpack là 12,250.00 GFlop/s.
    • Một điều thú vị nữa là tìm năm gần nhất mà điện thoại di động của tôi có thể lọt vào nhóm cuối của danh sách Top500.
  • Cray-1 có ghế sofa tốt hơn nhiều.

    • Phần ghế đệm của Cray-1 che phủ bộ nguồn.
      Tôi buồn khi thấy chiếc Cray-1 ở Computer Museum tại Mountain View bị dùng làm chỗ chứa đồ catering cho sự kiện ở sảnh.
    • Cần hồi sinh ghế ngồi trên máy tính.
  • Tóm lại, 10 năm trước Raspberry Pi và điện thoại Android đã nhanh hơn vài lần, còn bây giờ thì nhanh hơn khoảng 100 lần.
    Xét việc nó bỏ vừa trong túi thì khá ấn tượng.

    • May mà có hệ điều hành hiện đại để làm nó chậm lại /s
  • Vài năm trước tôi từng so sánh SPARCstation 20 Model 60 với Raspberry Pi chạy Raspbian. Chiếc SPARCstation này là hệ thống chuẩn của BYTE UNIX Benchmark: https://news.ycombinator.com/item?id=10795324
    Theo benchmark, Raspberry Pi đời đầu đạt hiệu năng gấp 6–7 lần SPARCstation 20.