Note to new users of BOP
The easiest way is to have a guest account on our system, check out bop module using subversion, try the add test by compiling it using command "make add" at the top level. Run the compiler on a 32-bit machine, e.g. cycle1. Then you can run the parallel add, add/bop_output/add_par, on the 8-CPU machine, node4x2a.
To add 100 million numbers in 4 blocks, use "add_par 4 100."
The speculation is controlled in two ways. The first is through
direct calls inside the application program. The calls are:
BOP_SetSpecDepth (as before)
Set_BatchBOP()
Set_RotatingBOP()
The depth and type can also be controlled through environment
variables: BOP_SpecDepth and BOP_Type. BOP_Type can be either
BatchBOP or
RotatingBOP. The second option permits changing
speculation parameters without recompiling an application.
For example, in c-shell, the command
setenv BOP_SpecDepth 5
will tell the run-time system to use 6 processors in the parallel
execution.
The new version reports more information at the end of an execution.
Below is an example output to the screen:
runTime=19.089694, numSpecWins=4 numUndyWins=1 numMain=1
sizePutLNC=1 sizeMalloc=0 sizeUnmonitored=0 sizePushed=0 specDepth=2 specType=2 (1 is
BatchBOP, 2 is
RotatingBOP)
The same information is written to a file named
"bop_test_results.txt". The above execution appends the following
line:
BOPStats: 19.089694 4 1 1 1 0 0 0 2 2
The file serves as a record of past executions.
--
KirkKelsey - 15 Jan 2008
Speculative Parallelism code (both "BOP" and "FastTrack") is in the subversion repository
file:///p/compiler/repos/bop/trunk Both tools currently use our modified version of
gcc 4.0.1. In addition to the runtime libraries (located in the
INST directory) the repository contains a number of test programs.
--
ChenDing - 15 Jan 2008
The file inst.c has been augmented to support BOP on MacBook Pro running Mac OS X 10.5. The changes are:
Re-implemented WRITEOPT macro based on Xipeng's original version. To find the proper field names I used gcc -E -c inst.c to see the exact definitions, for example, __err.
MAP_ANONYMOUS in Linux is MAP_ANON on Mac.
The changes are wrapped around by #if defined(
MACH) ... #else /* Linux*/ ... #endi f.
MACH seems defined by default on my machine.
Last but very important, SIGSEGV on Linux is SIGBUS on Mac. I used SIG_MEMORY_FAULT a nd defined it differently based on
MACH.
The assembler currently makes benigh complaints about indirect jump missing *, which c an be ignored.
The bop port is tested for the add program and works with no visible problems.