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)

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


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

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.

This topic: Main > TWikiGroups > CompilerGroup > CompilerRepository > SpeculativeParallelism
Topic revision: r3 - 2009-04-09 - ChenDing
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback