[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r4571 - /trunk/getfem/src/getfem_mesh_region.cc
From: |
andriy . andreykiv |
Subject: |
[Getfem-commits] r4571 - /trunk/getfem/src/getfem_mesh_region.cc |
Date: |
Mon, 31 Mar 2014 09:01:53 -0000 |
Author: andrico
Date: Mon Mar 31 11:01:52 2014
New Revision: 4571
URL: http://svn.gna.org/viewcvs/getfem?rev=4571&view=rev
Log:
- extra provision for partitioning of small regions: if the regions is too
small,
placing all its entries into the partition of zero's thread
Modified:
trunk/getfem/src/getfem_mesh_region.cc
Modified: trunk/getfem/src/getfem_mesh_region.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_mesh_region.cc?rev=4571&r1=4570&r2=4571&view=diff
==============================================================================
--- trunk/getfem/src/getfem_mesh_region.cc (original)
+++ trunk/getfem/src/getfem_mesh_region.cc Mon Mar 31 11:01:52 2014
@@ -141,26 +141,32 @@
mesh_region::partition_begin( ) const
{
size_type region_size = rp().m.size();
+ if (region_size < num_threads())
+ { //for small regions: put the whole region into zero thread
+ if (this_thread() == 0) return rp().m.begin();
+ else return rp().m.end();
+ }
size_type partition_size
= std::ceil(static_cast<scalar_type>(region_size)/
static_cast<scalar_type >(num_threads()));
size_type index_begin = partition_size * this_thread();
- itbegin = rp().m.begin(); size_type i;
- for (size_type i=0;i<index_begin;++i) ++itbegin.thrd_cast();
- return itbegin;
+ const_iterator it = rp().m.begin(); size_type i;
+ for (size_type i=0;i<index_begin;++i) ++it;
+ return it;
}
mesh_region::const_iterator
mesh_region::partition_end( ) const
{
size_type region_size = rp().m.size();
+ if (region_size < num_threads()) return rp().m.end();
size_type partition_size
= std::ceil(static_cast<scalar_type>(region_size)/
static_cast<scalar_type >(num_threads()));
size_type index_end = partition_size * (this_thread() + 1);
- itend = rp().m.begin(); size_type i;
- for (size_type i=0;i<index_end && itend.thrd_cast() !=rp().m.end();++i)
++itend.thrd_cast();
- return itend;
+ const_iterator it = rp().m.begin(); size_type i;
+ for (size_type i=0;i<index_end && it!=rp().m.end();++i) ++it;
+ return it;
}
mesh_region::const_iterator mesh_region::begin( ) const
@@ -477,4 +483,4 @@
return os;
}
-}
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4571 - /trunk/getfem/src/getfem_mesh_region.cc,
andriy . andreykiv <=