ประเมิน FLOPS ใน Linux หรือไม่


14

ฉันกำลังมองหาโปรแกรมที่ง่ายและรวดเร็วในการประมาณค่า FLOPS บนระบบ Linux ของฉัน ฉันพบHPLแต่การรวบรวมมันเป็นการพิสูจน์ว่าน่ารำคาญ ทั้งหมดที่ฉันต้องการคือการประมาณ ballpark ของ FLOPS โดยไม่จำเป็นต้องใช้เวลาหนึ่งวันในการค้นคว้าหาเกณฑ์มาตรฐานและติดตั้งซอฟต์แวร์ตาม มีโปรแกรมดังกล่าวหรือไม่? มันจะเพียงพอหรือไม่ที่จะเขียนโปรแกรม C ที่ทวีคูณเป็นสองเท่าในลูป?

คำตอบ:


6

คำถามคือคุณหมายถึงอะไรโดย flops? หากสิ่งที่คุณใส่ใจคือจำนวนจุดลอยตัวที่ง่ายที่สุดต่อนาฬิกามันอาจเป็น 3 เท่าของความเร็วสัญญาณนาฬิกาของคุณ แต่นั่นไม่เกี่ยวกับความหมายเท่าโบกี้ บางจุดลอยตัว ops ใช้เวลานาน (หารสำหรับ starters) โดยทั่วไปการเพิ่มและการคูณจะรวดเร็ว (หนึ่งต่อ fp หน่วยต่อนาฬิกา) ปัญหาต่อไปคือประสิทธิภาพของหน่วยความจำมีเหตุผลที่คลาสสิกล่าสุดของ CRAY มี 31 หน่วยความจำในที่สุดประสิทธิภาพของ CPU จะถูก จำกัด ด้วยความเร็วที่คุณสามารถอ่านและเขียนไปยังหน่วยความจำได้ดังนั้นปัญหาการแคชระดับใด Linpack เป็นเกณฑ์มาตรฐานจริงครั้งหนึ่งตอนนี้มันเหมาะกับแคช (L2 ถ้าไม่ใช่ L1) และเป็นมาตรฐานของ CPU ที่บริสุทธิ์กว่าในทางทฤษฎี และแน่นอนว่าหน่วย SSE (ฯลฯ ) ของคุณสามารถเพิ่มประสิทธิภาพของจุดลอยตัวได้เช่นกัน

คุณวิ่งแบบ distro อะไร

สิ่งนี้ดูเหมือนเป็นตัวชี้ที่ดี: http://linuxtoolkit.blogspot.com/2009/04/intel-optimized-linpack-benchmark-for.html

http://onemansjourneyintolinux.blogspot.com/2008/12/show-us-yer-flops.html

http://www.phoronix-test-suite.com/อาจเป็นวิธีที่ง่ายกว่าในการติดตั้งเกณฑ์มาตรฐาน flops

ยังฉันสงสัยว่าทำไมคุณสนใจสิ่งที่คุณใช้มันเพื่อ? ถ้าคุณแค่ต้องการตัวเลขที่ไม่มีความหมายระบบโบกี้ของคุณก็ยังคงอยู่ในรูปแบบ dmesg


1
Phoronix ดูเหมือนจะเป็นสิ่งที่ฉันกำลังมองหา - ขอบคุณ! เหตุผลเดียวที่ฉันต้องการสิ่งนี้เพราะฉันกำลังกรอกแบบสำรวจที่ถามว่ามีพลังการคำนวณจำนวนเทราฟลอปมากแค่ไหน การสำรวจไม่สำคัญนักดังนั้นฉันจึงไม่กังวลเกี่ยวกับความถูกต้องของคำตอบ ถึงกระนั้นมันก็เป็นเรื่องที่เรียบร้อยที่จะพูดว่า "กลุ่มของเราสามารถทำ X teraflops ได้" แม้ว่าในขณะที่คุณชี้ให้เห็นว่าตัวเลขนั้นไม่จำเป็นต้องมีความหมายในโลกแห่งความจริงมากนัก
โมเลกุล

7

เห็นได้ชัดว่ามีแพคเกจมาตรฐานและคำสั่ง "sysbench":

sudo apt-get install sysbench(หรือbrew install sysbenchOS X)

เรียกใช้เช่นนี้:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run

เอาท์พุทสำหรับการเปรียบเทียบ:

 total time:                          15.3047s

อ้างอิง: http://www.midwesternmac.com/blogs/jeff-geerling/2013-vps-benchmarks-linode


3
สิ่งนี้ให้ FLOPS อย่างไร
Martin Thoma

ดูเหมือนว่าเป็นมากกว่า "มาตรฐาน cpu" ทั่วไปดูbnikolic.co.uk/blog/hpc-howto-measure-flops.html ทั่วไป
rogerdpack

3

สำหรับการประเมิน ballpark:

Linpack

  1. ดาวน์โหลด ( ลิงก์ )
  2. แยกมันออกมา
  3. cd benchmarks_2017/linux/mkl/benchmarks/linpack
  4. ./runme_xeon64
  5. รอสักครู่ (มากกว่า 1 ชั่วโมง)

บน Thinkpad T460p ( Intel i7-6700HQ CPU ) จะให้:

This is a SAMPLE run script for SMP LINPACK. Change it to reflect
the correct number of CPUs/threads, problem input files, etc..
./runme_xeon64: 33: [: -gt: unexpected operator
Mi 21. Dez 11:50:29 CET 2016
Intel(R) Optimized LINPACK Benchmark data

Current date/time: Wed Dec 21 11:50:29 2016

CPU frequency:    3.491 GHz
Number of CPUs: 1
Number of cores: 4
Number of threads: 4

Parameters are set to:

Number of tests: 15
Number of equations to solve (problem size) : 1000  2000  5000  10000 15000 18000 20000 22000 25000 26000 27000 30000 35000 40000 45000
Leading dimension of array                  : 1000  2000  5008  10000 15000 18008 20016 22008 25000 26000 27000 30000 35000 40000 45000
Number of trials to run                     : 4     2     2     2     2     2     2     2     2     2     1     1     1     1     1    
Data alignment value (in Kbytes)            : 4     4     4     4     4     4     4     4     4     4     4     1     1     1     1    

Maximum memory requested that can be used=9800701024, at the size=35000

=================== Timing linear equation system solver ===================

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
1000   1000   4      0.014      46.5838  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.010      64.7319  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.009      77.3583  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.010      67.0096  1.165068e-12 3.973181e-02   pass
2000   2000   4      0.064      83.6177  5.001027e-12 4.350281e-02   pass
2000   2000   4      0.063      84.5568  5.001027e-12 4.350281e-02   pass
5000   5008   4      0.709      117.6800 2.474679e-11 3.450740e-02   pass
5000   5008   4      0.699      119.2350 2.474679e-11 3.450740e-02   pass
10000  10000  4      4.895      136.2439 9.069137e-11 3.197870e-02   pass
10000  10000  4      4.904      135.9888 9.069137e-11 3.197870e-02   pass
15000  15000  4      17.260     130.3870 2.052533e-10 3.232773e-02   pass
15000  15000  4      18.159     123.9303 2.052533e-10 3.232773e-02   pass
18000  18008  4      31.091     125.0738 2.611497e-10 2.859910e-02   pass
18000  18008  4      31.869     122.0215 2.611497e-10 2.859910e-02   pass
20000  20016  4      44.877     118.8622 3.442628e-10 3.047480e-02   pass
20000  20016  4      44.646     119.4762 3.442628e-10 3.047480e-02   pass
22000  22008  4      57.918     122.5811 4.714135e-10 3.452918e-02   pass
22000  22008  4      57.171     124.1816 4.714135e-10 3.452918e-02   pass
25000  25000  4      86.259     120.7747 5.797896e-10 3.297056e-02   pass
25000  25000  4      83.721     124.4356 5.797896e-10 3.297056e-02   pass
26000  26000  4      97.420     120.2906 5.615238e-10 2.952660e-02   pass
26000  26000  4      96.061     121.9924 5.615238e-10 2.952660e-02   pass
27000  27000  4      109.479    119.8722 5.956148e-10 2.904520e-02   pass
30000  30000  1      315.697    57.0225  8.015488e-10 3.159714e-02   pass
35000  35000  1      2421.281   11.8061  1.161127e-09 3.370575e-02   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
1000   1000   4       63.9209  77.3583 
2000   2000   4       84.0872  84.5568 
5000   5008   4       118.4575 119.2350
10000  10000  4       136.1164 136.2439
15000  15000  4       127.1586 130.3870
18000  18008  4       123.5477 125.0738
20000  20016  4       119.1692 119.4762
22000  22008  4       123.3813 124.1816
25000  25000  4       122.6052 124.4356
26000  26000  4       121.1415 121.9924
27000  27000  4       119.8722 119.8722
30000  30000  1       57.0225  57.0225 
35000  35000  1       11.8061  11.8061 

Residual checks PASSED

End of tests

Done: Mi 21. Dez 12:58:23 CET 2016

1

มาตรฐานหนึ่งที่ใช้กันทั่วไปในการวัด FLOPS คือ Linpack เกณฑ์มาตรฐาน FLOPS ทั่วไปคือ Whetstone

อ่านเพิ่มเติม: รายการ Wikipedia "FLOPS" , Whetstone entry , Linpack entry


2
ฉันซาบซึ้งในคำตอบของคุณอย่างไรก็ตามเป้าหมายของฉันคือการได้รับ flops ที่สกปรกและรวดเร็ว Whetstone และ Linpack มีปัญหาเช่นเดียวกับ HPL - ฉันเริ่มอ่านเกี่ยวกับเรื่องนี้จากนั้นหายไปในไซต์หลังจากไซต์ที่อายุ 20 ปี เมื่อฉันจัดการเพื่อค้นหาซอร์สโค้ดฉันไม่สามารถรวบรวมได้โดยไม่ต้องติดตั้งไลบรารีที่ขึ้นต่อกันมากมาย - แม้ว่าฉันจะพบข้อผิดพลาดก็ตาม ฉันสามารถทำให้เรื่องทั้งหมดนี้ทำงานได้ แต่ก็ไม่สำคัญพอที่จะใช้เวลา หวังว่าจะมีซอฟต์แวร์ที่ค่อนข้างทันสมัยบางอย่างที่เพิ่งใช้งานได้สำหรับ ballparking flops
molebearbear

1
ประมาณการ? แล้วก็ประมาณ 4 * เฮิร์ตซ์: สำหรับ CPU 1GHz มันเป็นเรื่องของ 4GFLOPS :))
kolypto


1

ในขณะที่คุณพูดถึงกลุ่มที่เราได้ใช้ชุด HPCC ต้องใช้ความพยายามเล็กน้อยในการติดตั้งและปรับแต่ง แต่ในกรณีของเราประเด็นไม่ได้คุยโม้ต่อมันเป็นส่วนหนึ่งของเกณฑ์การยอมรับสำหรับคลัสเตอร์ การเปรียบเทียบประสิทธิภาพบางอย่างนั้นสำคัญสำหรับ IMHO เพื่อให้แน่ใจว่าฮาร์ดแวร์ทำงานตามที่โฆษณาไว้ทุกอย่างถูกเชื่อมต่อเข้าด้วยกันอย่างถูกต้องเป็นต้น

ทีนี้ถ้าคุณแค่ต้องการจำนวน FLOPS สูงสุดตามทฤษฎีนั่นก็ง่าย เพียงตรวจสอบบทความบางส่วนเกี่ยวกับ CPU (พูดบน realworldtech.com หรือ somesuch) เพื่อรับข้อมูลจำนวน DP FLOPS ที่คอร์ CPU สามารถทำต่อรอบสัญญาณนาฬิกาได้ จากนั้นยอดรวม FLOPS เป็นเพียงแค่

จำนวนแกน * FLOPS / รอบ * ความถี่

จากนั้นสำหรับคลัสเตอร์ที่มีเครือข่าย IB คุณควรจะสามารถเข้าถึง FLOPS สูงสุดประมาณ 80% ของ HPL (ซึ่ง BTW เป็นหนึ่งในเกณฑ์มาตรฐานใน HPCC)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.