CS 880/479 : Programming Parallel and Distributed Systems


Discussion Board and Mailing List

  • Username: cmpt880_479@googlegroups.com (accept invitiation in your email before beginning to post).
  • SFU Mailing list : cmpt-880@sfu.ca, cmpt-479@sfu.ca

Creating logins for machines (You would have received email with instructions)

Reservations: Google Calendar system

Username: parallel.systems.sfu@gmail.com password: multicore
  • Log in and view google calendars.
  • Create new event.
  • Specify Group Name or Id.
  • Usage mode: Ex (for timed runs) or Non-Ex (for debugging)
  • Specify OS type (Linux for the class).
  • If machine is running in Solaris (ping instructor to reboot in Linux)
  • Specify time on calendar

valencia.cs.sfu.ca

  • AMD server with two quad-core CPUs (each cpu supports 2 threads). Access requires reservation.
  • Has two chips. Each chip has four cores. Each core has private L1 instruction and data caches (64K) and a private L2 cache (512K). The L3 cache is shared among the cores on the same chip. $ cat /proc/cpuinfo for more details
  • Dual boot Linux and Solaris.

miga.cs.sfu.ca; sumi.cs.sfu.ca

  • AMD server with one 12 core CPU. Access requires reservation.
  • Each core has private L1 instruction and data caches (64K) and a private L2 cache (512K). The L3 cache is shared among the cores on the same chip 12MB. $ cat /proc/cpuinfo for more details
  • Dual boot Linux and Solaris.

cs-amoeba-n1.cs.surrey.sfu.ca (Need to ssh into head cs-amoeba from which you can ssh into the n1 node)

  • AMD server with 24 cores. 2 sockets; each socket 12 core CPU. Access requires reservation.
  • Has two chips. Each chip has four cores. Each core has private L1 instruction and data caches (64K) and a private L2 cache (512K). The L3 cache is shared among the cores on the same chip 18MB. $ cat /proc/cpuinfo for more details
  • Runs Ubuntu 10.04. Available compilers and gcc. To avail of intel icc: bash$ source /p/amoeba/shared/lib/lib64/intel/stm/bin/iccvars.csh intel64. Only compile on amoeba-head not on the n1 nodes.
  • Performance counter infrastructure : Based on perf stat. We have a 2.6.32-32 kernel and hence the perf tool will be perf_2.6.32-32. How to use perf [Slides]

Tools

VNC

Using a VNC session allows you to use your Unix desktop from any remote client, Unix or Windows. This is very convenient, because you can log off your working system without killing your shells and closing your applications. Learn how to configure and use your own VNC server.

Performance Monitoring


Solaris
You can monitor performance on Solaris using cputrack, a performance monitoring tool that runs outside your process or via the instrumentation of your program.

Cputrack has a small performance overhead (I measured about 3% on Sparc T2000 when samples were taken every second).

The overhead could be reduced if you instrument your program to measure performance via cpc library. (Click here

If you want to do fancy performance instrumentation, such as taking a sample ever N instructions, you will also need to do your own instrumentation. This code sample shows how to sample counters at instruction-based intervals. (Thanks to Hossein Maserrat for the sample.)

    Linux/x86
On Linux/x86 performance counters can be sampled using perfmon2 library. Here are instructions on how to install the library and the required kernel patches. We've tried unsuccessfully to install the patches on Ubuntu. On Fedora the installation succeeded.

Binding threads/processes to processors

When you run experiments, you'd often want to bind a thread or a process to a particular processor, core or a thread context. Here is the explanation of how this can be done along with some code samples. Another example with pthreads.