FP = Floating Point = เลขทศนิยม ครับ
Announcement
Collapse
No announcement yet.
เกมพริก Investigated Fable Legend DX12 Benchmark Async Compute Not Working on Maxwell
Collapse
X
-
16 32 64 มันเป็นจำนวน bit ครับ ยิ่งเยอะความแม่นยำมันก็สูงขึ้น แต่มันก็ต้องแลกมาด้วยเวลาที่นานขึ้นน่ะแหละOriginally posted by best0032001 View Postแล้ว ทำไมมันไมี 16 32 64 ด้วยไม่เข้าใจ
แล้วทำไม แต่ละรุ่น มีไม่เท่ากัน งง
งั้นใครมีน้อยกว่าก็ไม่ดีดิ แบบ GTX 9XX ย้อมแมวขายเหรอ ไม่นะเพราะซื้อมาแล้ว
เหมือนสมองคนปกติ เจอโจทย์เลขน้อยๆ หูยย ง่ายเลยปุ๊ปปุั๊ปๆเสร็จ พอมาเจอโจทย์เลขเยอะๆก็นั่งคำนวณกันขี้จะแตกแต่ละที อารมณ์นั้น
ส่วนที่ทำไมมีไม่เท่ากัน อันนี้มันก็แล้วแต่ dev จะเลือกแล้วล่ะครับ อย่างเกมเขามองว่ามันใช้ไม่เกิน 32 bit
(เหมือน AMD เปลี่ยนจาก core มาเป็น module แทนนั่นแหละ share fpu กันใน module แทนทีจะมีทุก core)
nvidia มันเลยเลือกทิ้ง(แต่ยังมี) 64 ใน maxwell ฝั่ง geforce เพราะแบรนด์ gaming หนิอันนี้ไม่ใช่ compute แบบ quadro ไรพวกนั้น
มันเลยใส่มาให้ใช้แบบแชร์ๆกันใน cluster กลายเป็นแต่ละ smm มี FP64 แค่ 4 ตัวแต่ FP32 128 ตัว = อัตรา 1(FP64 )/32(FP32)
ทีนี้พอพื้นที่มันไม่เสียไปกับ FP64 ที่เกมไม่ได้ใช้ ก็เอามาอัด FP32 แทน เลยเกิดมาเพื่อเกมเลยอะไรประมาณนี้ แบ่งเป็นสองตลาดง่ายๆ
สรุป ไม่เกี่ยวกับการย้อมแมวเลยครับ
Comment
-
Originally posted by mathburn View Postครับ ขออภัยครับ ผมอ่านมานานละลืมเลยเอาเท่าที่จำได้แต่ก็ยังจำผิด อัพเดทไม่ทันท่านมาตอบต่อ
ส่วน FP64 เหมือนจะยังมี แต่ต้องเป็นชิพตัวใหญ่สุด(รึเปล่า?)
http://www.anandtech.com/show/9059/t...tan-x-review/2
ส่วน FP เกี่ยวข้องกับการที่ไม่มี Async Compute ผมก็ว่ายังไม่น่าจะเกี่ยวกัน queue กับ FP capability นี่ก็ยังไม่รู้เกี่ยวกันยังไง
เพิ่มเติม:
Maxwell มันก็ยังมีอยู่นะ FP64 ในอัตรา 1 FP64/32 FP32
Comment
-
FP16 ,32 , 64 เป็นความละเอียดของเลขจำนวนทศนิยม ยิ่งบิตสูงช่วงตัวเลขยิ่งกว้าง ความแม่นยำยิ่งสูง แต่เวลาคำนวณ ยิ่งบิตเยอะก็ยิ่งช้า
FP32 จะมีค่าประมาณ -3.4 x 10 ยกกำลัง 38 +3.4 x 10 ยกกำลัง 38 ความแม่นยำของทศนิยม 7 หลัก
FP64 จะมีค่าในช่วง +-5.0 x 10 ยกกำลัง 324 ถึง +-1.7 x 10 ยกกำลัง 308 ความแม่นยำทศนิยมอยู่ระหว่าง 15-16 หลัก
FP16 อาจจะไม่ค่อยได้ใช้กันเพราะเก็บตัวเลขได้น้อย อาจจะเหมาะกับบาง Application ที่ใช้ค่าน้อยๆเน้นความเร็ว
FP32 สำหรับเกมนี่เหลือเฟือเพราะเราไม่ต้องการคำนวณที่ละเอียดขนาดนั้น ค่า 32Bit จึงเป็นค่าที่ไม่มากไม่น้อยเกินไปการ์ดที่เล่นเกมส่วนใหญ่เลย Focus ประสิทธิภาพที่ตัวนี้
FP64 เหมาะกับการคำนวณทางวิทยาศาสตร์หรือทางการเงินการธนาคารที่ต้องการช่วงตัวเลขกว้างๆความแม่นยำสูง
ส่วน AsyncCompute ไม่ได้เกี่ยวอะไรกับ FP16/32/64 เลย มันเป็นเทคนิคการทำ Multi Threading อย่างนึงเท่านั้นเอง
คำว่า Async ก็คือ Asynchronous คือไม่พร้อมสัมพันธ์กัน นั่นก็คือเราสามารถทำงานหลายๆอย่างในทีเดียว โดยที่คำสั่งต่างๆไม่ต้องรอกัน ทำให้เราใช้งาน GPU/CPU ได้เต็มประสิทธิภาพมากขึ้น
แต่ทั้งนี้ต้องขึ้นอยู่กับว่าเอาไปทำงานอะไร ถ้าเป็นงานที่ต้องรอคำตอบกัน จะใช้ไม่ได้เช่นมีคำสั่ง
1. A+B = C
2. D = C+5;
อันนี้จะเห็นว่า ถึง GPU จะมี Core เยอะมากเท่าไหร่ก็ตาม ก็ไม่สามารถคำนวณสองคำสั่งนี้ให้เร็วขึ้นได้ เพราะคำสั่งที่ 2 ต้องรอคำตอบจากคำสั่งที่ 1 ดังนั้นจึงใช้ได้แค่ Core เดียว
แต่ถ้าเป็น
1. A+B = C
2. D = E +5
แบบนี้ทั้งสองคำสั่งใช้เทคนิค AsyncCompute ได้ เพราะไม่ได้พึงคำตอบกันและกัน ทั้งสองคำสั่งจึงสามารทำงานพร้อมกันได้
ดังนั้นเราจึงใช้ 2 Core ทำงานพร้อมๆกันได้ งานจึงเสร็จเร็วขึ้น
ในวงการเกม AsyncCompute น่าจะเอาไปใช้กับระบบ Physic เช่นเมื่อเกิดระเบิด หินแต่ละก้อนจะคำนวณทิศทางและความเร็วของมันเอง โดยไม่ต้องสนใจหินก้อนอื่น แบบนี้เป็นต้น
ในด้านการเขียนโปรแกรม Asynchronous Call นี้มันเป็นเทคนิคทางด้าน Software ดังนั้น Hardware ไหนที่มี Thread ให้ใช้งานมากกว่า 1 Hardware Thread (หรือมากกว่า 1 Core) ย่อมสามารถใช้เทคนิค AsyncCompute ได้ทั้งสิ้น
ทุกวันนี้ที่มีข่าวโครมๆจาก Oxide ว่า Nvidia ไม่รองรับ ผมก็ยังงงๆว่ามันจะเป็นไปได้เหรอ ผมว่าก็แค่ DX12 API มันยังเชื่อมต่อกับ Driver Nvidia ไม่สมบูณร์แค่นั้นเอง ผมว่าแค่ Nvidia Update Driver ก็น่าจะใช้ได้ละ AsyncCompute เนี่ย
เพราะตอนที่เขียนโปรแกรม CUDA เค้าก็ใช้กันได้นะไอ้ Asynchronous Call เนี่ย
แถมมีโปรแกรมเมอร์บางคนลองเขียนโปรแกรมทดสอบเอง เค้าก็ว่า Nvidia ใช้ AsynchCompute ได้ดีนะ แถมทำได้ดีกว่า AMD ซะด้วย จากข่าวนี้
https://www.reddit.com/r/nvidia/comm...vidia_cant_do/
แต่ยังไงเรื่องคำนวณของ DX12 ผมยังถือหาง AMD อยู่ว่าน่าจะทำได้ดีกว่า Nvidia เพราะดูจาก Architecture Diagram แล้ว AMD มันตรงไปตรงมา มี ACE มาเป็น Hardware Thread ตรงๆ ต่างกับของ Nvidia ที่มี Gigathread Engine มาบัง
ซึ่งตัวนี้มันทำ Dynamic Parallelism ได้ คือมันแตก Thread เพิ่มให้เอง มันเหมาะกับ DX11 ที่มี Thread น้อยๆ แล้ว GPU มาแตก Thread ให้อีกเพื่อเพิ่มประสิทธิภาพ แต่พอ DX12 โปรแกรมเป็น Multithread ตั้งแต่ต้นอาจทำให้เกิด Overhead ได้
Dynamic Parallelism
Kepler GK110 introduced a new architectural feature called Dynamic Parallelism, which allows the GPU to create additional work for itself. A programming model enhancement leveraging this feature was introduced in CUDA 5.0 to enable threads running on GK110 to launch additional kernels onto the same GPU.
SMM brings Dynamic Parallelism into the mainstream by supporting it across the product line, even in lower-power chips such as GM107. This will benefit developers, because it means that applications will no longer need special-case algorithm implementations for high-end GPUs that differ from those usable in more power constrained environments.
http://devblogs.nvidia.com/parallelf...-architecture/Last edited by kaitom; 5 Oct 2015, 18:20:26.
Comment
)
รอ next gen
Comment