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 TypeXeon Gold 6140
CPU Clock Speed2.3 Ghz
Number of Physical Cores36
Number of Logical (Hyperthreaded) Cores72
RAM192 GB
Local Storage8 TB HDD, 240 GB SSD
Network CardDual Port 10 GbE
Operating SystemUbuntu 18.04 (CentOS 7 for s1n1 and s1n2)
Graphical User InterfaceXfce (GNOME for s1n1 and s1n2)
Domain Names1n[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):

Launching TightVNC server the first time
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).

Killing a VNC session
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 PathSizePurpose
/opt6 TBSoftware installation
/mnt/staging10 TBHigher performance network storage
/mnt/conda6 TBAnaconda environments
/mnt/datajoint44 TBDatajoint storage.
/home6 TBHome 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 PathSizePurpose
/apps6TBsoftware installation
/scratch10TBcompute/scratch space
/home6TBHome 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.