[Dune] [Dune-Commit] dune-grid r8493 - trunk/dune/grid/test

Christian Engwer christian.engwer at uni-muenster.de
Fri Oct 5 16:29:02 CEST 2012


On Fri, Oct 05, 2012 at 01:14:40PM +0200, Martin Nolte wrote:
> Hi Christian,
> 
> this GCC pool allocator looks interesting. What's the difference
> between this pool allocator and ours?

The GCC poolallocator allows to allocate (nearly) arbitrary numbers of
objects (ours only one) and supports rebind to different data types
(I'm not sure what ours will do in that case, as it assume a known
alloc-size).

Besides this the basic structure should be similar. The only downside
is that it is a GCC specific extension.

Christian

> Best,
> 
> Martin
> 
> On 10/05/2012 12:05 PM, christi at dune-project.org wrote:
> >Author: christi
> >Date: 2012-10-05 12:05:45 +0200 (Fri, 05 Oct 2012)
> >New Revision: 8493
> >
> >Modified:
> >    trunk/dune/grid/test/test-geogrid.cc
> >Log:
> >test geometry grid with different allocators
> >
> >Modified: trunk/dune/grid/test/test-geogrid.cc
> >===================================================================
> >--- trunk/dune/grid/test/test-geogrid.cc	2012-10-04 09:44:42 UTC (rev 8492)
> >+++ trunk/dune/grid/test/test-geogrid.cc	2012-10-05 10:05:45 UTC (rev 8493)
> >@@ -1,8 +1,21 @@
> >+#ifdef HAVE_CONFIG_H
> >  #include <config.h>
> >+#endif
> >
> >  #ifdef COORDFUNCTION
> >
> >+#if defined __GNUC__ and not defined __clang__ and not defined __ICC
> >+  #define GCCPOOL
> >+#endif
> >+
> >+#include <dune/common/timer.hh>
> >+
> >  #include <dune/common/poolallocator.hh>
> >+#include <dune/common/debugallocator.hh>
> >+#ifdef GCCPOOL
> >+#include <ext/pool_allocator.h>
> >+#endif
> >+
> >  #include <dune/grid/geometrygrid.hh>
> >  #include <dune/grid/geometrygrid/cachedcoordfunction.hh>
> >  #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>
> >@@ -17,7 +30,6 @@
> >  #include "checkpartition.cc"
> >  #include "checkgeometry.cc"
> >
> >-
> >  namespace Dune
> >  {
> >
> >@@ -52,8 +64,11 @@
> >
> >  typedef Dune::GeometryGrid< Grid, CoordFunction > GeometryGrid;
> >  typedef Dune::GeometryGrid< Grid, CoordFunction, Dune::PoolAllocator< char, 16384 > > GeometryGridWithPoolAllocator;
> >+#ifdef GCCPOOL
> >+typedef Dune::GeometryGrid< Grid, CoordFunction, __gnu_cxx::__pool_alloc<char> > GeometryGridWithGCCPoolAllocator;
> >+#endif
> >+typedef Dune::GeometryGrid< Grid, CoordFunction, Dune::DebugAllocator<char> > GeometryGridWithDebugAllocator;
> >
> >-
> >  template <class GeometryGridType>
> >  void test(const std::string& gridfile)
> >  {
> >@@ -108,12 +123,30 @@
> >        gridfile = argv[1];
> >    }
> >
> >+  Dune::Timer watch;
> >+
> >+  watch.reset();
> >    test<GeometryGrid>(gridfile);
> >+  std::cout << "=== GeometryGrid took " << watch.elapsed() << " seconds\n";
> >
> >    // compile, but do not actually call, because it is not working yet
> >    if (false)
> >+  {
> >+    watch.reset();
> >      test<GeometryGridWithPoolAllocator>(gridfile);
> >-
> >+    std::cout << "=== GeometryGridWithPoolAllocator took " << watch.elapsed() << " seconds\n";
> >+  }
> >+
> >+#ifdef GCCPOOL
> >+  watch.reset();
> >+  test<GeometryGridWithGCCPoolAllocator>(gridfile);
> >+  std::cout << "=== GeometryGridWithGCCPoolAllocator took " << watch.elapsed() << " seconds\n";
> >+#endif
> >+
> >+  watch.reset();
> >+  test<GeometryGridWithDebugAllocator>(gridfile);
> >+  std::cout << "=== GeometryGridWithDebugAllocator took " << watch.elapsed() << " seconds\n";
> >+
> >    return 0;
> >  }
> >  catch( const Dune::Exception &e )
> >@@ -121,6 +154,11 @@
> >    std::cerr << e << std::endl;
> >    return 1;
> >  }
> >+catch( const std::exception &e )
> >+{
> >+  std::cerr << e.what() << std::endl;
> >+  return 1;
> >+}
> >  catch( ... )
> >  {
> >    std::cerr << "Unknown exception raised." << std::endl;
> >
> >
> >_______________________________________________
> >Dune-Commit mailing list
> >Dune-Commit at dune-project.org
> >http://lists.dune-project.org/mailman/listinfo/dune-commit
> >
> 
> -- 
> Dr. Martin Nolte <nolte at mathematik.uni-freiburg.de>
> 
> Universität Freiburg                                   phone: +49-761-203-5630
> Abteilung für angewandte Mathematik                    fax:   +49-761-203-5632
> Hermann-Herder-Straße 10
> 79104 Freiburg, Germany
> 
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune
> 

-- 
Prof. Dr. Christian Engwer 
Institut für Numerische und Angewandte Mathematik
Fachbereich Mathematik und Informatik der Universität Münster
Einsteinstrasse 62
48149 Münster

E-Mail	christian.engwer at uni-muenster.de
Telefon	+49 251 83-35067
FAX		+49 251 83-32729




More information about the Dune mailing list