---------------------------------------------------------------------- Software Coordinating Committee Conference Call July 27, 2001 2:00 PM EDT Recorder: C. DeTar Present: Mendez, Holmgren, Simone, Mawhinney, DeTar, Edwards, Brower, Pochinski Absent: Watson ** = action required Main agenda item: Linear Algebra API Hierarchy of API for discussion: Level 1: Single site and MPI message passing Level 2a: Aggregate (lattice-wide) Level 2b: Aggregate plus communications Level 3: Inverters Do we want to use C++? Robert: Will we be compiling libaries in C++ and apps in C? Then structures and classes are not guaranteed to be stored consistently. Mawhinney: Should we be adopting C++ in the first place? It is the industry standard, now. DeTar: C++ has better software engineering features, so spares us the risks of writing complex arithmetic in matrix times vector routines using clumsy macro calls. With templates we don't have to supply separate complex arithmetic primitives and su3_matrix and vector classes for singles and doubles. The real choice is dictated by what method saves labor in the long run. Pochinski: Which C++ compiler? They differ. Mawhinney: ANSI DeTar: At the lowest level we strive to use only limited common denominator C++ features. Brower: Bottom layers - use C; Higher layers C++ DeTar: But it is really all C++ - use minimal C++ at lower levels to assure pluggability of assembly code. Simone: Problems with name mangling. DeTar: Would use extern "C", so no overloading at lower levels. Mawhinnery: Would like to use C++ to allow operations between generalized classes of matrices and vectors Edwards: This introduces inefficiencies. Mawhinney: Optimization efforts should be focused on aggregate operations (acting on whole lattice). The level 1 code is not the main issue. Probably need to write interfaces to things like the Dirac operator that involve data remapping. ** Questions to resolve 1. What does the interface look like to the user? A call with pointers to C++ classes or C structures? Perhaps provide a different header for the two choices. 2. Do we pass classes to the level 2 interface -- classes that include information about storage order, or do we assume a storage order? If the latter, we will have to do remapping. ** Discuss these issues with our colleagues. Next call on July 30, 31 to continue discussion, time to be announced. Call concluded at 4:00 PM EDT.