The Fermi TBS
-------------

This package contains the following programs:

2d -- Executes a synthetic kernel using a given grid shape and
      residency, and outputs thread block and SM assignments.

sched.py -- A full implementation of the Fermi TBS. 

verify.py -- Verifies the output of sched.py against that of 2d

gpc_to_mp -- A rudimentary and preliminary way to figure out which
	     GPCs contain which SMs.


2d is run as below:

./2d 28 1 2 mult_equal > 28x1x2.dat

You can verify sched.py now by:

./verify 28x1x2.dat

You can also invoke sched.py stand-alone as:

python ./sched.py 28 1 2 gpu-id

Where gpu-id is one of the supported GPUs. Invoke sched.py without
arguments to see the list of GPUs supported.

If your GPU has a different SM-to-GPC mapping, you can try to discover
it using gpc_to_map:

./gpc_to_map

Each line after the first denotes a cluster. Name the cluster after
the first SM in that cluster and add it to sched.py. See the code for
examples.

gpc_to_map is very preliminary and may not work on your GPU. Here is
how the output should look:

$ ./gpc_to_mp 
GPU: Quadro 6000, MP: 14, CC: 2.0
0 4 8 12 
3 7 11 13 
1 5 9 
2 6 10

$ ./gpc_to_mp 
GPU: GeForce GTX 480, MP: 15, CC: 2.0
0 4 8 12 
1 5 9 13 
2 6 10 14 
3 7 11

Have fun!

- Sreepathi Pai <sreepai@ices.utexas.edu>
