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