คิว Direct / Compute / Copy จำนวนกี่คิวที่มีความหมาย


11

DirectX 12 แสดงคิวคำสั่งสำหรับกราฟิก (เรียกว่า "Direct") คำนวณหรือคัดลอกงาน ในแง่ของฟังก์ชั่นที่ให้มาแต่ละชุดสุดยอดของชุดต่อไปนี้ สเปคระบุว่าคิวคำสั่งที่สามารถดำเนินการควบคู่กันไปโดยอุปกรณ์ อย่างไรก็ตาม API ไม่ได้ จำกัด จำนวนคิวคำสั่งในทางใดทางหนึ่ง (อย่างน้อยฉันก็ไม่ได้ตระหนักถึงข้อ จำกัด ใด ๆ )

เห็นได้ชัดว่าผู้ขายต่างกันจัดการเรื่องนี้แตกต่างกันมาก:

  • Intel ระบุไว้ในงานนำเสนอล่าสุด (สไลด์ 23) ซึ่งปัจจุบัน GPU ของพวกเขาไม่สามารถจัดการกับกราฟิกและการคำนวณแบบขนานและเครื่องถ่ายเอกสารมีปริมาณงานที่ไม่มากนัก พวกเขาไม่แนะนำให้ใช้กราฟิก / คิวการคำนวณหลายตัว
  • เอเอ็มดีเริ่มต้นเมื่อนานมาแล้วในการโฆษณาการใช้งานคิว / "อะซิงโครนัสเชดเดอร์" โดยเริ่มจาก Mantle และคอนโซลคอนโซลปัจจุบัน นอกจากนี้ยังมีนักพัฒนาบางคน ( ตัวอย่าง ) ที่ยืนยันประสิทธิภาพที่เพิ่มขึ้นอย่างมีนัยสำคัญโดยการดำเนินการคำนวณและงานกราฟิกในแบบคู่ขนาน
  • เมื่อไม่นานมานี้มีความกังวลเกี่ยวกับ Nvidia ที่ไม่รองรับ shader แบบอะซิงโครนัสในฮาร์ดแวร์: การใช้กราฟิกแยกกันและคิวการคำนวณในคราวเดียวดูเหมือนจะทำให้สิ่งต่าง ๆ ช้าลงซึ่งบ่งชี้ถึงการจำลองไดรเวอร์ ในทางตรงกันข้ามการดำเนินการคัดลอกแบบขนานได้รับการสนับสนุนโดย CUDA เป็นเวลานานซึ่งทำให้ชัดเจนว่าเอ็นจิ้น DMA สามารถทำงานได้อย่างอิสระ

มีวิธีใดบ้างในการตัดสินใจรันไทม์หากการส่ง CommandLists ไปยัง CommandQueues หลายรายการนั้นมีความหมายแทนที่จะเป็น Single Command? (เนื่องจากกรณีในอดีตไม่เกี่ยวข้องกับค่าใช้จ่ายด้านวิศวกรรมมาก)

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


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

1
คำถามที่ดี ! ฉันยังรู้สึกว่ามันเป็นพิเศษที่จะได้รับความสมบูรณ์แบบในการคำนวณและแรเงาพร้อมกัน บางทีกำไรอาจเกิดขึ้นได้จากข้อเท็จจริงเดียวกันที่ทำให้การทำไฮเปอร์เธรดเร็วขึ้น การดำเนินการ interleaving เมื่อบางหน่วยงานไม่ว่างสำหรับคิวอื่น ๆ เช่น shaders อุดตันเนื้อหน่วยซึ่งไม่ได้ใช้โดยเวทีการคำนวณซึ่งตัวเองอุดตัน FPU หรือ DPU
v.oddou

อืมแย่เกินไป อาจจะ "นอกเหนือจากการตรวจสอบว่าใครเป็นผู้สร้าง GPU ไม่ใช่" นับเป็นคำตอบถ้าไม่มีมากกว่านั้น หลังจากอ่านเรื่องการตลาดของ AMD ทั้งหมดฉันดีใจที่ได้ยินว่าฉันไม่ได้อยู่คนเดียวด้วยความสับสน
Wumpf

1
คุณรู้เพียงแค่การยกน้ำหนักเล็กน้อยสู่ความสำคัญ (ที่จริงไม่สำคัญ) ของเรื่องนี้ PS4 SDK มีข้อผิดพลาดที่ไม่อนุญาตให้ปล่อยไปยังคิวอื่นนอกเหนือจากคิว 0 ฉันคิดว่าถ้ามันสำคัญมากมันจะได้รับการแก้ไขเร็วขึ้น
v.oddou

คำตอบ:


1

จัดส่งแอปพลิเคชันของคุณด้วยลำดับการเปรียบเทียบทดสอบแพลตฟอร์มจริง (คำตอบที่เป็นไปได้สำหรับคำถามมากมายที่ฉันเดาว่า ... )

ฉันสงสัยว่าประสิทธิภาพขึ้นอยู่กับว่าคุณใช้ฮาร์ดแวร์อย่างไร เนื่องจากฮาร์ดแวร์ไม่น่าจะเป็นเครื่องมือของแอปพลิเคชันของคุณย้อนหลังบอกคุณว่าจะทำอย่างไรฉันจะไปกับสิ่งที่ดูดีในการออกแบบของคุณ

"... คิวของคำสั่งสามารถเรียกใช้พร้อมกันโดยอุปกรณ์ ... "

คำหลักสามารถ ฉันไม่เห็นเหตุผลที่ผู้ขายรายใดจะทำให้เรื่องนี้แย่ลง ในที่สุดมันก็เป็นผู้ให้บริการแพลตฟอร์ม (Intel / AMD / Nvidia) ที่รับผิดชอบในการทำให้คุณเป็นคนขับที่ดีพอสำหรับคุณที่จะไม่พิจารณาเปลี่ยนผู้ขาย หากพวกเขามี "รู้ปัญหา" กับฟังก์ชั่นนี้ (ซึ่งไม่มีความหมายการทำงานประสิทธิภาพการทำงานเท่านั้น) จากนั้นพวกเขาก็ควรแก้ปัญหาโดยใช้สิ่งที่พวกเขารู้ ฉันหมายถึงการร้องไห้ออกมาดัง ๆ ทางเลือกคือสิ่งที่พวกเขานำไปใช้งานแล้ว การดำเนินการซิงโครนัส

ฮาร์ดแวร์นั้นเพียงพอสำหรับการพัฒนาขึ้นสำหรับเรา


GCN ของ AMD จะประมวลผลกราฟิกและคำนวณพร้อมกันแม้ว่าจะออกในคิวกราฟิก แต่โดยทั่วไปจะไม่ข้ามบัฟเฟอร์คำสั่งหลายรายการ (การเรียกใช้การวาดหลายครั้งอาจจะไม่สมบูรณ์ก็ตาม) ไดรเวอร์ (หรือแอปพลิเคชัน - ฉันคิดว่าใน DX12 หรือ Vulkan) ต้องตรวจสอบการอ้างอิงข้อมูลและบล็อกระหว่างการวาด (กราฟิก) และการจัดส่ง (คำนวณ) หากจำเป็น คิวคำสั่งหลายรายการอาจเป็นประโยชน์ถ้าคุณมีการคำนวณที่ไม่ตรงกันจากกราฟิก (เช่นฟิสิกส์สำหรับเฟรมถัดไป) แต่ฉันไม่มีประสบการณ์โดยตรงกับสิ่งนี้
Daniel M Gessel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.