I did some checking this weekend, and found oshmem still lacking:

1. Fortran support clearly had not been tested at all -- it flat-out didn't 
compile/didn't work:
   - The wrapper compilers still referred to "f77" and "f90"
   - The wrapper compiler data files were just plain incorrect
   - If Fortran was disabled in MPI, Bad Things happened
   - I don't see a Fortran version of shmem_init() -- isn't there supposed to 
be one?  (I don't know much/anything about shmem, so I could be wrong here).  
   - ...and others

2. Static linking of shmem applications seems to be broken.

3. I noticed that config/oshmem_configure_options.m4 is setting openib_* 
environment variables.  
   - Such env variables should be prefixed with oshmem_
   - I thought we had agreed to call all new "openib" things "verbs" (or MXM or 
whatever)... the name "openib" is waaaay obsolete.  We might not be able to 
change some of those names in the OMPI layer for backwards compatibility 
reasons, but let's not continue to propagate this ancient/outdated name
   - Why aren't these checks in component .m4 files?  I thought one of the key 
issues was that the oshmem layer was not going to depend on IB/verbs/MXM/etc. 
and actually be a vendor-neutral code base.

4. The wrapper compiler data file for shmemcc was as broken (i.e., out of date) 
as the fortran wrapper data files.

---

I just committed the following changes in r29165, but more work needs to be 
done:

1. Per my previous email, I renamed all "f77" and "f90" directory/file names to 
"fortran" (including removing shmemf77 / shmemf90 wrapper compilers and 
replacing them with "shmemfort").

2. Fixed several Fortran coding errors.

3. Removed lots of old/stale comments that were clearly the result of copying 
from the OMPI layer and then not cleaning up afterwards (i.e., the comments 
were wholly inaccurate in the oshmem layer).

4. Removed both redundant and harmful code from oshmem_config.h.in.

5. Temporarily slave building the oshmem Fortran bindings to 
--enable-mpi-fortran.  This doesn't seem like a good long-term solution, but at 
least you can now build all Fortran bindings (MPI + oshmem) or not.  

Note that I did *not* do an exhaustive review of the oshmem layer.  I just 
tried to build the Fortran stuff, found it broken, and basically did a limited 
breadth-first search from there to see what needed to be fixed to get the 
Fortran interfaces fixed. I found a few other things along the way, but don't 
claim that it is anywhere near comprehensive.

-----

*** WORK THAT STILL NEEDS TO BE DONE:

1. See my comment in config/oshmem_configure_options.m4.

2. Add shmem examples in examples/ directory.

3. Clean up the openib_* env variable names, and potentially move all 
verbs-related tests to component .m4 files.

4. Fix static linking of shmem applications.

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/

Reply via email to