Opened 3 weeks ago

Closed 3 weeks ago

#20807 closed defect (limitation)

glBufferData: out of memory

Reported by: rajnandani.kashyap@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-6.8.0-136-generic-x86_64-with-glibc2.39
ChimeraX Version: 1.6.1 (2023-05-09 17:57:07 UTC)
Description
(Describe the actions that caused this problem to occur here)

Log:
Startup Messages  
---  
warnings | Replacing fetcher for 'tcia' and format DICOM medical imaging from
Dicom bundle with that from MedicalImaging bundle  
Replacing fetcher for 'pdb_nmr' and format NMRSTAR from NMRSTAR bundle with
that from NMRSTAR bundle  
  
UCSF ChimeraX version: 1.6.1 (2023-05-09)  
© 2016-2023 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /home/rk/Documents/Ribosome-project/SBDS-wt/Final-
> volume/2026-Update/cryosparc_P27_J270_004_volume_map.mrc

Opened cryosparc_P27_J270_004_volume_map.mrc as #1, grid size 700,700,700,
pixel 0.865, shown at step 1, values float32  

> volume #1 region 0,0,0,699,699,699 step 4

[Repeated 1 time(s)]

> set bgColor white

> surface dust #1 size 8.65

> volume #1 step 1

> volume #1 change image level -0.1049,0 level 0.43,0.8 level 1.889,1

> volume #1 level 0.2386

> lighting soft

> open /home/rk/Documents/Ribosome-project/SBDS-wt/Final-
> volume/cryosparc_P33_J44_map_sharp.mrc

Opened cryosparc_P33_J44_map_sharp.mrc as #2, grid size 700,700,700, pixel
0.865, shown at step 1, values float32  

> volume #2 region 0,0,0,699,699,699 step 4

[Repeated 1 time(s)]

> volume #2 step 1

> volume #2 change image level -0.0001308,0 level 0.0847,0.8 level 1.819,1

> volume #2 level 0.01303

> lighting soft

> surface dust #1 size 8.65

> surface dust #2 size 8.65

> volume add #2 #1

Opened volume sum as #3, grid size 700,700,700, pixel 0.865, shown at step 1,
values float32  
An error occurred in drawing the scene. Redrawing graphics is now stopped to
avoid a continuous stream of error messages. To restart graphics use the
command "graphics restart" after changing the settings that caused the error.  
  
GLError(  
err = 1285,  
description = b'out of memory',  
baseOperation = glBufferData,  
pyArgs = (  
34963,  
2644785240,  
array([[ 0, 4, 2],  
[ 3, 4, 0],  
[ 1, 2, ...,  
GL_STATIC_DRAW,  
),  
cArgs = (  
34963,  
2644785240,  
array([[ 0, 4, 2],  
[ 3, 4, 0],  
[ 1, 2, ...,  
GL_STATIC_DRAW,  
),  
cArguments = (  
34963,  
2644785240,  
array([[ 0, 4, 2],  
[ 3, 4, 0],  
[ 1, 2, ...,  
GL_STATIC_DRAW,  
)  
)  
  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/updateloop.py", line 73, in draw_new_frame  
view.draw(check_for_changes = False)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/view.py", line 177, in draw  
self._draw_scene(camera, drawings)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/view.py", line 215, in _draw_scene  
shadow, multishadow = self._compute_shadowmaps(opaque_drawings,
transparent_drawings, camera)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/view.py", line 612, in _compute_shadowmaps  
multishadow_enabled = r.multishadow.use_multishadow_map(shadow_drawings)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 1605, in use_multishadow_map  
draw_depth(r, sdrawings, opaque_only = not mat.transparent_cast_shadows)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1567, in draw_depth  
draw_opaque(r, drawings)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1542, in draw_opaque  
_draw_multiple(drawings, renderer, Drawing.OPAQUE_DRAW_PASS)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1555, in _draw_multiple  
d.draw(renderer, draw_pass)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 768, in draw  
self.draw_self(renderer, draw_pass)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 775, in draw_self  
self._draw_geometry(renderer, opaque_only = any_transp)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 802, in _draw_geometry  
ds.activate_bindings(renderer)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1915, in activate_bindings  
self.update_buffers()  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1903, in update_buffers  
b.update_buffer_data(data)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 2700, in update_buffer_data  
GL.glBufferData(btype, size, d, GL.GL_STATIC_DRAW)  
File "src/latebind.pyx", line 51, in OpenGL_accelerate.latebind.Curry.__call__  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/OpenGL/GL/VERSION/GL_1_5.py", line 89, in glBufferData  
return baseOperation( target, size, data, usage )  
File "src/latebind.pyx", line 39, in
OpenGL_accelerate.latebind.LateBind.__call__  
File "src/wrapper.pyx", line 318, in
OpenGL_accelerate.wrapper.Wrapper.__call__  
File "src/wrapper.pyx", line 311, in
OpenGL_accelerate.wrapper.Wrapper.__call__  
File "src/errorchecker.pyx", line 58, in
OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError  
OpenGL.error.GLError: GLError(  
err = 1285,  
description = b'out of memory',  
baseOperation = glBufferData,  
pyArgs = (  
34963,  
2644785240,  
array([[ 0, 4, 2],  
[ 3, 4, 0],  
[ 1, 2, ...,  
GL_STATIC_DRAW,  
),  
cArgs = (  
34963,  
2644785240,  
array([[ 0, 4, 2],  
[ 3, 4, 0],  
[ 1, 2, ...,  
GL_STATIC_DRAW,  
),  
cArguments = (  
34963,  
2644785240,  
array([[ 0, 4, 2],  
[ 3, 4, 0],  
[ 1, 2, ...,  
GL_STATIC_DRAW,  
)  
)  
  




OpenGL version: 4.6 (Core Profile) Mesa 25.2.8-0ubuntu0.24.04.2
OpenGL renderer: zink Vulkan 1.4(NVIDIA GeForce RTX 3060 (NVK GA104) (MESA_NVK))
OpenGL vendor: Mesa

Python: 3.9.11
Locale: en_US.UTF-8
Qt version: PyQt6 6.4.2, Qt 6.4.2
Qt runtime version: 6.4.3
Qt platform: xcb

XDG_SESSION_TYPE=wayland
DESKTOP_SESSION=ubuntu
XDG_SESSION_DESKTOP=ubuntu
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GNOME_SETUP_DISPLAY=:1
DISPLAY=:0
WAYLAND_DISPLAY=wayland-0
Manufacturer: Micro-Star International Co., Ltd.
Model: MS-7E06
OS: Ubuntu 24.04 Noble Numbat
Architecture: 64bit ELF
Virtual Machine: none
CPU: 20 13th Gen Intel(R) Core(TM) i5-13600KF
Cache Size: 24576 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:            31Gi        25Gi       3.5Gi       455Mi       2.3Gi       5.5Gi
	Swap:          2.0Gi       2.0Gi       124Ki

Graphics:
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3060] [10de:2487] (rev a1)	
	Subsystem: Micro-Star International Co., Ltd. [MSI] GA104 [GeForce RTX 3060] [1462:397b]	
	Kernel driver in use: nouveau

Installed Packages:
    alabaster: 0.7.13
    appdirs: 1.4.4
    asttokens: 2.2.1
    Babel: 2.12.1
    backcall: 0.2.0
    beautifulsoup4: 4.11.2
    blockdiag: 3.0.0
    build: 0.10.0
    certifi: 2023.5.7
    cftime: 1.6.2
    charset-normalizer: 3.1.0
    ChimeraX-AddCharge: 1.5.9.1
    ChimeraX-AddH: 2.2.5
    ChimeraX-AlignmentAlgorithms: 2.0.1
    ChimeraX-AlignmentHdrs: 3.3.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.9.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.3
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.43.10
    ChimeraX-AtomicLibrary: 10.0.6
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.3.2
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.2
    ChimeraX-BondRot: 2.0.1
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.8
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.2.2
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.3.2
    ChimeraX-ChangeChains: 1.0.2
    ChimeraX-CheckWaters: 1.3.1
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.2.4
    ChimeraX-Clipper: 0.21.0
    ChimeraX-ColorActions: 1.0.3
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.3
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.6.1
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.4.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2
    ChimeraX-DistMonitor: 1.4
    ChimeraX-DockPrep: 1.1.1
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1.1
    ChimeraX-Hbonds: 2.4
    ChimeraX-Help: 1.2.1
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ISOLDE: 1.6.0
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-Label: 1.1.7
    ChimeraX-LinuxSupport: 1.0.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.2
    ChimeraX-Map: 1.1.4
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.0.12
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.2
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.12
    ChimeraX-MMTF: 2.2
    ChimeraX-Modeller: 1.5.9
    ChimeraX-ModelPanel: 1.3.7
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.0
    ChimeraX-NRRD: 1.0
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.10.1
    ChimeraX-PDB: 2.7.2
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.1
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 3.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.1
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.8.3
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.1.1
    ChimeraX-ShowSequences: 1.0.1
    ChimeraX-SideView: 1.0.1
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.10.3
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.1.2
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.2.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1.2
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Topography: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.28.4
    ChimeraX-uniprot: 2.2.2
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.1
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.1.3
    contourpy: 1.0.7
    cxservices: 1.2.2
    cycler: 0.11.0
    Cython: 0.29.33
    debugpy: 1.6.7
    decorator: 5.1.1
    distro: 1.7.0
    docutils: 0.19
    executing: 1.2.0
    filelock: 3.9.0
    fonttools: 4.39.3
    funcparserlib: 1.0.1
    grako: 3.16.5
    h5py: 3.8.0
    html2text: 2020.1.16
    idna: 3.4
    ihm: 0.35
    imagecodecs: 2022.9.26
    imagesize: 1.4.1
    importlib-metadata: 6.6.0
    ipykernel: 6.21.1
    ipython: 8.10.0
    ipython-genutils: 0.2.0
    ipywidgets: 8.0.6
    jedi: 0.18.2
    Jinja2: 3.1.2
    jupyter-client: 8.0.2
    jupyter-core: 5.3.0
    jupyterlab-widgets: 3.0.7
    kiwisolver: 1.4.4
    line-profiler: 4.0.2
    lxml: 4.9.2
    lz4: 4.3.2
    MarkupSafe: 2.1.2
    matplotlib: 3.6.3
    matplotlib-inline: 0.1.6
    msgpack: 1.0.4
    nest-asyncio: 1.5.6
    netCDF4: 1.6.2
    networkx: 2.8.8
    nibabel: 5.0.1
    nptyping: 2.5.0
    numexpr: 2.8.4
    numpy: 1.23.5
    openvr: 1.23.701
    packaging: 23.1
    ParmEd: 3.4.3
    parso: 0.8.3
    pep517: 0.13.0
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 9.3.0
    pip: 23.0
    pkginfo: 1.9.6
    platformdirs: 3.5.0
    prompt-toolkit: 3.0.38
    psutil: 5.9.4
    ptyprocess: 0.7.0
    pure-eval: 0.2.2
    pycollada: 0.7.2
    pydicom: 2.3.0
    Pygments: 2.14.0
    pynrrd: 1.0.0
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.9
    pyproject-hooks: 1.0.0
    PyQt6-commercial: 6.4.2
    PyQt6-Qt6: 6.4.3
    PyQt6-sip: 13.4.1
    PyQt6-WebEngine-commercial: 6.4.0
    PyQt6-WebEngine-Qt6: 6.4.3
    python-dateutil: 2.8.2
    pytz: 2023.3
    pyzmq: 25.0.2
    qtconsole: 5.4.0
    QtPy: 2.3.1
    RandomWords: 0.4.0
    requests: 2.28.2
    scipy: 1.9.3
    setuptools: 67.4.0
    sfftk-rw: 0.7.3
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.4.1
    sphinx: 6.1.3
    sphinx-autodoc-typehints: 1.22
    sphinxcontrib-applehelp: 1.0.4
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.1
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    stack-data: 0.6.2
    tables: 3.7.0
    tcia-utils: 1.2.0
    tifffile: 2022.10.10
    tinyarray: 1.2.4
    tomli: 2.0.1
    tornado: 6.3.1
    traitlets: 5.9.0
    typing-extensions: 4.5.0
    tzdata: 2023.3
    urllib3: 1.26.15
    wcwidth: 0.2.6
    webcolors: 1.12
    wheel: 0.38.4
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.7
    zipp: 3.15.0

Change History (2)

comment:1 by Eric Pettersen, 3 weeks ago

Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionglBufferData: out of memory

Reported by Rajnandani

comment:2 by Tom Goddard, 3 weeks ago

Resolution: limitation
Status: assignedclosed

This ChimeraX OpenGL error says it ran out of memory trying to allocate a 2.5Gbyte triangle array. That was probably trying to render a 100 million triangle surface. That many triangles suggests the surface is being shown down at the noise level. The error happened when you tried to add two 700 x 700 x 700 maps (each takes about 1.3 GB using float32 values). It may be that each of those 3 maps was trying to make 100 million triangle surfaces. Also I see you were hiding dust, so maybe you really had 500 million triangle surfaces that also were being saved in memory that could take 10 Gbytes each.

The main suggestion is that you need to reduce the number of triangles in surfaces. The easiest way is probably to display at "step 2", ie every other grid point of the map is used along the 3 axes. That will reduce memory use by a factor of 8. For a 100 million triangle surface there is so much detail you gain very little over a 100/8 = 12 million triangle surface.

Another suggestions is your Linux machine is using the Mesa graphics driver which will be much slower than using the proprietary Nvidia driver for your Nvidia RTX 3060. I don't think using the Nvidia driver will save you memory though. Your RTX 3060 has either 8 GB or 12 GB of memory and the error from OpenGL is probably because you exceeded the GPU memory. So if you really want to see the 100 million triangle surfaces the only solution is probably to use a higher end card with 24 GB of memory like an Nvidia 3090, 4090 or 5090.

Note: See TracTickets for help on using tickets.