Branch data Line data Source code
1 : : #ifndef READ_PARALLEL_HPP
2 : : #define READ_PARALLEL_HPP
3 : :
4 : : #include "moab/Forward.hpp"
5 : : #include "moab/ReaderIface.hpp"
6 : : #include "DebugOutput.hpp"
7 : :
8 : : #include <string>
9 : :
10 : : namespace moab
11 : : {
12 : :
13 : : class ReadUtilIface;
14 : : class ParallelComm;
15 : : class Error;
16 : :
17 : : class ReadParallel
18 : : {
19 : :
20 : : public:
21 : : static ReaderIface* factory( Interface* );
22 : :
23 : : //! load a file
24 : : ErrorCode load_file( const char* file_name, const EntityHandle* file_set, const FileOptions& opts,
25 : : const ReaderIface::SubsetList* subset_list = 0, const Tag* file_id_tag = 0 );
26 : :
27 : : //! load multiple files
28 : : ErrorCode load_file( const char** file_names, const int num_files, const EntityHandle* file_set,
29 : : const FileOptions& opts, const ReaderIface::SubsetList* subset_list = 0,
30 : : const Tag* file_id_tag = 0 );
31 : :
32 : : ErrorCode load_file( const char** file_names, const int num_files, const EntityHandle* file_set, int parallel_mode,
33 : : std::string& partition_tag_name, std::vector< int >& partition_tag_vals, bool distrib,
34 : : bool partition_by_rank, std::vector< int >& pa_vec, const FileOptions& opts,
35 : : const ReaderIface::SubsetList* subset_list, const Tag* file_id_tag, const int reader_rank,
36 : : const bool cputime, const int resolve_dim, const int shared_dim, const int ghost_dim,
37 : : const int bridge_dim, const int num_layers, const int addl_ents );
38 : : //! Constructor
39 : : ReadParallel( Interface* impl = NULL, ParallelComm* pc = NULL );
40 : :
41 : : //! Destructor
42 [ - + ]: 42 : virtual ~ReadParallel() {}
43 : :
44 : : static const char* parallelOptsNames[];
45 : :
46 : : enum ParallelActions
47 : : {
48 : : PA_READ = 0,
49 : : PA_READ_PART = 1,
50 : : PA_BROADCAST = 2,
51 : : PA_DELETE_NONLOCAL = 3,
52 : : PA_CHECK_GIDS_SERIAL = 4,
53 : : PA_GET_FILESET_ENTS = 5,
54 : : PA_RESOLVE_SHARED_ENTS = 6,
55 : : PA_EXCHANGE_GHOSTS = 7,
56 : : PA_RESOLVE_SHARED_SETS = 8,
57 : : PA_AUGMENT_SETS_WITH_GHOSTS = 9,
58 : : PA_PRINT_PARALLEL = 10,
59 : : PA_CREATE_TRIVIAL_PARTITION = 11,
60 : : PA_CORRECT_THIN_GHOSTS = 12
61 : : };
62 : :
63 : : static const char* ParallelActionsNames[];
64 : :
65 : : enum ParallelOpts
66 : : {
67 : : POPT_NONE = 0,
68 : : POPT_BCAST,
69 : : POPT_BCAST_DELETE,
70 : : POPT_READ_DELETE,
71 : : POPT_READ_PART,
72 : : POPT_DEFAULT
73 : : };
74 : :
75 : : //! PUBLIC TO ALLOW TESTING
76 : : ErrorCode delete_nonlocal_entities( std::string& ptag_name, std::vector< int >& ptag_vals, bool distribute,
77 : : EntityHandle file_set );
78 : :
79 : : ErrorCode delete_nonlocal_entities( EntityHandle file_set );
80 : :
81 : : protected:
82 : : ErrorCode create_partition_sets( std::string& ptag_name, EntityHandle file_set );
83 : :
84 : : private:
85 : : Interface* mbImpl;
86 : :
87 : : // each reader can keep track of its own pcomm
88 : : ParallelComm* myPcomm;
89 : :
90 : : DebugOutput myDebug;
91 : :
92 : : Error* mError;
93 : : };
94 : :
95 : 21 : inline ErrorCode ReadParallel::load_file( const char* file_name, const EntityHandle* file_set, const FileOptions& opts,
96 : : const ReaderIface::SubsetList* subset_list, const Tag* file_id_tag )
97 : : {
98 : 21 : return load_file( &file_name, 1, file_set, opts, subset_list, file_id_tag );
99 : : }
100 : :
101 : : } // namespace moab
102 : :
103 : : #endif
|