Currently the only MeshIO subclass that supports reading in parallel is Nemesis. Even with ParallelMesh, the others read in serial and then delete remote elements on each rank. This is still helpful if your mesh doesn't become large until after adaptive refinement, or if your RAM usage doesn't become large until after sparse matrix allocation... but if you've got a mesh in a serial format that's too large to read alone on one processor, we don't have the tools to help you right now.
You'd either need to borrow a large memory machine for long enough to read in the Tetgen file and rewrite it as Nemesis, or you'd need to modify the TetGenIO to support reading a pre-parallelized ParallelMesh. We'll be adding such support eventually, but it's not going to be in the near future. Talking with Ben Kirk today, we've had the idea that for a lot of applications it would be useful for MeshInput and EquationSystems IO to be able to "stream" data to the app in blocks of elements, so that simple read/transform/write operations would require O(1) instead of O(N_elem) memory use; this functionality would also lend itself to M-to-N ParallelMesh restarts without having to add special ParallelMesh-aware functionality to each IO class. But it's not something that will be coming any time soon. --- Roy On Fri, 28 Oct 2011, [email protected] wrote: > could someone give me an example of how to use parallelmesh? > I have the problem that I have 12GB of RAM, 8 CPU's, but a > mesh which has several GB (generated with tetgen). Now, if I > understood everything right, a copy of the mesh is kept on > every processor. I am reading the mesh with tetgen_io but, > the copies on the processors already exceed the 12 GB RAM. > If I use only one processor the mesh uses about 5GB. > > I am using the following lines of code to read the mesh: > Mesh new_mesh; > > TetGenIO TETGEN(new_mesh); > > { // read TETGEN file > OStringStream inmesh; > inmesh << mesh_dir << ReadMesh[actual_pulse]<<".ele"; > TETGEN.read(inmesh.str().c_str()); > } > > > > Do I maybe have to make a change to the code to be able to > have the mesh only on one processor? > I have tried to find a solution in the example codes, such > as ex4. > ((By the way, in the help-text in example 4 it says: > 'The significant differences are marked with "PARALLEL > CHANGE"',but, later nothing is marked)) > > I have also tried to compile libmesh with --enable-parmesh > but it didn't help - I still had one copy of the mesh on > every processor. > > So, I thought I might read the mesh and divide it by using > parallelmesh. But, if I use parallelmesh, how do I build an > equationsystems object then (which should be initialized > with mesh and not parallelmesh)? > I have found a post some years ago where this was already > discussed by Roy. There, he suggested to read the mesh with > one processor, divide it and write the divisions to files. > Then, when carrying out my calculation I could read these > files. > > > > I compiled libmesh under Ubuntu 10.04 following the > instructions on > > http://libmesh.sourceforge.net/wiki/index.php/Installation > > in the section 'libmesh from cvs, petsc 2.3.0, slepc 2.3.0 > with MPI enabled, debian' > > > ------------------------------------------------------------------------------ > The demand for IT networking professionals continues to grow, and the > demand for specialized networking skills is growing even more rapidly. > Take a complimentary Learning@Cisco Self-Assessment and learn > about Cisco certifications, training, and career opportunities. > http://p.sf.net/sfu/cisco-dev2dev > _______________________________________________ > Libmesh-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/libmesh-users > > ------------------------------------------------------------------------------ The demand for IT networking professionals continues to grow, and the demand for specialized networking skills is growing even more rapidly. Take a complimentary Learning@Cisco Self-Assessment and learn about Cisco certifications, training, and career opportunities. http://p.sf.net/sfu/cisco-dev2dev _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
