Instrumenting src/Evaluator Header Files

Jeffrey Oldham oldham at codesourcery.com
Tue Oct 9 23:03:27 UTC 2001


Stephen and I tried to get PDToolkit 2.01b and Tau 2.9.22 to work on
Linux/KCC, but we both failed.  Instead, we used Linux/g++ to produce
a patch of instrumentation for interesting header files.  Stephen says
these are all in src/Evaluator.  It's a hack, but it moves work
forward.

Thanks,
Jeffrey D. Oldham
oldham at codesourcery.com
-------------- next part --------------
Index: Evaluator.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/Evaluator.h,v
retrieving revision 1.57
diff -c -p -r1.57 Evaluator.h
*** Evaluator.h	2001/03/29 00:41:21	1.57
--- Evaluator.h	2001/10/09 23:00:34
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
***************
*** 72,79 ****
  
  template <class EvalTag>
  struct Evaluator
! {
! };
  
  //-----------------------------------------------------------------------------
  // Main Evaluator:
--- 73,79 ----
  
  template <class EvalTag>
  struct Evaluator
! {};
  
  //-----------------------------------------------------------------------------
  // Main Evaluator:
*************** struct Evaluator<MainEvaluatorTag>
*** 88,98 ****
  {
    // Default ctor.
  
!   Evaluator() { }
  
    // Destructor
  
!   ~Evaluator() { }
  
    // evaluate(expression)
    // Input an expression and cause it to be evaluated.
--- 88,102 ----
  {
    // Default ctor.
  
!   Evaluator() {
!   TAU_PROFILE("Evaluator<MainEvaluatorTag> &Evaluator<MainEvaluatorTag>::Evaluator()", CT(*this), TAU_USER);
!  }
  
    // Destructor
  
!   ~Evaluator() {
!   TAU_PROFILE("void Evaluator<MainEvaluatorTag>::~Evaluator()", CT(*this), TAU_USER);
!  }
  
    // evaluate(expression)
    // Input an expression and cause it to be evaluated.
*************** struct Evaluator<MainEvaluatorTag>
*** 101,106 ****
--- 105,112 ----
    template <class LHS, class RHS, class Op>
    void evaluate(const LHS& lhs, const Op& op, const RHS& rhs) const
    {
+   TAU_PROFILE("void Evaluator<MainEvaluatorTag>::evaluate(const LHS &, const Op &, const RHS &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag<LHS, RHS>::Evaluator_t Eval_t;
      Evaluator<Eval_t> evaluator;
  
*************** struct Evaluator<MainEvaluatorTag>
*** 121,126 ****
--- 127,134 ----
    template <class LHS, class RHS, class Op>
    void evaluateZeroBased(const LHS& lhs, const Op& op, const RHS& rhs) const
    {
+   TAU_PROFILE("void Evaluator<MainEvaluatorTag>::evaluateZeroBased(const LHS &, const Op &, const RHS &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag<LHS, RHS>::Evaluator_t Eval_t;
      Evaluator<Eval_t> evaluator;
  
*************** struct Evaluator<SinglePatchEvaluatorTag
*** 146,156 ****
  {
    // Default ctor.
  
!   Evaluator() { }
  
    // Destructor
  
!   ~Evaluator() { }
  
    // evaluate(expression)
    // Input an expression and cause it to be evaluated.
--- 154,168 ----
  {
    // Default ctor.
  
!   Evaluator() {
!   TAU_PROFILE("Evaluator<SinglePatchEvaluatorTag> &Evaluator<SinglePatchEvaluatorTag>::Evaluator()", CT(*this), TAU_USER);
!  }
  
    // Destructor
  
!   ~Evaluator() {
!   TAU_PROFILE("void Evaluator<SinglePatchEvaluatorTag>::~Evaluator()", CT(*this), TAU_USER);
!  }
  
    // evaluate(expression)
    // Input an expression and cause it to be evaluated.
*************** struct Evaluator<SinglePatchEvaluatorTag
*** 159,164 ****
--- 171,178 ----
    template <class LHS, class RHS, class Op>
    void evaluate(const LHS& lhs, const Op& op, const RHS& rhs) const
    {
+   TAU_PROFILE("void Evaluator<SinglePatchEvaluatorTag>::evaluate(const LHS &, const Op &, const RHS &) const", CT(*this), TAU_USER);
+ 
      typedef typename KernelTag<LHS,RHS>::Kernel_t Kernel_t;
  #if POOMA_REORDER_ITERATES
      Pooma::Iterate_t *iterate = generateKernel(lhs, op, rhs, Kernel_t());
*************** struct Evaluator<MultiPatchEvaluatorTag>
*** 182,192 ****
  {
    // Default ctor.
  
!   Evaluator() { }
  
    // Destructor
  
!   ~Evaluator() { }
  
    // evaluate(expression)
    // Input an expression and cause it to be evaluated.
--- 196,210 ----
  {
    // Default ctor.
  
!   Evaluator() {
!   TAU_PROFILE("Evaluator<MultiPatchEvaluatorTag> &Evaluator<MultiPatchEvaluatorTag>::Evaluator()", CT(*this), TAU_USER);
!  }
  
    // Destructor
  
!   ~Evaluator() {
!   TAU_PROFILE("void Evaluator<MultiPatchEvaluatorTag>::~Evaluator()", CT(*this), TAU_USER);
!  }
  
    // evaluate(expression)
    // Input an expression and cause it to be evaluated.
*************** struct Evaluator<MultiPatchEvaluatorTag>
*** 195,200 ****
--- 213,220 ----
    template <class LHS, class RHS, class Op>
    void evaluate(const LHS& lhs, const Op& op, const RHS& rhs) const
    {
+   TAU_PROFILE("void Evaluator<MultiPatchEvaluatorTag>::evaluate(const LHS &, const Op &, const RHS &) const", CT(*this), TAU_USER);
+ 
      typedef Intersector<LHS::dimensions> Inter_t;
      Inter_t inter;
  
Index: InlineEvaluator.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/InlineEvaluator.h,v
retrieving revision 1.26
diff -c -p -r1.26 InlineEvaluator.h
*** InlineEvaluator.h	2001/04/13 02:15:06	1.26
--- InlineEvaluator.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
*************** struct KernelEvaluator<InlineKernelTag>
*** 97,102 ****
--- 98,105 ----
    template<class LHS,class Op,class RHS>
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &)", " ", TAU_USER);
+ 
      typedef typename LHS::Domain_t Domain_t;
      evaluate(lhs,op,rhs,lhs.domain(),
  	     WrappedInt<Domain_t::dimensions>());
*************** struct KernelEvaluator<InlineKernelTag>
*** 115,120 ****
--- 118,125 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &)", " ", TAU_USER);
+ 
      evaluate(lhs,op,rhs,domain,
  	     WrappedInt<Domain::dimensions>());
      POOMA_INCREMENT_STATISTIC(NumInlineEvaluations)
*************** struct KernelEvaluator<InlineKernelTag>
*** 155,160 ****
--- 160,167 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<1>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<1>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      int e0 = domain[0].length();
*************** struct KernelEvaluator<InlineKernelTag>
*** 166,171 ****
--- 173,180 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<2>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<2>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      PAssert(domain[1].first() == 0);
*************** struct KernelEvaluator<InlineKernelTag>
*** 180,185 ****
--- 189,196 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<3>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<3>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      PAssert(domain[1].first() == 0);
*************** struct KernelEvaluator<InlineKernelTag>
*** 197,202 ****
--- 208,215 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<4>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<4>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      PAssert(domain[1].first() == 0);
*************** struct KernelEvaluator<InlineKernelTag>
*** 217,222 ****
--- 230,237 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<5>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<5>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      PAssert(domain[1].first() == 0);
*************** struct KernelEvaluator<InlineKernelTag>
*** 240,245 ****
--- 255,262 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<6>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<6>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      PAssert(domain[1].first() == 0);
*************** struct KernelEvaluator<InlineKernelTag>
*** 267,272 ****
--- 284,291 ----
    inline static void evaluate(const LHS& lhs,const Op& op,const RHS& rhs,
  			      const Domain& domain,WrappedInt<7>)
    {
+   TAU_PROFILE("void KernelEvaluator<InlineKernelTag>::evaluate(const LHS &, const Op &, const RHS &, const Domain &, WrappedInt<7>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      PAssert(domain[0].first() == 0);
      PAssert(domain[1].first() == 0);
Index: CompressibleEval.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/CompressibleEval.h,v
retrieving revision 1.25
diff -c -p -r1.25 CompressibleEval.h
*** CompressibleEval.h	2000/05/31 02:40:03	1.25
--- CompressibleEval.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
*************** struct KernelEvaluator<CompressibleViewK
*** 81,86 ****
--- 82,89 ----
    template<class LHS, class Op, class RHS>
    static void evaluate(const LHS &lhs, const Op &op, const RHS &rhs)
    {
+   TAU_PROFILE("void KernelEvaluator<CompressibleViewKernelTag>::evaluate(const LHS &, const Op &, const RHS &)", " ", TAU_USER);
+ 
      // Try this for now.  We just pass the uncompressed engine
      // to the inline evaluator.  If you want to pack this in an
      // array go ahead, but then you'll have to include Array.h.
*************** struct KernelEvaluator<CompressibleKerne
*** 98,103 ****
--- 101,108 ----
    template<class LHS, class Op, class RHS>
    static void evaluate(const LHS &lhs, const Op &op, const RHS &rhs)
    {
+   TAU_PROFILE("void KernelEvaluator<CompressibleKernelTag>::evaluate(const LHS &, const Op &, const RHS &)", " ", TAU_USER);
+ 
      // If everybody is compressed, then we do a compressed assign,
      // provided the left-hand-side is viewing the entire compressed
      // block or the value being assigned is the same as the compressed
Index: ExpressionKernel.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/ExpressionKernel.h,v
retrieving revision 1.45
diff -c -p -r1.45 ExpressionKernel.h
*** ExpressionKernel.h	2001/03/28 19:14:51	1.45
--- ExpressionKernel.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
***************
*** 83,88 ****
--- 84,91 ----
  template<class LHS,class Op,class RHS,class EvalTag>
  class ExpressionKernel : public Pooma::Iterate_t
  {
+   TAU_PROFILE("ExpressionKernel<LHS, Op, RHS, EvalTag>::ExpressionKernel", CT(*this), TAU_USER);
+ 
  public:
  
    typedef ExpressionKernel<LHS,Op,RHS,EvalTag> This_t;
*************** ExpressionKernel(const LHS& lhs,const Op
*** 131,136 ****
--- 134,141 ----
    : Pooma::Iterate_t(Pooma::scheduler()),
      lhs_m(lhs), op_m(op), rhs_m(rhs)
  {
+   TAU_PROFILE("ExpressionKernel<LHS, Op, RHS, EvalTag>::ExpressionKernel", CT(*this), TAU_USER);
+ 
    hintAffinity(engineFunctor(lhs, DataObjectRequest<BlockAffinity>()));
  
    // Request locks
*************** ExpressionKernel(const LHS& lhs,const Op
*** 161,166 ****
--- 166,173 ----
  template<class LHS,class Op,class RHS,class EvalTag>
  ExpressionKernel<LHS,Op,RHS,EvalTag>::~ExpressionKernel()
  {
+   TAU_PROFILE("ExpressionKernel<LHS, Op, RHS, EvalTag>::~ExpressionKernel", CT(*this), TAU_USER);
+ 
    // The write request remembers the data block it sees on the left
    // so that it can check and see if it finds it on the right.
  
*************** template<class LHS,class Op,class RHS,cl
*** 184,189 ****
--- 191,198 ----
  void
  ExpressionKernel<LHS,Op,RHS,EvalTag>::run()
  {
+   TAU_PROFILE("ExpressionKernel<LHS, Op, RHS, EvalTag>::run", CT(*this), TAU_USER);
+ 
    // Just evaluate the expression.
    KernelEvaluator<EvalTag>::evaluate(lhs_m,op_m,rhs_m);
  
*************** inline static
*** 195,200 ****
--- 204,211 ----
  ExpressionKernel<LHS,Op,RHS,EvalTag>*
  generateKernel(const LHS& lhs, const Op& op, const RHS& rhs, const EvalTag&)
  {
+   TAU_PROFILE("ExpressionKernel<LHS, Op, RHS, EvalTag> *generateKernel(const LHS &, const Op &, const RHS &, const EvalTag &)", " ", TAU_USER);
+ 
    return new ExpressionKernel<LHS,Op,RHS,EvalTag>(lhs, op, rhs);
  }
  
Index: LoopApply.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/LoopApply.h,v
retrieving revision 1.4
diff -c -p -r1.4 LoopApply.h
*** LoopApply.h	2001/04/13 02:15:06	1.4
--- LoopApply.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
*************** struct LoopApplyEvaluator
*** 91,102 ****
--- 92,107 ----
    template<class Op, class Dom>
    inline static void evaluate(Op &op, const Dom &domain)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Dom &)", " ", TAU_USER);
+ 
      evaluate(op, domain, WrappedInt<Dom::dimensions>());
    }
  
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<1>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<1>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int e0 = domain[0].last();
*************** struct LoopApplyEvaluator
*** 107,112 ****
--- 112,119 ----
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<2>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<2>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int f1 = domain[1].first();
*************** struct LoopApplyEvaluator
*** 120,125 ****
--- 127,134 ----
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<3>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<3>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int f1 = domain[1].first();
*************** struct LoopApplyEvaluator
*** 136,141 ****
--- 145,152 ----
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<4>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<4>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int f1 = domain[1].first();
*************** struct LoopApplyEvaluator
*** 155,160 ****
--- 166,173 ----
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<5>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<5>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int f1 = domain[1].first();
*************** struct LoopApplyEvaluator
*** 177,182 ****
--- 190,197 ----
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<6>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<6>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int f1 = domain[1].first();
*************** struct LoopApplyEvaluator
*** 202,207 ****
--- 217,224 ----
    template<class Op, class Domain>
    inline static void evaluate(Op &op, const Domain &domain, WrappedInt<7>)
    {
+   TAU_PROFILE("void LoopApplyEvaluator::evaluate(Op &, const Domain &, WrappedInt<7>)", " ", TAU_USER);
+ 
      CTAssert(Domain::unitStride);
      int f0 = domain[0].first();
      int f1 = domain[1].first();
Index: PatchFunction.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/PatchFunction.h,v
retrieving revision 1.29
diff -c -p -r1.29 PatchFunction.h
*** PatchFunction.h	2000/09/20 16:22:10	1.29
--- PatchFunction.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
*************** struct PatchParticle3 { };
*** 118,125 ****
  
  template<class EvalTag>
  class PatchEvaluator
! {
! };
  
  template<>
  class PatchEvaluator<MainEvaluatorTag>
--- 119,125 ----
  
  template<class EvalTag>
  class PatchEvaluator
! {};
  
  template<>
  class PatchEvaluator<MainEvaluatorTag>
*************** public:
*** 128,142 ****
  
    // Default ctor.
  
!   PatchEvaluator() {}
  
    // Destructor
  
!   ~PatchEvaluator() {}
  
    template<class A1, class Function>
    void evaluate(const A1& a1, const Function& function) const
    {
      typedef typename EvaluatorTag1<A1>::Evaluator_t Evaluator_t;
      PatchEvaluator<Evaluator_t> evaluator;
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
--- 128,148 ----
  
    // Default ctor.
  
!   PatchEvaluator() {
!   TAU_PROFILE("PatchEvaluator<MainEvaluatorTag> &PatchEvaluator<MainEvaluatorTag>::PatchEvaluator()", CT(*this), TAU_USER);
! }
  
    // Destructor
  
!   ~PatchEvaluator() {
!   TAU_PROFILE("void PatchEvaluator<MainEvaluatorTag>::~PatchEvaluator()", CT(*this), TAU_USER);
! }
  
    template<class A1, class Function>
    void evaluate(const A1& a1, const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MainEvaluatorTag>::evaluate(const A1 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag1<A1>::Evaluator_t Evaluator_t;
      PatchEvaluator<Evaluator_t> evaluator;
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
*************** public:
*** 154,159 ****
--- 160,167 ----
    template<class A1, class Function>
    void evaluateRead(const A1& a1, const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MainEvaluatorTag>::evaluateRead(const A1 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag1<A1>::Evaluator_t Evaluator_t;
      PatchEvaluator<Evaluator_t> evaluator;
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
*************** public:
*** 171,176 ****
--- 179,186 ----
    void evaluate2(const A1& a1, const A2& a2,
  		const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MainEvaluatorTag>::evaluate2(const A1 &, const A2 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag<A1,A2>::Evaluator_t Eval_t;
      PatchEvaluator<Eval_t> evaluator;
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
*************** public:
*** 189,194 ****
--- 199,206 ----
    void evaluate3(const A1& a1, const A2& a2, const A3 &a3,
  		const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MainEvaluatorTag>::evaluate3(const A1 &, const A2 &, const A3 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag1<A2>::Evaluator_t Eval2_t;
      typedef typename EvaluatorTag1<A3>::Evaluator_t Eval3_t;
      typedef typename EvaluatorCombine<Eval2_t,Eval3_t>::Evaluator_t Eval23_t;
*************** public:
*** 224,239 ****
    // The only member data can construct itself, so we
    // don't need to specify anything.
    //
!   PatchEvaluator() {}
  
    //
    // Destructor
    //
!   ~PatchEvaluator() {}
  
    template<class A1, class Function>
    void evaluate(const A1& a1, const Function& function) const
    {
      Pooma::Iterate_t *iterate = new PatchKernel<A1,Function>(a1,function);
      Pooma::scheduler().handOff(iterate);
    }
--- 236,257 ----
    // The only member data can construct itself, so we
    // don't need to specify anything.
    //
!   PatchEvaluator() {
!   TAU_PROFILE("PatchEvaluator<SinglePatchEvaluatorTag> &PatchEvaluator<SinglePatchEvaluatorTag>::PatchEvaluator()", CT(*this), TAU_USER);
! }
  
    //
    // Destructor
    //
!   ~PatchEvaluator() {
!   TAU_PROFILE("void PatchEvaluator<SinglePatchEvaluatorTag>::~PatchEvaluator()", CT(*this), TAU_USER);
! }
  
    template<class A1, class Function>
    void evaluate(const A1& a1, const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<SinglePatchEvaluatorTag>::evaluate(const A1 &, const Function &) const", CT(*this), TAU_USER);
+ 
      Pooma::Iterate_t *iterate = new PatchKernel<A1,Function>(a1,function);
      Pooma::scheduler().handOff(iterate);
    }
*************** public:
*** 241,246 ****
--- 259,266 ----
    template<class A1, class Function>
    void evaluateRead(const A1& a1, const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<SinglePatchEvaluatorTag>::evaluateRead(const A1 &, const Function &) const", CT(*this), TAU_USER);
+ 
      Pooma::Iterate_t *iterate = new PatchKernel<A1,Function>(a1,function);
      Pooma::scheduler().handOff(iterate);
    }
*************** public:
*** 249,254 ****
--- 269,276 ----
    void evaluate2(const A1 &a1, const A2 &a2,
  		const Function &function) const
    {
+   TAU_PROFILE("void PatchEvaluator<SinglePatchEvaluatorTag>::evaluate2(const A1 &, const A2 &, const Function &) const", CT(*this), TAU_USER);
+ 
      Pooma::Iterate_t *iterate =
        new PatchKernel2<A1,A2,Function>(a1,a2,function);
  
*************** public:
*** 259,264 ****
--- 281,288 ----
    void evaluate3(const A1 &a1, const A2 &a2, const A3 &a3,
  		const Function &function) const
    {
+   TAU_PROFILE("void PatchEvaluator<SinglePatchEvaluatorTag>::evaluate3(const A1 &, const A2 &, const A3 &, const Function &) const", CT(*this), TAU_USER);
+ 
      Pooma::Iterate_t *iterate =
        new PatchKernel3<A1,A2,A3,Function>(a1,a2,a3,function);
  
*************** public:
*** 283,298 ****
    // The only member data can construct itself, so we
    // don't need to specify anything.
    //
!   PatchEvaluator() {}
  
    //
    // Destructor
    //
!   ~PatchEvaluator() {}
  
    template<class A1,class Function>
    void evaluate(const A1& a1,const Function& function) const
    {
      typedef Intersector<A1::dimensions> Inter_t;
      Inter_t inter;
  
--- 307,328 ----
    // The only member data can construct itself, so we
    // don't need to specify anything.
    //
!   PatchEvaluator() {
!   TAU_PROFILE("PatchEvaluator<MultiPatchEvaluatorTag> &PatchEvaluator<MultiPatchEvaluatorTag>::PatchEvaluator()", CT(*this), TAU_USER);
! }
  
    //
    // Destructor
    //
!   ~PatchEvaluator() {
!   TAU_PROFILE("void PatchEvaluator<MultiPatchEvaluatorTag>::~PatchEvaluator()", CT(*this), TAU_USER);
! }
  
    template<class A1,class Function>
    void evaluate(const A1& a1,const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MultiPatchEvaluatorTag>::evaluate(const A1 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef Intersector<A1::dimensions> Inter_t;
      Inter_t inter;
  
*************** public:
*** 310,315 ****
--- 340,347 ----
    inline
    void evaluateRead(const A1& a1,const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MultiPatchEvaluatorTag>::evaluateRead(const A1 &, const Function &) const", CT(*this), TAU_USER);
+ 
      evaluate(a1,function);
    }
  
*************** public:
*** 317,322 ****
--- 349,356 ----
    void evaluate2(const A1& a1, const A2& a2,
  		const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MultiPatchEvaluatorTag>::evaluate2(const A1 &, const A2 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef Intersector<A1::dimensions> Inter_t;
      Inter_t inter;
      
*************** public:
*** 337,342 ****
--- 371,378 ----
    void evaluate3(const A1 &a1, const A2 &a2, const A3 &a3,
  		 const Function& function) const
    {
+   TAU_PROFILE("void PatchEvaluator<MultiPatchEvaluatorTag>::evaluate3(const A1 &, const A2 &, const A3 &, const Function &) const", CT(*this), TAU_USER);
+ 
      typedef Intersector<A1::dimensions> Inter_t;
      Inter_t inter;
      
*************** class ParticleEvaluator
*** 362,377 ****
  public:
    // Default ctor.
  
!   ParticleEvaluator() {}
  
    // Destructor
  
!   ~ParticleEvaluator() {}
  
    template<class A1, class Function, bool Write1>
    void evaluate(const A1 &a1, const Function &function,
  		const PatchParticle1<Write1> &) const
    {
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
      scheduler.beginGeneration();
  
--- 398,419 ----
  public:
    // Default ctor.
  
!   ParticleEvaluator() {
!   TAU_PROFILE("ParticleEvaluator &ParticleEvaluator::ParticleEvaluator()", CT(*this), TAU_USER);
! }
  
    // Destructor
  
!   ~ParticleEvaluator() {
!   TAU_PROFILE("void ParticleEvaluator::~ParticleEvaluator()", CT(*this), TAU_USER);
! }
  
    template<class A1, class Function, bool Write1>
    void evaluate(const A1 &a1, const Function &function,
  		const PatchParticle1<Write1> &) const
    {
+   TAU_PROFILE("void ParticleEvaluator::evaluate(const A1 &, const Function &, const PatchParticle1<Write1> &) const", CT(*this), TAU_USER);
+ 
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
      scheduler.beginGeneration();
  
*************** public:
*** 402,407 ****
--- 444,451 ----
    void evaluateBlock(const A1 &a1, const Function &function,
  		     const PatchParticle1<Write1> &) const
    {
+   TAU_PROFILE("void ParticleEvaluator::evaluateBlock(const A1 &, const Function &, const PatchParticle1<Write1> &) const", CT(*this), TAU_USER);
+ 
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
  
      int n = a1.numPatchesLocal();
*************** public:
*** 441,446 ****
--- 485,492 ----
    void evaluate2(const A1& a1, const A2 &a2, const Function& function,
  		 const PatchParticle2<Write1, Write2> &) const
    {
+   TAU_PROFILE("void ParticleEvaluator::evaluate2(const A1 &, const A2 &, const Function &, const PatchParticle2<Write1, Write2> &) const", CT(*this), TAU_USER);
+ 
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
      scheduler.beginGeneration();
  
*************** public:
*** 476,481 ****
--- 522,529 ----
    void evaluate2Block(const A1& a1, const A2 &a2, const Function& function,
  		 const PatchParticle2<Write1, Write2> &) const
    {
+   TAU_PROFILE("void ParticleEvaluator::evaluate2Block(const A1 &, const A2 &, const Function &, const PatchParticle2<Write1, Write2> &) const", CT(*this), TAU_USER);
+ 
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
      scheduler.beginGeneration();
  
*************** public:
*** 520,525 ****
--- 568,575 ----
  		 const Function& function,
  		 const PatchParticle3<Write1, Write2, Write3> &) const
    {
+   TAU_PROFILE("void ParticleEvaluator::evaluate3(const A1 &, const A2 &, const A3 &, const Function &, const PatchParticle3<Write1, Write2, Write3> &) const", CT(*this), TAU_USER);
+ 
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
      scheduler.beginGeneration();
  
*************** public:
*** 561,566 ****
--- 611,618 ----
  		 const Function& function,
  		 const PatchParticle3<Write1, Write2, Write3> &) const
    {
+   TAU_PROFILE("void ParticleEvaluator::evaluate3Block(const A1 &, const A2 &, const A3 &, const Function &, const PatchParticle3<Write1, Write2, Write3> &) const", CT(*this), TAU_USER);
+ 
      Pooma::Scheduler_t &scheduler = Pooma::scheduler();
      scheduler.beginGeneration();
  
*************** CLASS(const I1 &i1, const I2 &i2, const 
*** 653,668 ****
  
  template<class Function, class Patch>
  class PatchFunction
! {
! };
  
  template<class Function>
  class PatchFunction<Function,PatchTag1>
  {
  public:
  
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 705,723 ----
  
  template<class Function, class Patch>
  class PatchFunction
! {};
  
  template<class Function>
  class PatchFunction<Function,PatchTag1>
  {
  public:
  
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchTag1> &PatchFunction<Function, PatchTag1>::PatchFunction()", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchTag1>::PatchFunction", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 670,679 ****
    inline void
    operator()(const Array& a) const
    {
      PatchEvaluator<MainEvaluatorTag>().evaluate(a,function());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 725,738 ----
    inline void
    operator()(const Array& a) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchTag1>::PatchFunction", " ", TAU_USER);
+ 
      PatchEvaluator<MainEvaluatorTag>().evaluate(a,function());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("PatchFunction<Function, PatchTag1>::function", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
*************** private:
*** 683,692 ****
  template<class Function>
  class PatchFunction<Function,PatchReadTag1>
  {
  public:
  
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 742,757 ----
  template<class Function>
  class PatchFunction<Function,PatchReadTag1>
  {
+   TAU_PROFILE("PatchFunction<Function, PatchReadTag1>::PatchFunction", CT(*this), TAU_USER);
+ 
  public:
  
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchReadTag1>::PatchFunction", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchReadTag1>::PatchFunction", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 694,703 ****
    inline void
    operator()(const Array& a) const
    {
      PatchEvaluator<MainEvaluatorTag>().evaluateRead(a,function());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 759,772 ----
    inline void
    operator()(const Array& a) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchReadTag1>::PatchFunction", " ", TAU_USER);
+ 
      PatchEvaluator<MainEvaluatorTag>().evaluateRead(a,function());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("const Function &PatchFunction<Function, PatchReadTag1>::function() const", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
*************** template<class Function>
*** 708,715 ****
  class PatchFunction<Function,PatchTag2>
  {
  public:
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 777,788 ----
  class PatchFunction<Function,PatchTag2>
  {
  public:
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchTag2> &PatchFunction<Function, PatchTag2>::PatchFunction()", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchTag2> &PatchFunction<Function, PatchTag2>::PatchFunction(const Function &)", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 717,726 ****
    inline void
    operator()(const Array1 &a1, const Array2 &a2) const
    {
      PatchEvaluator<MainEvaluatorTag>().evaluate2(a1,a2,function());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 790,803 ----
    inline void
    operator()(const Array1 &a1, const Array2 &a2) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchTag2> &PatchFunction<Function, PatchTag2>::PatchFunction(const I1 &, const I2 &, const I3 &, const I4 &, const I5 &, const I6 &, const I7 &)", CT(*this), TAU_USER);
+ 
      PatchEvaluator<MainEvaluatorTag>().evaluate2(a1,a2,function());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("PatchFunction<Function, PatchTag2>::function", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
*************** template<class Function>
*** 731,738 ****
  class PatchFunction<Function,PatchTag3>
  {
  public:
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 808,819 ----
  class PatchFunction<Function,PatchTag3>
  {
  public:
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchTag3>::PatchFunction", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchTag3>::PatchFunction", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 740,749 ****
    inline void
    operator()(const Array1 &a1, const Array2 &a2, const Array3 &a3) const
    {
      PatchEvaluator<MainEvaluatorTag>().evaluate3(a1,a2,a3,function());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 821,834 ----
    inline void
    operator()(const Array1 &a1, const Array2 &a2, const Array3 &a3) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchTag3> &PatchFunction<Function, PatchTag3>::PatchFunction(const I1 &)", CT(*this), TAU_USER);
+ 
      PatchEvaluator<MainEvaluatorTag>().evaluate3(a1,a2,a3,function());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("PatchFunction<Function, PatchTag3>::function", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
*************** private:
*** 753,762 ****
  template<class Function, bool Write1>
  class PatchFunction<Function, PatchParticle1<Write1> >
  {
  public:
  
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 838,853 ----
  template<class Function, bool Write1>
  class PatchFunction<Function, PatchParticle1<Write1> >
  {
+   TAU_PROFILE("PatchFunction<Function, PatchParticle1<Write1>>::PatchFunction", CT(*this), TAU_USER);
+ 
  public:
  
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle1<Write1>> &PatchFunction<Function, PatchParticle1<Write1>>::PatchFunction()", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle1<Write1>> &PatchFunction<Function, PatchParticle1<Write1>>::PatchFunction(const Function &)", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 764,769 ****
--- 855,862 ----
    inline void
    operator()(const Array& a) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchParticle1<Write1>>::PatchFunction", " ", TAU_USER);
+ 
      ParticleEvaluator().evaluate(a, function(), PatchParticle1<Write1>());
    }
  
*************** public:
*** 771,781 ****
    inline void
    block(const Array& a) const
    {
      ParticleEvaluator().
        evaluateBlock(a, function(), PatchParticle1<Write1>());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 864,878 ----
    inline void
    block(const Array& a) const
    {
+   TAU_PROFILE("void PatchFunction<Function, PatchParticle1<Write1>>::block(const Array &) const", CT(*this), TAU_USER);
+ 
      ParticleEvaluator().
        evaluateBlock(a, function(), PatchParticle1<Write1>());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("const Function &PatchFunction<Function, PatchParticle1<Write1>>::function() const", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
*************** private:
*** 785,794 ****
  template<class Function, bool Write1, bool Write2>
  class PatchFunction<Function, PatchParticle2<Write1, Write2> >
  {
  public:
  
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 882,897 ----
  template<class Function, bool Write1, bool Write2>
  class PatchFunction<Function, PatchParticle2<Write1, Write2> >
  {
+   TAU_PROFILE("PatchFunction<Function, PatchParticle2<Write1, Write2>>::PatchFunction", CT(*this), TAU_USER);
+ 
  public:
  
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle2<Write1, Write2>> &PatchFunction<Function, PatchParticle2<Write1, Write2>>::PatchFunction()", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle2<Write1, Write2>> &PatchFunction<Function, PatchParticle2<Write1, Write2>>::PatchFunction(const Function &)", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 796,801 ****
--- 899,906 ----
    inline void
    operator()(const Array1 &a1, const Array2 &a2) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchParticle2<Write1, Write2>>::PatchFunction", " ", TAU_USER);
+ 
      ParticleEvaluator().evaluate2(a1, a2, function(),
  				  PatchParticle2<Write1, Write2>());
    }
*************** public:
*** 804,814 ****
    inline void
    block(const Array1 &a1, const Array2 &a2) const
    {
      ParticleEvaluator().evaluate2Block(a1, a2, function(),
  				       PatchParticle2<Write1, Write2>());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 909,923 ----
    inline void
    block(const Array1 &a1, const Array2 &a2) const
    {
+   TAU_PROFILE("void PatchFunction<Function, PatchParticle2<Write1, Write2>>::block(const Array1 &, const Array2 &) const", CT(*this), TAU_USER);
+ 
      ParticleEvaluator().evaluate2Block(a1, a2, function(),
  				       PatchParticle2<Write1, Write2>());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle2<Write1, Write2>>::function", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
*************** class PatchFunction<Function, PatchParti
*** 820,827 ****
  {
  public:
  
!   PatchFunction() { }
!   PatchFunction(const Function &function) : function_m(function) { }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
--- 929,940 ----
  {
  public:
  
!   PatchFunction() {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>> &PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>>::PatchFunction()", CT(*this), TAU_USER);
!  }
!   PatchFunction(const Function &function) : function_m(function) {
!   TAU_PROFILE("PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>> &PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>>::PatchFunction(const Function &)", CT(*this), TAU_USER);
!  }
  
    POOMA_PATCHFUNCTION_ARGUMENT_CONSTRUCTORS(PatchFunction,function_m)
  
*************** public:
*** 829,834 ****
--- 942,949 ----
    inline void
    operator()(const Array1 &a1, const Array2 &a2, const Array3 &a3) const
    {
+   TAU_PROFILE("PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>>::PatchFunction", " ", TAU_USER);
+ 
      ParticleEvaluator().evaluate3(
        a1, a2, a3, function(), PatchParticle3<Write1, Write2, Write3>());
    }
*************** public:
*** 837,847 ****
    inline void
    block(const Array1 &a1, const Array2 &a2, const Array3 &a3) const
    {
      ParticleEvaluator().evaluate3Block(
        a1, a2, a3, function(), PatchParticle3<Write1, Write2, Write3>());
    }
  
!   inline const Function &function() const { return function_m; }
  
  private:
  
--- 952,966 ----
    inline void
    block(const Array1 &a1, const Array2 &a2, const Array3 &a3) const
    {
+   TAU_PROFILE("void PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>>::block(const Array1 &, const Array2 &, const Array3 &) const", CT(*this), TAU_USER);
+ 
      ParticleEvaluator().evaluate3Block(
        a1, a2, a3, function(), PatchParticle3<Write1, Write2, Write3>());
    }
  
!   inline const Function &function() const {
!   TAU_PROFILE("const Function &PatchFunction<Function, PatchParticle3<Write1, Write2, Write3>>::function() const", CT(*this), TAU_USER);
!  return function_m; }
  
  private:
  
Index: PatchKernel.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/PatchKernel.h,v
retrieving revision 1.18
diff -c -p -r1.18 PatchKernel.h
*** PatchKernel.h	2000/06/08 22:16:13	1.18
--- PatchKernel.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
*************** public:
*** 71,76 ****
--- 72,79 ----
      : Pooma::Iterate_t(Pooma::scheduler()),
        a1_m(a1), function_m(function), write_m(write)
    {
+   TAU_PROFILE("PatchKernel<A1, Function> &PatchKernel<A1, Function>::PatchKernel(const A1 &, const Function &, bool)", CT(*this), TAU_USER);
+ 
      DataObjectRequest<BlockAffinity> getAffinity;
      hintAffinity(engineFunctor(a1_m.engine(),getAffinity));
  
*************** public:
*** 85,90 ****
--- 88,95 ----
  
    virtual ~PatchKernel()
    {
+   TAU_PROFILE("void PatchKernel<A1, Function>::~PatchKernel()", CT(*this), TAU_USER);
+ 
  
      DataObjectRequest<WriteRelease> writeReq;
      engineFunctor(a1_m.engine(),writeReq);
*************** public:
*** 92,97 ****
--- 97,104 ----
  
    virtual void run()
    {
+   TAU_PROFILE("void PatchKernel<A1, Function>::run()", CT(*this), TAU_USER);
+ 
      function_m.apply(a1_m);
    }
  
*************** public:
*** 112,117 ****
--- 119,126 ----
      : Pooma::Iterate_t(Pooma::scheduler()),
        a1_m(a1), a2_m(a2), function_m(function)
    {
+   TAU_PROFILE("PatchKernel2<A1, A2, Function> &PatchKernel2<A1, A2, Function>::PatchKernel2(const A1 &, const A2 &, const Function &)", CT(*this), TAU_USER);
+ 
      DataObjectRequest<BlockAffinity> getAffinity;
      hintAffinity(engineFunctor(a1_m.engine(),getAffinity));
  
*************** public:
*** 136,142 ****
--- 145,153 ----
  
    virtual ~PatchKernel2()
    {
+   TAU_PROFILE("PatchKernel2<A1, A2, Function>::~PatchKernel2", CT(*this), TAU_USER);
  
+ 
      // The write request remembers the data block it sees on the left
      // so that it can check and see if it finds it on the right.
  
*************** public:
*** 153,158 ****
--- 164,171 ----
  
    virtual void run()
    {
+   TAU_PROFILE("PatchKernel2<A1, A2, Function>::run", CT(*this), TAU_USER);
+ 
      function_m.apply(a1_m, a2_m);
    }
  
*************** public:
*** 172,177 ****
--- 185,192 ----
      : Pooma::Iterate_t(Pooma::scheduler()),
        a1_m(a1), a2_m(a2), a3_m(a3), function_m(function)
    {
+   TAU_PROFILE("PatchKernel3<A1, A2, A3, Function> &PatchKernel3<A1, A2, A3, Function>::PatchKernel3(const A1 &, const A2 &, const A3 &, const Function &)", CT(*this), TAU_USER);
+ 
      DataObjectRequest<BlockAffinity> getAffinity;
      hintAffinity(engineFunctor(a1_m.engine(),getAffinity));
  
*************** public:
*** 197,202 ****
--- 212,219 ----
  
    virtual ~PatchKernel3()
    {
+   TAU_PROFILE("void PatchKernel3<A1, A2, A3, Function>::~PatchKernel3()", CT(*this), TAU_USER);
+ 
      // The write request remembers the data block it sees on the left
      // so that it can check and see if it finds it on the right.
  
*************** public:
*** 214,219 ****
--- 231,238 ----
  
    virtual void run()
    {
+   TAU_PROFILE("PatchKernel3<A1, A2, A3, Function>::run", CT(*this), TAU_USER);
+ 
      function_m.apply(a1_m, a2_m, a3_m);
    }
  
*************** template<class Array, class Function>
*** 232,237 ****
--- 251,258 ----
  class ParticleKernel
    : public Pooma::Iterate_t
  {
+   TAU_PROFILE("ParticleKernel<Array, Function>::ParticleKernel", CT(*this), TAU_USER);
+ 
  public:
    ParticleKernel(const Array& array, const Function& function, int patchID,
  		  bool write1)
*************** public:
*** 239,244 ****
--- 260,267 ----
        array_m(array), function_m(function), patchID_m(patchID),
        write1_m(write1)
    {
+   TAU_PROFILE("ParticleKernel<Array, Function>::ParticleKernel", CT(*this), TAU_USER);
+ 
      hintAffinity(engineFunctor(array_m.engine(),
  			       DataObjectRequest<BlockAffinity>()));
  
*************** public:
*** 259,264 ****
--- 282,289 ----
  
    virtual ~ParticleKernel()
    {
+   TAU_PROFILE("ParticleKernel<Array, Function>::~ParticleKernel", CT(*this), TAU_USER);
+ 
      DataObjectRequest<WriteRelease> writeReq;
      DataObjectRequest<ReadRelease>  readReq(writeReq);
  
*************** public:
*** 274,279 ****
--- 299,306 ----
  
    virtual void run()
    {
+   TAU_PROFILE("ParticleKernel<Array, Function>::run", CT(*this), TAU_USER);
+ 
      function_m.apply(array_m,patchID_m);
    }
  
*************** public:
*** 296,301 ****
--- 323,330 ----
        array_m(array), function_m(function), patchID_m(patchID),
        write1_m(write1), csem_m(csem)
    {
+   TAU_PROFILE("ParticleKernelBlock<Array, Function>::ParticleKernelBlock", CT(*this), TAU_USER);
+ 
      hintAffinity(engineFunctor(array_m.engine(),
  			       DataObjectRequest<BlockAffinity>()));
  
*************** public:
*** 316,321 ****
--- 345,352 ----
  
    virtual ~ParticleKernelBlock()
    {
+   TAU_PROFILE("ParticleKernelBlock<Array, Function>::~ParticleKernelBlock", CT(*this), TAU_USER);
+ 
      DataObjectRequest<WriteRelease> writeReq;
      DataObjectRequest<ReadRelease>  readReq(writeReq);
  
*************** public:
*** 331,336 ****
--- 362,369 ----
  
    virtual void run()
    {
+   TAU_PROFILE("ParticleKernelBlock<Array, Function>::run", CT(*this), TAU_USER);
+ 
      function_m.apply(array_m,patchID_m);
      csem_m->incr();
    }
*************** public:
*** 359,364 ****
--- 392,399 ----
        array1_m(array1), array2_m(array2), function_m(function),
        id_m(id), write1_m(write1), write2_m(write2)
    {
+   TAU_PROFILE("ParticleKernel2<Array1, Array2, Function> &ParticleKernel2<Array1, Array2, Function>::ParticleKernel2(const Array1 &, const Array2 &, const Function &, int, bool, bool)", CT(*this), TAU_USER);
+ 
      hintAffinity(engineFunctor(array1_m.engine(),
  			       DataObjectRequest<BlockAffinity>()));
  
*************** public:
*** 384,389 ****
--- 419,426 ----
  
    virtual ~ParticleKernel2()
    {
+   TAU_PROFILE("void ParticleKernel2<Array1, Array2, Function>::~ParticleKernel2()", CT(*this), TAU_USER);
+ 
      DataObjectRequest<WriteRelease> writeReq;
  
      if (write1_m)
*************** public:
*** 403,408 ****
--- 440,447 ----
  
    virtual void run()
    {
+   TAU_PROFILE("void ParticleKernel2<Array1, Array2, Function>::run()", CT(*this), TAU_USER);
+ 
      function_m.apply(array1_m, array2_m, id_m);
    }
  
*************** template<class Array1, class Array2, cla
*** 420,425 ****
--- 459,466 ----
  class ParticleKernel2Block
    : public Pooma::Iterate_t
  {
+   TAU_PROFILE("ParticleKernel2Block<Array1, Array2, Function>::ParticleKernel2Block", CT(*this), TAU_USER);
+ 
  public:
    ParticleKernel2Block(const Array1 &array1,
  		       const Array2 &array2,
*************** public:
*** 430,435 ****
--- 471,478 ----
        array1_m(array1), array2_m(array2), function_m(function),
        id_m(id), write1_m(write1), write2_m(write2), csem_m(csem)
    {
+   TAU_PROFILE("ParticleKernel2Block<Array1, Array2, Function> &ParticleKernel2Block<Array1, Array2, Function>::ParticleKernel2Block(const Array1 &, const Array2 &, const Function &, int, bool, bool, Pooma::CountingSemaphore *)", CT(*this), TAU_USER);
+ 
      hintAffinity(engineFunctor(array1_m.engine(),DataObjectRequest<BlockAffinity>()));
  
      // Request locks
*************** public:
*** 453,458 ****
--- 496,503 ----
  
    virtual ~ParticleKernel2Block()
    {
+   TAU_PROFILE("void ParticleKernel2Block<Array1, Array2, Function>::~ParticleKernel2Block()", CT(*this), TAU_USER);
+ 
      DataObjectRequest<WriteRelease> writeReq;
  
      if (write1_m)
*************** public:
*** 472,477 ****
--- 517,524 ----
  
    virtual void run()
    {
+   TAU_PROFILE("void ParticleKernel2Block<Array1, Array2, Function>::run()", CT(*this), TAU_USER);
+ 
      function_m.apply(array1_m, array2_m, id_m);
      csem_m->incr();
    }
*************** template<class Array1, class Array2, cla
*** 493,498 ****
--- 540,547 ----
  class ParticleKernel3
    : public Pooma::Iterate_t
  {
+   TAU_PROFILE("ParticleKernel3<Array1, Array2, Array3, Function>::ParticleKernel3", CT(*this), TAU_USER);
+ 
  public:
    ParticleKernel3(const Array1 &array1,
  		   const Array2 &array2,
*************** public:
*** 504,509 ****
--- 553,560 ----
        function_m(function), id_m(id),
        write1_m(write1), write2_m(write2), write3_m(write3)
    {
+   TAU_PROFILE("ParticleKernel3<Array1, Array2, Array3, Function> &ParticleKernel3<Array1, Array2, Array3, Function>::ParticleKernel3(const Array1 &, const Array2 &, const Array3 &, const Function &, int, bool, bool, bool)", CT(*this), TAU_USER);
+ 
      hintAffinity(engineFunctor(array1_m.engine(),
  			       DataObjectRequest<BlockAffinity>()));
  
*************** public:
*** 534,539 ****
--- 585,592 ----
  
    virtual ~ParticleKernel3()
    {
+   TAU_PROFILE("void ParticleKernel3<Array1, Array2, Array3, Function>::~ParticleKernel3()", CT(*this), TAU_USER);
+ 
      // Request locks
  
      DataObjectRequest<WriteRelease> writeReq;
*************** public:
*** 561,566 ****
--- 614,621 ----
  
    virtual void run()
    {
+   TAU_PROFILE("void ParticleKernel3<Array1, Array2, Array3, Function>::run()", CT(*this), TAU_USER);
+ 
      function_m.apply(array1_m, array2_m, array3_m, id_m);
    }
  
*************** template<class Array1, class Array2, cla
*** 580,585 ****
--- 635,642 ----
  class ParticleKernel3Block
    : public Pooma::Iterate_t
  {
+   TAU_PROFILE("ParticleKernel3Block<Array1, Array2, Array3, Function>::ParticleKernel3Block", CT(*this), TAU_USER);
+ 
  public:
    ParticleKernel3Block(const Array1 &array1,
  		       const Array2 &array2,
*************** public:
*** 592,597 ****
--- 649,656 ----
        function_m(function), id_m(id),
        write1_m(write1), write2_m(write2), write3_m(write3), csem_m(csem)
    {
+   TAU_PROFILE("ParticleKernel3Block<Array1, Array2, Array3, Function>::ParticleKernel3Block", CT(*this), TAU_USER);
+ 
      hintAffinity(engineFunctor(array1_m.engine(),
  			       DataObjectRequest<BlockAffinity>()));
  
*************** public:
*** 622,627 ****
--- 681,688 ----
  
    virtual ~ParticleKernel3Block()
    {
+   TAU_PROFILE("void ParticleKernel3Block<Array1, Array2, Array3, Function>::~ParticleKernel3Block()", CT(*this), TAU_USER);
+ 
      // Request locks
  
      DataObjectRequest<WriteRelease> writeReq;
*************** public:
*** 649,654 ****
--- 710,717 ----
  
    virtual void run()
    {
+   TAU_PROFILE("ParticleKernel3Block<Array1, Array2, Array3, Function>::run", CT(*this), TAU_USER);
+ 
      function_m.apply(array1_m, array2_m, array3_m, id_m);
      csem_m->incr();
    }
Index: Reduction.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/Reduction.h,v
retrieving revision 1.10
diff -c -p -r1.10 Reduction.h
*** Reduction.h	2001/03/29 00:41:21	1.10
--- Reduction.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
***************
*** 49,54 ****
--- 50,56 ----
  //-----------------------------------------------------------------------------
  
  #include "Domain/NullDomain.h"
+ #include "Engine/Engine.h"
  #include "Engine/Intersector.h"
  #include "Engine/IntersectEngine.h"
  #include "Evaluator/ReductionKernel.h"
*************** struct Reduction<MainEvaluatorTag>
*** 91,102 ****
    //---------------------------------------------------------------------------
    // Default ctor.
  
!   Reduction() { }
  
    //---------------------------------------------------------------------------
    // Destructor
  
!   ~Reduction() { }
  
    //---------------------------------------------------------------------------
    // Input an expression and cause it to be reduced.
--- 93,108 ----
    //---------------------------------------------------------------------------
    // Default ctor.
  
!   Reduction() {
!   TAU_PROFILE("Reduction<MainEvaluatorTag> &Reduction<MainEvaluatorTag>::Reduction()", CT(*this), TAU_USER);
!  }
  
    //---------------------------------------------------------------------------
    // Destructor
  
!   ~Reduction() {
!   TAU_PROFILE("void Reduction<MainEvaluatorTag>::~Reduction()", CT(*this), TAU_USER);
!  }
  
    //---------------------------------------------------------------------------
    // Input an expression and cause it to be reduced.
*************** struct Reduction<MainEvaluatorTag>
*** 105,110 ****
--- 111,118 ----
    template<class T, class Op, class Expr>
    void evaluate(T &ret, const Op &op, const Expr &e) const
    {
+   TAU_PROFILE("void Reduction<MainEvaluatorTag>::evaluate(T &, const Op &, const Expr &) const", CT(*this), TAU_USER);
+ 
      typedef typename EvaluatorTag1<Expr>::Evaluator_t Evaluator_t;
      Reduction<Evaluator_t>().evaluate(ret, op, e());
      
*************** struct Reduction<SinglePatchEvaluatorTag
*** 126,137 ****
    //---------------------------------------------------------------------------
    // Default ctor.
  
!   Reduction() { }
  
    //---------------------------------------------------------------------------
    // Destructor
  
!   ~Reduction() { }
  
    //---------------------------------------------------------------------------
    // Input an expression and cause it to be reduced.
--- 134,149 ----
    //---------------------------------------------------------------------------
    // Default ctor.
  
!   Reduction() {
!   TAU_PROFILE("Reduction<SinglePatchEvaluatorTag> &Reduction<SinglePatchEvaluatorTag>::Reduction()", CT(*this), TAU_USER);
!  }
  
    //---------------------------------------------------------------------------
    // Destructor
  
!   ~Reduction() {
!   TAU_PROFILE("void Reduction<SinglePatchEvaluatorTag>::~Reduction()", CT(*this), TAU_USER);
!  }
  
    //---------------------------------------------------------------------------
    // Input an expression and cause it to be reduced.
*************** struct Reduction<SinglePatchEvaluatorTag
*** 143,148 ****
--- 155,162 ----
    void evaluate(T &ret, const Op &op, const Expr &e,
  		Pooma::CountingSemaphore &csem) const
    {
+   TAU_PROFILE("void Reduction<SinglePatchEvaluatorTag>::evaluate(T &, const Op &, const Expr &, Pooma::CountingSemaphore &) const", CT(*this), TAU_USER);
+ 
      typedef typename KernelTag1<Expr>::Kernel_t Kernel_t;
  
  #if POOMA_REORDER_ITERATES
*************** struct Reduction<SinglePatchEvaluatorTag
*** 158,163 ****
--- 172,179 ----
    template<class T, class Op, class Expr>
    void evaluate(T &ret, const Op &op, const Expr &e) const
    {
+   TAU_PROFILE("void Reduction<SinglePatchEvaluatorTag>::evaluate(T &, const Op &, const Expr &) const", CT(*this), TAU_USER);
+ 
      Pooma::CountingSemaphore csem;
      csem.height(1);
  
*************** struct Reduction<MultiPatchEvaluatorTag>
*** 185,196 ****
    //---------------------------------------------------------------------------
    // Default ctor.
  
!   Reduction() { }
  
    //---------------------------------------------------------------------------
    // Destructor
  
!   ~Reduction() { }
  
    //---------------------------------------------------------------------------
    // Input an expression and cause it to be reduced according to the 
--- 201,216 ----
    //---------------------------------------------------------------------------
    // Default ctor.
  
!   Reduction() {
!   TAU_PROFILE("Reduction<MultiPatchEvaluatorTag> &Reduction<MultiPatchEvaluatorTag>::Reduction()", CT(*this), TAU_USER);
!  }
  
    //---------------------------------------------------------------------------
    // Destructor
  
!   ~Reduction() {
!   TAU_PROFILE("void Reduction<MultiPatchEvaluatorTag>::~Reduction()", CT(*this), TAU_USER);
!  }
  
    //---------------------------------------------------------------------------
    // Input an expression and cause it to be reduced according to the 
*************** struct Reduction<MultiPatchEvaluatorTag>
*** 210,215 ****
--- 230,237 ----
    template<class T, class Op, class Expr>
    void evaluate(T &ret, const Op &op, const Expr &e) const
    {
+   TAU_PROFILE("void Reduction<MultiPatchEvaluatorTag>::evaluate(T &, const Op &, const Expr &) const", CT(*this), TAU_USER);
+ 
      typedef Intersector<Expr::dimensions> Inter_t;
      Inter_t inter;
  
Index: ReductionKernel.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Evaluator/ReductionKernel.h,v
retrieving revision 1.3
diff -c -p -r1.3 ReductionKernel.h
*** ReductionKernel.h	2000/06/08 22:16:13	1.3
--- ReductionKernel.h	2001/10/09 23:00:35
***************
*** 1,3 ****
--- 1,4 ----
+ #include <Profile/Profiler.h>
  // -*- C++ -*-
  // ACL:license
  // ----------------------------------------------------------------------
***************
*** 78,83 ****
--- 79,86 ----
  template<class T, class Op, class Expr, class KernelTag>
  class ReductionKernel : public Pooma::Iterate_t
  {
+   TAU_PROFILE("ReductionKernel<T, Op, Expr, KernelTag>::ReductionKernel", CT(*this), TAU_USER);
+ 
  public:
  
    typedef ReductionKernel<T, Op, Expr, KernelTag> This_t;
*************** ReductionKernel(T &ret, const Op &op, co
*** 131,136 ****
--- 134,141 ----
    : Pooma::Iterate_t(Pooma::scheduler()),
      ret_m(ret), op_m(op), expr_m(e), csem_m(csem)
  {
+   TAU_PROFILE("ReductionKernel<T, Op, Expr, KernelTag>::ReductionKernel", CT(*this), TAU_USER);
+ 
    // Request read lock.
  
    DataObjectRequest<ReadRequest> readReq(*this);
*************** ReductionKernel(T &ret, const Op &op, co
*** 145,150 ****
--- 150,157 ----
  template<class T, class Op, class Expr, class KernelTag>
  ReductionKernel<T, Op, Expr, KernelTag>::~ReductionKernel()
  {
+   TAU_PROFILE("ReductionKernel<T, Op, Expr, KernelTag>::~ReductionKernel", CT(*this), TAU_USER);
+ 
    // Release read lock.
  
    DataObjectRequest<ReadRelease> readRelease;
*************** ReductionKernel<T, Op, Expr, KernelTag>:
*** 161,166 ****
--- 168,175 ----
  template<class T, class Op, class Expr, class KernelTag>
  void ReductionKernel<T, Op, Expr, KernelTag>::run()
  {
+   TAU_PROFILE("ReductionKernel<T, Op, Expr, KernelTag>::run", CT(*this), TAU_USER);
+ 
    // Just evaluate the expression.
    
    ReductionEvaluator<KernelTag>::evaluate(ret_m, op_m, expr_m);


More information about the pooma-dev mailing list