Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
 
 

15-410 Software Setup Guide


Before you begin...

(15-410 Software Setup Guide)

The "gold standard" software environment for working on projects for this class is the Linux installed on cluster machines in Gates-Hillman, Wean Hall, West Wing, and various other places (see map). This is the environment we will use to grade your work, so it is important that you develop and test your code in that environment.

In the past some students spent substantial energy on attempting to replicate randomly-selected parts of that environment (compiler/linker/debugger toolchain, libraries, assorted utilities, and a Simics installation) on personal machines. This often spilled over to involve members of the course staff, and it was frequently the case that a student would set up an environment that would work in many situations but mysteriously fail late in the semester.

We recommend that students use Linux machines in on-campus clusters, augmented by remotely accessing campus Linux machines via SSH.

Cluster Linux Machines

If you are using a Linux machine in a cluster supported by SCS/Computing Services, and have followed the Project Zero directions for ensuring that /afs/cs.cmu.edu/academic/class/15410-s25/bin is on your $PATH. you should be able to launch Simics from a terminal window via the appropriate shell script, e.g., simics60.

SSH into LINUX.ANDREW from a Linux or macOS machine

If you are on campus, or "near" campus (in a network-latency sense), you can probably work reasonably effectively over an SSH connection to a machine in the LINUX.ANDREW.CMU.EDU pool of cycle servers. Please don't run Simics on more than one LINUX.ANDREW machine at a time, or run multiple copies on a single machine. To use Simics via SSH, you will need to invoke ssh with the -X and/or -Y flags (consult the SSH documentation).

If you are SSH'ing into an Andrew Linux machine with X forwarding, you should be aware that recent versions of SSH will shut down the remote machine's access to your X display after a very brief period of inactivity. In some sense this increases security, but not all that much, and it definitely reduces usability. You may wish to specify a longer inactivity timeout when you connect. There are two ways you can do this:

  1. You can specify a longer timeout on the command line every time you connect, e.g.:
    ssh -X -o 'ForwardX11Timeout 20m' LINUX.ANDREW.CMU.EDU
    (for a 20-minute timeout), or
  2. You can make an entry in your $HOME/.ssh/config file on the machine you are connecting from:
        host linux.andrew.cmu.edu
         ForwardX11Timeout 20m
        

Please make sure the X server on your machine is working by running some X programs, such as xrefresh and/or xeyes. Then, after SSH'ing to LINUX.ANDREW, make sure running those programs remotely (on LINUX.ANDREW) works too. If you can't run X programs on your machine and via SSH then Simics isn't going to work very well.

If you can run X programs on your machine but not via X forwarding over SSH, see if your LINUX.ANDREW space has a file called $HOME/.ssh/rc. If so, and if it looks very different from the version we suggest, that might be the problem.

SSH into LINUX.ANDREW from a non-Unix machine

To make this work you will need an SSH client and also an X Windows package. Consult local enthusiast users of the OS of your choice for advice. Make sure that X programs work locally before trying over SSH (see advice above).

macOS users

You may wish to install XQuartz. Other options are possible. Before using X forwarding you will want to ensure that you can run some X programs on your Mac, for example, "xrefresh".

Windows users

CMU provides an X server for Windows: X-Win32. Others exist.

Using Virtual Andrew to speed up Simics performance on high-latency networks

See the 15-410 Virtual Andrew Accelerator documentation.

Using Microsoft Visual Studio Code, aka "VS Code"

Please make sure you have this setting turned on:

      remote.SSH.lockfilesInTmp: true
      

Accessing 410 AFS space with remote file-access tools

What if you want to build and run your code on LINUX.ANDREW but edit it using remote-access tools, including whizzy IDEs accessing your files via SSHFS? See our guide to Accessing your CS AFS space via scp or sftp.

Questions?

staff-410 at the CS domain


[Last modified Friday January 24, 2025]