From 51eb598553e25b660d45617ff4712c74fd146a78 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 29 Nov 2011 12:47:35 +0000 Subject: [PATCH] psblas3 base/serial/README.serial base/serial/psi_serial_impl.f90 Obsolete README. Added comment to serial_impl. --- base/serial/README.serial | 65 --------------------------------- base/serial/psi_serial_impl.f90 | 11 ++++++ 2 files changed, 11 insertions(+), 65 deletions(-) delete mode 100644 base/serial/README.serial diff --git a/base/serial/README.serial b/base/serial/README.serial deleted file mode 100644 index fccd5567..00000000 --- a/base/serial/README.serial +++ /dev/null @@ -1,65 +0,0 @@ -Most of the subdirectories here contain material that was originally -distributed through the serial sparse blas SPARKER project, plus a -number of extensions of our own design. The original file spblas.f can -be downloaded from matisa.cc.rl.ac.uk; of course any bugs in our -implementation are our own to fix. - -The main reference for the serial -sparse BLAS is: -Duff, I., Marrone, M., Radicati, G., and Vittoli, C. -Level 3 basic linear algebra subprograms for sparse matrices: a user -level interface -ACM Trans. Math. Softw., 23(3), 379-401, 1997. - -We also include SMMP by Randolph E. Bank and -Craig C. Douglas na.bank@na-net.ornl.gov and -na.cdouglas@na-net.ornl.gov; we wrapped it in a Fortran 95 interface -with dynamic memory allocation. - - - -How do you add a new storage format? Here is your checklist. -1. You have to invent a name for it, a name that can fit into 3 - letters. -2. You have to decide whether you need fields into INFOA() for it, and - invent their names/positions accordingly. -3. You have to add an estimate (as good as possible) for the memory - occupation into psb_cest. -4. You have to be able to generate it. For our purposes, the minimum - effort that still meets the requirements is the ability to convert - to/from COOrdinate; the relevant code (properly encapsulated in - subroutines) should be added into psb_spcnv; you can take Xcocr as - the model. You may or may not be able to do it "in place"; - ipcoo2csr & friends do just that; if you can, please add it because - it may come in handy. -5. If you need to sort entries, it usually better to use imsrx than - isrx. This is because coefficients lists are likely to contain - multiple ordered sublists ("runs"), and the merge sort algorithm - implemented in imsrx is capable of taking advantage of them, - whereas the isrx quicksort cannot. -6. You have to be able to convert it back to COOrdinate. This is - usually not hard, because the code that does the MV multiply is - already (maybe implicitly) walking through the coefficients while - keeping track of both row and column index, thus it suffices to - copy them as you meet them, and then call psb_fixcoo (which sorts - and compacts the output) on the result. -7. You have to embed the MV and SV codes in the infrastructure; this - is done first in the xSWMM and xSWSM routines that do a select on - the FIDA value. Below this level you're free to do as you please. -8. You have to extend the output capability of psb_Xcsprt. Again this - is easy for the same reasons as in 6. -9. You have to extend psb_Xcsrws for DIAG preconditioner. -10. Provide an UPDATE functionality, and add it to psb_update_mod; - currently JAD is out of this. -11. You have to provide the query facilities used in PSB_XSPINFO - (included in base/modules/psb_spmat_type). -12. You have to provide the functionality to extract a block of - rows in psb_getrow_mod.f90. This is used in the GETROW/GETBLK/CLIP - chain; GETROW is (all that is) used by the ILU factorization. -13. You have to provide the GETDIAG functionality. -14. RWEXTD: what do we do here? Should we switch to/from COO????? - The current interface is ugly! -15. CSC is currently a second class citizen; it is only needed for - interfacing UMFPACK in the mld2p4 preconditioners. - -Is this complete? I sure hope so.... \ No newline at end of file diff --git a/base/serial/psi_serial_impl.f90 b/base/serial/psi_serial_impl.f90 index 06eef845..24ee863d 100644 --- a/base/serial/psi_serial_impl.f90 +++ b/base/serial/psi_serial_impl.f90 @@ -29,6 +29,17 @@ !!$ POSSIBILITY OF SUCH DAMAGE. !!$ !!$ +! +! Gather/scatter routines for implementing halo/ovrl communication. +! +! +! +! Gather: Y = beta * Y + alpha * X(IDX(:)) +! +! +! Scatter: +! Y(IDX(:)) = beta*Y(IDX(:)) + X(:) +! subroutine psi_igthv(n,idx,alpha,x,beta,y) use psb_const_mod