วิธีการกำหนดจำนวน FLOPs ที่คอมพิวเตอร์ของฉันสามารถทำได้


15

ฉันต้องการกำหนดจำนวนทางทฤษฎีของ FLOPs (การดำเนินการจุดลอยตัว) ที่คอมพิวเตอร์ของฉันสามารถทำได้ ใครก็ได้โปรดช่วยฉันด้วยสิ่งนี้ (ฉันต้องการเปรียบเทียบคอมพิวเตอร์ของฉันกับซูเปอร์คอมพิวเตอร์บางตัวเพื่อรับทราบความแตกต่างระหว่างพวกเขา)

คำตอบ:


9

จำนวนสูงสุดของทฤษฎี FLOP / s กำหนดโดย: จำนวนแกนเป็นเรื่องง่าย ในทางทฤษฎีถัวเฉลี่ยควรคำนึงถึงปัจจัยในจำนวน Turbo Boost (Intel) หรือ Turbo Core (AMD) จำนวนหนึ่ง แต่ความถี่ในการใช้งานนั้นค่อนข้างต่ำ การดำเนินการต่อรอบขึ้นอยู่กับสถาปัตยกรรมและหายาก (8 สำหรับ SandyBridge และ IvyBridge ดูสไลด์ 26 ) มันเป็นเรื่องของคำถามล้นสแต็คนี้ซึ่งรวมถึงตัวเลขสำหรับสถาปัตยกรรมสมัยใหม่จำนวนมาก

จำนวนคอร์* * * *ความถี่เฉลี่ย* * * *การดำเนินงานต่อรอบ

1
ตกลงฉันมี 2 คอร์ความถี่ในการทำงาน: 1.8 GHz, เทคโนโลยี Intel Turbo Boost: 3.00 Ghz ฉันไม่พบการดำเนินการต่อรอบนี่คือเว็บไซต์: ark.intel.com/products/75460/… ขอบคุณ
Ol 'ที่เชื่อถือได้

Haswell สามารถทำ 16 DP / รอบ ฉันเพิ่งเพิ่มลิงค์ในเนื้อหาของคำตอบไปยังคำตอบ SO
Max Hutchinson

นี่หมายความว่าคอมพิวเตอร์ของฉันสามารถทำได้: 2 x 3,000,000,000 Hz x 16 = 96 Giga FLOPs?
Ol 'เชื่อถือได้

หมายความว่าสามารถทำได้ระหว่าง 2 * 1.8 GHz * 16 DP = 57.6 GFLOP / s และ 96 GFLOP / s ขึ้นอยู่กับความถี่เฉลี่ยที่แท้จริง หากคุณต้องการใช้หมายเลขเดียว 57.6 เป็นหมายเลขที่ยุติธรรมยิ่งกว่า IMO
Max Hutchinson

2
อัตรา FLOP โดยทั่วไปแล้วเป็นการวัดที่ไม่ดีของ 'ความดี' ของโปรเซสเซอร์ ดูตัวอย่างscicomp.stackexchange.com/questions/114/… คุณอาจต้องการคิดถึงต้นทุนที่ จำกัด ของงานของคุณ (เช่นการคำนวณเทียบกับหน่วยความจำและหน่วยความจำดิสก์เทียบกับดิสก์) และมุ่งเน้นไปที่ฮาร์ดแวร์ที่เกี่ยวข้อง (ระบบคำนวณระบบหน่วยความจำระบบ I / O)
Max Hutchinson

4

คุณจะต้องรู้รุ่นและผู้จำหน่ายของ CPU ในเครื่องของคุณ เมื่อคุณมีแล้วคุณสามารถค้นหาเว็บไซต์ของผู้ขาย (หรืออาจเป็นใน Wikipedia) อัตรานาฬิกาจำนวนชิป / ซ็อกเก็ตจำนวนแกนต่อชิปจำนวนการดำเนินการจุดลอยตัวต่อรอบและความกว้างเวกเตอร์ของการดำเนินการเหล่านั้น . จากนั้นคุณก็คูณ

ยกตัวอย่างเช่นตัวประมวลผล Intel Xeon E5-2680 "Sandy Bridge" ในStampedeที่ฉันทำงาน รายละเอียดคือ:

  • 2.7GHz
  • 2 ชิป / โหนด, 8 คอร์ / ชิป
  • 2 เวกเตอร์คำแนะนำ / รอบ
  • คำแนะนำ AVX แบบกว้าง 256 บิต (ตัวถูกดำเนินการความแม่นยำสองเท่าพร้อมกัน)

การคูณจะให้ 345.6 GF / node หรือ 2.2 PF สำหรับส่วนที่ไม่เร่งความเร็วของระบบ

เรามักจะคิดในแง่ของการดำเนินการความแม่นยำสองเท่า (64 บิต) เพราะนั่นเป็นความแม่นยำที่จำเป็นสำหรับผู้ใช้ส่วนใหญ่ของเรา แต่คุณสามารถทำการคำนวณซ้ำในเงื่อนไขความแม่นยำเดี่ยวหากคุณต้องการ สิ่งนี้มักจะเปลี่ยนปัจจัยสุดท้ายเท่านั้นพูด 8 SP Flops / คำสั่งแทนที่จะเป็น 4 DP Flops / inst แต่อาจแตกต่างอย่างมากจากสิ่งนั้น ตัวอย่างเช่น GPU ที่เก่ากว่านั้นทำ DP เพียง 1 ใน 8 ของอัตรา SP เท่านั้น หากคุณเคยพูดตัวเลขสำหรับระบบของคุณคุณควรมีความชัดเจนเกี่ยวกับสิ่งที่คุณใช้ถ้ามันไม่แม่นยำเป็นสองเท่า

นอกจากนี้หากชิปของคุณรองรับการใช้คำแนะนำแบบทวีคูณแบบเพิ่ม (FMA) และสามารถทำได้แบบเต็มอัตราคนส่วนใหญ่นับว่าเป็นการดำเนินการจุดลอยตัว 2 แม้ว่าตัวนับประสิทธิภาพของฮาร์ดแวร์อาจนับเป็นคำสั่งเดียวเท่านั้น

สุดท้ายคุณสามารถทำเช่นนี้กับส่วนช่วยดำเนินการใด ๆ ที่อาจมีอยู่ในระบบของคุณ (เช่น GPU หรือ Xeon Phi) และเพิ่มประสิทธิภาพนั้นให้กับประสิทธิภาพของ CPU เพื่อให้ได้ผลรวมตามทฤษฎี


ยังไม่พอที่จะรู้ถึงรูปแบบของ CPU เราจำเป็นต้องค้นหาความถี่ในการใช้งานจริง
Aksakal

@ Aksakal สำหรับการวิเคราะห์เชิงทฤษฎีอาจเป็นไปได้ที่จะเลือกความถี่เล็กน้อย เป็นการยากที่จะทราบว่าชิปของคุณจะทำงานที่ความถี่ใดขึ้นอยู่กับปริมาณงานและคุณภาพของเครื่องปรับอากาศของคุณ
Bill Barth

2

ฉันเข้าใจว่าคุณขอค่าตามทฤษฎี แต่เนื่องจากเกือบจะไม่สามารถเข้าถึงได้ด้วยรหัสจริงใด ๆ แม้แต่ LINPACK คุณอาจต้องการเรียกใช้ (เพิ่มประสิทธิภาพ) DGEMM สำหรับการฝึกอบรมที่มีขนาดใหญ่มาก เหตุผลที่ฉันชอบวิธีนี้คือมันทำให้เกิดข้อบกพร่องบางอย่างของโปรเซสเซอร์บางตัวที่ป้องกันไม่ให้พวกเขาบรรลุค่าสูงสุดของความล้มเหลวทางทฤษฎี

ตัวอย่างเช่น NVIDIA GPUs ในขณะนี้ทำการดำเนินการจำนวนเต็มและทศนิยมในท่อเดียวกัน ซึ่งหมายความว่าคุณจะสามารถบรรลุความล้มเหลวจุดสูงสุดทางทฤษฎี / s ถ้าคุณทำไม่คำนวณจำนวนเต็มใด ๆ ในขณะที่การทำดัชนีอาเรย์และการเข้าถึงข้อมูลในรูปแบบอื่น ๆ นั้นจำเป็นต้องใช้เลขคณิตจำนวนเต็มที่ไหนสักแห่งไม่มีรหัสใดที่สามารถทำให้ฟลอพสูงสุดในทางทฤษฎีบน NVIDIA GPU ในกรณีส่วนใหญ่หนึ่งจะเห็น ~ 80% เป็นขอบเขตบน สำหรับซีพียูที่ออกการดำเนินการจำนวนเต็มและจุดลอยตัวพร้อมกันนี่เป็นปัญหา

ในโปรเซสเซอร์แบบมัลติคอร์ที่เหมือน GPU บางตัวเช่น Intel Knights Corner และ Blue Gene / Q มันยากที่จะบรรลุจุดสูงสุดของฟลอพ / s กว่าบนซีพียูแบบดั้งเดิมสำหรับปัญหาท่อส่งที่คล้ายกัน )


เหตุใดจึงไม่มีรหัสสามารถบรรลุยอดนิยมสูงสุดตามทฤษฎีใน NVIDIA GPU ได้
skytree

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