October 26, 2023 Yen Lily

Liệu Unreal Engine hay Twinmotion có thể dùng đa GPUs cho Path Tracer không?

Kể từ Unreal Engine 5.1 và Twinmotion 2023.1, hai phần mềm này đã hỗ trợ sử dụng đa GPUs để giúp thực hiện path tracer. Trên thực tế, việc bạn có thể sử dụng đa GPUs để thực hiện một số tính năng đặc biệt trong Unreal Engine đã có từ trước rồi; tuy nhiên, gần đây nó mới được nhiều người dùng biết đến rộng rãi. Điều này khiến iRender muốn thảo luận với bạn về câu hỏi mà tôi nhận được từ rất nhiều người dùng của mình: liệu Unreal Engine hoặc Twinmotion có thể dùng đa GPUs cho Path Tracer không?

Kết xuất path tracer là gì?

Path tracer là chế độ kết xuất progressive trong Unreal Engine và Twinmotion, giúp bạn tạo ra hình ảnh chất lượng cao, sử dụng ánh sáng chính xác và Global Illumination (GI). Nó có chung kiến trúc và tính năng với ray-tracing, nhưng code lại khác nhau, giảm thiểu những hạn chế của tính năng thời gian thực và tạo ra kết xuất với hình ảnh thực tế và chuẩn sản xuất.

Cách bật hỗ trợ đa GPUs trong path tracer trong Unreal Engine và Twinmotion?

Để bật hỗ trợ đa GPUs trong path tracer trong Unreal Engine và Twinmotion, bạn phải đảm bảo rằng mình có:

        • Windows 10 phiên bản 2004 hoặc mới hơn
        • Card đồ họa giống nhau (2 card hoặc hơn) hỗ trợ NVLink
        • Cầu nối NVLink

Số lượng card đồ họa và series sẽ quyết định cầu nối NVLink. Bạn nên biết rằng một số card đồ họa hỗ trợ NVLink, một số card thì không. Một số dòng card đồ họa có thể kết nối tối đa bằng một NVLink (chủ yếu là các card consumer như RTX 2000, RTX 3000; card workstation như RTX A5000, RTX A6000), một số có thể hoạt động với nhiều cầu nối NVLink hơn (chủ yếu là card enterprise).

Với phần lớn người dùng Unreal Engine và Twinmotion, tốt nhất nên sử dụng consumer card và workstation card cho phép hai card được kết nối bằng một cầu nối NVLink.

Xin lưu ý rằng hai card đồ họa khác nhau sẽ không hỗ trợ chạy path tracer hoặc bất kỳ chế độ kết xuất nào trong UE hoặc Twinmotion. Và các card đồ họa kiến trúc mới Ada Lovelace như dòng RTX 4000 hay RTX 6000 Ada không hỗ trợ NVLink nữa.

Kích hoạt đa GPUs trong Unreal Engine

Để bật hỗ trợ đa GPUs trong UE, bạn nên làm theo hướng dẫn sau:

        • Kết nối các GPUs bằng cầu nối NVLink và bật SLI trong NVIDIA Control Panel.
        • Dùng lệnh -MaxGPUCount=N, trong đó N là số lượng GPU có sẵn. Ví dụ: -MaxGPUCount=2.
        • Khi trình chỉnh sửa editor mở ra, bạn sử dụng biến r.PathTracing.MultiGPU 1 để bật hỗ trợ đa GPUs. Bạn cũng có thể thêm biến này vào tệp DefaultEngine.ini nằm trong [Unreal Engine Root]/Engine/Config dưới [/Script/Engine.RendererSettings].

Kiểm tra Output log sau khi trình chỉnh sửa editor mở ra để đảm bảo chế độ đa GPU đang hoạt động. Tìm LogD3D12RHI: Enabling multi-GPU with 2 nodes.

Kích hoạt đa GPUs trong Twinmotion

Trước tiên, bạn setup NVIDIA SLI cho GPU trong máy tính của mình. Sau đó, bạn cần kích hoạt đa GPUs trong Twinmotion như sau:

        • Trong menu, đi tới phần Edit > Preferencesđể mở bảng Preferences
        • Trong tab Settings, dưới Path Tracer, hãy tick vào Multi-GPU.

Liệu Unreal Engine hoặc Twinmotion có thể dùng đa GPUs cho path tracer không?

Bây giờ chúng ta đến với câu hỏi được đưa ra ở đầu bài viết: Liệu Unreal Engine hoặc Twinmotion có thể dùng đa GPUs cho path tracer không?

Rất nhiều người đến với chúng tôi và hỏi câu hỏi này. Khó có thể nói rằng hệ thống đa GPUs thực sự giúp tăng tốc độ kết xuất trong UE hay Twinmotion, bởi cách thức hoạt động của 2 phần mềm này vẫn còn rất lạ với chúng tôi.

Một trong những khách hàng UE 5.1 của tôi đã chia sẻ trải nghiệm của anh ấy với RTX A6000 cũng như RTX 4090 đơn và RTX 3090 kép của chúng tôi với NVLink. Đây là một dự án lớn dùng path tracing, với nhiều textures 8k, vì vậy nó cần VRAM lớn khoảng 48GB.

Tuy nhiên, RTX A6000 của anh ấy, bằng một cách nào đó, lại không thể kết xuất dự án vì nó sử dụng đến 50GB VRAM cho cảnh quay. Nó dẫn đến sự cố crash. Đó là lý do tại sao anh ấy tìm kiếm sự trợ giúp từ iRender vì chúng tôi cung cấp NVLink trên máy chủ RTX 3090 kép.

Lần thử đầu tiên của anh với RTX 3090 kép đã không thành công. Dự án có thể kết xuất tốt trên một GPU, nhưng với GPU thứ hai, mặc dù đã được kết nối bằng NVLink, lại dường như không hoạt động. Trong khi GPU đầu tiên sử dụng hết 24GB thì GPU thứ hai chỉ sử dụng một GB và dường như không làm gì cả. Nếu anh ấy kết xuất với một cảnh ít phức tạp hơn thì nó sẽ render nhanh hơn.

Sau đó, anh ấy đã cố gắng liên hệ với kỹ thuật viên của Unreal Engine để được trợ giúp và có vẻ như là anh ấy đã thiếu một dòng lệnh nào đó. Sau khi sửa xong, anh ấy đã có thể sử dụng GPU thứ hai. Cả hai GPU đều được sử dụng và sử dụng VRAM của riêng chúng. Tuy nhiên, nó không diễn ra suôn sẻ như mong đợi. Sau đó, anh ấy gặp phải sự cố crash GPU driver, do đó anh ấy đã điều chỉnh TdrDelay và TdrDdiDelay registry keys nhưng vẫn không giải quyết được vấn đề. Sự cố crash chỉ xảy ra trong quá trình warmup khung render, và chỉ khi anh ấy sử dụng hỗ trợ đa GPUs. Nếu sử dụng một GPU thì chẳng có sự cố nào cả. Có vẻ như NVLink và phần mềm không thể hoạt động bình thường vì nhiều lý do.

Vì sử dụng một RTX 3090 là chưa đủ nên anh ấy đã thử sử dụng server  RTX 4090 đơn của chúng tôi. Trên server RTX 4090 đơn, thời gian render nhanh hơn A6000 và RTX 3090. Và nó không gặp sự cố crash khi hết bộ nhớ chuyên dụng. Cuối cùng, anh ấy đã sử dụng RTX 4090 đơn cho hầu hết các cảnh quay của mình.

Trên giấy thì người ta nói rằng việc sử dụng nhiều GPU có thể cải thiện hiệu suất kết xuất của path tracer từ 50% đến 200%. Nhưng nó lại không như vậy trong trường hợp khách hàng của chúng tôi. Đối với cảnh nhỏ thì render nhanh hơn, nhưng bạn có cần NVLink cho cảnh nhỏ không? KHÔNG.

Đối với cảnh lớn vượt quá VRAM chuyên dụng của một GPU, thì phần mềm bắt đầu hoạt động kỳ lạ. Mặc dù UE crash trên 48GB VRAM của máy cá nhân A6000 của khách hàng của tôi, nhưng nó lại có thể chạy trên 30GB VRAM được chia sẻ thông qua NVLink kết nối RTX3090 kép. Tuy nhiên, nó không chạy ổn định đâu. Nó sẽ bị crash, hoặc phần mềm hoặc trình điều khiển. Điều này xảy ra nếu cảnh của anh ấy sử dụng hơn 24GB của một GPU. Có vẻ như NVLink trong trường hợp này không giúp tăng gấp đôi VRAM hiện có mà nó khiến cả hai GPU tự render cùng một cảnh. Và điều đó có vẻ quá sức để UE có thể xử lý đúng cách, có thể nó chưa được tối ưu hóa cho việc đó.

Tôi tự hỏi liệu đó có phải là lý do khiến Nvidia không tiếp tục phát triển NVLink nữa với thế hệ card đồ họa mới của họ như RTX 4090 hay 6000 Ada hay không. Để kết luận, thì tôi vẫn không nghĩ rằng nhiều GPU kết nối qua NVLink hoặc SLI sẽ giúp ích 100% trong trường hợp dùng path tracer. Nếu cảnh của bạn có thể được tối ưu hóa và sử dụng trong 24GB VRAM của RTX 4090 thì đó là trường hợp tốt nhất. Nếu bạn muốn sử dụng RTX 3090 kép với NVLink, chúng tôi vẫn cung cấp nhưng đừng mong đợi nhiều ở nó.

Kết luận

Hiện tại, viễn cảnh các phần mềm kết xuất thời gian thực (như UE, Twinmotion hay bất kỳ ứng dụng nào như Lumion, D5 Render, Enscape) có thể sử dụng nhiều GPU vẫn còn xa lắm. Một số tính năng của chúng có thể làm được điều đó nhưng nó rất hạn chế và thể hiện nhiều bất ổn. Để đảm bảo bạn xử lý mượt mà và ít vấn đề nhất có thể, hãy cân nhắc sử dụng một GPU và tối ưu hóa cảnh của bạn.

 

Nguồn: docs.unrealengine.com, twinmotion.com
, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Yen Lily

Hi everyone. Being a Customer Support from iRender, I always hope to share and learn new things with 3D artists, data scientists from all over the world.
Contact

INTEGRATIONS

Autodesk Maya
Autodesk 3DS Max
Blender
Cinema 4D
Houdini
Maxwell
Nvidia Iray
Lumion
KeyShot
UE4
Twinmotion
Redshift
Octane
And many more…

iRENDER TEAM

MONDAY – SUNDAY
9:00 AM – 8:00 PM
Hotline: 0916 806 116
Zalo: 0916 806 116
Skype: iRender Support
Email: [email protected]
CÔNG TY CỔ PHẦN CÔNG NGHỆ IRENDER VIỆT NAM
MST: 0108787752
Office: 5/82 Dịch Vọng Hậu, Cầu Giấy, Hà Nội.

Contact
0916806116