Opened 3 weeks ago
Closed 3 weeks ago
#20807 closed defect (limitation)
glBufferData: out of memory
| Reported by: | 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 , 3 weeks ago
| Component: | Unassigned → Graphics |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → glBufferData: out of memory |
comment:2 by , 3 weeks ago
| Resolution: | → limitation |
|---|---|
| Status: | assigned → closed |
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.
Reported by Rajnandani