Interactive GPU Stations (CSE 260)

Various interactive GPUs platforms are available for the course.

hostnameCPUGPUGPU Compute Capability
cseclass01-026-core AMD Phenom II X6 1090TGTX 570 (Fermi)2.0
cseclass03-074-core 8-thread Intel Core i7 950GTX 460 (Fermi)2.1

Note: Cseclass01 is currently unavailable.

The cseclass machines come in two types; 01-02 are AMD-based, 03-07 are Intel based. Both have Fermi GPUs but of different types. In particular, 01-02 have GTX 570's with 512 cores configured into 16 multiprocessors each with 32 cores, whereas 03-07's GTX 460's have 336 cores configured as 7 mulitprocessors with 48 cores.

All 8 machines are running CUDA version 5.5.

To learn more about these processors, follow these instructions.


Setting up your environment on the CSE machines

All the interactive CSE machines (cseclassNN, N=01-07) used in this course share the same file system. To get started, log in to any of the CSE systems, and modify the .bashrc and .bash_profile files. Copy the files BASHRC and PROFILE, located in $PUB to the end of the .bashrc and .bash_profile which are located in your home directory. Log out, and log in.

You'll get an augumented PATH, a few handy commands, and a pre-defined environment variable, called PUB:

/class/public/cse260-wi14

CUDA

You've been provided with the increment array example code in $PUB/Examples. (This directory structure is set up on all course hardware testbeds). You'll notice that the Makefile provided with each example includes an "arch" file of the form $(PUB)/Arch/arch.* (or arch.*.*.) This arch file contains various settings needed to compile and built executables and generally it should not be changed. Avoid using a private copy in case (rarely) you need to patch an arch file. (Many of the Makefiles in the provided codes use conditional statements that enable the Makefile to be portable onto the platforms identified in the course.) Arch files for serial, openmp, MPI, and CUDA (for machines with Nvidia GPUs) are provided in $(PUB)/Arch The CUDA compiler is called nvcc and your path should already be set up to find it.

To establish that your environment has been set up correctly, make a copy of the incrArray program. Compile and run the program in your home directory. This program increments an array and it shows you the basics of CUDA such as how to manage storage on the device (the GPU) and to take timings.

The output of incrArr includes information about the hardware and should look something like this (the cseclass platforms don't all have the same device, so the output will differ depending on which one you use)

Device 0 has 15 cores
Device # 0 has 1.249207 GB global memory
Device is a GeForce GTX 570, capability: 2.0
CUDA Driver version: 5050, runtime version: 5050

sm_20
N = 8388480, reps = 10

Success!

N = 8388480, block size = 128
reps: 10

Device running time: Total (0.076035 sec.), Compute (0.002081 sec.)

For documentation, consult these resources:

Of note:

  1. CUDA C Programming Guide
  2. CUDA Toolkit Reference Manual
  3. Best Practices Guide
  4. NVIDIA CUDA Library Documentation (html)

Be sure to use the documentation for the Linux port. The web site provides (free) downloads for the drivers, toolkit, and SDK, together with downloadable applications.

There isn't a lot published specifically about Fermi. The CUDA C Programming Guide, version 4.0, describes many of the details. (The Documentation is here, as described above). Here is an article that gives an overview: Nvidia's 'Fermi' GPU architecture revealed, Scott Watson, tech report.com, Sept 2009.

These NVIDIA documents are also useful.


Maintained by [Thu Jan 16 13:11:22 PST 2014]

Valid XHTML 1.0 Strict   Valid CSS!