As announced in our weekly phone calls, I just committed a set of changes to Carpet. These changes will in the future significantly improve parallel scaling, but also touch much of the low-level code. There is thus a certain inherent danger that something broke. However, I expect that these build and run fine.
The performance-improving features are disabled by default, and require setting compile-time flags to enable them. This will replace the current bboxset set class by a new implementation build on a tree structure. With this improvement, I was able to run Carpet on 260k cores (8k nodes) on Blue Waters. For the curious cats among us: these flags are -DCARPET_ENABLE_BBOXSET2: build (but do not use) the new class (for testing) -DCARPET_USE_BBOXSET2: use the new class instead of the old (if enabled) The new implementation requires certain C++11 features that may not be present on older compilers. In this case, you may have to set some of the macros below to activate work-arounds. You may also need to build the Boost library. -DCARPET_AVOID_LAMBDA: Use macros instead of lambda expressions Lambda expressions simplify writing iterators for data structures. -DCARPET_USE_BOOST_FOREACH: Use Boost's FOREACH instead of C++11 range-based for loops Range-based for loops are syntactic sugar for using iterators that (finally!) lead to shorter, simpler code when using iterators. -DCARPET_USE_BOOST_SHARED_PTR: Use Boost's shared_ptr instead of the C++11 shared_ptr shared_ptr automatically call delete when necessary when pointers go out of scope, simplifying code and increasing safety. -erik -- Erik Schnetter <[email protected]> http://www.perimeterinstitute.ca/personal/eschnetter/
_______________________________________________ Users mailing list [email protected] http://lists.einsteintoolkit.org/mailman/listinfo/users
