forked from aprell/RCCE
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
153 lines (125 loc) · 6.51 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//
// Copyright 2010 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//
Welcome to RCCE, a communication environment for the SCC processor
------------------------------------------------------------------
RCCE is designed to run on a variety of platforms including:
* Baremetal on the SCC chip,
* Linux on the SCC chip,
* A functional emulator running on top of OpenMP.
============ test line ============
This particular release has been validated only for Linux and the
OpenMP emulator (a baremetal build option is available, but has
not been tested). It may seem a bit cumbersome to work with, but
that's so we can replicate the "features" of the SCC chip ... i.e.
once a program runs on the emulator, it's likely to work on real
hardware.
There are several versions of the RCCE library that can be
built with this release. They expose different options ...
* The "gory" interface ... this is the low level interface. It
makes the programmer responsible for declaring and managing
synchronization flags and for managing the on-chip message
passing buffer. This mode gives access to the low level
get/put routines, as well as to the higher level two-sided
send/receive interface.
* The "nongory" interface ... a higher level interface that
hides the particulars of the message passing buffers and
inter-core synchronization from the programmer, including the
management of synchronization flags. This interface does not
give access to the low level put/get routines.
* Big Flags ... each flag used to coordinate interaction
between units of execution (UE) fills a whole cache line.
This has lower latency but wastes memory.
* Small flags ... flags are stored in a single bit; many are
packed into a single cache line. A slight hit on latency but
consumes less message passing buffer memory.
* With or without software controlled power management. POWER
MANAGEMENT IS AN EXPERIMENTAL FEATURE THAT HAS NOT BEEN TESTED
AS THOROUGHLY AS THE REST OF THE LIBRARY. FOLLOW THE SPECIAL
INSTRUCTIONS BELOW TO CONFIGURE THE "makeall" SCRIPT TO BUILD
VERSIONS OF THE LIBRARY THAT INCLUDE THE POWER MANAGEMENT API.
You can build all versions of the library supported with this
release, as follows:
1. Type "./configure <PLATFORM>". This creates file common/symbols
from file common/symbols.in, inserting the proper root of the
directory tree, and also inserting the proper platform (SCC_LINUX,
SCC_BAREMETAL, or emulator). Any existing file common/symbols
will be overwritten, so do not update that file by hand. Instead,
specify details of your build environment in common/symbols.in
The configure utility also specializes the rccerun command (see
below) for the target platform. You may need to make the configure
script executable (type "chmod u+x configure").
To enable RCCE's power management API, you must specify the string
"ADD_POWER_API" as the second parameter on the command line when
you execute the configure script. Because this is an experimental
feature, it is not built by default. See above.
2. Type "./makeall" to build all libraries. Alternatively you
can build individual libraries by calling make directly.
Type "make usage" to discover the libraries you can build.
The libraries generated by this procedure will be put in the directory
bin/<PLATFORM>
An easy way to test correct operation of the platform is to build and
run a prepackaged RCCE stress test after building the RCCE library:
"./build_stress_test; ./run_stress_test <size>"
where size is -S (small), -M (medium), or -L (large).
A number of applications are included with this release in the
"apps" directory. These include:
* PINGPONG: bounces messages between a pair of UEs
* SHIFT: passes messages around a logical ring of UEs
* STENCIL: solves a simple PDE with a basic stencil code
* SHARE: tests the off-chip shared memory access
* NPB: NAS Parallel Benchmarks, LU and BT
* XHPL: the Linpack benchmark
To build an application, go to the corresponding subdirectory of "apps"
and type "make". It will return a list of options for building
versions of an application. It may be necessary to edit the Makefile
in an application directory if parts of the original RCCE code tree
got moved with respect to each other.
We suggest that you start with PINGPONG, SHIFT, SHARE, and STENCIL and
save the more complex NPB and XHPL for later. The STENCIl directory
contains a few simple variations of the base code that exercise RCCE's
experimental power management API.
See the apps/XHPL directory for instructions on how to build and run
Linpack.
To run an application, you must use the rccerun command. This command
is used to launch Linux jobs on SCC or on the emulator. To run application
APP with P cores, type
"rccerun -nue P -f HOSTFILE APP [application parameters]"
where HOSTFILE contains the list of physical core IDs to be used.
By default, the host file "./hosts/rc.hosts" should be used.
You can see an example of the use of rccerun in the run_stencil and
run_stencil_synch shell scripts in the "apps/STENCIL" directory.
If my_script is a shell script that contains the actual RCCE executable
RCCE_X (which may take application parameters), make sure to execute it as
follows inside the script: "/path_to_RCCE_X/RCCE_X $@" This is necessary
so that all the parameters to the program, including those added by
rccerun, are supplied to the executable.
Example:
Shell script my_script contains executable RCCE_X that expects two
parameters, n and m. Write the script as:
----------start of my_script---------
line 1
line 2
line ...
./RCCE_X $@
line ...
----------end of my_script-----------
To run the code on P cores of the SCC, type
"rccerun -nue P -f HOSTFILE my_script m n"
MANPAGES
This release of RCCE has manpages. To access those manpages, add a path to
your MANPATH as follows:
export MANPATH="<path to where you installed RCCE>/man:${MANPATH}"