12 คะแนน โดย GN⁺ 2024-07-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • SCALE เป็นชุดเครื่องมือเขียนโปรแกรม GPGPU ที่ทำให้สามารถคอมไพล์แอปพลิเคชัน CUDA แบบเนทีฟสำหรับ AMD GPU ได้
  • ไม่จำเป็นต้องแก้ไขโปรแกรม CUDA หรือระบบบิลด์ และกำลังพัฒนาการรองรับผู้ผลิต GPU เพิ่มเติมและ CUDA API เพิ่มเติมอยู่

ทำงานอย่างไร?

  • SCALE มีนวัตกรรมสำคัญหลายอย่างเมื่อเทียบกับโซลูชัน GPGPU ข้ามแพลตฟอร์มอื่น ๆ
    • รองรับโปรแกรม CUDA ได้โดยตรง โดยไม่ต้องพอร์ตไปเป็นภาษาอื่น ซึ่งรวมถึงกรณีที่โปรแกรมใช้ inline PTX asm ด้วย
    • คอมไพเลอร์ของ SCALE รองรับตัวเลือกบรรทัดคำสั่งและไวยากรณ์ CUDA แบบเดียวกับ nvcc จึงทำงานเป็นตัวแทนแบบดรอปอินได้
    • ปลอมตัวเป็นการติดตั้ง NVIDIA CUDA Toolkit ทำให้เครื่องมือและสคริปต์บิลด์เดิมยังคงทำงานได้ตามปกติ

มีการทดสอบกับโปรเจ็กต์ใดบ้าง?

  • มีการคอมไพล์โปรเจ็กต์ CUDA โอเพนซอร์สและรันทดสอบเพื่อยืนยันการทำงานของ SCALE
  • ขณะนี้โปรเจ็กต์โอเพนซอร์สต่อไปนี้ถูกรวมอยู่ในการทดสอบอัตโนมัติรายคืนและผ่านทั้งหมด
    • NVIDIA Thrust, Blender Cycles, AMGX, llama-cpp, faiss, xgboost, GOMC, stdgpu, hashcat

รองรับ GPU ใดบ้าง?

  • รองรับ GPU target ต่อไปนี้ และถูกรวมอยู่ในการทดสอบ Nightly
    • AMD gfx1030 (Navi 21, RDNA 2.0)
    • AMD gfx1100 (Navi 31, RDNA 3.0)
  • GPU target ต่อไปนี้ผ่านการทดสอบแบบแมนนวลชั่วคราวแล้ว และ "ดูเหมือนว่าจะใช้งานได้"
    • AMD gfx1010
    • AMD gfx1101
  • กำลังพัฒนาการรองรับ GPU ต่อไปนี้อยู่
    • AMD gfx900 (Vega 10, GCN 5.0)
  • หากต้องการการรองรับสถาปัตยกรรม AMD GPU บางรุ่นอย่างเร่งด่วน โปรดติดต่อทีมงาน

องค์ประกอบของ SCALE

  • คอมไพเลอร์ที่เข้ากันได้กับ nvcc ซึ่งสามารถคอมไพล์ CUDA แบบไวยากรณ์ nvcc สำหรับ AMD GPU ได้ รวมถึง PTX asm
  • การติดตั้งใช้งาน CUDA runtime และ driver API สำหรับ AMD GPU
  • ไลบรารี wrapper แบบโอเพนซอร์สที่มอบหมายให้ ROCm library ทำงานเพื่อให้บริการ API แบบ "CUDA-X" โดยไลบรารีอย่าง cuBLAS และ cuSOLVER ใช้วิธีนี้

SCALE ต่างจากโซลูชันอื่นอย่างไร

  • แทนที่จะเสนอวิธีใหม่ในการเขียนซอฟต์แวร์ GPGPU, SCALE ทำให้สามารถคอมไพล์โปรแกรมที่เขียนด้วยภาษา CUDA ซึ่งใช้งานกันอย่างแพร่หลาย ให้ทำงานบน AMD GPU ได้โดยตรง
  • SCALE ตั้งเป้าความเข้ากันได้กับ NVIDIA CUDA อย่างสมบูรณ์ โดยเชื่อว่าผู้ใช้ควรจะรองรับผู้ผลิต GPU หลายรายได้โดยไม่ต้องดูแลหลายโค้ดเบสหรือยอมลดทอนประสิทธิภาพ
  • ภาษาของ SCALE เป็น superset ของ NVIDIA CUDA และมีส่วนขยายทางภาษาแบบเลือกใช้ที่ช่วยให้การเขียนโค้ด GPU ง่ายและมีประสิทธิภาพมากขึ้นสำหรับผู้ใช้ที่ต้องการก้าวข้าม nvcc
  • SCALE ยังอยู่ระหว่างการพัฒนา หากมี API ที่ขาดหายไปจนขัดขวางการใช้งาน โปรดติดต่อทีมงาน เพื่อให้สามารถปรับลำดับความสำคัญในการพัฒนาได้

สรุปโดย GN⁺

  • SCALE เป็นชุดเครื่องมือสำคัญที่ช่วยให้คอมไพล์แอปพลิเคชัน CUDA แบบเนทีฟสำหรับ AMD GPU ได้
  • สามารถรันโปรแกรม CUDA เดิมบน AMD GPU ได้โดยไม่ต้องแก้ไข ซึ่งเป็นข้อได้เปรียบอย่างมากสำหรับนักพัฒนา
  • ด้วยเป้าหมายความเข้ากันได้อย่างสมบูรณ์กับ NVIDIA CUDA จึงเอื้อต่อการรองรับผู้ผลิต GPU หลายราย
  • โครงการนี้ยังอยู่ระหว่างพัฒนา และหาก API ที่ต้องการยังไม่มี ผู้ใช้สามารถติดต่อทีมพัฒนาเพื่อปรับลำดับความสำคัญได้
  • โปรเจ็กต์ที่มีความสามารถคล้ายกัน ได้แก่ ROCm และ HIP

1 ความคิดเห็น

 
GN⁺ 2024-07-16
ความคิดเห็นจาก Hacker News
  • มีความเห็นว่าหลายคนคิดว่า AMD ควรรองรับเลเยอร์แปล แต่สิ่งนี้เป็นไอเดียที่ไม่ดี

    • CUDA ไม่ได้ถูกออกแบบมาให้เป็นกลางต่อผู้ผลิต และ Nvidia อาจสร้างความยุ่งยากทั้งทางเทคนิคและกฎหมายได้
    • ตัวอย่างเช่น การรัน cuDNN หรือ cuBLAS บนสิ่งนี้อาจขัดต่อข้อตกลงใบอนุญาต
    • ไลบรารีของ Nvidia เหล่านี้จะกลายเป็นส่วนหนึ่งของขอบเขต API ที่ AMD ต้องนำไปพัฒนาใหม่และรองรับเอง
  • มีความเห็นว่าการไล่ตามความเข้ากันได้แบบ bug-compatible เป็นเรื่องโง่

    • ผู้ใช้ CUDA ที่สำคัญส่วนใหญ่เป็นโอเพนซอร์ส
    • AMD สามารถทำการรองรับโดยตรงในโปรเจ็กต์ต้นน้ำอย่าง pytorch หรือ llama.cpp ได้
    • ถ้ามีการรองรับแล้ว ชุมชนก็สามารถช่วยดูแลต่อได้
  • มีความเห็นว่าไม่เข้าใจว่าโค้ดที่พึ่งพาฮาร์ดแวร์อย่างมากจะสามารถ "ใช้งานได้เลย" บน AMD ได้อย่างไร

    • โค้ด CUDA ที่จริงจังส่วนใหญ่รับรู้ถึงขนาดของ register file และ shared memory, คำสั่ง wgmma, เลย์เอาต์หน่วยความจำและรีจิสเตอร์ของ tensor core ที่เหมาะสมที่สุด, คำสั่ง tensor memory accelerator เป็นต้น
  • ถ้าเป็นเรื่องจริงก็ถือว่าน่าประทับใจ แต่มีความเห็นว่าโปรเจ็กต์นี้ไม่ได้เป็นโอเพนซอร์ส และยังขาดรายละเอียดที่ชัดเจนว่าใช้งานอย่างไร

    • ไม่ค่อยเข้าใจว่าทำไมทุกวันนี้คนถึงคาดหวังให้โปรเจ็กต์เป็นโอเพนซอร์ส หรืออย่างน้อยก็เปิดให้ใช้ซอร์สได้
  • มีความเห็นว่าสาเหตุหลักของมูลค่าสูงของ Nvidia คือ AMD ไม่ลงทุนทำให้ GPU ของตัวเองมีประโยชน์ต่อ ML

    • AMD อาจกลัวมาตรการต่อต้านการผูกขาด หรืออาจมีบางอย่างในแนวทางด้านฮาร์ดแวร์ที่จำกัดความสามารถในการแข่งขัน
    • ดูเหมือนบริษัทจะพลาดรายได้ระดับหลายพันล้านดอลลาร์ทั้งในช่วงความต้องการ GPU สำหรับขุดคริปโตพุ่งสูง และช่วงความต้องการจากกระแส AI บูมในปัจจุบัน
  • มีความเห็นว่า AMD ทำพลาดมากจนอยากแสดงความยินดีกับโปรเจ็กต์แบบนี้

    • โดยเฉพาะบน Linux ที่น่าหงุดหงิดมากเมื่อฟีเจอร์ในโน้ตบุ๊กมีอยู่จริงทางกายภาพ แต่กลับใช้งานไม่ได้
  • เคยทำงานที่ Spectral Compute เมื่อหลายปีก่อน

    • เป็นทีมเทคนิคที่ฉลาดและมีความสามารถมาก
    • ตอนนั้นไม่ได้เจาะเป้าแค่ AMD เท่านั้น แต่ยังทำได้ดีกว่าทั้ง LLVM ptx backend พื้นฐานและ NVCC ด้วย
  • เคยเขียน CUDA มาบ้างเล็กน้อย

    • สงสัยว่าการตั้งค่าพื้นฐานสำหรับเขียนโค้ดให้การ์ด AMD คืออะไร
  • มีความเห็นว่าโปรเจ็กต์นี้ยอดเยี่ยมมาก

    • หวังว่าจะได้เห็น AMD แข่งขันกับ Nvidia โดยตรง
  • เป็นเรื่องดีที่มีหน้าอธิบายข้อจำกัดในปัจจุบัน แต่มีความเห็นว่าสิ่งที่คนส่วนใหญ่อธิบายว่าเป็น "CUDA" นั้นเป็นเพียงส่วนเล็ก ๆ ของความสามารถจริงของ CUDA

    • ถ้ามีตารางเปรียบเทียบฟีเจอร์ขั้นสูงอย่าง warp shuffle, atomic operations, DPX, TMA, MMA เป็นต้น ก็น่าจะดี
    • ตารางที่แมปคำสั่ง PTX ไปยังคำสั่งฝั่ง RDNA ที่สอดคล้องกัน หรือรายการคำสั่งที่ใช้จำลองแทนได้ จะเป็นสิ่งที่เหมาะที่สุด
  • มีความเห็นว่าเรื่องนี้อาจเป็นจริงได้เพราะในทางเทคนิคแล้วทำได้

    • การพาร์ส inline PTX แล้วแมปไปยัง AMDGPU น่าจะเป็นงานที่เจ็บปวดมาก
    • การทำให้ซอร์ส CUDA ที่ไม่ใช้ inline PTX ทำงานโดยมุ่งเป้า AMDGPU ก็คล้ายกับการแทนที่ด้วย HIP
    • รายละเอียดบางอย่างอาจชวนให้สงสัยได้ เช่น atomic model อาจไม่ตรงกัน หรือ Volta อาจมี instruction pointer model ที่ต่างออกไป
    • อย่างไรก็ตาม มันสามารถทำให้ถูกต้องได้
    • AMD จะไม่ทำสิ่งนี้
    • โดยทั่วไปแล้ว CUDA ไม่ใช่สิ่งที่ดีมากนัก และทีมกฎหมายน่าจะสร้างปัญหา
    • แต่คนอื่นยังทำได้มากพอแน่นอน