SimTenero - Iray Memory Assistant [Commercial]

simtenerosimtenero Posts: 383
edited March 2016 in Daz PA Commercial Products

Hello All,

Iray Memory Assistant has released today:

http://www.daz3d.com/iray-memory-assistant

Iray Memory Assistant(IMA) is a utility that can help you understand how different assets in your scene are impacting your computer and video card memory usage.  When a scene requires more memory than your system has available, Iray renders slow down dramatically, so knowing which items are doing what can be a big help.

The store page and screenshots contain all of the details, but I wanted to spin up a thread in case anyone had any questions.  Also, please note the "fine print" on the store page.  I want to be sure to point out that the estimates the tool provides are just that, estimates based on common usage scenarios.  The tool can only account for what's going on in Daz Studio, while other apps running on your system and the OS itself can still have an impact.  That said, over literally hundreds of test scenarios, the estimates tend to be within +/- 10% of actual use.  That's none too shabby given the number of variables at play smiley.

If you have any questions at all, please feel free to ask!

 

*** A note to DS 4.8 users:  The update is live, let me know if you have any issues.

Post edited by simtenero on
«134

Comments

  • RenomistaRenomista Posts: 921
    edited March 2016

    Thanks for that!

    Having 2 970s with a lot of speed but not so much RAM, GPU RAM consumption is the one thing I battle with most in DAZ.

    I allways wondered why there no such function in DAZ.

    Bought and DL this Morning!

    I can't wait to try it out tonight, I have some #+$%@& Scenes that only waits to be inspected by this....

    Post edited by Renomista on
  • simtenerosimtenero Posts: 383
    Renomista said:

    Thanks for that!

    Having 2 970s with a lot of speed but not so much RAM, GPU RAM consumption is the one thing I battle with most in DAZ.

    I allways wondered why there no such function in DAZ.

    Bought and DL this Morning!

    I can't wait to try it out tonight, I have some #+$%@& Scenes that only waits to be inspected by this....

    Awesome!!  Definitely let me know how it works for you.  I've tested this thing literally hundreds of times with around 20 different scenes on 2 computers (one with a 6GB gpu, the other a 2GB), but I'm really curious to know how it performs out in the wild.  A couple of the more enlightening things I discovered along the way were Normal Map usage and SubD usage.  Not that its surprising that those contribute to memory use, but just seeing how many assets have multiple normal maps, and how many assets have 1 or 2 levels of SubD by default was super helpful in getting my scene sizes under control.

  • thd777thd777 Posts: 943
    edited March 2016

    Useful little tool. The vram usage report look quite accurate (I am comparing with the excellent tool that is part of Octane). The only issue I found so far is that it seems to get confused if there are multiple GPUs (I have three). It reports available vram for the weakest card which is not used for rendering at all (it just drives one of my two monitors). It looks like it can't tell which GPUs are used by IRAY. (And I did not see any way to set this in the script). For me that's not a big deal as I can use the provided info to estimate the vram use for the other cards.

    Ciao

    TD

    Post edited by thd777 on
  • simtenerosimtenero Posts: 383
    thd777 said:

    Useful little tool. The vram usage report look quite accurate (I am comparing with the excellent tool that is part of Octane). The only issue I found so far is that it seems to get confused if there are multiple GPUs (I have three). It reports available vram for the weakest card which is not used for rendering at all (it just drives one of my two monitors). It looks like it can't tell which GPUs are used by IRAY. (And I did not see any way to set this in the script). For me that's not a big deal as I can use the provided info to estimate the vram use for the other cards.

    Ciao

    TD

    Thanks for the feedback!  You make a good point, I will look into the possibility of adding an option for which GPU to base the estimates on.  I had tried to pull that automagically from the render settings but had some trouble doing it that way, but maybe a checkbox or something to indicate "hey, base your numbers on my 970, not my 740" would be good :-)  I'll see what I can do!

  • thd777thd777 Posts: 943
    simtenero said:

    ... , but maybe a checkbox or something to indicate "hey, base your numbers on my 970, not my 740" would be good :-)  I'll see what I can do!

    That would be most excellent!

    Thanks

    TD

     

  • simtenerosimtenero Posts: 383

    Just a heads up, I've been contacted about an issue with the script not loading in 4.8.  Has anyone else seen this?  I'm working on it right now and will figure out a fix!

  • simtenerosimtenero Posts: 383

    A user was very generous in helping me test out a fix for the error in DS 4.8.  I've submitted the fix to Daz and I'll be sure to post here as soon as I get word its available.

  • KurzonDaxKurzonDax Posts: 228

    @simtenero I have to say, I was blown away when I saw this pop up today.  Awesome idea!  It will be jumping in to my cart in the morning (payday, lol). I am curious about something (and forgive me if your promos covered this and I didn't catch it).  Do the estimates account for texture compression?

  • simtenerosimtenero Posts: 383
    KurzonDax said:

    @simtenero I have to say, I was blown away when I saw this pop up today.  Awesome idea!  It will be jumping in to my cart in the morning (payday, lol). I am curious about something (and forgive me if your promos covered this and I didn't catch it).  Do the estimates account for texture compression?

    That's a very good question!  The answer is "yes, but..." cheeky.  The estimates provided for texture use are a function of the pixel count (resolution) and the average compression ratio of Iray's "high threshold" compression, derived form testing with complex (i.e., not highly compressible) sample textures..  The key there being the "average" ratio rather than the "actual" ratio.  Texture compressibility can vary a lot depending on the complexity of the image.  The only way to know for sure how compressible a given image is would be to either analyze its color and chroma info, or to actually compress it using a similar algorithm to Iray's.  I considered doing this in IMA, but it ends up being a very slow process with not much benefit.  Most asset creators tend to pack as much stuff into each texture as possible (a good carry-over practice from game design, where fewer textures is always better), which means most textures you'll encounter will be similarly compressible, so the averages tend to produce just about as accurate a result as the actuals.

    Sorry, I spent way too many hours testing this stuff, so I jump at any excuse to talk about it laugh

    The TL;DR is, yep, the estimate for both system and gpu memory used by textures is based on their compressed sizes (using Iray's compression), rather than their RAW size or their disk size.  I hope that made at least a little sense!

  • jdavison67jdavison67 Posts: 646
    edited March 2016

    Where is the detailed .pdf user guide mentioned on the product page? 

    I can't find it in the .zip file.

    Post edited by jdavison67 on
  • simtenerosimtenero Posts: 383

    It should be in the root folder of the zip file or if you've already got it installed, in the root of the content directory its installed to.  The filename is IMA-UserGuide.pdf.  Let me know if you can't find it, I definitely want to make sure you've got the guide for reference!

  • simtenero said:

    It should be in the root folder of the zip file or if you've already got it installed, in the root of the content directory its installed to.  The filename is IMA-UserGuide.pdf.  Let me know if you can't find it, I definitely want to make sure you've got the guide for reference!

    It is in the updated zip in the ReadMe's folder, not in the original release.

  • RenomistaRenomista Posts: 921

    If you installed per DIM (status incl. Update) it is in

     

    <My DAZ 3D Library>\ReadMe's\24290_iray-memory-assistant.pdf

  • RenomistaRenomista Posts: 921

    Could you comment on how you get to the Numbers

    In my System i have 3 GPUs with 4GB Each

    1 GT 730 4GB

    2 GTX 970 4GB each (actually 3,5+0,5GB but according to DAZ_Spooky al 4 are usable for DAZ/Iray)

    Monitors are attached to an onboard non Nvidia GPU

    Your tool shows me Available VRAM 3370MB whichs sound a bit low for 4GB Cards

    Iray Workspace is shown as 804MB

    If I hide everything in a scene (full HD resolution) I get shown:

    Resolution VRAM as 67,50

    SubD and Texture Vram shows both 0

    S0 3370-804-67,5 = 2498,5

    But the tools show me 1855,5 Remaining VRAM

    Am I missing something?

     

  • simtenerosimtenero Posts: 383
    edited March 2016

    The answer is a little bit sciencey and a little bit fudgey ( I wish there was a better word for that :-P ).

    Daz checks your available VRAM when it first loads, my guess, by querying Nvidia's SMI tool (I've validated the Daz figures against SMI and they seem to line up).  That's where I'm getting the available RAM figure (you can also find this in your log.txt). What that means in practice is that the gpu driver has reserved ram for other purposes.  That can be other apps, or the OS itself (as of Win7, parts of the GUI can actually be rendered on a GPU, which is why that info is included in their performance rating).  It's difficult to know how much of that memory is actively being used, just reserved by another application, or contains obsolete info that could be wiped if needed.  But for all intents and purposes, what's left is the RAM Daz and Iray have available to work with (if they request more RAM than that, it's possible the driver can free some up, but there's no way to be sure, so I have to stick with the number the driver reports).  That's the psuedo-sciencey bit.

    Now for the fudge factor.  There are more variables contributing to memory consumption than the tool can account for.  I attempted to fold in every figure I could reach via script, but not all of it is accessible.  Without the data to be more scientific about getting those numbers, I had to perform lots of comparison tests on different computers and different scene sizes to arrive at some averages.  For one, I just straight up add 150MB to every estimate, because there was very consistently use of about 100 to 200MB of untraceable vram in every test scene.  Second, Daz itself is using some VRAM for its OpenGL preview window.  It correlates roughly to the amount of geometry and the number of textures in the scene, but it also includes some overhead for each node (figures, bones, etc) and material in the scene.  The amount of overhead varies a lot depending on the contents of each node.  Getting the exact number would require querying details on every component in the scene, which would dramatically slow the tool down.  If these were big numbers,  it would be worth the trade-off, but we're talking small fractions of a meg per component, and it didn't seem worth the slow down to get more precise +/= 1 or 2% in the final estimate. So I'm once again using averages from testing to guestimate the additional overhead.  I opted not to include those in the readout because I don't consider them as reliable as the texture and geometry figures and wouldn't want people to put too much weight into them.

    Coming up with a decent estimate turned out to be a pretty complex process, which you can probably gather from the examples above :-).  I'm a bit limited by what information I can coax out of Daz and Iray.  And of course, the OS is a different story.  Accessing all of that would require an external application and that was definitely getting beyond the scope of my humble Daz script.

    Sorry for the long winded answer, hopefully it adds a little clarity :-)

    Post edited by simtenero on
  • simtenerosimtenero Posts: 383

    Hello Again All,

    For anyone interested in monitoring their system reources a little more closely, I wanted to recommend MSI Afterburner.  In addition to its overclocking functions (which have somewhat limited use for Iray renders, btw, but thats another topic), it includes "Riva Statistics Tuner," which gives you realtime readouts of all kinds of fun stats, including system and GPU memory usage.  This is what I used when performing all of my tests (plus, its free!):

    https://gaming.msi.com/features/afterburner

    I'm sort of volunteering myself for added scrutiny, so please be kind laugh.  But in all seriousness, it's super useful and will give you a way to compare IMA's estimates against actual use, which I strongly recommend doing.  The goal of the tool is to spare you the time having to tweak the scene, do a test render while watching a tool like Afterburner, tweak, test render, and repeat.  My goal was an accuracy of +/- 10%, which IMA can achieve pretty consistently (of course, there are always exceptions, environments with tons of highly compressable textures, for example).  The whole "Tweak, Test Render, Check, Repeat" cycle can take a ton of time.  If IMA can help you turn an hour of testing into 10 minutes of testing, I'll be a happy camper.

  • RenomistaRenomista Posts: 921

    Thanks for the explanation.

    Just wanted to understand the data so i can interpret them somehow..

  • simtenerosimtenero Posts: 383
    Renomista said:

    Thanks for the explanation.

    Just wanted to understand the data so i can interpret them somehow..

    No problem!  Please feel free to post here or PM me if you see an area that could be improved on, I want to make sure this has a real value in your workflow.

  • FusionLAFusionLA Posts: 249

    Is this for Windows PC systems only? or does it also work for Macs?

    Thanks

  • barbultbarbult Posts: 24,245
    simtenero said:

    Hello Again All,

    For anyone interested in monitoring their system reources a little more closely, I wanted to recommend MSI Afterburner.  In addition to its overclocking functions (which have somewhat limited use for Iray renders, btw, but thats another topic), it includes "Riva Statistics Tuner," which gives you realtime readouts of all kinds of fun stats, including system and GPU memory usage.  This is what I used when performing all of my tests (plus, its free!):

    https://gaming.msi.com/features/afterburner

    I'm sort of volunteering myself for added scrutiny, so please be kind laugh.  But in all seriousness, it's super useful and will give you a way to compare IMA's estimates against actual use, which I strongly recommend doing.  The goal of the tool is to spare you the time having to tweak the scene, do a test render while watching a tool like Afterburner, tweak, test render, and repeat.  My goal was an accuracy of +/- 10%, which IMA can achieve pretty consistently (of course, there are always exceptions, environments with tons of highly compressable textures, for example).  The whole "Tweak, Test Render, Check, Repeat" cycle can take a ton of time.  If IMA can help you turn an hour of testing into 10 minutes of testing, I'll be a happy camper.

    I'm not clear on what a user should actually DO with the displayed information. Can you take one of your promo images and explain what I would do to make my scene fit better after reading the displayed script info?

  • simtenerosimtenero Posts: 383

     

    FusionLA said:

    Is this for Windows PC systems only? or does it also work for Macs?

    Thanks

    It's written in Daz Script, so it should be Mac compatible.  Full disclosure, I don't have a Mac to test on.  I will ask around and see if anyone at Daz was able to test on a Mac just to verify.  You can also avail yourself of the refund policy if it doesn't work as expected :-) (but I will definitelyt still find out!).

  • simtenerosimtenero Posts: 383
    edited March 2016
    barbult said:
    simtenero said:

    Hello Again All,

    For anyone interested in monitoring their system reources a little more closely, I wanted to recommend MSI Afterburner.  In addition to its overclocking functions (which have somewhat limited use for Iray renders, btw, but thats another topic), it includes "Riva Statistics Tuner," which gives you realtime readouts of all kinds of fun stats, including system and GPU memory usage.  This is what I used when performing all of my tests (plus, its free!):

    https://gaming.msi.com/features/afterburner

    I'm sort of volunteering myself for added scrutiny, so please be kind laugh.  But in all seriousness, it's super useful and will give you a way to compare IMA's estimates against actual use, which I strongly recommend doing.  The goal of the tool is to spare you the time having to tweak the scene, do a test render while watching a tool like Afterburner, tweak, test render, and repeat.  My goal was an accuracy of +/- 10%, which IMA can achieve pretty consistently (of course, there are always exceptions, environments with tons of highly compressable textures, for example).  The whole "Tweak, Test Render, Check, Repeat" cycle can take a ton of time.  If IMA can help you turn an hour of testing into 10 minutes of testing, I'll be a happy camper.

    I'm not clear on what a user should actually DO with the displayed information. Can you take one of your promo images and explain what I would do to make my scene fit better after reading the displayed script info?

    If a render seems slow, it may not be immediately obvious if/when RAM is the issue.  So first and foremost, the script can help you quickly determine if your scene might require more memory than you have available.  It can also help you identify what's using all of that RAM.  It could be that the target render size is too large, a figure has a ton of normal maps, or that a clothing set is defaulting to 2 or 3 Sub Division levels (just examples).  You can then decide which of those things to dial back or remove if you want to get the scene under your memory limits (the difference in render speed between being over or under the limit can be dramatic).

    The flipside to that is, if the tool reports you've got a ton of free memory, you can consider upping a SubD level or increasing your render resolution.  The aim is to save you having to sift through the parameters and materials on all of your assets, then having to render, try a different resolution, render again, try with a few less assets, render again, and so on.

    Referencing the promo images, you can see on the G3F picture that Orianna Hair, which is already a pretty high resolution model, has 2 levels of SubD applied.  You can also see that transforms a 32,000 face mesh into a 500,000 face mesh when it hits Iray! I'm spoiled for memory, so it didn't present a problem for that render, which is exactly the idea.  I can see looking at the info that I could actually use SubD on more items, maybe add a displacement map, or populate the pretty sparse background with some props.  Once I've done that, I can go back to IMA and show/hide assets to see how they are impacting the scene.

    Admittedly, this has more and less value for different users.  If you have a Titan with 12GB of RAM and 64GB in your PC, you probably aren't stressing memory too much (though I still think IMA has merit for getting more info on your scene).  But even on a 4GB card, Iray may only have 3GB to work with, and you can hit that limit with 2 figures, 2 outfits, and an environment.  Also, it's worth pointing out that even if you are rendering on a GPU, Iray will still use some system RAM and running over that limit, even if your GPU has memory free, can also negatively impact your render speeds.

    Post edited by simtenero on
  • SedorSedor Posts: 1,764
    simtenero said:

     

    FusionLA said:

    Is this for Windows PC systems only? or does it also work for Macs?

    Thanks

    It's written in Daz Script, so it should be Mac compatible.  Full disclosure, I don't have a Mac to test on.  I will ask around and see if anyone at Daz was able to test on a Mac just to verify.  You can also avail yourself of the refund policy if it doesn't work as expected :-) (but I will definitelyt still find out!).

    Looks like it is working, just "SysInfo" shows nothing - can't check if it shows the VRAM correct, as I dont have a NVIDIA card in my Mac.

  • simtenerosimtenero Posts: 383
    Sedor said:
    simtenero said:

     

    FusionLA said:

    Is this for Windows PC systems only? or does it also work for Macs?

    Thanks

    It's written in Daz Script, so it should be Mac compatible.  Full disclosure, I don't have a Mac to test on.  I will ask around and see if anyone at Daz was able to test on a Mac just to verify.  You can also avail yourself of the refund policy if it doesn't work as expected :-) (but I will definitelyt still find out!).

    Looks like it is working, just "SysInfo" shows nothing - can't check if it shows the VRAM correct, as I dont have a NVIDIA card in my Mac.

    Thank you for confirming Sedor!!!  It's also good to know that the SysInfo isn't showing.  If its not too much trouble, is there any chance you could PM an example of your log.txt file? (Assuming that exists in DS for Mac, under Help, Troubleshooting, View Log File).  That's where I pull the System information from, it's possible the formatting is a little different in OSX.

  • SedorSedor Posts: 1,764

    Send you a message!

  • barbultbarbult Posts: 24,245

    Thanks for the usage information. That was helpful.

  • FusionLAFusionLA Posts: 249
    simtenero said:

    I will go ahead and buy it, and try it out later on after work.
    Wanted something like this to give you the vram usage in iray for the Mac, like what comes in Octane.

    FusionLA said:

    Is this for Windows PC systems only? or does it also work for Macs?

    Thanks

    It's written in Daz Script, so it should be Mac compatible.  Full disclosure, I don't have a Mac to test on.  I will ask around and see if anyone at Daz was able to test on a Mac just to verify.  You can also avail yourself of the refund policy if it doesn't work as expected :-) (but I will definitelyt still find out!).

     

  • barbultbarbult Posts: 24,245
    edited March 2016

    I purchased the product. It doesn't seem to take into account the graphics card memory that is used by the HDRI in the Render Settings Environment. Here are two examples. One uses the small default "ruins" HDRI. The other uses a large HDRI that I purchased. The IMA makes the same estimate for remaining VRAM in both cases, but GPU-Z shows that the actual amount of memory used is much larger with the large HDRI. Can you improve the IMA to take the Render Settings Environment HDRI into account?

    Small HDRI.jpg
    1181 x 643 - 356K
    Large HDRI.jpg
    1181 x 643 - 354K
    Post edited by barbult on
  • barbultbarbult Posts: 24,245

    IMA also seems to be ignoring surface displacement subD, which can require a lot of GPU memory. IMA reports the same numbers, regardless of the subD value I have set in the surface displacement.

  • barbultbarbult Posts: 24,245
    edited March 2016

    IMA also doesn't seem to take into account that if the Render SubD Level (Minimum) is set to a high value but the Resolution Level is Base, the subdivision will not be performed and does not take extra memory. IMA treats it as if Resolution Level were always High Resolution, as far as I can tell, because it reports the same memory usage values for Base and High Resolution.

    You need a better beta tester to catch these problems before product release! wink

    Post edited by barbult on
Sign In or Register to comment.