Various interactive GPUs platforms are available for the course.
| hostname | CPU | GPU | GPU Compute Capability |
|---|---|---|---|
| lilliput | 4-core Intel Xeon E5504 | C1060 x 4 | 1.3 |
| cseclass01-02 | 6-core AMD Phenom II X6 1090T | GTX 570 (Fermi) | 2.0 |
| cseclass03-07 | 4-core 8-thread Intel Core i7 950 | GTX 460 (Fermi) | 2.1 |
Lilliput is a server with a quad core Intel Nehalem processor (E5504, "Gainsboro") running at 2.0 GHz, 16 GB of memory, and 4 NVIDIA C1060 Tesla GPUs. Here is Documentation about Lilliput. Lilliput runs Ubuntu Linux and it is possible to program in MPI, pthreads, OpenMP, CUDA, or some combination of these models. We have installed some basic documentation in
http://cseweb.ucsd.edu/groups/hpcl/scg/guide.html
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 version 4.0 of the CUDA SDK.
To learn more about these processors, follow these instructions.
All the interactive CSE machines (Lilliput and cseclassNN, N=01-07) used in this course share the same file system, which is served by Lilliput. 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 /class/public/cse260-fa12 to the end of the .bashrc and .bash_profile which are located in your home directory. Log out, and log in.
You will now have environment variables set up for the Intel compilers (for non-CUDA applications, we'll use Intel's compiler rather than Gnu's) and certain handy commands at your disposal, such as setting the number of OMP threads. You'll also have a pre-defined environment variable, called PUB:
/class/public/cse260-fa12
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 and the documentation for the MacMinis applies to running the code, though the path of the file is different.
The output of incrArr includes information about the hardware and should look like this:
Trips: 10 4 Devices Device # 0 has 30 cores Device # 1 has 30 cores Device # 2 has 30 cores Device # 3 has 30 cores Choosing device 0 Device 0 has 30 cores Device is a Tesla C1060, capability: 1.3 CUDA Driver version: 3020, runtime version: 3020 N = 8388480, block size = 128 Success! Host times: Total (0.091742), Compute (0.076029) Device times: Total (0.079212), Compute (0.008758)
For documentation, consult these resources:
Of note:
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 [Tue Oct 9 17:57:49 PDT 2012]