Iray using too much CPU instead of GPU

I am using DAZ Studio 4.10 and am trying to render a scene with just one actor without any backgrounds/prop/anything at all.

I looked at the CPU usage and it's around 98% while the GPU usage is ~1% and 10% on very occaisonal spikes.

I tried to look at the DAZ output on the render image log and it is

Rendering in NVIDIA Iray

 

Compiling Shaders - 0/1

Rendering image

Rendering...

Iray VERBOSE - module:category(IRAY:RENDER): 1.3 IRAY rend progr: CPU: Processing scene...

Iray VERBOSE - module:category(IRAY:RENDER): 1.9 IRAY rend progr: CUDA device 0 (GeForce GTX 970): Processing scene...

Iray VERBOSE - module:category(IRAY:RENDER): 1.8 IRAY rend stat : Geometry memory consumption: 35.4222 MiB (device 0), 0 B (host)

Iray VERBOSE - module:category(IRAY:RENDER): 1.8 IRAY rend stat : Texture memory consumption: 8.43222 GiB (device 0)

Iray VERBOSE - module:category(IRAY:RENDER): 1.8 IRAY rend stat : Lights memory consumption: 1.37891 KiB (device 0)

Iray VERBOSE - module:category(IRAY:RENDER): 1.8 IRAY rend stat : Material measurement memory consumption: 0 B (GPU)

Iray VERBOSE - module:category(IRAY:RENDER): 1.8 IRAY rend stat : PTX code (8.16 KiB) for sm52 generated in 0.0239s

Iray VERBOSE - module:category(IRAY:RENDER): 1.8 IRAY rend stat : Materials memory consumption: 155.34 KiB (GPU)

Iray VERBOSE - module:category(IRAY:RENDER): 1.4 IRAY rend stat : Native CPU code generated in 0.005s

Can anyone explain what might be the problem for DAZ to use CPU instead of GPU

My specs are i7-6700K, 16GB of Ram, GTX 970 with 4GB of VRAM.

Please let me know if you need anymore info. I'll do my best to provide it.

I am not super familiar with DAZ yet so any help is appreciated.

(PS: I'll try to format this better but I am not sure how to make spoilers to hide the iray output)

Comments

  • Richard HaseltineRichard Haseltine Posts: 102,865

    That's a lot of texture data, though it seems to be the figure before compression. Which character or maps are you using on the figure?

  • That's a lot of texture data, though it seems to be the figure before compression. Which character or maps are you using on the figure?

    Apologies because I don't understand what you mean by characters or map?

    I am using the standard Genesis 8 model and no extra textures (I think). The skin should be the default skin.

    Thanks a lot for the response. I didn't get any notification about it so I delayed in replying. I really appreciate it. :)

  • Richard HaseltineRichard Haseltine Posts: 102,865
    edited April 2018

    So you are literally loading the base figure and hitting render? That's very odd - I was able to render Genesis 3 figures in many cases on a 1GB card,  before upgrading to my current card a couple of years ago.

    If I load Genesis 8 female and render I get:

    2018-04-23 20:08:23.311 Iray VERBOSE - module:category(IRAY:RENDER):   1.5   IRAY   rend stat : Texture memory consumption: 549.001 MiB (device 0)

    Post edited by Richard Haseltine on
  • So I did just that right now. Loaded the genesis 8 figure and started rendering.

    I got the following output before the start of iterations.

    Rendering in NVIDIA Iray

     

    Compiling Shaders - 0/1

    Rendering image

    Rendering...

    Iray VERBOSE - module:category(IRAY:RENDER): 1.9 IRAY rend progr: CUDA device 0 (GeForce GTX 970): Processing scene...

    Iray VERBOSE - module:category(IRAY:RENDER): 1.6 IRAY rend progr: CPU: Processing scene...

    Iray VERBOSE - module:category(IRAY:RENDER): 1.2 IRAY rend stat : Geometry memory consumption: 15.6011 MiB (device 0), 0 B (host)

    Iray VERBOSE - module:category(IRAY:RENDER): 1.2 IRAY rend stat : Texture memory consumption: 857.682 MiB (device 0)

    Iray VERBOSE - module:category(IRAY:RENDER): 1.2 IRAY rend stat : Lights memory consumption: 196 B (device 0)

    Iray VERBOSE - module:category(IRAY:RENDER): 1.2 IRAY rend stat : Material measurement memory consumption: 0 B (GPU)

    Iray VERBOSE - module:category(IRAY:RENDER): 1.2 IRAY rend stat : Materials memory consumption: 98.0469 KiB (GPU)

    Iray VERBOSE - module:category(IRAY:RENDER): 1.4 IRAY rend stat : Native CPU code generated in 5.11e-007s

    DAZ is still only using the CPU (with 99%) even though I have more than enough VRAM for this.

    PS: As a side it seems that I was using a custom model (from the shop) which I thought would be the same as Genesis 8 but it apparently has its own skin (? am i right ?). How do I know if it using its own skin?

    Can I compres these textures? They look pretty good but can I make DAZ make them a bit smaller so that I can actually render something super fast?

    Thanks as always. smiley

  • JD_MortalJD_Mortal Posts: 760
    edited April 2018

    You are using both.. if the video card fails... it will say it failed.

    Windows does not accurately report "GPU Use"... The WDDM drivers are "new". They are essentially showing you what percent of the GPU-core is being used, of "what it is able to monitor"...

    That fancy split-views of the individual "types" of processing... 3D 2D, Video, etc.. is literally only months old. That was never a "thing" before. Give them a year or two, and they will fake the numbers to what you think they should be... https://en.wikipedia.org/wiki/Windows_Display_Driver_Model

    They do not monitor CUDA-cores or Phys-X raw calculations, because those do not go through the WDDM drivers. Those are a hardware-level access to the components, done below windows drivers. (In the shadows, essentially.) Windows is simply monitoring what IT is being told, that you are doing, through windows calls, itself.

    CUDA cores are only a small percent of the GPU chips. The majority of the GPU is made for "Direct-X" and "OpenGL" rendering. Pipelines, multi-threaded processing, memory-management, and some dedicated "shortcuts" for fast game-drawing frame-rates. CUDA is essentially RAW MATH PROCESSING, which DX and GL use to "help" in the process of doing those 3D-Fast calculations. For rendering, we are doing the opposite... We are using CUDA to do ALL the calculations, for "accurate" images, not "fast shortcuts", to create a rendering. The only part of DX or GL that we use, is to draw the output to the screen. That is the 1% to 10% you see.

    GL and DX, vs CUDA... Look at the GL display port... that is "fast shortcuts"... If the lighting was "baked on the images" for the objects, it would look better, like a video-game, but also look fake, as it would not display the correct shadows and only display low-quality shadow-maps and ugly transparent surfaces.

    Your CPU, on the other hand, has a better tie to "windows"... IRAY does not directly access the CPU, as it has to "maintain a windows connection", to operate in windows. (The GPU can be talked to directly, because windows has an isolated "ownership" of specific memory chunks and threads, when it needs it. That is also why windows grinds to a hault, in some instances, as it has to wait for the GPU to become free. If windows was doing all the talking, it would split the load for the most desired app, which windows thends to greedily "take" for itself, except in games.)

    So, though you are not using 100% OF your CPU, you are using 100% of the available "processing power", of whatever is available to be done. The GPU will never report things like that, because it honestly can't. It runs at 100%, or it is idle... There is only two states of "busy". Unlike windows, which can throttle and adjust loads. It would not make sense for a GPU to do anything half as fast, 50%. It always tries to do everything 100% speed, whatever that is, it is always 100%, even if it is half-clock-speed. (For heat/power throttling.)

    Post edited by JD_Mortal on
  • JD_Mortal said:

    You are using both.. if the video card fails... it will say it failed.

    Windows does not accurately report "GPU Use"... The WDDM drivers are "new". They are essentially showing you what percent of the GPU-core is being used, of "what it is able to monitor"...

    That fancy split-views of the individual "types" of processing... 3D 2D, Video, etc.. is literally only months old. That was never a "thing" before. Give them a year or two, and they will fake the numbers to what you think they should be... https://en.wikipedia.org/wiki/Windows_Display_Driver_Model

    They do not monitor CUDA-cores or Phys-X raw calculations, because those do not go through the WDDM drivers. Those are a hardware-level access to the components, done below windows drivers. (In the shadows, essentially.) Windows is simply monitoring what IT is being told, that you are doing, through windows calls, itself.

    CUDA cores are only a small percent of the GPU chips. The majority of the GPU is made for "Direct-X" and "OpenGL" rendering. Pipelines, multi-threaded processing, memory-management, and some dedicated "shortcuts" for fast game-drawing frame-rates. CUDA is essentially RAW MATH PROCESSING, which DX and GL use to "help" in the process of doing those 3D-Fast calculations. For rendering, we are doing the opposite... We are using CUDA to do ALL the calculations, for "accurate" images, not "fast shortcuts", to create a rendering. The only part of DX or GL that we use, is to draw the output to the screen. That is the 1% to 10% you see.

    GL and DX, vs CUDA... Look at the GL display port... that is "fast shortcuts"... If the lighting was "baked on the images" for the objects, it would look better, like a video-game, but also look fake, as it would not display the correct shadows and only display low-quality shadow-maps and ugly transparent surfaces.

    Your CPU, on the other hand, has a better tie to "windows"... IRAY does not directly access the CPU, as it has to "maintain a windows connection", to operate in windows. (The GPU can be talked to directly, because windows has an isolated "ownership" of specific memory chunks and threads, when it needs it. That is also why windows grinds to a hault, in some instances, as it has to wait for the GPU to become free. If windows was doing all the talking, it would split the load for the most desired app, which windows thends to greedily "take" for itself, except in games.)

    So, though you are not using 100% OF your CPU, you are using 100% of the available "processing power", of whatever is available to be done. The GPU will never report things like that, because it honestly can't. It runs at 100%, or it is idle... There is only two states of "busy". Unlike windows, which can throttle and adjust loads. It would not make sense for a GPU to do anything half as fast, 50%. It always tries to do everything 100% speed, whatever that is, it is always 100%, even if it is half-clock-speed. (For heat/power throttling.)

    Thanks a bunch, boss. :D

    How do I know if it is actually using it? Is there any software which can let me know of this?

  • Richard HaseltineRichard Haseltine Posts: 102,865

    GPU-Z www.techpowerup.com

  • Thanks very much for this fascinating thread. I had just such a similar inquiry in my head but wasn't sure what to ask. I took a copy of this so I can refer to the details and think over. It also gives hints as to things I can read up on in future to increase my understanding.

  • JMCarriganJMCarrigan Posts: 179

    Somewhere along the line I was told not to even use the CPU.  Under Render Settings with Iray chosen as render engine there is the ADVANCED tab.  Under that uncheck CPU. What is left Checked in mine is GeForce GTX 10606GB. It is also checked below and CPU unchecked.  I see that OPTIX Prime Acceleration is also unchecked.  I don't know or remember anything said about that.  I'm going to test that.  I remember this particular scene took a good lone while last night.  Luckily I had other things to do.  I'm going to Check the OptiX Prime Acceleration.

    I'll follow up on that.

  • JMCarriganJMCarrigan Posts: 179

    Having OptiX Prime Acceleration CHECKED  really IS rendering this render intensive scene much FASTER.

Sign In or Register to comment.