<div dir="ltr">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.<div>
<br></div><div>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.</div>
<div><br></div><div><br></div><div><br></div><div>For the curious cats among us: these flags are</div><div><br></div><div>-DCARPET_ENABLE_BBOXSET2: build (but do not use) the new class (for testing)</div><div>-DCARPET_USE_BBOXSET2: use the new class instead of the old (if enabled)<br>
</div><div><br></div><div>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.</div>
<div><br></div><div>-DCARPET_AVOID_LAMBDA: Use macros instead of lambda expressions</div><div>   Lambda expressions simplify writing iterators for data structures.</div><div><br></div><div>-DCARPET_USE_BOOST_FOREACH: Use Boost&#39;s FOREACH instead of C++11 range-based for loops</div>
<div>   Range-based for loops are syntactic sugar for using iterators that (finally!) lead to shorter, simpler code when using iterators.</div><div><br></div><div>-DCARPET_USE_BOOST_SHARED_PTR: Use Boost&#39;s shared_ptr instead of the C++11 shared_ptr<br>
</div><div>   shared_ptr automatically call delete when necessary when pointers go out of scope, simplifying code and increasing safety.</div><div><br></div><div>-erik<div><div><div><br></div>-- <br>Erik Schnetter &lt;<a href="mailto:schnetter@cct.lsu.edu" target="_blank">schnetter@cct.lsu.edu</a>&gt;<br>
<a href="http://www.perimeterinstitute.ca/personal/eschnetter/" target="_blank">http://www.perimeterinstitute.ca/personal/eschnetter/</a>
</div></div></div></div>