Ranking มาจากวิธีวัด - จาก HPL สู่ HPCG

เราต่างก็คุ้นเคยกับการจัดอันดับของสิ่งต่างๆ เป็นอย่างดี ไม่มีว่าจะเป็นอันดับความอร่อยของร้านอาหาร อันดับผลการเรียน อันดับประสิทธิภาพการทำงาน และอื่นๆ ซึ่งเมื่อมีการจัดอันดับก็หมายถึงว่าจะต้องมีวิธีการวัดค่าอะไรบางอย่างเพื่อให้สามารถจัดอันดับได้ ถ้าไม่มีวิธีการวัดก็คงไม่มีค่าออกมาเพื่อเปรียบเทียบ หรือถ้าวิธีการวัดคลุมเครือการจัดอันดับที่ได้ก็คงจะไม่น่าเชื่อถือเท่าไหร่

หนึ่งในการจัดอันดับที่โด่งดังอันหนึ่งคือการจัดอันดับซูเปอร์คอมพิวเตอร์ของ TOP500 ที่หลายคนน่าจะรู้จักดี ซึ่งถ้าจะพูดให้ง่ายก็คือการจัดอันดับว่าคอมพิวเตอร์เครื่องไหน"แรง"กว่ากันนั่นเอง โดยวิธีการวัดว่าเครื่องไหนแรงหรือไม่แรงก็ทำได้ด้วยการรันโปรแกรม benchmark ตัวนึงที่ชื่อว่า HPL (High-Performance LINPACK) แล้วเอามาวัดกันว่าใครได้ประสิทธิภาพที่ดีกว่าก็จะถือว่าเครื่องนั้นแรงกว่า

 

TOP500 เกิดมาได้ประมาณ 20 กว่าปี ซึ่งก็ถือว่านานมากแล้ว การจัดอันดับก็ใช้ HPL วัดกันอย่างเดียวเลย หลายคนน่าจะคุ้นเคยกับการวัดประสิทธิภาพของ CPU ด้วยความถี่สัญญาณนาฬิกา (หรือว่า clock rate ที่มีหน่วยเป็น Hz นั่นแหละครับ) แต่ว่าการวัดความแรงของเครื่องในสมัยก่อนจะวัดด้วยจำนวนการประมวลผลเลข Floating-point ที่ทำได้ในหนึ่งวินาที หรือว่า FLOPS สาเหตุก็เนื่องมาจากว่างานของซูเปอร์คอมพิวเตอร์แต่ไหนแต่ไรก็คือการประมวลผลทางวิทยาศาสตร์ (Scientific Computations) ที่มีการคำนวณเลขทศนิยมเป็นหลัก และความถี่สัญญาณนาฬิกาที่มาก ไม่ได้แปลว่าจะต้องคำนวณ Floating-point ได้ดีเสมอไป

HPL เป็น benchmark ที่ทำการรันเพื่อหาคำตอบของระบบสมการเชิงเส้น $Ax = b$ เมื่อ $A$ เป็น Dense Matrix (หรือเมทริกซ์ที่สมาชิกข้างในส่วนใหญ่ไม่ใช่ 0) โดยมีความซับซ้อนของเวลาในการทำงานเป็น $O(n^3)$ เมื่อนำ HPL ไปรันบนเครื่องก็จะได้ตัวเลข FLOPS มาหนึ่งค่า จริงๆ แล้ว HPL ก็ถือว่าเป็นตัววัดที่ดีเนื่องจากงานทางด้านวิทยาศาสตร์ส่วนใหญ่ก็ใช้การหาคำตอบของระบบสมการเชิงเส้นกันเยอะอยู่แล้ว และการวัดจากจำนวน Floating-point ที่ประมวลผลได้ในหนึ่งวินาทีก็สะท้อนความสามารถของซูเปอร์คอมพิวเตอร์เครื่องนั้นออกมาได้เป็นอย่างดี

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

นั่นทำให้เราต้องคิดกันว่าควรที่จะหาตัวอื่นมาใช้แทนหรือไม่ หรืออาจจะไม่ได้แทนที่แบบ 100% แต่นำมาใช้ร่วมกับ HPL ด้วย

 

ภาพต่อไปนี้เป็น 6 อันดับแรกที่วัดด้วย HPL (ก็คือ TOP500) ซึ่งจัดไว้เดือนพฤศจิกายน 2017

 

ส่วนถัดไปจะเป็นการจัดอันดับด้วย HPCG (High Performance Conjugate Gradient) ในช่วงเวลาเดียวกันคือพฤศจิกายน 2017

 

HPCG เป็น benchmark อีกตัวที่ทำขึ้นมาโดยคนเดียวกับที่ทำ HPL แต่เสนอขึ้นมาใหม่อันเนื่องมาจากปัญหาที่กล่าวมาก่อนหน้านี้ HPCG ก็เป็นการแก้ระบบสมการเชิงเส้น $Ax = b$ เช่นเดียวกัน แต่ $A$ จะเป็นเมทริกซ์ขนาดใหญ่ และ Sparse (มี 0 เยอะ) ซึ่งวิธีนี้ก็จะทำให้มี pattern การคำนวนในหลายๆ แบบ เช่น การคำนวนเมทริกซ์ทั้งแบบ Dense และ Sparse และวัดประสิทธิภาพการติดต่อสื่อสารของระบบเครือข่ายได้ดีกว่า (นอกจากนี้ยังมีคุณสมบัติอื่นๆ อีกมากมายที่เหมาะที่จะใช้เป็น benchmark)

กลับมาที่ตารางอันดับนะครับ จะเห็นว่าอันดับ 1 ที่วัดด้วย HPL ไม่จำเป็นต้องเป็นอันดับ 1 จากการวัดด้วย HPCG เสมอไป ตารางที่สองจะโชว์ให้ดูว่าแต่ละเครื่องนั้นได้ Ranking เท่าไหร่เมื่อวัดด้วย HPL ซึ่งตัวหนึ่งที่น่าสนใจคือ K-computer ของญี่ปุ่นที่ถ้าวัดด้วย HPL จะอยู่ที่อันดับ 10 แต่เมื่อวัดด้วย HPCG จะเป็นอันดับ 1 เลยทีเดียว ที่น่าสนใจกว่านั้นคือ K-computer เป็นเครื่องที่เก่าพอสมควรและยังไม่มีใครล้มได้ถ้าวัดด้วย HPCG

ในอนาคต TOP500 จะเปลี่ยนวิธีการวัดไปยังไงบ้างมั้ย ผมเองก็ไม่ทราบได้ benchmark ในโลกก็ยังมีอีกมากมายไม่ใช่แค่ HPCG แต่อย่าลืมว่าทุกการจัดอันดับได้รับผลกระทบจากวิธีการวัดอยู่เสมอ ในฐานะของคนที่จะนำอันดับนั้นมาใช้ก็ควรที่จะต้องเข้าใจว่าอันดับที่ได้จริงๆ แล้วมีความหมายอย่างไร และมันเป็นตัวแทนของสิ่งที่เราอยากรู้จริงๆ รึเปล่า?

 

หมายเหตุ : บทความนี้ได้บันดาลใจจากการไปฟัง Jack J. Dongarra (คนที่เขียน HPL และ HPCG (ไม่ได้เขียนคนเดียวนะครับ)) บรรยายเมื่อต้นปี ตอนแรกที่ฟังก็ตื่นเต้นนิดหน่อยที่ตัวเองไม่เคยรู้เรื่องนี้มาก่อนเลย ก็เลยอินมาก แล้วก็ต้องเอามาเขียนระบายอารมณ์นี่แหละครับ

 

Reference:

1. https://en.wikipedia.org/wiki/LINPACK_benchmarks

2. http://www.hpcg-benchmark.org

3. http://www.machinedesign.com/community/there-s-new-test-town-ranking-supercomputers

Taxonomy upgrade extras: