[Users] Recent Carpet changes
Erik Schnetter
schnetter at cct.lsu.edu
Sat Jun 8 11:07:41 CDT 2013
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 <schnetter at cct.lsu.edu>
http://www.perimeterinstitute.ca/personal/eschnetter/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.einsteintoolkit.org/pipermail/users/attachments/20130608/795b726a/attachment.html
More information about the Users
mailing list