U19 Motor compute environment
Overview
To enable members of the U19 MoC3 project to process and analyze data associated with the U19 award, four compute servers have been set up in the Zuckerman Data Center. These servers each have the following technical specifications:
CPU Type | Xeon Gold 6140 |
---|---|
CPU Clock Speed | 2.3 Ghz |
Number of Physical Cores | 36 |
Number of Logical (Hyperthreaded) Cores | 72 |
RAM | 192 GB |
Local Storage | 8 TB HDD, 240 GB SSD |
Network Card | Dual Port 10 GbE |
Operating System | Ubuntu 18.04 (CentOS 7 for s1n1 and s1n2) |
Graphical User Interface | Xfce (GNOME for s1n1 and s1n2) |
Domain Name | s1n[1-4].u19motor.zi.columbia.edu |
Accessing the U19 Servers
Using SSH for Command Line Access to the U19 Servers
To ensure the security and integrity of the U19 servers, access is not available off-campus without using the CUIT VPN.
Secure Shell (SSH) is the software used by the U19 servers to provide you with a terminal interface. To connect to the U19 servers using this software, you must have a command line interface on your personal computer such as Windows Terminal in Windows 10 or Terminal for Macs. Older versions of Windows may require a third-party program such as Putty or MobaXterm. Once you have a command line interface on your computer, you can use the command below to access the U19 servers from either on-campus or remotely (via the CUIT VPN). In the command below, UNI is your Columbia UNI and [1-4] is an integer between 1 and 4 inclusive.
ssh UNI@s1n[1-4].u19motor.zi.columbia.edu
Using VNC for Graphical Access to the U19 Servers
VNC is a software protocol used by the U19 servers to provide remote desktop access. To use VNC to access remote desktop environments on the U19 servers, you will first need to download a VNC client. A list of VNC clients that may be downloaded for various desktop workstation environments can be found here.
Mac OS X comes with a built-in VNC client, which is accessible from the Finder by navigating to Go → Connect to Server and then entering vnc://s1n[1-4].u19motor.zi.columbia.edu:[Port Number]
. Instructions for obtaining the port number can be found later on in this section.
Instructions for Revised Environment (s1n1-s1n2)
s1n1 is currently the first U19 host to have been migrated to CentOS 7. On s1n1, you can use ezvnc, a convenience wrapper command for managing VNC sessions.
Starting New VNC Sessions
The ezvnc start command will start a VNC session with a temporary password and then output text that can be used in the Enter Connection URI field. On the first run of the ezvnc command, it will also create some files necessary for use with ezvnc (which is where the xauth warning in the example below comes from). This is conceptually similar to the token-based authentication used by Jupyter notebooks. Be careful with your temporary password- it is only viewable by you and should not be shared with other people, since it gives full access to a desktop environment as you (the passwords in the examples below are unredacted because they are expired). Some VNC clients will prompt you to enter your password- for these clients, you can enter the password text after "?password=".
jsp2205@s1n3:~$ ezvnc start xauth: file /home/jsp2205/.ezvnc/.Xauthority does not exist VNC has started. You can now connect to your VNC session using the following URI: vnc://s1n3.u19motor.zi.columbia.edu:5950?password=rDAv4hcZ
ezvnc start also supports naming your VNC sessions by including a name after the command. Note that the session name must use only alphanumeric characters- non-alphanumeric characters will be removed automatically (if your session name consists entirely of non-alphanumeric characters, it will be considered an unnamed session).
jsp2205@s1n3:~$ ezvnc start mygreatsession VNC has started. You can now connect to your VNC session using the following URI: vnc://s1n3.u19motor.zi.columbia.edu:5935?password=9S310dcB
Listing Currently Running VNC Sessions
The ezvnc list command will print out a list of URIs for all sessions that are open under your user account, along with their temporary passwords (in case you need to log back into a session). It also includes the name of named sessions, and the host and display numbers (which are needed to close unnamed sessions).
jsp2205@s1n3:~$ ezvnc list Active VNC Connections for s1n3.u19motor.zi.columbia.edu: Name URI Host Display Number 1. mygreatsession vnc://s1n3.u19motor.zi.columbia.edu:5935?password=9S310dcB s1n3.u19motor.zi.columbia.edu 35 2. Untitled vnc://s1n3.u19motor.zi.columbia.edu:5950?password=rDAv4hcZ s1n3.u19motor.zi.columbia.edu 50
If your home directory is shared across multiple computers (as is the case on the U19 motor servers), ezvnc list will also show displays that are open on computers other than the one you are logged into:
jsp2205@s1n3:~$ ezvnc list Active VNC Connections for s1n4.u19motor.zi.columbia.edu: Name URI Host Display Number 1. anothersession vnc://s1n4.u19motor.zi.columbia.edu:5928?password=BBXT7t00 s1n4.u19motor.zi.columbia.edu 28 Active VNC Connections for s1n3.u19motor.zi.columbia.edu: Name URI Host Display Number 1. mygreatsession vnc://s1n3.u19motor.zi.columbia.edu:5935?password=9S310dcB s1n3.u19motor.zi.columbia.edu 35 2. Untitled vnc://s1n3.u19motor.zi.columbia.edu:5950?password=rDAv4hcZ s1n3.u19motor.zi.columbia.edu 50
Stopping VNC Sessions
ezvnc stop will quit a currently running VNC session. If your session is named, you can use the name to turn it off.
jsp2205@s1n3:~$ ezvnc stop mygreatsession jsp2205@s1n3:~$ ezvnc list Active VNC Connections for s1n4.u19motor.zi.columbia.edu: Name URI Host Display Number 1. anothersession vnc://s1n4.u19motor.zi.columbia.edu:5928?password=BBXT7t00 s1n4.u19motor.zi.columbia.edu 28 Active VNC Connections for s1n3.u19motor.zi.columbia.edu: Name URI Host Display Number 1. Untitled vnc://s1n3.u19motor.zi.columbia.edu:5950?password=rDAv4hcZ s1n3.u19motor.zi.columbia.edu 50
If your session is unnamed, you must specify the domain name of the host that the VNC session is running on and the display number (which can be taken from the ezvnc list output):
jsp2205@s1n3:~$ ezvnc stop s1n3.u19motor.zi.columbia.edu 50
ezvnc stop can only turn off VNC sessions from the host that you used to start them. For instance, if I am logged into the host s1n3.u19motor.zi.columbia.edu and I try to turn off a VNC session that was started on s1n4.u19motor.zi.columbia.edu, I will receive the following error:
jsp2205@s1n3:~$ ezvnc stop anothersession ezvnc must be run on the server that the VNC session was started on. Current host(s): s1n3.u19motor.zi.columbia.edu Specified host: s1n4.u19motor.zi.columbia.edu Quitting now.
If log into s1n4.u19motor.zi.columbia.edu and run the same command there, the VNC session turns off as expected:
jsp2205@s1n4:~$ ezvnc stop anothersession jsp2205@s1n4:~$ ezvnc list jsp2205@s1n4:~$
Getting the Command Usage within a Terminal
Typing ezvnc help will print out a list of valid commands:
jsp2205@s1n3:~$ ezvnc help ezvnc is an alternative wrapper around Xvnc for starting VNC sessions. It consists of three subcommands, described below. Optional parameters are enclosed by square brackets. Starting a new session: ezvnc start [NAME] The optional NAME parameter allows you to associate a new VNC session with a name for future reference. Listing currently running sessions: ezvnc list Stopping/quitting a currently running session: ezvnc stop [NAME] ezvnc stop [HOST] [DISPLAY NUMBER] The syntax to stop a VNC session has two variants. One allows you to use an optional session name to identify the session to quit. The other takes in the host that the VNC session is running on and a display number. The parameters needed for this command can be found by running 'ezvnc list'. Printing this usage dialogue: ezvnc help
Instructions for Legacy Environment (s1n3-s1n4)
After you have downloaded and installed a VNC client, you will need to use SSH to obtain command line access into the server. You should then run the tightvncserver command (as detailed below):
aa3301@s1n2:~$ tightvncserver You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n New 'X' desktop is s1n2:5 Creating default startup script /home/aa3301/.vnc/xstartup Starting applications specified in /home/aa3301/.vnc/xstartup Log file is /home/aa3301/.vnc/s1n2:5.log
VNC requires that you set an access password to ensure that you and only you have access to your remote desktop environment. As you can see above, you will set this access password the first time you run tightvncserver. On subsequent runs of tightvncserver, you will not need to re-enter a password; you will use the same password that you set the first time you ran tightvncserver. If you forget your acess password, the command below will reset it:
aa3301@s1n2:~$ rm ~/.vnc/passwd
To connect to the remote desktop environment with the VNC client application you installed earlier, you would enter the domain name of the U19 server (s1n[1-4].u19motor.zi.columbia.edu) and the port number into your client. The port number is the number after the colon on the New 'X' desktop is s1n2:5 line from the above output added to 5900. In the above example the domain name would by s1n2.u19motor.zi.columbia.edu and the port number would be 5905.
You would then be presented with an Xfce desktop session. You can open a terminal command and run a program (such as MATLAB) there. If you disconnect the remote desktop session any running programs will persist. You can close the VNC client on your laptop and reconnect later and the session should be exactly the same.
Once you're done with the connection you can kill the server like so, specifying the correct session number. The session number (5 in this example) is the number after the colon on the New 'X' desktop is s1n2:5 line from earlier (without adding 5900).
aa3301@s1n2:~$ tightvncserver -kill :5 Killing Xtightvnc process ID 47121
The session number (number after the colon) will be different across runs of the tightvncserver command.
Storage
Revised Environment (s1n1-s1n2)
Shared file systems between all servers:
Filesystem Path | Size | Purpose |
---|---|---|
/opt | 6 TB | Software installation |
/mnt/staging | 10 TB | Higher performance network storage |
/mnt/conda | 6 TB | Anaconda environments |
/mnt/datajoint | 44 TB | Datajoint storage. |
/home | 6 TB | Home directories |
Additionally, all nodes have 7.3 TB of local scratch space mounted under /tmp/scratch.
Furthermore, any lab's Windows-based (SMB) locker/labshare space can be accessed with read/write permissions by navigating to directories of the following forms:
/mnt/smb/locker/[LABNAME]-locker /mnt/smb/labshare/[LABNAME]-labshare
For instance, a member of the Churchland lab would be able to access their locker storage by navigating to /mnt/smb/locker/churchland-locker.
Locker/labshare directories will not appear until they have been navigated to within a terminal or within the GNOME file browser (by typing Ctrl+L and then entering the path).
Legacy Environment (s1n3-s1n4)
Shared file systems between all servers:
Filesystem Path | Size | Purpose |
---|---|---|
/apps | 6TB | software installation |
/scratch | 10TB | compute/scratch space |
/home | 6TB | Home directories |
We can help researchers mount their own lab's U19 (or non-U19) Engram shares to enable access to already collected data without having to transfer it (e.g. using scp) to these compute servers.
Please email rc@zi.columbia.edu with "u19-motor" in the subject line to request access to these servers. If you have specific software needs that are not covered by Anaconda2/3, you can email support to discuss either setting up a private environment or to create a module (i.e. for software that is likely to be useful for other project members as well) on the network-based /apps file system.
Applications
Matlab
Matlab is installed on each server. You can run MATLAB by opening a terminal and typing matlab.
Conda
Revised Environment (s1n1-s1n2)
Conda is installed globally by default.
You can create and remove local environments using the conda command. All environments are stored in your personal conda directory at /mnt/conda/UNI (where UNI is your UNI). Under this directory there are 3 subdirectories (note that some of these subdirectories may not exist immediately, and may only appear after certain actions, such as software installations or environment creations, have occurred):
- envs contains the files and binaries used when you activate a conda environment.
- pkgs contains temporary files that are downloaded when you install a package. This directory is cleaned out regularly by the dedicated service user.
- exports contains a Git repository with a number of text files that indicate the exact packages and package versions that you are using in your environments. This Git repository can be used to determine what your environment looked like at a particular point in time. However, it is more valuable if you occasionally install packages using pip instead of conda, since conda has native revision history functionality for conda packages (but not pip packages).
conda environments that are created under the revised environment will not be available within the legacy environment.
Legacy Environment (s1n3-s1n4)
This environment uses lmod environmental modules to manage applications, which allows the system to have multiple versions of popular programs.
Applications currently in modules: (anaconda/2-2018.12 anaconda/3-2018.12 (D)).
To find out more about how to run modules please see this page which is for Axon, but works the same on these systems.