Skip to content

บทสัมภาษณ์พิเศษ: Ian Buck ของ Nvidia พูดถึง GPGPU

    1651193043

    พบกับ Ian Buck แห่ง Nvidia

    ขอบคุณที่สละเวลาสนทนาในวันนี้ เริ่มจากพื้นฐานกันก่อน ทำไมไม่บอกผู้อ่านของเราสักเล็กน้อยเกี่ยวกับตัวคุณและสิ่งที่คุณทำที่ Nvidia ในตอนนี้ล่ะ

    ฉันเป็นผู้อำนวยการซอฟต์แวร์สำหรับ GPU Computing ที่ Nvidia เป้าหมายหลักของฉันคือการสร้างและพัฒนาแพลตฟอร์มการประมวลผล GPU ที่สมบูรณ์ ซึ่งรวมถึงซอฟต์แวร์ระบบ เครื่องมือสำหรับนักพัฒนา ทิศทางภาษาและคอมไพเลอร์ ไลบรารี แอปพลิเคชันและอัลกอริธึมเป้าหมาย ด้วยความช่วยเหลือจากทีมงานที่ยอดเยี่ยม เราพัฒนาทั้งซอฟต์แวร์สำหรับผู้ใช้ปลายทางและกำหนดทิศทางสำหรับการประมวลผล GPU ภายใน Nvidia

    ทำไมเราไม่เริ่มต้นจากจุดเริ่มต้น? ฉันคิดว่าความสนใจใน GPGPU ของคุณไม่ได้เริ่มต้นเมื่อคุณอายุ 5 ขวบ เหตุการณ์ที่ Princeton หรือ Stanford ทำให้คุณค้นพบความสนใจใน GPGPU เป็นอย่างไร

    ฉันตะลุยการประมวลผล GPU ในสมัยที่ Princeton ของฉัน ทดลองกับการพาความร้อนและการจำลองของไหลบนฮาร์ดแวร์กราฟิก ซึ่งในขณะนั้นคือ SGI O2 แม้ว่าสิ่งต่างๆ จะถูกจำกัดไว้มาก แต่ก็ยากที่จะหาเรื่อง

    ฉันเริ่มมองหาการประมวลผล GPU อย่างจริงจังในระหว่างการวิจัยระดับปริญญาเอกที่สแตนฟอร์ด ที่สแตนฟอร์ด ฉันและคนอื่นๆ ในชุมชนการวิจัยตระหนักว่าความก้าวหน้าตามธรรมชาติของกราฟิกที่ตั้งโปรแกรมได้คือวิวัฒนาการของ GPU ไปสู่โปรเซสเซอร์ที่ใช้งานทั่วไปมากขึ้น เราเขียนเอกสาร SIGGRAPH ฉบับแรกเกี่ยวกับการติดตามรังสีด้วยฮาร์ดแวร์ GPU ระดับ DX9 เพื่อช่วยพิสูจน์ประเด็นนี้ สิ่งที่สร้างแรงบันดาลใจให้กับงานนี้ก็คือตัวประมวลผลสินค้าโภคภัณฑ์นี้ ซึ่งมีอยู่ในพีซีของทุกคน ได้ปฏิบัติตามกฎหมายของมัวร์ที่รวมอัตราการเติบโตด้านประสิทธิภาพเข้าด้วยกัน ซึ่งเร็วกว่าซีพียูมาก สิ่งนี้ทำให้เกิดคำถาม: พีซีจะทำอะไรได้บ้างหากมีคำสั่งหลายขนาดที่มีแรงม้าในการประมวลผลมากกว่าในปัจจุบัน ตัวเปลี่ยนเกมโดยสิ้นเชิงสำหรับวิทยาการคอมพิวเตอร์เช่นเดียวกับการมองเห็นของคอมพิวเตอร์, AI, การขุดข้อมูลและกราฟิก

    บทบาทของคุณกับบรู๊คคืออะไร?

    หลังจากทำงานเกี่ยวกับความสามารถในการติดตามรังสีบน GPU แล้ว งานวิจัยของฉันที่สแตนฟอร์ดได้เปลี่ยนมาทำความเข้าใจรูปแบบการเขียนโปรแกรมที่เหมาะสมสำหรับการประมวลผลด้วย GPU ในขณะนั้น หลายๆ คนได้แสดงให้เห็นว่า GPU นั้นใช้งานได้ดีกับแอพพลิเคชั่นต่างๆ ที่หลากหลาย แต่ไม่มีเฟรมเวิร์กหรือโมเดลการเขียนโปรแกรมที่ดีว่าควรจะคิดว่า GPU เป็นอุปกรณ์ประมวลผลอย่างไร ในขณะนั้น จำเป็นต้องมีปริญญาเอกด้านคอมพิวเตอร์กราฟิกจึงจะสามารถพอร์ตแอปพลิเคชันไปยัง GPU ได้ ดังนั้นฉันจึงเริ่มโปรเจ็กต์ Brook โดยมีเป้าหมายในการกำหนดภาษาการเขียนโปรแกรมสำหรับการประมวลผลด้วย GPU ซึ่งแยกกราฟิกของ GPU ออกเป็นแนวคิดการเขียนโปรแกรมทั่วไปมากขึ้น แนวคิดการเขียนโปรแกรมพื้นฐานของ Brook คือ “สตรีม” ซึ่งเป็นชุดขององค์ประกอบข้อมูลที่ต้องการการทำงานที่คล้ายคลึงกัน ในที่สุดบรู๊คก็กลายเป็นวิทยานิพนธ์ระดับปริญญาเอกของฉันที่สแตนฟอร์ด 

    งานของคุณเริ่มต้นด้วย Merrimac สแตนฟอร์ดสตรีมมิ่งซูเปอร์คอมพิวเตอร์ สิ่งนี้แตกต่างจากบางอย่างเช่นเทสลาอย่างไร

    แนวคิดโมเดลการเขียนโปรแกรมของ Brook ใช้ได้กับ GPU มากกว่า ที่สแตนฟอร์ด เราได้ใช้โมเดลการเขียนโปรแกรม Brook ที่แตกต่างกันสองแบบ: แบบหนึ่งสำหรับ GPU อีกแบบสำหรับ Merrimac ซึ่งเป็นสถาปัตยกรรมการวิจัยที่พัฒนาขึ้นที่สแตนฟอร์ด แนวคิดมากมายที่ริเริ่มโดย Merrimac มีอิทธิพลต่อการปรับปรุง GPU สำหรับการประมวลผลทั่วไป นอกจากนี้ ควรสังเกตด้วยว่า Bill Dally ผู้เป็นผู้ตรวจสอบหลักของ Merrimac ที่ Stanford ปัจจุบันเป็นหัวหน้านักวิทยาศาสตร์ของ Nvidia 

    CUDA มีรากฐานมาจากเจลาโต้หรือไม่? การสำรวจทางวิชาการครั้งแรกของ GPGPU คืออะไร? การใช้งานเชิงพาณิชย์ครั้งแรกเป็นอย่างไร?

    ฉันเริ่ม CUDA ขณะทำวิจัยที่สแตนฟอร์ด Nvidia ให้การสนับสนุนการวิจัยของฉันเป็นอย่างดีและเห็นถึงศักยภาพในการเปิดใช้งานการประมวลผล GPU ในด้านฮาร์ดแวร์ของสิ่งต่าง ๆ ได้ดีขึ้น ฉันเข้าร่วมกับ Nvidia เพื่อเริ่มโครงการ CUDA ในปี 2548 ในขณะนั้น มีเพียงฉันและวิศวกรอีกคนหนึ่ง ตอนนี้เราได้ขยายโปรเจ็กต์ไปสู่องค์กรที่เป็นอยู่ในปัจจุบัน และเป็นส่วนประกอบหลักสำหรับ GPU ของ Nvidia ในปัจจุบัน

    www.gpgpu.org มีประวัติที่ดีของการประมวลผล GPU ย้อนหลังไปถึงปี 2002

    ในปัจจุบัน AMD ผลักดันให้ Brook เป็นภาษาโปรแกรมที่เลือกสำหรับ GPGPU ในขณะที่ Nvidia มี C พร้อมส่วนขยาย CUDA คุณจะเปรียบเทียบจุดแข็ง/จุดอ่อนของทั้งสองอย่างได้อย่างไร?

    เริ่มต้นที่ Nvidia เรามีโอกาสทบทวนการตัดสินใจด้านการออกแบบขั้นพื้นฐานของ Brook ซึ่งส่วนใหญ่ขึ้นอยู่กับสิ่งที่ฮาร์ดแวร์ระดับ DX9 สามารถทำได้ ข้อจำกัดสำคัญประการหนึ่งคือข้อจำกัดของโมเดลหน่วยความจำ ซึ่งโปรแกรมเมอร์ต้องแมปอัลกอริธึมกับรูปแบบการเข้าถึงหน่วยความจำที่ค่อนข้างจำกัด ด้วยส่วนขยาย C ที่มี CUDA เราผ่อนคลายข้อจำกัดเหล่านั้น โดยพื้นฐานแล้ว โปรแกรมเมอร์ได้รับเธรดจำนวนมากและสามารถเข้าถึงหน่วยความจำได้ตามที่เขาหรือเธอต้องการ การปรับปรุงนี้ เช่นเดียวกับการปรับปรุงอื่นๆ ทำให้เราสามารถใช้ความหมายภาษา C เต็มรูปแบบบน GPU ได้

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x