You can obtain a free 30-day demo copy of TreadMarks or you can get a normal license. Licensing and pricing are available by writing to treadmarks@ece.rice.edu.
-I$(TmkDIR)/include -I/usr/local/include
needs to be uncommented.
See README.Makefile for more details.
To compile parallel ilink, mlink, or linkmap, do
make ilink.udp make mlink.udp make linkmap.udprespectively.
These will put the corresponding executables wherever the BINDIR flag points to.
ln -s ../bin/ilink.udp ilinkThere are some compilation flags you may want to set to prepare for a run. See README.Makefile or the Makefile itself for instructions.
For example, in the command:
linkmap -w 40 -- -f machinesthe "-w 40" is seen by FASTLINK, while the "-f machines" is seen by TreadMarks.
-- -f machinesis appended.
E.g.
linkmapbecomes
linkmap -- -f machinesWhen modifying lcp-produced scripts be careful that the first occurrence of the string ilink, linkmap, or mlink is a parameter to lsp. It is the second occurrence which is actually the call to the program.
In the data directory you need to have a file called
machinesthat specifies which machines should be used. The format is one machine name per line. This is the only thing you need to change if you want to change which machines the program runs on.
If you use the automatic estimate of maxworkingset, and the code complains that this estimate is too low, you have hit a bug and should report it (see README.bugreport). However, you can still use the -w flag to work around the bug, while I fix it.
For example, to run ILINK with maxworkingset defined to 40, you would type:
ilink -w 40 -- -f machinesThe error message you would encounter if maxworkingset is too low will report what the current value is. You may try incrementally larger values until the run succeeds.
The -m option for parallel FASTLINK provides a simple way to determine shared memory requirements for a specific run. When you run with this option, FASTLINK will do some brief i/o and computation, and then exit (before starting the actual linkage analysis) with a diagnostic message. Because TreadMarks itself is never actually started up for this kind of run, you must also specify the number of processors you plan to run on, so FASTLINK can properly calculate memory requirements. You can specify number of processors with
-nwhere
For example, to calculate memory usage for a LINKMAP run on 2 processors, you would type:
linkmap -n 2 -mA sample run of LINKMAP with this command yielded:
LINKMAP is currently compiled with PRECOMPUTE=1.
This run will require at least:
7004071 bytes of shared memory on 2 processor(s)
6421943 bytes of shared memory on 1 processor(s)
Recompiling with PRECOMPUTE=0 would yield:
6733607 bytes of shared memory on 2 processor(s)
6094621 bytes of shared memory on 1 processor(s)
Please refer to the
README.makefile and
README.TreadMarks for details.
You can see from this message the difference in memory usage between
compiling with PRECOMPUTE=0 and PRECOMPUTE=1. This can be useful when
determining whether or not you can expect to compute a given run on your
system.
As with the -f flag above, -w, -n, and -m would need to be added to your lcp-produced script if you use them in conjunction with a script.
Execution time (!parallelThetas) = 0.099 Execution time (parallelThetas) for 1 = 0.052 Execution time (parallelThetas) for 2 = 0.896 Execution time (parallelThetas) for 3 = 0.096 Execution time (!parallelThetas) = 0.086 Elapsed time: 1.28 secondsEach of the "Execution time" statements will appear one at a time as computation progresses. The difference between parallelThetas and !parallelThetas has to do with whether all processors are working together on a single theta, or whether they are working independently on different thetas. The "Elapsed time" statement shows the total execution time for the entire run.