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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 78 - (hide 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 mojays 2 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