From candel at itp.phys.ethz.ch Sun Apr 6 17:00:33 2003 From: candel at itp.phys.ethz.ch (Arno Candel) Date: Sun, 06 Apr 2003 16:00:33 -0100 Subject: Remote access of distributed multipatched arrays Message-ID: <3E905D31.8010104@itp.phys.ethz.ch> Hi everybody, I encountered a problem doing local if-statements using multiple values of several distributed multipatched brick arrays to calculate the value of one such array. Below I have included a simple test program which shows the relevant problem. Three 3D distributed multipatched brick arrays are created and allocated on different domains and thus on different patches. Two arrays are now used to calculate the values of the other array, using local if-statements. Both a "stupid serial" and a "parallel" version of the calculation part are implemented. The use of data-parallel expression or stencils was not possible, in my view. The "stupid serial" version runs flawlessly, but takes far too long on parallel execution, as every node does all the work. Unfortunately, the "parallel" version crashes when executed in parallel (mpirun -np 2 Test -mpi) as remote access to values of distributed arrays seems forbidden. Due to the different domains of the multiple arrays, they are differently stored on the contexts and simultaneous local access is not possible everywhere. Now, I would expect that there is a way to allow remote access via communication in a loop over local patches. This would still scale much better than the "stupid serial" version. I would greatly appreciate your suggestions and comments. Arno Candel simple test program: ********************************************************************** #include "Pooma/Pooma.h" #include "Pooma/Particles.h" #include "Pooma/BrickArrays.h" #include "Pooma/Arrays.h" #include "Utilities/Clock.h" #include "Layout/GridLayout.h" struct FillB { double operator()(int i, int j, int k) const { return i*sin(i*j/2.0)/(k+1); } }; struct FillC { double operator()(int i, int j, int k) const { return k*cos(3.0*j*k)/(i+1); } }; int main(int argc, char* argv[]) { Pooma::initialize(argc,argv); Pooma::Clock clock; double time; Inform pout("Test"); Loc<3> ex=Loc<3>(1,0,0); Loc<3> ez=Loc<3>(0,0,1); int MX=3,MY=4,MZ=7; // dimensions of calculational domain Loc<3> blocks(1,1,Pooma::contexts()); // parallelization along z-axis GuardLayers<3> intguards(1), extguards(0); // one internal guard layer, no external guard layer GridPartition<3> Part=GridPartition<3>(blocks,intguards,extguards); // Create three distributed MultiPatch brick arrays // with differing domains and thus different distributions among contexts Array<3, double, MultiPatch > > A, B, C; Interval<3> ADom=Interval<3>(Interval<1>(1,MX), Interval<1>(1,MY), Interval<1>(1,MZ)); Interval<3> BDom=Interval<3>(Interval<1>(0,MX), Interval<1>(1,MY), Interval<1>(0,MZ+1)); Interval<3> CDom=Interval<3>(Interval<1>(0,MX), Interval<1>(1,MY), Interval<1>(1,2*MZ)); GridLayout<3> Alayout = GridLayout<3>(ADom,Part,DistributedTag()); GridLayout<3> Blayout = GridLayout<3>(BDom,Part,DistributedTag()); GridLayout<3> Clayout = GridLayout<3>(CDom,Part,DistributedTag()); A.initialize(Alayout); B.initialize(Blayout); C.initialize(Clayout); A=1; B=Array<3, double, IndexFunction >(); C=Array<3, double, IndexFunction >(); // "stupid serial" version Pooma::blockAndEvaluate(); time=clock.value(); for (int i=ADom[0].first();i<=ADom[0].last();i++) for (int j=ADom[1].first();j<=ADom[1].last();j++) for (int k=ADom[2].first();k<=ADom[2].last();k++) { Loc<3> x(i,j,k); if ( (B(x+ez)<0.5) && (C(x-ex)>0.3) ) { A(x)=B(x-ez-ex)+C(x+ez); } } Pooma::blockAndEvaluate(); pout << A << "\nstupid serial version took " << clock.value()-time << " secs" << std::endl; // "parallel" version, iterate only over local patches of A Pooma::blockAndEvaluate(); time=clock.value(); for (GridLayout<3>::const_iterator it = Alayout.beginLocal(); it != Alayout.endLocal(); it++) { for (int i=it->domain()[0].first();i<=it->domain()[0].last();i++) for (int j=it->domain()[1].first();j<=it->domain()[1].last();j++) for (int k=it->domain()[2].first();k<=it->domain()[2].last();k++) { Loc<3> x(i,j,k); if ( (B(x+ez)<0.5) && (C(x-ex)>0.3) ) { A(x)=B(x-ez-ex)+C(x+ez); // problem: local patches of A might not contain needed values of B and C and remote access is forbidden! // Will crash in parallel execution! } } } Pooma::blockAndEvaluate(); pout << A << "\nparallel version took " << clock.value()-time << " secs" << std::endl; Pooma::finalize(); return 0; } From rguenth at tat.physik.uni-tuebingen.de Sun Apr 6 18:31:58 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Sun, 6 Apr 2003 20:31:58 +0200 (CEST) Subject: [pooma-dev] Remote access of distributed multipatched arrays In-Reply-To: <3E905D31.8010104@itp.phys.ethz.ch> Message-ID: On Sun, 6 Apr 2003, Arno Candel wrote: > Hi everybody, > > I encountered a problem doing local if-statements using multiple values > of several distributed multipatched brick arrays to calculate the value > of one such array. > > Below I have included a simple test program which shows the relevant > problem. Three 3D distributed multipatched brick arrays are created and > allocated on different domains and thus on different patches. Two arrays > are now used to calculate the values of the other array, using local > if-statements. Both a "stupid serial" and a "parallel" version of the > calculation part are implemented. The use of data-parallel expression or > stencils was not possible, in my view. This is not the case. > // "stupid serial" version > Pooma::blockAndEvaluate(); > time=clock.value(); > for (int i=ADom[0].first();i<=ADom[0].last();i++) > for (int j=ADom[1].first();j<=ADom[1].last();j++) > for (int k=ADom[2].first();k<=ADom[2].last();k++) { > Loc<3> x(i,j,k); > if ( (B(x+ez)<0.5) && (C(x-ex)>0.3) ) { > A(x)=B(x-ez-ex)+C(x+ez); > } > } > Pooma::blockAndEvaluate(); > pout << A << "\nstupid serial version took " << clock.value()-time > << " secs" << std::endl; Just use A(Adom) = where(B(Adom+ez)<0.5 && C(Adom-ex)>0.3, B(Adom-ez-ex) + C(Adom+ez)); here - also notice that setting external guards to zero will not work, as you need at least as much external guards as internal ones (usually). > > // "parallel" version, iterate only over local patches of A > Pooma::blockAndEvaluate(); > time=clock.value(); > for (GridLayout<3>::const_iterator it = Alayout.beginLocal(); it != > Alayout.endLocal(); it++) { > for (int i=it->domain()[0].first();i<=it->domain()[0].last();i++) > for (int j=it->domain()[1].first();j<=it->domain()[1].last();j++) > for (int k=it->domain()[2].first();k<=it->domain()[2].last();k++) { > Loc<3> x(i,j,k); > if ( (B(x+ez)<0.5) && (C(x-ex)>0.3) ) { > A(x)=B(x-ez-ex)+C(x+ez); > // problem: local patches of A might not contain needed > values of B and C and remote access is forbidden! > // Will crash in parallel execution! remote access is not forbidden. But due to the guard layer setup (see above) you may experience crashes. Otherwise this should work fine. Hope this helps. Richard. From rguenth at tat.physik.uni-tuebingen.de Tue Apr 22 15:57:58 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Tue, 22 Apr 2003 17:57:58 +0200 (CEST) Subject: [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnCopy() Message-ID: Hi! Currently for a multipatch engine makeOwnCopy() does no good (it doesnt copy), it seems because just calling makeOwnCopy() on the RefCountedBlockPtr does not copy the underlying engines. I didnt figure out why and so came up with the following fix which works for me. I have also an updated Field/BasicTest3.cpp which now checks every engine combination for makeOwnCopy and it now succeeds for both MultiPatch and MultiPatch >. Ok to apply? Richard. 2003 Apr 22 Richard Guenther * Engine/MultiPatchEngine.cpp: do makeOwnCopy() manually. ===== MultiPatchEngine.cpp 1.3 vs edited ===== --- 1.3/r2/src/Engine/MultiPatchEngine.cpp Fri Jan 24 10:35:52 2003 +++ edited/MultiPatchEngine.cpp Tue Apr 22 17:42:04 2003 @@ -244,8 +244,17 @@ Engine >:: makeOwnCopy() { - data_m.makeOwnCopy(); - + PAssert(data_m.isValid()); + if (data_m.isShared()) { + PatchContainer_t model = data_m; + data_m = PatchContainer_t(model.size()); + for (int i=0; i >::makeOwnC opy() Message-ID: Hmmm. I don't have time to play with this, but something looks wrong. The sequence data_m.makeOwnCopy(); if (data_m.isShared()) the isShared() test should always return false after a call to makeOwnCopy - that should be an invariant property of any ref-counted thing. That was certainly my intention. Jim ------------------------------------------------------------------------ James A. Crotinger email: jimc at numerix.com NumeriX, LLC phone: (505) 424-4477 x104 2960 Rodeo Park Dr. W. Santa Fe, NM 87505 -----Original Message----- From: Richard Guenther [mailto:rguenth at tat.physik.uni-tuebingen.de] Sent: Tuesday, April 22, 2003 9:58 AM To: pooma-dev at pooma.codesourcery.com Cc: Jeffrey D. Oldham Subject: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnCopy() Hi! Currently for a multipatch engine makeOwnCopy() does no good (it doesnt copy), it seems because just calling makeOwnCopy() on the RefCountedBlockPtr does not copy the underlying engines. I didnt figure out why and so came up with the following fix which works for me. I have also an updated Field/BasicTest3.cpp which now checks every engine combination for makeOwnCopy and it now succeeds for both MultiPatch and MultiPatch >. Ok to apply? Richard. 2003 Apr 22 Richard Guenther * Engine/MultiPatchEngine.cpp: do makeOwnCopy() manually. ===== MultiPatchEngine.cpp 1.3 vs edited ===== --- 1.3/r2/src/Engine/MultiPatchEngine.cpp Fri Jan 24 10:35:52 2003 +++ edited/MultiPatchEngine.cpp Tue Apr 22 17:42:04 2003 @@ -244,8 +244,17 @@ Engine >:: makeOwnCopy() { - data_m.makeOwnCopy(); - + PAssert(data_m.isValid()); + if (data_m.isShared()) { + PatchContainer_t model = data_m; + data_m = PatchContainer_t(model.size()); + for (int i=0; i From rguenth at tat.physik.uni-tuebingen.de Tue Apr 22 17:51:22 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Tue, 22 Apr 2003 19:51:22 +0200 (CEST) Subject: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy() In-Reply-To: Message-ID: On Tue, 22 Apr 2003, James Crotinger wrote: > Hmmm. I don't have time to play with this, but something looks wrong. The > sequence > > data_m.makeOwnCopy(); > if (data_m.isShared()) Well ;) I attached a unified patch, the data_m.makeOwnCopy() is removed, the rest added. The problem is, the data_m.makeOwnCopy() does not work. Richard. > 2003 Apr 22 Richard Guenther > > * Engine/MultiPatchEngine.cpp: do makeOwnCopy() manually. > > ===== MultiPatchEngine.cpp 1.3 vs edited ===== > --- 1.3/r2/src/Engine/MultiPatchEngine.cpp Fri Jan 24 10:35:52 2003 > +++ edited/MultiPatchEngine.cpp Tue Apr 22 17:42:04 2003 > @@ -244,8 +244,17 @@ > Engine >:: > makeOwnCopy() > { > - data_m.makeOwnCopy(); > - > + PAssert(data_m.isValid()); > + if (data_m.isShared()) { > + PatchContainer_t model = data_m; > + data_m = PatchContainer_t(model.size()); > + for (int i=0; i + data_m[i] = model[i]; > + data_m[i].makeOwnCopy(); > + } > + pDirty_m = new bool(*pDirty_m); > + } > + > return *this; > } > > From rguenth at tat.physik.uni-tuebingen.de Tue Apr 22 17:56:15 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Tue, 22 Apr 2003 19:56:15 +0200 (CEST) Subject: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy() In-Reply-To: Message-ID: On Tue, 22 Apr 2003, James Crotinger wrote: > Hmmm. I don't have time to play with this, but something looks wrong. Btw., the failing testcase is the following (which is fixed with my patch), failing tester.check()s marked with XXXX: #include "Pooma/Fields.h" #include "Pooma/Tiny.h" #include "Utilities/Tester.h" #include #include template void check(Pooma::Tester& tester, Field& f) { typedef Field Field_t; f.all() = 2; // make a deep copy Field_t h(f); h.makeOwnCopy(); // write to copy and check if it did not clobber f h.all() = 1; tester.check("f != h", all(f.all() == 2) && all(h.all() == 1)); // XXXX } //----------------------------------------------------------------------------- // Main program: //----------------------------------------------------------------------------- int main(int argc, char *argv[]) { Pooma::initialize(argc, argv); Pooma::Tester tester(argc, argv); // Create the physical domain. const int NX = 5, NY = 5; Interval<1> I(NX), J(NY); Vector<2,double> origin; Vector<2,double> spacings; for (int d = 0; d < 2; d++) { origin(d) = d; spacings(d) = d + 1; } Centering<2> vert = canonicalCentering<2>(VertexType, Continuous); // MultiPatch tester.out() << "MultiPatch...\n"; { GridLayout<2> layout1(Interval<2>(I, J), Loc<2>(1, 1), GuardLayers<2>(1), DistributedTag()); Field, int, MultiPatch > f(vert, layout1, origin, spacings); check(tester, f); } // MultiPatch > tester.out() << "MultiPatch >...\n"; { GridLayout<2> layout1(Interval<2>(I, J), Loc<2>(1, 1), GuardLayers<2>(1), DistributedTag()); Field, int, MultiPatch > > f(vert, layout1, origin, spacings); check(tester, f); } int ret = tester.results("BasicTest3"); Pooma::finalize(); return ret; } From jcrotinger at proximation.com Tue Apr 22 18:23:27 2003 From: jcrotinger at proximation.com (James Crotinger) Date: Tue, 22 Apr 2003 12:23:27 -0600 Subject: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy() Message-ID: Ah - gotcha. I missed the '-'. The right thing is to fix makeOwnCopy, of course. This looks like a traits problem - the MultiPatchEngine::PatchContainer_t is a RCBPtr of engines, but the underlying engines have shallow copy semantics. There is a traits class that marks shallow-copy objects appropriately and that can be used to implement copy correctly. In ElementProperties.h there is an ElementProperties base class called MakeOwnCopyProperties that is set up to handle this - what there should be, somewhere, is a specialization: template template <> struct ElementProperties > : public MakeOwnCopyProperties > { }; What puzzles me is that I see this specialization (a partial one) for Brick and several others. So this ought to work for MultiPatch and any of the other engines that have done this specialization. (It will not work on views - we went around on this and ultimately decided that doing makeOwnCopy on a view should not be allowed) Hmmm. I don't see a specialization for Remote. (Just saw your example.) Is this failing for both Brick and Remote? The lack of a ElementProperties specialization for Remote is a bug. Any class that has shallow copy semantics and that implements the makeOwnCopy() function should specialize ElementProperties as above. At any rate, it would probably be good to step through the old code and see where it is ending up in the wrong specialization of ElementProperties. That's a bug that could bite in other places. Looks like spotted another bug wrt the dirty flag - that deep copy is needed regardless of how the engines are copied. Jim ------------------------------------------------------------------------ James A. Crotinger email: jimc at numerix.com NumeriX, LLC phone: (505) 424-4477 x104 2960 Rodeo Park Dr. W. Santa Fe, NM 87505 -----Original Message----- From: Richard Guenther [mailto:rguenth at tat.physik.uni-tuebingen.de] Sent: Tuesday, April 22, 2003 11:51 AM To: James Crotinger Cc: 'pooma-dev at pooma.codesourcery.com'; 'Jeffrey D. Oldham' Subject: RE: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy() On Tue, 22 Apr 2003, James Crotinger wrote: > Hmmm. I don't have time to play with this, but something looks wrong. The > sequence > > data_m.makeOwnCopy(); > if (data_m.isShared()) Well ;) I attached a unified patch, the data_m.makeOwnCopy() is removed, the rest added. The problem is, the data_m.makeOwnCopy() does not work. Richard. > 2003 Apr 22 Richard Guenther > > * Engine/MultiPatchEngine.cpp: do makeOwnCopy() manually. > > ===== MultiPatchEngine.cpp 1.3 vs edited ===== > --- 1.3/r2/src/Engine/MultiPatchEngine.cpp Fri Jan 24 10:35:52 2003 > +++ edited/MultiPatchEngine.cpp Tue Apr 22 17:42:04 2003 > @@ -244,8 +244,17 @@ > Engine >:: > makeOwnCopy() > { > - data_m.makeOwnCopy(); > - > + PAssert(data_m.isValid()); > + if (data_m.isShared()) { > + PatchContainer_t model = data_m; > + data_m = PatchContainer_t(model.size()); > + for (int i=0; i + data_m[i] = model[i]; > + data_m[i].makeOwnCopy(); > + } > + pDirty_m = new bool(*pDirty_m); > + } > + > return *this; > } > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From rguenth at tat.physik.uni-tuebingen.de Tue Apr 22 18:52:14 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Tue, 22 Apr 2003 20:52:14 +0200 (CEST) Subject: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy() In-Reply-To: Message-ID: On Tue, 22 Apr 2003, James Crotinger wrote: > Ah - gotcha. I missed the '-'. > > The right thing is to fix makeOwnCopy, of course. This looks like a traits > problem - the MultiPatchEngine::PatchContainer_t is a RCBPtr of engines, but > the underlying engines have shallow copy semantics. There is a traits class > that marks shallow-copy objects appropriately and that can be used to > implement copy correctly. In ElementProperties.h there is an > ElementProperties base class called MakeOwnCopyProperties that is set up to > handle this - what there should be, somewhere, is a specialization: > > template > template <> > struct ElementProperties > > : public MakeOwnCopyProperties > > { }; > > What puzzles me is that I see this specialization (a partial one) for Brick > and several others. So this ought to work for MultiPatch and any of > the other engines that have done this specialization. (It will not work on > views - we went around on this and ultimately decided that doing makeOwnCopy > on a view should not be allowed) > > Hmmm. I don't see a specialization for Remote. (Just saw your > example.) Is this failing for both Brick and Remote? The lack of a It fails for multipatch engines, both MultiPatch and MultiPatch >, it works for Remote. > ElementProperties specialization for Remote is a bug. Any class that > has shallow copy semantics and that implements the makeOwnCopy() function > should specialize ElementProperties as above. The problem is, the specialization for ElementProperties for the RCB is somehow not working correctly. I dont have time to track this down, so I went the route used in FieldEngine::makeOwnCopy(), do it all manually, and this solved my problem. > At any rate, it would probably be good to step through the old code and see > where it is ending up in the wrong specialization of ElementProperties. > That's a bug that could bite in other places. > > Looks like spotted another bug wrt the dirty flag - that deep copy is needed > regardless of how the engines are copied. Yes, indeed. I'll leave it to Jeffrey, wether to apply this patch or leave the bug in. Thanks, Richard. From gtalbot at locuspharma.com Wed Apr 23 20:10:35 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 23 Apr 2003 16:10:35 -0400 Subject: GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? Message-ID: <24752b2dfd3ec609e6c9582a2ede3a5b3ea6f32a@locuspharma.com> Hi, New POOMA II user. Got everything to compile and link today. The performance of this stuff is shocking. I ran a hand coded version of your 2D diffusion program on my box for 250 steps, 800x800 array. 1m34s, uniprocessor. Using a stencil, same box, uniprocessor. 25s. WOW. Using -shmem -np 2 to distribute the shared array version on both of my processors on my box. 12s. Truly amazing. I think this may be a dramatically useful tool. The only thing that irks me a bit is that there are a fair number of compiler warnings, which I will append, along with the source I used, to this e-mail. Is this normal? Swimming in a sea of warnings from the POOMA headers, I might miss some on my own code... Take care. -- George T. Talbot Here's the program: #include using namespace std; #define STENCIL #define POOMA #define DISTRIBUTED #ifdef POOMA #include "Pooma/Arrays.h" #endif #ifdef STENCIL class NinePtDiffusion { public: template inline typename C::Element_t operator()(const C& c, int I, int J) const { return (1.0/9.0) * (c.read(I+1, J+1) + c.read(I+1, J ) + c.read(I+1, J-1) + c.read(I , J+1) + c.read(I , J ) + c.read(I , J-1) + c.read(I-1, J+1) + c.read(I-1, J ) + c.read(I-1, J-1)); } inline int lowerExtent(int) const { return 1; } inline int upperExtent(int) const { return 1; } }; #endif int main(int argc, char* argv[]) { #ifdef POOMA Pooma::initialize(argc, argv); #endif long numAveragings = 250, numSteps; numSteps = (numAveragings+1)/2; long n = 800; long numProcessors=2; #ifdef POOMA Inform output; output << "processors=" << numProcessors << " avgs=" << numAveragings << " n=" << n << endl; #else cout << "processors=" << numProcessors << " avgs=" << numAveragings << " n=" << n << endl; #endif #ifdef POOMA Interval<1> N(0, n-1); Interval<2> problemDomain(N, N); Interval<1> I(1, n-2); Interval<1> J(1, n-2); Interval<2> interiorDomain(I, I); #ifdef DISTRIBUTED UniformGridPartition<2> partition(Loc<2>(numProcessors,numProcessors), GuardLayers<2>(1), GuardLayers<2>(0)); UniformGridLayout<2> layout(problemDomain, partition, DistributedTag()); Array<2, double, MultiPatch > > a(layout); Array<2, double, MultiPatch > > b(layout); #else Array<2, double, Brick> a(problemDomain); Array<2, double, Brick> b(problemDomain); #endif a = b = 0.0; Pooma::blockAndEvaluate(); b(n/2, n/2) = 1000.0; #ifdef STENCIL Stencil diffusion; #endif #else double a[n][n], b[n][n]; for (long x=1; x::Grid(const Grid<1>&)': /usr/local/cots/pooma/src/Domain/Grid.h:360: warning: base class `class Domain<1, DomainTraits > >' should be explicitly initialized in the copy constructor In file included from /usr/local/cots/pooma/src/Pooma/Arrays.h:46, from diffusion_test.cpp:9: /usr/local/cots/pooma/src/Engine/RemoteEngine.h: In copy constructor `GatherContexts::GatherContextsData::GatherContextsData(const GatherContexts::GatherContextsData&)': /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1697: warning: base class ` class RefCounted' should be explicitly initialized in the copy constructor diffusion_test.cpp: In function `int main(int, char**)': diffusion_test.cpp:100: warning: unused variable `const double weight' In file included from /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499, from /usr/local/cots/pooma/src/Array/Array.h:108, from diffusion_test.cpp:77: /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In copy constructor `UniformGridLayout::UniformGridLayout(const UniformGridLayout&) [with int Dim = 2]': /usr/local/cots/pooma/src/Layout/LayoutBase.h:806: instantiated from `LayoutBaseViewData::LayoutBaseViewData(const L&, const Domain&) [with DT = DomainTraits >, int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]' /usr/local/cots/pooma/src/Layout/LayoutBase.h:1368: instantiated from `UniformGridLayoutViewData::UniformGridLayoutViewData(const UniformGridLayout&, const Domain&) [with DT = DomainTraits >, int Dim = 2, int Dim2 = 2]' /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499: instantiated from `UniformGridLayoutView::UniformGridLayoutView(UniformGridLayoutViewData::Layout_t&, const Domain&) [with DT = DomainTraits >, int Dim = 2, int Dim2 = 2]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:992: instantiated from `Engine >::Engine(const Engine >&, const Domain&) [with DT = DomainTraits >, int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated from `Array::Array(const Engine&, const Initializer&) [with int Dim2 = 2, T2 = double, EngineTag2 = MultiPatch >, Initializer = Interval<2>, int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from `static Array >::newDim, T, NewEngine::Engine_t, Array::Domain_t>::Type_t::Tag_t> View0 >::make(const Array&) [with int Dim = 2, T = double, EngineTag = MultiPatch >]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated from `AltView0 >::Type_t Array::operator()() const [with int Dim = 2, T = double, EngineTag = MultiPatch >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatch > >, RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const Array& assign(const Array&, const T1&, const Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch >, T1 = double, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const Array& Array::operator=(const T1&) const [with T1 = double, int Dim = 2, T = double, EngineTag = MultiPatch >]' /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from `Array& Array::operator=(const Array&) [with int Dim = 2, T = double, EngineTag = MultiPatch >]' diffusion_test.cpp:77: instantiated from here /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:1831: warning: base class `class Observer >' should be explicitly initialized in the copy constructor In file included from /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519, from diffusion_test.cpp:108: /usr/local/cots/pooma/src/Layout/LayoutBase.h: In constructor `LayoutBaseViewData::LayoutBaseViewData(const L&, const LV&, const ViewIndexer&, const Domain&, GuardLayers, GuardLayers) [with DT = DomainTraits >, LV = UniformGridLayoutView<2, 2>, int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]': /usr/local/cots/pooma/src/Layout/LayoutBase.h:1388: instantiated from `UniformGridLayoutViewData::UniformGridLayoutViewData(const UniformGridLayoutView&, const Domain&) [with DT = DomainTraits >, int Dim = 2, int Dim2 = 2]' /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519: instantiated from `UniformGridLayoutView::UniformGridLayoutView(const UniformGridLayoutView&, const Domain&) [with DT = DomainTraits >, int Dim = 2, int Dim2 = 2]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1012: instantiated from `Engine >::Engine(const Engine >&, const Domain&) [with DT = DomainTraits >, int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated from `Array::Array(const Engine&, const Initializer&) [with int Dim2 = 2, T2 = double, EngineTag2 = MultiPatchView, 2>, Initializer = Interval<2>, int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from `static Array >::newDim, T, NewEngine::Engine_t, Array::Domain_t>::Type_t::Tag_t> View0 >::make(const Array&) [with int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated from `AltView0 >::Type_t Array::operator()() const [with int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, StencilEngine, 2> > > >, Op = OpAssign]' diffusion_test.cpp:108: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, StencilEngine, 2> > > >, Op = OpAssign]' diffusion_test.cpp:2486: instantiated from `const Array& assign(const Array&, const Array&, const Op&) [with int Dim = 2, T = double, EngineTag = MultiPatchView, 2>, int OtherDim = 2, OtherT = double, OtherEngineTag = StencilEngine, 2> > >, Op = OpAssign]' diffusion_test.cpp:2117: instantiated from `const Array& Array::operator=(const T1&) const [with T1 = Array<2, double, StencilEngine, 2> > > >, int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' diffusion_test.cpp:105: instantiated from here /usr/local/cots/pooma/src/Layout/LayoutBase.h:1027: warning: member initializers for `ViewIndexer<2, 2> LayoutBaseViewData<2, 2, UniformGridLayout<2> >::indexer_m' /usr/local/cots/pooma/src/Layout/LayoutBase.h:1010: warning: and `long int LayoutBaseViewData<2, 2, UniformGridLayout<2> >::id_m' /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be re-ordered to match declaration order /usr/local/cots/pooma/src/Layout/LayoutBase.h:1040: warning: member initializers for `bool LayoutBaseViewData<2, 2, UniformGridLayout<2> >::subdomainsComputed_m' /usr/local/cots/pooma/src/Layout/LayoutBase.h:1021: warning: and ` GuardLayers<2> LayoutBaseViewData<2, 2, UniformGridLayout<2> >::internalGuards_m' /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be re-ordered to match declaration order /usr/local/cots/pooma/src/Engine/Stencil.h: In constructor `StencilIntersector::StencilIntersector(const Interval&, const Intersect&) [with int Dim = 2, Intersect = Intersector<2>]': diffusion_test.cpp:863: instantiated from `static int LeafFunctor >, ExpressionApply > >::apply(const Engine >&, const ExpressionApply >&) [with int D = 2, T = double, S = NinePtDiffusion, E = Array<2, double, MultiPatchView, 2> >, Intersect = Intersector<2>]' diffusion_test.cpp:2307: instantiated from `static int LeafFunctor, ExpressionApply >::apply(const Array&, const ExpressionApply&) [with int Dim = 2, T = double, E = StencilEngine, 2> > >, Tag = IntersectorTag >]' diffusion_test.cpp:80: instantiated from `static LeafFunctor::Type_t ForEach::apply(const Expr&, const FTag&, const CTag&) [with Expr = Array<2, double, StencilEngine, 2> > > >, FTag = ExpressionApply > >, CTag = NullCombine]' diffusion_test.cpp:88: instantiated from `ForEach::Type_t forEach(const Expr&, const FTag&, const CTag&) [with Expr = Array<2, double, StencilEngine, 2> > > >, FTag = ExpressionApply > >, CTag = NullCombine]' diffusion_test.cpp:276: instantiated from `void expressionApply(const A&, const Tag&) [with A = Array<2, double, StencilEngine, 2> > > >, Tag = IntersectorTag >]' diffusion_test.cpp:1914: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, StencilEngine, 2> > > >, Op = OpAssign]' diffusion_test.cpp:108: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, StencilEngine, 2> > > >, Op = OpAssign]' diffusion_test.cpp:2486: instantiated from `const Array& assign(const Array&, const Array&, const Op&) [with int Dim = 2, T = double, EngineTag = MultiPatchView, 2>, int OtherDim = 2, OtherT = double, OtherEngineTag = StencilEngine, 2> > >, Op = OpAssign]' diffusion_test.cpp:2117: instantiated from `const Array& Array::operator=(const T1&) const [with T1 = Array<2, double, StencilEngine, 2> > > >, int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' diffusion_test.cpp:105: instantiated from here /usr/local/cots/pooma/src/Engine/Stencil.h:844: warning: member initializers for `Intersector<2> StencilIntersector<2, Intersector<2> >::intersector_m' /usr/local/cots/pooma/src/Engine/Stencil.h:843: warning: and `Interval<2> StencilIntersector<2, Intersector<2> >::domain_m' /usr/local/cots/pooma/src/Engine/Stencil.h:788: warning: will be re-ordered to match declaration order /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static member function `static void DomainTraits >::setDomain(int (&)[2], const T1&, const T2&) [with T1 = int, T2 = unsigned int]': /usr/local/cots/pooma/src/Domain/Interval.h:369: instantiated from here /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static member function `static void DomainTraits >::setDomain(int (&)[2], const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': /usr/local/cots/pooma/src/Domain/Interval.h:377: instantiated from here /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member function `static void DomainTraits >::setDomain(int (&)[3], const T1&, const T2&) [with T1 = int, T2 = unsigned int]': /usr/local/cots/pooma/src/Domain/Range.h:396: instantiated from here /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member function `static void DomainTraits >::setDomain(int (&)[3], const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': /usr/local/cots/pooma/src/Domain/Range.h:407: instantiated from here /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member function `static void DomainTraits >::setDomain(IndirectionList&, const T1&, const T2&) [with T1 = int, T2 = unsigned int]': /usr/local/cots/pooma/src/Domain/Grid.h:395: instantiated from here /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member function `static void DomainTraits >::setDomain(IndirectionList&, const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': /usr/local/cots/pooma/src/Domain/Grid.h:404: instantiated from here /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp: In copy constructor `Engine >::Engine(const Engine >&) [with int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote]': /usr/local/cots/pooma/src/Engine/MultiPatchEngine.h:992: instantiated from `Engine >::Engine(const Engine >&, const Domain&) [with DT = DomainTraits >, int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated from `Array::Array(const Engine&, const Initializer&) [with int Dim2 = 2, T2 = double, EngineTag2 = MultiPatch >, Initializer = Interval<2>, int Dim = 2, T = double, EngineTag = MultiPatchView, 2>]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from `static Array >::newDim, T, NewEngine::Engine_t, Array::Domain_t>::Type_t::Tag_t> View0 >::make(const Array&) [with int Dim = 2, T = double, EngineTag = MultiPatch >]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated from `AltView0 >::Type_t Array::operator()() const [with int Dim = 2, T = double, EngineTag = MultiPatch >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatch > >, RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const Array& assign(const Array&, const T1&, const Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch >, T1 = double, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const Array& Array::operator=(const T1&) const [with T1 = double, int Dim = 2, T = double, EngineTag = MultiPatch >]' /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from `Array& Array::operator=(const Array&) [with int Dim = 2, T = double, EngineTag = MultiPatch >]' diffusion_test.cpp:77: instantiated from here /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp:151: warning: base class `class Observer >' should be explicitly initialized in the copy constructor /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function `int UniformGridLayoutData::globalID(const Loc&) const [with int Dim = 2]': /usr/local/cots/pooma/src/Layout/LayoutBase.h:472: instantiated from `int LayoutBase::globalID(const Loc&) const [with int Dim = 2, LBD = UniformGridLayoutData<2>]' /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:758: instantiated from `T& RefCountedBlockPtr::operator[](int) const [with T = Engine<2, double, Remote >, bool BoundsChecked = false, Controller = RefBlockController > >]' /usr/local/cots/pooma/src/Engine/RemoteEngine.h:458: instantiated from `RemoteProxy Engine >::operator()(const Loc&) const [with int Dim = 2, T = double, Tag = Brick]' /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1367: instantiated from `Engine::ElementRef_t Engine >::operator()(const Loc&) const [with int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote]' /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:166: instantiated from `static Array::ElementRef_t View1Implementation, Domain, true>::make(const Array&, const S1&, const S2&, const Combine&) [with S1 = long int, S2 = long int, Combine = CombineDomainOpt, true>, int Dim = 2, T = double, EngineTag = MultiPatch >, Domain = Loc<2>]' /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:823: instantiated from `static View1Implementation, NewDomain2::SliceType_t, View2, Sub1, Sub2>::sv>::Type_t View2, Sub1, Sub2>::make(const Array&, const Sub1&, const Sub2&) [with int Dim = 2, T = double, EngineTag = MultiPatch >, Sub1 = long int, Sub2 = long int]' /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1926: instantiated from `View2, Sub1, Sub2>::Type_t Array::operator()(const Sub1&, const Sub2&) const [with Sub1 = long int, Sub2 = long int, int Dim = 2, T = double, EngineTag = MultiPatch >]' /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:176: instantiated from `RemoteProxy& RemoteProxy::operator=(const S&) [with S = double, T = double]' diffusion_test.cpp:80: instantiated from here /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:2127: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function `int UniformGridLayoutData::touches(const OtherDomain&, OutIter, const ConstructTag&) const [with OtherDomain = Range<2>, OutIter = std::back_insert_iterator, Interval<2> >, std::allocator, Interval<2> > > > >, ConstructTag = TouchesConstructNodeObj, int Dim = 2]': /usr/local/cots/pooma/src/Layout/LayoutBase.h:641: instantiated from `int LayoutBase::touches(const OtherDomain&, OutIter, const ConstructTag&) const [with OtherDomain = Range<2>, OutIter = std::back_insert_iterator, Interval<2> >, std::allocator, Interval<2> > > > >, ConstructTag = TouchesConstructNodeObj, int Dim = 2, LBD = UniformGridLayoutData<2>]' /usr/local/cots/pooma/src/Engine/Intersector.h:703: instantiated from `int LayoutBase::touches(const OtherDomain&, OutIter) const [with OtherDomain = Range<2>, OutIter = std::back_insert_iterator, Interval<2> >, std::allocator, Interval<2> > > > >, int Dim = 2, LBD = UniformGridLayoutData<2>]' /usr/local/cots/pooma/src/Engine/Intersector.h:942: instantiated from `int LayoutBaseViewData::touches(const OtherDomain&, OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, OutIter = std::back_insert_iterator, std::allocator > > >, ConstructTag = TouchesConstructINode<2>, int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]' /usr/local/cots/pooma/src/Engine/Intersector.h:1285: instantiated from `int LayoutBaseView::touches(const OtherDomain&, OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, OutIter = std::back_insert_iterator, std::allocator > > >, ConstructTag = TouchesConstructINode<2>, int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' /usr/local/cots/pooma/src/Engine/Intersector.h:333: instantiated from `void IntersectorData::touches(const Layout&) [with Layout = UniformGridLayoutView<2, 2>, int Dim = 2]' /usr/local/cots/pooma/src/Engine/Intersector.h:171: instantiated from `bool IntersectorData::intersect(const Engine&, const GuardLayers&) [with Engine = Engine<2, double, MultiPatchView, 2> >, int Dim2 = 2, int Dim = 2]' /usr/local/cots/pooma/src/Engine/Intersector.h:440: instantiated from `bool Intersector::intersect(const Engine&, const GuardLayers&) [with Engine = Engine<2, double, MultiPatchView, 2> >, int Dim2 = 2, int Dim = 2]' /usr/local/cots/pooma/src/Array/Array.h:1729: instantiated from `static int LeafFunctor >, ExpressionApply > >::applyHandler(const Engine >&, const ExpressionApply >&, const WrappedInt<1>&) [with int Dim = 2, T = double, LT = UniformTag, PatchTag = Remote, int BD = 2, Intersect = Intersector<2>]' /usr/local/cots/pooma/src/Array/Array.h:1716: instantiated from `static int LeafFunctor >, ExpressionApply > >::apply(const Engine >&, const ExpressionApply >&) [with int Dim = 2, T = double, LT = UniformTag, PatchTag = Remote, int BD = 2, Intersect = Intersector<2>]' /usr/local/cots/pooma/src/Array/Array.h:2307: instantiated from `static int LeafFunctor, ExpressionApply >::apply(const Array&, const ExpressionApply&) [with int Dim = 2, T = double, E = MultiPatchView, 2>, Tag = IntersectorTag >]' /usr/local/cots/pooma/src/Array/Array.h:80: instantiated from `static LeafFunctor::Type_t ForEach::apply(const Expr&, const FTag&, const CTag&) [with Expr = Array<2, double, MultiPatchView, 2> >, FTag = ExpressionApply > >, CTag = NullCombine]' /usr/local/cots/pooma/src/Array/Array.h:88: instantiated from `ForEach::Type_t forEach(const Expr&, const FTag&, const CTag&) [with Expr = Array<2, double, MultiPatchView, 2> >, FTag = ExpressionApply > >, CTag = NullCombine]' /usr/local/cots/pooma/src/Array/Array.h:276: instantiated from `void expressionApply(const A&, const Tag&) [with A = Array<2, double, MultiPatchView, 2> >, Tag = IntersectorTag >]' /usr/local/cots/pooma/src/Array/Array.h:1913: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatchView, 2> >, RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void Evaluator::evaluate(const LHS&, const Op&, const RHS&) const [with LHS = Array<2, double, MultiPatch > >, RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const Array& assign(const Array&, const T1&, const Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch >, T1 = double, Op = OpAssign]' /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const Array& Array::operator=(const T1&) const [with T1 = double, int Dim = 2, T = double, EngineTag = MultiPatch >]' /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from `Array& Array::operator=(const Array&) [with int Dim = 2, T = double, EngineTag = MultiPatch >]' diffusion_test.cpp:77: instantiated from here /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:297: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Partition/DistributedMapper.h: In member function `void DistributedMapper::map(const std::vector, Interval >*, std::allocator, Interval >*> >&) const [with int Dim = 2]': /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: instantiated from here /usr/local/cots/pooma/src/Partition/DistributedMapper.h:68: warning: comparison between signed and unsigned integer expressions /usr/local/cots/pooma/src/Partition/BisectionMapper.h: In member function `void BisectionMapper::map(const std::vector, Interval >*, std::allocator, Interval >*> >&) const [with int Dim = 2]': /usr/local/cots/pooma/src/Partition/DistributedMapper.h:86: instantiated from `void DistributedMapper::map(const std::vector, Interval >*, std::allocator, Interval >*> >&) const [with int Dim = 2]' /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: instantiated from here /usr/local/cots/pooma/src/Partition/BisectionMapper.h:86: warning: comparison between signed and unsigned integer expressions From rguenth at tat.physik.uni-tuebingen.de Wed Apr 23 20:50:16 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Wed, 23 Apr 2003 22:50:16 +0200 (CEST) Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? In-Reply-To: <24752b2dfd3ec609e6c9582a2ede3a5b3ea6f32a@locuspharma.com> Message-ID: On 23 Apr 2003, George Talbot wrote: > Hi, > > New POOMA II user. Got everything to compile and link today. The > performance of this stuff is shocking. > > I ran a hand coded version of your 2D diffusion program on my box for > 250 steps, 800x800 array. 1m34s, uniprocessor. > > Using a stencil, same box, uniprocessor. 25s. WOW. > > Using -shmem -np 2 to distribute the shared array version on both of my > processors on my box. 12s. Truly amazing. I think this may be a > dramatically useful tool. You will find gcc-3.3 even more useful, combined with careful inline parameter tuning! > The only thing that irks me a bit is that there are a fair number of > compiler warnings, which I will append, along with the source I used, to > this e-mail. Is this normal? Swimming in a sea of warnings from the > POOMA headers, I might miss some on my own code... Without -Wall I dont see warnings from the POOMA headers with g++/icpc, but you are right, theres something to clean up. But as time is always short, fixing warnings that dont annoy me is not very high on my priority list. But I'm sure we're accepting patches to correct them (maybe...). Richard. From gtalbot at locuspharma.com Wed Apr 23 20:57:03 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 23 Apr 2003 16:57:03 -0400 Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? In-Reply-To: References: Message-ID: On Wed, 2003-04-23 at 16:50, Richard Guenther wrote: > On 23 Apr 2003, George Talbot wrote: > > > Hi, > > > > New POOMA II user. Got everything to compile and link today. The > > performance of this stuff is shocking. > > > > I ran a hand coded version of your 2D diffusion program on my box for > > 250 steps, 800x800 array. 1m34s, uniprocessor. > > > > Using a stencil, same box, uniprocessor. 25s. WOW. > > > > Using -shmem -np 2 to distribute the shared array version on both of my > > processors on my box. 12s. Truly amazing. I think this may be a > > dramatically useful tool. > > You will find gcc-3.3 even more useful, combined with careful inline > parameter tuning! Really? What enhancements make POOMA speedier? The DFA scheduler? Type-based alias analysis for aggregates? All of the above? ;^) > > The only thing that irks me a bit is that there are a fair number of > > compiler warnings, which I will append, along with the source I used, to > > this e-mail. Is this normal? Swimming in a sea of warnings from the > > POOMA headers, I might miss some on my own code... > > Without -Wall I dont see warnings from the POOMA headers with g++/icpc, > but you are right, theres something to clean up. But as time is always > short, fixing warnings that dont annoy me is not very high on my priority > list. But I'm sure we're accepting patches to correct them (maybe...). So I'm on my own, eh? ;^) If I come up with any good patches for cleaning up warnings I encounter, shall I post them to this list? Are there any preferred formats? --George P.S. Thanks for such an amazing tool. From rguenth at tat.physik.uni-tuebingen.de Wed Apr 23 21:06:40 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Wed, 23 Apr 2003 23:06:40 +0200 (CEST) Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? In-Reply-To: Message-ID: On 23 Apr 2003, George Talbot wrote: > On Wed, 2003-04-23 at 16:50, Richard Guenther wrote: > > On 23 Apr 2003, George Talbot wrote: > > > > > Hi, > > > > > > New POOMA II user. Got everything to compile and link today. The > > > performance of this stuff is shocking. > > > > > > I ran a hand coded version of your 2D diffusion program on my box for > > > 250 steps, 800x800 array. 1m34s, uniprocessor. > > > > > > Using a stencil, same box, uniprocessor. 25s. WOW. > > > > > > Using -shmem -np 2 to distribute the shared array version on both of my > > > processors on my box. 12s. Truly amazing. I think this may be a > > > dramatically useful tool. > > > > You will find gcc-3.3 even more useful, combined with careful inline > > parameter tuning! > > Really? What enhancements make POOMA speedier? The DFA scheduler? > Type-based alias analysis for aggregates? All of the above? ;^) Mostly the DFA scheduler and the possibility to specify --param min-inline-insns=300 ;) The rest surely helps, too. > > > The only thing that irks me a bit is that there are a fair number of > > > compiler warnings, which I will append, along with the source I used, to > > > this e-mail. Is this normal? Swimming in a sea of warnings from the > > > POOMA headers, I might miss some on my own code... > > > > Without -Wall I dont see warnings from the POOMA headers with g++/icpc, > > but you are right, theres something to clean up. But as time is always > > short, fixing warnings that dont annoy me is not very high on my priority > > list. But I'm sure we're accepting patches to correct them (maybe...). > > So I'm on my own, eh? ;^) If I come up with any good patches for > cleaning up warnings I encounter, shall I post them to this list? Are > there any preferred formats? I'd use unified diffs. But be warned that there may be license/copyright issues with accepting your work - Jeffrey may comment on this. But I think its about identifying the most annoying ones that come up again and again. Richard. From gtalbot at locuspharma.com Fri Apr 25 14:21:39 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 10:21:39 -0400 Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? In-Reply-To: <24752b2dfd3ec609e6c9582a2ede3a5b3ea6f32a@locuspharma.com> References: <24752b2dfd3ec609e6c9582a2ede3a5b3ea6f32a@locuspharma.com> Message-ID: Not so good news. So I went back to the hand-coded program and reversed the indices, indexing x in the inner loop and y in the outer to reflect the memory layout of the array. Now the hand-coded variant is twice as fast as the equivalent POOMA program. This is with GCC 3.2. Distributing it among the two processors on my workstation doesn't bring the performance up to the single-processor hand-coded version. I will try today to beat the hand-coded program with MPI over more than two processors. However, I would like to know something. Is the diffusion example from the book a realistic example to show the performance of POOMA vs. hand-coded stuff? I need to be able to describe the break-even point where a POOMA app will outperform a uniprocessor app. Of course, I probably need to try to apply it to one of my in-house programs to be realistic, but I was hoping that someone on the list could suggest a particular demonstration program that would show POOMA outperforming a uniprocessor hand-coded implementation. --George On Wed, 2003-04-23 at 16:10, George Talbot wrote: > Hi, > > New POOMA II user. Got everything to compile and link today. The > performance of this stuff is shocking. > > I ran a hand coded version of your 2D diffusion program on my box for > 250 steps, 800x800 array. 1m34s, uniprocessor. > > Using a stencil, same box, uniprocessor. 25s. WOW. > > Using -shmem -np 2 to distribute the shared array version on both of my > processors on my box. 12s. Truly amazing. I think this may be a > dramatically useful tool. > > The only thing that irks me a bit is that there are a fair number of > compiler warnings, which I will append, along with the source I used, to > this e-mail. Is this normal? Swimming in a sea of warnings from the > POOMA headers, I might miss some on my own code... > > Take care. > > -- > George T. Talbot > > > Here's the program: > > #include > using namespace std; > > #define STENCIL > #define POOMA > #define DISTRIBUTED > > #ifdef POOMA > #include "Pooma/Arrays.h" > #endif > > #ifdef STENCIL > class NinePtDiffusion > { > public: > template > inline typename C::Element_t operator()(const C& c, int I, int J) > const > { > return (1.0/9.0) * > (c.read(I+1, J+1) + c.read(I+1, J ) + c.read(I+1, > J-1) + > c.read(I , J+1) + c.read(I , J ) + c.read(I , > J-1) + > c.read(I-1, J+1) + c.read(I-1, J ) + c.read(I-1, > J-1)); > } > > inline int lowerExtent(int) const { return 1; } > inline int upperExtent(int) const { return 1; } > }; > #endif > > int main(int argc, char* argv[]) > { > #ifdef POOMA > Pooma::initialize(argc, argv); > #endif > > long numAveragings = 250, numSteps; > > numSteps = (numAveragings+1)/2; > > long n = 800; > > long numProcessors=2; > > #ifdef POOMA > Inform output; > > output << "processors=" << numProcessors > << " avgs=" << numAveragings > << " n=" << n > << endl; > #else > cout << "processors=" << numProcessors > << " avgs=" << numAveragings > << " n=" << n > << endl; > #endif > > #ifdef POOMA > Interval<1> N(0, n-1); > Interval<2> problemDomain(N, N); > > Interval<1> I(1, n-2); > Interval<1> J(1, n-2); > Interval<2> interiorDomain(I, I); > > #ifdef DISTRIBUTED > UniformGridPartition<2> > partition(Loc<2>(numProcessors,numProcessors), GuardLayers<2>(1), > GuardLayers<2>(0)); > UniformGridLayout<2> layout(problemDomain, partition, > DistributedTag()); > > Array<2, double, MultiPatch > > > a(layout); > Array<2, double, MultiPatch > > > b(layout); > #else > Array<2, double, Brick> a(problemDomain); > Array<2, double, Brick> b(problemDomain); > #endif > > a = b = 0.0; > > Pooma::blockAndEvaluate(); > b(n/2, n/2) = 1000.0; > > #ifdef STENCIL > Stencil diffusion; > #endif > > #else > double a[n][n], b[n][n]; > > for (long x=1; x { > for (long y=1; y { > a[x][y] = b[x][y] = 0.0; > } > } > > b[n/2][n/2] = 1000.0; > #endif > > const double weight = 1.0/9.0; > > for (long i=0; i { > #ifdef STENCIL > a(interiorDomain) = diffusion(b, interiorDomain); > b(interiorDomain) = diffusion(a, interiorDomain); > #elif defined (POOMA) > a(I,J) = weight * > (b(I+1, J+1) + b(I+1, J ) + b(I+1, J-1) + > b(I , J+1) + b(I , J ) + b(I , J-1) + > b(I-1, J+1) + b(I-1, J ) + b(I-1, J-1)); > > b(I,J) = weight * > (a(I+1, J+1) + a(I+1, J ) + a(I+1, J-1) + > a(I , J+1) + a(I , J ) + a(I , J-1) + > a(I-1, J+1) + a(I-1, J ) + a(I-1, J-1)); > #else > for (long x=1; x { > for (long y=1; y { > a[x][y] = weight * > (b[x+1][y+1] + b[x+1][y] + b[x+1][y-1] + > b[x] [y+1] + b[x] [y] + b[x] [y-1] + > b[x-1][y+1] + b[x-1][y] + b[x-1][y-1]); > } > } > > for (long x=1; x { > for (long y=1; y { > b[x][y] = weight * > (a[x+1][y+1] + a[x+1][y] + a[x+1][y-1] + > a[x] [y+1] + a[x] [y] + a[x] [y-1] + > a[x-1][y+1] + a[x-1][y] + a[x-1][y-1]); > } > } > #endif > } > > #ifdef POOMA > Pooma::blockAndEvaluate(); > > output << "Center position: " << a(n/2, n/2) << endl; > > Pooma::finalize(); > #else > cout << "Center position: " << a[n/2][n/2] << endl; > #endif > > return 0; > } > > > Here's the compiler warnings, plus the compiler command line: > > g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG > -DQT_THREAD_SUPPORT -I/usr/local/qt/mkspecs/default -I. > -I/usr/local/cots/cheetah/linux/src > -I/usr/local/cots/cheetah/linux/lib/g++-ex -I/usr/local/cots/pooma/src > -I/usr/local/cots/pooma/linux/lib/PoomaConfiguration > -I/usr/local/qt/include -o diffusion_test.o diffusion_test.cpp > In file included from /usr/local/cots/pooma/src/Pooma/Domains.h:42, > from > /usr/local/cots/pooma/src/Domain/DomainRemoveOverlap.h:32, from /usr/local/cots/pooma/src/Layout/SparseTileLayout.cpp:36, > from > /usr/local/cots/pooma/src/Layout/SparseTileLayout.h:1201, > from > /usr/local/cots/pooma/src/Engine/IsValidLocation.h:55, > from /usr/local/cots/pooma/src/Array/PrintArray.h:57, > from /usr/local/cots/pooma/src/Array/Array.h:58, > from /usr/local/cots/pooma/src/Pooma/BrickArrays.h:42, > from /usr/local/cots/pooma/src/Pooma/UMPArrays.h:40, > from /usr/local/cots/pooma/src/Pooma/Arrays.h:39, > from diffusion_test.cpp:9: > /usr/local/cots/pooma/src/Domain/Grid.h: In copy constructor > `Grid<1>::Grid(const Grid<1>&)': > /usr/local/cots/pooma/src/Domain/Grid.h:360: warning: base class `class > Domain<1, DomainTraits > >' should be explicitly initialized > in the > copy constructor > In file included from /usr/local/cots/pooma/src/Pooma/Arrays.h:46, > from diffusion_test.cpp:9: > /usr/local/cots/pooma/src/Engine/RemoteEngine.h: In copy constructor > `GatherContexts::GatherContextsData::GatherContextsData(const > GatherContexts::GatherContextsData&)': > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1697: warning: base > class ` > class RefCounted' should be explicitly initialized in the copy > constructor > diffusion_test.cpp: In function `int main(int, char**)': > diffusion_test.cpp:100: warning: unused variable `const double weight' > In file included from > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499, > from /usr/local/cots/pooma/src/Array/Array.h:108, > from diffusion_test.cpp:77: > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In copy > constructor > `UniformGridLayout::UniformGridLayout(const > UniformGridLayout&) > [with int Dim = 2]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:806: instantiated from > `LayoutBaseViewData::LayoutBaseViewData(const L&, const > Domain&) [with DT = DomainTraits >, int Dim = 2, > int Dim2 = 2, L = UniformGridLayout<2>]' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1368: instantiated from > `UniformGridLayoutViewData::UniformGridLayoutViewData(const > UniformGridLayout&, const Domain&) [with DT = > DomainTraits >, int Dim > = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499: instantiated > from `UniformGridLayoutView Dim2>::UniformGridLayoutView(UniformGridLayoutViewData Dim2>::Layout_t&, const Domain&) [with DT = > DomainTraits >, int Dim = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:992: instantiated from > `Engine > >::Engine(const Engine T, MultiPatch >&, const Domain&) [with DT > = DomainTraits >, int Dim = 2, T = double, LayoutTag = > UniformTag, PatchTag = Remote, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > from `Array::Array(const Engine EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > EngineTag2 = MultiPatch >, Initializer = > Interval<2>, int Dim = 2, T = double, EngineTag = > MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > `static Array >::newDim, T, NewEngine T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > View0 >::make(const Array&) [with int Dim > = 2, T = double, EngineTag = MultiPatch >]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > from `AltView0 >::Type_t Array EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > = MultiPatch > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS > = Array<2, double, MultiPatch > >, RHS = > Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > Array& assign(const Array&, const T1&, const > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch Remote >, T1 = double, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > Array& Array::operator=(const T1&) > const [with T1 = double, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > `Array& Array::operator=(const > Array&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >]' > diffusion_test.cpp:77: instantiated from here > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:1831: warning: base > class > `class Observer >' should be explicitly > initialized > in the copy constructor > In file included from > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519, > from diffusion_test.cpp:108: > /usr/local/cots/pooma/src/Layout/LayoutBase.h: In constructor > `LayoutBaseViewData::LayoutBaseViewData(const L&, const > LV&, > const ViewIndexer&, const Domain&, > GuardLayers, > GuardLayers) [with DT = DomainTraits >, LV = > UniformGridLayoutView<2, 2>, int Dim = 2, int Dim2 = 2, L = > UniformGridLayout<2>]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1388: instantiated from > `UniformGridLayoutViewData::UniformGridLayoutViewData(const > UniformGridLayoutView&, const Domain&) [with DT = > DomainTraits >, int Dim = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519: instantiated > from `UniformGridLayoutView::UniformGridLayoutView(const > UniformGridLayoutView&, const Domain&) [with DT = > DomainTraits >, int Dim = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1012: instantiated > from `Engine > >::Engine(const Engine T, MultiPatchView >&, const Domain&) > [with DT = DomainTraits >, int Dim = 2, T = double, > LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > from `Array::Array(const Engine EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > EngineTag2 = MultiPatchView, 2>, Initializer = > Interval<2>, int Dim = 2, T = double, EngineTag = > MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > `static Array >::newDim, T, NewEngine T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > View0 >::make(const Array&) [with int Dim > = 2, T = double, EngineTag = MultiPatchView, > 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > from `AltView0 >::Type_t Array EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > = MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS = Array<2, double, MultiPatchView Remote, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:2486: instantiated from `const Array& > assign(const Array&, const Array&, const Op&) > [with int Dim = 2, > T = double, EngineTag = MultiPatchView, 2>, > int OtherDim = 2, OtherT = double, OtherEngineTag = > StencilEngine MultiPatchView, 2> > >, Op = OpAssign]' > diffusion_test.cpp:2117: instantiated from `const Array EngineTag>& Array::operator=(const T1&) const [with > T1 = Array<2, double, StencilEngine MultiPatchView, 2> > > >, int Dim = 2, T = > double, EngineTag = MultiPatchView, 2>]' > diffusion_test.cpp:105: instantiated from here > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1027: warning: member > initializers for `ViewIndexer<2, 2> LayoutBaseViewData<2, 2, > UniformGridLayout<2> >::indexer_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1010: warning: and `long > int > LayoutBaseViewData<2, 2, UniformGridLayout<2> >::id_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be > re-ordered to match declaration order > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1040: warning: member > initializers for `bool LayoutBaseViewData<2, 2, UniformGridLayout<2> > >::subdomainsComputed_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1021: warning: and ` > GuardLayers<2> LayoutBaseViewData<2, 2, UniformGridLayout<2> > >::internalGuards_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be > re-ordered to match declaration order > /usr/local/cots/pooma/src/Engine/Stencil.h: In constructor > `StencilIntersector::StencilIntersector(const > Interval&, const Intersect&) [with int Dim = 2, Intersect = > Intersector<2>]': > diffusion_test.cpp:863: instantiated from `static int > LeafFunctor >, > ExpressionApply > >::apply(const Engine StencilEngine >&, const > ExpressionApply >&) [with int D = 2, T = > double, S = NinePtDiffusion, E = Array<2, double, > MultiPatchView, 2> > >, Intersect = Intersector<2>]' > diffusion_test.cpp:2307: instantiated from `static int > LeafFunctor, ExpressionApply >::apply(const > Array&, const ExpressionApply&) [with int Dim = 2, T = > double, E = StencilEngine MultiPatchView, 2> > >, Tag = > IntersectorTag >]' > diffusion_test.cpp:80: instantiated from `static LeafFunctor LeafTag>::Type_t ForEach::apply(const Expr&, const > FTag&, const CTag&) [with Expr = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, FTag = > ExpressionApply > >, CTag = NullCombine]' > diffusion_test.cpp:88: instantiated from `ForEach CTag>::Type_t forEach(const Expr&, const FTag&, const CTag&) [with Expr > = Array<2, double, StencilEngine MultiPatchView, 2> > > >, FTag = > ExpressionApply > >, CTag = > NullCombine]' > diffusion_test.cpp:276: instantiated from `void expressionApply(const > A&, const Tag&) [with A = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Tag = > IntersectorTag >]' > diffusion_test.cpp:1914: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS = Array<2, double, MultiPatchView Remote, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:2486: instantiated from `const Array& > assign(const Array&, const Array&, const Op&) > [with int Dim = 2, > T = double, EngineTag = MultiPatchView, 2>, > int OtherDim = 2, OtherT = double, OtherEngineTag = > StencilEngine MultiPatchView, 2> > >, Op = OpAssign]' > diffusion_test.cpp:2117: instantiated from `const Array EngineTag>& Array::operator=(const T1&) const [with > T1 = Array<2, double, StencilEngine MultiPatchView, 2> > > >, int Dim = 2, T = > double, EngineTag = MultiPatchView, 2>]' > diffusion_test.cpp:105: instantiated from here > /usr/local/cots/pooma/src/Engine/Stencil.h:844: warning: member > initializers > for `Intersector<2> StencilIntersector<2, Intersector<2> > >::intersector_m' > /usr/local/cots/pooma/src/Engine/Stencil.h:843: warning: and > `Interval<2> > StencilIntersector<2, Intersector<2> >::domain_m' > /usr/local/cots/pooma/src/Engine/Stencil.h:788: warning: will be > re-ordered > to match declaration order > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > member > function `static void DomainTraits >::setDomain(int > (&)[2], > const T1&, const T2&) [with T1 = int, T2 = unsigned int]': > /usr/local/cots/pooma/src/Domain/Interval.h:369: instantiated from > here > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > member > function `static void DomainTraits >::setDomain(int > (&)[2], > const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > /usr/local/cots/pooma/src/Domain/Interval.h:377: instantiated from > here > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member > function `static void DomainTraits >::setDomain(int (&)[3], > const > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > /usr/local/cots/pooma/src/Domain/Range.h:396: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member > function `static void DomainTraits >::setDomain(int (&)[3], > const > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > /usr/local/cots/pooma/src/Domain/Range.h:407: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member > function > `static void DomainTraits >::setDomain(IndirectionList&, > const > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > /usr/local/cots/pooma/src/Domain/Grid.h:395: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member > function > `static void DomainTraits >::setDomain(IndirectionList&, > const > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > /usr/local/cots/pooma/src/Domain/Grid.h:404: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp: In copy > constructor > `Engine >::Engine(const > Engine T, MultiPatch >&) [with int Dim = 2, T = double, > LayoutTag = UniformTag, PatchTag = Remote]': > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.h:992: instantiated > from `Engine > >::Engine(const Engine >&, > const Domain&) [with DT = DomainTraits >, int Dim > = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, int > Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > from `Array::Array(const Engine EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > EngineTag2 = MultiPatch >, Initializer = > Interval<2>, int Dim = 2, T = double, EngineTag = > MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > `static Array >::newDim, T, NewEngine T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > View0 >::make(const Array&) [with int Dim > = 2, T = double, EngineTag = MultiPatch >]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > from `AltView0 >::Type_t Array EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > = MultiPatch > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS > = Array<2, double, MultiPatch > >, RHS = > Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > Array& assign(const Array&, const T1&, const > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch Remote >, T1 = double, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > Array& Array::operator=(const T1&) > const [with T1 = double, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > `Array& Array::operator=(const > Array&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >]' > diffusion_test.cpp:77: instantiated from here > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp:151: warning: base > class > `class Observer >' should be explicitly > initialized in > the copy constructor > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function > `int > UniformGridLayoutData::globalID(const Loc&) const [with int > Dim = > 2]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:472: instantiated from > `int LayoutBase::globalID(const Loc&) const [with int Dim > = 2, LBD = UniformGridLayoutData<2>]' > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:758: > instantiated from `T& RefCountedBlockPtr Controller>::operator[](int) const [with T = Engine<2, double, > Remote >, bool BoundsChecked = false, Controller = > RefBlockController > >]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:458: instantiated from > `RemoteProxy Engine >::operator()(const > Loc&) const [with int Dim = 2, T = double, Tag = Brick]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1367: instantiated from > `Engine::ElementRef_t Engine MultiPatch >::operator()(const Loc&) const > [with int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = > Remote]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:166: instantiated from > `static Array::ElementRef_t View1Implementation T1, E1>, Domain, true>::make(const Array&, const S1&, const > S2&, const Combine&) [with > S1 = long int, S2 = long int, Combine = CombineDomainOpt int, long int>, true>, int Dim = 2, T = double, EngineTag = > MultiPatch >, Domain = Loc<2>]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:823: instantiated from > `static View1Implementation, NewDomain2 Sub2>::SliceType_t, View2, Sub1, Sub2>::sv>::Type_t > View2, Sub1, Sub2>::make(const Array&, > const Sub1&, const Sub2&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >, Sub1 = long int, > Sub2 = long int]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1926: instantiated from > `View2, Sub1, Sub2>::Type_t Array EngineTag>::operator()(const Sub1&, const Sub2&) const [with Sub1 = long > int, Sub2 = long int, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:176: instantiated from > `RemoteProxy& RemoteProxy::operator=(const S&) [with S = double, T > = double]' > diffusion_test.cpp:80: instantiated from here > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:2127: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function > `int > UniformGridLayoutData::touches(const OtherDomain&, OutIter, > const > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > std::back_insert_iterator, Interval<2> >, > std::allocator, Interval<2> > > > >, ConstructTag = > TouchesConstructNodeObj, int Dim = 2]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:641: instantiated from > `int LayoutBase::touches(const OtherDomain&, OutIter, const > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > std::back_insert_iterator, Interval<2> >, > std::allocator, Interval<2> > > > >, ConstructTag = > TouchesConstructNodeObj, int Dim = 2, LBD = UniformGridLayoutData<2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:703: instantiated from > `int LayoutBase::touches(const OtherDomain&, OutIter) const > [with OtherDomain > = Range<2>, OutIter = > std::back_insert_iterator, Interval<2> >, > std::allocator, Interval<2> > > > >, int Dim = 2, LBD = > UniformGridLayoutData<2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:942: instantiated from > `int LayoutBaseViewData::touches(const OtherDomain&, > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > OutIter = std::back_insert_iterator, > std::allocator > > >, ConstructTag = TouchesConstructINode<2>, > int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:1285: instantiated from > `int LayoutBaseView::touches(const OtherDomain&, > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > OutIter = std::back_insert_iterator, > std::allocator > > >, ConstructTag = TouchesConstructINode<2>, > int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:333: instantiated from > `void IntersectorData::touches(const Layout&) [with Layout = > UniformGridLayoutView<2, 2>, int Dim = 2]' > /usr/local/cots/pooma/src/Engine/Intersector.h:171: instantiated from > `bool IntersectorData::intersect(const Engine&, const > GuardLayers&) [with Engine = Engine<2, double, > MultiPatchView, 2> >, int Dim2 = 2, int Dim = > 2]' > /usr/local/cots/pooma/src/Engine/Intersector.h:440: instantiated from > `bool Intersector::intersect(const Engine&, const > GuardLayers&) [with Engine > = Engine<2, double, MultiPatchView, 2> >, int > Dim2 = 2, int Dim = 2]' > /usr/local/cots/pooma/src/Array/Array.h:1729: instantiated from > `static int LeafFunctor PatchTag, Dim2> >, ExpressionApply > > >::applyHandler(const Engine Dim2> >&, const ExpressionApply >&, const > WrappedInt<1>&) [with int Dim = 2, T = double, LT = UniformTag, PatchTag > = Remote, int BD = 2, Intersect = Intersector<2>]' > /usr/local/cots/pooma/src/Array/Array.h:1716: instantiated from > `static int LeafFunctor PatchTag, Dim2> >, ExpressionApply > > >::apply(const Engine > >&, const ExpressionApply >&) [with int Dim = > 2, T = double, LT = UniformTag, PatchTag = Remote, int > BD = 2, Intersect = Intersector<2>]' > /usr/local/cots/pooma/src/Array/Array.h:2307: instantiated from > `static int LeafFunctor, ExpressionApply > >::apply(const Array&, const ExpressionApply&) [with > int Dim = 2, T = double, E = MultiPatchView, > 2>, Tag = IntersectorTag >]' > /usr/local/cots/pooma/src/Array/Array.h:80: instantiated from `static > LeafFunctor::Type_t ForEach CTag>::apply(const Expr&, const FTag&, const CTag&) [with Expr = > Array<2, double, MultiPatchView Remote, 2> >, FTag = > ExpressionApply > >, CTag = NullCombine]' > /usr/local/cots/pooma/src/Array/Array.h:88: instantiated from > `ForEach::Type_t forEach(const Expr&, const FTag&, > const CTag&) [with Expr = Array<2, double, MultiPatchView Remote, 2> >, FTag = > ExpressionApply > >, CTag = NullCombine]' > /usr/local/cots/pooma/src/Array/Array.h:276: instantiated from `void > expressionApply(const A&, const Tag&) [with A = Array<2, double, > MultiPatchView, 2> >, Tag = > IntersectorTag >]' > /usr/local/cots/pooma/src/Array/Array.h:1913: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, > RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS > = Array<2, double, MultiPatch > >, RHS = > Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > Array& assign(const Array&, const T1&, const > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch Remote >, T1 = double, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > Array& Array::operator=(const T1&) > const [with T1 = double, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > `Array& Array::operator=(const > Array&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >]' > diffusion_test.cpp:77: instantiated from here > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:297: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Partition/DistributedMapper.h: In member > function > `void DistributedMapper::map(const > std::vector, > Interval >*, std::allocator, Interval > >*> >&) > const [with int Dim = 2]': > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > instantiated from here > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:68: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Partition/BisectionMapper.h: In member > function `void > BisectionMapper::map(const std::vector, > Interval >*, std::allocator, Interval > >*> >&) > const [with int Dim = 2]': > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:86: > instantiated from > `void DistributedMapper::map(const std::vector, > Interval >*, std::allocator, Interval >*> > >&) const [with int Dim = 2]' > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > instantiated from here > /usr/local/cots/pooma/src/Partition/BisectionMapper.h:86: warning: > comparison > between signed and unsigned integer expressions > From gtalbot at locuspharma.com Fri Apr 25 14:23:26 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 10:23:26 -0400 Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? In-Reply-To: References: <24752b2dfd3ec609e6c9582a2ede3a5b3ea6f32a@locuspharma.com> Message-ID: <41fd68f7b7110c77018ac084161d43b73ea944b9@locuspharma.com> P.S. Does anyone have instructions for installing and running GCC 3.3, especially w.r.t. using POOMA, for Linux? I want to do a more complete evaluation. Thanks. --George On Fri, 2003-04-25 at 10:21, George Talbot wrote: > Not so good news. So I went back to the hand-coded program and reversed > the indices, indexing x in the inner loop and y in the outer to reflect > the memory layout of the array. Now the hand-coded variant is twice as > fast as the equivalent POOMA program. This is with GCC 3.2. > Distributing it among the two processors on my workstation doesn't bring > the performance up to the single-processor hand-coded version. > > I will try today to beat the hand-coded program with MPI over more than > two processors. However, I would like to know something. Is the > diffusion example from the book a realistic example to show the > performance of POOMA vs. hand-coded stuff? I need to be able to > describe the break-even point where a POOMA app will outperform a > uniprocessor app. Of course, I probably need to try to apply it to one > of my in-house programs to be realistic, but I was hoping that someone > on the list could suggest a particular demonstration program that would > show POOMA outperforming a uniprocessor hand-coded implementation. > > --George > > > On Wed, 2003-04-23 at 16:10, George Talbot wrote: > > Hi, > > > > New POOMA II user. Got everything to compile and link today. The > > performance of this stuff is shocking. > > > > I ran a hand coded version of your 2D diffusion program on my box for > > 250 steps, 800x800 array. 1m34s, uniprocessor. > > > > Using a stencil, same box, uniprocessor. 25s. WOW. > > > > Using -shmem -np 2 to distribute the shared array version on both of my > > processors on my box. 12s. Truly amazing. I think this may be a > > dramatically useful tool. > > > > The only thing that irks me a bit is that there are a fair number of > > compiler warnings, which I will append, along with the source I used, to > > this e-mail. Is this normal? Swimming in a sea of warnings from the > > POOMA headers, I might miss some on my own code... > > > > Take care. > > > > -- > > George T. Talbot > > > > > > Here's the program: > > > > #include > > using namespace std; > > > > #define STENCIL > > #define POOMA > > #define DISTRIBUTED > > > > #ifdef POOMA > > #include "Pooma/Arrays.h" > > #endif > > > > #ifdef STENCIL > > class NinePtDiffusion > > { > > public: > > template > > inline typename C::Element_t operator()(const C& c, int I, int J) > > const > > { > > return (1.0/9.0) * > > (c.read(I+1, J+1) + c.read(I+1, J ) + c.read(I+1, > > J-1) + > > c.read(I , J+1) + c.read(I , J ) + c.read(I , > > J-1) + > > c.read(I-1, J+1) + c.read(I-1, J ) + c.read(I-1, > > J-1)); > > } > > > > inline int lowerExtent(int) const { return 1; } > > inline int upperExtent(int) const { return 1; } > > }; > > #endif > > > > int main(int argc, char* argv[]) > > { > > #ifdef POOMA > > Pooma::initialize(argc, argv); > > #endif > > > > long numAveragings = 250, numSteps; > > > > numSteps = (numAveragings+1)/2; > > > > long n = 800; > > > > long numProcessors=2; > > > > #ifdef POOMA > > Inform output; > > > > output << "processors=" << numProcessors > > << " avgs=" << numAveragings > > << " n=" << n > > << endl; > > #else > > cout << "processors=" << numProcessors > > << " avgs=" << numAveragings > > << " n=" << n > > << endl; > > #endif > > > > #ifdef POOMA > > Interval<1> N(0, n-1); > > Interval<2> problemDomain(N, N); > > > > Interval<1> I(1, n-2); > > Interval<1> J(1, n-2); > > Interval<2> interiorDomain(I, I); > > > > #ifdef DISTRIBUTED > > UniformGridPartition<2> > > partition(Loc<2>(numProcessors,numProcessors), GuardLayers<2>(1), > > GuardLayers<2>(0)); > > UniformGridLayout<2> layout(problemDomain, partition, > > DistributedTag()); > > > > Array<2, double, MultiPatch > > > > a(layout); > > Array<2, double, MultiPatch > > > > b(layout); > > #else > > Array<2, double, Brick> a(problemDomain); > > Array<2, double, Brick> b(problemDomain); > > #endif > > > > a = b = 0.0; > > > > Pooma::blockAndEvaluate(); > > b(n/2, n/2) = 1000.0; > > > > #ifdef STENCIL > > Stencil diffusion; > > #endif > > > > #else > > double a[n][n], b[n][n]; > > > > for (long x=1; x > { > > for (long y=1; y > { > > a[x][y] = b[x][y] = 0.0; > > } > > } > > > > b[n/2][n/2] = 1000.0; > > #endif > > > > const double weight = 1.0/9.0; > > > > for (long i=0; i > { > > #ifdef STENCIL > > a(interiorDomain) = diffusion(b, interiorDomain); > > b(interiorDomain) = diffusion(a, interiorDomain); > > #elif defined (POOMA) > > a(I,J) = weight * > > (b(I+1, J+1) + b(I+1, J ) + b(I+1, J-1) + > > b(I , J+1) + b(I , J ) + b(I , J-1) + > > b(I-1, J+1) + b(I-1, J ) + b(I-1, J-1)); > > > > b(I,J) = weight * > > (a(I+1, J+1) + a(I+1, J ) + a(I+1, J-1) + > > a(I , J+1) + a(I , J ) + a(I , J-1) + > > a(I-1, J+1) + a(I-1, J ) + a(I-1, J-1)); > > #else > > for (long x=1; x > { > > for (long y=1; y > { > > a[x][y] = weight * > > (b[x+1][y+1] + b[x+1][y] + b[x+1][y-1] + > > b[x] [y+1] + b[x] [y] + b[x] [y-1] + > > b[x-1][y+1] + b[x-1][y] + b[x-1][y-1]); > > } > > } > > > > for (long x=1; x > { > > for (long y=1; y > { > > b[x][y] = weight * > > (a[x+1][y+1] + a[x+1][y] + a[x+1][y-1] + > > a[x] [y+1] + a[x] [y] + a[x] [y-1] + > > a[x-1][y+1] + a[x-1][y] + a[x-1][y-1]); > > } > > } > > #endif > > } > > > > #ifdef POOMA > > Pooma::blockAndEvaluate(); > > > > output << "Center position: " << a(n/2, n/2) << endl; > > > > Pooma::finalize(); > > #else > > cout << "Center position: " << a[n/2][n/2] << endl; > > #endif > > > > return 0; > > } > > > > > > Here's the compiler warnings, plus the compiler command line: > > > > g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG > > -DQT_THREAD_SUPPORT -I/usr/local/qt/mkspecs/default -I. > > -I/usr/local/cots/cheetah/linux/src > > -I/usr/local/cots/cheetah/linux/lib/g++-ex -I/usr/local/cots/pooma/src > > -I/usr/local/cots/pooma/linux/lib/PoomaConfiguration > > -I/usr/local/qt/include -o diffusion_test.o diffusion_test.cpp > > In file included from /usr/local/cots/pooma/src/Pooma/Domains.h:42, > > from > > /usr/local/cots/pooma/src/Domain/DomainRemoveOverlap.h:32, from /usr/local/cots/pooma/src/Layout/SparseTileLayout.cpp:36, > > from > > /usr/local/cots/pooma/src/Layout/SparseTileLayout.h:1201, > > from > > /usr/local/cots/pooma/src/Engine/IsValidLocation.h:55, > > from /usr/local/cots/pooma/src/Array/PrintArray.h:57, > > from /usr/local/cots/pooma/src/Array/Array.h:58, > > from /usr/local/cots/pooma/src/Pooma/BrickArrays.h:42, > > from /usr/local/cots/pooma/src/Pooma/UMPArrays.h:40, > > from /usr/local/cots/pooma/src/Pooma/Arrays.h:39, > > from diffusion_test.cpp:9: > > /usr/local/cots/pooma/src/Domain/Grid.h: In copy constructor > > `Grid<1>::Grid(const Grid<1>&)': > > /usr/local/cots/pooma/src/Domain/Grid.h:360: warning: base class `class > > Domain<1, DomainTraits > >' should be explicitly initialized > > in the > > copy constructor > > In file included from /usr/local/cots/pooma/src/Pooma/Arrays.h:46, > > from diffusion_test.cpp:9: > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h: In copy constructor > > `GatherContexts::GatherContextsData::GatherContextsData(const > > GatherContexts::GatherContextsData&)': > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1697: warning: base > > class ` > > class RefCounted' should be explicitly initialized in the copy > > constructor > > diffusion_test.cpp: In function `int main(int, char**)': > > diffusion_test.cpp:100: warning: unused variable `const double weight' > > In file included from > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499, > > from /usr/local/cots/pooma/src/Array/Array.h:108, > > from diffusion_test.cpp:77: > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In copy > > constructor > > `UniformGridLayout::UniformGridLayout(const > > UniformGridLayout&) > > [with int Dim = 2]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:806: instantiated from > > `LayoutBaseViewData::LayoutBaseViewData(const L&, const > > Domain&) [with DT = DomainTraits >, int Dim = 2, > > int Dim2 = 2, L = UniformGridLayout<2>]' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1368: instantiated from > > `UniformGridLayoutViewData::UniformGridLayoutViewData(const > > UniformGridLayout&, const Domain&) [with DT = > > DomainTraits >, int Dim > > = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from > > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, > > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499: instantiated > > from `UniformGridLayoutView > Dim2>::UniformGridLayoutView(UniformGridLayoutViewData > Dim2>::Layout_t&, const Domain&) [with DT = > > DomainTraits >, int Dim = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:992: instantiated from > > `Engine > > >::Engine(const Engine > T, MultiPatch >&, const Domain&) [with DT > > = DomainTraits >, int Dim = 2, T = double, LayoutTag = > > UniformTag, PatchTag = Remote, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > > from `Array::Array(const Engine > EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > > EngineTag2 = MultiPatch >, Initializer = > > Interval<2>, int Dim = 2, T = double, EngineTag = > > MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > > `static Array >::newDim, T, NewEngine > T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > > View0 >::make(const Array&) [with int Dim > > = 2, T = double, EngineTag = MultiPatch >]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > > from `AltView0 >::Type_t Array > EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > > = MultiPatch > > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > > from `void > > Evaluator::evaluate(const LHS&, const Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, double, > > ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > > const [with LHS > > = Array<2, double, MultiPatch > >, RHS = > > Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > > Array& assign(const Array&, const T1&, const > > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch > Remote >, T1 = double, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > > Array& Array::operator=(const T1&) > > const [with T1 = double, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > > `Array& Array::operator=(const > > Array&) [with int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > diffusion_test.cpp:77: instantiated from here > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:1831: warning: base > > class > > `class Observer >' should be explicitly > > initialized > > in the copy constructor > > In file included from > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519, > > from diffusion_test.cpp:108: > > /usr/local/cots/pooma/src/Layout/LayoutBase.h: In constructor > > `LayoutBaseViewData::LayoutBaseViewData(const L&, const > > LV&, > > const ViewIndexer&, const Domain&, > > GuardLayers, > > GuardLayers) [with DT = DomainTraits >, LV = > > UniformGridLayoutView<2, 2>, int Dim = 2, int Dim2 = 2, L = > > UniformGridLayout<2>]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1388: instantiated from > > `UniformGridLayoutViewData::UniformGridLayoutViewData(const > > UniformGridLayoutView&, const Domain&) [with DT = > > DomainTraits >, int Dim = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from > > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, > > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519: instantiated > > from `UniformGridLayoutView::UniformGridLayoutView(const > > UniformGridLayoutView&, const Domain&) [with DT = > > DomainTraits >, int Dim = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1012: instantiated > > from `Engine > > >::Engine(const Engine > T, MultiPatchView >&, const Domain&) > > [with DT = DomainTraits >, int Dim = 2, T = double, > > LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > > from `Array::Array(const Engine > EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > > EngineTag2 = MultiPatchView, 2>, Initializer = > > Interval<2>, int Dim = 2, T = double, EngineTag = > > MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > > `static Array >::newDim, T, NewEngine > T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > > View0 >::make(const Array&) [with int Dim > > = 2, T = double, EngineTag = MultiPatchView, > > 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > > from `AltView0 >::Type_t Array > EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > > = MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > > from `void > > Evaluator::evaluate(const LHS&, const Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > > const [with LHS = Array<2, double, MultiPatchView > Remote, 2> >, RHS = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:2486: instantiated from `const Array& > > assign(const Array&, const Array&, const Op&) > > [with int Dim = 2, > > T = double, EngineTag = MultiPatchView, 2>, > > int OtherDim = 2, OtherT = double, OtherEngineTag = > > StencilEngine > MultiPatchView, 2> > >, Op = OpAssign]' > > diffusion_test.cpp:2117: instantiated from `const Array > EngineTag>& Array::operator=(const T1&) const [with > > T1 = Array<2, double, StencilEngine > MultiPatchView, 2> > > >, int Dim = 2, T = > > double, EngineTag = MultiPatchView, 2>]' > > diffusion_test.cpp:105: instantiated from here > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1027: warning: member > > initializers for `ViewIndexer<2, 2> LayoutBaseViewData<2, 2, > > UniformGridLayout<2> >::indexer_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1010: warning: and `long > > int > > LayoutBaseViewData<2, 2, UniformGridLayout<2> >::id_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be > > re-ordered to match declaration order > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1040: warning: member > > initializers for `bool LayoutBaseViewData<2, 2, UniformGridLayout<2> > > >::subdomainsComputed_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1021: warning: and ` > > GuardLayers<2> LayoutBaseViewData<2, 2, UniformGridLayout<2> > > >::internalGuards_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be > > re-ordered to match declaration order > > /usr/local/cots/pooma/src/Engine/Stencil.h: In constructor > > `StencilIntersector::StencilIntersector(const > > Interval&, const Intersect&) [with int Dim = 2, Intersect = > > Intersector<2>]': > > diffusion_test.cpp:863: instantiated from `static int > > LeafFunctor >, > > ExpressionApply > >::apply(const Engine > StencilEngine >&, const > > ExpressionApply >&) [with int D = 2, T = > > double, S = NinePtDiffusion, E = Array<2, double, > > MultiPatchView, 2> > > >, Intersect = Intersector<2>]' > > diffusion_test.cpp:2307: instantiated from `static int > > LeafFunctor, ExpressionApply >::apply(const > > Array&, const ExpressionApply&) [with int Dim = 2, T = > > double, E = StencilEngine > MultiPatchView, 2> > >, Tag = > > IntersectorTag >]' > > diffusion_test.cpp:80: instantiated from `static LeafFunctor > LeafTag>::Type_t ForEach::apply(const Expr&, const > > FTag&, const CTag&) [with Expr = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, FTag = > > ExpressionApply > >, CTag = NullCombine]' > > diffusion_test.cpp:88: instantiated from `ForEach > CTag>::Type_t forEach(const Expr&, const FTag&, const CTag&) [with Expr > > = Array<2, double, StencilEngine > MultiPatchView, 2> > > >, FTag = > > ExpressionApply > >, CTag = > > NullCombine]' > > diffusion_test.cpp:276: instantiated from `void expressionApply(const > > A&, const Tag&) [with A = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Tag = > > IntersectorTag >]' > > diffusion_test.cpp:1914: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > > const [with LHS = Array<2, double, MultiPatchView > Remote, 2> >, RHS = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:2486: instantiated from `const Array& > > assign(const Array&, const Array&, const Op&) > > [with int Dim = 2, > > T = double, EngineTag = MultiPatchView, 2>, > > int OtherDim = 2, OtherT = double, OtherEngineTag = > > StencilEngine > MultiPatchView, 2> > >, Op = OpAssign]' > > diffusion_test.cpp:2117: instantiated from `const Array > EngineTag>& Array::operator=(const T1&) const [with > > T1 = Array<2, double, StencilEngine > MultiPatchView, 2> > > >, int Dim = 2, T = > > double, EngineTag = MultiPatchView, 2>]' > > diffusion_test.cpp:105: instantiated from here > > /usr/local/cots/pooma/src/Engine/Stencil.h:844: warning: member > > initializers > > for `Intersector<2> StencilIntersector<2, Intersector<2> > > >::intersector_m' > > /usr/local/cots/pooma/src/Engine/Stencil.h:843: warning: and > > `Interval<2> > > StencilIntersector<2, Intersector<2> >::domain_m' > > /usr/local/cots/pooma/src/Engine/Stencil.h:788: warning: will be > > re-ordered > > to match declaration order > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > > member > > function `static void DomainTraits >::setDomain(int > > (&)[2], > > const T1&, const T2&) [with T1 = int, T2 = unsigned int]': > > /usr/local/cots/pooma/src/Domain/Interval.h:369: instantiated from > > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > > member > > function `static void DomainTraits >::setDomain(int > > (&)[2], > > const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > > /usr/local/cots/pooma/src/Domain/Interval.h:377: instantiated from > > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member > > function `static void DomainTraits >::setDomain(int (&)[3], > > const > > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > > /usr/local/cots/pooma/src/Domain/Range.h:396: instantiated from here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member > > function `static void DomainTraits >::setDomain(int (&)[3], > > const > > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > > /usr/local/cots/pooma/src/Domain/Range.h:407: instantiated from here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member > > function > > `static void DomainTraits >::setDomain(IndirectionList&, > > const > > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > > /usr/local/cots/pooma/src/Domain/Grid.h:395: instantiated from here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member > > function > > `static void DomainTraits >::setDomain(IndirectionList&, > > const > > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > > /usr/local/cots/pooma/src/Domain/Grid.h:404: instantiated from here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp: In copy > > constructor > > `Engine >::Engine(const > > Engine > T, MultiPatch >&) [with int Dim = 2, T = double, > > LayoutTag = UniformTag, PatchTag = Remote]': > > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.h:992: instantiated > > from `Engine > > >::Engine(const Engine >&, > > const Domain&) [with DT = DomainTraits >, int Dim > > = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, int > > Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > > from `Array::Array(const Engine > EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > > EngineTag2 = MultiPatch >, Initializer = > > Interval<2>, int Dim = 2, T = double, EngineTag = > > MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > > `static Array >::newDim, T, NewEngine > T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > > View0 >::make(const Array&) [with int Dim > > = 2, T = double, EngineTag = MultiPatch >]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > > from `AltView0 >::Type_t Array > EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > > = MultiPatch > > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > > from `void > > Evaluator::evaluate(const LHS&, const Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, double, > > ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > > const [with LHS > > = Array<2, double, MultiPatch > >, RHS = > > Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > > Array& assign(const Array&, const T1&, const > > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch > Remote >, T1 = double, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > > Array& Array::operator=(const T1&) > > const [with T1 = double, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > > `Array& Array::operator=(const > > Array&) [with int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > diffusion_test.cpp:77: instantiated from here > > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp:151: warning: base > > class > > `class Observer >' should be explicitly > > initialized in > > the copy constructor > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function > > `int > > UniformGridLayoutData::globalID(const Loc&) const [with int > > Dim = > > 2]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:472: instantiated from > > `int LayoutBase::globalID(const Loc&) const [with int Dim > > = 2, LBD = UniformGridLayoutData<2>]' > > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:758: > > instantiated from `T& RefCountedBlockPtr > Controller>::operator[](int) const [with T = Engine<2, double, > > Remote >, bool BoundsChecked = false, Controller = > > RefBlockController > >]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:458: instantiated from > > `RemoteProxy Engine >::operator()(const > > Loc&) const [with int Dim = 2, T = double, Tag = Brick]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1367: instantiated from > > `Engine::ElementRef_t Engine > MultiPatch >::operator()(const Loc&) const > > [with int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = > > Remote]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:166: instantiated from > > `static Array::ElementRef_t View1Implementation > T1, E1>, Domain, true>::make(const Array&, const S1&, const > > S2&, const Combine&) [with > > S1 = long int, S2 = long int, Combine = CombineDomainOpt > int, long int>, true>, int Dim = 2, T = double, EngineTag = > > MultiPatch >, Domain = Loc<2>]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:823: instantiated from > > `static View1Implementation, NewDomain2 > Sub2>::SliceType_t, View2, Sub1, Sub2>::sv>::Type_t > > View2, Sub1, Sub2>::make(const Array&, > > const Sub1&, const Sub2&) [with int Dim = 2, T = double, EngineTag = > > MultiPatch >, Sub1 = long int, > > Sub2 = long int]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1926: instantiated from > > `View2, Sub1, Sub2>::Type_t Array > EngineTag>::operator()(const Sub1&, const Sub2&) const [with Sub1 = long > > int, Sub2 = long int, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:176: instantiated from > > `RemoteProxy& RemoteProxy::operator=(const S&) [with S = double, T > > = double]' > > diffusion_test.cpp:80: instantiated from here > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:2127: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function > > `int > > UniformGridLayoutData::touches(const OtherDomain&, OutIter, > > const > > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > > std::back_insert_iterator, Interval<2> >, > > std::allocator, Interval<2> > > > >, ConstructTag = > > TouchesConstructNodeObj, int Dim = 2]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:641: instantiated from > > `int LayoutBase::touches(const OtherDomain&, OutIter, const > > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > > std::back_insert_iterator, Interval<2> >, > > std::allocator, Interval<2> > > > >, ConstructTag = > > TouchesConstructNodeObj, int Dim = 2, LBD = UniformGridLayoutData<2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:703: instantiated from > > `int LayoutBase::touches(const OtherDomain&, OutIter) const > > [with OtherDomain > > = Range<2>, OutIter = > > std::back_insert_iterator, Interval<2> >, > > std::allocator, Interval<2> > > > >, int Dim = 2, LBD = > > UniformGridLayoutData<2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:942: instantiated from > > `int LayoutBaseViewData::touches(const OtherDomain&, > > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > > OutIter = std::back_insert_iterator, > > std::allocator > > >, ConstructTag = TouchesConstructINode<2>, > > int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:1285: instantiated from > > `int LayoutBaseView::touches(const OtherDomain&, > > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > > OutIter = std::back_insert_iterator, > > std::allocator > > >, ConstructTag = TouchesConstructINode<2>, > > int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:333: instantiated from > > `void IntersectorData::touches(const Layout&) [with Layout = > > UniformGridLayoutView<2, 2>, int Dim = 2]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:171: instantiated from > > `bool IntersectorData::intersect(const Engine&, const > > GuardLayers&) [with Engine = Engine<2, double, > > MultiPatchView, 2> >, int Dim2 = 2, int Dim = > > 2]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:440: instantiated from > > `bool Intersector::intersect(const Engine&, const > > GuardLayers&) [with Engine > > = Engine<2, double, MultiPatchView, 2> >, int > > Dim2 = 2, int Dim = 2]' > > /usr/local/cots/pooma/src/Array/Array.h:1729: instantiated from > > `static int LeafFunctor > PatchTag, Dim2> >, ExpressionApply > > > >::applyHandler(const Engine > Dim2> >&, const ExpressionApply >&, const > > WrappedInt<1>&) [with int Dim = 2, T = double, LT = UniformTag, PatchTag > > = Remote, int BD = 2, Intersect = Intersector<2>]' > > /usr/local/cots/pooma/src/Array/Array.h:1716: instantiated from > > `static int LeafFunctor > PatchTag, Dim2> >, ExpressionApply > > > >::apply(const Engine > > >&, const ExpressionApply >&) [with int Dim = > > 2, T = double, LT = UniformTag, PatchTag = Remote, int > > BD = 2, Intersect = Intersector<2>]' > > /usr/local/cots/pooma/src/Array/Array.h:2307: instantiated from > > `static int LeafFunctor, ExpressionApply > > >::apply(const Array&, const ExpressionApply&) [with > > int Dim = 2, T = double, E = MultiPatchView, > > 2>, Tag = IntersectorTag >]' > > /usr/local/cots/pooma/src/Array/Array.h:80: instantiated from `static > > LeafFunctor::Type_t ForEach > CTag>::apply(const Expr&, const FTag&, const CTag&) [with Expr = > > Array<2, double, MultiPatchView > Remote, 2> >, FTag = > > ExpressionApply > >, CTag = NullCombine]' > > /usr/local/cots/pooma/src/Array/Array.h:88: instantiated from > > `ForEach::Type_t forEach(const Expr&, const FTag&, > > const CTag&) [with Expr = Array<2, double, MultiPatchView > Remote, 2> >, FTag = > > ExpressionApply > >, CTag = NullCombine]' > > /usr/local/cots/pooma/src/Array/Array.h:276: instantiated from `void > > expressionApply(const A&, const Tag&) [with A = Array<2, double, > > MultiPatchView, 2> >, Tag = > > IntersectorTag >]' > > /usr/local/cots/pooma/src/Array/Array.h:1913: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, > > RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > > const [with LHS > > = Array<2, double, MultiPatch > >, RHS = > > Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > > Array& assign(const Array&, const T1&, const > > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch > Remote >, T1 = double, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > > Array& Array::operator=(const T1&) > > const [with T1 = double, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > > `Array& Array::operator=(const > > Array&) [with int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > diffusion_test.cpp:77: instantiated from here > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:297: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Partition/DistributedMapper.h: In member > > function > > `void DistributedMapper::map(const > > std::vector, > > Interval >*, std::allocator, Interval > > >*> >&) > > const [with int Dim = 2]': > > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > > instantiated from here > > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:68: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Partition/BisectionMapper.h: In member > > function `void > > BisectionMapper::map(const std::vector, > > Interval >*, std::allocator, Interval > > >*> >&) > > const [with int Dim = 2]': > > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:86: > > instantiated from > > `void DistributedMapper::map(const std::vector, > > Interval >*, std::allocator, Interval >*> > > >&) const [with int Dim = 2]' > > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > > instantiated from here > > /usr/local/cots/pooma/src/Partition/BisectionMapper.h:86: warning: > > comparison > > between signed and unsigned integer expressions > > From jcrotinger at proximation.com Fri Apr 25 15:38:49 2003 From: jcrotinger at proximation.com (James Crotinger) Date: Fri, 25 Apr 2003 09:38:49 -0600 Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? Message-ID: I don't know where GCC 3.2 is with respect to optimizing Pooma. In the past we used GCC for development but not production as it could not peel away sufficient layers of inlining to achieve hand-coded speed. At the time that the ACL Pooma team left Los Alamos, only KCC and SGI CC could do a good job of optimizing Pooma. I would assume that icc can also do this, but someone else will have to confirm this. Note that if the hand-coded version is assuming a single patch of memory for the entire calculation domain, then it is definitely not a fair comparison to compare that to the MultiPatch Pooma version. Our goal was to make Array work as fast as hand-coded single-patch loops. Even then there are ways to write hand-coded loops to be faster - for instance, loop-jamming (doing two array expressions in a single loop) can result in huge savings in some instances. Some of this performance can be recovered with stencil/scalar type code, but at a loss of clarity. Are you using SMARTS for parallel execution? (You imply that you're not using MPI yet). Jim ------------------------------------------------------------------------ James A. Crotinger email: jimc at numerix.com NumeriX, LLC phone: (505) 424-4477 x104 2960 Rodeo Park Dr. W. Santa Fe, NM 87505 -----Original Message----- From: George Talbot [mailto:gtalbot at locuspharma.com] Sent: Friday, April 25, 2003 8:22 AM To: 'pooma-dev at pooma.codesourcery.com' Subject: Re: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? Not so good news. So I went back to the hand-coded program and reversed the indices, indexing x in the inner loop and y in the outer to reflect the memory layout of the array. Now the hand-coded variant is twice as fast as the equivalent POOMA program. This is with GCC 3.2. Distributing it among the two processors on my workstation doesn't bring the performance up to the single-processor hand-coded version. I will try today to beat the hand-coded program with MPI over more than two processors. However, I would like to know something. Is the diffusion example from the book a realistic example to show the performance of POOMA vs. hand-coded stuff? I need to be able to describe the break-even point where a POOMA app will outperform a uniprocessor app. Of course, I probably need to try to apply it to one of my in-house programs to be realistic, but I was hoping that someone on the list could suggest a particular demonstration program that would show POOMA outperforming a uniprocessor hand-coded implementation. --George On Wed, 2003-04-23 at 16:10, George Talbot wrote: > Hi, > > New POOMA II user. Got everything to compile and link today. The > performance of this stuff is shocking. > > I ran a hand coded version of your 2D diffusion program on my box for > 250 steps, 800x800 array. 1m34s, uniprocessor. > > Using a stencil, same box, uniprocessor. 25s. WOW. > > Using -shmem -np 2 to distribute the shared array version on both of my > processors on my box. 12s. Truly amazing. I think this may be a > dramatically useful tool. > > The only thing that irks me a bit is that there are a fair number of > compiler warnings, which I will append, along with the source I used, to > this e-mail. Is this normal? Swimming in a sea of warnings from the > POOMA headers, I might miss some on my own code... > > Take care. > > -- > George T. Talbot > > > Here's the program: > > #include > using namespace std; > > #define STENCIL > #define POOMA > #define DISTRIBUTED > > #ifdef POOMA > #include "Pooma/Arrays.h" > #endif > > #ifdef STENCIL > class NinePtDiffusion > { > public: > template > inline typename C::Element_t operator()(const C& c, int I, int J) > const > { > return (1.0/9.0) * > (c.read(I+1, J+1) + c.read(I+1, J ) + c.read(I+1, > J-1) + > c.read(I , J+1) + c.read(I , J ) + c.read(I , > J-1) + > c.read(I-1, J+1) + c.read(I-1, J ) + c.read(I-1, > J-1)); > } > > inline int lowerExtent(int) const { return 1; } > inline int upperExtent(int) const { return 1; } > }; > #endif > > int main(int argc, char* argv[]) > { > #ifdef POOMA > Pooma::initialize(argc, argv); > #endif > > long numAveragings = 250, numSteps; > > numSteps = (numAveragings+1)/2; > > long n = 800; > > long numProcessors=2; > > #ifdef POOMA > Inform output; > > output << "processors=" << numProcessors > << " avgs=" << numAveragings > << " n=" << n > << endl; > #else > cout << "processors=" << numProcessors > << " avgs=" << numAveragings > << " n=" << n > << endl; > #endif > > #ifdef POOMA > Interval<1> N(0, n-1); > Interval<2> problemDomain(N, N); > > Interval<1> I(1, n-2); > Interval<1> J(1, n-2); > Interval<2> interiorDomain(I, I); > > #ifdef DISTRIBUTED > UniformGridPartition<2> > partition(Loc<2>(numProcessors,numProcessors), GuardLayers<2>(1), > GuardLayers<2>(0)); > UniformGridLayout<2> layout(problemDomain, partition, > DistributedTag()); > > Array<2, double, MultiPatch > > > a(layout); > Array<2, double, MultiPatch > > > b(layout); > #else > Array<2, double, Brick> a(problemDomain); > Array<2, double, Brick> b(problemDomain); > #endif > > a = b = 0.0; > > Pooma::blockAndEvaluate(); > b(n/2, n/2) = 1000.0; > > #ifdef STENCIL > Stencil diffusion; > #endif > > #else > double a[n][n], b[n][n]; > > for (long x=1; x { > for (long y=1; y { > a[x][y] = b[x][y] = 0.0; > } > } > > b[n/2][n/2] = 1000.0; > #endif > > const double weight = 1.0/9.0; > > for (long i=0; i { > #ifdef STENCIL > a(interiorDomain) = diffusion(b, interiorDomain); > b(interiorDomain) = diffusion(a, interiorDomain); > #elif defined (POOMA) > a(I,J) = weight * > (b(I+1, J+1) + b(I+1, J ) + b(I+1, J-1) + > b(I , J+1) + b(I , J ) + b(I , J-1) + > b(I-1, J+1) + b(I-1, J ) + b(I-1, J-1)); > > b(I,J) = weight * > (a(I+1, J+1) + a(I+1, J ) + a(I+1, J-1) + > a(I , J+1) + a(I , J ) + a(I , J-1) + > a(I-1, J+1) + a(I-1, J ) + a(I-1, J-1)); > #else > for (long x=1; x { > for (long y=1; y { > a[x][y] = weight * > (b[x+1][y+1] + b[x+1][y] + b[x+1][y-1] + > b[x] [y+1] + b[x] [y] + b[x] [y-1] + > b[x-1][y+1] + b[x-1][y] + b[x-1][y-1]); > } > } > > for (long x=1; x { > for (long y=1; y { > b[x][y] = weight * > (a[x+1][y+1] + a[x+1][y] + a[x+1][y-1] + > a[x] [y+1] + a[x] [y] + a[x] [y-1] + > a[x-1][y+1] + a[x-1][y] + a[x-1][y-1]); > } > } > #endif > } > > #ifdef POOMA > Pooma::blockAndEvaluate(); > > output << "Center position: " << a(n/2, n/2) << endl; > > Pooma::finalize(); > #else > cout << "Center position: " << a[n/2][n/2] << endl; > #endif > > return 0; > } > > > Here's the compiler warnings, plus the compiler command line: > > g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG > -DQT_THREAD_SUPPORT -I/usr/local/qt/mkspecs/default -I. > -I/usr/local/cots/cheetah/linux/src > -I/usr/local/cots/cheetah/linux/lib/g++-ex -I/usr/local/cots/pooma/src > -I/usr/local/cots/pooma/linux/lib/PoomaConfiguration > -I/usr/local/qt/include -o diffusion_test.o diffusion_test.cpp > In file included from /usr/local/cots/pooma/src/Pooma/Domains.h:42, > from > /usr/local/cots/pooma/src/Domain/DomainRemoveOverlap.h:32, from /usr/local/cots/pooma/src/Layout/SparseTileLayout.cpp:36, > from > /usr/local/cots/pooma/src/Layout/SparseTileLayout.h:1201, > from > /usr/local/cots/pooma/src/Engine/IsValidLocation.h:55, > from /usr/local/cots/pooma/src/Array/PrintArray.h:57, > from /usr/local/cots/pooma/src/Array/Array.h:58, > from /usr/local/cots/pooma/src/Pooma/BrickArrays.h:42, > from /usr/local/cots/pooma/src/Pooma/UMPArrays.h:40, > from /usr/local/cots/pooma/src/Pooma/Arrays.h:39, > from diffusion_test.cpp:9: > /usr/local/cots/pooma/src/Domain/Grid.h: In copy constructor > `Grid<1>::Grid(const Grid<1>&)': > /usr/local/cots/pooma/src/Domain/Grid.h:360: warning: base class `class > Domain<1, DomainTraits > >' should be explicitly initialized > in the > copy constructor > In file included from /usr/local/cots/pooma/src/Pooma/Arrays.h:46, > from diffusion_test.cpp:9: > /usr/local/cots/pooma/src/Engine/RemoteEngine.h: In copy constructor > `GatherContexts::GatherContextsData::GatherContextsData(const > GatherContexts::GatherContextsData&)': > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1697: warning: base > class ` > class RefCounted' should be explicitly initialized in the copy > constructor > diffusion_test.cpp: In function `int main(int, char**)': > diffusion_test.cpp:100: warning: unused variable `const double weight' > In file included from > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499, > from /usr/local/cots/pooma/src/Array/Array.h:108, > from diffusion_test.cpp:77: > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In copy > constructor > `UniformGridLayout::UniformGridLayout(const > UniformGridLayout&) > [with int Dim = 2]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:806: instantiated from > `LayoutBaseViewData::LayoutBaseViewData(const L&, const > Domain&) [with DT = DomainTraits >, int Dim = 2, > int Dim2 = 2, L = UniformGridLayout<2>]' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1368: instantiated from > `UniformGridLayoutViewData::UniformGridLayoutViewData(const > UniformGridLayout&, const Domain&) [with DT = > DomainTraits >, int Dim > = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499: instantiated > from `UniformGridLayoutView Dim2>::UniformGridLayoutView(UniformGridLayoutViewData Dim2>::Layout_t&, const Domain&) [with DT = > DomainTraits >, int Dim = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:992: instantiated from > `Engine > >::Engine(const Engine T, MultiPatch >&, const Domain&) [with DT > = DomainTraits >, int Dim = 2, T = double, LayoutTag = > UniformTag, PatchTag = Remote, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > from `Array::Array(const Engine EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > EngineTag2 = MultiPatch >, Initializer = > Interval<2>, int Dim = 2, T = double, EngineTag = > MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > `static Array >::newDim, T, NewEngine T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > View0 >::make(const Array&) [with int Dim > = 2, T = double, EngineTag = MultiPatch >]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > from `AltView0 >::Type_t Array EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > = MultiPatch > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS > = Array<2, double, MultiPatch > >, RHS = > Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > Array& assign(const Array&, const T1&, const > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch Remote >, T1 = double, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > Array& Array::operator=(const T1&) > const [with T1 = double, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > `Array& Array::operator=(const > Array&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >]' > diffusion_test.cpp:77: instantiated from here > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:1831: warning: base > class > `class Observer >' should be explicitly > initialized > in the copy constructor > In file included from > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519, > from diffusion_test.cpp:108: > /usr/local/cots/pooma/src/Layout/LayoutBase.h: In constructor > `LayoutBaseViewData::LayoutBaseViewData(const L&, const > LV&, > const ViewIndexer&, const Domain&, > GuardLayers, > GuardLayers) [with DT = DomainTraits >, LV = > UniformGridLayoutView<2, 2>, int Dim = 2, int Dim2 = 2, L = > UniformGridLayout<2>]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1388: instantiated from > `UniformGridLayoutViewData::UniformGridLayoutViewData(const > UniformGridLayoutView&, const Domain&) [with DT = > DomainTraits >, int Dim = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated from > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim = 2, > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519: instantiated > from `UniformGridLayoutView::UniformGridLayoutView(const > UniformGridLayoutView&, const Domain&) [with DT = > DomainTraits >, int Dim = 2, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1012: instantiated > from `Engine > >::Engine(const Engine T, MultiPatchView >&, const Domain&) > [with DT = DomainTraits >, int Dim = 2, T = double, > LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > from `Array::Array(const Engine EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > EngineTag2 = MultiPatchView, 2>, Initializer = > Interval<2>, int Dim = 2, T = double, EngineTag = > MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > `static Array >::newDim, T, NewEngine T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > View0 >::make(const Array&) [with int Dim > = 2, T = double, EngineTag = MultiPatchView, > 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > from `AltView0 >::Type_t Array EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > = MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS = Array<2, double, MultiPatchView Remote, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:2486: instantiated from `const Array& > assign(const Array&, const Array&, const Op&) > [with int Dim = 2, > T = double, EngineTag = MultiPatchView, 2>, > int OtherDim = 2, OtherT = double, OtherEngineTag = > StencilEngine MultiPatchView, 2> > >, Op = OpAssign]' > diffusion_test.cpp:2117: instantiated from `const Array EngineTag>& Array::operator=(const T1&) const [with > T1 = Array<2, double, StencilEngine MultiPatchView, 2> > > >, int Dim = 2, T = > double, EngineTag = MultiPatchView, 2>]' > diffusion_test.cpp:105: instantiated from here > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1027: warning: member > initializers for `ViewIndexer<2, 2> LayoutBaseViewData<2, 2, > UniformGridLayout<2> >::indexer_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1010: warning: and `long > int > LayoutBaseViewData<2, 2, UniformGridLayout<2> >::id_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be > re-ordered to match declaration order > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1040: warning: member > initializers for `bool LayoutBaseViewData<2, 2, UniformGridLayout<2> > >::subdomainsComputed_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1021: warning: and ` > GuardLayers<2> LayoutBaseViewData<2, 2, UniformGridLayout<2> > >::internalGuards_m' > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will be > re-ordered to match declaration order > /usr/local/cots/pooma/src/Engine/Stencil.h: In constructor > `StencilIntersector::StencilIntersector(const > Interval&, const Intersect&) [with int Dim = 2, Intersect = > Intersector<2>]': > diffusion_test.cpp:863: instantiated from `static int > LeafFunctor >, > ExpressionApply > >::apply(const Engine StencilEngine >&, const > ExpressionApply >&) [with int D = 2, T = > double, S = NinePtDiffusion, E = Array<2, double, > MultiPatchView, 2> > >, Intersect = Intersector<2>]' > diffusion_test.cpp:2307: instantiated from `static int > LeafFunctor, ExpressionApply >::apply(const > Array&, const ExpressionApply&) [with int Dim = 2, T = > double, E = StencilEngine MultiPatchView, 2> > >, Tag = > IntersectorTag >]' > diffusion_test.cpp:80: instantiated from `static LeafFunctor LeafTag>::Type_t ForEach::apply(const Expr&, const > FTag&, const CTag&) [with Expr = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, FTag = > ExpressionApply > >, CTag = NullCombine]' > diffusion_test.cpp:88: instantiated from `ForEach CTag>::Type_t forEach(const Expr&, const FTag&, const CTag&) [with Expr > = Array<2, double, StencilEngine MultiPatchView, 2> > > >, FTag = > ExpressionApply > >, CTag = > NullCombine]' > diffusion_test.cpp:276: instantiated from `void expressionApply(const > A&, const Tag&) [with A = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Tag = > IntersectorTag >]' > diffusion_test.cpp:1914: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS = Array<2, double, MultiPatchView Remote, 2> >, RHS = Array<2, double, > StencilEngine MultiPatchView, 2> > > >, Op = OpAssign]' > diffusion_test.cpp:2486: instantiated from `const Array& > assign(const Array&, const Array&, const Op&) > [with int Dim = 2, > T = double, EngineTag = MultiPatchView, 2>, > int OtherDim = 2, OtherT = double, OtherEngineTag = > StencilEngine MultiPatchView, 2> > >, Op = OpAssign]' > diffusion_test.cpp:2117: instantiated from `const Array EngineTag>& Array::operator=(const T1&) const [with > T1 = Array<2, double, StencilEngine MultiPatchView, 2> > > >, int Dim = 2, T = > double, EngineTag = MultiPatchView, 2>]' > diffusion_test.cpp:105: instantiated from here > /usr/local/cots/pooma/src/Engine/Stencil.h:844: warning: member > initializers > for `Intersector<2> StencilIntersector<2, Intersector<2> > >::intersector_m' > /usr/local/cots/pooma/src/Engine/Stencil.h:843: warning: and > `Interval<2> > StencilIntersector<2, Intersector<2> >::domain_m' > /usr/local/cots/pooma/src/Engine/Stencil.h:788: warning: will be > re-ordered > to match declaration order > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > member > function `static void DomainTraits >::setDomain(int > (&)[2], > const T1&, const T2&) [with T1 = int, T2 = unsigned int]': > /usr/local/cots/pooma/src/Domain/Interval.h:369: instantiated from > here > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > member > function `static void DomainTraits >::setDomain(int > (&)[2], > const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > /usr/local/cots/pooma/src/Domain/Interval.h:377: instantiated from > here > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member > function `static void DomainTraits >::setDomain(int (&)[3], > const > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > /usr/local/cots/pooma/src/Domain/Range.h:396: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static member > function `static void DomainTraits >::setDomain(int (&)[3], > const > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > /usr/local/cots/pooma/src/Domain/Range.h:407: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member > function > `static void DomainTraits >::setDomain(IndirectionList&, > const > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > /usr/local/cots/pooma/src/Domain/Grid.h:395: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static member > function > `static void DomainTraits >::setDomain(IndirectionList&, > const > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > /usr/local/cots/pooma/src/Domain/Grid.h:404: instantiated from here > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp: In copy > constructor > `Engine >::Engine(const > Engine T, MultiPatch >&) [with int Dim = 2, T = double, > LayoutTag = UniformTag, PatchTag = Remote]': > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.h:992: instantiated > from `Engine > >::Engine(const Engine >&, > const Domain&) [with DT = DomainTraits >, int Dim > = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, int > Dim2 = 2]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > from `Array::Array(const Engine EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > EngineTag2 = MultiPatch >, Initializer = > Interval<2>, int Dim = 2, T = double, EngineTag = > MultiPatchView, 2>]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated from > `static Array >::newDim, T, NewEngine T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > View0 >::make(const Array&) [with int Dim > = 2, T = double, EngineTag = MultiPatch >]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > from `AltView0 >::Type_t Array EngineTag>::operator()() const [with int Dim = 2, T = double, EngineTag > = MultiPatch > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, RHS = Array<2, double, > ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS > = Array<2, double, MultiPatch > >, RHS = > Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > Array& assign(const Array&, const T1&, const > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch Remote >, T1 = double, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > Array& Array::operator=(const T1&) > const [with T1 = double, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > `Array& Array::operator=(const > Array&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >]' > diffusion_test.cpp:77: instantiated from here > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp:151: warning: base > class > `class Observer >' should be explicitly > initialized in > the copy constructor > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function > `int > UniformGridLayoutData::globalID(const Loc&) const [with int > Dim = > 2]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:472: instantiated from > `int LayoutBase::globalID(const Loc&) const [with int Dim > = 2, LBD = UniformGridLayoutData<2>]' > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:758: > instantiated from `T& RefCountedBlockPtr Controller>::operator[](int) const [with T = Engine<2, double, > Remote >, bool BoundsChecked = false, Controller = > RefBlockController > >]' > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:458: instantiated from > `RemoteProxy Engine >::operator()(const > Loc&) const [with int Dim = 2, T = double, Tag = Brick]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1367: instantiated from > `Engine::ElementRef_t Engine MultiPatch >::operator()(const Loc&) const > [with int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = > Remote]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:166: instantiated from > `static Array::ElementRef_t View1Implementation T1, E1>, Domain, true>::make(const Array&, const S1&, const > S2&, const Combine&) [with > S1 = long int, S2 = long int, Combine = CombineDomainOpt int, long int>, true>, int Dim = 2, T = double, EngineTag = > MultiPatch >, Domain = Loc<2>]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:823: instantiated from > `static View1Implementation, NewDomain2 Sub2>::SliceType_t, View2, Sub1, Sub2>::sv>::Type_t > View2, Sub1, Sub2>::make(const Array&, > const Sub1&, const Sub2&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >, Sub1 = long int, > Sub2 = long int]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1926: instantiated from > `View2, Sub1, Sub2>::Type_t Array EngineTag>::operator()(const Sub1&, const Sub2&) const [with Sub1 = long > int, Sub2 = long int, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:176: instantiated from > `RemoteProxy& RemoteProxy::operator=(const S&) [with S = double, T > = double]' > diffusion_test.cpp:80: instantiated from here > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:2127: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member function > `int > UniformGridLayoutData::touches(const OtherDomain&, OutIter, > const > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > std::back_insert_iterator, Interval<2> >, > std::allocator, Interval<2> > > > >, ConstructTag = > TouchesConstructNodeObj, int Dim = 2]': > /usr/local/cots/pooma/src/Layout/LayoutBase.h:641: instantiated from > `int LayoutBase::touches(const OtherDomain&, OutIter, const > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > std::back_insert_iterator, Interval<2> >, > std::allocator, Interval<2> > > > >, ConstructTag = > TouchesConstructNodeObj, int Dim = 2, LBD = UniformGridLayoutData<2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:703: instantiated from > `int LayoutBase::touches(const OtherDomain&, OutIter) const > [with OtherDomain > = Range<2>, OutIter = > std::back_insert_iterator, Interval<2> >, > std::allocator, Interval<2> > > > >, int Dim = 2, LBD = > UniformGridLayoutData<2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:942: instantiated from > `int LayoutBaseViewData::touches(const OtherDomain&, > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > OutIter = std::back_insert_iterator, > std::allocator > > >, ConstructTag = TouchesConstructINode<2>, > int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:1285: instantiated from > `int LayoutBaseView::touches(const OtherDomain&, > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > OutIter = std::back_insert_iterator, > std::allocator > > >, ConstructTag = TouchesConstructINode<2>, > int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > /usr/local/cots/pooma/src/Engine/Intersector.h:333: instantiated from > `void IntersectorData::touches(const Layout&) [with Layout = > UniformGridLayoutView<2, 2>, int Dim = 2]' > /usr/local/cots/pooma/src/Engine/Intersector.h:171: instantiated from > `bool IntersectorData::intersect(const Engine&, const > GuardLayers&) [with Engine = Engine<2, double, > MultiPatchView, 2> >, int Dim2 = 2, int Dim = > 2]' > /usr/local/cots/pooma/src/Engine/Intersector.h:440: instantiated from > `bool Intersector::intersect(const Engine&, const > GuardLayers&) [with Engine > = Engine<2, double, MultiPatchView, 2> >, int > Dim2 = 2, int Dim = 2]' > /usr/local/cots/pooma/src/Array/Array.h:1729: instantiated from > `static int LeafFunctor PatchTag, Dim2> >, ExpressionApply > > >::applyHandler(const Engine Dim2> >&, const ExpressionApply >&, const > WrappedInt<1>&) [with int Dim = 2, T = double, LT = UniformTag, PatchTag > = Remote, int BD = 2, Intersect = Intersector<2>]' > /usr/local/cots/pooma/src/Array/Array.h:1716: instantiated from > `static int LeafFunctor PatchTag, Dim2> >, ExpressionApply > > >::apply(const Engine > >&, const ExpressionApply >&) [with int Dim = > 2, T = double, LT = UniformTag, PatchTag = Remote, int > BD = 2, Intersect = Intersector<2>]' > /usr/local/cots/pooma/src/Array/Array.h:2307: instantiated from > `static int LeafFunctor, ExpressionApply > >::apply(const Array&, const ExpressionApply&) [with > int Dim = 2, T = double, E = MultiPatchView, > 2>, Tag = IntersectorTag >]' > /usr/local/cots/pooma/src/Array/Array.h:80: instantiated from `static > LeafFunctor::Type_t ForEach CTag>::apply(const Expr&, const FTag&, const CTag&) [with Expr = > Array<2, double, MultiPatchView Remote, 2> >, FTag = > ExpressionApply > >, CTag = NullCombine]' > /usr/local/cots/pooma/src/Array/Array.h:88: instantiated from > `ForEach::Type_t forEach(const Expr&, const FTag&, > const CTag&) [with Expr = Array<2, double, MultiPatchView Remote, 2> >, FTag = > ExpressionApply > >, CTag = NullCombine]' > /usr/local/cots/pooma/src/Array/Array.h:276: instantiated from `void > expressionApply(const A&, const Tag&) [with A = Array<2, double, > MultiPatchView, 2> >, Tag = > IntersectorTag >]' > /usr/local/cots/pooma/src/Array/Array.h:1913: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, > const RHS&) const [with LHS = Array<2, double, > MultiPatchView, 2> >, > RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from `void > Evaluator::evaluate(const LHS&, const Op&, const RHS&) > const [with LHS > = Array<2, double, MultiPatch > >, RHS = > Array<2, double, ConstantFunction>, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from `const > Array& assign(const Array&, const T1&, const > Op&) [with int Dim = 2, T = double, EngineTag = MultiPatch Remote >, T1 = double, Op = OpAssign]' > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from `const > Array& Array::operator=(const T1&) > const [with T1 = double, int Dim = 2, T = double, EngineTag = > MultiPatch >]' > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > `Array& Array::operator=(const > Array&) [with int Dim = 2, T = double, EngineTag = > MultiPatch >]' > diffusion_test.cpp:77: instantiated from here > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:297: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Partition/DistributedMapper.h: In member > function > `void DistributedMapper::map(const > std::vector, > Interval >*, std::allocator, Interval > >*> >&) > const [with int Dim = 2]': > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > instantiated from here > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:68: warning: > comparison > between signed and unsigned integer expressions > /usr/local/cots/pooma/src/Partition/BisectionMapper.h: In member > function `void > BisectionMapper::map(const std::vector, > Interval >*, std::allocator, Interval > >*> >&) > const [with int Dim = 2]': > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:86: > instantiated from > `void DistributedMapper::map(const std::vector, > Interval >*, std::allocator, Interval >*> > >&) const [with int Dim = 2]' > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > instantiated from here > /usr/local/cots/pooma/src/Partition/BisectionMapper.h:86: warning: > comparison > between signed and unsigned integer expressions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From gtalbot at locuspharma.com Fri Apr 25 15:56:13 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 11:56:13 -0400 Subject: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of compiler warnings? In-Reply-To: References: Message-ID: <3bf729bad114c89d78cb250d8a5401913ea95a78@locuspharma.com> For an initial test, I use Array<2, double, Brick> for uniprocessor with GCC 3.2. It's half the speed of doing it manually with for() loops over an array: Uniprocessor, Array<2, double, Brick>: [gtalbot at neptunium diffusion_test]$ time ./test 1 500 1000 processors=1 avgs=500 n=1000 Center position: 0.478062 real 1m21.110s user 1m19.592s sys 0m0.180s Uniprocessor, hand-coded: [gtalbot at neptunium diffusion_test]$ time ./test 1 500 1000 processors=1 avgs=500 n=1000 Center position: 0.478062 real 0m31.614s user 0m31.160s sys 0m0.078s Dual-processor, Array<2, double, MultiPatch<...> >: [gtalbot at neptunium diffusion_test]$ time ./test -shmem -np 2 2 500 1000 processors=2 avgs=500 n=1000 Center position: 0.478062 real 0m45.722s user 1m23.373s sys 0m0.844s Problem number one for me at this point is that Array<2, double, Brick> is half the speed of the hand-coded loop. I didn't do any loop jamming or anything in the hand-coded version. Just straight loops. I wasn't expecting that, and I get the feeling that GCC 3.2 is failing to inline something. I've downloaded icc 7.1 and was going to give that a shot after lunch. I've also been told that GCC 3.3 "does the right thing" when you bump up the max # inlined function instructions to about 300 or so, but I'm leery of installing it just yet, unless there's an RPM for RH8.0 I could get somewhere. I'm not using MPI yet. I'm using shared memory via that MM package from the POOMA II web page. I've compiled POOMA w/Cheetah, MPICH and MM, but have only been able to run it uniprocessor and MM, as there was a configuration problem on the cluster when I tried to mpirun it on Wednesday. (i.e. "mpirun" wasn't installed but the man page was, DOH!) The IT guy is working on that problem and I'll try this thing out on there at some point soon. --George P.S. Just out of personal curiosity, how come the ACL Pooma team left Los Alamos? Where did they go? On Fri, 2003-04-25 at 11:38, James Crotinger wrote: > I don't know where GCC 3.2 is with respect to optimizing Pooma. In the > past we used GCC for development but not production as it could not > peel away sufficient layers of inlining to achieve hand-coded speed. > At the time that the ACL Pooma team left Los Alamos, only KCC and SGI > CC could do a good job of optimizing Pooma. I would assume that icc > can also do this, but someone else will have to confirm this. > > Note that if the hand-coded version is assuming a single patch of > memory for the entire calculation domain, then it is definitely not a > fair comparison to compare that to the MultiPatch Pooma version. Our > goal was to make Array work as fast as hand-coded > single-patch loops. Even then there are ways to write hand-coded loops > to be faster - for instance, loop-jamming (doing two array expressions > in a single loop) can result in huge savings in some instances. Some > of this performance can be recovered with stencil/scalar type code, > but at a loss of clarity. > > Are you using SMARTS for parallel execution? (You imply that you're > not using MPI yet). > > Jim > > ------------------------------------------------------------------------ > James A. Crotinger email: > jimc at numerix.com > NumeriX, LLC phone: (505) 424-4477 > x104 > 2960 Rodeo Park Dr. W. > Santa Fe, NM 87505 > > > -----Original Message----- > From: George Talbot [mailto:gtalbot at locuspharma.com] > Sent: Friday, April 25, 2003 8:22 AM > To: 'pooma-dev at pooma.codesourcery.com' > Subject: Re: [pooma-dev] GCC 3.2 on Redhat 8.0--a fair number of > compiler warnings? > > Not so good news. So I went back to the hand-coded program and > reversed > the indices, indexing x in the inner loop and y in the outer to > reflect > the memory layout of the array. Now the hand-coded variant is twice > as > fast as the equivalent POOMA program. This is with GCC 3.2. > Distributing it among the two processors on my workstation doesn't > bring > the performance up to the single-processor hand-coded version. > > I will try today to beat the hand-coded program with MPI over more > than > two processors. However, I would like to know something. Is the > diffusion example from the book a realistic example to show the > performance of POOMA vs. hand-coded stuff? I need to be able to > describe the break-even point where a POOMA app will outperform a > uniprocessor app. Of course, I probably need to try to apply it to > one > of my in-house programs to be realistic, but I was hoping that someone > on the list could suggest a particular demonstration program that > would > show POOMA outperforming a uniprocessor hand-coded implementation. > > --George > > > On Wed, 2003-04-23 at 16:10, George Talbot wrote: > > Hi, > > > > New POOMA II user. Got everything to compile and link today. The > > performance of this stuff is shocking. > > > > I ran a hand coded version of your 2D diffusion program on my box > for > > 250 steps, 800x800 array. 1m34s, uniprocessor. > > > > Using a stencil, same box, uniprocessor. 25s. WOW. > > > > Using -shmem -np 2 to distribute the shared array version on both of > my > > processors on my box. 12s. Truly amazing. I think this may be a > > dramatically useful tool. > > > > The only thing that irks me a bit is that there are a fair number of > > compiler warnings, which I will append, along with the source I > used, to > > this e-mail. Is this normal? Swimming in a sea of warnings from > the > > POOMA headers, I might miss some on my own code... > > > > Take care. > > > > -- > > George T. Talbot > > > > > > Here's the program: > > > > #include > > using namespace std; > > > > #define STENCIL > > #define POOMA > > #define DISTRIBUTED > > > > #ifdef POOMA > > #include "Pooma/Arrays.h" > > #endif > > > > #ifdef STENCIL > > class NinePtDiffusion > > { > > public: > > template > > inline typename C::Element_t operator()(const C& c, int I, int > J) > > const > > { > > return (1.0/9.0) * > > (c.read(I+1, J+1) + c.read(I+1, J ) + > c.read(I+1, > > J-1) + > > c.read(I , J+1) + c.read(I , J ) + c.read(I > , > > J-1) + > > c.read(I-1, J+1) + c.read(I-1, J ) + > c.read(I-1, > > J-1)); > > } > > > > inline int lowerExtent(int) const { return 1; } > > inline int upperExtent(int) const { return 1; } > > }; > > #endif > > > > int main(int argc, char* argv[]) > > { > > #ifdef POOMA > > Pooma::initialize(argc, argv); > > #endif > > > > long numAveragings = 250, numSteps; > > > > numSteps = (numAveragings+1)/2; > > > > long n = 800; > > > > long numProcessors=2; > > > > #ifdef POOMA > > Inform output; > > > > output << "processors=" << numProcessors > > << " avgs=" << numAveragings > > << " n=" << n > > << endl; > > #else > > cout << "processors=" << numProcessors > > << " avgs=" << numAveragings > > << " n=" << n > > << endl; > > #endif > > > > #ifdef POOMA > > Interval<1> N(0, n-1); > > Interval<2> problemDomain(N, N); > > > > Interval<1> I(1, n-2); > > Interval<1> J(1, n-2); > > Interval<2> interiorDomain(I, I); > > > > #ifdef DISTRIBUTED > > UniformGridPartition<2> > > partition(Loc<2>(numProcessors,numProcessors), GuardLayers<2>(1), > > GuardLayers<2>(0)); > > UniformGridLayout<2> layout(problemDomain, partition, > > DistributedTag()); > > > > Array<2, double, MultiPatch > > > > a(layout); > > Array<2, double, MultiPatch > > > > b(layout); > > #else > > Array<2, double, Brick> a(problemDomain); > > Array<2, double, Brick> b(problemDomain); > > #endif > > > > a = b = 0.0; > > > > Pooma::blockAndEvaluate(); > > b(n/2, n/2) = 1000.0; > > > > #ifdef STENCIL > > Stencil diffusion; > > #endif > > > > #else > > double a[n][n], b[n][n]; > > > > for (long x=1; x > { > > for (long y=1; y > { > > a[x][y] = b[x][y] = 0.0; > > } > > } > > > > b[n/2][n/2] = 1000.0; > > #endif > > > > const double weight = 1.0/9.0; > > > > for (long i=0; i > { > > #ifdef STENCIL > > a(interiorDomain) = diffusion(b, interiorDomain); > > b(interiorDomain) = diffusion(a, interiorDomain); > > #elif defined (POOMA) > > a(I,J) = weight * > > (b(I+1, J+1) + b(I+1, J ) + b(I+1, J-1) + > > b(I , J+1) + b(I , J ) + b(I , J-1) + > > b(I-1, J+1) + b(I-1, J ) + b(I-1, J-1)); > > > > b(I,J) = weight * > > (a(I+1, J+1) + a(I+1, J ) + a(I+1, J-1) + > > a(I , J+1) + a(I , J ) + a(I , J-1) + > > a(I-1, J+1) + a(I-1, J ) + a(I-1, J-1)); > > #else > > for (long x=1; x > { > > for (long y=1; y > { > > a[x][y] = weight * > > (b[x+1][y+1] + b[x+1][y] + b[x+1][y-1] > + > > b[x] [y+1] + b[x] [y] + b[x] [y-1] > + > > b[x-1][y+1] + b[x-1][y] + > b[x-1][y-1]); > > } > > } > > > > for (long x=1; x > { > > for (long y=1; y > { > > b[x][y] = weight * > > (a[x+1][y+1] + a[x+1][y] + a[x+1][y-1] > + > > a[x] [y+1] + a[x] [y] + a[x] [y-1] > + > > a[x-1][y+1] + a[x-1][y] + > a[x-1][y-1]); > > } > > } > > #endif > > } > > > > #ifdef POOMA > > Pooma::blockAndEvaluate(); > > > > output << "Center position: " << a(n/2, n/2) << endl; > > > > Pooma::finalize(); > > #else > > cout << "Center position: " << a[n/2][n/2] << endl; > > #endif > > > > return 0; > > } > > > > > > Here's the compiler warnings, plus the compiler command line: > > > > g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG > > -DQT_THREAD_SUPPORT -I/usr/local/qt/mkspecs/default -I. > > -I/usr/local/cots/cheetah/linux/src > > -I/usr/local/cots/cheetah/linux/lib/g++-ex > -I/usr/local/cots/pooma/src > > -I/usr/local/cots/pooma/linux/lib/PoomaConfiguration > > -I/usr/local/qt/include -o diffusion_test.o diffusion_test.cpp > > In file included from /usr/local/cots/pooma/src/Pooma/Domains.h:42, > > from > > > /usr/local/cots/pooma/src/Domain/DomainRemoveOverlap.h:32, from /usr/local/cots/pooma/src/Layout/SparseTileLayout.cpp:36, > > > from > > /usr/local/cots/pooma/src/Layout/SparseTileLayout.h:1201, > > from > > /usr/local/cots/pooma/src/Engine/IsValidLocation.h:55, > > from > /usr/local/cots/pooma/src/Array/PrintArray.h:57, > > from /usr/local/cots/pooma/src/Array/Array.h:58, > > from > /usr/local/cots/pooma/src/Pooma/BrickArrays.h:42, > > from > /usr/local/cots/pooma/src/Pooma/UMPArrays.h:40, > > from /usr/local/cots/pooma/src/Pooma/Arrays.h:39, > > from diffusion_test.cpp:9: > > /usr/local/cots/pooma/src/Domain/Grid.h: In copy constructor > > `Grid<1>::Grid(const Grid<1>&)': > > /usr/local/cots/pooma/src/Domain/Grid.h:360: warning: base class > `class > > Domain<1, DomainTraits > >' should be explicitly > initialized > > in the > > copy constructor > > In file included from /usr/local/cots/pooma/src/Pooma/Arrays.h:46, > > from diffusion_test.cpp:9: > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h: In copy constructor > > `GatherContexts::GatherContextsData::GatherContextsData(const > > GatherContexts::GatherContextsData&)': > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1697: warning: base > > class ` > > class RefCounted' should be explicitly initialized in the copy > > constructor > > diffusion_test.cpp: In function `int main(int, char**)': > > diffusion_test.cpp:100: warning: unused variable `const double > weight' > > In file included from > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499, > > from /usr/local/cots/pooma/src/Array/Array.h:108, > > from diffusion_test.cpp:77: > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In copy > > constructor > > `UniformGridLayout::UniformGridLayout(const > > UniformGridLayout&) > > [with int Dim = 2]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:806: instantiated > from > > `LayoutBaseViewData::LayoutBaseViewData(const L&, > const > > Domain&) [with DT = DomainTraits >, int Dim = > 2, > > int Dim2 = 2, L = UniformGridLayout<2>]' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1368: instantiated > from > > `UniformGridLayoutViewData Dim2>::UniformGridLayoutViewData(const > > UniformGridLayout&, const Domain&) [with DT = > > DomainTraits >, int Dim > > = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated > from > > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim > = 2, > > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1499: instantiated > > from `UniformGridLayoutView > Dim2>::UniformGridLayoutView(UniformGridLayoutViewData > Dim2>::Layout_t&, const Domain&) [with DT = > > DomainTraits >, int Dim = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:992: instantiated > from > > `Engine > > >::Engine(const Engine > T, MultiPatch >&, const Domain&) > [with DT > > = DomainTraits >, int Dim = 2, T = double, LayoutTag = > > UniformTag, PatchTag = Remote, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > > from `Array::Array(const Engine > EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > > EngineTag2 = MultiPatch >, Initializer = > > Interval<2>, int Dim = 2, T = double, EngineTag = > > MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated > from > > `static Array >::newDim, T, > NewEngine > T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > > View0 >::make(const Array&) [with int > Dim > > = 2, T = double, EngineTag = MultiPatch > >]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > > from `AltView0 >::Type_t Array > EngineTag>::operator()() const [with int Dim = 2, T = double, > EngineTag > > = MultiPatch > > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: > instantiated > > from `void > > Evaluator::evaluate(const LHS&, const > Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, > double, > > ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from > `void > > Evaluator::evaluate(const LHS&, const Op&, const > RHS&) > > const [with LHS > > = Array<2, double, MultiPatch > >, RHS = > > Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from > `const > > Array& assign(const Array&, const T1&, const > > Op&) [with int Dim = 2, T = double, EngineTag = > MultiPatch > Remote >, T1 = double, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from > `const > > Array& Array::operator=(const > T1&) > > const [with T1 = double, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > > `Array& Array::operator=(const > > Array&) [with int Dim = 2, T = double, EngineTag > = > > MultiPatch >]' > > diffusion_test.cpp:77: instantiated from here > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:1831: warning: > base > > class > > `class Observer >' should be explicitly > > initialized > > in the copy constructor > > In file included from > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519, > > from diffusion_test.cpp:108: > > /usr/local/cots/pooma/src/Layout/LayoutBase.h: In constructor > > `LayoutBaseViewData::LayoutBaseViewData(const L&, > const > > LV&, > > const ViewIndexer&, const Domain&, > > GuardLayers, > > GuardLayers) [with DT = DomainTraits >, LV = > > UniformGridLayoutView<2, 2>, int Dim = 2, int Dim2 = 2, L = > > UniformGridLayout<2>]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1388: instantiated > from > > `UniformGridLayoutViewData Dim2>::UniformGridLayoutViewData(const > > UniformGridLayoutView&, const Domain&) [with DT > = > > DomainTraits >, int Dim = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1109: instantiated > from > > `LayoutBaseView::LayoutBaseView(lvd*) [with int Dim > = 2, > > int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1519: instantiated > > from `UniformGridLayoutView::UniformGridLayoutView(const > > UniformGridLayoutView&, const Domain&) [with DT > = > > DomainTraits >, int Dim = 2, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1012: instantiated > > from `Engine > > >::Engine(const Engine > T, MultiPatchView >&, const Domain DT>&) > > [with DT = DomainTraits >, int Dim = 2, T = double, > > LayoutTag = UniformTag, PatchTag = Remote, int Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > > from `Array::Array(const Engine > EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > > EngineTag2 = MultiPatchView, 2>, > Initializer = > > Interval<2>, int Dim = 2, T = double, EngineTag = > > MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated > from > > `static Array >::newDim, T, > NewEngine > T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > > View0 >::make(const Array&) [with int > Dim > > = 2, T = double, EngineTag = MultiPatchView Remote, > > 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > > from `AltView0 >::Type_t Array > EngineTag>::operator()() const [with int Dim = 2, T = double, > EngineTag > > = MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: instantiated > > from `void > > Evaluator::evaluate(const LHS&, const > Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, > double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const > RHS&) > > const [with LHS = Array<2, double, MultiPatchView > Remote, 2> >, RHS = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:2486: instantiated from `const Array E1>& > > assign(const Array&, const Array&, const > Op&) > > [with int Dim = 2, > > T = double, EngineTag = MultiPatchView, > 2>, > > int OtherDim = 2, OtherT = double, OtherEngineTag = > > StencilEngine > MultiPatchView, 2> > >, Op = OpAssign]' > > diffusion_test.cpp:2117: instantiated from `const Array > EngineTag>& Array::operator=(const T1&) const > [with > > T1 = Array<2, double, StencilEngine double, > > MultiPatchView, 2> > > >, int Dim = 2, T = > > double, EngineTag = MultiPatchView, 2>]' > > diffusion_test.cpp:105: instantiated from here > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1027: warning: member > > initializers for `ViewIndexer<2, 2> LayoutBaseViewData<2, 2, > > UniformGridLayout<2> >::indexer_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1010: warning: and > `long > > int > > LayoutBaseViewData<2, 2, UniformGridLayout<2> >::id_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will > be > > re-ordered to match declaration order > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1040: warning: member > > initializers for `bool LayoutBaseViewData<2, 2, > UniformGridLayout<2> > > >::subdomainsComputed_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:1021: warning: and ` > > GuardLayers<2> LayoutBaseViewData<2, 2, UniformGridLayout<2> > > >::internalGuards_m' > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:871: warning: will > be > > re-ordered to match declaration order > > /usr/local/cots/pooma/src/Engine/Stencil.h: In constructor > > `StencilIntersector::StencilIntersector(const > > Interval&, const Intersect&) [with int Dim = 2, Intersect = > > Intersector<2>]': > > diffusion_test.cpp:863: instantiated from `static int > > LeafFunctor >, > > ExpressionApply > >::apply(const Engine T, > > StencilEngine >&, const > > ExpressionApply >&) [with int D = 2, T = > > double, S = NinePtDiffusion, E = Array<2, double, > > MultiPatchView, 2> > > >, Intersect = Intersector<2>]' > > diffusion_test.cpp:2307: instantiated from `static int > > LeafFunctor, ExpressionApply >::apply(const > > Array&, const ExpressionApply&) [with int Dim = 2, > T = > > double, E = StencilEngine > MultiPatchView, 2> > >, Tag = > > IntersectorTag >]' > > diffusion_test.cpp:80: instantiated from `static > LeafFunctor > LeafTag>::Type_t ForEach::apply(const Expr&, const > > FTag&, const CTag&) [with Expr = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, FTag = > > ExpressionApply > >, CTag = > NullCombine]' > > diffusion_test.cpp:88: instantiated from `ForEach > CTag>::Type_t forEach(const Expr&, const FTag&, const CTag&) [with > Expr > > = Array<2, double, StencilEngine > MultiPatchView, 2> > > >, FTag = > > ExpressionApply > >, CTag = > > NullCombine]' > > diffusion_test.cpp:276: instantiated from `void > expressionApply(const > > A&, const Tag&) [with A = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Tag = > > IntersectorTag >]' > > diffusion_test.cpp:1914: instantiated from `void > > Evaluator::evaluate(const LHS&, const > Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, > double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:108: instantiated from `void > > Evaluator::evaluate(const LHS&, const Op&, const > RHS&) > > const [with LHS = Array<2, double, MultiPatchView > Remote, 2> >, RHS = Array<2, double, > > StencilEngine > MultiPatchView, 2> > > >, Op = OpAssign]' > > diffusion_test.cpp:2486: instantiated from `const Array E1>& > > assign(const Array&, const Array&, const > Op&) > > [with int Dim = 2, > > T = double, EngineTag = MultiPatchView, > 2>, > > int OtherDim = 2, OtherT = double, OtherEngineTag = > > StencilEngine > MultiPatchView, 2> > >, Op = OpAssign]' > > diffusion_test.cpp:2117: instantiated from `const Array > EngineTag>& Array::operator=(const T1&) const > [with > > T1 = Array<2, double, StencilEngine double, > > MultiPatchView, 2> > > >, int Dim = 2, T = > > double, EngineTag = MultiPatchView, 2>]' > > diffusion_test.cpp:105: instantiated from here > > /usr/local/cots/pooma/src/Engine/Stencil.h:844: warning: member > > initializers > > for `Intersector<2> StencilIntersector<2, Intersector<2> > > >::intersector_m' > > /usr/local/cots/pooma/src/Engine/Stencil.h:843: warning: and > > `Interval<2> > > StencilIntersector<2, Intersector<2> >::domain_m' > > /usr/local/cots/pooma/src/Engine/Stencil.h:788: warning: will be > > re-ordered > > to match declaration order > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > > member > > function `static void DomainTraits >::setDomain(int > > (&)[2], > > const T1&, const T2&) [with T1 = int, T2 = unsigned int]': > > /usr/local/cots/pooma/src/Domain/Interval.h:369: instantiated from > > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: > warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h: In static > > member > > function `static void DomainTraits >::setDomain(int > > (&)[2], > > const T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > > /usr/local/cots/pooma/src/Domain/Interval.h:377: instantiated from > > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Interval.h:264: > warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static > member > > function `static void DomainTraits >::setDomain(int > (&)[3], > > const > > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > > /usr/local/cots/pooma/src/Domain/Range.h:396: instantiated from > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h: In static > member > > function `static void DomainTraits >::setDomain(int > (&)[3], > > const > > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > > /usr/local/cots/pooma/src/Domain/Range.h:407: instantiated from > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Range.h:239: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static > member > > function > > `static void DomainTraits > >::setDomain(IndirectionList&, > > const > > T1&, const T2&) [with T1 = int, T2 = unsigned int]': > > /usr/local/cots/pooma/src/Domain/Grid.h:395: instantiated from > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h: In static > member > > function > > `static void DomainTraits > >::setDomain(IndirectionList&, > > const > > T1&, const T2&) [with T1 = int, T2 = long unsigned int]': > > /usr/local/cots/pooma/src/Domain/Grid.h:404: instantiated from > here > > /usr/local/cots/pooma/src/Domain/DomainTraits.Grid.h:245: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp: In copy > > constructor > > `Engine >::Engine(const > > Engine > T, MultiPatch >&) [with int Dim = 2, T = > double, > > LayoutTag = UniformTag, PatchTag = Remote]': > > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.h:992: > instantiated > > from `Engine > > >::Engine(const Engine >&, > > const Domain&) [with DT = DomainTraits >, int > Dim > > = 2, T = double, LayoutTag = UniformTag, PatchTag = Remote, > int > > Dim2 = 2]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1457: instantiated > > from `Array::Array(const Engine > EngineTag2>&, const Initializer&) [with int Dim2 = 2, T2 = double, > > EngineTag2 = MultiPatch >, Initializer = > > Interval<2>, int Dim = 2, T = double, EngineTag = > > MultiPatchView, 2>]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:676: instantiated > from > > `static Array >::newDim, T, > NewEngine > T1, E1>::Engine_t, Array::Domain_t>::Type_t::Tag_t> > > View0 >::make(const Array&) [with int > Dim > > = 2, T = double, EngineTag = MultiPatch > >]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:1910: instantiated > > from `AltView0 >::Type_t Array > EngineTag>::operator()() const [with int Dim = 2, T = double, > EngineTag > > = MultiPatch > > >]'/usr/local/cots/pooma/src/Engine/RemoteEngine.h:1909: > instantiated > > from `void > > Evaluator::evaluate(const LHS&, const > Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, RHS = Array<2, > double, > > ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from > `void > > Evaluator::evaluate(const LHS&, const Op&, const > RHS&) > > const [with LHS > > = Array<2, double, MultiPatch > >, RHS = > > Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from > `const > > Array& assign(const Array&, const T1&, const > > Op&) [with int Dim = 2, T = double, EngineTag = > MultiPatch > Remote >, T1 = double, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from > `const > > Array& Array::operator=(const > T1&) > > const [with T1 = double, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > > `Array& Array::operator=(const > > Array&) [with int Dim = 2, T = double, EngineTag > = > > MultiPatch >]' > > diffusion_test.cpp:77: instantiated from here > > /usr/local/cots/pooma/src/Engine/MultiPatchEngine.cpp:151: warning: > base > > class > > `class Observer >' should be explicitly > > initialized in > > the copy constructor > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member > function > > `int > > UniformGridLayoutData::globalID(const Loc&) const [with > int > > Dim = > > 2]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:472: instantiated > from > > `int LayoutBase::globalID(const Loc&) const [with int > Dim > > = 2, LBD = UniformGridLayoutData<2>]' > > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:758: > > instantiated from `T& RefCountedBlockPtr > Controller>::operator[](int) const [with T = Engine<2, double, > > Remote >, bool BoundsChecked = false, Controller = > > RefBlockController > >]' > > /usr/local/cots/pooma/src/Engine/RemoteEngine.h:458: instantiated > from > > `RemoteProxy Engine >::operator()(const > > Loc&) const [with int Dim = 2, T = double, Tag = Brick]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1367: instantiated > from > > `Engine::ElementRef_t Engine > MultiPatch >::operator()(const Loc&) const > > [with int Dim = 2, T = double, LayoutTag = UniformTag, PatchTag = > > Remote]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:166: instantiated > from > > `static Array::ElementRef_t > View1Implementation > T1, E1>, Domain, true>::make(const Array&, const S1&, > const > > S2&, const Combine&) [with > > S1 = long int, S2 = long int, Combine = > CombineDomainOpt > int, long int>, true>, int Dim = 2, T = double, EngineTag = > > MultiPatch >, Domain = Loc<2>]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:823: instantiated > from > > `static View1Implementation, NewDomain2 > Sub2>::SliceType_t, View2, Sub1, > Sub2>::sv>::Type_t > > View2, Sub1, Sub2>::make(const Array&, > > const Sub1&, const Sub2&) [with int Dim = 2, T = double, EngineTag = > > MultiPatch >, Sub1 = long int, > > Sub2 = long int]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:1926: instantiated > from > > `View2, Sub1, Sub2>::Type_t Array > EngineTag>::operator()(const Sub1&, const Sub2&) const [with Sub1 = > long > > int, Sub2 = long int, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Tulip/RemoteProxy.h:176: instantiated > from > > `RemoteProxy& RemoteProxy::operator=(const S&) [with S = > double, T > > = double]' > > diffusion_test.cpp:80: instantiated from here > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:2127: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h: In member > function > > `int > > UniformGridLayoutData::touches(const OtherDomain&, OutIter, > > const > > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > > std::back_insert_iterator, Interval<2> > >, > > std::allocator, Interval<2> > > > >, ConstructTag = > > TouchesConstructNodeObj, int Dim = 2]': > > /usr/local/cots/pooma/src/Layout/LayoutBase.h:641: instantiated > from > > `int LayoutBase::touches(const OtherDomain&, OutIter, > const > > ConstructTag&) const [with OtherDomain = Range<2>, OutIter = > > std::back_insert_iterator, Interval<2> >, > > std::allocator, Interval<2> > > > >, ConstructTag = > > TouchesConstructNodeObj, int Dim = 2, LBD = > UniformGridLayoutData<2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:703: instantiated > from > > `int LayoutBase::touches(const OtherDomain&, OutIter) > const > > [with OtherDomain > > = Range<2>, OutIter = > > std::back_insert_iterator, Interval<2> >, > > std::allocator, Interval<2> > > > >, int Dim = 2, LBD > = > > UniformGridLayoutData<2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:942: instantiated > from > > `int LayoutBaseViewData::touches(const OtherDomain&, > > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > > OutIter = std::back_insert_iterator, > > std::allocator > > >, ConstructTag = > TouchesConstructINode<2>, > > int Dim = 2, int Dim2 = 2, L = UniformGridLayout<2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:1285: instantiated > from > > `int LayoutBaseView::touches(const OtherDomain&, > > OutIter, const ConstructTag&) const [with OtherDomain = Interval<2>, > > OutIter = std::back_insert_iterator, > > std::allocator > > >, ConstructTag = > TouchesConstructINode<2>, > > int Dim = 2, int Dim2 = 2, lvd = UniformGridLayoutViewData<2, 2>]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:333: instantiated > from > > `void IntersectorData::touches(const Layout&) [with Layout = > > UniformGridLayoutView<2, 2>, int Dim = 2]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:171: instantiated > from > > `bool IntersectorData::intersect(const Engine&, const > > GuardLayers&) [with Engine = Engine<2, double, > > MultiPatchView, 2> >, int Dim2 = 2, int > Dim = > > 2]' > > /usr/local/cots/pooma/src/Engine/Intersector.h:440: instantiated > from > > `bool Intersector::intersect(const Engine&, const > > GuardLayers&) [with Engine > > = Engine<2, double, MultiPatchView, 2> >, > int > > Dim2 = 2, int Dim = 2]' > > /usr/local/cots/pooma/src/Array/Array.h:1729: instantiated from > > `static int LeafFunctor > PatchTag, Dim2> >, ExpressionApply > > > >::applyHandler(const Engine PatchTag, > > Dim2> >&, const ExpressionApply >&, const > > WrappedInt<1>&) [with int Dim = 2, T = double, LT = UniformTag, > PatchTag > > = Remote, int BD = 2, Intersect = Intersector<2>]' > > /usr/local/cots/pooma/src/Array/Array.h:1716: instantiated from > > `static int LeafFunctor > PatchTag, Dim2> >, ExpressionApply > > > >::apply(const Engine Dim2> > > >&, const ExpressionApply >&) [with int > Dim = > > 2, T = double, LT = UniformTag, PatchTag = Remote, int > > BD = 2, Intersect = Intersector<2>]' > > /usr/local/cots/pooma/src/Array/Array.h:2307: instantiated from > > `static int LeafFunctor, ExpressionApply > > >::apply(const Array&, const ExpressionApply&) > [with > > int Dim = 2, T = double, E = MultiPatchView Remote, > > 2>, Tag = IntersectorTag >]' > > /usr/local/cots/pooma/src/Array/Array.h:80: instantiated from > `static > > LeafFunctor::Type_t ForEach > CTag>::apply(const Expr&, const FTag&, const CTag&) [with Expr = > > Array<2, double, MultiPatchView > Remote, 2> >, FTag = > > ExpressionApply > >, CTag = > NullCombine]' > > /usr/local/cots/pooma/src/Array/Array.h:88: instantiated from > > `ForEach::Type_t forEach(const Expr&, const FTag&, > > const CTag&) [with Expr = Array<2, double, > MultiPatchView > Remote, 2> >, FTag = > > ExpressionApply > >, CTag = > NullCombine]' > > /usr/local/cots/pooma/src/Array/Array.h:276: instantiated from > `void > > expressionApply(const A&, const Tag&) [with A = Array<2, double, > > MultiPatchView, 2> >, Tag = > > IntersectorTag >]' > > /usr/local/cots/pooma/src/Array/Array.h:1913: instantiated from > `void > > Evaluator::evaluate(const LHS&, const > Op&, > > const RHS&) const [with LHS = Array<2, double, > > MultiPatchView, 2> >, > > RHS = Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:108: instantiated from > `void > > Evaluator::evaluate(const LHS&, const Op&, const > RHS&) > > const [with LHS > > = Array<2, double, MultiPatch > >, RHS = > > Array<2, double, ConstantFunction>, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2504: instantiated from > `const > > Array& assign(const Array&, const T1&, const > > Op&) [with int Dim = 2, T = double, EngineTag = > MultiPatch > Remote >, T1 = double, Op = OpAssign]' > > /usr/local/cots/pooma/src/Array/Array.h:2117: instantiated from > `const > > Array& Array::operator=(const > T1&) > > const [with T1 = double, int Dim = 2, T = double, EngineTag = > > MultiPatch >]' > > /usr/local/cots/pooma/src/Array/Array.h:2105: instantiated from > > `Array& Array::operator=(const > > Array&) [with int Dim = 2, T = double, EngineTag > = > > MultiPatch >]' > > diffusion_test.cpp:77: instantiated from here > > /usr/local/cots/pooma/src/Layout/UniformGridLayout.h:297: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Partition/DistributedMapper.h: In member > > function > > `void DistributedMapper::map(const > > std::vector, > > Interval >*, std::allocator, > Interval > > >*> >&) > > const [with int Dim = 2]': > > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > > instantiated from here > > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:68: warning: > > comparison > > between signed and unsigned integer expressions > > /usr/local/cots/pooma/src/Partition/BisectionMapper.h: In member > > function `void > > BisectionMapper::map(const std::vector, > > Interval >*, std::allocator, > Interval > > >*> >&) > > const [with int Dim = 2]': > > /usr/local/cots/pooma/src/Partition/DistributedMapper.h:86: > > instantiated from > > `void DistributedMapper::map(const > std::vector, > > Interval >*, std::allocator, Interval > >*> > > >&) const [with int Dim = 2]' > > /usr/local/cots/pooma/src/Utilities/RefCountedBlockPtr.h:411: > > instantiated from here > > /usr/local/cots/pooma/src/Partition/BisectionMapper.h:86: warning: > > comparison > > between signed and unsigned integer expressions > > > From gtalbot at locuspharma.com Fri Apr 25 16:55:40 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 12:55:40 -0400 Subject: ICC .conf file for Linux for 2.4.0? In-Reply-To: References: Message-ID: <553d1d358f229cdc9e140fe91d21ba673ea96867@locuspharma.com> Richard, I was perusing the archives and I saw a message where you talked about the compiler options needed to get decent performance out of ICC w/POOMA. Do you have a LINUXicc.conf file or similar that I can drop into my config/arch directory to try to get POOMA 2.4.0 compiled w/ICC? Thanks. --George From gtalbot at locuspharma.com Fri Apr 25 17:24:07 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 13:24:07 -0400 Subject: [pooma-dev] ICC .conf file for Linux for 2.4.0? In-Reply-To: <553d1d358f229cdc9e140fe91d21ba673ea96867@locuspharma.com> References: <553d1d358f229cdc9e140fe91d21ba673ea96867@locuspharma.com> Message-ID: <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> Nevermind. I just got it from CVS. I don't know why I didn't look there first... I'm moving a little slow today. My stupid cat woke me at 4am and I couldn't get back to sleep. ;^) --George On Fri, 2003-04-25 at 12:55, George Talbot wrote: > Richard, > > I was perusing the archives and I saw a message where you talked about > the compiler options needed to get decent performance out of ICC > w/POOMA. > > Do you have a LINUXicc.conf file or similar that I can drop into my > config/arch directory to try to get POOMA 2.4.0 compiled w/ICC? > > Thanks. > > --George > From gtalbot at locuspharma.com Fri Apr 25 18:03:51 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 14:03:51 -0400 Subject: ICC and POOMA--versions, CHEETAH, MM, MPICH? In-Reply-To: <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> References: <553d1d358f229cdc9e140fe91d21ba673ea96867@locuspharma.com> <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> Message-ID: I think I'm probably driving everyone on this list crazy at this point. ;%) Sorry about that. Can somebody give me a quick how-to to help me get this stuff compiled with ICC? What versions of POOMA, CHEETAH, MM and MPICH should I be using? What options do I need to pass to configure for each of these to compile properly with ICC? I'm trying to use ICC 7.1 downloaded today from Intel. Thanks in advance. I'll owe somebody a case of tastykakes. --George From renard1 at llnl.gov Fri Apr 25 18:37:05 2003 From: renard1 at llnl.gov (Paul A. Renard) Date: Fri, 25 Apr 2003 11:37:05 -0700 Subject: [pooma-dev] ICC and POOMA--versions, CHEETAH, MM, MPICH? In-Reply-To: References: <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> <553d1d358f229cdc9e140fe91d21ba673ea96867@locuspharma.com> <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> Message-ID: <5.1.0.14.2.20030425112250.00aa1458@popout.llnl.gov> An HTML attachment was scrubbed... URL: From gtalbot at locuspharma.com Fri Apr 25 18:52:45 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 25 Apr 2003 14:52:45 -0400 Subject: [pooma-dev] ICC and POOMA--versions, CHEETAH, MM, MPICH? In-Reply-To: <5.1.0.14.2.20030425112250.00aa1458@popout.llnl.gov> References: <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> <553d1d358f229cdc9e140fe91d21ba673ea96867@locuspharma.com> <13169ad8c2f8f75eeeeeeb5d8fc4d6ca3ea96f11@locuspharma.com> <5.1.0.14.2.20030425112250.00aa1458@popout.llnl.gov> Message-ID: <09ffd715a746cefcc5cb7c0fc929e4fb3ea983d7@locuspharma.com> Thanks for the info. Is that what you're using now, the modified version of icc? Now when I downloaded the POOMA tarfile, it didn't have a LINUXICC.conf file in the config/arch directory. Are you using POOMA from CVS? Also, what did you have to do to compile CHEETAH properly? What version of that are you using and where did you get it? Sorry for all the basic questions, but this stuff has been a bit hard to assemble. Thanks. --George On Fri, 2003-04-25 at 14:37, Paul A. Renard wrote: > George: > > I compile pooma-2.4.0 with: > configure --arch LINUXICC --opt --suite LINUXicc-opt > > setenv POOMASUITE LINUXicc-opt > > make > > this makes an optimized (no exceptions) version. > > By the way, I reported about a month ago some trouble I was having > with icc. It was not producing code as good as KCC. However, after > sending POOMA, and my test problem to Intel, they were able to match > the run time performance of KCC-produced code, but they needed to make > some compiler tweaks which they promise will be included in icc 8.0 > I was seeing about a 4X slowdown with icc, which had nothing to do > with compiler switches, it had do to with placement new not being > declared inline in the icc distribution, icc's failure to elide no-op > destructors, and possible failure to elide no-op constructors. The > compiler people claim that version 8.0 will produce code as good as > KCC, but be ready for somewhat disappointing results with 7.1 > > -Paul > > At 02:03 PM 4/25/2003 -0400, you wrote: > > I think I'm probably driving everyone on this list crazy at this > > point. > > ;%) Sorry about that. > > > > Can somebody give me a quick how-to to help me get this stuff > > compiled > > with ICC? What versions of POOMA, CHEETAH, MM and MPICH should I be > > using? What options do I need to pass to configure for each of > > these to > > compile properly with ICC? I'm trying to use ICC 7.1 downloaded > > today > > from Intel. > > > > Thanks in advance. I'll owe somebody a case of tastykakes. > > > > --George From rguenth at tat.physik.uni-tuebingen.de Sat Apr 26 09:31:19 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Sat, 26 Apr 2003 11:31:19 +0200 (CEST) Subject: compilers and speed Message-ID: Hi! I decided to just sum up what I do to get the most performance out of POOMA. First, I use POOMA from CVS (that has bugfixes and support for ISO conforming compilers) and cheetah with SCore MPI. To go anywhere near hand-coded performance for simple Brick arrays, I need to use recent gcc-3.3 with at least -O2 -funroll-loops --param min-inline-insns=250, of course selecting the right -march and perhaps -ffast-math helps in some cases. Intel icc is disappointing in performance, but I didnt try using profile-directed optimization with it. Performace compared to hand-coded loops is on-par as soon as you're going out of L2 cache, within cache dont expect anything good from POOMA. The real advantage of POOMA for single Brick arrays is the possibility to adjust loop processing for cache optimality (i.e. do handcrafted "multipatching" inside the evaluators) - still on my todo-list. I never had KAI CC available to compare its performance, but I cannot confirm that IRIX CC does a good job on optimizing POOMA. I hope Intel icc will solve its problems, as then _very_ simple OpenMPization (I've done it) can be applied to POOMA as well. Hope, this answers most of the questions, Richard. From gtalbot at locuspharma.com Mon Apr 28 13:00:04 2003 From: gtalbot at locuspharma.com (George Talbot) Date: 28 Apr 2003 09:00:04 -0400 Subject: [pooma-dev] compilers and speed In-Reply-To: References: Message-ID: <2f1b17038ef3123f35dfbeac2765bab03ead2594@locuspharma.com> Wow! Now that's really good information! Thank you very much. May I ask two additional questions? Do you have a particular snapshot of GCC 3.3 that works well? Did you get it in binary form or did you build it yourself? Thanks. --George On Sat, 2003-04-26 at 05:31, Richard Guenther wrote: > Hi! > > I decided to just sum up what I do to get the most performance out of > POOMA. First, I use POOMA from CVS (that has bugfixes and support for > ISO conforming compilers) and cheetah with SCore MPI. To go anywhere > near hand-coded performance for simple Brick arrays, I need to use > recent gcc-3.3 with at least -O2 -funroll-loops --param > min-inline-insns=250, of course selecting the right -march and perhaps > -ffast-math helps in some cases. Intel icc is disappointing in > performance, but I didnt try using profile-directed optimization with it. > > Performace compared to hand-coded loops is on-par as soon as you're going > out of L2 cache, within cache dont expect anything good from POOMA. > > The real advantage of POOMA for single Brick arrays is the possibility to > adjust loop processing for cache optimality (i.e. do handcrafted > "multipatching" inside the evaluators) - still on my todo-list. > > I never had KAI CC available to compare its performance, but I cannot > confirm that IRIX CC does a good job on optimizing POOMA. I hope Intel > icc will solve its problems, as then _very_ simple OpenMPization (I've > done it) can be applied to POOMA as well. > > Hope, this answers most of the questions, > > Richard. > From rguenth at tat.physik.uni-tuebingen.de Mon Apr 28 14:15:31 2003 From: rguenth at tat.physik.uni-tuebingen.de (Richard Guenther) Date: Mon, 28 Apr 2003 16:15:31 +0200 (CEST) Subject: [pooma-dev] compilers and speed In-Reply-To: <2f1b17038ef3123f35dfbeac2765bab03ead259b@locuspharma.com> Message-ID: On 28 Apr 2003, George Talbot wrote: > Wow! Now that's really good information! Thank you very much. > > May I ask two additional questions? Do you have a particular snapshot > of GCC 3.3 that works well? Did you get it in binary form or did you > build it yourself? I build 3.3 from CVS about every day or two ;) Sofar I havent experienced problems with any of them. Richard. -- Richard Guenther WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/ From oldham at codesourcery.com Mon Apr 28 18:23:43 2003 From: oldham at codesourcery.com (Jeffrey D. Oldham) Date: Mon, 28 Apr 2003 11:23:43 -0700 Subject: Patch: Tulip: Move Toward ISO C++ Message-ID: <3EAD71AF.8090307@codesourcery.com> Move some code closer to ISO C++ by adding qualifications: 2003-Apr-28 Jeffrey D. Oldham * RemoteProxy.h (RemoteProxy::RemoteProxy): Specify the class for the function pointer to move toward ISO C++ standard. * SendReceive.h (ReceiveIterate::run): Likewise. Approved by Richard Guenther. Tested on Linux, gcc 3.4 by compiling and running Tulip tests. Thanks, Jeffrey D. Oldham oldham at codesourcery.com -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: tulip.25Apr.11.3.patch URL: From mark at codesourcery.com Wed Apr 30 05:55:34 2003 From: mark at codesourcery.com (Mark Mitchell) Date: Tue, 29 Apr 2003 22:55:34 -0700 Subject: New mailing list archives Message-ID: <200304300555.h3U5tYTR017457@minax.codesourcery.com> The POOMA mailing list archives have been converted to an easier-to-use format, and are now found at: http://www.codesourcery.com/archives/pooma-dev/maillist.html The links to the malining list archives on the POOMA web site have been updated. -- Mark Mitchell CodeSourcery, LLC mark at codesourcery.com