From: Shengli X. <she...@gm...> - 2008-08-01 06:48:34
|
2008/7/31 Roy Stogner <ro...@st...> > > On Thu, 31 Jul 2008, Shengli Xu wrote: > > Roy, Could you tell me what specific profiling information should be >> gotten? I have to solve this problem. >> > > Just this: "Exactly where is the delay occurring?" If you're using > our PerfLog objects, for example, you could create one in the > assembly, activate it right before the matrix adds, and deactivate it > right after; if that ends up being responsible for most of your > runtime then you've verified that my "bad matrix assembly" hypothesis > was correct. Roy, I do an example using libMesh0.5.0 and libMesh0.6.2. They are both in debug mode. libMesh0.5.0 is very fast, But libMesh0.6.2 is very slow. The mesh information is : Mesh Information: mesh_dimension()=3 spatial_dimension()=3 n_nodes()=2772 n_elem()=1920 n_local_elem()=1920 n_active_elem()=1920 n_subdomains()=1 n_processors()=1 processor_id()=0 libMesh0.5.0 result: ---------------------------------------------------------------------------- | Time: Fri Aug 1 14:31:00 2008 | OS: Linux | HostName: xu | OS Release 2.6.15-52-386 | OS Version: #1 PREEMPT Mon Jun 9 17:24:46 UTC 2008 | Machine: i686 | Username: xsl ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- | Matrix Assembly Performance: Alive time=18.1943, Active time=18.0932 ---------------------------------------------------------------------------- | Event nCalls Total Avg Percent of | | Time Time Active Time | |----------------------------------------------------------------------------| | | | Bc 1920 0.0252 0.000013 0.14 | | Ke 1920 15.3852 0.008013 85.03 | | elem init 1920 2.2899 0.001193 12.66 | | matrix insertion 1920 0.3929 0.000205 2.17 | ---------------------------------------------------------------------------- | Totals: 7680 18.0932 100.00 | ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- | Reference count information | ---------------------------------------------------------------------------- | 12LinearSolverIdE reference count information: | Creations: 1 | Destructions: 1 | 12SparseMatrixIdE reference count information: | Creations: 1 | Destructions: 1 | 13NumericVectorIdE reference count information: | Creations: 4 | Destructions: 4 | 4Elem reference count information: | Creations: 11969 | Destructions: 11969 | 4Node reference count information: | Creations: 2772 | Destructions: 2772 | 5QBase reference count information: | Creations: 2 | Destructions: 2 | 6DofMap reference count information: | Creations: 1 | Destructions: 1 | 6FEBase reference count information: | Creations: 1 | Destructions: 1 | 6System reference count information: | Creations: 1 | Destructions: 1 | 9DofObject reference count information: | Creations: 19433 | Destructions: 19433 | N10Parameters5ValueE reference count information: | Creations: 8 | Destructions: 8 ---------------------------------------------------------------------------- libMesh0.6.2 result: ------------------------------------------------------------------- | Time: Fri Aug 1 14:29:55 2008 | | OS: Linux | | HostName: xu | | OS Release: 2.6.15-52-386 | | OS Version: #1 PREEMPT Mon Jun 9 17:24:46 UTC 2008 | | Machine: i686 | | Username: xsl | | Configuration: ./configure run on Sat Mar 8 17:21:51 EST 2008 | ------------------------------------------------------------------- ------------------------------------------------------------------------------ | Matrix Assembly Performance: Alive time=627.065, Active time=626.926 | ------------------------------------------------------------------------------ | Event nCalls Total Avg Percent of | | Time Time Active Time | |------------------------------------------------------------------------------| | | | Bc 1920 0.0241 0.000013 0.00 | | Ke 1920 17.3613 0.009042 2.77 | | elem init 1920 2.8831 0.001502 0.46 | | matrix insertion 1920 606.6573 0.315967 96.77 | ------------------------------------------------------------------------------ | Totals: 7680 626.9258 100.00 | ------------------------------------------------------------------------------ ---------------------------------------------------------------------------- | Reference count information | ---------------------------------------------------------------------------- | 12LinearSolverIdE reference count information: | Creations: 1 | Destructions: 1 | 12SparseMatrixIdE reference count information: | Creations: 1 | Destructions: 1 | 13NumericVectorIdE reference count information: | Creations: 4 | Destructions: 4 | 4Elem reference count information: | Creations: 11969 | Destructions: 11969 | 4Node reference count information: | Creations: 2772 | Destructions: 2772 | 5QBase reference count information: | Creations: 5762 | Destructions: 5762 | 6DofMap reference count information: | Creations: 1 | Destructions: 1 | 6FEBase reference count information: | Creations: 11521 | Destructions: 11521 | 6System reference count information: | Creations: 1 | Destructions: 1 | 9DofObject reference count information: | Creations: 19433 | Destructions: 19433 | N10Parameters5ValueE reference count information: | Creations: 8 | Destructions: 8 ---------------------------------------------------------------------------- Difference between libMesh 0.5.0 and libMesh 0.6.2: matrix insertion: 0.3929 606.6573 (Referenced libMesh example 4) QBase reference count: 2 5762 FEBase reference count: 1 19433 what's wrong? If not, then something else in your assembly is taking > way too long (calling FE::reinit inside the quadrature loop?); you can > use fine-grained PerfLog objects to test that out too. > > Or use whatever profiler you're comfortable with, of course. I like > oprofile; other people I know prefer Tau. > > http://oprofile.sourceforge.net/ > http://www.cs.uoregon.edu/research/tau/home.php > --- > Roy > -- Shengli Xu |