Opened 6 years ago

Last modified 6 years ago

#2593 assigned defect

Various graphics/install/toolshed problems

Reported by: jmholton@… Owned by: Greg Couch
Priority: normal Milestone:
Component: Tool Shed Version:
Keywords: Cc: Tristan Croll, Conrad Huang, Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

Hello,

I've been trying to install ISOLDE on a CentOS 7 system.  I want all 
users to be able to execute it.  Having trouble with the chimerax 
install that I thought you might want to know about.

I'm running as root because I want to install for all users.

**[root@graphics1 install]#** inxi -CGM
Machine:   Type: Server System: Supermicro product: Super Server v: 
0123456789 serial: 0123456789
            Mobo: Supermicro model: X11SRA-F v: 1.01 serial: 
UM17AS000306 UEFI [Legacy]: American Megatrends v: 1.0
            date: 10/11/2017
CPU:       Topology: 10-Core model: Intel Xeon W-2155 bits: 64 type: MT 
MCP L2 cache: 13.8 MiB
            Speed: 1297 MHz min/max: 1200/4500 MHz Core speeds (MHz): 1: 
1297 2: 1259 3: 1200 4: 1238 5: 1200 6: 1200 7: 1235
            8: 1200 9: 1222 10: 4491 11: 1206 12: 1204 13: 1200 14: 1200 
15: 1200 16: 1200 17: 1293 18: 4377 19: 1200 20: 1200
Graphics:  Device-1: NVIDIA TU104 [GeForce RTX 2080] driver: nvidia v: 
418.87.01
            Display: server: X.Org 1.12.2 driver: nvidia unloaded: 
fbdev,modesetting,nouveau,vesa resolution: 1920x1137~60Hz
            OpenGL: renderer: Rasterizer v: 1.4 (2.1 Mesa 10.0.1) *
[root@graphics1 install]#* yum install /programs/install/chimerax-daily.rpm
...
Installed:
   ucsf-chimerax-daily.x86_64 0:2019.11.20-1.el7

Complete!
*[root@graphics1 install]#* ls -l /usr/bin/chimerax-daily
lrwxrwxrwx 1 root root 42 Nov 20 08:48 /usr/bin/chimerax-daily -> 
../../opt/UCSF/ChimeraX-daily/bin/ChimeraX
[root@graphics1 install]# chimerax-daily
NOTE: available bundle cache has not been initialized yet
NOTE: Traceback (most recent call last):
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/runpy.py", line 193, in
_run_module_as_main
     "__main__", mod_spec)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/runpy.py", line 85, in
_run_code
     exec(code, run_globals)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/ChimeraX_main.py", line 871, in <module>
     exit_code = init(sys.argv)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/ChimeraX_main.py", line 580, in init
     check_available=opts.get_available_bundles)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/toolshed/__init__.py", line 1682, in init
     _toolshed = Toolshed(*args, **kw)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/toolshed/__init__.py", line 380, in __init__
     settings.toolshed_last_check = now.isoformat()
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/settings.py", line 190, in __setattr__
     ConfigFile.__setattr__(self, name, value)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/configfile.py", line 365, in __setattr__
     ConfigFile.save(self)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/configfile.py", line 314, in save
     with SaveTextFile(self._filename) as f:
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/safesave.py", line 162, in __init__
     SaveFile.__init__(self, filename, open=open_text, critical=critical)
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/safesave.py", line 69, in __init__
     raise OSError(errno.ENOTDIR, os.strerror(errno.ENOTDIR), save_dir)
NotADirectoryError: [Errno 20] Not a directory:
'/non/existent/directory/.config/ChimeraX'


BUG: NotADirectoryError: [Errno 20] Not a directory:
'/non/existent/directory/.config/ChimeraX'

File "/opt/UCSF/ChimeraX-daily/lib/python3.7/site-
packages/chimerax/core/safesave.py", line 69, in __init__
raise OSError(errno.ENOTDIR, os.strerror(errno.ENOTDIR), save_dir)

  _See log for complete Python traceback._

*[root@graphics1 install]#* mkdir -p 
/non/existent/directory/.config/ChimeraX
*[root@graphics1 install]#* chimerax-daily
NOTE: available bundle cache has not been initialized yet
[14105:14105:1120/123101.581741:ERROR:zygote_host_impl_linux.cc(89)] 
Running as root without --no-sandbox is not supported. See 
https://crbug.com/638180.
*[root@graphics1 install]#* chimerax-daily --no-sandbox
/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/ChimeraX_main.py: 
option --no-sandbox not recognized

*[root@graphics1 install]#* su - jamesh
*jamesh@graphics1:/home/jamesh 103%* setenv DISPLAY gateway2:1002.0
*jamesh@graphics1:/home/jamesh 104%* xterm
*jamesh@graphics1:/home/jamesh 105%* chimerax-daily
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-jamesh'
NOTE: available bundle cache has not been initialized yet
ERROR: ChimeraX requires OpenGL graphics version 3.3.
Your computer graphics driver provided version 1.4
Try updating your graphics driver.
WARNING: No statusbar messages will be shown due to inadequate OpenGL
WARNING: QOpenGLShader::compile(Vertex): failed
WARNING: QOpenGLShader::compile(Fragment): failed
WARNING: Could not link shader program:
  ""
Fatal Python error: Segmentation fault

Current thread 0x00007fec1e598740 (most recent call first):
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/chimerax/ui/gui.py", 
line 743 in rapid_access_shown
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/chimerax/ui/gui.py", 
line 203 in build
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/ChimeraX_main.py", 
line 623 in init
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/ChimeraX_main.py", 
line 871 in <module>
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/runpy.py", line 85 in 
_run_code
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/runpy.py", line 193 in 
_run_module_as_main
Segmentation fault (core dumped)

#
#  this was running remotely over an X11 connection to our gateway 
machine, which does not have an nvidia graphics card
#  trying a different machine:
*[root@bl831 ~]#* inxi -CGM
Machine:   Type: Server System: Supermicro product: Super Server v: 
0123456789 serial: 0123456789
            Mobo: Supermicro model: X11SPi-TF v: 1.02 serial: 
OM17AS033975 UEFI [Legacy]: American Megatrends v: 2.0b
            date: 02/26/2018
CPU:       Topology: 12-Core model: Intel Xeon Silver 4116 bits: 64 
type: MT MCP L2 cache: 16.5 MiB
            Speed: 899 MHz min/max: 800/3000 MHz Core speeds (MHz): 1: 
988 2: 999 3: 2100 4: 2100 5: 2100 6: 1503 7: 1554
            8: 896 9: 890 10: 2668 11: 2676 12: 1743 13: 999 14: 2100 
15: 868 16: 2100 17: 2100 18: 800 19: 926 20: 2487
            21: 1797 22: 800 23: 2100 24: 1300
Graphics:  Device-1: ASPEED Graphics Family driver: ast v: kernel
            Device-2: NVIDIA GV100 [TITAN V] driver: nvidia v: 418.87.01
            Display: server: X.Org 1.12.2 driver: modesetting 
resolution: 1920x1200~60Hz
            OpenGL: renderer: Rasterizer v: 1.4 (2.1 Mesa 13.0.2)
*[root@bl831 ~]#* su - jamesh
*jamesh@bl831%* chimerax-daily
ERROR: ChimeraX requires OpenGL graphics version 3.3.
Your computer graphics driver provided version 2.1
Try updating your graphics driver.
WARNING: No statusbar messages will be shown due to inadequate OpenGL
Fatal Python error: Segmentation fault

Thread 0x00007f1560ceb740 (most recent call first):
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/chimerax/ui/gui.py", 
line 268 in event_loop
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/ChimeraX_main.py", 
line 747 in init
   File 
"/opt/UCSF/ChimeraX-daily/lib/python3.7/site-packages/ChimeraX_main.py", 
line 871 in <module>
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/runpy.py", line 85 in 
_run_code
   File "/opt/UCSF/ChimeraX-daily/lib/python3.7/runpy.py", line 193 in 
_run_module_as_main
[237414:237414:0100/000000.772113:ERROR:command_buffer_proxy_impl.cc(130)] 
ContextResult::kTransientFailure: Failed to send 
GpuChannelMsg_CreateCommandBuffer.
[237323:237323:0100/000000.772256:ERROR:command_buffer_proxy_impl.cc(130)] 
ContextResult::kTransientFailure: Failed to send 
GpuChannelMsg_CreateCommandBuffer.
Segmentation fault (core dumped)


    We then tried moving to the display directly connected to the
    "graphics1" machine above.
    On this console we can get the ChimeraX gui to open and stay open.
    However, all attempts to install ISOLDE for all users have failed.

    we get the "Permission Denied" error trying to install for "All users".
    the |opts.get_available_bundles = False|
    trick has no effect.

Any advice?

-James Holton


Change History (11)

comment:1 by Eric Pettersen, 6 years ago

Cc: Tristan Croll Conrad Huang Greg Couch added
Component: UnassignedTool Shed
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: installing chimeraxVarious graphics/install/toolshed problems

comment:2 by Greg Couch, 6 years ago

Why aren't you installing using the rpm?

comment:3 by Greg Couch, 6 years ago

Ack. Belay that. Will look more closely.

comment:4 by Tom Goddard, 6 years ago

Cc: Tom Goddard added; Greg Couch removed
Owner: changed from Tom Goddard to Greg Couch

The install problem has something to do with toolshed not finding a .config directory. Probably Greg knows most about that since it is on Linux.

The problem starting ChimeraX is (as the error message says) that ChimeraX requires OpenGL 3.3 and the computer being used only offered OpenGL 1.4.

The problem installing ISOLDE for all users is another toolshed problem. From what I understand you can install for all users only if you have write permission on the ChimeraX install directory -- it has no provision for authenticating with a password. We discussed this last week. This should give a clear error message "You do not have permission to install for all users. Please install "Just for me"." But it sounds like this user needs to install for all users. At last week's meeting we decided to remove the "install for all users" choice because we can't handle authentication and provide explicit instructions for those rare users who need it (as apparently this user needs).

in reply to:  5 ; comment:5 by jmholton@…, 6 years ago

So I should just chmod -R a+rw /opt/UCSF  ?

Or is there a way to install ISOLDE from the command line of 
chimerax-daily --nogui ?


On 11/20/2019 2:56 PM, ChimeraX wrote:

in reply to:  6 ; comment:6 by Tom Goddard, 6 years ago

If you have write permission on the ChimeraX install tree (without typing a password) then I would expect ISOLDE to install for all users.

I don't know if ISOLDE can be installed from the command-line.  That is something Greg Couch or Conrad Huang would have to answer.

in reply to:  7 ; comment:7 by jmholton@…, 6 years ago

OK.  That seems to have worked!

We have now started the demo and we can see the molecule wiggling 
around.  Not sure what to do next.  Will ask Tristan tomorrow.

Thanks for you help with that!  We now have one computer than can run 
ISOLDE, but only on the console.

Is it normal that ChimeraX will only run on a screen directly connected 
to the only graphics card in the system?

-James


On 11/20/2019 3:11 PM, ChimeraX wrote:

in reply to:  8 ; comment:8 by Tom Goddard, 6 years ago

Yes.  ChimeraX uses high performance GPU accelerated graphics, and ISOLDE is going to want to use the GPU for fast molecular dynamics calculations.  So it is not really feasible to run it on a server with no graphics hardware and display on a different machine.  A decade or more ago it used to be possible to run an application on a server and have it send OpenGL graphics to another displaying machine -- but those days are long past -- although X-windows can do that with on-graphics apps it almost never works with 3D graphics and OpenGL.  ChimeraX needs the GPU on the machine it is running on.  This isn't completely true since ChimeraX runs fine with Intel graphics (although most servers use Intel chips, like Xeon, that don't include a GPU, so then you are reduced to all software CPU graphics rendering).  Even in that configuration you would need some kind of remote desktop display to show the graphics on another machine.  And ISOLDE performance would be slow with no GPU to accelerate forcefield calculations.

in reply to:  9 ; comment:9 by jmholton@…, 6 years ago

Hmm. My biggest, baddest GPUs are on headless machines up in the rack.  
My plan was to run ISOLDE on those and look at the graphics in an 
X11-forwarded window.  In general I've tried to set things up so that 
compute tasks don't get run on GPUs that are directly connected to 
monitors because the people in front of those monitors get angry when 
someone runs a CUDA program.

Coot seems to have no trouble displaying on all my screens, even the 
virtual an NX ones.  I wonder what Paul is doing?

Do you think VNC would work as a remote desktop application to display 
ChimeraX ?


On 11/20/2019 3:51 PM, Tom Goddard wrote:


in reply to:  10 ; comment:10 by Tom Goddard, 6 years ago

Yeah VNC would work.   And remote display could work, it sometimes does if you have the exact same opengl driver on both server and client and the graphics manufacturer cares about this capability that is very rarely used.  I suspect Coot style line graphics is really ancient OpenGL while ChimeraX is all modern GPU shader programs -- it is good that Coot works remote displayed but it does not guarantee ChimeraX will -- you would just have to try ChimeraX.

In your use scenario is the Phenix GUI running on the server remote displayed to a client?  Or is the Phenix job just started via command-line, or maybe a client running the Phenix GUI launches a compute job on the server?

Something to keep in mind is that headless GPU setups for computing don't usually allow use of GPU for graphics.  OpenGL requires a window on a display to get an OpenGL context, so OpenGL on the GPU won't work headless.  CUDA of course works without a display but that is non-graphics computation.  And Vulkan which is the next generation of OpenGL and combines compute and graphics can also do graphics on the GPU headless but ChimeraX does not use Vulkan (although we are thinking about it for the future).


comment:11 by Greg Couch, 6 years ago

ChimeraX is not designed to be run as root on Linux. This is to avoid putting lots of unneeded cruft in ~root/.cache/, ~root/.local/, etc. during installation.

To install additional packages as root, use a web browser to go to https://cxtoolshed.rbvi.ucsf.edu/ and download the wheels for the bundles you want to install. Then install them using pip, e.g., "chimerax-daily -m pip install ChimeraX_ISOLDE-1.0b3.dev6-cp37-cp37m-linux_x86_64.whl".

I'll think about this use case some more.

Note: See TracTickets for help on using tickets.