กูเกิลโอเพนซอร์สไลบรารี sort เร็วกว่าไลบรารีมาตรฐาน 9-19 เท่า อาศัยชุดคำสั่งเวคเตอร์

by lew
6 June 2022 - 02:35

กูเกิลโอเพนซอร์สไลบรารีเรียงลำดับข้อมูล (sorting) ที่ใช้ชุดคำสั่งแบบเวคเตอร์ในซีพียู ทำให้ไลบรารีทำงานได้เร็วขึ้น 9-19 เท่าตัวเมื่อเทียบกับ std::sort ในภาษา C++

ชุดคำสั่งแบบเวคเตอร์เป็นชุดคำสั่งที่ซีพียูประสิทธิภาพยุคใหม่ๆ อิมพลีเมนต์กันเป็นส่วนมาก และการเขียนฟังก์ชั่นเรียงลำดับข้อมูลด้วยชุดคำสั่งประเภทนี้ก็มีการศึกษามาระยะหนึ่งแล้วว่าใช้เร่งความเร็วได้ แต่โค้ดของกูเกิลในครั้งนี้มีความพิเศษคือมันรองรับซีพียูหลากหลายรุ่น รวม 3 สถาปัตยกรรม รองรับชุดคำสั่งเวคเตอร์ 6 รูปแบบ โดยอาศัยไลบรารี Highway ของกูเกิลเองเพื่อทำให้โค้ดที่ใช้คำสั่งแบบเวคเตอร์นี้พอร์ตข้ามสถาปัตยกรรมได้

แนวทางสำคัญสำหรับการเร่งความเร็วในการเรียงลำดับข้อมูลด้วยคำสั่งแบบเวคเตอร์คือการใช้คำสั่ง "compress-store" ที่สามารถดึงข้อมูลในเวคเตอร์ที่เงื่อนไขเป็นจริงให้ไปวางเรียงกันในหน่วยความจำได้ คำสั่งนี้ทำให้การเร่งความเร็วอัลกอริทึม Quicksort ทำได้โดยง่าย ปัญหาคือชุดคำสั่งแบบเวคเตอร์ไม่ได้มีคำสั่งนี้เสมอไป แต่ก็มีการศึกษามาก่อนหน้านี้ว่าสามารถใช้คำสั่งอื่นๆ จำลองคำสั่ง "compress-store" ได้

ไลบรารีเปิดให้ใช้งานด้วยสัญญาอนุญาตแบบ Apache 2

ที่มา - Google

Blognone Jobs Premium