<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">ugh, you guys really get all over the map  :-)<div><br></div><div>I think we donít drift too far from the benchmark we are looking to track behind, which is really HPL.  Our hope is that HPCG is eventually buried once the primary actors have gotten their publications.</div><div><br></div><div></div><blockquote type="cite"><div>"HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers"</div><div><br></div><div><br></div><div><br>"The HPL software package requires the availibility on your system of an implementation of the Message Passing Interface MPI (1.1 compliant). An implementation of either the Basic Linear Algebra Subprograms BLAS or the Vector Signal Image Processing Library VSIPL is also needed. Machine-specific as well as generic implementations of MPI, the BLAS and VSIPL are available for a large variety of systems."</div></blockquote><div><br></div><div><br></div><div>I think we should have as simple a primary designation.  OpenMP3.1 seems reasonable now to add.  MPI-1.1 standard, I donít think we need BLAS anywhere. I suspect that vendors are already very well motivated to deliver a competent BLAS, and if not ATLAS can find it for a platform.  But a killer BLAS doesnít help us very much.  I donít think putting a VSIPL helps us much either.  We can be even more portable than HPL really.  Everyone has a C compiler I think.</div><div><br></div><div>I would be open to adding Vectors if we can abstract the Vector programming requirements in HPGMG with an unified, if small API.  For this I think we look at the superset of operations for several current and recent past platforms.  So, VEC2FMA, VEC2ADD, VEC4FMA as macros and people can help us populate this HPGMGVector.h head file with their platform specifics. default implementations are just regular operations in C.  Adding a new benchmark intrinsic means adding the default C implementation as as many vendor specific intrinsics as the developer knows.  For instance, we might want to also put ARM VFP instructions in here if we can get an AMR VFP processor in house to play with.  We probably want SSE, AVX, QPX, VFP, C.    A configuration parameter might let us create a compiler benchmark by making all our vector code drop to C and watch how the native compiler handles things.  </div><div><br></div><div>I would think every time a new machine and students show up they will try several compilers natively, and our vectors, and show up at a conference and tell us about it., thus creating the correct public shaming motivation while still allowing the same team to augment our vector set and show how well the machine can do.</div><div><br></div><div>Iím wondering where users can insert heterogeneity in the executionÖwhich seems a big coming issue.</div><div><br></div><div>Brian</div><div><br></div><div><br></div><div> <br><div><div>On Apr 30, 2014, at 9:05 AM, Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Sam Williams <<a href="mailto:swwilliams@lbl.gov">swwilliams@lbl.gov</a>> writes:<br><br><blockquote type="cite">For HPL, the website just has the reference implementation but links<br>to optimized BLAS.  The reality is its very unlikely every vendor<br>optimizing for HPGMG will contribute to the repo and give up IP<br>ownership.  As such, optimized becomes a sliding scale.  There is<br>optimized in the repo and there's the optimized from the vendor.<br></blockquote><br>I don't foresee "standard" libraries of HPGMG spice, but perhaps that is<br>a viable mechanism.  I would like there to be a way for users to<br>reproduce vendor-provided numbers _after_ The List is released.<br>(Otherwise people have to blindly trust the committee.  I'd rather<br>empower the public to "trust but verify".)  Mark was interested in a way<br>to make the source code accessible eventually.  I wonder if there is a<br>way to swing that (perhaps with a special license).<br><br><blockquote type="cite">I also think that like BLAS, the optimized (architecture-specific)<br>HPGMG code needs to be self-contained and not sprinkled throughout.  I<br>don't want porting to a new architecture becoming a search for every<br>instance of __bgq__, __x86__, __mic__ ... to make sure you've found<br>every routine.<br></blockquote><br>In HPGMG-FE, the restriction and prolongation has been pretty good<br>without further trickery, so the two parts that need optimization are<br>tensor contraction and the pointwise element kernel.  The main reason<br>tensor contraction is "generic" now is so that it can be reused between<br>different operators, but once we pin down an operator, there is no<br>reason not to group it back into one file.  My intent was that at the<br>end of the day, there would be one file containing optimization for each<br>architecture.  It is already set up so that new source files are<br>automatically registered.<br>_______________________________________________<br>HPGMG-Forum mailing list<br><a href="mailto:HPGMG-Forum@hpgmg.org">HPGMG-Forum@hpgmg.org</a><br>https://hpgmg.org/lists/listinfo/hpgmg-forum<br></blockquote></div><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><div><div><font class="Apple-style-span" face="'Courier New'">Brian Van Straalen         Lawrence Berkeley Lab</font></div><div><font class="Apple-style-span" face="'Courier New'"><a href="mailto:BVStraalen@lbl.gov">BVStraalen@lbl.gov</a>         Computational Research</font></div><div><font class="Apple-style-span" face="'Courier New'">(510) 486-4976             Division (<a href="http://crd.lbl.gov">crd.lbl.gov</a>)</font></div></div><div><br></div><div><br></div></span><br class="Apple-interchange-newline">
</div>
<br></div></body></html>