StringZilla v1.0 ได้เปิดตัวแล้วในฐานะรุ่นแรกที่รองรับ CUDA ของไลบรารีประมวลผลสตริงประสิทธิภาพสูงนี้ โดยอ้างว่ามีการปรับปรุงความเร็วที่น่าทึ่งซึ่งได้รับความสนใจจากนักพัฒนาและนักวิจัย ไลบรารีนี้ตอนนี้สามารถทำงานได้ทั้งบน CPU และ GPU โดยนำมาซึ่งการเร่งความเร็วที่สำคัญสำหรับการคำนวณความคล้ายคลึงของสตริงและงานด้านชีวสารสนเทศ
คุณสมบัติหลักของ StringZilla v1.0:
- รองรับหลายแพลตฟอร์ม: การเร่งความเร็วด้วย CPU และ GPU พร้อม CUDA
- อัลกอริทึมขั้นสูง: Levenshtein distance, Smith-Waterman, affine gap penalties
- การปรับแต่งฮาร์ดแวร์: ชุดคำสั่ง AVX-512, NEON, SVE, SVE2
- การเชื่อมโยงภาษา: C, C++, CUDA, Rust, JavaScript, Go, Swift, Python
- ฟังก์ชัน Hash: ฟังก์ชัน hash ใหม่ 2 ตัวพร้อมรองรับ streaming
- เน้นด้านชีวสารสนเทศ: ต้นทุนการทดแทนแบบกำหนดเองสำหรับลำดับโปรตีน
- ใบอนุญาต: Apache 2.0 (ใช้งานเชิงพาณิชย์ได้ฟรี)
การอ้างสิทธิ์ด้านประสิทธิภาพเผชิญกับการทดสอบในโลกแห่งความเป็นจริง
การอ้างสิทธิ์หลักที่ว่าประสิทธิภาพเร็วกว่า GPU NVIDIA H100 ถึง 109 เท่าได้จุดประกายการอพิจารณาโดยละเอียดในชุมชนนักพัฒนา อย่างไรก็ตาม เมื่อทดสอบเทียบกับไลบรารีที่มีชื่อเสียงอย่าง memchr crate ของ Rust ที่ใช้โดย RipGrep ผลลัพธ์แสดงให้เห็นภาพที่มีความซับซ้อนมากขึ้น การเปรียบเทียบเบนช์มาร์กเผยให้เห็นว่าแม้ว่า StringZilla จะแสดงประสิทธิภาพที่สามารถแข่งขันได้ แต่ memchr มักจะรักษาความได้เปรียบในการดำเนินการค้นหาสตริงย่อย โดยเฉพาะอย่างยิ่งในระบบที่ไม่มีการรองรับ AVX-512
ความได้เปรียบด้านประสิทธิภาพดูเหมือนจะเด่นชัดที่สุดบนฮาร์ดแวร์รุ่นใหม่ที่มีความสามารถ AVX-512 การอัปเดตล่าสุดระบุว่าไลบรารีสามารถบรรลุ GigaCUPS มากกว่า 900 บนอินพุต 1000 ไบต์ด้วยฮาร์ดแวร์ NVIDIA H100 และประสิทธิภาพที่สูงยิ่งขึ้นบนโปรเซสเซอร์ Intel Xeon 6 Granite Rapids ล่าสุดที่มี 192 คอร์ฟิสิคัล
ข้อกำหนดฮาร์ดแวร์จำกัดการนำไปใช้ในวงกว้าง
ข้อจำกัดสำคัญเกิดขึ้นจากการที่ StringZilla มุ่งเน้นไปที่ชุดคำสั่ง AVX-512 ซึ่งยังคงไม่มีอยู่ในโปรเซสเซอร์สำหรับผู้บริโภคจำนวนมาก แม้แต่ชิป Intel รุ่นใหม่อย่าง i9-14900K ก็ขาดการรองรับ AVX-512 แม้ว่า CPU เดสก์ท็อปที่ใช้ Zen4 ของ AMD จะรวมมันไว้ ข้อกำหนดฮาร์ดแวร์นี้สร้างความแตกแยกระหว่างแอปพลิเคชันในศูนย์ข้อมูลและผู้บริโภค
นี่คือปัญหาของฉันกับการกำหนดเป้าหมาย AVX-512 มันไม่ได้ขาดหายไปเฉพาะใน CPU AVX2 เท่านั้นที่เก่ากว่า มันยังขาดหายไปใน CPU AVX2 เท่านั้นที่ใหม่กว่าจำนวนมาก
ไลบรารีรองรับโปรเซสเซอร์ ARM ด้วยเคอร์เนล NEON, SVE และ SVE2 แม้ว่าชุดคำสั่งสองตัวหลังจะพบได้หลักในฮาร์ดแวร์เฉพาะทางอย่าง AWS Graviton 3 หือระบบซูเปอร์คอมพิวเตอร์
แอปพลิเคชันชีวสารสนเทศขับเคลื่อนการพัฒนา
การผลักดันการพัฒนาล่าสุดเกิดจากความต้องการที่เพิ่มขึ้นในอุตสาหกรรมเทคโนโลยีชีวภาพและเภสัชกรรม เมื่อปริมาณข้อมูลลำดับชีวภาพขยายตัวอย่างรวดเร็ว บริษัทต่างๆ ต้องการไปป์ไลน์การคำนวณที่เร็วขึ้นสำหรับงานอย่างการจัดตำแหน่งลำดับโปรตีน การปรับปรุงของไลบรารีสำหรับการคำนวณระยะทาง Levenshtein และอัลกอริทึม Smith-Waterman ตอบสนองความต้องการเหล่านี้โดยตรง
StringZilla นำเสนอค่าปรับ affine gap และต้นทุนการทดแทนแบบกำหนดเองโดยเฉพาะสำหรับลำดับชีวภาพ โดยก้าวข้ามการเปรียบเทียบสตริงพื้นฐานไปสู่การจัดการความซับซ้อนของการวิเคราะห์ข้อมูลพันธุกรรมและโปรตีน
ฟังก์ชันแฮชใหม่และการรองรับหลายภาษา
นอกเหนือจากการประมวลผลสตริง การเปิดตัวครั้งนี้รวมถึงฟังก์ชันแฮชใหม่สองตัวที่ออกแบบมาเพื่อแข่งขันกับตัวเลือกที่มีชื่อเสียงอย่าง xxHash ไลบรารีตอนนี้รองรับการแฮชแบบเพิ่มหน่วย, seed แบบกำหนดเอง และสร้างเอาต์พุตที่สอดคล้องกันข้ามแพลตฟอร์มและสถาปัตยกรรมต่างๆ
ความพยายามทางวิศวกรรมขยายไปทั่วหลายภาษาโปรแกรมมิ่ง โดยมี binding ที่พร้อมใช้งานสำหรับ C, C++, CUDA, Rust, JavaScript, Go และ Swift การรองรับภาษาที่กว้างขวางนี้มีเป้าหมายเพื่อทำให้การปรับปรุงประสิทธิภาพเข้าถึงได้โดยไม่คำนึงถึงสภาพแวดล้อมการพัฒนา
ประสิทธิภาพการสร้างสตริงแบบสุ่ม
ไลบรารี | @ 500 ไบต์ | @ 1000 ไบต์ |
---|---|---|
aesrand-simd | 0.73 GB/s | 1.43 GB/s |
crc-hash-benchmarking | 0.63 GB/s | 1.72 GB/s |
xxHash-benchmarking | 2.82 GB/s | 4.22 GB/s |
jhash-simd | 4.65 MB/s | 4.05 GB/s |
stringzilla-simd | 11.36 GB/s | 15.27 GB/s |
![]() |
---|
StringZilla ปรับปรุงเทคนิคการประมวลผลสตริงและบรรลุการปรับปรุงประสิทธิภาพอย่างมีนัยสำคัญ |
ความสนใจจากอุตสาหกรรมและแอปพลิเคชันในอนาคต
แม้ว่าจะยังไม่มีส่วนขยาย PostgreSQL อยู่ในปัจจุบัน แต่มีรายงานว่าผู้จำหน่ายฐานข้อมูลเชิงพาณิชย์กำลังทดลองกับการรวม StringZilla ฟังก์ชันแฮชใหม่อาจปรับปรุงประสิทธิภาพ JOIN ในการดำเนินการฐานข้อมูลได้ ในขณะที่ความสามารถในการสร้างลายนิ้วมือโดยใช้คณิตศาสตร์ modulo 52 บิตอาจเป็นประโยชน์ต่องานดึงข้อมูลขนาดเพตาไบต์
ใบอนุญาต Apache 2.0 ของไลบรารีรับประกันการเข้าถึงฟรีสำหรับทั้งแอปพลิเคชันเชิงพาณิชย์และการวิจัย ซึ่งอาจเร่งการนำไปใช้ในสภาพแวดล้อมการคำนวณประสิทธิภาพสูงที่การประมวลผลสตริงยังคงเป็นคอขวด