ฉันต้องการกำหนดจำนวนทางทฤษฎีของ FLOPs (การดำเนินการจุดลอยตัว) ที่คอมพิวเตอร์ของฉันสามารถทำได้ ใครก็ได้โปรดช่วยฉันด้วยสิ่งนี้ (ฉันต้องการเปรียบเทียบคอมพิวเตอร์ของฉันกับซูเปอร์คอมพิวเตอร์บางตัวเพื่อรับทราบความแตกต่างระหว่างพวกเขา)
ฉันต้องการกำหนดจำนวนทางทฤษฎีของ FLOPs (การดำเนินการจุดลอยตัว) ที่คอมพิวเตอร์ของฉันสามารถทำได้ ใครก็ได้โปรดช่วยฉันด้วยสิ่งนี้ (ฉันต้องการเปรียบเทียบคอมพิวเตอร์ของฉันกับซูเปอร์คอมพิวเตอร์บางตัวเพื่อรับทราบความแตกต่างระหว่างพวกเขา)
คำตอบ:
จำนวนสูงสุดของทฤษฎี FLOP / s กำหนดโดย: จำนวนแกนเป็นเรื่องง่าย ในทางทฤษฎีถัวเฉลี่ยควรคำนึงถึงปัจจัยในจำนวน Turbo Boost (Intel) หรือ Turbo Core (AMD) จำนวนหนึ่ง แต่ความถี่ในการใช้งานนั้นค่อนข้างต่ำ การดำเนินการต่อรอบขึ้นอยู่กับสถาปัตยกรรมและหายาก (8 สำหรับ SandyBridge และ IvyBridge ดูสไลด์ 26 ) มันเป็นเรื่องของคำถามล้นสแต็คนี้ซึ่งรวมถึงตัวเลขสำหรับสถาปัตยกรรมสมัยใหม่จำนวนมาก
คุณจะต้องรู้รุ่นและผู้จำหน่ายของ CPU ในเครื่องของคุณ เมื่อคุณมีแล้วคุณสามารถค้นหาเว็บไซต์ของผู้ขาย (หรืออาจเป็นใน Wikipedia) อัตรานาฬิกาจำนวนชิป / ซ็อกเก็ตจำนวนแกนต่อชิปจำนวนการดำเนินการจุดลอยตัวต่อรอบและความกว้างเวกเตอร์ของการดำเนินการเหล่านั้น . จากนั้นคุณก็คูณ
ยกตัวอย่างเช่นตัวประมวลผล Intel Xeon E5-2680 "Sandy Bridge" ในStampedeที่ฉันทำงาน รายละเอียดคือ:
การคูณจะให้ 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 เพื่อให้ได้ผลรวมตามทฤษฎี
ฉันเข้าใจว่าคุณขอค่าตามทฤษฎี แต่เนื่องจากเกือบจะไม่สามารถเข้าถึงได้ด้วยรหัสจริงใด ๆ แม้แต่ LINPACK คุณอาจต้องการเรียกใช้ (เพิ่มประสิทธิภาพ) DGEMM สำหรับการฝึกอบรมที่มีขนาดใหญ่มาก เหตุผลที่ฉันชอบวิธีนี้คือมันทำให้เกิดข้อบกพร่องบางอย่างของโปรเซสเซอร์บางตัวที่ป้องกันไม่ให้พวกเขาบรรลุค่าสูงสุดของความล้มเหลวทางทฤษฎี
ตัวอย่างเช่น NVIDIA GPUs ในขณะนี้ทำการดำเนินการจำนวนเต็มและทศนิยมในท่อเดียวกัน ซึ่งหมายความว่าคุณจะสามารถบรรลุความล้มเหลวจุดสูงสุดทางทฤษฎี / s ถ้าคุณทำไม่คำนวณจำนวนเต็มใด ๆ ในขณะที่การทำดัชนีอาเรย์และการเข้าถึงข้อมูลในรูปแบบอื่น ๆ นั้นจำเป็นต้องใช้เลขคณิตจำนวนเต็มที่ไหนสักแห่งไม่มีรหัสใดที่สามารถทำให้ฟลอพสูงสุดในทางทฤษฎีบน NVIDIA GPU ในกรณีส่วนใหญ่หนึ่งจะเห็น ~ 80% เป็นขอบเขตบน สำหรับซีพียูที่ออกการดำเนินการจำนวนเต็มและจุดลอยตัวพร้อมกันนี่เป็นปัญหา
ในโปรเซสเซอร์แบบมัลติคอร์ที่เหมือน GPU บางตัวเช่น Intel Knights Corner และ Blue Gene / Q มันยากที่จะบรรลุจุดสูงสุดของฟลอพ / s กว่าบนซีพียูแบบดั้งเดิมสำหรับปัญหาท่อส่งที่คล้ายกัน )