/[xulu]/trunk/src/appl/parallel/spmd/AdvancedSPMDServerInterface.java
ViewVC logotype

Contents of /trunk/src/appl/parallel/spmd/AdvancedSPMDServerInterface.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 78 - (show annotations)
Wed Feb 10 16:43:46 2010 UTC (14 years, 10 months ago) by alfonx
File size: 3080 byte(s)
Merged branch 1.8-gt2-2.6 to trunk. Now the trunk is based on GeoTools 2.6.1 and schmitzm-2.0.x
1 package appl.parallel.spmd;
2
3 import appl.parallel.server.PartitionDataManager;
4 import appl.parallel.spmd.split.DataPartition;
5
6 /**
7 * Performance optimizations can be made with this type of controller. It allows heavy
8 * multithreading. Also allows preloading of partitions using SyncPoints.
9 *
10 * @author Dominik Appl
11 */
12 public interface AdvancedSPMDServerInterface extends SPMDServerInterface {
13 /**
14 * The partition is loaded in a separate thread into the local {@link PartitionDataManager}
15 * You must specify the partitionname and a {@link SyncPoint}.
16 * You can specifiy a priority for the thread in the {@link SyncPoint}
17 *
18 * @param partition the name of the partition for identification
19 * @param s the associated {@link SyncPoint}
20 *
21 * @see appl.parallel.spmd.AdvancedSPMDClientInterface#mergePartition(java.lang.Object, appl.parallel.spmd.SyncPoint)
22 * @see SPMDServerController#getPartition(String)
23 *
24 */
25 public void preloadPartition(String partition, SyncPoint s);
26
27 /**
28 * The partition is loaded in a separate thread into the local {@link PartitionDataManager}
29 * You must specify the partitionname and a {@link SyncPoint}.
30 * You can specifiy a priority for the thread in the {@link SyncPoint}
31 *
32 * @param partition the name of the partition for identification
33 * @param idx the index of the partition in the multidata object
34 * @param s the associated {@link SyncPoint}
35 *
36 * @see appl.parallel.spmd.AdvancedSPMDClientInterface#mergePartition(java.lang.Object, appl.parallel.spmd.SyncPoint)
37 * @see SPMDServerController#getPartition(String)
38 *
39 */
40 public void preloadMultiPartition(String partition, int idx, SyncPoint s);
41
42
43 /**
44 * Waits until the Thread with the specified SyncPoint finishes. After that
45 * the Thread is removed. A second call will cause a exeception.
46 *
47 * @param s
48 * the {@link SyncPoint}
49 * @throws UnsupportedOperationException
50 * if a thread with the specified SyncPoint was not found or was
51 * already synchronized!
52 */
53 public void synchronizeToSyncPoint(SyncPoint s);
54
55 /**
56 * If there are multiple processors on the machine and the current task
57 * supports
58 * {@link SPMDTask#supportsMultiThreading() supports multithreading} there
59 * are several threads created. Each thread uses a different
60 * {@link SPMDServerInterface#getLocalCalculationBounds(DataPartition) calculation area}. Now there might
61 * be parts of the taskcode were multithreading is undesired, e.g. when
62 * operations affect the whole partition. In this case you should use this
63 * method to guarantee that only one thread has access to a code block.
64 *
65 * @return whether this thread is the "master" thread, which means whether this thread
66 * refers to the first task created.
67 */
68 public boolean isMasterThread();
69
70 /**
71 * You should call this method from time to time to clear all syncpoints and the associated
72 * threads out of the memory
73 */
74 public void clearSyncData();
75
76
77 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26