กูเกิลโอเพนซอร์สไลบรารีเรียงลำดับข้อมูล (sorting) ที่ใช้ชุดคำสั่งแบบเวคเตอร์ในซีพียู ทำให้ไลบรารีทำงานได้เร็วขึ้น 9-19 เท่าตัวเมื่อเทียบกับ std::sort
ในภาษา C++
ชุดคำสั่งแบบเวคเตอร์เป็นชุดคำสั่งที่ซีพียูประสิทธิภาพยุคใหม่ๆ อิมพลีเมนต์กันเป็นส่วนมาก และการเขียนฟังก์ชั่นเรียงลำดับข้อมูลด้วยชุดคำสั่งประเภทนี้ก็มีการศึกษามาระยะหนึ่งแล้วว่าใช้เร่งความเร็วได้ แต่โค้ดของกูเกิลในครั้งนี้มีความพิเศษคือมันรองรับซีพียูหลากหลายรุ่น รวม 3 สถาปัตยกรรม รองรับชุดคำสั่งเวคเตอร์ 6 รูปแบบ โดยอาศัยไลบรารี Highway ของกูเกิลเองเพื่อทำให้โค้ดที่ใช้คำสั่งแบบเวคเตอร์นี้พอร์ตข้ามสถาปัตยกรรมได้
แนวทางสำคัญสำหรับการเร่งความเร็วในการเรียงลำดับข้อมูลด้วยคำสั่งแบบเวคเตอร์คือการใช้คำสั่ง "compress-store" ที่สามารถดึงข้อมูลในเวคเตอร์ที่เงื่อนไขเป็นจริงให้ไปวางเรียงกันในหน่วยความจำได้ คำสั่งนี้ทำให้การเร่งความเร็วอัลกอริทึม Quicksort ทำได้โดยง่าย ปัญหาคือชุดคำสั่งแบบเวคเตอร์ไม่ได้มีคำสั่งนี้เสมอไป แต่ก็มีการศึกษามาก่อนหน้านี้ว่าสามารถใช้คำสั่งอื่นๆ จำลองคำสั่ง "compress-store" ได้
ไลบรารีเปิดให้ใช้งานด้วยสัญญาอนุญาตแบบ Apache 2
ที่มา - Google
Comments
AVX-512 ได้ใช้งานก็งานนี้แหละ