From: Kirk, Benjamin (JSCEG311) <benjamin.kirk1@na...>  20121205 20:41:27

I'm working some optimizations with how libMesh stores & allocates degree of freedom indices when there are multiple variables associated with a given System. These generically fall into two categories  (1) homogeneous types, where there are multiple variables but they all have the same finite element type, and (2) mixed types, where there are different variables with different finite element types as well (like TaylorHood Q2/Q1 incompressible NS, for example) for both cases, we could do some optimization in how we store degree of freedom indices & do things like compute the sparse matrix graph. for case (1) in particular, we could also take advantage of the identical blockstructure of the linear system as well and use e.g. PETSc's block matrix and vector support. So my question is, for your multivariable systems, are they typically of type (1) or (2)? How many variables and what types? My reason in asking is because some of the optimizations are easier for case (1), which is where I plan to start, but don't want to do anything that would preclude additional optimization for (2), especially if there are people with ~5 or more variables of different finite element types in a system. Thanks, Ben 
From: Derek Gaston <friedmud@gm...>  20121205 22:00:44

OMG. This would be awesome. I've actually got a user that has been breathing down our necks for this optimization. In his case he is solving with over 2,000 variables that are all of exactly the same type. Generally, first or second order Lagrange (although he does some DG as well). We also have other users solving with 20200 variables of the same kind (again, usually first or second order Lagrange) but they might also have 14 variables of another kind (like cubic hermites) mixed in  but not always. ANY optimizations along these lines would be truly awesome! Derek Sent from my iPhone On Dec 5, 2012, at 1:41 PM, "Kirk, Benjamin (JSCEG311)" <benjamin.kirk1@...> wrote: > I'm working some optimizations with how libMesh stores & allocates degree of freedom indices when there are multiple variables associated with a given System. These generically fall into two categories  > > (1) homogeneous types, where there are multiple variables but they all have the same finite element type, and > (2) mixed types, where there are different variables with different finite element types as well (like TaylorHood Q2/Q1 incompressible NS, for example) > > for both cases, we could do some optimization in how we store degree of freedom indices & do things like compute the sparse matrix graph. > > for case (1) in particular, we could also take advantage of the identical blockstructure of the linear system as well and use e.g. PETSc's block matrix and vector support. > > So my question is, for your multivariable systems, are they typically of type (1) or (2)? How many variables and what types? > > My reason in asking is because some of the optimizations are easier for case (1), which is where I plan to start, but don't want to do anything that would preclude additional optimization for (2), especially if there are people with ~5 or more variables of different finite element types in a system. > > Thanks, > > Ben > > > > >  > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more valueadd services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > Libmeshdevel mailing list > Libmeshdevel@... > https://lists.sourceforge.net/lists/listinfo/libmeshdevel 
From: Roy Stogner <roystgnr@ic...>  20121206 16:50:35

On Wed, 5 Dec 2012, Derek Gaston wrote: > In his case he is solving with over 2,000 variables > > We also have other users solving with 20200 variables of the same It would be interesting to know of other places where users are greatly exceeding our original estimates of what "N" might be in cases where we're designing O(f(N)) algorithms. E.g. I just blithely told Vikram not to worry about writing an O(N_vectors_per_System) bit of code, for instance, because in my typical codes (solution, old solution, rhs, qoi0adjoint, qoi1adjoint...) N might be around 6, but perhaps the reducedbasis people or others vastly exceed that. (In this case the constant is small and the code isn't in any inner loops so he's probably fine even for N=6000, but you see the general idea).  Roy 