ผู้ใช้ลินุกซ์หลายๆ คนอาจจะรอคอยให้ NVIDIA เปิดซอร์สของไดรเวอร์ GPU บนลินุกซ์สักที วันนี้ ความฝันได้เข้าใกล้ความจริงอีกขั้น เมื่อ NVIDIA เริ่มปล่อยซอร์สของไดรเวอร์ GPU ของตัวเองในฝั่งเคอร์เนลแล้ว
โค้ดดังกล่าวมาพร้อมกับไดรเวอร์รุ่น R515 (ยังเป็นเบต้าอยู่) และยังไม่รวมถึงโค้ดในฝั่ง userspace ที่จะยังปิดซอร์สต่อไป ไดรเวอร์ฝั่งเคอร์เนลตัวใหม่นี้สามารถใช้ร่วมกับจีพียูตระกูล Turing เป็นต้นไป (นั่นคือตั้งแต่ GTX 16xx และ RTX 20xx) เนื่องจากไดรเวอร์ใช้ GPU System Processor (GSP) ซึ่งเป็นชิปใหม่ที่รับผิดชอบการเริ่มการทำงานและการบริหารจัดการจีพียู
NVIDIA กล่าวว่าไดรเวอร์ตัวนี้ "พร้อมใช้งานจริง" ("production" quality) สำหรับจีพียูฝั่งศูนย์ข้อมูลแล้ว แต่ยังไม่เสถียรพอสำหรับจีพียูฝั่งเดสก์ท็อปและเวิร์คสเตชัน แต่สัญญาว่าจะพัฒนาให้มีความเสถียรและฟีเจอร์เทียบเท่าไดรเวอร์เคอร์เนลตัวเดิม (ที่ปิดซอร์ส) ต่อไป
ผู้ใช้สามารถเลือกระหว่างการติดตั้งไดรเวอร์ของ NVIDIA ว่าจะใช้ไดรเวอร์เคอร์เนลตัวเดิมหรือตัวใหม่ สำหรับในดิสโทรต่างๆ NVIDIA ระบุว่า Canonical (Ubuntu), SUSE และ Red Hat จะ package ไดรเวอร์เคอร์เนลตัวใหม่ในดิสโทรของตัวเองในอนาคต
ในแง่ของการส่งโค้ดกลับเข้าสู่โครงการต้นน้ำลินุกซ์ NVIDIA ระบุว่าเนื่องจากโค้ดบางส่วนถูกพัฒนาขึ้นให้ใช้ร่วมกันระหว่าง OS จึงทำให้ดีไซน์ของโค้ดแตกต่างจากลินุกซ์ และยังไม่สามารถส่งโค้ดกลับไปได้ แต่ NVIDIA มีแผนจะทำงานร่วมกับชุมชนและพาร์ทเนอร์เพื่อดูว่าจะส่งโค้ดกลับไปได้อย่างไร ในระหว่างนี้โครงการ Nouveau ที่เป็นไดรเวอร์โอเพนซอร์สเดิมสามารถอ้างอิงโค้ดนี้เพื่อพัฒนาฟีเจอร์ใหม่ๆ ตามได้ (เช่นเรื่องของ power management ที่เป็นปัญหามาอย่างยาวนาน)
สำหรับเหตุผลที่ NVIDIA เปิดซอร์สออกมาครั้งนี้ เว็บไซต์ Phoronix คาดว่าน่าจะมาจากความนิยมของจีพียู NVIDIA ในศูนย์ข้อมูล เนื่องจากการเปิดโค้ดทำให้องค์กรใหญ่ๆ สามารถตรวจสอบโค้ดที่รันในเครื่องของตัวเองได้ อีกทั้งการที่เป็นโค้ดโอเพนซอร์สจะทำให้สามารถใช้ฟีเจอร์ของลินุกซ์บางอย่างที่สงวนไว้สำหรับโค้ดโอเพนซอร์สเท่านั้น (เช่นระบบตรวจวัดอุณหภูมิของการ์ด หรือ DMA-BUF)
ถือเป็นก้าวที่สำคัญของ NVIDIA ที่จะเริ่มสนับสนุนโอเพนซอร์ส แม้ว่าจะช้าไปหน่อยและยังไม่มีโค้ดในฝั่ง userspace แต่ก็เป็นสัญญาณที่ดีว่า NVIDIA จะเป็นมิตรกับโอเพนซอร์สมากขึ้นในอนาคต
โค้ดใหม่นี้ใช้สัญญาอนุญาต MIT ควบคู่กับ GPLv2 ผู้ที่สนใจสามารถเข้าไปศึกษาโค้ดได้ที่ GitHub
เพิ่มเติม: ทั้งนี้ เนื่องจากชิป GSP จำเป็นต้องมีเฟิร์มแวร์เป็นของตัวเอง คุณ Hector Martin (ปัจจุบันเป็นนักพัฒนาหลักของ Linux สำหรับ Apple M1) ได้ออกมาให้ความเห็นว่า โค้ดส่วนใหญ่ที่เคยอยู่ในไดรเวอร์เคอร์เนล น่าจะถูกย้ายไปยังเฟิร์มแวร์ของ GSP จึงทำให้สามารถเปิดโค้ดได้ ซึ่งหมายความว่า NVIDIA ก็ไม่ได้เปิดโค้ด "ไดรเวอร์" เสียทีเดียว ผมเห็นว่ามุมมองนี้น่าสนใจดี จึงขออนุญาตเพิ่มเติมในภายหลังครับ
So NVIDIA "released" their kernel driver as open source. By which they mean, they moved most of it to firmware and made the open source driver call into it. There are almost 900 functions implemented in the 34MB firmware, give or take, from what I can see.Broadcom vibes...
— Hector Martin (@marcan42) May 12, 2022
Comments
ให้เดาคือเก็บสิ่งปฏิกูลในโค้ดจนพอดูได้แล้วเลยเปิดออกมา เท่านี้ศาสดาของเราก็ไม่ give f*** ให้ Nvidia แล้ว
Hmm เพิ่งเห็นมุมมองนี้หลังจากเขียนข่าวไปแล้ว คือมีผู้ตั้งข้อสังเกตว่า แท้จริงแล้วโค้ดส่วนใหญ่ถูกย้ายออกจากโค้ดไดรเวอร์ไปอยุ่ในเฟิร์มแวร์ของ GSP แทน คือไม่ได้เปิดโค้ดอะไรมากมายเลย
ผมควรจะเพิ่มมุมมองนี้เข้าไปในข่าวมั้ยครับ?
ตามนั้นครับ!
// หันไปมองที่ linux firmware
ก็ปกติดีนะครับ แต่เพิ่มไว้ในข่าวก็ไม่เสียหายอะไรครับ