1 |
package appl.parallel.spmd; |
2 |
|
3 |
import java.io.PrintStream; |
4 |
|
5 |
/** |
6 |
* This class extends the {@link SPMDClientInterface} with additional features for performance tuning. You can merge |
7 |
* partitions in background (so that the not very cpu-intensive communication can |
8 |
* happen during extensive calculations). <br> |
9 |
* |
10 |
* @author Dominik Appl |
11 |
*/ |
12 |
public interface AdvancedSPMDClientInterface extends SPMDClientInterface { |
13 |
|
14 |
/** |
15 |
* Merges like {@link SPMDClientController#mergePartition(int)}, but in a |
16 |
* separate thread, so that communication does not block computation. See |
17 |
* also {@link SyncPoint synchronization points} |
18 |
* |
19 |
* @param partition |
20 |
* the partition to be merged (must be splittable) |
21 |
* @param s |
22 |
* a syncpoint |
23 |
*/ |
24 |
public void mergePartition(Object partition, SyncPoint s); |
25 |
|
26 |
/** |
27 |
* Merges like |
28 |
* {@link SPMDClientController#mergeMultiData(MultiDataObject, int)}. But |
29 |
* allows also {@link SyncPoint synchronization points} |
30 |
* |
31 |
* @param multidata |
32 |
* the multidataobject |
33 |
* @param idx |
34 |
* the partition of the {@link MultiDataObject} to be merged |
35 |
* @param s |
36 |
* a {@link SyncPoint} |
37 |
*/ |
38 |
public void mergeMultiData(MultiDataObject multidata, int idx, SyncPoint s); |
39 |
|
40 |
/** |
41 |
* Same functionality as {@link #mergePartition(Object, SyncPoint)}, gives |
42 |
* a message to the given {@link PrintStream} |
43 |
* |
44 |
* @param partition |
45 |
* the partition to merge |
46 |
* @param s |
47 |
* a {@link SyncPoint} |
48 |
* @param stream |
49 |
* the message is given out to this stream (or null for no |
50 |
* message) |
51 |
* @param message |
52 |
* the message to be displayed when finished (or null for no |
53 |
* message) |
54 |
* @see #mergeMultiData(MultiDataObject, int, SyncPoint) |
55 |
*/ |
56 |
public void mergePartition(Object partition, SyncPoint s, |
57 |
PrintStream stream, String message); |
58 |
|
59 |
/** |
60 |
* Merges like |
61 |
* {@link SPMDClientController#mergeMultiData(MultiDataObject, int)}. But |
62 |
* allows also {@link SyncPoint synchronization points}. At the end of the |
63 |
* merge a message is given to the provided {@link PrintStream}. |
64 |
* |
65 |
* @param multidata |
66 |
* the multidataobject |
67 |
* @param idx |
68 |
* the partition of the {@link MultiDataObject} to be merged |
69 |
* @param s |
70 |
* a {@link SyncPoint} |
71 |
* @param stream |
72 |
* the message is given out to this stream (or null for no |
73 |
* message) |
74 |
* @param message |
75 |
* the message to be diplayed when finished (or null for no |
76 |
* message) |
77 |
*/ |
78 |
public void mergeMultiData(MultiDataObject multidata, int idx, SyncPoint s, |
79 |
PrintStream stream, String message); |
80 |
|
81 |
/** |
82 |
* Waits until the Thread with the specified SyncPoint finishes. After that |
83 |
* the Thread is removed. A second thread which synchronizes to the same |
84 |
* Point will directly continue. |
85 |
* |
86 |
* @param s |
87 |
* the {@link SyncPoint} |
88 |
* @throws UnsupportedOperationException |
89 |
* if the SyncPoint does not exist and has never existed |
90 |
*/ |
91 |
public void synchronizeToSyncPoint(SyncPoint s); |
92 |
|
93 |
} |