louisjenkinscs / domain-decomposed-pde-solver Goto Github PK
View Code? Open in Web Editor NEWParallel PDE Solver example using METIS/ParMETIS, Exodus-II, Kokkos, Trilinos, and various other libraries. For Sandia National Lab.
Parallel PDE Solver example using METIS/ParMETIS, Exodus-II, Kokkos, Trilinos, and various other libraries. For Sandia National Lab.
It just came to me that I could have done this in a different and much easier manner, but I am not sure how efficient it would be compared to current approach. There would be a question as to whether partitioning the graph w.r.t nodes vs elements (and then handling ghosted nodes) will provide equally high-quality partitioning.
Approach
Tpetra::Map::createOneToOne
will give it a default meh distribution]MatrixInput
adapter to partition the matrixThis results in a partitioning being done based on nodes, and not elements. Also, ghosted IDs are handled prior to partitioning the matrix. Overall, I am skeptical that this will result in as high a quality of a partitioning scheme as one that is based on elements.
Locality of individual processors can be better leveraged by distributing data based on how close processors are in locality (i.e. hosted on same NUMA socket, same PE, etc.) This results in a lot more local communication at the boundary of each partition of the mesh, which will definitely speed things up a bunch.
For example, in the below mesh, it would be terrible if you had processors that owned far remote corners from each other that were on the same PE, as it would result in a lot of unnecessary communication; instead you would want the processors to cluster together in some way.
Given that Exodus-II API reads the entire file into memory at times, and given that you can have multiple processes on a single PE, it would be greatly beneficial if you had groups of processors that shared memory between them, i.e. for the node mappings, the mappings from one Tpetra::Map
to another Tpetra::Map
(used when redistributing the graph when export
/import
is not enough), and on sharing computation with close neighbors, and of course eliding unnecessary communication. This is an extreme optimization that no-doubt will increase the maximum size of the mesh that can be processed.
It would be useful if the Exodus-II API could possibly be streamed in a way that you can read in a portion of the mesh rather than all of it at once.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.