Nvidia ได้เปิดตัว CUDA-oxide ซึ่งเป็นคอมไพเลอร์สำหรับภาษา Rust ไปเป็น CUDA แล้ว

บริษัท โนวิดา การตีพิมพ์ การเปิดตัวชุดเครื่องมือครั้งแรก คิวดาออกไซด์ซึ่งช่วยให้คุณสามารถสร้างเคอร์เนล GPU แบบขนานในภาษา Rust ได้ CUDA SIMT (คำสั่งเดียว หลายเธรด) โปรเจกต์นี้ช่วยให้คุณคอมไพล์โค้ด Rust โดยใช้ระบบประเภทมาตรฐานได้ รูปแบบการเป็นเจ้าของ Rust ในรูปแบบคำสั่งโดยตรงสำหรับการประมวลผลในเครื่องเสมือน CUDA PTX (nvidia.com) (การประมวลผลแบบขนานของเธรด) โดยไม่ต้องใช้ภาษาเฉพาะโดเมน (DSL) และการเชื่อมต่อระดับกลาง

โค้ดของชุดเครื่องมือนี้เขียนด้วยภาษา Rust และ จัดจำหน่ายโดย ภายใต้ใบอนุญาต Apache 2.0 เวอร์ชันแรกที่เผยแพร่จัดอยู่ในประเภทเวอร์ชันอัลฟ่าเริ่มต้น

ชุดเครื่องมือประกอบด้วย:

  • ส่วนสร้างโค้ดสำหรับคอมไพเลอร์ rustc ที่ช่วยให้คุณสามารถคอมไพล์ฟังก์ชันด้วย "#[เคอร์เนล]แปลงเป็นเคอร์เนล GPU แบบขนานในรูปแบบ CUDA PTX การคอมไพล์ใช้ห่วงโซ่การแปลงมาตรฐานตามเฟรมเวิร์ก rustc พลีรอน: สนิม → MIR → Pliron IR → LLVM IR → PTX
  • ระบบแบบครบวงจรสำหรับการประกอบชิ้นส่วนต่างๆ ที่ทำงานบนระบบโฮสต์และบน GPU ซึ่งสรุปได้เป็นการเรียกใช้คำสั่ง "cargo oxide build" และ "cargo oxide run"
  • ชุดของแนวคิดเชิงนามธรรมของ Rust ที่สามารถใช้ในเคอร์เนลฝั่ง GPU ได้ ตัวอย่างเช่น มีฟังก์ชันสำหรับการจัดทำดัชนี หน่วยความจำที่ใช้ร่วมกันและการใช้งานบาเรียร์ การดำเนินการอะตอมิก และการซิงโครไนซ์กลุ่มเธรด TMA (nvlabs.github.io) (ตัวเร่งหน่วยความจำเทนเซอร์) สามารถเรียกใช้การเชื่อมโยงสำหรับคำสั่งระดับต่ำที่เฉพาะเจาะจงกับสถาปัตยกรรมแบล็กเวลล์ได้ (ตัวอย่างเช่น การดำเนินการเมทริกซ์แบบขยาย)
  • สร้างแพ็กเกจที่มีส่วนประกอบรันไทม์ CUDA บนโฮสต์ ซึ่งช่วยให้สามารถจัดการหน่วยความจำ เรียกใช้เคอร์เนลบน GPU และโต้ตอบกับฟังก์ชันบน GPU แบบอะซิงโครนัสได้
  • รวมตัวอย่างโค้ดหลักที่แสดงให้เห็นถึงคุณสมบัติต่างๆ เช่น การจัดการเวกเตอร์ การคูณเมทริกซ์ (GEMM) การดำเนินการอะตอมิก การประมวลผลแบบอะซิงโครนัส และการบูรณาการไลบรารี แมธดีเอ็กซ์โดยใช้เจเนริกและโคลเชอร์ เพื่อโต้ตอบกับคอร์ CUDA ใน C++/CCCL

เคอร์เนล GPU ถูกสร้างขึ้นด้วยภาษา Rust ปกติ (ไม่ใช่ภาษาถิ่น) แต่จะถูกเรียกใช้งานในสภาพแวดล้อมนั้น ไม่มีมาตรฐาน และสามารถใช้ฟังก์ชันจากไลบรารีได้เท่านั้น libcore และนามธรรมเฉพาะทางของ Rust ที่กล่าวถึงก่อนหน้านี้ โดยไม่สามารถเข้าถึงไลบรารีมาตรฐานของ Rust (libstd) ประเภทที่รองรับ ได้แก่ ประเภทพื้นฐาน (u8..u64, f32, f64, bool), โครงสร้าง, การแจงนับ, ทูเปิล, อาร์เรย์ ([T; N]) และสไลซ์ (&[T]), ตัวดำเนินการ match / if / if let, ลูป for และ while, ตัววนซ้ำ (.iter(), .enumerate()), โคลเชอร์ และเจเนริกส์ ประเภทที่ไม่รองรับ ได้แก่ ประเภท String, Vec และ Box, มาโคร format!, panic! และ println!, อ็อบเจ็กต์ Trait และฟังก์ชันไลบรารีมาตรฐานที่ใช้งานผ่านการเรียกใช้ระบบปฏิบัติการ (การจัดการไฟล์, อินพุต/เอาต์พุต และการทำงานของเครือข่าย)

ใช้ได้ ระบบความปลอดภัยของ CUDA core ใน Rust มีสามระดับ ได้แก่ การป้องกันระบบประเภท (ปลอดภัย) การใช้บล็อกที่ไม่ปลอดภัย และการเข้าถึงคำสั่งฮาร์ดแวร์ระดับต่ำ ประสิทธิภาพของการใช้งานการคูณเมทริกซ์บน CUDA-oxide (GEMM SoL) บน GPU B200 สูงถึง 868 ล้านล้านการดำเนินการต่อวินาที ซึ่งคิดเป็น 58% ของประสิทธิภาพของไลบรารีที่ได้รับการปรับแต่งแล้ว คิวบลาส.

ที่มา: linux.org.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster