Skip to content

คนไทยมองโลก

แปลบทความดีเด่นเพื่อคนไทยในอุดมคติอันสูงส่ง

Menu
  • Sample Page
Menu

แยกวิเคราะห์ JSON เร็วขึ้นด้วย Intel AVX-512

Posted on พฤษภาคม 25, 2022

ภาพบุคคล2018facebook.jpg

โปรเซสเซอร์ Intel ล่าสุดจำนวนมากได้รับประโยชน์จากชุดคำสั่งใหม่ที่เรียกว่า AVX-512 คำแนะนำเหล่านี้ทำงานบนรีจิสเตอร์กว้าง (สูงสุด 512 บิต) และปฏิบัติตาม กระบวนทัศน์คำสั่งเดียว หลายข้อมูล (SIMD) คำแนะนำ AVX-512 ใหม่เหล่านี้ทำให้คุณสามารถทำลายสถิติความเร็วบางอย่างได้ เช่น การถอดรหัสข้อมูล base64 ด้วย ความเร็วของการคัดลอกหน่วยความจำ

โปรเซสเซอร์ที่ทันสมัยส่วนใหญ่มีคำสั่ง SIMD คำสั่ง AVX-512 นั้นกว้างกว่า (จำนวนบิตมากขึ้นต่อการลงทะเบียน) แต่นั่นก็ไม่จำเป็นว่าจะต้องดึงดูดใจหลัก หากคุณเพียงแค่ใช้อัลกอริธึม SIMD ที่มีอยู่และนำไปใช้กับ AVX-512 คุณอาจไม่ได้รับประโยชน์มากเท่าที่คุณต้องการ เป็นความจริงที่การลงทะเบียนที่กว้างขึ้นนั้นมีประโยชน์ แต่ในโปรเซสเซอร์ superscalar (โปรเซสเซอร์ที่สามารถออกคำสั่งได้หลายคำสั่งต่อรอบ) จำนวนคำสั่งที่คุณสามารถออกต่อรอบมีความสำคัญมากถ้าไม่มาก โดยทั่วไปแล้ว คำสั่ง AVX-512 แบบ 512 บิตจะมีราคาแพงกว่า และโปรเซสเซอร์สามารถออกคำสั่งเหล่านี้ได้น้อยลงต่อรอบ เพื่อให้ได้รับประโยชน์อย่างเต็มที่จาก AVX-512 คุณต้องออกแบบโค้ดของคุณอย่างระมัดระวัง การที่ Intel กำลังเผยแพร่คำสั่งเหล่านี้อย่างค่อยเป็นค่อยไปทำให้มีความท้าทายมากขึ้น: โปรเซสเซอร์ล่าสุดมีคำสั่ง AVX-512 อันทรงพลังใหม่จำนวนมากซึ่งไม่สามารถใช้งานได้ในตอนแรก ดังนั้น AVX-512 จึงไม่ใช่ “สิ่งเดียว” แต่เป็นชุดคำสั่งในตระกูล

นอกจากนี้ การปรับใช้คำสั่ง AVX-512 ในระยะแรกมักจะนำไปสู่การดาวน์คล็อกที่วัดได้: โปรเซสเซอร์จะลดความถี่ลงชั่วขณะหนึ่งหลังจากใช้คำแนะนำเหล่านี้ โชคดีที่โปรเซสเซอร์ Intel รุ่นล่าสุดที่สนับสนุน AVX-512 (Rocket Lake และ Ice Lake) ได้ยุติการควบคุมความถี่ที่เป็นระบบ นี้ โชคดีที่ตรวจพบโปรเซสเซอร์ล่าสุดเหล่านี้ได้ง่ายในขณะใช้งานจริง

เซิร์ฟเวอร์ Intel อันทรงพลังของ Amazon นั้นใช้ Ice Lake ดังนั้น หากคุณกำลังปรับใช้ซอฟต์แวร์แอปพลิเคชันของคุณกับคลาวด์บนเซิร์ฟเวอร์ที่ทรงพลัง แสดงว่าคุณอาจได้รับการสนับสนุนที่ดีสำหรับ AVX-512 แล้ว !

ไม่กี่ปีที่ผ่านมา เราได้เปิดตัว ตัวแยกวิเคราะห์ C++ JSON ที่เร็วจริงๆ ชื่อ simdjson ตัวแยกวิเคราะห์ค่อนข้างพิเศษเนื่องจากต้องอาศัยคำแนะนำ SIMD อย่างยิ่ง ในหลาย ๆ ตัวชี้วัด ตัวแยกวิเคราะห์ JSON นั้นเคยเป็นและยังคงเป็นตัวแยกวิเคราะห์ JSON ที่เร็วที่สุด แม้ว่าจะมีคู่แข่งที่น่าสนใจรายอื่นๆ เกิดขึ้น

ตอนแรกฉันได้เขียนเคอร์เนล AVX-512 ที่รวดเร็วและสกปรกสำหรับ simdjson เราไม่เคยรวมมันเข้าด้วยกันและหลังจากนั้นไม่นานฉันก็ลบมันทิ้งไป แล้วฉันก็ลืมมันไป

ขอบคุณการมีส่วนร่วมจากวิศวกรของ Intel มากความสามารถ (Fangzheng Zhang และ Weiqiang Wan) รวมถึงการมีส่วนร่วมทางอ้อมจากผู้อ่านบล็อกนี้ (Kim Walisch และ Jatin Bhateja) เราจึงผลิตเคอร์เนล AVX-512 ใหม่ขึ้นมา และเช่นเคย โปรดจำไว้ว่า simdjson เป็นผลงานของคนจำนวนมาก ซึ่งเป็นชุมชนทั้งหมดที่มีผู้มีส่วนร่วมหลายสิบคน ฉันต้องแสดงความขอบคุณต่อ Fangzheng Zhang ที่เขียนถึงฉันเกี่ยวกับพอร์ต AVX-512 ก่อน

เราเพิ่งเปิดตัวในเวอร์ชันล่าสุดของ simdjson มันทำลายสถิติความเร็วใหม่

ให้เราพิจารณาการทดสอบที่น่าสนใจที่คุณต้องการสแกนทั้งไฟล์ (ขนาดกิโลไบต์) เพื่อค้นหาค่าที่สอดคล้องกับตัวระบุบางตัว ใน simdjson รหัสมีดังนี้:

 auto doc = parser . วนซ้ำ ( json ) ;       
   สำหรับ ( ทวีต อัตโนมัติ : doc . find_field ( " สถานะ " ) ) {   
      if ( uint64_t ( ทวีต . find_field ( " id " ) ) = = find_id ) {   
        ผลลัพธ์ = ทวี ต find_field ( " ข้อความ " ) ;   
        คืนค่า จริง ;   
      }   
    }   
    คืนค่า เท็จ ;   

บนโปรเซสเซอร์ Tiger Lake ด้วย GCC 11 ฉันได้รับความเร็วในการประมวลผลเป็นสองเท่า โดยแสดงด้วยจำนวนไบต์อินพุตที่ประมวลผลต่อวินาที

simdjson (512-bit SIMD): ใหม่ 7.4 GB/วินาที
simdjson (256 บิต SIMD): เก่า 4.6 GB/วินาที

ความเร็วที่เพิ่มขึ้นนั้นสำคัญมากเพราะในงานนี้ เรามักจะอ่านข้อมูลเป็นหลัก และประมวลผลรองค่อนข้างน้อย เราไม่ได้สร้างต้นไม้จากข้อมูล JSON เราไม่ได้สร้างโครงสร้างข้อมูล

ไลบรารี simdjson มีฟังก์ชันย่อขนาดซึ่งเพิ่งตัดช่องว่างที่ไม่จำเป็นออกจากอินพุต อาจเป็นเรื่องน่าประหลาดใจที่เราเร็วกว่าสองเท่าของค่าพื้นฐานก่อนหน้า:

simdjson (512-bit SIMD): ใหม่ 12 GB/วินาที
simdjson (256 บิต SIMD): เก่า 4.3 GB/วินาที

เกณฑ์มาตรฐานที่สมเหตุสมผลอีกประการหนึ่งคือการแยกวิเคราะห์อินพุตลงในแผนผัง DOM ด้วยการตรวจสอบแบบเต็ม การแยกวิเคราะห์ไฟล์ JSON มาตรฐาน ( twitter.json ) ฉันได้รับเกือบ 30%:

simdjson (512-bit SIMD): ใหม่ 3.6 GB/วินาที
simdjson (256 บิต SIMD): เก่า 2.8 GB/วินาที

แม้ว่า 30% อาจฟังดูไม่น่าตื่นเต้น แต่เราเริ่มต้นจากเส้นฐานที่รวดเร็ว

เราทำได้ดีกว่านี้ไหม? ได้อย่างมั่นใจ มี AVX-512 มากมายที่เรายังไม่ได้ใช้งาน เราไม่ใช้การดำเนินการบูลีนแบบไตรภาค ( vpternlog ) เราไม่ได้ใช้ฟังก์ชันสับเปลี่ยนอันทรงพลังใหม่ (เช่น vpermt2b ) เรามีตัวอย่างของวิวัฒนาการร่วมกัน: ฮาร์ดแวร์ที่ดีกว่าต้องการซอฟต์แวร์ใหม่ ซึ่งจะทำให้ฮาร์ดแวร์มีความโดดเด่น

แน่นอน เพื่อให้ได้ประโยชน์ใหม่เหล่านี้ คุณต้องมีโปรเซสเซอร์ Intel รุ่นล่าสุดที่มีการรองรับ AVX-512 ที่เพียงพอ และแน่นอนว่าคุณต้องมีโปรเซสเซอร์ C++ ที่ค่อนข้างใหม่ด้วยเช่นกัน โปรเซสเซอร์ Intel ระดับแล็ปท็อปรุ่นล่าสุดบางตัวไม่รองรับ AVX-512 แต่คุณน่าจะใช้ได้หากคุณพึ่งพา AWS และมีโหนด Intel ขนาดใหญ่

คุณสามารถคว้า รุ่นของเราได้โดยตรง หรือรอให้มันไปถึงหนึ่งในตัวจัดการแพ็คเกจมาตรฐาน (MSYS2, conan, vcpkg, brew, debian, FreeBSD เป็นต้น)

ใส่ความเห็น ยกเลิกการตอบ

คุณต้องเข้าสู่ระบบ เพื่อจะพิมพ์ความเห็น

  • A learning a day
  • A Smart Bear
  • AddyOsmani.com
  • AddyOsmani.com (AddyOsmani.com)
  • Adwyat Krishna
  • Adwyat Krishna (Adwyat Krishna)
  • Ahmad Shadeed (Ahmad Shadeed)
  • All That is Solid
  • André Staltz
  • Ars Technica
  • Astral Codex สิบ (Astral Codex Ten)
  • Atoms vs Bits
  • AVC
  • AVC (AVC)
  • Basic Apple Guy
  • Ben Thompson
  • Benedict Evans
  • Blog – storytelling with data
  • Built For Mars
  • Caleb Porzio
  • Christian Heilmann
  • Christian Heilmann (Christian Heilmann)
  • Christopher C
  • Chun Tian (binghe)
  • Codrops
  • Cold Takes
  • Cold Takes (Cold Takes)
  • Daily Infographic
  • Dan Luu
  • Daniel Lemire's blog
  • David Amos
  • David Perell
  • David Walsh Blog
  • Derek Sivers
  • Derek Sivers (Derek Sivers)
  • Desvl
  • Devon's Site
  • Digital Inspiration
  • DKB Blog
  • dropsafe
  • dropsafe (dropsafe)
  • DSHR
  • Dunk
  • DYNOMIGHT
  • eagereyes
  • Endless Metrics
  • Engadget
  • Engadget (Engadget)
  • Entitled Opinions
  • Exception Not Found
  • Experimental History
  • Farnam Street
  • Fed Guy
  • Fed Guy (Fed Guy)
  • Felix Krause
  • Florent Crivello
  • FlowingData
  • FlowingData (FlowingData)
  • Free Mind
  • Full Stack Economics
  • Funny JS
  • Future A16Z
  • Glassnode Insights
  • Glassnode Insights (Glassnode Insights)
  • Hacker News (Hacker News)
  • Hacker News Daily
  • Hacker News Daily (Hacker News Daily)
  • Hacker Noon (Hacker Noon)
  • Harvard Health
  • Harvard Health (Harvard Health)
  • Human Who Codes
  • Hunter Walk
  • Infographics – Cool Infographics
  • Information is Beautiful
  • Irrational Exuberance
  • Jacob Kaplan-Moss
  • Jakob Greenfeld
  • James Sinclair
  • Jason Fried
  • Jeff Kaufman
  • Jeff Kaufman (Jeff Kaufman)
  • Joel on Software
  • John Resig
  • John's internet house
  • Johnny Rodgers
  • Julia Evans
  • Julian.com
  • Kevin Cox
  • Kevin Norman
  • KK – Cool Tools
  • KK – Recomendo
  • KK – The Technium
  • KK – The Technium (KK – The Technium)
  • KK – เครื่องมือสุดเจ๋ง (KK – Cool Tools)
  • KK – แนะนำ (KK – Recomendo)
  • Krishna
  • Lee Robinson
  • Lines and Colors
  • Lyn Alden – Investment Strategy
  • MakeUseOf (MakeUseOf)
  • Martin Fowler
  • Mobilism Forums
  • More To That
  • Morgan Housel
  • Morgan Housel (Morgan Housel)
  • My Super Secret Diary
  • NASA Astronomy Picture
  • Neckar's New Money
  • News Letter
  • Nick Whitaker
  • Nicky's New Shtuff
  • nutcroft
  • Paul Graham
  • Penguin Random House
  • Philip Walton
  • Phoenix's island
  • Pivotal
  • Product Hunt
  • Prof Galloway
  • Psyche
  • Python Weekly
  • Python Weekly (Python Weekly)
  • Quanta Magazine
  • Rachel
  • Rachel (Rachel)
  • Real Life
  • Riccardo Mori
  • Riccardo Mori (Riccardo Mori)
  • Sasha
  • Science & technology
  • Science current issue
  • Scott Hanselman's Blog
  • Sébastien Dubois
  • Sébastien Dubois (Sébastien Dubois)
  • Secretum Secretorum
  • Seth's Blog
  • Shu Ding
  • Sidebar
  • SignalFire
  • Simon Willison's Weblog
  • Simons Foundation
  • Singularity HUB
  • SLIME MOLD TIME MOLD
  • Slyar Home
  • Spencer Greenberg
  • Stay SaaSy
  • Stephen Malina
  • Stephen Wolfram Writings
  • Strange Loop Canon
  • Stratechery
  • Tech Notes
  • TechCrunch
  • TechCrunch (TechCrunch)
  • The Commonplace
  • The Intrinsic Perspective
  • The Latest in Hearing Health | HeardThat
  • The Rabbit Hole
  • The Verge
  • The Verge (The Verge)
  • The Wall Street Journal (The Wall Street Journal)
  • TLDR Newsletter
  • Tom's blog
  • Tomasz Tunguz
  • Tomasz Tunguz (Tomasz Tunguz)
  • Troy Hunt
  • twitter via [email protected] on Inoreader
  • Tychlog
  • Uncharted Territories
  • Visual Capitalist
  • Visual.ly (Visual.ly)
  • Visualising Data
  • Vitalik Buterin
  • Vitalik Buterin (Vitalik Buterin)
  • Weichen Liu
  • What's New
  • Works in Progress
  • Workspaces
  • Writing
  • Xe's Blog
  • xkcd.com
  • xkcd.com (xkcd.com)
  • Yihui Xie
  • Yihui Xie (Yihui Xie)
  • yuzu (yuzu)
  • Zoran Jambor
  • กฤษณะ (Krishna)
  • กลยุทธ์ (Stratechery)
  • การแสดงข้อมูล (Visualising Data)
  • ข้อมูลมีความสวยงาม (Information is Beautiful)
  • ความคิดเห็นที่มีสิทธิ์ (Entitled Opinions)
  • ความอุดมสมบูรณ์อย่างไม่มีเหตุผล (Irrational Exuberance)
  • คัดสรรสมอง (Brain Pickings)
  • จดหมายข่าว (News Letter)
  • จดหมายข่าว TLDR (TLDR Newsletter)
  • จอห์นนี่ ร็อดเจอร์ส (Johnny Rodgers)
  • จาค็อบ แคปแลน-มอสส์ (Jacob Kaplan-Moss)
  • จิตใจ (Psyche)
  • จูเลีย อีแวนส์ (Julia Evans)
  • ชีวิตจริง (Real Life)
  • ซาช่า (Sasha)
  • ดักลาส วาเก็ตตี้ (Douglas Vaghetti)
  • ดินแดนที่ไม่จดที่แผนที่ (Uncharted Territories)
  • ตัวชี้วัดที่ไม่มีที่สิ้นสุด (Endless Metrics)
  • ตากระตือรือร้น (eagereyes)
  • ทรอย ฮันท์ (Troy Hunt)
  • ทวิตเตอร์แปล
  • ทั้งหมดที่เป็นของแข็ง (All That is Solid)
  • ธรรมดา (The Commonplace)
  • นักพัฒนาภาคปฏิบัติ (The Practical Developer)
  • นักเศรษฐศาสตร์ (Enonomist)
  • นักเศรษฐศาสตร์ (The Economist)
  • นักเศรษฐศาสตร์พิมพ์ (Enonomist Print)
  • นายทุนทัศนศิลป์ (Visual Capitalist)
  • นิตยสาร Quanta (Quanta Magazine)
  • บล็อก – การเล่าเรื่องด้วยข้อมูล (Blog – storytelling with data)
  • บล็อก DKB (DKB Blog)
  • บล็อกของ Daniel Lemire (Daniel Lemire's blog)
  • บล็อกของ David Walsh (David Walsh Blog)
  • บล็อกข้อมูล | เดอะการ์เดียน (Datablog | The Guardian)
  • บันทึก Mad Ned (The Mad Ned Memo)
  • บ้านอินเทอร์เน็ตของจอห์น (John's internet house)
  • พอล เกรแฮม (Paul Graham)
  • พื้นฐาน Apple Guy (Basic Apple Guy)
  • พื้นที่ทำงาน (Workspaces)
  • ภาวะเอกฐานฮับ (Singularity HUB)
  • มหึมา (Colossal)
  • มากกว่านั้น (More To That)
  • มาร์ติน ฟาวเลอร์ (Martin Fowler)
  • มีอะไรใหม่ (What's New)
  • มุมมองภายใน (The Intrinsic Perspective)
  • มูลนิธิไซม่อน (Simons Foundation)
  • ยาคอบ กรีนเฟลด์ (Jakob Greenfeld)
  • รูปภาพดาราศาสตร์ของนาซ่า (NASA Astronomy Picture)
  • ล่าสินค้า (Product Hunt)
  • ลิน อัลเดน – กลยุทธ์การลงทุน (Lyn Alden – Investment Strategy)
  • ลูกจันทน์เทศ (nutcroft)
  • วันแห่งการเรียนรู้ (A learning a day)
  • วิทยาศาสตร์ & เทคโนโลยี (Science & technology)
  • วิทยาศาสตร์ปัญหาปัจจุบัน (Science current issue)
  • ศ.กัลโลเวย์ (Prof Galloway)
  • สมาร์ทแบร์ (A Smart Bear)
  • สัญญาณไฟ (SignalFire)
  • หลุมกระต่าย (The Rabbit Hole)
  • อนาคต A16Z (Future A16Z)
  • อะตอมกับบิต (Atoms vs Bits)
  • อาส เทคนิค (Ars Technica)
  • อินโฟกราฟิก – อินโฟกราฟิกสุดเจ๋ง (Infographics – Cool Infographics)
  • อินโฟกราฟิกรายวัน (Daily Infographic)
  • อเล็กซ์ ทูเร็ค (Alex Turek)
  • ฮันเตอร์วอล์ค (Hunter Walk)
  • เงินใหม่ของเนคคาร์ (Neckar's New Money)
  • เจสัน ฟรายด์ (Jason Fried)
  • เดวิด เอมอส (David Amos)
  • เดอะการ์เดียน (Guardian)
  • เดอะการ์เดียน (The Guardian)
  • เทคโนโลยีเสพติด (Engadget)
  • เบน ทอมป์สัน (Ben Thompson)
  • เบเนดิกต์ อีแวนส์ (Benedict Evans)
  • เศรษฐศาสตร์เต็มกอง (Full Stack Economics)
  • เส้นและสี (Lines and Colors)
  • เหวยเฉินหลิว (Weichen Liu)
  • แคนนอนวงแปลก (Strange Loop Canon)
  • แถบด้านข้าง (Sidebar)
  • แรงบันดาลใจดิจิทัล (Digital Inspiration)
  • แอตแลนติก (The Atlantic)
  • โซรัน จัมโบร์ (Zoran Jambor)
  • ใช้ประโยชน์จาก (Make Use Of)
  • ไดอารี่สุดยอดของฉัน (My Super Secret Diary)
  • ไดโนไมท์ (DYNOMIGHT)
  • ไม่พบข้อยกเว้น (Exception Not Found)
  • ไม่มีหมวดหมู่

ทวิตเตอร์แปล

#ยูเครน️ (ค้นหาด้วย Twitter) (#Ukraine️ (Twitter search)) arxivblog (arxivblog) Brett Winton (Brett Winton) Cathie Wood (Cathie Wood) GeekWire (GeekWire) Parag Agrawal (Parag Agrawal) Peter Thiel (Peter Thiel) Steph Smith (Steph Smith) The New York Review of  หนังสือ (The New York Review of Books) Vitalik Buterin (Vitalik Buterin) กีคไวร์ (GeekWire) ช่องของ Durov (Durov's Channel) ทหารเรือ (Naval) ทิมคุก (Tim Cook) ทิม คุก (Tim Cook) นาวาล (Naval) นเรนทรา โมดี (Narendra Modi) บิลเกตส์ (Bill Gates) มาร์ค เกอร์มัน (Mark Gurman) มาร์ค เกอร์แมน (Mark Gurman) สตีฟ สมิธ (Steph Smith) อีลอน มัสก์ (Elon Musk) เคธี่ วูด (Cathie Wood) เบรตต์ วินตัน (Brett Winton) เรย์ ดาลิโอ (Ray Dalio) โจ ไบเดน (Joe Biden) ไวทาลิก บิวเทริน (Vitalik Buterin)

  • กุมภาพันธ์ 2023
  • มกราคม 2023
  • ธันวาคม 2022
  • พฤศจิกายน 2022
  • ตุลาคม 2022
  • กันยายน 2022
  • สิงหาคม 2022
  • กรกฎาคม 2022
  • มิถุนายน 2022
  • พฤษภาคม 2022
  • เมษายน 2022
  • มีนาคม 2022
  • กุมภาพันธ์ 2022
©2023 คนไทยมองโลก | Design: Newspaperly WordPress Theme