Giter Club home page Giter Club logo

Comments (5)

paddywwoof avatar paddywwoof commented on July 23, 2024

@jean-emmanuel I will have a look at this in an hour or two.. it does look odd, perhaps the highly optimised C and Fortran code in numpy skips some registration process, or the copying of the bytes is optimised into a transfer of ownership in some way?

from pi3d.

jean-emmanuel avatar jean-emmanuel commented on July 23, 2024

Running the same test on a system with an integrated graphic card (and shared video memory) gave different results (same pi3d/numpy version):

  • the numpy array is allocated only once in python unless filled with a random value, I guess numpy detects the data is the same and reuses it. Somehow numpy behaves differently here... EDIT: creating the array with numpy.full instead of numpy.zero fixes it.
  • the memory is released as expected: half of it with free_after_load, the other half when textures are unloaded

from pi3d.

paddywwoof avatar paddywwoof commented on July 23, 2024

Yes it's very odd. Showing the memory with free doesn't seem to take into account GC released space in this circumstance. If I do something like

        if len(textures) > 50:
            textures.pop(0)

when it's building the list then the memory stops being consumed although new Texture objects are being created. Similarly if the else block sets textures to [] and memory to 0 then the process is repeated ad infinitum but the amount of memory consumed stays the the max. If I put the Texture.file_string = None into the Texture.free_after_load() method (where it should be, as you point out. Just in time for the next release of pi3d!) then the memory usage shown by free is higher but the first time textures is deleted it does drop. However subsequent resets don't reduce the memory usage. The memory usage does depend on what the numpy array is filled with (zero, ones, full, random) which is bizarre.

I might do some more experiments and get info from gc

from pi3d.

jean-emmanuel avatar jean-emmanuel commented on July 23, 2024

Hmm, from what I understand memory management in opengl is hardware/driver dependent and nvidia driver may well keep memory allocated in ram as well as in vram (for swapping I guess). It may not be an issue with other hardwares (it isn't with that aforementioned intel integrated graphic card).

from pi3d.

jean-emmanuel avatar jean-emmanuel commented on July 23, 2024

Running the script with a system ram consumption limit made it a lot slower but eventually all the textures got into the vram while ram usage stood under the limit (which was 4x lower than the total allocated vram), this could well corroborate the nvidia-swap theory.

from pi3d.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.