diff --git a/.VERSION b/.VERSION new file mode 100644 index 00000000..1263e476 --- /dev/null +++ b/.VERSION @@ -0,0 +1,12 @@ +$Format:%d%n%n$ +# Fall back version, probably last release: +3.9.0 + +# PSBLAS version file. +# +# Release archive created from commit: +# $Format:%H %d$ +# $Format:Created on %ci by %cN, and$ +# $Format:signed by %GS using %GK.$ +# $Format:Signature status: %G?$ +$Format:%GG$ diff --git a/.gitignore b/.gitignore index 7227f784..d190e4c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.a *.o *.mod +*.smod *~ # header files generated diff --git a/CMakeLists.txt b/CMakeLists.txt index b6257a88..48495799 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -430,7 +430,11 @@ endif() #--------------------------------------- # Link order, left to right: +<<<<<<< HEAD # cbind.a, util.a krylov.a prec.a base.a +======= +# cbind.a, util.a linsolve.a prec.a base.a +>>>>>>> cmake2 include(${CMAKE_CURRENT_LIST_DIR}/base/CMakeLists.txt) @@ -515,6 +519,7 @@ target_include_directories(prec PUBLIC $) target_link_libraries(prec PUBLIC base) +<<<<<<< HEAD include(${CMAKE_CURRENT_LIST_DIR}/krylov/CMakeLists.txt) add_library(krylov ${krylov_source_files}) set_target_properties(krylov @@ -528,6 +533,21 @@ target_include_directories(krylov PUBLIC $ $) target_link_libraries(krylov PUBLIC base prec) +======= +include(${CMAKE_CURRENT_LIST_DIR}/linsolve/CMakeLists.txt) +add_library(linsolve ${linsolve_source_files}) +set_target_properties(linsolve + PROPERTIES + Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules" + POSITION_INDEPENDENT_CODE TRUE + OUTPUT_NAME psb_linsolve + LINKER_LANGUAGE Fortran + ) +target_include_directories(linsolve PUBLIC + $ + $) +target_link_libraries(linsolve PUBLIC base prec) +>>>>>>> cmake2 include(${CMAKE_CURRENT_LIST_DIR}/ext/CMakeLists.txt) @@ -644,7 +664,11 @@ target_include_directories(cbind PUBLIC $ # Path for building $ # Path for installation ) +<<<<<<< HEAD target_link_libraries(cbind PUBLIC base prec krylov ext util) +======= +target_link_libraries(cbind PUBLIC base prec linsolve ext util) +>>>>>>> cmake2 # Custom command to copy all header files @@ -706,13 +730,21 @@ if(MPI_FOUND) endif() +<<<<<<< HEAD foreach(lib base prec krylov ext util cbind) +======= + foreach(lib base prec linsolve ext util cbind) +>>>>>>> cmake2 target_link_libraries(${lib} PUBLIC ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES}) endforeach() endif() if(OpenCoarrays_FOUND) +<<<<<<< HEAD foreach(lib base prec krylov ext util cbind) #TODO: check if cbind goes here! +======= + foreach(lib base prec linsolve ext util cbind) #TODO: check if cbind goes here! +>>>>>>> cmake2 target_link_libraries(${lib} PUBLIC OpenCoarrays::caf_mpi_static) endforeach() endif() @@ -731,7 +763,11 @@ install(DIRECTORY "${CMAKE_BINARY_DIR}/include" DESTINATION "include" install(DIRECTORY "${CMAKE_BINARY_DIR}/modules" DESTINATION "modules" FILES_MATCHING PATTERN "*.mod") +<<<<<<< HEAD install(TARGETS base prec krylov ext util cbind +======= +install(TARGETS base prec linsolve ext util cbind +>>>>>>> cmake2 EXPORT ${CMAKE_PROJECT_NAME}-targets DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" diff --git a/Make.inc.in b/Make.inc.in index 858ad336..a62abd50 100755 --- a/Make.inc.in +++ b/Make.inc.in @@ -67,6 +67,12 @@ UTILMODNAME=@UTILMODNAME@ CBINDLIBNAME=libpsb_cbind.a +OACCD=@OACCD@ +OACCLD=@OACCLD@ +FCOPENACC=@FCOPENACC@ +CCOPENACC=@CCOPENACC@ +CXXOPENACC=@CXXOPENACC@ + CUDAD=@CUDAD@ CUDALD=@CUDALD@ LCUDA=@LCUDA@ @@ -74,14 +80,18 @@ LCUDA=@LCUDA@ SPGPU_LIBS=@SPGPU_LIBS@ CUDA_DIR=@CUDA_DIR@ -CUDA_DEFINES=@CUDA_DEFINES@ CUDA_INCLUDES=@CUDA_INCLUDES@ CUDA_LIBS=@CUDA_LIBS@ CUDA_VERSION=@CUDA_VERSION@ CUDA_SHORT_VERSION=@CUDA_SHORT_VERSION@ +CUDA_DEFINES=@CUDA_DEFINES@ +FCUDEFINES=@FCUDEFINES@ +CCUDEFINES=@CCUDEFINES@ +CXXCUDEFINES=@CXXCUDEFINES@ NVCC=@CUDA_NVCC@ CUDEFINES=@CUDEFINES@ + .SUFFIXES: .cu .cu.o: $(NVCC) $(CINCLUDES) $(CDEFINES) $(CUDEFINES) -c $< diff --git a/Makefile b/Makefile index 95f4cb17..18970b8f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ include Make.inc -all: dirs based precd kryld utild cbindd extd $(CUDAD) libd +all: dirs based precd linslvd utild cbindd extd $(CUDAD) $(OACCD) libd @echo "=====================================" @echo "PSBLAS libraries Compilation Successful." @@ -11,28 +11,31 @@ dirs: precd: based utild: based -kryld: precd +linslvd: precd extd: based cudad: extd -cbindd: based precd kryld utild +oaccd: extd +cbindd: based precd linslvd utild -libd: based precd kryld utild cbindd extd $(CUDALD) +libd: based precd linslvd utild cbindd extd $(CUDALD) $(OACCLD) $(MAKE) -C base lib $(MAKE) -C prec lib - $(MAKE) -C krylov lib + $(MAKE) -C linsolve lib $(MAKE) -C util lib $(MAKE) -C cbind lib $(MAKE) -C ext lib cudald: cudad $(MAKE) -C cuda lib +oaccld: oaccd + $(MAKE) -C openacc lib based: $(MAKE) -C base objs precd: $(MAKE) -C prec objs -kryld: - $(MAKE) -C krylov objs +linslvd: + $(MAKE) -C linsolve objs utild: $(MAKE) -C util objs cbindd: @@ -41,6 +44,8 @@ extd: based $(MAKE) -C ext objs cudad: based extd $(MAKE) -C cuda objs +oaccd: based extd + $(MAKE) -C openacc objs install: all @@ -62,11 +67,12 @@ install: all clean: $(MAKE) -C base clean $(MAKE) -C prec clean - $(MAKE) -C krylov clean + $(MAKE) -C linsolve clean $(MAKE) -C util clean $(MAKE) -C cbind clean $(MAKE) -C ext clean $(MAKE) -C cuda clean + $(MAKE) -C openacc clean check: all make check -C test/serial @@ -79,11 +85,12 @@ cleanlib: veryclean: cleanlib cd base && $(MAKE) veryclean cd prec && $(MAKE) veryclean - cd krylov && $(MAKE) veryclean + cd linsolve && $(MAKE) veryclean cd util && $(MAKE) veryclean cd cbind && $(MAKE) veryclean cd ext && $(MAKE) veryclean cd cuda && $(MAKE) veryclean + cd openacc && $(MAKE) veryclean cd test/fileread && $(MAKE) clean cd test/pargen && $(MAKE) clean cd test/util && $(MAKE) clean diff --git a/README.md b/README.md index e51fe70b..31d52383 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,42 @@ -PSBLAS library, version 3.9 -=========================== +# PSBLAS library, version 3.9 -The architecture of the Fortran 2003 sparse BLAS is described in: ->S. Filippone, A. Buttari. Object-Oriented Techniques for Sparse Matrix ->Computations in Fortran 2003, ACM Trans. on Math. Software, vol. 38, No. -4, 2012. -The ideas are explored further with the paper: ->V. Cardellini, S. Filippone and D. Rouson. Design Patterns for ->sparse-matrix computations on hybrid CPU/GPU platforms, Scientific ->Programming, 22(2014), pp.1-19. +The PSBLAS library, developed with the aim to facilitate the parallelization of computationally intensive scientific applications, is designed to address parallel implementation of iterative solvers for sparse linear systems through the distributed memory paradigm. It includes routines for multiplying sparse matrices by dense matrices, solving block diagonal systems with triangular diagonal entries, preprocessing sparse matrices, and contains additional routines for dense matrix operations. The current implementation of PSBLAS addresses a distributed memory execution model operating with message passing. -Version 1.0 of the library is described in: ->S. Filippone, M. Colajanni. PSBLAS: A library for parallel linear ->algebra computation on sparse matrices, ACM Trans. on Math. Software, ->26(4), Dec. 2000, pp. 527-550. +The PSBLAS library version 3 is implemented in the Fortran 2008 programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. +## References -UTILITIES ---------- -The `test/util` directory contains some utilities to convert to/from -Harwell-Boeing and MatrixMarket file formats. +The architecture, philosophy and implementation details of the library are contained in the following papers: -DOCUMENTATION -------------- -See docs/psblas-3.9.pdf; an HTML version of the same document is -available in docs/html. Please consult the sample programs, especially -test/pargen/psb_[sd]_pde[23]d.f90 +- The architecture of the Fortran 2003 sparse BLAS is described in: + >S. Filippone, A. Buttari. Object-Oriented Techniques for Sparse Matrix + >Computations in Fortran 2003, ACM Trans. on Math. Software, vol. 38, No. + 4, 2012. + +- The ideas are explored further with the paper: + >V. Cardellini, S. Filippone and D. Rouson. Design Patterns for + >sparse-matrix computations on hybrid CPU/GPU platforms, Scientific + >Programming, 22(2014), pp.1-19. + +- Version 1.0 of the library is described in: + >S. Filippone, M. Colajanni. PSBLAS: A library for parallel linear + >algebra computation on sparse matrices, ACM Trans. on Math. Software, + >26(4), Dec. 2000, pp. 527-550. +- The software infrastructure changes required to accommodate the implementation of the + Additive-Schwarz preconditioners available in [AMG4PSBLAS](https://github.com/sfilippone/amg4psblas/) are detailed in: + > A. Buttari, P. D'Ambra, D. di Serafino, S. Filippone, Extending PSBLAS to build parallel Schwarz preconditioners, Applied Parallel Computing. State of the Art in Scientific Computing: 7th International Workshop, PARA 2004, LNCS 3732, 2006, pp. 593-602. + + > A. Buttari, P. D'Ambra, D. Di Serafino, S. Filippone, 2LEV-D2P4: A package of high-performance preconditioners for scientific and engineering applications, Applicable Algebra in Engineering, Communications and Computing, 2007, 18(3), pp. 223-239. + + > P. D'Ambra, D. Di Serafino, S. Filippone, MLD2P4: A package of parallel algebraic multilevel domain decomposition preconditioners in Fortran 95 ACM Transactions on Mathematical Software, 2010, 37(3), 30 +PSBLAS is the backbone of the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper: +> D’Ambra, P., Durastante, F., & Filippone, S. (2023). Parallel Sparse Computation Toolkit. Software Impacts, 15, 100463. + +### Other Software credits -OTHER SOFTWARE CREDITS ----------------------- We originally included a modified implementation of some of the Sparker (serial sparse BLAS) material; this has been completely rewritten, way beyond the intention(s) and responsibilities of the original developers. @@ -40,18 +45,8 @@ The main reference for the serial sparse BLAS is: >linear algebra subprograms for sparse matrices: a user level interface, >ACM Trans. Math. Softw., 23(3), 379-401, 1997. -CUDA and GPU support --------------------- -This version of PSBLAS incorporates into a single package three -entities that were previouslty separated: -1. PSBLAS -- the base library -2. PSBLAS-EXT -- a library providing additional storage formats -3. SPGPU -- a package of kernels for NVIDIA GPUs originally - written by Davide Barbieri and Salvatore Filippone; - see the license file cuda/License-spgpu.md - -INSTALLING ----------- +## Installing + To compile and run our software you will need the following prerequisites (see also SERIAL below): @@ -71,7 +66,8 @@ prerequisites (see also SERIAL below): We use the C interface to AMD. 5. If you have CUDA available, use - --with-cuda= to specify the CUDA toolkit location + --enable-cuda to compile CUDA-enabled methods + --with-cudadir= to specify the CUDA toolkit location --with-cudacc=XX,YY,ZZ to specify a list of target CCs (compute capabilities) to compile the CUDA code for. @@ -79,21 +75,27 @@ The configure script will generate a Make.inc file suitable for building the library. The script is capable of recognizing the needed libraries with their default names; if they are in unusual places consider adding the paths with `--with-libs`, or explicitly specifying the names in -`--with-blas`, etc. Please note that a common way for the configure script -to fail is to specify inconsistent MPI vs. plain compilers, either -directly or indirectly via environment variables; e.g. specifying the -Intel compiler with `FC=ifort` while at the same time having an -`MPIFC=mpif90` which points to GNU Fortran. The best way to avoid this -situation is (in our opinion) to use the environment modules package -(see http://modules.sourceforge.net/), and load the relevant -variables with (e.g.) -``` -module load gnu46 openmpi -``` -This will delegate to the modules setup to make sure that the version of -openmpi in use is the one compiled with the gnu46 compilers. After the -configure script has completed you can always tweak the Make.inc file -yourself. +`--with-blas`, etc. + +>[!CAUTION] +> Please note that a common way for the configure script +> to fail is to specify inconsistent MPI vs. plain compilers, either +> directly or indirectly via environment variables; e.g. specifying the +> Intel compiler with `FC=ifort` while at the same time having an +> `MPIFC=mpif90` which points to GNU Fortran. + +>[!TIP] +> The best way to avoid this +> situation is (in our opinion) to use the environment modules package +> (see [http://modules.sourceforge.net/](http://modules.sourceforge.net/)), and load the relevant +> variables with (e.g.) +> ``` +> module load gcc/13.2.0 openmpi/4.1.6 +> ``` +> This will delegate to the modules setup to make sure that the version of +> openmpi in use is the one compiled with the gnu46 compilers. After the +> configure script has completed you can always tweak the Make.inc file +> yourself. After you have Make.inc fixed, run ``` @@ -105,58 +107,117 @@ install and the libraries will be installed under `/path/lib`, while the module files will be installed under `/path/modules`. The regular and experimental C interface header files are under `/path/include`. -SERIAL ------- +### CUDA and GPU support + +This version of PSBLAS incorporates into a single package three +entities that were previouslty separated: +| Library | | +|---------|--------------------| +| PSBLAS | the base library | +| PSBLAS-EXT | a library providing additional storage formats for matrices and vectors | +| SPGPU | a package of kernels for NVIDIA GPUs originally written by Davide Barbieri and Salvatore Filippone; see the license file [cuda/License-spgpu.md](cuda/License-spgpu.md) | + +### OpenACC +There is a highly experimental version of an OpenACC interface, +you can access it by speficifying +```bash +--enable-openacc --with-extraopenacc="-foffload=nvptx-none=-march=sm_70" +``` +where the argument to the extraopenacc option depends on the compiler +you are using (the example shown here is relevant for the GNU +compiler). + +### Serial + Configuring with `--enable-serial` will provide a fake MPI stub library that enables running in pure serial mode; no MPI installation is needed in this case (but note that the fake MPI stubs are only guaranteed to cover what we use internally, it's not a complete replacement). -INTEGER SIZES -------------- +### Integers + We have two kind of integers: IPK for local indices, and LPK for global indices. They can be specified independently at configure time, e.g. +```bash --with-ipk=4 --with-lpk=8 +``` which is asking for 4-bytes local indices, and 8-bytes global indices (this is the default). - -TODO ----- -Fix all reamining bugs. Bugs? We dont' have any ! ;-) +## Documentation +Further information on installation and configuration can be found in the documentation. +See [docs/psblas-3.9.pdf](docs/psblas-3.9.pdf); an HTML version of the same document is +available in docs/html. Please consult the sample programs, especially +- [test/pargen/psb_s_pde2d.F90](test/pargen/psb_s_pde2d.F90) [test/pargen/psb_d_pde2d.F90](test/pargen/psb_d_pde2d.F90) +- [test/pargen/psb_s_pde2d.F90](test/pargen/psb_s_pde3d.F90) [test/pargen/psb_d_pde2d.F90](test/pargen/psb_d_pde3d.F90) + +which contain examples for the solution of linear systems obtained by the discretization of a generic second-order differential equation in two: +```math +- a_1 \frac{\partial^2 u}{\partial x^2} +- a_2 \frac{\partial^2 u}{\partial y^2} ++ b_1 \frac{\partial u}{\partial x} ++ b_2 \frac{\partial u}{\partial y} ++ c u = f +``` +or three +```math +- a_1 \frac{\partial^2 u}{\partial x^2} +- a_2 \frac{\partial^2 u}{\partial y^2} +- a_3 \frac{\partial^2 u}{\partial z^2} ++ b_1 \frac{\partial u}{\partial x} ++ b_2 \frac{\partial u}{\partial y} ++ b_3 \frac{\partial u}{\partial z} ++ c u = f +``` +dimensions on the unit square/cube with Dirichlet boundary conditions. -The PSBLAS team. ---------------- -Project lead: -Salvatore Filippone +### Utilities + +The [test/util](test/util) directory contains some utilities to convert to/from +Harwell-Boeing and MatrixMarket file formats. -Contributors (roughly reverse cronological order): +## TODO and bugs -Dimitri Walther -Andea Di Iorio -Stefano Petrilli -Soren Rasmussen -Zaak Beekman -Ambra Abdullahi Hassan -Pasqua D'Ambra -Alfredo Buttari -Daniela di Serafino -Michele Martone -Michele Colajanni -Fabio Cerioni -Stefano Maiolatesi -Dario Pascucci +- [ ] Improving OpenACC support +- [ ] Improving OpenMP support +- [X] Fix all reamining bugs. Bugs? We dont' have any ! 🤓 +> [!NOTE] +> To report bugs 🐛 or issues ❓ please use the [GitHub issue system](https://github.com/sfilippone/psblas3/issues). -RELATED SOFTWARE ----------------- + +## The PSBLAS team. +**Project lead:** +Salvatore Filippone + +**Contributors** (_roughly reverse cronological order_): + +- Theophane Loloum +- Fabio Durastante +- Dimitri Walther +- Andea Di Iorio +- Stefano Petrilli +- Soren Rasmussen +- Zaak Beekman +- Ambra Abdullahi Hassan +- Pasqua D'Ambra +- Alfredo Buttari +- Daniela di Serafino +- Michele Martone +- Michele Colajanni +- Fabio Cerioni +- Stefano Maiolatesi +- Dario Pascucci + + +## RELATED SOFTWARE If you are looking for more sophisticated preconditioners, you may be interested in the package AMG4PSBLAS from - + and the whole [PSCTooolkit suite](https://psctoolkit.github.io/). Contact: diff --git a/base/modules/Makefile b/base/modules/Makefile index 9c14dab8..b0dd8660 100644 --- a/base/modules/Makefile +++ b/base/modules/Makefile @@ -10,13 +10,14 @@ BASIC_MODS= psb_const_mod.o psb_cbind_const_mod.o psb_error_mod.o psb_realloc_mo auxil/psb_z_realloc_mod.o COMMINT= penv/psi_penv_mod.o \ - penv/psi_p2p_mod.o penv/psi_m_p2p_mod.o \ + penv/psi_p2p_mod.o penv/psi_m_p2p_mod.o penv/psi_i2_p2p_mod.o \ penv/psi_e_p2p_mod.o \ penv/psi_s_p2p_mod.o \ penv/psi_d_p2p_mod.o \ penv/psi_c_p2p_mod.o \ penv/psi_z_p2p_mod.o \ penv/psi_collective_mod.o \ + penv/psi_i2_collective_mod.o \ penv/psi_e_collective_mod.o \ penv/psi_m_collective_mod.o \ penv/psi_s_collective_mod.o \ @@ -149,23 +150,25 @@ psb_realloc_mod.o: auxil/psb_m_realloc_mod.o \ auxil/psb_c_realloc_mod.o \ auxil/psb_z_realloc_mod.o -penv/psi_p2p_mod.o: penv/psi_m_p2p_mod.o \ - penv/psi_e_p2p_mod.o \ - penv/psi_s_p2p_mod.o \ - penv/psi_d_p2p_mod.o \ - penv/psi_c_p2p_mod.o \ - penv/psi_z_p2p_mod.o -penv/psi_collective_mod.o: penv/psi_e_collective_mod.o \ - penv/psi_m_collective_mod.o \ - penv/psi_s_collective_mod.o \ - penv/psi_d_collective_mod.o \ - penv/psi_c_collective_mod.o \ - penv/psi_z_collective_mod.o - -penv/psi_m_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o \ +penv/psi_p2p_mod.o: penv/psi_i2_p2p_mod.o \ + penv/psi_m_p2p_mod.o \ + penv/psi_e_p2p_mod.o \ + penv/psi_s_p2p_mod.o \ + penv/psi_d_p2p_mod.o \ + penv/psi_c_p2p_mod.o \ + penv/psi_z_p2p_mod.o +penv/psi_collective_mod.o: penv/psi_i2_collective_mod.o \ + penv/psi_e_collective_mod.o \ + penv/psi_m_collective_mod.o \ + penv/psi_s_collective_mod.o \ + penv/psi_d_collective_mod.o \ + penv/psi_c_collective_mod.o \ + penv/psi_z_collective_mod.o + +penv/psi_i2_p2p_mod.o penv/psi_m_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o \ penv/psi_d_p2p_mod.o penv/psi_c_p2p_mod.o penv/psi_z_p2p_mod.o: penv/psi_penv_mod.o -penv/psi_e_collective_mod.o penv/psi_m_collective_mod.o penv/psi_s_collective_mod.o \ +penv/psi_i2_collective_mod.o penv/psi_e_collective_mod.o penv/psi_m_collective_mod.o penv/psi_s_collective_mod.o \ penv/psi_d_collective_mod.o penv/psi_c_collective_mod.o penv/psi_z_collective_mod.o: penv/psi_penv_mod.o \ penv/psi_m_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o \ penv/psi_d_p2p_mod.o penv/psi_c_p2p_mod.o penv/psi_z_p2p_mod.o diff --git a/base/modules/desc/psb_desc_const_mod.f90 b/base/modules/desc/psb_desc_const_mod.f90 index 8953aafc..7a3eb4a4 100644 --- a/base/modules/desc/psb_desc_const_mod.f90 +++ b/base/modules/desc/psb_desc_const_mod.f90 @@ -35,7 +35,7 @@ ! Auxiliary module for descriptor: constant values. ! module psb_desc_const_mod - use psb_const_mod, only : psb_ipk_, psb_lpk_, psb_mpk_, psb_epk_ + use psb_const_mod, only : psb_ipk_, psb_lpk_, psb_mpk_, psb_epk_, psb_i2pk_ ! ! Communication, prolongation & restriction ! diff --git a/base/modules/penv/psi_penv_mod.F90 b/base/modules/penv/psi_penv_mod.F90 index 0c77c6df..148032ad 100644 --- a/base/modules/penv/psi_penv_mod.F90 +++ b/base/modules/penv/psi_penv_mod.F90 @@ -167,6 +167,7 @@ module psi_penv_mod #else + integer(psb_mpk_), save :: mpi_i2amx_op, mpi_i2amn_op integer(psb_mpk_), save :: mpi_iamx_op, mpi_iamn_op integer(psb_mpk_), save :: mpi_mamx_op, mpi_mamn_op integer(psb_mpk_), save :: mpi_eamx_op, mpi_eamn_op @@ -181,6 +182,7 @@ module psi_penv_mod #endif private :: psi_get_sizes, psi_register_mpi_extras + private :: psi_i2amx_op, psi_i2amn_op private :: psi_iamx_op, psi_iamn_op private :: psi_mamx_op, psi_mamn_op private :: psi_eamx_op, psi_eamn_op @@ -773,6 +775,8 @@ contains #if defined(SERIAL_MPI) #else + if (info == 0) call mpi_op_create(psi_i2amx_op,.true.,mpi_i2amx_op,info) + if (info == 0) call mpi_op_create(psi_i2amn_op,.true.,mpi_i2amn_op,info) if (info == 0) call mpi_op_create(psi_mamx_op,.true.,mpi_mamx_op,info) if (info == 0) call mpi_op_create(psi_mamn_op,.true.,mpi_mamn_op,info) if (info == 0) call mpi_op_create(psi_eamx_op,.true.,mpi_eamx_op,info) @@ -997,6 +1001,8 @@ contains & call mpi_comm_Free(ctxt%ctxt,info) end if if (close_) then + if (info == 0) call mpi_op_free(mpi_i2amx_op,info) + if (info == 0) call mpi_op_free(mpi_i2amn_op,info) if (info == 0) call mpi_op_free(mpi_mamx_op,info) if (info == 0) call mpi_op_free(mpi_mamn_op,info) if (info == 0) call mpi_op_free(mpi_eamx_op,info) @@ -1188,6 +1194,26 @@ contains ! Note: len & type are always default integer. ! ! !!!!!!!!!!!!!!!!!!!!!! + subroutine psi_i2amx_op(inv, outv,len,type) + integer(psb_i2pk_) :: inv(len), outv(len) + integer(psb_mpk_) :: len,type + integer(psb_mpk_) :: i + + do i=1, len + if (abs(inv(i)) > abs(outv(i))) outv(i) = inv(i) + end do + end subroutine psi_i2amx_op + + subroutine psi_i2amn_op(inv, outv,len,type) + integer(psb_i2pk_) :: inv(len), outv(len) + integer(psb_mpk_) :: len,type + integer(psb_mpk_) :: i + + do i=1, len + if (abs(inv(i)) < abs(outv(i))) outv(i) = inv(i) + end do + end subroutine psi_i2amn_op + subroutine psi_mamx_op(inv, outv,len,type) integer(psb_mpk_) :: inv(len), outv(len) integer(psb_mpk_) :: len,type diff --git a/base/serial/impl/psb_c_coo_impl.F90 b/base/serial/impl/psb_c_coo_impl.F90 index ccf7e42d..a56a79a4 100644 --- a/base/serial/impl/psb_c_coo_impl.F90 +++ b/base/serial/impl/psb_c_coo_impl.F90 @@ -595,12 +595,13 @@ subroutine psb_c_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= czero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= czero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5926,12 +5927,13 @@ subroutine psb_lc_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= czero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= czero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_c_csc_impl.F90 b/base/serial/impl/psb_c_csc_impl.F90 index fe7227dd..7916d954 100644 --- a/base/serial/impl/psb_c_csc_impl.F90 +++ b/base/serial/impl/psb_c_csc_impl.F90 @@ -2421,7 +2421,8 @@ subroutine psb_c_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= czero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4313,7 +4314,7 @@ subroutine psb_lc_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + info = 0 call a%sync() nc = a%get_ncols() @@ -4322,7 +4323,8 @@ subroutine psb_lc_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= czero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_c_csr_impl.F90 b/base/serial/impl/psb_c_csr_impl.F90 index 276d3d1c..6a31e522 100644 --- a/base/serial/impl/psb_c_csr_impl.F90 +++ b/base/serial/impl/psb_c_csr_impl.F90 @@ -3642,7 +3642,8 @@ subroutine psb_c_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= czero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6552,7 +6553,7 @@ subroutine psb_lc_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + info = 0 call a%sync() nr = a%get_nrows() @@ -6561,7 +6562,8 @@ subroutine psb_lc_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= czero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= czero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_d_coo_impl.F90 b/base/serial/impl/psb_d_coo_impl.F90 index beb438aa..e3e7b42c 100644 --- a/base/serial/impl/psb_d_coo_impl.F90 +++ b/base/serial/impl/psb_d_coo_impl.F90 @@ -595,12 +595,13 @@ subroutine psb_d_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= dzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= dzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5926,12 +5927,13 @@ subroutine psb_ld_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= dzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= dzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_d_csc_impl.F90 b/base/serial/impl/psb_d_csc_impl.F90 index d9fa2874..886add04 100644 --- a/base/serial/impl/psb_d_csc_impl.F90 +++ b/base/serial/impl/psb_d_csc_impl.F90 @@ -2421,7 +2421,8 @@ subroutine psb_d_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= dzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4313,7 +4314,7 @@ subroutine psb_ld_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + info = 0 call a%sync() nc = a%get_ncols() @@ -4322,7 +4323,8 @@ subroutine psb_ld_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= dzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_d_csr_impl.F90 b/base/serial/impl/psb_d_csr_impl.F90 index a0aaeeee..f5891870 100644 --- a/base/serial/impl/psb_d_csr_impl.F90 +++ b/base/serial/impl/psb_d_csr_impl.F90 @@ -3642,7 +3642,8 @@ subroutine psb_d_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= dzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6552,7 +6553,7 @@ subroutine psb_ld_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + info = 0 call a%sync() nr = a%get_nrows() @@ -6561,7 +6562,8 @@ subroutine psb_ld_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= dzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= dzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_s_coo_impl.F90 b/base/serial/impl/psb_s_coo_impl.F90 index d833cf96..023cde51 100644 --- a/base/serial/impl/psb_s_coo_impl.F90 +++ b/base/serial/impl/psb_s_coo_impl.F90 @@ -595,12 +595,13 @@ subroutine psb_s_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= szero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= szero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5926,12 +5927,13 @@ subroutine psb_ls_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= szero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= szero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_s_csc_impl.F90 b/base/serial/impl/psb_s_csc_impl.F90 index c135c9ef..3bb47d95 100644 --- a/base/serial/impl/psb_s_csc_impl.F90 +++ b/base/serial/impl/psb_s_csc_impl.F90 @@ -2421,7 +2421,8 @@ subroutine psb_s_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= szero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4313,7 +4314,7 @@ subroutine psb_ls_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + info = 0 call a%sync() nc = a%get_ncols() @@ -4322,7 +4323,8 @@ subroutine psb_ls_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= szero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_s_csr_impl.F90 b/base/serial/impl/psb_s_csr_impl.F90 index 9d5dc145..0a166b0c 100644 --- a/base/serial/impl/psb_s_csr_impl.F90 +++ b/base/serial/impl/psb_s_csr_impl.F90 @@ -3642,7 +3642,8 @@ subroutine psb_s_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= szero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6552,7 +6553,7 @@ subroutine psb_ls_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + info = 0 call a%sync() nr = a%get_nrows() @@ -6561,7 +6562,8 @@ subroutine psb_ls_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= szero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= szero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/impl/psb_z_coo_impl.F90 b/base/serial/impl/psb_z_coo_impl.F90 index ea6b2492..7dfceb06 100644 --- a/base/serial/impl/psb_z_coo_impl.F90 +++ b/base/serial/impl/psb_z_coo_impl.F90 @@ -595,12 +595,13 @@ subroutine psb_z_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_ipk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= zzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= zzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) @@ -5926,12 +5927,13 @@ subroutine psb_lz_coo_clean_zeros(a, info) integer(psb_ipk_), intent(out) :: info ! integer(psb_lpk_) :: i,j,k, nzin - + info = 0 nzin = a%get_nzeros() j = 0 do i=1, nzin - if (a%val(i) /= zzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(i) /= zzero).or.(a%ia(i) == a%ja(i))) then j = j + 1 a%val(j) = a%val(i) a%ia(j) = a%ia(i) diff --git a/base/serial/impl/psb_z_csc_impl.F90 b/base/serial/impl/psb_z_csc_impl.F90 index becb7003..32be36af 100644 --- a/base/serial/impl/psb_z_csc_impl.F90 +++ b/base/serial/impl/psb_z_csc_impl.F90 @@ -2421,7 +2421,8 @@ subroutine psb_z_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= zzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 @@ -4313,7 +4314,7 @@ subroutine psb_lz_csc_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nc integer(psb_lpk_), allocatable :: ilcp(:) - + info = 0 call a%sync() nc = a%get_ncols() @@ -4322,7 +4323,8 @@ subroutine psb_lz_csc_clean_zeros(a, info) j = a%icp(1) do i=1, nc do k = ilcp(i), ilcp(i+1) -1 - if (a%val(k) /= zzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ia(k))) then a%val(j) = a%val(k) a%ia(j) = a%ia(k) j = j + 1 diff --git a/base/serial/impl/psb_z_csr_impl.F90 b/base/serial/impl/psb_z_csr_impl.F90 index 7f11c3bd..e2ddf0d7 100644 --- a/base/serial/impl/psb_z_csr_impl.F90 +++ b/base/serial/impl/psb_z_csr_impl.F90 @@ -3642,7 +3642,8 @@ subroutine psb_z_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= zzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 @@ -6552,7 +6553,7 @@ subroutine psb_lz_csr_clean_zeros(a, info) ! integer(psb_lpk_) :: i, j, k, nr integer(psb_lpk_), allocatable :: ilrp(:) - + info = 0 call a%sync() nr = a%get_nrows() @@ -6561,7 +6562,8 @@ subroutine psb_lz_csr_clean_zeros(a, info) j = a%irp(1) do i=1, nr do k = ilrp(i), ilrp(i+1) -1 - if (a%val(k) /= zzero) then + ! Always keep the diagonal, even if numerically zero + if ((a%val(k) /= zzero).or.(i == a%ja(k))) then a%val(j) = a%val(k) a%ja(j) = a%ja(k) j = j + 1 diff --git a/base/serial/psb_cgeprt.f90 b/base/serial/psb_cgeprt.f90 index 985c1eab..e05d673b 100644 --- a/base/serial/psb_cgeprt.f90 +++ b/base/serial/psb_cgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_scsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -131,6 +131,7 @@ subroutine psb_cgeprt2(iout,a,head) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' do i=1,nrow @@ -161,7 +162,7 @@ subroutine psb_cgeprt1(iout,a,head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' diff --git a/base/serial/psb_dgeprt.f90 b/base/serial/psb_dgeprt.f90 index 07fb32f8..ae4c5b11 100644 --- a/base/serial/psb_dgeprt.f90 +++ b/base/serial/psb_dgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_dcsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -124,13 +124,14 @@ subroutine psb_dgeprt2(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' do i=1,nrow @@ -156,12 +157,12 @@ subroutine psb_dgeprt1(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' diff --git a/base/serial/psb_sgeprt.f90 b/base/serial/psb_sgeprt.f90 index 3ebb975b..9f3205fd 100644 --- a/base/serial/psb_sgeprt.f90 +++ b/base/serial/psb_sgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_scsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -124,13 +124,14 @@ subroutine psb_sgeprt2(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' do i=1,nrow @@ -156,12 +157,12 @@ subroutine psb_sgeprt1(iout,a,head) character(len=80) :: frmtv integer(psb_ipk_) :: irs,ics,i,j, nmx, ni, nrow, ncol - write(iout,'(a)') '%%MatrixMarket matrix array real general' + write(iout,'(a)') '%%MatrixMarket matrix array complex general' write(iout,'(a)') '% '//trim(head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'(es26.18,1x))' diff --git a/base/serial/psb_zgeprt.f90 b/base/serial/psb_zgeprt.f90 index f7615473..3fc0eb0c 100644 --- a/base/serial/psb_zgeprt.f90 +++ b/base/serial/psb_zgeprt.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_scsprt.f90 +! File: psb_geprt.f90 ! Subroutine: ! Arguments: @@ -131,6 +131,7 @@ subroutine psb_zgeprt2(iout,a,head) ncol = size(a,2) write(iout,*) nrow,ncol + write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' do i=1,nrow @@ -161,7 +162,7 @@ subroutine psb_zgeprt1(iout,a,head) write(iout,'(a)') '% ' nrow = size(a,1) ncol = 1 - write(iout,*) nrow + write(iout,*) nrow,ncol write(frmtv,'(a,i3.3,a)') '(',ncol,'2(es26.18,1x))' diff --git a/cbind/krylov/psb_ckrylov_cbind_mod.f90 b/cbind/krylov/psb_ckrylov_cbind_mod.f90 index 56cd51ab..758ecd02 100644 --- a/cbind/krylov/psb_ckrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_ckrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/krylov/psb_dkrylov_cbind_mod.f90 b/cbind/krylov/psb_dkrylov_cbind_mod.f90 index 43b3ca8c..b1119067 100644 --- a/cbind/krylov/psb_dkrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_dkrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/krylov/psb_skrylov_cbind_mod.f90 b/cbind/krylov/psb_skrylov_cbind_mod.f90 index 60d41d14..41bb9506 100644 --- a/cbind/krylov/psb_skrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_skrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/krylov/psb_zkrylov_cbind_mod.f90 b/cbind/krylov/psb_zkrylov_cbind_mod.f90 index 22e74386..37f24be7 100644 --- a/cbind/krylov/psb_zkrylov_cbind_mod.f90 +++ b/cbind/krylov/psb_zkrylov_cbind_mod.f90 @@ -8,7 +8,7 @@ contains & ah,ph,bh,xh,cdh,options) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod @@ -33,7 +33,7 @@ contains & ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res) use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_objhandle_mod use psb_prec_cbind_mod use psb_base_string_cbind_mod diff --git a/cbind/test/pargen/Makefile b/cbind/test/pargen/Makefile index 2e74497f..e1da6892 100644 --- a/cbind/test/pargen/Makefile +++ b/cbind/test/pargen/Makefile @@ -9,7 +9,7 @@ FINCLUDES=$(FMFLAG). $(FMFLAG)$(HERE) $(FMFLAG)$(MODDIR) CINCLUDES=-I. -I$(HERE) -I$(INCLUDEDIR) PSBC_LIBS= -L$(LIBDIR) -lpsb_cbind -PSB_LIBS=-lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base -L$(LIBDIR) +PSB_LIBS=-lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base -L$(LIBDIR) # # Compilers and such diff --git a/config/ax_c_openacc.m4 b/config/ax_c_openacc.m4 new file mode 100644 index 00000000..52f645a9 --- /dev/null +++ b/config/ax_c_openacc.m4 @@ -0,0 +1,104 @@ +# AC_OPENACC +# --------- +# Check which options need to be passed to the C compiler to support Openacc. +# Set the OPENACC_CFLAGS / OPENACC_CXXFLAGS / OPENACC_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports Openacc. +# +# For each candidate option, we do a compile test first, then a link test; +# if the compile test succeeds but the link test fails, that means we have +# found the correct option but it doesn't work because the libraries are +# broken. (This can happen, for instance, with SunPRO C and a bad combination +# of operating system patches.) +# +# Several of the options in our candidate list can be misinterpreted by +# compilers that don't use them to activate Openacc support; for example, +# many compilers understand "-openacc" to mean "write output to a file +# named 'penmp'" rather than "enable Openacc". We can't completely avoid +# the possibility of clobbering files named 'penmp' or 'mp' in configure's +# working directory; therefore, this macro will bomb out if any such file +# already exists when it's invoked. +AC_DEFUN([AX_C_OPENACC], +[AC_REQUIRE([_AX_OPENACC_SAFE_WD])]dnl +[AC_ARG_ENABLE([openacc], + [AS_HELP_STRING([--disable-openacc], [do not use Openacc])])]dnl +[ + OPENACC_[]_AC_LANG_PREFIX[]FLAGS= + if test "$enable_openacc" != no; then + AC_LANG_PUSH([C]) + AC_CACHE_CHECK([for $[]_AC_CC[] option to support Openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='not found' + dnl Try these flags: + dnl (on by default) '' + dnl GCC >= 4.2 -fopenacc + dnl SunPRO C -xopenacc + dnl Intel C -openacc + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM XL C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenacc + dnl Lahey Fortran (Linux) --openacc + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_COMPILE_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} +], + [AC_LINK_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} +], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc=$ac_option], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported'])]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = 'not found'; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported' + elif test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = ''; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='none needed' + fi + dnl _AX_OPENACC_SAFE_WD checked that these files did not exist before we + dnl started probing for Openacc support, so if they exist now, they were + dnl created by the probe loop and it's safe to delete them. + rm -f penmp mp]) + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported' && \ + test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'none needed'; then + OPENACC_[]_AC_LANG_PREFIX[]FLAGS="$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" + fi + AC_LANG_POP([C]) + fi +]) + +# _AC_OPENACC_SAFE_WD +# ------------------ +# AC_REQUIREd by AC_OPENACC. Checks both at autoconf time and at +# configure time for files that AC_OPENACC clobbers. +AC_DEFUN([_AX_OPENACC_SAFE_WD], +[m4_syscmd([test ! -e penmp && test ! -e mp])]dnl +[m4_if(sysval, [0], [], [m4_fatal(m4_normalize( + [AX_OPENACC clobbers files named 'mp' and 'penmp'. + To use AX_OPENACC you must not have either of these files + at the top level of your source tree.]))])]dnl +[if test -e penmp || test -e mp; then + AC_MSG_ERROR(m4_normalize( + [AX@&t@_OPENACC clobbers files named 'mp' and 'penmp'. + Aborting configure because one of these files already exists.])) +fi]) + diff --git a/config/ax_cxx_openacc.m4 b/config/ax_cxx_openacc.m4 new file mode 100644 index 00000000..5a2ad278 --- /dev/null +++ b/config/ax_cxx_openacc.m4 @@ -0,0 +1,104 @@ +# AC_OPENACC +# --------- +# Check which options need to be passed to the C compiler to support Openacc. +# Set the OPENACC_CFLAGS / OPENACC_CXXFLAGS / OPENACC_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports Openacc. +# +# For each candidate option, we do a compile test first, then a link test; +# if the compile test succeeds but the link test fails, that means we have +# found the correct option but it doesn't work because the libraries are +# broken. (This can happen, for instance, with SunPRO C and a bad combination +# of operating system patches.) +# +# Several of the options in our candidate list can be misinterpreted by +# compilers that don't use them to activate Openacc support; for example, +# many compilers understand "-openacc" to mean "write output to a file +# named 'penmp'" rather than "enable Openacc". We can't completely avoid +# the possibility of clobbering files named 'penmp' or 'mp' in configure's +# working directory; therefore, this macro will bomb out if any such file +# already exists when it's invoked. +AC_DEFUN([AX_CXX_OPENACC], +[AC_REQUIRE([_AX_OPENACC_SAFE_WD])]dnl +[AC_ARG_ENABLE([openacc], + [AS_HELP_STRING([--disable-openacc], [do not use Openacc])])]dnl +[ + OPENACC_[]_AC_LANG_PREFIX[]FLAGS= + if test "$enable_openacc" != no; then + AC_LANG_PUSH([C++]) + AC_CACHE_CHECK([for $[]_AC_CC[] option to support Openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='not found' + dnl Try these flags: + dnl (on by default) '' + dnl GCC >= 4.2 -fopenacc + dnl SunPRO C -xopenacc + dnl Intel C -openacc + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM XL C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenacc + dnl Lahey Fortran (Linux) --openacc + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_COMPILE_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} +], + [AC_LINK_IFELSE([ +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} +], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc=$ac_option], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported'])]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = 'not found'; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported' + elif test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = ''; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='none needed' + fi + dnl _AX_OPENACC_SAFE_WD checked that these files did not exist before we + dnl started probing for Openacc support, so if they exist now, they were + dnl created by the probe loop and it's safe to delete them. + rm -f penmp mp]) + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported' && \ + test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'none needed'; then + OPENACC_[]_AC_LANG_PREFIX[]FLAGS="$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" + fi + AC_LANG_POP([C++]) + fi +]) + +dnl _AC_OPENACC_SAFE_WD +dnl ------------------ +dnl AC_REQUIREd by AC_OPENACC. Checks both at autoconf time and at +dnl configure time for files that AC_OPENACC clobbers. +dnl AC_DEFUN([_AX_OPENACC_SAFE_WD], +dnl [m4_syscmd([test ! -e penmp && test ! -e mp])]dnl +dnl [m4_if(sysval, [0], [], [m4_fatal(m4_normalize( +dnl [AX_OPENACC clobbers files named 'mp' and 'penmp'. +dnl To use AX_OPENACC you must not have either of these files +dnl at the top level of your source tree.]))])]dnl +dnl [if test -e penmp || test -e mp; then +dnl AC_MSG_ERROR(m4_normalize( +dnl [AX@&t@_OPENACC clobbers files named 'mp' and 'penmp'. +dnl Aborting configure because one of these files already exists.])) +dnl fi]) + diff --git a/config/ax_fc_openacc.m4 b/config/ax_fc_openacc.m4 new file mode 100644 index 00000000..59775b2b --- /dev/null +++ b/config/ax_fc_openacc.m4 @@ -0,0 +1,108 @@ +# AC_OPENACC +# --------- +# Check which options need to be passed to the C compiler to support Openacc. +# Set the OPENACC_CFLAGS / OPENACC_CXXFLAGS / OPENACC_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports Openacc. +# +# For each candidate option, we do a compile test first, then a link test; +# if the compile test succeeds but the link test fails, that means we have +# found the correct option but it doesn't work because the libraries are +# broken. (This can happen, for instance, with SunPRO C and a bad combination +# of operating system patches.) +# +# Several of the options in our candidate list can be misinterpreted by +# compilers that don't use them to activate Openacc support; for example, +# many compilers understand "-openacc" to mean "write output to a file +# named 'penmp'" rather than "enable Openacc". We can't completely avoid +# the possibility of clobbering files named 'penmp' or 'mp' in configure's +# working directory; therefore, this macro will bomb out if any such file +# already exists when it's invoked. +AC_DEFUN([AX_FC_OPENACC], +[AC_REQUIRE([_AX_OPENACC_SAFE_WD])]dnl +[AC_ARG_ENABLE([openacc], + [AS_HELP_STRING([--disable-openacc], [do not use Openacc])])]dnl +[ + OPENACC_[]_AC_LANG_PREFIX[]FLAGS= + if test "$enable_openacc" != no; then + AC_LANG_PUSH([Fortran]) + AC_CACHE_CHECK([for $[]_AC_CC[] option to support Openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='not found' + dnl Try these flags: + dnl (on by default) '' + dnl GCC >= 4.2 -fopenacc + dnl SunPRO C -xopenacc + dnl Intel C -openacc + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM XL C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenacc + dnl Lahey Fortran (Linux) --openacc + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_COMPILE_IFELSE([ + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end +], + [AC_LINK_IFELSE([ + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end +], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc=$ac_option], + [ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported'])]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported'; then + break + fi + done + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = 'not found'; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='unsupported' + elif test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" = ''; then + ac_cv_prog_[]_AC_LANG_ABBREV[]_openacc='none needed' + fi + dnl _AX_OPENACC_SAFE_WD checked that these files did not exist before we + dnl started probing for Openacc support, so if they exist now, they were + dnl created by the probe loop and it's safe to delete them. + rm -f penmp mp]) + if test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'unsupported' && \ + test "$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" != 'none needed'; then + OPENACC_[]_AC_LANG_PREFIX[]FLAGS="$ax_cv_prog_[]_AC_LANG_ABBREV[]_openacc" + fi + AC_LANG_POP([Fortran]) + fi +]) + +# _AC_OPENACC_SAFE_WD +# ------------------ +# AC_REQUIREd by AC_OPENACC. Checks both at autoconf time and at +# configure time for files that AC_OPENACC clobbers. +AC_DEFUN([_AX_OPENACC_SAFE_WD], +[m4_syscmd([test ! -e penmp && test ! -e mp])]dnl +[m4_if(sysval, [0], [], [m4_fatal(m4_normalize( + [AX_OPENACC clobbers files named 'mp' and 'penmp'. + To use AX_OPENACC you must not have either of these files + at the top level of your source tree.]))])]dnl +[if test -e penmp || test -e mp; then + AC_MSG_ERROR(m4_normalize( + [AX@&t@_OPENACC clobbers files named 'mp' and 'penmp'. + Aborting configure because one of these files already exists.])) +fi]) + diff --git a/config/pac.m4 b/config/pac.m4 index 72ad3d6a..a39256e0 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -2157,6 +2157,31 @@ CPPFLAGS="$SAVE_CPPFLAGS" +dnl @synopsis PAC_ARG_CUDA +dnl +dnl Test for --enable-cuda +dnl +dnl +dnl +dnl Example use: +dnl +dnl +dnl @author Salvatore Filippone +dnl +AC_DEFUN([PAC_ARG_CUDA], +[AC_MSG_CHECKING([whether we want cuda ]) +AC_ARG_ENABLE(cuda, +AS_HELP_STRING([--enable-cuda], +[Specify whether to enable cuda. ]), +[ +pac_cv_cuda="yes"; +] +dnl , +dnl [pac_cv_cuda="no";] + ) +] +) + dnl @synopsis PAC_CHECK_CUDA dnl @@ -2173,7 +2198,7 @@ dnl dnl @author Salvatore Filippone dnl AC_DEFUN(PAC_CHECK_CUDA, -[AC_ARG_WITH(cuda, AC_HELP_STRING([--with-cuda=DIR], [Specify the CUDA install directory.]), +[AC_ARG_WITH(cudadir, AC_HELP_STRING([--with-cudadir=DIR], [Specify the CUDA install directory.]), [pac_cv_cuda_dir=$withval], [pac_cv_cuda_dir='']) @@ -2234,56 +2259,6 @@ AC_HELP_STRING([--with-cudacc], [A comma-separated list of CCs to compile to, fo [pac_cv_cudacc='']) ]) -AC_DEFUN(PAC_ARG_WITH_LIBRSB, - [SAVE_LIBS="$LIBS" - SAVE_CPPFLAGS="$CPPFLAGS" - - AC_ARG_WITH(librsb, - AC_HELP_STRING([--with-librsb], [The directory for LIBRSB, for example, - --with-librsb=/opt/packages/librsb]), - [pac_cv_librsb_dir=$withval], - [pac_cv_librsb_dir='']) - - if test "x$pac_cv_librsb_dir" != "x"; then - LIBS="-L$pac_cv_librsb_dir $LIBS" - RSB_INCLUDES="-I$pac_cv_librsb_dir" - # CPPFLAGS="$GPU_INCLUDES $CUDA_INCLUDES $CPPFLAGS" - RSB_LIBDIR="-L$pac_cv_librsb_dir" - fi - #AC_MSG_CHECKING([librsb dir $pac_cv_librsb_dir]) - AC_CHECK_HEADER([$pac_cv_librsb_dir/rsb.h], - [pac_rsb_header_ok=yes], - [pac_rsb_header_ok=no; RSB_INCLUDES=""]) - - if test "x$pac_rsb_header_ok" == "xyes" ; then - RSB_LIBS="-lrsb $RSB_LIBDIR" - # LIBS="$GPU_LIBS $CUDA_LIBS -lm $LIBS"; - # AC_MSG_CHECKING([for spgpuCreate in $GPU_LIBS]) - # AC_TRY_LINK_FUNC(spgpuCreate, - # [pac_cv_have_spgpu=yes;pac_gpu_lib_ok=yes; ], - # [pac_cv_have_spgpu=no;pac_gpu_lib_ok=no; GPU_LIBS=""]) - # AC_MSG_RESULT($pac_gpu_lib_ok) - # if test "x$pac_cv_have_spgpu" == "xyes" ; then - # AC_MSG_NOTICE([Have found SPGPU]) - RSBLIBNAME="librsb.a"; - LIBRSB_DIR="$pac_cv_librsb_dir"; - # SPGPU_DEFINES="-DHAVE_SPGPU"; - LIBRSB_INCDIR="$LIBRSB_DIR"; - LIBRSB_INCLUDES="-I$LIBRSB_INCDIR"; - LIBRSB_LIBS="-lrsb -L$LIBRSB_DIR"; - # CUDA_DIR="$pac_cv_cuda_dir"; - LIBRSB_DEFINES="-DHAVE_RSB"; - LRSB=-lpsb_rsb - # CUDA_INCLUDES="-I$pac_cv_cuda_dir/include" - # CUDA_LIBDIR="-L$pac_cv_cuda_dir/lib64 -L$pac_cv_cuda_dir/lib" - FDEFINES="$LIBRSB_DEFINES $psblas_cv_define_prepend $FDEFINES"; - CDEFINES="$LIBRSB_DEFINES $CDEFINES";#CDEFINES="-DHAVE_SPGPU -DHAVE_CUDA $CDEFINES"; - fi -# fi -LIBS="$SAVE_LIBS" -CPPFLAGS="$SAVE_CPPFLAGS" -]) -dnl dnl @synopsis PAC_CHECK_CUDA_VERSION dnl @@ -2336,3 +2311,47 @@ CPPFLAGS="$SAVE_CPPFLAGS" ])dnl + +dnl @synopsis PAC_ARG_OPENACC +dnl +dnl Test for --enable-openacc +dnl +dnl +dnl +dnl Example use: +dnl +dnl +dnl @author Salvatore Filippone +dnl +AC_DEFUN([PAC_ARG_OPENACC], +[AC_MSG_CHECKING([whether we want openacc ]) +AC_ARG_ENABLE(openacc, +AS_HELP_STRING([--enable-openacc], +[Specify whether to enable openacc. ]), +[ +pac_cv_openacc="yes"; +] +dnl , +dnl [pac_cv_openacc="no";] + ) +if test x"$pac_cv_openacc" == x"yes" ; then + AC_MSG_RESULT([yes.]) +# AC_LANG_PUSH([Fortran]) +# AC_OPENACC() +# pac_cv_openacc_fcopt="$OPENACC_FCFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C]) +# AC_OPENACC() +# pac_cv_openacc_ccopt="$OPENACC_CFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C++]) +# AC_OPENACC() +# pac_cv_openacc_cxxopt="$OPENACC_CXXFLAGS"; +# AC_LANG_POP() +else + pac_cv_openacc="no"; + AC_MSG_RESULT([no.]) +fi +] +) + diff --git a/configure b/configure index 0c59d9fd..4645c593 100755 --- a/configure +++ b/configure @@ -653,6 +653,12 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +LRSB +LIBRSB_DEFINES +LIBRSB_DIR +LIBRSB_INCDIR +LIBRSB_INCLUDES +LIBRSB_LIBS LCUDA CUDALD CUDAD @@ -662,11 +668,19 @@ CUDA_SHORT_VERSION CUDA_VERSION CUDA_LIBS CUDA_INCLUDES +CXXCUDEFINES +CCUDEFINES +FCUDEFINES CUDA_DEFINES CUDA_DIR EXTRALDLIBS SPGPU_LIBS SPGPU_FLAGS +CXXOPENACC +CCOPENACC +FCOPENACC +OACCLD +OACCD METISINCFILE UTILLIBNAME METHDLIBNAME @@ -838,8 +852,14 @@ with_amd with_amddir with_amdincdir with_amdlibdir -with_cuda +enable_cuda +with_cudadir with_cudacc +enable_openacc +with_extraopenacc +with_ccopenacc +with_cxxopenacc +with_fcopenacc ' ac_precious_vars='build_alias host_alias @@ -1490,6 +1510,9 @@ Optional Features: --disable-silent-rules verbose build output (undo: "make V=0") --enable-openmp Specify whether to enable openmp. --disable-openmp do not use OpenMP + --enable-cuda Specify whether to enable cuda. + --enable-openacc Specify whether to enable openacc. + --disable-openacc do not use Openacc Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1532,9 +1555,17 @@ Optional Packages: --with-amddir=DIR Specify the directory for AMD library and includes. --with-amdincdir=DIR Specify the directory for AMD includes. --with-amdlibdir=DIR Specify the directory for AMD library. - --with-cuda=DIR Specify the CUDA install directory. + --with-cudadir=DIR Specify the CUDA install directory. --with-cudacc A comma-separated list of CCs to compile to, for example, --with-cudacc=50,60,70,75 + --with-extraopenacc additional [EXTRAOPENACC] flags to be added: will + prepend to [EXTRAOPENACC] + --with-ccopenacc additional [CCOPENACC] flags to be added: will + prepend to [CCOPENACC] + --with-cxxopenacc additional [CXXOPENACC] flags to be added: will + prepend to [CXXOPENACC] + --with-fcopenacc additional [FCOPENACC] flags to be added: will + prepend to [FCOPENACC] Some influential environment variables: FC Fortran compiler command @@ -5825,7 +5856,7 @@ fi # we just gave the user the chance to append values to these variables -############################################################################### + if test -n "$ac_tool_prefix"; then @@ -7392,7 +7423,7 @@ fi ############################################################################## BASEMODNAME=psb_base_mod PRECMODNAME=psb_prec_mod -METHDMODNAME=psb_krylov_mod +METHDMODNAME=psb_linsolve_mod UTILMODNAME=psb_util_mod if test "X$psblas_cv_fc" == X"cray" @@ -7402,7 +7433,7 @@ then FIFLAG="-I" BASEMODNAME=PSB_BASE_MOD PRECMODNAME=PSB_PREC_MOD - METHDMODNAME=PSB_KRYLOV_MOD + METHDMODNAME=PSB_LINSOLVE_MOD UTILMODNAME=PSB_UTIL_MOD else @@ -10602,12 +10633,26 @@ if test "x$psblas_cv_have_amd" == "xyes" ; then fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we want cuda " >&5 +printf %s "checking whether we want cuda ... " >&6; } +# Check whether --enable-cuda was given. +if test ${enable_cuda+y} +then : + enableval=$enable_cuda; +pac_cv_cuda="yes"; + + +fi + + + +if test "x$pac_cv_cuda" == "xyes"; then -# Check whether --with-cuda was given. -if test ${with_cuda+y} +# Check whether --with-cudadir was given. +if test ${with_cudadir+y} then : - withval=$with_cuda; pac_cv_cuda_dir=$withval + withval=$with_cudadir; pac_cv_cuda_dir=$withval else $as_nop pac_cv_cuda_dir='' fi @@ -10693,10 +10738,10 @@ SAVE_LIBS="$LIBS" SAVE_CPPFLAGS="$CPPFLAGS" if test "x$pac_cv_have_cuda" == "x"; then -# Check whether --with-cuda was given. -if test ${with_cuda+y} +# Check whether --with-cudadir was given. +if test ${with_cudadir+y} then : - withval=$with_cuda; pac_cv_cuda_dir=$withval + withval=$with_cudadir; pac_cv_cuda_dir=$withval else $as_nop pac_cv_cuda_dir='' fi @@ -10814,9 +10859,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBS="$SAVE_LIBS" CPPFLAGS="$SAVE_CPPFLAGS" + HAVE_CUDA="yes"; CUDA_VERSION="$pac_cv_cuda_version"; CUDA_SHORT_VERSION=$(expr $pac_cv_cuda_version / 1000); - HAVE_CUDA="yes"; + CUDA_DEFINES="-DHAVE_CUDA -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}"; SPGPU_LIBS="-lspgpu"; CUDAD=cudad; CUDALD=cudald; @@ -10837,7 +10883,7 @@ fi if test "x$pac_cv_cudacc" == "x"; then - pac_cv_cudacc="50,60,70,75"; + pac_cv_cudacc="50,60,70,75,80,86"; CUDA_CC="$pac_cv_cudacc"; fi if (( $pac_cv_cuda_version >= 11070 )) @@ -10849,24 +10895,432 @@ fi CUDEFINES="$CUDEFINES -gencode arch=compute_$cc,code=sm_$cc"; done if test "x$pac_cv_cuda_version" != "xunknown"; then - CUDEFINES="$CUDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - FDEFINES="$FDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - CDEFINES="$CDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" + CUDEFINES="$CUDEFINES ${CUDA_DEFINES}" + FCUDEFINES=" ${CUDA_DEFINES}" + CCUDEFINES=" ${CUDA_DEFINES}" + CXXCUDEFINES=" ${CUDA_DEFINES}" fi fi if test "x$pac_cv_ipk_size" != "x4"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ipk_size, disabling CUDA/SPGPU" >&5 printf "%s\n" "$as_me: For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ipk_size, disabling CUDA/SPGPU" >&6;} + pac_cv_cuda="no"; HAVE_CUDA="no"; CUDA_CC=""; SPGPU_LIBS=""; CUDAD=""; CUDALD=""; CUDEFINES=""; + CUDA_DEFINES=""; CUDA_INCLUDES=""; CUDA_LIBS=""; + FCUDEFINES=""; + CCUDEFINES=""; + CXXCUDEFINES=""; +fi +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we want openacc " >&5 +printf %s "checking whether we want openacc ... " >&6; } +# Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +pac_cv_openacc="yes"; + + +fi + +if test x"$pac_cv_openacc" == x"yes" ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes." >&5 +printf "%s\n" "yes." >&6; } +# AC_LANG_PUSH([Fortran]) +# AC_OPENACC() +# pac_cv_openacc_fcopt="$OPENACC_FCFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C]) +# AC_OPENACC() +# pac_cv_openacc_ccopt="$OPENACC_CFLAGS"; +# AC_LANG_POP() +# AC_LANG_PUSH([C++]) +# AC_OPENACC() +# pac_cv_openacc_cxxopt="$OPENACC_CXXFLAGS"; +# AC_LANG_POP() +else + pac_cv_openacc="no"; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no." >&5 +printf "%s\n" "no." >&6; } +fi + + +if test x"$pac_cv_openacc" == x"yes" ; then + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional EXTRAOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional EXTRAOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-extraopenacc was given. +if test ${with_extraopenacc+y} +then : + withval=$with_extraopenacc; +EXTRAOPENACC="${withval} ${EXTRAOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: EXTRAOPENACC = ${EXTRAOPENACC}" >&5 +printf "%s\n" "EXTRAOPENACC = ${EXTRAOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + if test -e penmp || test -e mp; then + as_fn_error $? "AX_OPENACC clobbers files named 'mp' and 'penmp'. Aborting configure because one of these files already exists." "$LINENO" 5 +fi +# Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +fi + + OPENACC_CFLAGS= + if test "$enable_openacc" != no; then + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to support Openacc" >&5 +printf %s "checking for $CC option to support Openacc... " >&6; } +if test ${ax_cv_prog_c_openacc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_prog_c_openacc='not found' + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (0); return 0;} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_prog_c_openacc=$ac_option +else $as_nop + ax_cv_prog_c_openacc='unsupported' fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ac_save_CFLAGS + + if test "$ax_cv_prog_c_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_c_openacc" = 'not found'; then + ac_cv_prog_c_openacc='unsupported' + elif test "$ax_cv_prog_c_openacc" = ''; then + ac_cv_prog_c_openacc='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_prog_c_openacc" >&5 +printf "%s\n" "$ax_cv_prog_c_openacc" >&6; } + if test "$ax_cv_prog_c_openacc" != 'unsupported' && \ + test "$ax_cv_prog_c_openacc" != 'none needed'; then + OPENACC_CFLAGS="$ax_cv_prog_c_openacc" + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi + + CCOPENACC="$ax_cv_prog_c_openacc"; + # Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +fi + + OPENACC_CFLAGS= + if test "$enable_openacc" != no; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support Openacc" >&5 +printf %s "checking for $CXX option to support Openacc... " >&6; } +if test ${ax_cv_prog_cxx_openacc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_prog_cxx_openacc='not found' + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENACC +#error "OpenACC not supported" +#endif +#include + int main (void) { acc_init (acc_get_device_type()); return 0;} + +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + ax_cv_prog_cxx_openacc=$ac_option +else $as_nop + ax_cv_prog_cxx_openacc='unsupported' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ac_save_CXXFLAGS + + if test "$ax_cv_prog_cxx_openacc" != 'not found'; then + break + fi + done + if test "$ax_cv_prog_cxx_openacc" = 'not found'; then + ac_cv_prog_cxx_openacc='unsupported' + elif test "$ax_cv_prog_cxx_openacc" = ''; then + ac_cv_prog_cxx_openacc='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_prog_cxx_openacc" >&5 +printf "%s\n" "$ax_cv_prog_cxx_openacc" >&6; } + if test "$ax_cv_prog_cxx_openacc" != 'unsupported' && \ + test "$ax_cv_prog_cxx_openacc" != 'none needed'; then + OPENACC_CXXFLAGS="$ax_cv_prog_cxx_openacc" + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi + + CXXOPENACC="$ax_cv_prog_cxx_openacc"; + # Check whether --enable-openacc was given. +if test ${enable_openacc+y} +then : + enableval=$enable_openacc; +fi + + OPENACC_CFLAGS= + if test "$enable_openacc" != no; then + ac_ext=${ac_fc_srcext-f} +ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $FC option to support Openacc" >&5 +printf %s "checking for $FC option to support Openacc... " >&6; } +if test ${ax_cv_prog_fc_openacc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_prog_fc_openacc='not found' + for ac_option in '' -fopenacc -openacc -acc; do + + ac_save_FCFLAGS=$FCFLAGS + FCFLAGS="$FCFLAGS $ac_option" + cat > conftest.$ac_ext <<_ACEOF + + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end + +_ACEOF +if ac_fn_fc_try_compile "$LINENO" +then : + cat > conftest.$ac_ext <<_ACEOF + + program main + use openacc + implicit none + integer tid, np + tid = 42 + call acc_init(0) + end + +_ACEOF +if ac_fn_fc_try_link "$LINENO" +then : + ax_cv_prog_fc_openacc=$ac_option +else $as_nop + ax_cv_prog_fc_openacc='unsupported' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + FCFLAGS=$ac_save_FCFLAGS + + if test "$ax_cv_prog_fc_openacc" != 'unsupported'; then + break + fi + done + if test "$ax_cv_prog_fc_openacc" = 'not found'; then + ac_cv_prog_fc_openacc='unsupported' + elif test "$ax_cv_prog_fc_openacc" = ''; then + ac_cv_prog_fc_openacc='none needed' + fi + rm -f penmp mp +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_prog_fc_openacc" >&5 +printf "%s\n" "$ax_cv_prog_fc_openacc" >&6; } + if test "$ax_cv_prog_fc_openacc" != 'unsupported' && \ + test "$ax_cv_prog_fc_openacc" != 'none needed'; then + OPENACC_FCFLAGS="$ax_cv_prog_fc_openacc" + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi + + FCOPENACC="$ax_cv_prog_fc_openacc"; + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional CCOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional CCOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-ccopenacc was given. +if test ${with_ccopenacc+y} +then : + withval=$with_ccopenacc; +CCOPENACC="${withval} ${CCOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: CCOPENACC = ${CCOPENACC}" >&5 +printf "%s\n" "CCOPENACC = ${CCOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional CXXOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional CXXOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-cxxopenacc was given. +if test ${with_cxxopenacc+y} +then : + withval=$with_cxxopenacc; +CXXOPENACC="${withval} ${CXXOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: CXXOPENACC = ${CXXOPENACC}" >&5 +printf "%s\n" "CXXOPENACC = ${CXXOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether additional FCOPENACC flags should be added (should be invoked only once)" >&5 +printf %s "checking whether additional FCOPENACC flags should be added (should be invoked only once)... " >&6; } + +# Check whether --with-fcopenacc was given. +if test ${with_fcopenacc+y} +then : + withval=$with_fcopenacc; +FCOPENACC="${withval} ${FCOPENACC}" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: FCOPENACC = ${FCOPENACC}" >&5 +printf "%s\n" "FCOPENACC = ${FCOPENACC}" >&6; } + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi + + + CCOPENACC="$CCOPENACC $EXTRAOPENACC"; + CXXOPENACC="$CXXOPENACC $EXTRAOPENACC"; + FCOPENACC="$FCOPENACC $EXTRAOPENACC"; + OACCD=oaccd; + OACCLD=oaccld; + + #FCOPT="$FCOPT $FCOPENACC"; + #CCOPT="$CCOPT $CCOPENACC" + #CXXOPT="$CXXOPT $CXXOPENACC" + #FLINK="$FLINK $FCOPENACC"; +fi + +############################################################################### +LIBRSB_DIR="$pac_cv_librsb_dir"; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBRSB install dir" >&5 +printf %s "checking for LIBRSB install dir... " >&6; } +case $LIBRSB_DIR in + /*) ;; + *) esac +pac_cv_status_file="$LIBRSB_DIR/librsb.a" +if test ! -f "$pac_cv_status_file" ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + #AC_MSG_ERROR([Could not find an installation in $LIBRSB_DIR.]) +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBRSB_DIR" >&5 +printf "%s\n" "$LIBRSB_DIR" >&6; } + RSBTARGETLIB=rsbd; + RSBTARGETOBJ=rsbobj; +fi + @@ -10878,7 +11332,7 @@ fi LIBDIR=lib BASELIBNAME=libpsb_base.a PRECLIBNAME=libpsb_prec.a -METHDLIBNAME=libpsb_krylov.a +METHDLIBNAME=libpsb_linsolve.a UTILLIBNAME=libpsb_util.a ############################################################################### @@ -10928,9 +11382,9 @@ UTILLIBNAME=libpsb_util.a PSBLASRULES=' PSBLDLIBS=$(LAPACK) $(BLAS) $(METIS_LIB) $(AMD_LIB) $(LIBS) -CXXDEFINES=$(PSBCXXDEFINES) $(CUDA_DEFINES) -CDEFINES=$(PSBCDEFINES) $(CUDA_DEFINES) -FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) +CXXDEFINES=$(PSBCXXDEFINES) +CDEFINES=$(PSBCDEFINES) +FDEFINES=$(PSBFDEFINES) # These should be portable rules, arent they? @@ -10961,6 +11415,22 @@ FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) + + + + + + + + + + + + + + + + @@ -12299,6 +12769,11 @@ fi CUDA : ${HAVE_CUDA} CUDA_CC : ${pac_cv_cudacc} + OPENACC : ${pac_cv_openacc} + FCOPENACC : ${FCOPENACC} + OACCD : ${OACCD} + OACCLD : ${OACCLD} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} @@ -12332,6 +12807,11 @@ printf "%s\n" "$as_me: CUDA : ${HAVE_CUDA} CUDA_CC : ${pac_cv_cudacc} + OPENACC : ${pac_cv_openacc} + FCOPENACC : ${FCOPENACC} + OACCD : ${OACCD} + OACCLD : ${OACCLD} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} @@ -12348,6 +12828,16 @@ printf "%s\n" "$as_me: If you are satisfied, run 'make' to build ${PACKAGE_NAME} and its documentation; otherwise type ./configure --help=short for a complete list of configure options specific to ${PACKAGE_NAME}. " >&6;} +if test x"${pac_cv_openacc}" == x"yes" ; then + if test x"${FCOPENACC}" == x ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: + WARNING: OpenACC enabled, but no choice for FCOPENACC compile flag. + You may want to rerun configure with --with-fcopenacc= " >&5 +printf "%s\n" "$as_me: + WARNING: OpenACC enabled, but no choice for FCOPENACC compile flag. + You may want to rerun configure with --with-fcopenacc= " >&6;} + fi +fi ############################################################################### diff --git a/configure.ac b/configure.ac index 27cb9f38..b2d851ae 100755 --- a/configure.ac +++ b/configure.ac @@ -483,7 +483,7 @@ fi ############################################################################## BASEMODNAME=psb_base_mod PRECMODNAME=psb_prec_mod -METHDMODNAME=psb_krylov_mod +METHDMODNAME=psb_linsolve_mod UTILMODNAME=psb_util_mod if test "X$psblas_cv_fc" == X"cray" @@ -493,7 +493,7 @@ then FIFLAG="-I" BASEMODNAME=PSB_BASE_MOD PRECMODNAME=PSB_PREC_MOD - METHDMODNAME=PSB_KRYLOV_MOD + METHDMODNAME=PSB_LINSOLVE_MOD UTILMODNAME=PSB_UTIL_MOD else @@ -795,16 +795,19 @@ if test "x$psblas_cv_have_amd" == "xyes" ; then fi +PAC_ARG_CUDA() +if test "x$pac_cv_cuda" == "xyes"; then PAC_CHECK_CUDA() if test "x$pac_cv_have_cuda" == "xyes"; then PAC_CHECK_CUDA_VERSION() - CUDA_VERSION="$pac_cv_cuda_version"; - CUDA_SHORT_VERSION=$(expr $pac_cv_cuda_version / 1000); dnl PAC_CHECK_SPGPU() HAVE_CUDA="yes"; + CUDA_VERSION="$pac_cv_cuda_version"; + CUDA_SHORT_VERSION=$(expr $pac_cv_cuda_version / 1000); + CUDA_DEFINES="-DHAVE_CUDA -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}"; SPGPU_LIBS="-lspgpu"; CUDAD=cudad; CUDALD=cudald; @@ -814,7 +817,7 @@ if test "x$pac_cv_have_cuda" == "xyes"; then PAC_ARG_WITH_CUDACC() if test "x$pac_cv_cudacc" == "x"; then - pac_cv_cudacc="50,60,70,75"; + pac_cv_cudacc="50,60,70,75,80,86"; CUDA_CC="$pac_cv_cudacc"; fi if (( $pac_cv_cuda_version >= 11070 )) @@ -826,27 +829,72 @@ if test "x$pac_cv_have_cuda" == "xyes"; then CUDEFINES="$CUDEFINES -gencode arch=compute_$cc,code=sm_$cc"; done if test "x$pac_cv_cuda_version" != "xunknown"; then - CUDEFINES="$CUDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - FDEFINES="$FDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" - CDEFINES="$CDEFINES -DCUDA_SHORT_VERSION=${CUDA_SHORT_VERSION} -DCUDA_VERSION=${CUDA_VERSION}" + CUDEFINES="$CUDEFINES ${CUDA_DEFINES}" + FCUDEFINES=" ${CUDA_DEFINES}" + CCUDEFINES=" ${CUDA_DEFINES}" + CXXCUDEFINES=" ${CUDA_DEFINES}" fi fi if test "x$pac_cv_ipk_size" != "x4"; then AC_MSG_NOTICE([For CUDA I need psb_ipk_ to be 4 bytes but it is $pac_cv_ipk_size, disabling CUDA/SPGPU]) + pac_cv_cuda="no"; HAVE_CUDA="no"; CUDA_CC=""; SPGPU_LIBS=""; CUDAD=""; CUDALD=""; CUDEFINES=""; + CUDA_DEFINES=""; CUDA_INCLUDES=""; CUDA_LIBS=""; + FCUDEFINES=""; + CCUDEFINES=""; + CXXCUDEFINES=""; +fi fi +PAC_ARG_OPENACC() +dnl AC_ARG_ENABLE([openacc], +dnl [AS_HELP_STRING([--disable-openacc], [do not use Openacc])]) +if test x"$pac_cv_openacc" == x"yes" ; then + PAC_ARG_WITH_FLAGS(extraopenacc,EXTRAOPENACC) + dnl if test false; then + AX_C_OPENACC() + CCOPENACC="$ax_cv_prog_c_openacc"; + AX_CXX_OPENACC() + CXXOPENACC="$ax_cv_prog_cxx_openacc"; + AX_FC_OPENACC() + FCOPENACC="$ax_cv_prog_fc_openacc"; + dnl AX_OPENACC() + dnl + dnl CXXOPENACC="$ax_cv_prog_cxx_openacc"; + dnl FCOPENACC="$ax_cv_prog_fc_openacc"; + dnl else +dnl AC_MSG_NOTICE([OpenACC 1 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) + PAC_ARG_WITH_FLAGS(ccopenacc,CCOPENACC) + PAC_ARG_WITH_FLAGS(cxxopenacc,CXXOPENACC) + PAC_ARG_WITH_FLAGS(fcopenacc,FCOPENACC) +dnl AC_MSG_NOTICE([OpenACC 2 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) +dnl CCOPENACC="$ax_cv_prog_c_openacc"; +dnl CXXOPENACC="$ax_cv_prog_cxx_openacc"; +dnl FCOPENACC="$ax_cv_prog_fc_openacc"; +dnl fi + CCOPENACC="$CCOPENACC $EXTRAOPENACC"; + CXXOPENACC="$CXXOPENACC $EXTRAOPENACC"; + FCOPENACC="$FCOPENACC $EXTRAOPENACC"; +dnl AC_MSG_NOTICE([OpenACC 3 flags CC $CCOPENACC CXX $CXXOPENACC FC $FCOPENACC]) + OACCD=oaccd; + OACCLD=oaccld; + + #FCOPT="$FCOPT $FCOPENACC"; + #CCOPT="$CCOPT $CCOPENACC" + #CXXOPT="$CXXOPT $CXXOPENACC" + #FLINK="$FLINK $FCOPENACC"; +fi ############################################################################### -PAC_ARG_WITH_LIBRSB +dnl PAC_ARG_WITH_LIBRSB() LIBRSB_DIR="$pac_cv_librsb_dir"; AC_MSG_CHECKING([for LIBRSB install dir]) case $LIBRSB_DIR in @@ -878,7 +926,7 @@ fi LIBDIR=lib BASELIBNAME=libpsb_base.a PRECLIBNAME=libpsb_prec.a -METHDLIBNAME=libpsb_krylov.a +METHDLIBNAME=libpsb_linsolve.a UTILLIBNAME=libpsb_util.a ############################################################################### @@ -928,9 +976,9 @@ AC_SUBST(FINCLUDES) PSBLASRULES=' PSBLDLIBS=$(LAPACK) $(BLAS) $(METIS_LIB) $(AMD_LIB) $(LIBS) -CXXDEFINES=$(PSBCXXDEFINES) $(CUDA_DEFINES) -CDEFINES=$(PSBCDEFINES) $(CUDA_DEFINES) -FDEFINES=$(PSBFDEFINES) $(CUDA_DEFINES) +CXXDEFINES=$(PSBCXXDEFINES) +CDEFINES=$(PSBCDEFINES) +FDEFINES=$(PSBFDEFINES) # These should be portable rules, arent they? @@ -952,6 +1000,12 @@ AC_SUBST(PRECLIBNAME) AC_SUBST(METHDLIBNAME) AC_SUBST(UTILLIBNAME) AC_SUBST(METISINCFILE) +AC_SUBST(OACCD) +AC_SUBST(OACCLD) +AC_SUBST(FCOPENACC) +AC_SUBST(CCOPENACC) +AC_SUBST(CXXOPENACC) + AC_SUBST(SPGPU_FLAGS) AC_SUBST(SPGPU_LIBS) dnl AC_SUBST(SPGPU_DIR) @@ -960,6 +1014,9 @@ dnl AC_SUBST(SPGPU_INCDIR) AC_SUBST(EXTRALDLIBS) AC_SUBST(CUDA_DIR) AC_SUBST(CUDA_DEFINES) +AC_SUBST(FCUDEFINES) +AC_SUBST(CCUDEFINES) +AC_SUBST(CXXCUDEFINES) AC_SUBST(CUDA_INCLUDES) AC_SUBST(CUDA_LIBS) AC_SUBST(CUDA_VERSION) @@ -976,7 +1033,6 @@ AC_SUBST(LIBRSB_DIR) AC_SUBST(LIBRSB_DEFINES) AC_SUBST(LRSB) - ############################################################################### # the following files will be created by Automake @@ -1004,6 +1060,11 @@ AC_MSG_NOTICE([ CUDA : ${HAVE_CUDA} CUDA_CC : ${pac_cv_cudacc} + OPENACC : ${pac_cv_openacc} + FCOPENACC : ${FCOPENACC} + OACCD : ${OACCD} + OACCLD : ${OACCLD} + BLAS : ${BLAS_LIBS} METIS usable : ${psblas_cv_have_metis} @@ -1023,6 +1084,13 @@ dnl Note : we should use LDLIBS sooner or later! dnl To install the program and its documentation, run 'make install' if you are root, dnl or run 'su -c "make install"' if you are not root. ]) +if test x"${pac_cv_openacc}" == x"yes" ; then + if test x"${FCOPENACC}" == x ; then + AC_MSG_NOTICE([ + WARNING: OpenACC enabled, but no choice for FCOPENACC compile flag. + You may want to rerun configure with --with-fcopenacc= ]) + fi +fi ############################################################################### diff --git a/cuda/Makefile b/cuda/Makefile index 7e428629..a6757fe7 100755 --- a/cuda/Makefile +++ b/cuda/Makefile @@ -141,3 +141,12 @@ spgpuclean: $(MAKE) -C spgpu clean veryclean: clean + +.c.o: + $(CC) $(CCOPT) $(CCUDEFINES) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXCUDEFINES) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/cuda/cvectordev.c b/cuda/cvectordev.c index 65d41893..b05bca55 100644 --- a/cuda/cvectordev.c +++ b/cuda/cvectordev.c @@ -184,7 +184,7 @@ int iscatMultiVecDeviceFloatComplex(void* deviceVec, int vectorId, int n, } -int nrm2MultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiVecA) +int nrm2MultiVecDeviceFloatComplex(float* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -194,7 +194,7 @@ int nrm2MultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiV return(i); } -int amaxMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiVecA) +int amaxMultiVecDeviceFloatComplex(float* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -204,7 +204,7 @@ int amaxMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiV return(i); } -int asumMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devMultiVecA) +int asumMultiVecDeviceFloatComplex(float* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; diff --git a/cuda/cvectordev.h b/cuda/cvectordev.h index 8c40b95d..423da33e 100644 --- a/cuda/cvectordev.h +++ b/cuda/cvectordev.h @@ -37,6 +37,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedFloatComplex(void *, void **, int, cuFloatComplex); int writeMultiVecDeviceFloatComplex(void* deviceMultiVec, cuFloatComplex* hostMultiVec); @@ -63,9 +64,9 @@ int iscatMultiVecDeviceFloatComplex(void* deviceVec, int vectorId, int n, int fi int hfirst, void* host_values, int indexBase, cuFloatComplex beta); int scalMultiVecDeviceFloatComplex(cuFloatComplex alpha, void* devMultiVecA); -int nrm2MultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA); -int amaxMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA); -int asumMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA); +int nrm2MultiVecDeviceFloatComplex(float* y_res, int n, void* devVecA); +int amaxMultiVecDeviceFloatComplex(float* y_res, int n, void* devVecA); +int asumMultiVecDeviceFloatComplex(float* y_res, int n, void* devVecA); int dotMultiVecDeviceFloatComplex(cuFloatComplex* y_res, int n, void* devVecA, void* devVecB); int axpbyMultiVecDeviceFloatComplex(int n, cuFloatComplex alpha, void* devVecX, cuFloatComplex beta, void* devVecY); diff --git a/cuda/dnsdev.c b/cuda/dnsdev.c index 0a991012..3cf57976 100644 --- a/cuda/dnsdev.c +++ b/cuda/dnsdev.c @@ -178,12 +178,12 @@ int spmvDnsDeviceFloatComplex(char transa, int m, int n, int k, float complex *a /* Note: the M,N,K choices according to TRANS have already been handled in the caller */ if (n == 1) { status = cublasCgemv(handle, trans, m,k, - alpha, devMat->cM,devMat->pitch, x->v_,1, - beta, y->v_,1); + (const cuComplex *) alpha, devMat->cM,devMat->pitch, x->v_,1, + (const cuComplex *) beta, y->v_,1); } else { status = cublasCgemm(handle, trans, CUBLAS_OP_N, m,n,k, - alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, - beta, y->v_,y->pitch_); + (const cuComplex *) alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, + (const cuComplex *) beta, y->v_,y->pitch_); } if (status == CUBLAS_STATUS_SUCCESS) @@ -205,12 +205,12 @@ int spmvDnsDeviceDoubleComplex(char transa, int m, int n, int k, double complex /* Note: the M,N,K choices according to TRANS have already been handled in the caller */ if (n == 1) { status = cublasZgemv(handle, trans, m,k, - alpha, devMat->cM,devMat->pitch, x->v_,1, - beta, y->v_,1); + (const cuDoubleComplex *) alpha, devMat->cM,devMat->pitch, x->v_,1, + (const cuDoubleComplex *) beta, y->v_,1); } else { status = cublasZgemm(handle, trans, CUBLAS_OP_N, m,n,k, - alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, - beta, y->v_,y->pitch_); + (const cuDoubleComplex *) alpha, devMat->cM,devMat->pitch, x->v_,x->pitch_, + (const cuDoubleComplex *) beta, y->v_,y->pitch_); } if (status == CUBLAS_STATUS_SUCCESS) diff --git a/cuda/dvectordev.c b/cuda/dvectordev.c index a69e1b71..d4f5513b 100644 --- a/cuda/dvectordev.c +++ b/cuda/dvectordev.c @@ -220,7 +220,8 @@ int dotMultiVecDeviceDouble(double* y_res, int n, void* devMultiVecA, void* devM struct MultiVectDevice *devVecB = (struct MultiVectDevice *) devMultiVecB; spgpuHandle_t handle=psb_cudaGetHandle(); - spgpuDmdot(handle, y_res, n, (double*)devVecA->v_, (double*)devVecB->v_,devVecA->count_,devVecB->pitch_); + spgpuDmdot(handle, y_res, n, (double*)devVecA->v_, (double*)devVecB->v_, + devVecA->count_,devVecB->pitch_); return(i); } diff --git a/cuda/dvectordev.h b/cuda/dvectordev.h index 3834c0d3..0d2d2ab3 100644 --- a/cuda/dvectordev.h +++ b/cuda/dvectordev.h @@ -35,6 +35,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedDouble(void *, void **, int, double); int writeMultiVecDeviceDouble(void* deviceMultiVec, double* hostMultiVec); diff --git a/cuda/fcusparse_fct.h b/cuda/fcusparse_fct.h index 12be21bd..ec7166f5 100644 --- a/cuda/fcusparse_fct.h +++ b/cuda/fcusparse_fct.h @@ -439,7 +439,7 @@ int T_CSRGDeviceSetMatFillMode(T_Cmat *Matrix, int type) T_CSRGDeviceMat *cMat= Matrix->mat; cusparseFillMode_t mode=type; - CHECK_CUSPARSE(cusparseSpMatSetAttribute(cMat->spmvDescr, + CHECK_CUSPARSE(cusparseSpMatSetAttribute((*(cMat->spmvDescr)), CUSPARSE_SPMAT_FILL_MODE, (const void*) &mode, sizeof(cusparseFillMode_t))); @@ -450,7 +450,7 @@ int T_CSRGDeviceSetMatDiagType(T_Cmat *Matrix, int type) { T_CSRGDeviceMat *cMat= Matrix->mat; cusparseDiagType_t cutype=type; - CHECK_CUSPARSE(cusparseSpMatSetAttribute(cMat->spmvDescr, + CHECK_CUSPARSE(cusparseSpMatSetAttribute((*(cMat->spmvDescr)), CUSPARSE_SPMAT_DIAG_TYPE, (const void*) &cutype, sizeof(cusparseDiagType_t))); diff --git a/cuda/impl/Makefile b/cuda/impl/Makefile index 12bf0747..9ceb4575 100755 --- a/cuda/impl/Makefile +++ b/cuda/impl/Makefile @@ -295,3 +295,12 @@ lib: objs clean: /bin/rm -f $(OBJS) + +.c.o: + $(CC) $(CCOPT) $(CCUDEFINES) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCUDEFINES) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXCUDEFINES) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/cuda/ivectordev.h b/cuda/ivectordev.h index 2db54be4..6f3a32a0 100644 --- a/cuda/ivectordev.h +++ b/cuda/ivectordev.h @@ -35,6 +35,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedInt(void *, void **, int, int); int writeMultiVecDeviceInt(void* deviceMultiVec, int* hostMultiVec); diff --git a/cuda/psb_c_cuda_vect_mod.F90 b/cuda/psb_c_cuda_vect_mod.F90 index 45fafe0a..752d2bf1 100644 --- a/cuda/psb_c_cuda_vect_mod.F90 +++ b/cuda/psb_c_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine c_cuda_set_scal -!!$ -!!$ subroutine c_cuda_set_vect(x,val) -!!$ class(psb_c_vect_cuda), intent(inout) :: x -!!$ complex(psb_spk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_c_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine c_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_c_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n complex(psb_spk_) :: res - complex(psb_spk_), external :: ddot integer(psb_ipk_) :: info res = czero @@ -844,9 +831,6 @@ contains ! TYPE psb_c_vect ! select type(yy => y) - type is (psb_c_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_c_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -870,10 +854,10 @@ contains complex(psb_spk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n complex(psb_spk_) :: res - complex(psb_spk_), external :: ddot + complex(psb_spk_), external :: cdot if (x%is_dev()) call x%sync() - res = ddot(n,y,1,x%v,1) + res = cdot(n,y,1,x%v,1) end function c_cuda_dot_a @@ -1393,14 +1377,14 @@ module psb_c_cuda_multivect_mod end type psb_c_multivect_cuda public :: psb_c_multivect_cuda - private :: constructor + private :: mconstructor interface psb_c_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) complex(psb_spk_) :: x(:,:) type(psb_c_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1408,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine c_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_d_cuda_vect_mod.F90 b/cuda/psb_d_cuda_vect_mod.F90 index e7e563ff..4e17be02 100644 --- a/cuda/psb_d_cuda_vect_mod.F90 +++ b/cuda/psb_d_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine d_cuda_set_scal -!!$ -!!$ subroutine d_cuda_set_vect(x,val) -!!$ class(psb_d_vect_cuda), intent(inout) :: x -!!$ real(psb_dpk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_d_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine d_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_d_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n real(psb_dpk_) :: res - real(psb_dpk_), external :: ddot integer(psb_ipk_) :: info res = dzero @@ -844,9 +831,6 @@ contains ! TYPE psb_d_vect ! select type(yy => y) - type is (psb_d_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_d_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -1393,14 +1377,14 @@ module psb_d_cuda_multivect_mod end type psb_d_multivect_cuda public :: psb_d_multivect_cuda - private :: constructor + private :: mconstructor interface psb_d_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) real(psb_dpk_) :: x(:,:) type(psb_d_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1408,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine d_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_i_cuda_vect_mod.F90 b/cuda/psb_i_cuda_vect_mod.F90 index 461d84d1..eeafe90e 100644 --- a/cuda/psb_i_cuda_vect_mod.F90 +++ b/cuda/psb_i_cuda_vect_mod.F90 @@ -795,18 +795,6 @@ contains call x%set_dev() end subroutine i_cuda_set_scal -!!$ -!!$ subroutine i_cuda_set_vect(x,val) -!!$ class(psb_i_vect_cuda), intent(inout) :: x -!!$ integer(psb_ipk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_i_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine i_cuda_set_vect @@ -949,14 +937,14 @@ module psb_i_cuda_multivect_mod end type psb_i_multivect_cuda public :: psb_i_multivect_cuda - private :: constructor + private :: mconstructor interface psb_i_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) integer(psb_ipk_) :: x(:,:) type(psb_i_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -964,7 +952,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine i_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_s_cuda_vect_mod.F90 b/cuda/psb_s_cuda_vect_mod.F90 index a2c69934..3006ebd8 100644 --- a/cuda/psb_s_cuda_vect_mod.F90 +++ b/cuda/psb_s_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine s_cuda_set_scal -!!$ -!!$ subroutine s_cuda_set_vect(x,val) -!!$ class(psb_s_vect_cuda), intent(inout) :: x -!!$ real(psb_spk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_s_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine s_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_s_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res - real(psb_spk_), external :: ddot integer(psb_ipk_) :: info res = szero @@ -844,9 +831,6 @@ contains ! TYPE psb_s_vect ! select type(yy => y) - type is (psb_s_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_s_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -870,10 +854,10 @@ contains real(psb_spk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n real(psb_spk_) :: res - real(psb_spk_), external :: ddot + real(psb_spk_), external :: sdot if (x%is_dev()) call x%sync() - res = ddot(n,y,1,x%v,1) + res = sdot(n,y,1,x%v,1) end function s_cuda_dot_a @@ -1393,14 +1377,14 @@ module psb_s_cuda_multivect_mod end type psb_s_multivect_cuda public :: psb_s_multivect_cuda - private :: constructor + private :: mconstructor interface psb_s_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) real(psb_spk_) :: x(:,:) type(psb_s_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1408,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine s_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/psb_z_cuda_vect_mod.F90 b/cuda/psb_z_cuda_vect_mod.F90 index dfeafa6e..f4860911 100644 --- a/cuda/psb_z_cuda_vect_mod.F90 +++ b/cuda/psb_z_cuda_vect_mod.F90 @@ -813,18 +813,6 @@ contains call x%set_dev() end subroutine z_cuda_set_scal -!!$ -!!$ subroutine z_cuda_set_vect(x,val) -!!$ class(psb_z_vect_cuda), intent(inout) :: x -!!$ complex(psb_dpk_), intent(in) :: val(:) -!!$ integer(psb_ipk_) :: nr -!!$ integer(psb_ipk_) :: info -!!$ -!!$ if (x%is_dev()) call x%sync() -!!$ call x%psb_z_base_vect_type%set_vect(val) -!!$ call x%set_host() -!!$ -!!$ end subroutine z_cuda_set_vect @@ -834,7 +822,6 @@ contains class(psb_z_base_vect_type), intent(inout) :: y integer(psb_ipk_), intent(in) :: n complex(psb_dpk_) :: res - complex(psb_dpk_), external :: ddot integer(psb_ipk_) :: info res = zzero @@ -844,9 +831,6 @@ contains ! TYPE psb_z_vect ! select type(yy => y) - type is (psb_z_base_vect_type) - if (x%is_dev()) call x%sync() - res = ddot(n,x%v,1,yy%v,1) type is (psb_z_vect_cuda) if (x%is_host()) call x%sync() if (yy%is_host()) call yy%sync() @@ -858,7 +842,7 @@ contains class default ! y%sync is done in dot_a - call x%sync() + if (x%is_dev()) call x%sync() res = y%dot(n,x%v) end select @@ -870,10 +854,10 @@ contains complex(psb_dpk_), intent(in) :: y(:) integer(psb_ipk_), intent(in) :: n complex(psb_dpk_) :: res - complex(psb_dpk_), external :: ddot + complex(psb_dpk_), external :: zdot if (x%is_dev()) call x%sync() - res = ddot(n,y,1,x%v,1) + res = zdot(n,y,1,x%v,1) end function z_cuda_dot_a @@ -1393,14 +1377,14 @@ module psb_z_cuda_multivect_mod end type psb_z_multivect_cuda public :: psb_z_multivect_cuda - private :: constructor + private :: mconstructor interface psb_z_multivect_cuda - module procedure constructor + module procedure mconstructor end interface contains - function constructor(x) result(this) + function mconstructor(x) result(this) complex(psb_dpk_) :: x(:,:) type(psb_z_multivect_cuda) :: this integer(psb_ipk_) :: info @@ -1408,7 +1392,7 @@ contains this%v = x call this%asb(size(x,1),size(x,2),info) - end function constructor + end function mconstructor !!$ subroutine z_cuda_multi_gthzv_x(i,n,idx,x,y) diff --git a/cuda/spgpu/kernels/sdot.cu b/cuda/spgpu/kernels/sdot.cu index c19c7710..f91fab43 100644 --- a/cuda/spgpu/kernels/sdot.cu +++ b/cuda/spgpu/kernels/sdot.cu @@ -96,7 +96,6 @@ __global__ void spgpuSdot_kern(int n, float* x, float* y) { #endif - #ifdef ASSUME_LOCK_SYNC_PARALLELISM volatile float* vsSum = sSum; vsSum[threadIdx.x] = res; diff --git a/cuda/svectordev.c b/cuda/svectordev.c index cfaef5ce..ab4dd01b 100644 --- a/cuda/svectordev.c +++ b/cuda/svectordev.c @@ -220,7 +220,8 @@ int dotMultiVecDeviceFloat(float* y_res, int n, void* devMultiVecA, void* devMul struct MultiVectDevice *devVecB = (struct MultiVectDevice *) devMultiVecB; spgpuHandle_t handle=psb_cudaGetHandle(); - spgpuSmdot(handle, y_res, n, (float*)devVecA->v_, (float*)devVecB->v_,devVecA->count_,devVecB->pitch_); + spgpuSmdot(handle, y_res, n, (float*)devVecA->v_, (float*)devVecB->v_, + devVecA->count_,devVecB->pitch_); return(i); } diff --git a/cuda/svectordev.h b/cuda/svectordev.h index d5c85f78..887a7755 100644 --- a/cuda/svectordev.h +++ b/cuda/svectordev.h @@ -35,6 +35,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedFloat(void *, void **, int, float); int writeMultiVecDeviceFloat(void* deviceMultiVec, float* hostMultiVec); diff --git a/cuda/vectordev.h b/cuda/vectordev.h index df5fbd82..93cf1189 100644 --- a/cuda/vectordev.h +++ b/cuda/vectordev.h @@ -34,6 +34,7 @@ #include "cuda_runtime.h" //#include "common.h" //#include "cintrf.h" +#include "cuda_util.h" #include struct MultiVectDevice diff --git a/cuda/zvectordev.c b/cuda/zvectordev.c index d7d88f1b..49741582 100644 --- a/cuda/zvectordev.c +++ b/cuda/zvectordev.c @@ -183,7 +183,7 @@ int iscatMultiVecDeviceDoubleComplex(void* deviceVec, int vectorId, int n, } -int nrm2MultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA) +int nrm2MultiVecDeviceDoubleComplex(double* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -192,7 +192,7 @@ int nrm2MultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMult return(i); } -int amaxMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA) +int amaxMultiVecDeviceDoubleComplex(double* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -202,7 +202,7 @@ int amaxMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMult return(i); } -int asumMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA) +int asumMultiVecDeviceDoubleComplex(double* y_res, int n, void* devMultiVecA) { int i=0; spgpuHandle_t handle=psb_cudaGetHandle(); struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; @@ -223,7 +223,8 @@ int scalMultiVecDeviceDoubleComplex(cuDoubleComplex alpha, void* devMultiVecA) return(i); } -int dotMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devMultiVecA, void* devMultiVecB) +int dotMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, + void* devMultiVecA, void* devMultiVecB) {int i=0; struct MultiVectDevice *devVecA = (struct MultiVectDevice *) devMultiVecA; struct MultiVectDevice *devVecB = (struct MultiVectDevice *) devMultiVecB; diff --git a/cuda/zvectordev.h b/cuda/zvectordev.h index e15802f0..023c7f13 100644 --- a/cuda/zvectordev.h +++ b/cuda/zvectordev.h @@ -37,6 +37,7 @@ #include "vectordev.h" #include "cuda_runtime.h" #include "core.h" +#include "vector.h" int registerMappedDoubleComplex(void *, void **, int, cuDoubleComplex); int writeMultiVecDeviceDoubleComplex(void* deviceMultiVec, cuDoubleComplex* hostMultiVec); @@ -69,9 +70,9 @@ int iscatMultiVecDeviceDoubleComplex(void* deviceVec, int vectorId, int n, int indexBase, cuDoubleComplex beta); int scalMultiVecDeviceDoubleComplex(cuDoubleComplex alpha, void* devMultiVecA); -int nrm2MultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA); -int amaxMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA); -int asumMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA); +int nrm2MultiVecDeviceDoubleComplex(double* y_res, int n, void* devVecA); +int amaxMultiVecDeviceDoubleComplex(double* y_res, int n, void* devVecA); +int asumMultiVecDeviceDoubleComplex(double* y_res, int n, void* devVecA); int dotMultiVecDeviceDoubleComplex(cuDoubleComplex* y_res, int n, void* devVecA, void* devVecB); diff --git a/docs/Makefile b/docs/Makefile index b723f0d1..6ac24e64 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,7 +1,7 @@ all: guide guide: - cd src && $(MAKE) + cd src && $(MAKE) clean all doxy: - doxygen doxypsb \ No newline at end of file + doxygen doxypsb diff --git a/docs/doxypsb b/docs/doxypsb index 51b8c033..1e7456a9 100644 --- a/docs/doxypsb +++ b/docs/doxypsb @@ -52,7 +52,7 @@ PROJECT_LOGO = # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../psblas-3.4-doxygen +OUTPUT_DIRECTORY = ../../psblas-3.9-doxygen # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output diff --git a/docs/html/dia-.png b/docs/html/dia-.png new file mode 100644 index 00000000..de7db919 Binary files /dev/null and b/docs/html/dia-.png differ diff --git a/docs/html/ell-.png b/docs/html/ell-.png new file mode 100644 index 00000000..31911882 Binary files /dev/null and b/docs/html/ell-.png differ diff --git a/docs/html/hdia-.png b/docs/html/hdia-.png new file mode 100644 index 00000000..08bfb5ff Binary files /dev/null and b/docs/html/hdia-.png differ diff --git a/docs/html/hll-.png b/docs/html/hll-.png new file mode 100644 index 00000000..219b751a Binary files /dev/null and b/docs/html/hll-.png differ diff --git a/docs/html/index.html b/docs/html/index.html index 083bd90a..becc711a 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -10,16 +10,16 @@ -

PSBLAS

PSBLAS
User’s and Reference Guide
User’s and Reference Guide
A reference guide for the Parallel Sparse BLAS library
A reference guide for the Parallel Sparse BLAS library
Salvatore Filippone
Salvatore Filippone
Alfredo Buttari
Alfredo Buttari
Software version: 3.9.0
Aug 1st, 2024 @@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities
 10 Preconditioner routines
 11 Iterative Methods +href="userhtmlse11.html#x17-14300011" id="QQ2-17-174">Iterative Methods
 12 Extensions +href="userhtmlse12.html#x19-14600012" id="QQ2-19-177">Extensions
 13 CUDA Environment Routines +href="userhtmlse13.html#x20-15500013" id="QQ2-20-192">CUDA Environment Routines
 References +href="userhtmlli2.html#x21-170000" id="QQ2-21-221">References diff --git a/docs/html/mat-.png b/docs/html/mat-.png new file mode 100644 index 00000000..d4f5c6f9 Binary files /dev/null and b/docs/html/mat-.png differ diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index 9dc17886..7e85fe60 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -1,33 +1,62 @@ /* start css.sty */ -.cmr-7{font-size:70%;} -.cmmi-5{font-size:50%;font-style: italic;} -.cmmi-7{font-size:70%;font-style: italic;} -.cmmi-10{font-style: italic;} -.cmsy-7{font-size:70%;} -.cmbx-12x-x-144{font-size:172%; font-weight: bold;} -.cmbx-12x-x-144{ font-weight: bold;} -.cmbx-12x-x-144{ font-weight: bold;} -.cmti-10{ font-style: italic;} -.cmti-12{font-size:120%; font-style: italic;} -.cmbx-10{ font-weight: bold;} -.cmbx-10{ font-weight: bold;} -.cmbx-10{ font-weight: bold;} +.pplb7t-x-x-172{font-size:172%;font-weight: bold;} +.pplb7t-x-x-172{font-weight: bold;} +.pplb7t-x-x-172{font-weight: bold;} +.pplri7t-{font-style: italic;} +.pplri7t-{font-style: italic;} +.pplri7t-x-x-120{font-size:120%;font-style: italic;} +.pplri7t-x-x-120{font-style: italic;} +.pplb7t-{font-weight: bold;} +.pplb7t-{font-weight: bold;} +.pplb7t-{font-weight: bold;} .cmtt-10{font-family: monospace,monospace;} .cmtt-10{font-family: monospace,monospace;} .cmtt-10{font-family: monospace,monospace;} -.cmr-9{font-size:90%;} -.cmr-8{font-size:80%;} -.cmbx-12{font-size:120%; font-weight: bold;} -.cmbx-12{ font-weight: bold;} -.cmbx-12{ font-weight: bold;} +.pplr7t-x-x-76{font-size:76%;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-{font-style: italic;} +.zplmr7m-x-x-76{font-size:76%;font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-76{font-style: italic;} +.zplmr7m-x-x-60{font-size:60%;font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7m-x-x-60{font-style: italic;} +.zplmr7y-x-x-76{font-size:76%;} +.zplmr7t-x-x-76{font-size:76%;} +.pplr7t-x-x-90{font-size:90%;} +.pplr7t-x-x-80{font-size:80%;} +.pplb7t-x-x-120{font-size:120%;font-weight: bold;} +.pplb7t-x-x-120{font-weight: bold;} +.pplb7t-x-x-120{font-weight: bold;} .cmtt-8{font-size:80%;font-family: monospace,monospace;} .cmtt-8{font-family: monospace,monospace;} .cmtt-8{font-family: monospace,monospace;} .cmtt-9{font-size:90%;font-family: monospace,monospace;} .cmtt-9{font-family: monospace,monospace;} .cmtt-9{font-family: monospace,monospace;} -.cmmi-8{font-size:80%;font-style: italic;} +.pplr7t-x-x-70{font-size:70%;} +.zplmr7m-x-x-90{font-size:90%;font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7m-x-x-90{font-style: italic;} +.zplmr7y-x-x-90{font-size:90%;} +.zplmr7m-x-x-80{font-size:80%;font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7m-x-x-80{font-style: italic;} +.zplmr7t-x-x-80{font-size:80%;} +.pplrc7t-x-x-90{font-size:90%;} +.small-caps{font-variant: small-caps; } p{margin-top:0;margin-bottom:0} p.indent{text-indent:0;} p + p{margin-top:1em;} @@ -158,5 +187,11 @@ pre.listings{font-family: monospace,monospace; white-space: pre-wrap; margin-top pre.lstlisting{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; } pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; } .lstinputlisting .label{margin-right:0.5em;} +#TBL-24-1{border-left: 1px solid black;} +#TBL-24-1{border-right:1px solid black;} +#TBL-24-2{border-right:1px solid black;} +#TBL-24-3{border-right:1px solid black;} +#TBL-24-4{border-right:1px solid black;} +#TBL-24-5{border-right:1px solid black;} /* end css.sty */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index 083bd90a..becc711a 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -10,16 +10,16 @@ -

PSBLAS

PSBLAS
User’s and Reference Guide
User’s and Reference Guide
A reference guide for the Parallel Sparse BLAS library
A reference guide for the Parallel Sparse BLAS library
Salvatore Filippone
Salvatore Filippone
Alfredo Buttari
Alfredo Buttari
Software version: 3.9.0
Aug 1st, 2024 @@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities
 10 Preconditioner routines
 11 Iterative Methods +href="userhtmlse11.html#x17-14300011" id="QQ2-17-174">Iterative Methods
 12 Extensions +href="userhtmlse12.html#x19-14600012" id="QQ2-19-177">Extensions
 13 CUDA Environment Routines +href="userhtmlse13.html#x20-15500013" id="QQ2-20-192">CUDA Environment Routines
 References +href="userhtmlli2.html#x21-170000" id="QQ2-21-221">References diff --git a/docs/html/userhtml0x.png b/docs/html/userhtml0x.png index 3e324fc8..7b06aa11 100644 Binary files a/docs/html/userhtml0x.png and b/docs/html/userhtml0x.png differ diff --git a/docs/html/userhtml10x.png b/docs/html/userhtml10x.png index 5db77543..d95c1025 100644 Binary files a/docs/html/userhtml10x.png and b/docs/html/userhtml10x.png differ diff --git a/docs/html/userhtml11x.png b/docs/html/userhtml11x.png index e168a574..af3a720c 100644 Binary files a/docs/html/userhtml11x.png and b/docs/html/userhtml11x.png differ diff --git a/docs/html/userhtml12x.png b/docs/html/userhtml12x.png index df163814..b3d9749d 100644 Binary files a/docs/html/userhtml12x.png and b/docs/html/userhtml12x.png differ diff --git a/docs/html/userhtml13x.png b/docs/html/userhtml13x.png index 108c35cd..cb244f75 100644 Binary files a/docs/html/userhtml13x.png and b/docs/html/userhtml13x.png differ diff --git a/docs/html/userhtml14x.png b/docs/html/userhtml14x.png index 9a0f37dd..9d583958 100644 Binary files a/docs/html/userhtml14x.png and b/docs/html/userhtml14x.png differ diff --git a/docs/html/userhtml15x.png b/docs/html/userhtml15x.png index feaec761..3a2dbe01 100644 Binary files a/docs/html/userhtml15x.png and b/docs/html/userhtml15x.png differ diff --git a/docs/html/userhtml16.html b/docs/html/userhtml16.html index 88e57e0e..c7d5d813 100644 --- a/docs/html/userhtml16.html +++ b/docs/html/userhtml16.html @@ -10,10 +10,10 @@ -

-

+

4The string is case-insensitive

- + id="x16-136002x10.1"> 4The string is case-insensitive + diff --git a/docs/html/userhtml16x.png b/docs/html/userhtml16x.png index 3f5b67d7..19ca0c98 100644 Binary files a/docs/html/userhtml16x.png and b/docs/html/userhtml16x.png differ diff --git a/docs/html/userhtml17x.png b/docs/html/userhtml17x.png index 26e4a3a9..99871208 100644 Binary files a/docs/html/userhtml17x.png and b/docs/html/userhtml17x.png differ diff --git a/docs/html/userhtml18.html b/docs/html/userhtml18.html index 245d8cd5..679ab842 100644 --- a/docs/html/userhtml18.html +++ b/docs/html/userhtml18.html @@ -13,8 +13,11 @@

5Note: the implementation is for FCG(1).

+ id="x18-144004x11.1"> 5Note: the implementation is for FCG(1). diff --git a/docs/html/userhtml18x.png b/docs/html/userhtml18x.png index d33d825c..f781e90c 100644 Binary files a/docs/html/userhtml18x.png and b/docs/html/userhtml18x.png differ diff --git a/docs/html/userhtml19x.png b/docs/html/userhtml19x.png index a44a8a1a..92346849 100644 Binary files a/docs/html/userhtml19x.png and b/docs/html/userhtml19x.png differ diff --git a/docs/html/userhtml1x.png b/docs/html/userhtml1x.png index 933f19a7..42bbd7ec 100644 Binary files a/docs/html/userhtml1x.png and b/docs/html/userhtml1x.png differ diff --git a/docs/html/userhtml20x.png b/docs/html/userhtml20x.png index 170b8f17..ed2fd192 100644 Binary files a/docs/html/userhtml20x.png and b/docs/html/userhtml20x.png differ diff --git a/docs/html/userhtml21x.png b/docs/html/userhtml21x.png index 10ebc465..85e9af03 100644 Binary files a/docs/html/userhtml21x.png and b/docs/html/userhtml21x.png differ diff --git a/docs/html/userhtml22x.png b/docs/html/userhtml22x.png index 700fc628..f0a71dab 100644 Binary files a/docs/html/userhtml22x.png and b/docs/html/userhtml22x.png differ diff --git a/docs/html/userhtml23x.png b/docs/html/userhtml23x.png index eeeb8317..d8e518ee 100644 Binary files a/docs/html/userhtml23x.png and b/docs/html/userhtml23x.png differ diff --git a/docs/html/userhtml24x.png b/docs/html/userhtml24x.png index 194d79c7..3ade441e 100644 Binary files a/docs/html/userhtml24x.png and b/docs/html/userhtml24x.png differ diff --git a/docs/html/userhtml25x.png b/docs/html/userhtml25x.png index 51f10fd7..e1c548ac 100644 Binary files a/docs/html/userhtml25x.png and b/docs/html/userhtml25x.png differ diff --git a/docs/html/userhtml26x.png b/docs/html/userhtml26x.png index 37257ff8..e70146b3 100644 Binary files a/docs/html/userhtml26x.png and b/docs/html/userhtml26x.png differ diff --git a/docs/html/userhtml27x.png b/docs/html/userhtml27x.png index bd9e8f4f..f94ad5e3 100644 Binary files a/docs/html/userhtml27x.png and b/docs/html/userhtml27x.png differ diff --git a/docs/html/userhtml28x.png b/docs/html/userhtml28x.png index 112718a9..6a7c4b7f 100644 Binary files a/docs/html/userhtml28x.png and b/docs/html/userhtml28x.png differ diff --git a/docs/html/userhtml29x.png b/docs/html/userhtml29x.png index 46a83099..e3d801ea 100644 Binary files a/docs/html/userhtml29x.png and b/docs/html/userhtml29x.png differ diff --git a/docs/html/userhtml2x.png b/docs/html/userhtml2x.png index bc929ca7..4b12ea9e 100644 Binary files a/docs/html/userhtml2x.png and b/docs/html/userhtml2x.png differ diff --git a/docs/html/userhtml30x.png b/docs/html/userhtml30x.png index 276f94cf..c4cd68bb 100644 Binary files a/docs/html/userhtml30x.png and b/docs/html/userhtml30x.png differ diff --git a/docs/html/userhtml31x.png b/docs/html/userhtml31x.png index 55f88e51..0229601d 100644 Binary files a/docs/html/userhtml31x.png and b/docs/html/userhtml31x.png differ diff --git a/docs/html/userhtml32x.png b/docs/html/userhtml32x.png index f1fb77ea..b906670d 100644 Binary files a/docs/html/userhtml32x.png and b/docs/html/userhtml32x.png differ diff --git a/docs/html/userhtml33x.png b/docs/html/userhtml33x.png index b4a91874..6e996fed 100644 Binary files a/docs/html/userhtml33x.png and b/docs/html/userhtml33x.png differ diff --git a/docs/html/userhtml34x.png b/docs/html/userhtml34x.png new file mode 100644 index 00000000..c4cd68bb Binary files /dev/null and b/docs/html/userhtml34x.png differ diff --git a/docs/html/userhtml35x.png b/docs/html/userhtml35x.png new file mode 100644 index 00000000..6b89f4fe Binary files /dev/null and b/docs/html/userhtml35x.png differ diff --git a/docs/html/userhtml36x.png b/docs/html/userhtml36x.png new file mode 100644 index 00000000..269291b5 Binary files /dev/null and b/docs/html/userhtml36x.png differ diff --git a/docs/html/userhtml3x.png b/docs/html/userhtml3x.png index 29404472..14357fc6 100644 Binary files a/docs/html/userhtml3x.png and b/docs/html/userhtml3x.png differ diff --git a/docs/html/userhtml4x.png b/docs/html/userhtml4x.png index e17fca31..4734ca48 100644 Binary files a/docs/html/userhtml4x.png and b/docs/html/userhtml4x.png differ diff --git a/docs/html/userhtml5.html b/docs/html/userhtml5.html index 8231fcf4..a407f8e2 100644 --- a/docs/html/userhtml5.html +++ b/docs/html/userhtml5.html @@ -10,10 +10,10 @@ -
-

+

1In our prototype implementation we provide sample scatter/gather routines.

- + id="x5-3003x2"> 1In our prototype implementation we provide sample scatter/gather routines. + diff --git a/docs/html/userhtml5x.png b/docs/html/userhtml5x.png index 324d7f45..e94d3514 100644 Binary files a/docs/html/userhtml5x.png and b/docs/html/userhtml5x.png differ diff --git a/docs/html/userhtml6.html b/docs/html/userhtml6.html index d6dbd1dc..6f264aaf 100644 --- a/docs/html/userhtml6.html +++ b/docs/html/userhtml6.html @@ -13,12 +13,12 @@

2This is the normal situation when the pattern of the sparse matrix is symmetric, which is + id="x6-4002x2.1"> 2This is the normal situation when the pattern of the sparse matrix is symmetric, which is equivalent to equivalent to say that the interaction between two variables is reciprocal. If the matrix pattern is +class="pplr7t-x-x-80">say that the interaction between two variables is reciprocal. If the matrix pattern is non-symmetric we may non-symmetric we may have one-way interactions, and these could cause a situation in which a +class="pplr7t-x-x-80">have one-way interactions, and these could cause a situation in which a boundary point is not a halo point boundary point is not a halo point for its neighbour.

+class="pplr7t-x-x-80">for its neighbour. diff --git a/docs/html/userhtml6x.png b/docs/html/userhtml6x.png index 72a36e5d..acf15505 100644 Binary files a/docs/html/userhtml6x.png and b/docs/html/userhtml6x.png differ diff --git a/docs/html/userhtml7.html b/docs/html/userhtml7.html index f61a7dac..d004fb83 100644 --- a/docs/html/userhtml7.html +++ b/docs/html/userhtml7.html @@ -11,16 +11,16 @@
-

3The subroutine style 3The subroutine style psb_precinit and and psb_precbl are still supported for backward +class="cmtt-8">_precbld are still supported for backward compatibility

+class="pplr7t-x-x-80">compatibility diff --git a/docs/html/userhtml7x.png b/docs/html/userhtml7x.png index 5db77543..d95c1025 100644 Binary files a/docs/html/userhtml7x.png and b/docs/html/userhtml7x.png differ diff --git a/docs/html/userhtml8x.png b/docs/html/userhtml8x.png index 221e309e..4a85f66b 100644 Binary files a/docs/html/userhtml8x.png and b/docs/html/userhtml8x.png differ diff --git a/docs/html/userhtml9x.png b/docs/html/userhtml9x.png index 72555397..d381c15a 100644 Binary files a/docs/html/userhtml9x.png and b/docs/html/userhtml9x.png differ diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index e767ddcf..77486e09 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -10,7 +10,7 @@ - diff --git a/docs/html/userhtmlli2.html b/docs/html/userhtmlli2.html index e486077a..953072ab 100644 --- a/docs/html/userhtmlli2.html +++ b/docs/html/userhtmlli2.html @@ -16,194 +16,210 @@ href="userhtmlse13.html#tailuserhtmlse13.html" >prev-tail] [tail] [up]

References

+ id="x21-170000">References

[1]   G. Bella, S. Filippone, A. De Maio and M. Testa, A Simulation Model +class="pplri7t-">A Simulation Model for Forest Fires, in J. Dongarra, K. Madsen, J. Wasniewski, editors, +class="pplri7t-">for Forest Fires, in J. Dongarra, K. Madsen, J. Wasniewski, editors, Proceedings of PARA 04 Workshop on State of the Art in Scientific Computing, pp. 546–553, Lecture Notes in Computer Science, Springer, 2005.

[2]   A. Buttari, D. di Serafino, P. D’Ambra, S. Filippone, 2LEV-D2P4: - a package of high-performance preconditioners, Applicable Algebra in - Engineering, Communications and Computing, Volume 18, Number 3, May, - 2007, pp. 223-239 + id="XBERTACCINIFILIPPONE">D. Bertaccini and S. Filippone, Sparse approximate + inverse preconditioners on high performance GPU platforms, Comput. Math. + Appl., 71, (2016), no. 3, 693–711.

[3]   P. D’Ambra, S. Filippone, D. Di Serafino On the Development - of PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied - Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12, - November-December 2007, Pages 1181-1196. + id="X2007d">A. Buttari, D. di Serafino, P. D’Ambra, S. Filippone, 2LEV-D2P4: + a package of high-performance preconditioners, Applicable Algebra in + Engineering, Communications and Computing, Volume 18, Number 3, + May, 2007, pp. 223-239

[4]   P. D’Ambra, S. Filippone, D. Di Serafino On the Development of + PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied + Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12, + November-December 2007, Pages 1181-1196. +

+

+ [5]   Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., An Extended Set of Fortran Basic Linear Algebra Subprograms, ACM Trans. Math. Softw. vol. 14, 1–17, 1988.

- [5]      Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., A Set of level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw. vol. 16, 1–17, 1990. -

-

- [6]   J. J. Dongarra and R. C. Whaley, A User’s Guide to the BLACS - v. 1.1, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of - Tennessee, March 1995 (updated May 1997).

[7]   J. J. Dongarra and R. C. Whaley, A User’s Guide to the BLACS + v. 1.1, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of + Tennessee, March 1995 (updated May 1997). +

+

+ [8]   I. Duff, M. Marrone, G. Radicati and C. Vittoli, Level 3 Basic Linear +class="pplri7t-">Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: a User Level Interface, ACM +class="pplri7t-">Algebra Subprograms for Sparse Matrices: a User Level Interface, ACM Transactions on Mathematical Software, 23(3), pp. 379–401, 1997.

- [8]      I. Duff, M. Heroux and R. Pozo, An Overview of the Sparse Basic - Linear Algebra Subprograms: the New Standard from the BLAS Technical +class="pplri7t-">An Overview of the Sparse Basic Linear Forum, ACM Transactions on Mathematical Software, 28(2), pp. 239–267, - 2002. +class="pplri7t-">Algebra Subprograms: the New Standard from the BLAS Technical Forum, ACM + Transactions on Mathematical Software, 28(2), pp. 239–267, 2002.

- [9]   S. Filippone and M. Colajanni, PSBLAS: A Library for Parallel + [10]   S. Filippone and M. Colajanni, PSBLAS: A Library for Parallel Linear Algebra Computation on Sparse Matrices, ACM Transactions on +class="pplri7t-">Linear Algebra Computation on Sparse Matrices, ACM Transactions on Mathematical Software, 26(4), pp. 527–550, 2000.

- [10]   S. Filippone and A. Buttari, Object-Oriented Techniques for Sparse + [11]   S. Filippone and A. Buttari, Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, ACM Transactions on Mathematical +class="pplri7t-">Matrix Computations in Fortran 2003, ACM Transactions on Mathematical Software, 38(4), 2012.

- [11]      S. Filippone, P. D’Ambra, M. Colajanni, Using a Parallel Library +class="pplri7t-">Using a Parallel Library of of Sparse Linear Algebra in a Fluid Dynamics Applications Code on +class="pplri7t-">Sparse Linear Algebra in a Fluid Dynamics Applications Code on Linux Linux Clusters, in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, +class="pplri7t-">Clusters, in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, Parallel Computing - Advances & Current Issues, pp. 441–448, Imperial College Press, 2002.

- [12]    Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design + [13]    Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. +class="pplri7t-">Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.

- [13]   Karypis, G. and Kumar, V., METIS: Unstructured Graph Partitioning + [14]   Karypis, G. and Kumar, V., METIS: Unstructured Graph Partitioning and Sparse Matrix Ordering System. Minneapolis, MN 55455: University +class="pplri7t-">and Sparse Matrix Ordering System. Minneapolis, MN 55455: University of Minnesota, Department of Computer Science, 1995. Internet Address: http://www.cs.umn.edu/~karypis. + + +

- [14]      Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., Basic Linear Algebra Subprograms for Fortran usage, ACM Trans. Math. Softw. vol. 5, 38–329, 1979. - - -

- [15]   Machiels, L. and Deville, M. Fortran 90: An entry to object-oriented + [16]   Machiels, L. and Deville, M. Fortran 90: An entry to object-oriented programming for the solution of partial differential equations. ACM Trans. +class="pplri7t-">programming for the solution of partial differential equations. ACM Trans. Math. Softw. vol. 23, 32–49.

- [16]      Metcalf, M., Reid, J. and Cohen, M. Fortran 95/2003 explained. Oxford +class="pplri7t-">Fortran 95/2003 explained. Oxford University Press, 2004.

- [17]      Metcalf, M., Reid, J. and Cohen, M. Modern Fortran explained. Oxford +class="pplri7t-">Modern Fortran explained. Oxford University Press, 2011.

- [18]   Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The + [19]   Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The Object-Oriented Way. Cambridge University Press (2011)

- [19]      M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, - MIT Press, 1998. +class="pplri7t-">MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, MIT + Press, 1998.

- [20]    - D. Barbieri, V. Cardellini, S. Filippone and D. Rouson Design Patterns + [21]   D. Barbieri, V. Cardellini, + S. Filippone and D. Rouson Design Patterns for Scientific Computations for Scientific Computations on Sparse Matrices, HPSS 2011, Algorithms - and Programming Tools for Next-Generation High-Performance Scientific - Software, Bordeaux, Sep. 2011 +class="pplri7t-">on Sparse Matrices, HPSS 2011, Algorithms and Programming Tools for + Next-Generation High-Performance Scientific Software, Bordeaux, Sep. + 2011

- [21]    Cardellini, V., Filippone, S., and Rouson, D. 2014, Design patterns + [22]    Cardellini, V., Filippone, S., and Rouson, D. 2014, Design patterns for sparse-matrix computations on hybrid CPU/GPU platforms, Scientific +class="pplri7t-">Scientific Programming 22, 1, 1–19. +class="pplri7t-">Programming 22, 1, 1–19.

+ + +

- [22]      D. Barbieri, V. Cardellini, A. Fanfarillo, S. Filippone, Three storage formats for sparse matrices on GPGPUs, Tech. Rep. DICII RR-15.6, Universit di Roma Tor Vergata (February 2015). +

+

+ [24]   S. Filippone, V. Cardellini, D. Barbieri, and A. Fanfarillo. Sparse + matrix-vector multiplication on GPGPUs. ACM Trans. Math. Softw., + 43(4):30:1–30:49, 2017.

- -

1 1 Introduction

The PSBLAS library, developed with the aim to facilitate the parallelization of computationally intensive scientific applications, is designed to address parallel -implementation of iterative solvers for sparse linear systems through the distributed -memory paradigm. It includes routines for multiplying sparse matrices by dense -matrices, solving block diagonal systems with triangular diagonal entries, -preprocessing sparse matrices, and contains additional routines for dense matrix -operations. The current implementation of PSBLAS addresses a distributed memory -execution model operating with message passing. +implementation of iterative solvers for sparse linear systems through the +distributed memory paradigm. It includes routines for multiplying sparse +matrices by dense matrices, solving block diagonal systems with triangular +diagonal entries, preprocessing sparse matrices, and contains additional +routines for dense matrix operations. The current implementation of PSBLAS +addresses a distributed memory execution model operating with message +passing.

The PSBLAS library version 3 is implemented in the Fortran 2003 [16] +href="userhtmlli2.html#Xmetcalf">17] programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. -

The use of Fortran 2003 offers a number of advantages over Fortran 95, mostly in -the handling of requirements for evolution and adaptation of the library to new -computing architectures and integration of new algorithms. For a detailed discussion -of our design see [10]; other works discussing advanced programming in Fortran 2003 -include [2018]; sufficient support for Fortran 2003 is now available from many -compilers, including the GNU Fortran compiler from the Free Software Foundation -(as of version 4.8). +

The use of Fortran 2003 offers a number of advantages over Fortran 95, mostly +in the handling of requirements for evolution and adaptation of the library to new +computing architectures and integration of new algorithms. For a detailed +discussion of our design see [11]; other works discussing advanced programming in +Fortran 2003 include [2119]; sufficient support for Fortran 2003 is now available +from many compilers, including the GNU Fortran compiler from the Free Software +Foundation (as of version 4.8).

Previous approaches have been based on mixing Fortran 95, with its support for -object-based design, with other languages; these have been advocated by a number of -authors, e.g. [15]. Moreover, the Fortran 95 facilities for dynamic memory +object-based design, with other languages; these have been advocated by a number +of authors, e.g. [16]. Moreover, the Fortran 95 facilities for dynamic memory management and interface overloading greatly enhance the usability of the PSBLAS subroutines. In this way, the library can take care of runtime memory requirements that are quite difficult or even impossible to predict at implementation or compilation time.

The presentation of the PSBLAS library follows the general structure of the proposal for serial Sparse BLAS [78], which in its turn is based on the proposal for +href="userhtmlli2.html#Xsblas97">8, 9], which in its turn is based on the proposal for BLAS on dense matrices [1445]. -

The applicability of sparse iterative solvers to many different areas causes some -terminology problems because the same concept may be denoted through different -names depending on the application area. The PSBLAS features presented in this -document will be discussed referring to a finite difference discretization of a Partial -Differential Equation (PDE). However, the scope of the library is wider than that: for -example, it can be applied to finite element discretizations of PDEs, and even to -different classes of problems such as nonlinear optimization, for example in optimal -control problems. +href="userhtmlli2.html#XBLAS1">15, 56]. +

The applicability of sparse iterative solvers to many different areas causes +some terminology problems because the same concept may be denoted +through different names depending on the application area. The PSBLAS +features presented in this document will be discussed referring to a finite +difference discretization of a Partial Differential Equation (PDE). However, +the scope of the library is wider than that: for example, it can be applied +to finite element discretizations of PDEs, and even to different classes of +problems such as nonlinear optimization, for example in optimal control +problems.

The design of a solver for sparse linear systems is driven by many conflicting objectives, such as limiting occupation of storage resources, exploiting regularities in the input data, exploiting hardware characteristics of the parallel platform. To achieve an optimal communication to computation ratio on distributed memory -machines it is essential to keep the data locality as high as possible; this can be -done through an appropriate data allocation strategy. The choice of the +machines it is essential to keep the data locality as high as possible; this can +be done through an appropriate data allocation strategy. The choice of the preconditioner is another very important factor that affects efficiency of the implemented application. Optimal data distribution requirements for a given preconditioner may conflict with distribution requirements of the rest of the solver. diff --git a/docs/html/userhtmlse10.html b/docs/html/userhtmlse10.html index e99244c4..6968240e 100644 --- a/docs/html/userhtmlse10.html +++ b/docs/html/userhtmlse10.html @@ -15,7 +15,7 @@ href="userhtmlse9.html" >prev] [prev-tail] [tail] [up]

-

10 10 Preconditioner routines

The base PSBLAS library contains the implementation of two simple preconditioning techniques: @@ -29,12 +29,12 @@ techniques: psb_prec_mod. The old interfaces psb_precinit and psb_precbld are still -supported for backward compatibility +class="cmtt-10">psb_precbld are still supported +for backward compatibility -

10.1 10.1 init — Initialize a preconditioner

@@ -47,61 +47,61 @@ call prec%init(icontxt,ptype, info)

Type:

Type:

Asynchronous.

On Entry

On Entry

icontxt

icontxt

the communication context.
Scope:global.
global.
Type:required.
required.
Intent: in.
in.
Specified as: an integer value.

ptype

ptype

the type of preconditioner. Scope: global
global
Type: required
required
Intent: in.
in.
Specified as: a character string, see usage notes.

On Exit

On Exit

prec

prec

Scope: local
local
Type: required
required
Intent: inout.
inout.
Specified as: a preconditioner data structure psb_prec_Tprec_type. @@ -109,139 +109,442 @@ class="cmtt-10">_type.

info

info

Scope: global
global
Type: required
required
Intent: out.
out.
Error code: if no error, 0 is returned.

Notes Legal inputs to this subroutine are interpreted depending on the ptype string as +class="pplb7t-x-x-120">Notes Legal inputs to this subroutine are interpreted depending on the ptype string as follows4 :

NONE

NONE

No preconditioning, i.e. the preconditioner is just a copy operator.

DIAG

DIAG

Diagonal scaling; each entry of the input vector is multiplied by the reciprocal of the sum of the absolute values of the coefficients in the corresponding row of matrix A; +class="zplmr7m-">A;

BJAC

BJAC
-

Precondition by a factorization of the block-diagonal of matrix A, where - block boundaries are determined by the data allocation boundaries - for each process; requires no communication. Only the incomplete - factorization ILU(0) is currently implemented.

+

Precondition by a factorization or an approximante inverse of the + block-diagonal of matrix A, where block boundaries are determined + by the data allocation boundaries for each process; requires no + communication. See also Table-21. -

10.2 build — Builds a preconditioner

+

10.2 Set — set preconditioner parameters

+
+

+

call p%set(what,val,info)

+

This method sets the parameters defining the subdomain solver when the +preconditioner type is BJAC. More precisely, the parameter identified by what is +assigned the value contained in val. +

Arguments +

+ + + + +

what

character(len=*).

The parameter to be set. It can be specified through its name; the string is +case-insensitive. See Table 21.

val

integer or character(len=*) or real(psb_spk_) or real(psb_dpk_), +intent(in).

The value of the parameter to be set. The list of allowed values and the +corresponding data types is given in Table 21. When the value is of type +character(len=*), it is also treated as case insensitive.

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 8 for details.

+

A number of subdomain solvers can be chosen with this method; a list of the +parameters that can be set, along with their allowed and default values, is given in +Table-21.
+

+ + + +


+ + + +
+

+

+ + + + + + + +





what

data type

val

default

comments






SUB_SOLVE

character(len=*)

ILU +

ILUT +

INVT +

INVK +

AINV

The local solver to be used with the smoother +or one-level preconditioner ILU(p), ILU(p, t), +Approximate Inverses +INVK(p, q), INVT(p1, p2, t1, t2) and AINV(t); +note that approximate inverses are specifically +suited for GPUs since they do not employ +triangular system solve kernels, see [2].






SUB_FILLIN

integer

Any integer +

number 0

0

Fill-in level p of the incomplete LU +factorizations.






SUB_ILUTHRS

real(kind_parameter)

Any real +number 0

0

Drop tolerance t in the ILU(p, t) factorization.






ILU_ALG

character(len=*)

MILU

NONE

ILU algorithmic variant






ILUT_SCALE

character(len=*)

MAXVAL +

DIAG +

ARSWUM +

ARCSUM +

ACLSUM +

NONE

NONE

ILU scaling strategy






INV_FILLIN

integer

Any integer +

number 0

0

Second fill-in level q of the INVK(p, q) +approximate inverse.






INV_ILUTHRS

real(kind_parameter)

Any real +number 0

0

Second drop tolerance s in the INVT(t, s) +approximate inverse.






AINV_ALG

character(len=*)

LLK +

SYM-LLK +

STAB-LLK +

MLK,LMX

LLK

AINV algorithmic strategy.






+
Table 21: Parameters defining the solver of the BJAC preconditioner.
+ + + +

+
+ + + +

10.3 build — Builds a preconditioner

 call prec%build(a, desc_a, info[,amold,vmold,imold])
 
-

-

+

+

-

+

Type:

Type:
-

Synchronous. +

Synchronous.

-

+

On Entry

On Entry
-

+

-

+

a

a
-

the system sparse matrix. Scope: local

the system sparse matrix. Scope: local
Type: required
required
Intent: in, target.
in, target.
Specified as: a sparse matrix data structure psb_Tspmat_type.

-

+

prec

prec
-

the preconditioner.

the preconditioner.
Scope: local
local
Type: required
required
Intent: inout.
inout.
Specified as: an already initialized precondtioner data structure psb_prec_Tprec_type

-

+

desc_a

desc_a
-

the problem communication descriptor. Scope: local

the problem communication descriptor. Scope: local
Type: required
required
Intent: in, target.
in, target.
Specified as: a communication descriptor data structure psb_desc_type.

-

+

amold

amold
-

The desired dynamic type for the internal matrix storage.

The desired dynamic type for the internal matrix storage.
Scope: local.
local.
Type: optional.
optional.
Intent: in.
in.
Specified as: an object of a class derived from psb_base_sparse_mat.

-

+

vmold

vmold
-

The desired dynamic type for the internal vector storage.

The desired dynamic type for the internal vector storage.
Scope: local.
local.
Type: optional.
optional.
Intent: in.
in.
Specified as: an object of a class derived from psb_base_vect_type.

-

+

imold

imold
-

The desired dynamic type for the internal integer vector storage.

The desired dynamic type for the internal integer vector storage.
Scope: local.
local.
Type: optional.
optional.
Intent: in.
Specified as: an object of a class derived from (integer) +class="pplb7t-">in.
Specified as: an object of a class derived from (integer) psb_T_base_vect_type.

-

+

-

+

On Return

On Return
-

+

-

+

prec

prec
-

the preconditioner.

the preconditioner.
Scope: local
local
Type: required
required
Intent: inout.
inout.
Specified as: a precondtioner data structure psb_prec_Tprec_type

-

+

info

info
-

Error code.

Error code.
Scope: local
local
Type: required
required
Intent: out.
out.
An integer value; 0 means no error has been detected.

-

The

The amold, vmold and imold arguments may be employed to interface with special @@ -337,8 +640,8 @@ devices, such as GPUs and other accelerators. -

10.3 apply — Preconditioner application routine

+

10.4 apply — Preconditioner application routine

@@ -346,47 +649,47 @@ devices, such as GPUs and other accelerators. call prec%apply(x,y,desc_a,info,trans,work) call prec%apply(x,desc_a,info,trans) -

-

+

+

-

+

Type:

Type:
-

Synchronous. +

Synchronous.

-

+

On Entry

On Entry
-

+

-

+

prec

prec
-

the preconditioner. Scope: local

the preconditioner. Scope: local
Type: required
required
Intent: in.
in.
Specified as: a preconditioner data structure psb_prec_Tprec_type.

-

+

x

x
-

the source vector. Scope: local

the source vector. Scope: local
Type: required
required
Intent: inout.
inout.
Specified as: a rank one array or an object of type psb_T_vect_type.

-

+

desc_a

desc_a
-

the problem communication descriptor. Scope: local

the problem communication descriptor. Scope: local
Type: required
required
Intent: in.
in.
Specified as: a communication data structure psb_desc_type.

-

+

trans

trans
-

Scope:

Scope:
Type: optional
optional
Intent: in.
in.
Specified as: a character.

-

+

work

work
-

an optional work space Scope: local

an optional work space Scope: local
Type: optional
optional
Intent: inout.
inout.
Specified as: a double precision array.

-

+

-

+

On Return

On Return
-

+

-

+

y

y
-

the destination vector. Scope: local

the destination vector. Scope: local
Type: required
required
Intent: inout.
inout.
Specified as: a rank one array or an object of type psb_T_vect_type.

-

+

info

info
-

Error code.

Error code.
Scope: local
local
Type: required
required
Intent: out.
out.
An integer value; 0 means no error has been detected.

-

10.4 descr — Prints a description of current preconditioner

+

10.5 descr — Prints a description of current preconditioner

@@ -485,218 +788,218 @@ class="newline" />An integer value; 0 means no error has been detected. -

-

+

+

-

+

Type:

Type:
-

Asynchronous. +

Asynchronous.

-

+

On Entry

On Entry
-

+

-

+

prec

prec
-

the preconditioner. Scope: local

the preconditioner. Scope: local
Type: required
required
Intent: in.
in.
Specified as: a preconditioner data structure psb_prec_Tprec_type.

-

+

iout

iout
-

output unit. Scope: local

output unit. Scope: local
Type: optional
optional
Intent: in.
in.
Specified as: an integer number. Default: default output unit.

-

+

root

root
-

Process from which to print Scope: local

Process from which to print Scope: local
Type: optional
optional
Intent: in.
in.
Specified as: an integer number between 0 and np - 1, in which case +class="zplmr7m-">np- 1, in which case the specified process will print the description, or -1, in which case all +class="zplmr7y-">-1, in which case all processes will print. Default: 0.

-

+

On Return

On Return
-

+

-

+

info

info
-

Error code.

Error code.
Scope: local
local
Type: required
required
Intent: out.
out.
An integer value; 0 means no error has been detected.

-

10.5 clone — clone current preconditioner

+

10.6 clone — clone current preconditioner

 call  prec%clone(precout,info)
 
-

-

+

+

-

+

Type:

Type:
-

Asynchronous. +

Asynchronous.

-

+

On Entry

On Entry
-

+

-

+

prec

prec
-

the preconditioner.

the preconditioner.
Scope: local.
local.

-

+

-

+

On Return

On Return
-

+

-

+

precout

precout
-

A copy of the input object. +

A copy of the input object.

-

+

info

info
-

Return code.

+

Return code. -

10.6 free — Free a preconditioner

+

10.7 free — Free a preconditioner

 call prec%free(info)
 
-

-

+

+

-

+

Type:

Type:
-

Asynchronous. +

Asynchronous.

-

+

On Entry

On Entry
-

+

-

+

prec

prec
-

the preconditioner.

the preconditioner.
Scope: local.
local.
Type: required
required
Intent: inout.
inout.
Specified as: a preconditioner data structure psb_prec_Tprec_type.

-

+

On Exit

On Exit
-

+

-

+

prec

prec
-

Scope: local

Scope: local
Type: required
required
Intent: inout.
inout.
Specified as: a preconditioner data structure psb_prec_Tprec_type.

-

+

info

info
-

Scope: global

Scope: global
Type: required
required
Intent: out.
out.
Error code: if no error, 0 is returned.

-

Notes Releases all internal storage. +

Notes Releases all internal storage. diff --git a/docs/html/userhtmlse11.html b/docs/html/userhtmlse11.html index 41a4cd65..bd2de1e4 100644 --- a/docs/html/userhtmlse11.html +++ b/docs/html/userhtmlse11.html @@ -15,49 +15,48 @@ href="userhtmlse10.html" >prev] [prev-tail] [tail] [up]

-

11 Iterative Methods

-

In this chapter we provide routines for preconditioners and iterative methods. -The interfaces for Krylov subspace methods are available in the module -psb_krylov_mod. +

11 Iterative Methods

+

In this chapter we provide routines for preconditioners and iterative methods. The +interfaces for iterative methods are available in the module psb_linsolve_mod. -

11.1 psb_krylov — Krylov Methods Driver Routine

+

11.1 psb_krylov — Krylov Methods Driver Routine

This subroutine is a driver that provides a general interface for all the Krylov-Subspace family methods implemented in PSBLAS version 2.

The stopping criterion can take the following values:

1

1

normwise backward error in the infinity norm; the iteration is stopped when

      -----∥ri∥------
-err = (∥A∥∥xi∥+ ∥b∥) < eps
+src=

2

2

Relative residual in the 2-norm; the iteration is stopped when

      ∥ri∥-
-err = ∥b∥2 < eps
+src=

3

3

Relative residual reduction in the 2-norm; the iteration is stopped when

@@ -67,23 +66,24 @@ err = ∥r0∥2 < eps " class="math-display" >

The behaviour is controlled by the istop argument (see later). In the above formulae, xi +class="zplmr7m-">xi is the tentative solution and ri = b - Axi the corresponding residual at the i-th +class="zplmr7m-">ri = b-Axi the corresponding residual at the i-th iteration. -

call psb_krylov(,info,& 
    )

Type:

Type:

Synchronous.

On Entry

On Entry

method

method

a string that defines the iterative method to be used. Supported values are:

CG:

CG:

the Conjugate Gradient method;

CGS:

CGS:

the Conjugate Gradient Stabilized method;

GCR:

GCR:

the Generalized Conjugate Residual method;

FCG:

FCG:

the Flexible Conjugate Gradient method5 ; + id="x17-144003f5"> ;

BICG:

BICG:

the Bi-Conjugate Gradient method;

BICGSTAB:

BICGSTAB:

the Bi-Conjugate Gradient Stabilized method; @@ -189,28 +189,28 @@ class="description">

BICGSTABL:

BICGSTABL:

the Bi-Conjugate Gradient Stabilized method with restarting;

RGMRES:

RGMRES:

the Generalized Minimal Residual method with restarting.

a

a

the local portion of global sparse matrix A.
A.
Scope: local
local
Type: required
required
Intent: in.
in.
Specified as: a structured data of type psb_type.

prec

prec

The data structure containing the preconditioner.
Scope: local
local
Type: required
required
Intent: in.
in.
Specified as: a structured data of type psb_prec_Tprec_type.

b

b

The RHS vector.
Scope: local
local
Type: required
required
Intent: in.
in.
Specified as: a rank one array or an object of type psb_type.

x

x

The initial guess.
Scope: local
local
Type: required
required
Intent: inout.
inout.
Specified as: a rank one array or an object of type psb_type.

eps

eps

The stopping tolerance.
Scope: global
global
Type: required
required
Intent: in.
in.
Specified as: a real number.

desc_a

desc_a

contains data structures for communications.
Scope: local
local
Type: required
required
Intent: in.
in.
Specified as: a structured data of type psb_type.

itmax

itmax

The maximum number of iterations to perform.
Scope: global
global
Type: optional
optional
Intent: in.
in.
Default: itmax = 1000.
itmax = 1000.
Specified as: an integer variable itmax 1. +class="zplmr7m-">itmax 1.

itrace

itrace

If > 0 print out an informational message about convergence every itrace - iterations. If = 0 print a message in case of convergence failure.
> 0 print out an informational message about convergence every itrace + iterations. If = 0 print a message in case of convergence failure.
Scope: global
global
Type: optional
optional
Intent: in.
in.
Default: itrace = -1.
itrace = -1.

irst

irst

An integer specifying the restart parameter.
Scope: global
global
Type: optional.
optional.
Intent: in.
in.
Values: irst > 0. This is employed for the BiCGSTABL or RGMRES methods, +class="zplmr7m-">irst > 0. This is employed for the BiCGSTABL or RGMRES methods, otherwise it is ignored.

istop

istop

An integer specifying the stopping criterion.
Scope: global
global
Type: optional.
optional.
Intent: in.
in.
Values: 1: use the normwise backward error, 2: use the scaled 2-norm of the residual, 3: use the residual reduction in the 2-norm. Default: 2.

On Return

On Return

x

x

The computed solution.
Scope: local
local
Type: required
required
Intent: inout.
inout.
Specified as: a rank one array or an object of type psb_type.

iter

iter

The number of iterations performed.
Scope: global
global
Type: optional
optional
Intent: out.
out.
Returned as: an integer variable.

err

err

The convergence estimate on exit.
Scope: global
global
Type: optional
optional
Intent: out.
out.
Returned as: a real number.

cond

cond

An estimate of the condition number of matrix A; only available with the CG +class="zplmr7m-">A; only available with the CG method on real data.
Scope: global
global
Type: optional
optional
Intent: out.
out.
Returned as: a real number. A correct result will be greater than or equal to one; if specified for non-real data, or an error occurred, zero is returned.

info

info

Error code.
Scope: local
local
Type: required
required
Intent: out.
out.
An integer value; 0 means no error has been detected.

+ + + +

11.2 psb_richardson — Richardson Iteration Driver Routine

+

This subroutine is a driver implementig a Richardson iteration +

+x   = M - 1(b - Ax )+ x ,
+ k+1             k    k
+
+

with the preconditioner operator M defined in the previous section. +

The stopping criterion can take the following values: +

+

+1

+

normwise backward error in the infinity norm; the iteration is stopped + when +

+     ------∥ri∥------
+err = (∥A ∥∥xi∥ + ∥b∥) < eps
+
+

+

+

+2

+

Relative residual in the 2-norm; the iteration is stopped when +

+      ∥ri∥-
+err = ∥b∥ 2 < eps
+
+

+

+

+3

+

Relative residual reduction in the 2-norm; the iteration is stopped when +

+     -∥ri∥-
+err = ∥r0∥2 < eps
+
+

+ + + +

The behaviour is controlled by the istop argument (see later). In the above formulae, xi +is the tentative solution and ri = b-Axi the corresponding residual at the i-th +iteration. + +

call psb_richardson(a,prec,b,x,eps,desc_a,info,& 
+    & itmax,iter,err,itrace,istop)
+ +

+

+

+Type:

+

Synchronous. +

+

+On Entry

+

+

+

+a

+

the local portion of global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_Tspmat_type. +

+

+prec

+

The data structure containing the preconditioner.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_Tprec_type. +

+

+b

+

The RHS vector.
Scope: local
Type: required
Intent: in.
Specified as: a rank one array or an object of type psb_T_vect_type. +

+

+x

+ + + +

The initial guess.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one array or an object of type psb_T_vect_type. +

+

+eps

+

The stopping tolerance.
Scope: global
Type: required
Intent: in.
Specified as: a real number. +

+

+desc_a

+

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_desc_type. +

+

+itmax

+

The maximum number of iterations to perform.
Scope: global
Type: optional
Intent: in.
Default: itmax = 1000.
Specified as: an integer variable itmax 1. +

+

+itrace

+

If > 0 print out an informational message about convergence every itrace + iterations. If = 0 print a message in case of convergence failure.
Scope: global
Type: optional
Intent: in.
Default: itrace = -1.
+

+

+istop

+ + + +

An integer specifying the stopping criterion.
Scope: global
Type: optional.
Intent: in.
Values: 1: use the normwise backward error, 2: use the scaled 2-norm of + the residual, 3: use the residual reduction in the 2-norm. Default: 2. +

+

+On Return

+

+

+

+x

+

The computed solution.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one array or an object of type psb_T_vect_type. +

+

+iter

+

The number of iterations performed.
Scope: global
Type: optional
Intent: out.
Returned as: an integer variable. +

+

+err

+

The convergence estimate on exit.
Scope: global
Type: optional
Intent: out.
Returned as: a real number. +

+

+info

+

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

diff --git a/docs/html/userhtmlse12.html b/docs/html/userhtmlse12.html index e47c099d..70b3b138 100644 --- a/docs/html/userhtmlse12.html +++ b/docs/html/userhtmlse12.html @@ -15,17 +15,17 @@ href="userhtmlse11.html" >prev] [prev-tail] [tail] [up]

-

12 Extensions

+

12 Extensions

The EXT, CUDA and RSB subdirectories contains a set of extensions to the base library. The extensions provide additional storage formats beyond the ones already contained in the base library, as well as interfaces to:

SPGPU

SPGPU
-

a CUDA library originally +

a CUDA library originally published as https://code.google.com/p/spgpu/ and now included @@ -34,22 +34,22 @@ class="cmtt-10">cuda subdir, for computations on NVIDIA GPU

LIBRSB

LIBRSB

http://sourceforge.net/projects/librsb/, for computations on +class="cmtt-10">http://sourceforge.net/projects/librsb/, for computations on multicore parallel machines.

The infrastructure laid out in the base library to allow for these extensions is detailed in the references [202110]; the CUDA-specific data formats are described +href="userhtmlli2.html#XDesPat:11">21, 2211]; the CUDA-specific data formats are described in [22]. +href="userhtmlli2.html#XOurTechRep">23].

-

12.1 Using the extensions

+

12.1 Using the extensions

A sample application using the PSBLAS extensions will contain the following steps:

    @@ -60,16 +60,16 @@ class="cmtt-10">psb_ext_mod, psb_cuda_mod);
  • -

    Declare a mold variable of the necessary type (e.g. +

    Declare a mold variable of the necessary type (e.g. psb_d_ell_sparse_mat, psb_d_hlg_sparse_mat, psb_d_vect_cuda);

  • -

    Pass the mold variable to the base library interface where needed to ensure - the appropriate dynamic type.

+

Pass the mold variable to the base library interface where needed to + ensure the appropriate dynamic type. @@ -141,126 +141,128 @@ class="cmtt-10">test/cuda/kernel subdirectories, where we provide sample speed of the sparse matrix-vector product with the various data structures included in the library.

-

12.2 Extensions’ Data Structures

+

12.2 Extensions’ Data Structures

Access to the facilities provided by the EXT library is mainly achieved through the data types that are provided within. The data classes are derived from the base classes in PSBLAS, through the Fortran 2003 mechanism of type +class="pplri7t-">type extension [17]. +class="pplri7t-">extension [18].

The data classes are divided between the general purpose CPU extensions, the GPU interfaces and the RSB interfaces. In the description we will make use of the notation introduced in Table 21. +href="#x19-148001r22">22.



Table 21: Notation for parameters describing a sparse matrix
+>Table 22: Notation for parameters describing a sparse matrix

-

+class="pplr7t-x-x-80">Description - +class="pplr7t-x-x-80">Average number of nonzeros per row +class="pplr7t-x-x-80">Maximum number of nonzeros per row +class="pplr7t-x-x-80">Numero of nonzero diagonals +class="pplr7t-x-x-80">Coefficients array +class="pplr7t-x-x-80">Row indices array +class="pplr7t-x-x-80">Column indices array +class="pplr7t-x-x-80">Row start pointers array +class="pplr7t-x-x-80">Column start pointers array +class="pplr7t-x-x-80">Number of nonzeros per row array +class="pplr7t-x-x-80">Offset for diagonals


Name Name Description


M M Number of rows in matrix
Number of rows in matrix
N N Number of columns in matrix
NZ Number of columns in matrix
NZ Number of nonzeros in matrix
Number of nonzeros in matrix
AVGNZR AVGNZR Average number of nonzeros per row
MAXNZRMAXNZRMaximum number of nonzeros per row
NDIAG NDIAG Numero of nonzero diagonals
AS AS Coefficients array
IA IA Row indices array
JA JA Column indices array
IRP IRP Row start pointers array
JCP JCP Column start pointers array
NZR NZR Number of nonzeros per row array
OFFSET OFFSET Offset for diagonals


@@ -274,7 +276,7 @@ class="td11"> + id="x19-148002r5"> @@ -283,18 +285,18 @@ src="mat.png" alt="PIC" width="147" height="147" >
Figure 5: Example of sparse matrix
+class="content">Example of sparse matrix


-

12.3 CPU-class extensions

+

12.3 CPU-class extensions

ELLPACK
+ id="x19-150000">ELLPACK

The ELLPACK/ITPACK format (shown in Figure 6) comprises two 2-dimensional +href="#x19-150001r6">6) comprises two 2-dimensional arrays AS and JA with M rows and MAXNZR columns, where MAXNZR is the maximum number of nonzeros in any row [?]. Each row of the arrays ?]. Each row of the arrays AS and JA contains the coefficients and column indices; rows shorter than + id="x19-150001r6"> @@ -325,13 +327,13 @@ width="233" height="233" >

Figure 6: ELLPACK compression of matrix in Figure 5
+href="#x19-148002r5">5


+ id="x19-150002r1"> @@ -341,9 +343,8 @@ href="#x19-146002r5">5 -
    i=1,n 
      t=0 
     j=1,maxnzr 
     ,j)) 
      end do 
     ) = t 
     end do
+ id="x19-150010r1"> - Algorithm 1:  Matrix-Vector product in ELL format + id="x19-150011"> + Algorithm 1:  Matrix-Vector product in ELL format

The matrix-vector product y = Ax can be computed with the code shown in +class="zplmr7m-">y = Ax can be computed with the code shown in Alg. 1; it costs one memory write per outer iteration, plus three memory reads and +href="#x19-150010r1">1; it costs one memory write per outer iteration, plus three memory reads and two floating-point operations per inner iteration. -

Unless all rows have exactly the same number of nonzeros, some of the coefficients -in the AS array will be zeros; therefore this data structure will have an overhead both -in terms of memory space and redundant operations (multiplications by zero). The -overhead can be acceptable if: +

Unless all rows have exactly the same number of nonzeros, some of the +coefficients in the AS array will be zeros; therefore this data structure will have an +overhead both in terms of memory space and redundant operations (multiplications +by zero). The overhead can be acceptable if:

  1. + class="enumerate" id="x19-150013x1">

    The maximum number of nonzeros per row is not much larger than the average;

  2. + class="enumerate" id="x19-150015x2">

    The regularity of the data structure allows for faster code, e.g. by allowing vectorization, thereby offsetting the additional storage requirements.

In the extreme case where the input matrix has one full row, the ELLPACK @@ -492,62 +488,72 @@ class="cmtt-10">psb_T_ell_sparse_mat:

Hacked ELLPACK
-

The hacked ELLPACK (HLL) format alleviates the main problem of the ELLPACK -format, that is, the amount of memory required by padding for sparse matrices in -which the maximum row length is larger than the average. + id="x19-151000">Hacked ELLPACK +

The hacked ELLPACK (HLL) format alleviates the main problem of the ELLPACK +format, that is, the amount of memory required by padding for sparse matrices in +which the maximum row length is larger than the average.

The number of elements allocated to padding is -[(m*maxNR) - (m*avgNR) = m* (maxNR-avgNR)] for both [(m*maxNR) - (m*avgNR) = m* (maxNR-avgNR)] for both AS and JA arrays, where m is equal to the number of rows of the matrix, maxNR is the maximum +class="zplmr7m-">m is equal to the number of rows of the matrix, maxNR is the maximum number of nonzero elements in every row and avgNR is the average number of +class="zplmr7m-">avgNR is the average number of nonzeros. Therefore a single densely populated row can seriously affect the total size of the allocation.

To limit this effect, in the HLL format we break the original matrix into equally sized groups of rows (called hacks), and then store these groups as independent +class="pplri7t-">hacks), and then store these groups as independent matrices in ELLPACK format. The groups can be arranged selecting rows in an arbitrarily manner; indeed, if the rows are sorted by decreasing number of nonzeros we obtain essentially the JAgged Diagonals format. If the rows are not in the original order, then an additional vector rIdx is required, storing the actual row index for -each row in the data structure. +class="pplri7t-">rIdx is required, storing the actual row index for each +row in the data structure.

The multiple ELLPACK-like buffers are stacked together inside a single, one dimensional array; an additional vector hackOffsets is provided to keep track of the +class="pplri7t-">hackOffsets is provided to keep track of the individual submatrices. All hacks have the same number of rows hackSize; hence, the +class="pplri7t-">hackSize; hence, the hackOffsets vector is an array of (m∕hackSize) + 1 elements, each one pointing to -the first index of a submatrix inside the stacked cM/rP buffers, plus an additional +class="pplri7t-">hackOffsets vector is an array of (m/hackSize) + 1 elements, each one pointing to the +first index of a submatrix inside the stacked cM/rP buffers, plus an additional element pointing past the end of the last block, where the next one would begin. We thus have the property that the elements of the k-th hack are stored between +class="zplmr7m-">k-th hack are stored between hackOffsets[k] and hackOffsets[k+1], similarly to what happens in the CSR @@ -558,7 +564,7 @@ format. + id="x19-151001r7"> @@ -568,7 +574,7 @@ width="248" height="248" >

Figure 7: Hacked ELLPACK compression of matrix in Figure 5
+href="#x19-148002r5">5 @@ -595,9 +601,9 @@ class="cmtt-10">psb_T_hll_sparse_mat:

Diagonal storage
+ id="x19-152000">Diagonal storage

The DIAgonal (DIA) format (shown in Figure 8) has a 2-dimensional array 8) has a 2-dimensional array AS containing in each column the coefficients along a diagonal of the matrix, and an integer array OFFSET that determines where each diagonal class="cmtt-10">AS are padded with zeros as necessary.

The code to compute the matrix-vector product y = Ax is shown in Alg. 2; it +class="zplmr7m-">y = Ax is shown in Alg. 2; it costs one memory read per outer iteration, plus three memory reads, one memory write and two floating-point operations per inner iteration. The accesses to + id="x19-152001r8"> @@ -630,13 +637,13 @@ width="248" height="248" >

Figure 8: DIA compression of matrix in Figure 5
+href="#x19-148002r5">5


+ id="x19-152002r2"> @@ -662,12 +669,12 @@ href="#x19-146002r5">5

+ id="x19-152003r2"> - Algorithm 2:  Matrix-Vector product in DIA format + id="x19-152004"> + Algorithm 2:  Matrix-Vector product in DIA format @@ -691,7 +698,7 @@ class="cmtt-10">psb_T_dia_sparse_mat:

Hacked DIA
+ id="x19-153000">Hacked DIA

Storage by DIAgonals is an attractive option for matrices whose coefficients are located on a small set of diagonals, since they do away with storing explicitly the indices and therefore reduce significantly memory traffic. However, having a few @@ -705,40 +712,44 @@ class="cmtt-10">y is too large to remain in the cache memory, the associated cache miss penalty is paid multiple times.

The hacked DIA (HDIA) format was designed to contain the amount of padding, +class="pplri7t-">hacked DIA (HDIA) format was designed to contain the amount of padding, by breaking the original matrix into equally sized groups of rows (hacks), and then -storing these groups as independent matrices in DIA format. This approach is similar -to that of HLL, and requires using an offset vector for each submatrix. Again, +class="pplri7t-">hacks), and then +storing these groups as independent matrices in DIA format. This approach is +similar to that of HLL, and requires using an offset vector for each submatrix. Again, similarly to HLL, the various submatrices are stacked inside a linear array to improve memory management. The fact that the matrix is accessed in slices helps in reducing cache misses, especially regarding accesses to the vector y.

An additional vector hackOffsets is provided to complete the matrix format; given +class="pplri7t-">hackOffsets is provided to complete the matrix format; given that hackSize is the number of rows of each hack, the hackOffsets vector is made by -an array of (m∕hackSize) + 1 elements, pointing to the first diagonal offset of a +class="pplri7t-">hackSize is the number of rows of each hack, the hackOffsets vector is made by an +array of (m/hackSize) + 1 elements, pointing to the first diagonal offset of a submatrix inside the stacked offsets buffers, plus an additional element equal to the -number of nonzero diagonals in the whole matrix. We thus have the property that -the number of diagonals of the k-th hack is given by hackOffsets[k+1] - +class="pplri7t-">offsets buffers, plus an additional element equal to the +number of nonzero diagonals in the whole matrix. We thus have the property +that the number of diagonals of the k-th hack is given by hackOffsets[k+1] - hackOffsets[k]. +class="pplri7t-">hackOffsets[k].


+ id="x19-153001r9"> @@ -748,7 +759,7 @@ width="248" height="248" >
Figure 9: Hacked DIA compression of matrix in Figure 5
+href="#x19-148002r5">5
@@ -792,8 +803,8 @@ class="cmtt-10">psb_T_hdia_sparse_mat: -

12.4 CUDA-class extensions

+

12.4 CUDA-class extensions

For computing with CUDA we define a dual memorization strategy in which each variable on the CPU (“host”) side has a GPU (“device”) side. When a GPU-type variable is initialized, the data contained is (usually) the same on both sides. Each @@ -801,10 +812,10 @@ operator invoked on the variable may change the data so that only the host side the device side are up-to-date.

Keeping track of the updates to data in the variables is essential: we want to perform most computations on the GPU, but we cannot afford the time needed to -move data between the host memory and the device memory because the bandwidth -of the interconnection bus would become the main bottleneck of the computation. -Thus, each and every computational routine in the library is built according to the -following principles: +move data between the host memory and the device memory because the +bandwidth of the interconnection bus would become the main bottleneck of the +computation. Thus, each and every computational routine in the library is built +according to the following principles:

  • If the data type being handled is GPU-enabled, make sure that its device @@ -818,20 +829,20 @@ following principles:

    explicitly

    explicitly

    by invoking a synchronization method;

    implicitly

    implicitly

    by invoking a method that involves other data items that are not GPU-enabled, e.g., by assignment ov a vector to a normal array.

In this way, data items are put on the GPU memory “on demand” and remain there as -long as “normal” computations are carried out. As an example, the following call to a -matrix-vector product +long as “normal” computations are carried out. As an example, the following call to +a matrix-vector product

@@ -850,11 +861,11 @@ then

The first kernel invocation will find the data in main memory, and will copy it to the GPU memory, thus incurring a significant overhead; the result is however not copied back, and therefore: +class="pplri7t-">not copied back, and therefore:

  • -

    Subsequent kernel invocations involving the same vector will find the data - on the GPU side so that they will run at full speed.

  • +

    Subsequent kernel invocations involving the same vector will find the + data on the GPU side so that they will run at full speed.

    For all invocations after the first the only data that will have to be transferred to/from the main memory will be the scalars alpha and beta, and the return code info. @@ -862,7 +873,7 @@ the main memory will be the scalars

    Vectors:

    Vectors:

    The data type psb_T_vect_gpu provides a GPU-enabled extension of the inner type psb_T_base_vect_type, and must be used together with @@ -871,23 +882,23 @@ class="description">

    CSR:

    CSR:

    The data type psb_T_csrg_sparse_mat provides an interface to the GPU version of CSR available in the NVIDIA CuSPARSE library;

    HYB:

    HYB:

    The data type psb_T_hybg_sparse_mat provides an interface to the HYB - GPU storage available in the NVIDIA CuSPARSE library. The internal + GPU storage available in the NVIDIA CuSPARSE library. The internal structure is opaque, hence the host side is just CSR; the HYB data format is only available up to CUDA version 10.

    ELL:

    ELL:

    The data type psb_T_elg_sparse_mat provides an interface to the ELLPACK implementation from SPGPU; @@ -897,14 +908,14 @@ class="description">

    HLL:

    HLL:
    -

    The data type psb_T_hlg_sparse_mat provides an interface to the Hacked - ELLPACK implementation from SPGPU; +

    The data type psb_T_hlg_sparse_mat provides an interface to the + Hacked ELLPACK implementation from SPGPU;

    HDIA:

    HDIA:

    The data type psb_T_hdiag_sparse_mat provides an interface to the Hacked DIAgonals implementation from SPGPU;

    diff --git a/docs/html/userhtmlse13.html b/docs/html/userhtmlse13.html index fa8fed8f..c4d3f750 100644 --- a/docs/html/userhtmlse13.html +++ b/docs/html/userhtmlse13.html @@ -15,13 +15,13 @@ href="userhtmlse12.html" >prev] [prev-tail] [tail] [up]

    -

    13 CUDA Environment Routines

    +

    13 CUDA Environment Routines

    psb_cuda_init — Initializes PSBLAS-CUDA environment

    + id="x20-156000">psb_cuda_init — Initializes PSBLAS-CUDA environment + id="Q1-20-194">

    @@ -33,44 +33,44 @@ call psb_cuda_init(ctxt [, device])

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    device

    device

    ID of CUDA device to attach to.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer value.  Default: use mod(iam,ngpu) where iam is the calling process index and ngpu is the total number of CUDA devices available on the current node.

    Notes +class="pplb7t-x-x-120">Notes

    1. + class="enumerate" id="x20-156002x1">

      A call to this routine must precede any other PSBLAS-CUDA call.

    psb_cuda_exit — Exit from PSBLAS-CUDA environment

    + id="x20-157000">psb_cuda_exit — Exit from PSBLAS-CUDA environment + id="Q1-20-196">

    @@ -82,33 +82,33 @@ call psb_cuda_exit(ctxt)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    ctxt

    ctxt

    the communication context identifying the virtual parallel machine.
    Scope: global.
    global.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer variable.

    psb_cuda_DeviceSync — Synchronize CUDA device

    + id="x20-158000">psb_cuda_DeviceSync — Synchronize CUDA device + id="Q1-20-198"> @@ -123,9 +123,9 @@ call psb_cuda_DeviceSync() CUDA-side code, have completed.

    psb_cuda_getDeviceCount

    + id="x20-159000">psb_cuda_getDeviceCount + id="Q1-20-200">

    @@ -136,9 +136,9 @@ ngpus =  psb_cuda_getDeviceCount()

    Get number of devices available on current computing node.

    psb_cuda_getDevice

    + id="x20-160000">psb_cuda_getDevice + id="Q1-20-202">

    @@ -147,14 +147,14 @@ ngpus =  psb_cuda_getDevice()

    Get device in use by current process. -

    -

    psb_cuda_setDevice

    - +

    +

    psb_cuda_setDevice

    +

    @@ -165,9 +165,9 @@ info = psb_cuda_setDevice(dev)

    Set device to be used by current process.

    psb_cuda_DeviceHasUVA

    + id="x20-162000">psb_cuda_DeviceHasUVA + id="Q1-20-206">

    @@ -178,9 +178,9 @@ hasUva = psb_cuda_DeviceHasUVA()

    Returns true if device currently in use supports UVA (Unified Virtual Addressing).

    psb_cuda_WarpSize

    + id="x20-163000">psb_cuda_WarpSize + id="Q1-20-208">

    @@ -189,14 +189,14 @@ nw = psb_cuda_WarpSize()

    Returns the warp size. -

    -

    psb_cuda_MultiProcessors

    - +

    +

    psb_cuda_MultiProcessors

    +

    @@ -207,9 +207,9 @@ nmp = psb_cuda_MultiProcessors()

    Returns the number of multiprocessors in the CUDA device.

    psb_cuda_MaxThreadsPerMP

    + id="x20-165000">psb_cuda_MaxThreadsPerMP + id="Q1-20-212">

    @@ -220,9 +220,9 @@ nt = psb_cuda_MaxThreadsPerMP()

    Returns the maximum number of threads per multiprocessor.

    psb_cuda_MaxRegistersPerBlock

    + id="x20-166000">psb_cuda_MaxRegistersPerBlock + id="Q1-20-214">

    @@ -231,14 +231,14 @@ nr = psb_cuda_MaxRegistersPerBlock()

    Returns the maximum number of register per thread block. -

    -

    psb_cuda_MemoryClockRate

    - +

    +

    psb_cuda_MemoryClockRate

    +

    @@ -249,9 +249,9 @@ cl = psb_cuda_MemoryClockRate()

    Returns the memory clock rate in KHz, as an integer.

    psb_cuda_MemoryBusWidth

    + id="x20-168000">psb_cuda_MemoryBusWidth + id="Q1-20-218">

    @@ -262,9 +262,9 @@ nb = psb_cuda_MemoryBusWidth()

    Returns the memory bus width in bits.

    psb_cuda_MemoryPeakBandwidth

    + id="x20-169000">psb_cuda_MemoryPeakBandwidth + id="Q1-20-220">

    @@ -282,7 +282,7 @@ bw = psb_cuda_MemoryPeakBandwidth() -

    +

    diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index b2cab256..4fce53f3 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -16,26 +16,26 @@ href="userhtmlse1.html" >prev] [prev-tail] [tail] [up]

    -

    2 2 General overview

    The PSBLAS library is designed to handle the implementation of iterative solvers for sparse linear systems on distributed memory parallel computers. The system coefficient matrix A must be square; it may be real or complex, nonsymmetric, and +class="zplmr7m-">A must be square; it may be real or complex, nonsymmetric, and its sparsity pattern needs not to be symmetric. The serial computation parts are -based on the serial sparse BLAS, so that any extension made to the data structures -of the serial kernels is available to the parallel version. The overall design and +based on the serial sparse BLAS, so that any extension made to the data structures of +the serial kernels is available to the parallel version. The overall design and parallelization strategy have been influenced by the structure of the ScaLAPACK parallel library. The layered structure of the PSBLAS library is shown in figure 1; -lower layers of the library indicate an encapsulation relationship with upper -layers. The ongoing discussion focuses on the Fortran 2003 layer immediately +lower layers of the library indicate an encapsulation relationship with upper layers. +The ongoing discussion focuses on the Fortran 2003 layer immediately below the application layer. The serial parts of the computation on each process are executed through calls to the serial sparse BLAS subroutines. In a similar way, the inter-process message exchanges are encapsulated in an applicaiton layer that has been strongly inspired by the Basic Linear Algebra Communication Subroutines (BLACS) library [6]. Usually there is no need to deal +href="userhtmlli2.html#XBLACS">7]. Usually there is no need to deal directly with MPI; however, in some cases, MPI routines are used directly to improve efficiency. For further details on our communication layer see Sec. sub-domains. Our library supports any +class="pplri7t-">sub-domains. Our library supports any distribution that keeps together the coefficients of each matrix row; there are no other constraints on the variable assignment. This choice is consistent with simple data distributions such as BLOCK, as well as completely arbitrary assignments of equation indices to processes. In particular it is consistent with the usage of graph partitioning tools commonly available in the literature, e.g. METIS [13]. Dense vectors conform to sparse matrices, +href="userhtmlli2.html#XMETIS">14]. Dense vectors conform to sparse matrices, that is, the entries of a vector follow the same distribution of the matrix rows.

    We assume that the sparse matrix is built in parallel, where each process generates @@ -94,35 +94,35 @@ node. However, it is possible to hold the entire matrix in one process and distr explicitly1 , -even though the resulting memory bottleneck would make this option unattractive in -most cases. -

    2.1 2.1 Basic Nomenclature

    Our computational model implies that the data allocation on the parallel distributed -memory machine is guided by the structure of the physical model, and specifically by -the discretization mesh of the PDE. +memory machine is guided by the structure of the physical model, and specifically +by the discretization mesh of the PDE.

    Each point of the discretization mesh will have (at least) one associated equation/variable, and therefore one index. We say that point i depends on point j if +class="zplmr7m-">i depends on point j if the equation for a variable associated with i contains a term in j, or equivalently if +class="zplmr7m-">i contains a term in j, or equivalently if aij0. After the partition of the discretization mesh into sub-domains assigned +class="zplmr7m-">aij0. After the partition of the discretization mesh into sub-domains assigned to the parallel processes, we classify the points of a given sub-domain as following.

    Internal.

    Internal.

    An internal point of a given domain depends only on points of the same +class="pplri7t-">depends only on points of the same domain. If all points of a domain are assigned to one process, then a computational step (e.g., a matrix-vector product) of the equations @@ -133,22 +133,22 @@ class="cmti-10">depends only on points of the same

    Boundary.

    Boundary.
    -

    A point of a given domain is a boundary point if it depends on points +

    A point of a given domain is a boundary point if it depends on points belonging to other domains.

    Halo.

    Halo.

    A halo point for a given domain is a point belonging to another domain such that there is a boundary point which depends on it. Whenever performing +class="pplri7t-">depends on it. Whenever performing a computational step, such as a matrix-vector product, the values associated - with halo points are requested from other domains. A boundary point of a - given domain is usually a halo point for some other domain2 ; therefore the cardinality of the boundary points set denotes the amount @@ -156,50 +156,53 @@ href="userhtml6.html#fn2x0">2

    Overlap.

    Overlap.

    An overlap point is a boundary point assigned to multiple domains. Any - operation that involves an overlap point has to be replicated for each + operation that involves an overlap point has to be replicated for each assignment.

    Overlap points do not usually exist in the basic data distributions; however they are a feature of Domain Decomposition Schwarz preconditioners which are the subject of related research work [32]. +href="userhtmlli2.html#X2007c">4, 3].

    We denote the sets of internal, boundary and halo points for a given subdomain by I, B and H. Each subdomain is assigned to one process; each process usually owns -one subdomain, although the user may choose to assign more than one subdomain to -a process. If each process i owns one subdomain, the number of rows in -the local sparse matrix is |Ii| + |Bi|, and the number of local columns (i.e. +class="zplmr7y-">I, B and H. Each subdomain is assigned to one process; each process usually +owns one subdomain, although the user may choose to assign more than one +subdomain to a process. If each process i owns one subdomain, the number of rows +in the local sparse matrix is |Ii| + |Bi|, and the number of local columns (i.e. those for which there exists at least one non-zero entry in the local rows) is |Ii| + |Bi| + |Hi|. +class="zplmr7y-">|Ii| + |Bi| + |Hi|.


    @@ -226,13 +229,13 @@ class="content">Point classfication.

    This classification of mesh points guides the naming scheme that we adopted in the library internals and in the data structures. We explicitly note that “Halo” points are also often called “ghost” points in the literature. -

    2.2 2.2 Library contents

    The PSBLAS library consists of various classes of subroutines:

    Computational routines

    Computational routines

    comprising:

      @@ -253,13 +256,13 @@ class="description">

    Communication routines

    Communication routines

    handling halo and overlap communications;

    Data management and auxiliary routines

    Data management and auxiliary routines

    including:

      @@ -283,17 +286,17 @@ class="description">

    Preconditioner routines

    Preconditioner routines

    Iterative methods

    Iterative methods

    a subset of Krylov subspace iterative methods

    -

    The following naming scheme has been adopted for all the symbols internally defined in -the PSBLAS software package: +

    The following naming scheme has been adopted for all the symbols internally defined +in the PSBLAS software package:

    • all symbols (i.e. subroutine names, data types...) are prefixed by

      global

      global

      For input arguments, the value must be the same on all processes - participating in the subroutine call; for output arguments the value is + participating in the subroutine call; for output arguments the value is guaranteed to be the same.

      local

      local

      Each process has its own value(s) independently.

      To finish our general description, we define a version string with the constant @@ -358,38 +361,38 @@ class="description"> src="userhtml0x.png" alt="psb_version_string_ " class="math-display" >

    whose current value is 3.8.0 +class="cmtt-10">3.9.0

    -

    2.3 2.3 Application structure

    The main underlying principle of the PSBLAS library is that the library objects are created and exist with reference to a discretized space to which there corresponds an index space and a matrix sparsity pattern. As an example, consider a cell-centered finite-volume discretization of the Navier-Stokes equations on a simulation domain; the index space 1n is isomorphic to the set of cell centers, +class="zplmr7m-">…n is isomorphic to the set of cell centers, whereas the pattern of the associated linear system matrix is isomorphic to the adjacency graph imposed on the discretization mesh by the discretization stencil.

    Thus the first order of business is to establish an index space, and this is done with a call to psb_cdall in which we specify the size of the index space n and the +class="zplmr7m-">n and the allocation of the elements of the index space to the various processes making up the MPI (virtual) parallel machine.

    The index space is partitioned among processes, and this creates a mapping from the “global” numbering 1n to a numbering “local” to each process; each process i +class="zplmr7m-">…n to a numbering “local” to each process; each process i will own a certain subset 1nrowi, each element of which corresponds to a certain +class="zplmr7m-">…nrowi, each element of which corresponds to a certain element of 1n. The user does not set explicitly this mapping; when the application +class="zplmr7m-">…n. The user does not set explicitly this mapping; when the application needs to indicate to which element of the index space a certain item is related, such as the row and column index of a matrix coefficient, it does so in the “global” numbering, and the library will translate into the appropriate “local” @@ -398,8 +401,8 @@ numbering.

    For a given index space 1n there are many possible associated topologies, i.e. +class="zplmr7m-">…n there are many possible associated topologies, i.e. many different discretization stencils; thus the description of the index space is not completed until the user has defined a sparsity pattern, either explicitly through psb_cdasb and a sparse matrix with a call t class="cmtt-10">psb_spasb. After psb_cdasb each process i will have defined a set of “halo” (or “ghost”) indices nrowi + 1ncol +class="zplmr7m-">i will have defined a set of “halo” (or “ghost”) indices nrowi + 1ncol i, +class="zplmr7m-x-x-60">i, denoting elements of the index space that are not assigned to process i; however the +class="pplri7t-">not assigned to process i; however the variables associated with them are needed to complete computations associated with the sparse matrix A, and thus they have to be fetched from (neighbouring) +class="zplmr7m-">A, and thus they have to be fetched from (neighbouring) processes. The descriptor of the index space is built exactly for the purpose of properly sequencing the communication steps required to achieve this objective. @@ -432,18 +436,18 @@ matrix/vector creation and linear system solution as follows:

  • Initialize parallel environment with psb_init +class="cmtt-10">psb_init;

  • Initialize index space with psb_cdall +class="cmtt-10">psb_cdall;

  • Allocate sparse matrix and dense vectors with psb_spall and psb_geall +class="cmtt-10">psb_geall;

  • @@ -459,12 +463,12 @@ class="cmtt-10">psb_geins
  • psb_cdasb +class="cmtt-10">psb_cdasb,

  • psb_spasb +class="cmtt-10">psb_spasb, @@ -472,147 +476,157 @@ class="cmtt-10">psb_spasb

  • psb_geasb

  • +class="cmtt-10">psb_geasb;
  • Choose the preconditioner to be used with prec%init and build it with +class="cmtt-10">prec%init and prec%set, and build it with prec%build3 . + id="x4-6019f3"> ;

  • -

    Call the iterative driver psb_krylov with the method of choice, e.g. -

    Call one of the iterative drivers with the method of choice, e.g. psb_krylov + with bicgstab.

  • -

    This is the structure of the sample programs in the directory

    This is the structure of the sample programs in the directory test/pargen/. -

    For a simulation in which the same discretization mesh is used over multiple time -steps, the following structure may be more appropriate: +

    For a simulation in which the same discretization mesh is used over multiple +time steps, the following structure may be more appropriate:

    1. -

      Initialize parallel environment with

      Initialize parallel environment with psb_init

    2. -

      Initialize index space with

      Initialize index space with psb_cdall

    3. -

      Loop over the topology of the discretization mesh and build the descriptor - with psb_cdins +

      Loop over the topology of the discretization mesh and build the + descriptor with psb_cdins;

    4. -

      Assemble the descriptor with psb_cdasb +

      Assemble the descriptor with psb_cdasb;

    5. -

      Allocate the sparse matrices and dense vectors with

      Allocate the sparse matrices and dense vectors with; psb_spall and psb_geall +class="cmtt-10">psb_geall;

    6. -

      Loop over the time steps: +

      Loop over the time steps:

      1. -

        If after first time step, reinitialize the sparse matrix with

        If after first time step, reinitialize the sparse matrix with psb_sprn; also zero out the dense vectors;

      2. -

        Loop over the mesh, generate the coefficients and insert/update them - with

        Loop over the mesh, generate the coefficients and insert/update + them with psb_spins and psb_geins +class="cmtt-10">psb_geins;

      3. -

        Assemble with

        Assemble with psb_spasb and psb_geasb +class="cmtt-10">psb_geasb;

      4. -

        Choose and build preconditioner with prec%init and prec%build +

      5. -

        Call the iterative method of choice, e.g. psb_bicgstab

      +

      Choose the preconditioner to be used with prec%init and + prec%set, and build it with prec%build; +

    7. +
    8. +

      Call one of the iterative drivers with the method of choice, e.g. + psb_krylov with bicgstab.

    -

    The insertion routines will be called as many times as needed; they only need to be +

    The insertion routines will be called as many times as needed; they only need to be called on the data that is actually allocated to the current process, i.e. each process generates its own data. -

    In principle there is no specific order in the calls to

    In principle there is no specific order in the calls to psb_spins, nor is there a requirement to build a matrix row in its entirety before calling the routine; this allows the application programmer to walk through the discretization mesh element by element, generating the main part of a given matrix row but also contributions to the rows corresponding to neighbouring elements. -

    From a functional point of view it is even possible to execute one call for each +

    From a functional point of view it is even possible to execute one call for each nonzero coefficient; however this would have a substantial computational overhead. It is therefore advisable to pack a certain amount of data into each call to the insertion routine, say touching on a few tens of rows; the best -performng value would depend on both the architecture of the computer being -used and on the problem structure. At the opposite extreme, it would be -possible to generate the entire part of a coefficient matrix residing on a + + + +performng value would depend on both the architecture of the computer +being used and on the problem structure. At the opposite extreme, it would +be possible to generate the entire part of a coefficient matrix residing on a process and pass it in a single call to psb_spins; this, however, would entail a doubling of memory occupation, and thus would be almost always far from optimal. - - - -

    -

    2.3.1

    +

    2.3.1 User-defined index mappings
    -

    PSBLAS supports user-defined global to local index mappings, subject to the +

    PSBLAS supports user-defined global to local index mappings, subject to the constraints outlined in sec. 2.3:

    1. -

      The set of indices owned locally must be mapped to the set 1nrowi; +

      The set of indices owned locally must be mapped to the set 1nrowi;

    2. -

      The set of halo points must be mapped to the set nrowi + 1ncol +

      The set of halo points must be mapped to the set nrowi + 1ncol i;

    -

    but otherwise the mapping is arbitrary. The user application is responsible to ensure +class="zplmr7m-x-x-60">i; +

    but otherwise the mapping is arbitrary. The user application is responsible to ensure consistency of this mapping; some errors may be caught by the library, but this is not guaranteed. The application structure to support this usage is as follows:

    1. -

      Initialize index +

      Initialize index space with psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors lidx(:) containing the corresponding local

    2. -

      Add the halo points ja(:) and their associated local indices lidx(:) with - a(some) call(s) to

      Add the halo points ja(:) and their associated local indices lidx(:) + with a(some) call(s) to psb_cdins(nz,ja,desc,info,lidx=lidx);

    3. -

      Assemble the descriptor with

      Assemble the descriptor with psb_cdasb;

    4. -

      Build the sparse matrices and vectors, optionally making use in psb_spins - and psb_geins of the local argument specifying that the indices in ia, - ja and irw, respectively, are already local indices.

    -

    -

    2.4

    Build the sparse matrices and vectors, optionally making use in + psb_spins and psb_geins of the local argument specifying that the + indices in ia, ja and irw, respectively, are already local indices. +

    +

    2.4 Programming model

    -

    The PSBLAS librarary is based on the Single Program Multiple Data (SPMD) +

    The PSBLAS librarary is based on the Single Program Multiple Data (SPMD) programming model: each process participating in the computation performs the same actions on a chunk of data. Parallelism is thus data-driven. -

    Because of this structure, many subroutines coordinate their action across the +

    Because of this structure, many subroutines coordinate their action across the various processes, thus providing an implicit synchronization point, and therefore must be called simultaneously by all processes participating in the computation. This +class="pplri7t-">must be called simultaneously by all processes participating in the computation. This is certainly true for the data allocation and assembly routines, for all the computational routines and for some of the tools routines. -

    However there are many cases where no synchronization, and indeed no +

    However there are many cases where no synchronization, and indeed no communication among processes, is implied; for instance, all the routines in sec. 3 are only acting on the local data structures, and thus may be called independently. -The most important case is that of the coefficient insertion routines: since the -number of coefficients in the sparse and dense matrices varies among the processors, -and since the user is free to choose an arbitrary order in builiding the matrix entries, +The most important case is that of the coefficient insertion routines: since the number +of coefficients in the sparse and dense matrices varies among the processors, and +since the user is free to choose an arbitrary order in builiding the matrix entries, these routines cannot imply a synchronization. -

    Throughout this user’s guide each subroutine will be clearly indicated +

    Throughout this user’s guide each subroutine will be clearly indicated as:

    -

    +

    Synchronous:

    Synchronous:
    -

    must be called simultaneously by all the processes in the relevant +

    must be called simultaneously by all the processes in the relevant communication context;

    -

    +

    Asynchronous:

    Asynchronous:
    -

    may be called in a totally independent manner.

    +

    may be called in a totally independent manner. diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index 016e8a9f..0fd6d56a 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -16,7 +16,7 @@ href="userhtmlse2.html" >prev] [prev-tail] [tail] [up]

    -

    3 3 Data Structures and Classes

    In this chapter we illustrate the data structures used for definition of routines interfaces. They include data structures for sparse matrices, communication @@ -30,44 +30,44 @@ the library as follows:

    psb_spk_

    psb_spk_
    -

    Kind parameter for short precision real and complex data; corresponds to - a REAL declaration and is normally 4 bytes; +

    Kind parameter for short precision real and complex data; corresponds + to a REAL declaration and is normally 4 bytes;

    psb_dpk_

    psb_dpk_

    Kind parameter for long precision real and complex data; corresponds to a DOUBLE PRECISION declaration and is normally 8 bytes;

    psb_mpk_

    psb_mpk_

    Kind parameter for 4-bytes integer data, as is always used by MPI;

    psb_epk_

    psb_epk_

    Kind parameter for 8-bytes integer data, as is always used by the sizeof methods;

    psb_ipk_

    psb_ipk_

    Kind parameter for “local” integer indices and data; with default build options this is a 4 bytes integer; @@ -77,22 +77,22 @@ class="description">

    psb_lpk_

    psb_lpk_

    Kind parameter for “global” integer indices and data; with default build options this is an 8 bytes integer;

    The integer kinds for local and global indices can be chosen at configure time to hold 4 -or 8 bytes, with the global indices at least as large as the local ones. Together with -the classes attributes we also discuss their methods. Most methods detailed here only -act on the local variable, i.e. their action is purely local and asynchronous unless +or 8 bytes, with the global indices at least as large as the local ones. Together with the +classes attributes we also discuss their methods. Most methods detailed here only act +on the local variable, i.e. their action is purely local and asynchronous unless otherwise stated. The list of methods here is not completely exhaustive; many methods, especially those that alter the contents of the various objects, are usually not needed by the end-user, and therefore are described in the developer’s documentation.

    -

    3.1 3.1 Descriptor data structure

    All the general matrix informations and elements to be exchanged among processes are stored within a data structure of the type psb_desc_type. Every structure of this -type is associated with a discretization pattern and enables data communications and -other operations that are necessary for implementing the various algorithms of +type is associated with a discretization pattern and enables data communications +and other operations that are necessary for implementing the various algorithms of interest to us.

    The data structure itself psb_desc_type can be treated as an opaque object handled via the tools routines of Sec. 6 or the query routines detailed below; nevertheless we include here a description for the curious reader. -

    First we describe the psb_indx_map type. This is a data structure that keeps -track of a certain number of basic issues such as: +

    First we describe the psb_indx_map type. This is a data structure that keeps track +of a certain number of basic issues such as:

    • The value of the communication context; @@ -138,12 +138,12 @@ object whose dynamic type can be any of the extended types. The methods associated with this data type answer the following queries:

      • -

        For a given set of local indices, find the corresponding indices in the global - numbering; +

        For a given set of local indices, find the corresponding indices in the + global numbering;

      • -

        For a given set of global indices, find the corresponding indices in the local - numbering, if any, or return an invalid +

        For a given set of global indices, find the corresponding indices in the + local numbering, if any, or return an invalid

      • Add a global index to the set of halo indices; @@ -160,7 +160,7 @@ href="userhtmlse6.html#x11-770006">6).

        indxmap

        indxmap

        A polymorphic variable of a type that is any extension of the indx_map type described above.

        halo_index

        halo_index

        A list of the halo and boundary elements for the current process to be - exchanged with other processes; for each processes with which it is necessary to - communicate: + exchanged with other processes; for each processes with which it is necessary + to communicate: @@ -202,8 +202,8 @@ href="#x8-460003.3">3.3.

        ext_index

        ext_index

        A list of element indices to be exchanged to implement the mapping between a base descriptor and a descriptor with overlap.
        3.3.

        ovrlap_index

        ovrlap_index

        A list of the overlap elements for the current process, organized in groups like the previous vector: @@ -245,9 +245,9 @@ href="#x8-460003.3">3.3.

        ovr_mst_idx

        ovr_mst_idx

        A list to retrieve the value of each overlap element from the respective master process.
        3.3.

        ovrlap_elem

        ovrlap_elem

        For all overlap points belonging to th ecurrent process:

          @@ -276,8 +276,8 @@ class="description">

        bnd_elem

        bnd_elem

        A list of all boundary points, i.e. points that have a connection with other processes.

        @@ -304,8 +304,8 @@ end type psb_desc_type


    Listing 1: The PSBLAS defined data type that contains the communication +>Listing 1: The PSBLAS defined data type that contains the communication descriptor.
    @@ -316,7 +316,7 @@ can take the following values:

    Build:

    Build:

    State entered after the first allocation, and before the first assembly; in this state it is possible to add communication requirements among different @@ -324,14 +324,15 @@ class="description">

    Assembled:

    Assembled:
    -

    State entered after the assembly; computations using the associated sparse - matrix, such as matrix-vector products, are only possible in this state.

    -
    3.1.1

    State entered after the assembly; computations using the associated + sparse matrix, such as matrix-vector products, are only possible in this + state. +

    3.1.1 Descriptor Methods

    -

    3.1.2 3.1.2 get_local_rows — Get number of local rows
    @@ -344,50 +345,51 @@ nr = desc%get_local_rows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of local rows, i.e. the number of rows owned by the current process; as explained in 1, it is equal to |Ii| + |Bi|. The returned value is +class="zplmr7y-">|Ii| + |Bi|. The returned value is specific to the calling process.

    -

    3.1.3 3.1.3 get_local_cols — Get number of local cols
    @@ -400,54 +402,57 @@ nc = desc%get_local_cols()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of local cols, i.e. the number of indices used by the current - process, including both local and halo indices; as explained in 1, it is equal - to |Ii| + |Bi| + |Hi|. The returned value is specific to the calling process.

    + process, including both local and halo indices; as explained in 1, it is + equal to |Ii| + |Bi| + |Hi|. The returned value is specific to the calling + process.

    -

    3.1.4 3.1.4 get_global_rows — Get number of global rows
    @@ -460,39 +465,39 @@ nr = desc%get_global_rows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of global rows, i.e. the size of the global index space.

    -

    3.1.5 3.1.5 get_global_cols — Get number of global cols
    @@ -505,40 +510,40 @@ nr = desc%get_global_cols()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The number of global cols; usually this is equal to the number of global rows.

    -

    3.1.6 3.1.6 get_global_indices — Get vector of global indices
    @@ -551,53 +556,53 @@ myidx = desc%get_global_indices([owned])

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.
    Type: required.
    required.

    owned

    owned
    -

    Choose if you only want owned indices (owned=.true.) or also halo indices - (owned=.false.). Scope: local.

    Choose if you only want owned indices (owned=.true.) or also halo + indices (owned=.false.). Scope: local.
    Type: optional; default: .true..
    optional; default: .true..

    On Return

    On Return

    Function value

    Function value

    The global indices, returned as an allocatable integer array of kind psb_lpk_ and rank 1.

    -

    3.1.7 3.1.7 get_context — Get communication context
    @@ -610,39 +615,39 @@ ctxt = desc%get_context()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    Function value

    Function value

    The communication context.

    -

    3.1.8 3.1.8 Clone — clone current object
    @@ -655,45 +660,45 @@ call  desc%clone(descout,info)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    On Return

    On Return

    descout

    descout

    A copy of the input object.

    info

    info

    Return code.

    -

    3.1.9 3.1.9 CNV — convert internal storage format
    @@ -706,33 +711,33 @@ call  desc%cnv(mold)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    desc

    desc

    the communication descriptor.
    Scope: local.
    local.

    mold

    mold

    the desired integer storage format.
    Scope: local.
    Specified as: a object of type derived from (integer) +class="pplb7t-">local.
    Specified as: a object of type derived from (integer) psb_type.

    The mold arguments may be employed to interface with special devices, such as GPUs and other accelerators.

    -

    3.1.10 3.1.10 psb_cd_get_large_threshold — Get threshold for index mapping switch
    @@ -757,24 +762,24 @@ ith = psb_cd_get_large_threshold()

    Type:

    Type:

    Asynchronous.

    On Return

    On Return

    Function value

    Function value

    The current value for the size threshold.

    -

    3.1.11 3.1.11 psb_cd_set_large_threshold — Set threshold for index mapping switch
    @@ -788,34 +793,34 @@ call psb_cd_set_large_threshold(ith)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    ith

    ith

    the new threshold for communication descriptors.
    Scope: global.
    global.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer value greater than zero.

    -

    Note: the threshold value is only queried by the library at the time a call to psb_cdall -is executed, therefore changing the threshold has no effect on communication +

    Note: the threshold value is only queried by the library at the time a call to psb_cdall is +executed, therefore changing the threshold has no effect on communication descriptors that have already been initialized. Moreover the threshold must have the same value on all processes.

    -

    3.1.12 3.1.12 get_p_adjcncy — Get process adjacency list
    @@ -828,25 +833,25 @@ list =  desc%get_p_adjcncy()

    Type:

    Type:

    Asynchronous.

    On Return

    On Return

    Function value

    Function value
    -

    The current list of adjacent processes, i.e. processes with which the current - one has to exchange halo data. +

    The current list of adjacent processes, i.e. processes with which the + current one has to exchange halo data.

    -

    3.1.13 3.1.13 set_p_adjcncy — Set process adjacency list
    @@ -859,34 +864,34 @@ call desc%set_p_adjcncy(list)

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    list

    list

    the list of adjacent processes.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: a one-dimensional array of integers of kind psb_ipk_.

    -

    Note: this method can be called after a call to psb_cdall and before a call to -psb_cdasb. The user is specifying here some knowledge about which processes are -topological neighbours of the current process. The availability of this information -may speed up the execution of the assembly call psb_cdasb. +

    Note: this method can be called after a call to psb_cdall and before a call to psb_cdasb. +The user is specifying here some knowledge about which processes are topological +neighbours of the current process. The availability of this information may speed up +the execution of the assembly call psb_cdasb.

    -

    3.1.14 3.1.14 fnd_owner — Find the owner process of a set of indices
    @@ -899,46 +904,46 @@ call desc%fnd_owner(idx,iprc,info)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    idx

    idx

    the list of global indices for which we need the owning processes.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: a one-dimensional array of integers of kind psb_lpk_.

    On Return

    On Return

    iprc

    iprc

    the list of processes owning the indices in idx.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an allocatable one-dimensional array of integers of kind psb_ipk_.

    Note: this method may or may not actually require communications, depending on the @@ -949,82 +954,82 @@ processes.

    -

    3.1.15 3.1.15 Named Constants

    psb_none_

    psb_none_

    Generic no-op;

    psb_root_

    psb_root_

    Default root process for broadcast and scatter operations;

    psb_nohalo_

    psb_nohalo_

    Do not fetch halo elements;

    psb_halo_

    psb_halo_

    Fetch halo elements from neighbouring processes;

    psb_sum_

    psb_sum_

    Sum overlapped elements

    psb_avg_

    psb_avg_

    Average overlapped elements

    psb_comm_halo_

    psb_comm_halo_

    Exchange data based on the halo_index list;

    psb_comm_ext_

    psb_comm_ext_

    Exchange data based on the ext_index list;

    psb_comm_ovr_

    psb_comm_ovr_

    Exchange data based on the ovrlap_index list; @@ -1033,15 +1038,15 @@ class="description">

    psb_comm_mov_

    psb_comm_mov_

    Exchange data based on the ovr_mst_idx list;

    -

    3.2 3.2 Sparse Matrix class

    The _Tspmat_type class contains all information about the local portion of the sparse matrix and its storage mode. Its design is based on the STATE design pattern [12] as detailed in [10]; the type declaration is shown in figure 2 where T is a -placeholder for the data type and precision variants +href="userhtmlli2.html#XDesignPatterns">13] as detailed in [11]; the type declaration is shown in figure 2 where T is +a placeholder for the data type and precision variants

    S

    S

    Single precision real;

    D

    D

    Double precision real;

    C

    C

    Single precision complex;

    Z

    Z

    Double precision complex;

    LS,LD,LC,LZ

    LS,LD,LC,LZ

    Same numeric type as above, but with psb_lpk_ integer indices.

    The actual data is contained in the polymorphic component a%a of type @@ -1092,8 +1097,8 @@ class="cmtt-10">_T_base_sparse_mat; its specific layout can be chosen dynamically among the -predefined types, or an entirely new storage layout can be implemented and passed to -the library at runtime via the psb_spasb routine. +predefined types, or an entirely new storage layout can be implemented and passed +to the library at runtime via the psb_spasb routine.


    @@ -1109,7 +1114,7 @@ the library at runtime via the
    -
    Listing 2: The PSBLAS defined data type that contains a sparse matrix.
    @@ -1121,31 +1126,31 @@ always available:

    psb_T_coo_sparse_mat

    psb_T_coo_sparse_mat

    Coordinate storage;

    psb_T_csr_sparse_mat

    psb_T_csr_sparse_mat

    Compressed storage by rows;

    psb_T_csc_sparse_mat

    psb_T_csc_sparse_mat

    Compressed storage by columns;

    The inner sparse matrix has an associated state, which can take the following @@ -1153,32 +1158,32 @@ values:

    Build:

    Build:

    State entered after the first allocation, and before the first assembly; in this state it is possible to add nonzero entries.

    Assembled:

    Assembled:

    State entered after the assembly; computations using the sparse matrix, such as matrix-vector products, are only possible in this state;

    Update:

    Update:
    -

    State entered after a reinitalization; this is used to handle applications +

    State entered after a reinitalization; this is used to handle applications in which the same sparsity pattern is used multiple times with different coefficients. In this state it is only possible to enter coefficients for already existing nonzero entries.

    The only storage variant supporting the build state is COO; all other variants are obtained by conversion to/from it. -

    3.2.1 3.2.1 Sparse Matrix Methods

    -

    3.2.2 3.2.2 get_nrows — Get number of rows in a sparse matrix
    @@ -1191,39 +1196,39 @@ nr = a%get_nrows()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of rows of sparse matrix a.

    -

    3.2.3 3.2.3 get_ncols — Get number of columns in a sparse matrix
    @@ -1236,39 +1241,39 @@ nc = a%get_ncols()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of columns of sparse matrix a.

    -

    3.2.4 3.2.4 get_nnzeros — Get number of nonzero elements in a sparse matrix
    @@ -1281,47 +1286,47 @@ nz = a%get_nnzeros()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The number of nonzero elements stored in sparse matrix a.

    Notes +class="pplb7t-">Notes

    1. -

      The function value is specific to the storage format of matrix a; some +

      The function value is specific to the storage format of matrix a; some storage formats employ padding, thus the returned value for the same matrix may be different for different storage choices.

    -

    3.2.5 3.2.5 get_size — Get maximum number of nonzero elements in a sparse matrix
    @@ -1335,40 +1340,40 @@ maxnz = a%get_size()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The maximum number of nonzero elements that can be stored in sparse matrix a using its current memory allocation.

    -

    3.2.6 3.2.6 sizeof — Get memory occupation in bytes of a sparse matrix
    @@ -1381,46 +1386,46 @@ memory_size = a%sizeof()

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value

    The memory occupation in bytes.

    -

    3.2.7 3.2.7 get_fmt — Short description of the dynamic type

    write(*,*) a%get_fmt()

    Type:

    Type:

    Asynchronous. @@ -1429,34 +1434,34 @@ class="description">

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value
    -

    A short string describing the dynamic type of the matrix. Predefined values - include NULL, COO, CSR and CSC.

    +

    A short string describing the dynamic type of the matrix. Predefined + values include NULL, COO, CSR and CSC.

    -

    3.2.8 3.2.8 is_bld, is_upd, is_asb — Status check

    if (a%is_bld()) then
    if (a%is_upd()) then
    if<

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    @@ -1490,18 +1495,18 @@ class="newline" />

    On Return

    On Return

    Function value

    Function value

    A logical value indicating whether the matrix is in the Build, Update or Assembled state, respectively.

    -

    3.2.9 3.2.9 is_lower, is_upper, is_triangle, is_unit — Format check
    @@ -1517,41 +1522,41 @@ if (a%is_unit()) then

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix
    Scope: local
    local

    On Return

    On Return

    Function value

    Function value
    -

    A logical value indicating whether the matrix is triangular; if +

    A logical value indicating whether the matrix is triangular; if is_triangle() returns .true. check also if it is lower, upper and with a unit (i.e. assumed) diagonal.

    -

    3.2.10 3.2.10 cscnv — Convert to a different storage format
    @@ -1565,46 +1570,46 @@ call  a%cscnv(info [, type, mold, dupl

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    type

    type

    a string requesting a new format.
    Type: optional.

    mold

    mold

    a variable of class(psb_T_base_sparse_mat) requesting a new format.
    Type: optional.

    dupl

    dupl
    -

    an integer value specifing how to handle duplicates (see Named Constants - below)

    +

    an integer value specifing how to handle duplicates (see Named + Constants below)

    @@ -1612,26 +1617,26 @@ class="description">

    On Return

    On Return

    b,a

    b,a

    A copy of a with a new storage format.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    The mold arguments may be employed to interface with special devices, such as GPUs and other accelerators.

    -

    3.2.11 3.2.11 csclip — Reduce to a submatrix
    @@ -1646,43 +1651,43 @@ indices to the range 1:

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    a

    a

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    imin,imax,jmin,jmax

    imin,imax,jmin,jmax

    Minimum and maximum row and column indices.
    Type: optional.

    rscale,cscale

    rscale,cscale

    Whether to rescale row/column indices. Type: optional.

    On Return

    On Return

    @@ -1691,171 +1696,181 @@ class="description">

    b

    b

    A copy of a submatrix of a.
    A variable of type psb_Tspmat_type.

    info

    info

    Return code.

    -

    3.2.12 3.2.12 clean_zeros — Eliminate zero coefficients

    call a%clean_zeros(info) -

    Eliminates zero coefficients in the input matrix. Note that depending on the -internal storage format, there may still be some amount of zero padding in the -output. -

    +

    Eliminates zero coefficients explicitly stored in the input matrix. +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the sparse matrix.

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    -

    +

    -

    +

    On Return

    On Return
    -

    - - - +

    -

    +

    a

    a
    -

    The matrix a without zero coefficients.

    The matrix a without zero coefficients.
    A variable of type psb_Tspmat_type. + + +

    -

    +

    info

    info
    -

    Return code.

    -

    -

    3.2.13

    Return code. +

    Notes +

      +
    1. +

      Depending on the internal storage format, there may still be some + amount of zero padding in the output. +

    2. +
    3. +

      Any explicit zeros on the main diagonal are always kept in the data + structure.

    +

    +

    3.2.13 get_diag — Get main diagonal
    -

    call a%get_diag(d,info) -

    Returns a copy of the main diagonal. +

    call a%get_diag(d,info) +

    Returns a copy of the main diagonal.

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the sparse matrix.

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    + + +

    -

    +

    d

    d
    -

    A copy of the main diagonal.

    A copy of the main diagonal.
    A one-dimensional array of the appropriate type. - - -

    -

    +

    info

    info
    -

    Return code.

    -

    -

    3.2.14

    Return code. +

    +

    3.2.14 clip_diag — Cut out main diagonal
    -

    call a%clip_diag(b,info) -

    Returns a copy of a without the main diagonal. +

    call a%clip_diag(b,info) +

    Returns a copy of a without the main diagonal.

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the sparse matrix.

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    b

    b
    -

    A copy of a without the main diagonal.

    A copy of a without the main diagonal.
    A variable of type psb_Tspmat_type. -

    -

    -info

    -

    Return code.

    -

    -

    3.2.15
    +

    +info

    +

    Return code.

    +

    +

    3.2.15 tril — Return the lower triangle
    @@ -1864,84 +1879,84 @@ class="description">     call a%tril(l,info[,&        & diag,imin,imax,jmin,jmax,rscale,cscale,u]) -

    -

    Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), -optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 and -returing the complementary upper triangle. +

    +

    Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), +optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 +and returing the complementary upper triangle.

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the sparse matrix.

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    -

    +

    diag

    diag
    -

    Include diagonals up to this one; diag=1 means the first superdiagonal, +

    Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

    -

    +

    imin,imax,jmin,jmax

    imin,imax,jmin,jmax
    -

    Minimum and maximum row and column indices.

    Minimum and maximum row and column indices.
    Type: optional.

    -

    +

    rscale,cscale

    rscale,cscale
    -

    Whether to rescale row/column indices. Type: optional.

    -

    +

    Whether to rescale row/column indices. Type: optional. +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    l

    l
    -

    A copy of the lower triangle of a.

    A copy of the lower triangle of a.
    A variable of type psb_Tspmat_type.

    -

    +

    u

    u
    -

    (optional) A copy of the upper triangle of a.

    (optional) A copy of the upper triangle of a.
    A variable of type psb_Tspmat_type.

    -

    +

    info

    info
    -

    Return code.

    -

    -

    3.2.16

    Return code. +

    +

    3.2.16 triu — Return the upper triangle
    @@ -1950,221 +1965,221 @@ class="description">     call a%triu(u,info[,&        & diag,imin,imax,jmin,jmax,rscale,cscale,l]) -

    -

    Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), +

    +

    Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1, and returing the complementary lower triangle.

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the sparse matrix.

    the sparse matrix.
    A variable of type psb_Tspmat_type.
    Scope: local.
    local.

    -

    +

    diag

    diag
    -

    Include diagonals up to this one; diag=1 means the first superdiagonal, +

    Include diagonals up to this one; diag=1 means the first superdiagonal, diag=-1 means the first subdiagonal. Default 0.

    -

    +

    imin,imax,jmin,jmax

    imin,imax,jmin,jmax
    -

    Minimum and maximum row and column indices.

    Minimum and maximum row and column indices.
    Type: optional.

    -

    +

    rscale,cscale

    rscale,cscale
    -

    Whether to rescale row/column indices. Type: optional.

    -

    +

    Whether to rescale row/column indices. Type: optional. +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    u

    u
    -

    A copy of the upper triangle of a.

    A copy of the upper triangle of a.
    A variable of type psb_Tspmat_type.

    -

    +

    l

    l
    -

    (optional) A copy of the lower triangle of a.

    (optional) A copy of the lower triangle of a.
    A variable of type psb_Tspmat_type.

    -

    +

    info

    info
    -

    Return code.

    -

    -

    3.2.17

    Return code. +

    +

    3.2.17 psb_set_mat_default — Set default storage format
    -

    call psb_set_mat_default(a) -

    +

    call psb_set_mat_default(a) +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    a variable of class(psb_T_base_sparse_mat) requesting a new default +

    a variable of class(psb_T_base_sparse_mat) requesting a new default storage format.
    Type: required.

    -

    -

    3.2.18

    +

    3.2.18 clone — Clone current object
    -

    call a%clone(b,info) -

    +

    call a%clone(b,info) +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    a

    a
    -

    the sparse matrix.

    the sparse matrix.
    Scope: local.
    local.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    b

    b
    -

    A copy of the input object. +

    A copy of the input object.

    -

    +

    info

    info
    -

    Return code.

    -

    -

    3.2.19

    Return code. +

    +

    3.2.19 Named Constants
    -

    +

    -

    +

    psb_dupl_ovwrt_

    psb_dupl_ovwrt_
    -

    Duplicate coefficients should be overwritten (i.e. ignore duplications) +

    Duplicate coefficients should be overwritten (i.e. ignore duplications)

    -

    +

    psb_dupl_add_

    psb_dupl_add_
    -

    Duplicate coefficients should be added; +

    Duplicate coefficients should be added;

    -

    +

    psb_dupl_err_

    psb_dupl_err_
    -

    Duplicate coefficients should trigger an error conditino +

    Duplicate coefficients should trigger an error conditino

    -

    +

    psb_upd_dflt_

    psb_upd_dflt_
    -

    Default update strategy for matrix coefficients; +

    Default update strategy for matrix coefficients;

    -

    +

    psb_upd_srch_

    psb_upd_srch_
    -

    Update strategy based on search into the data structure; +

    Update strategy based on search into the data structure;

    -

    +

    psb_upd_perm_

    psb_upd_perm_
    -

    Update strategy based on additional permutation data (see tools routine +

    Update strategy based on additional permutation data (see tools routine description).

    -

    -

    3.3

    +

    3.3 Dense Vector Data Structure

    -

    The

    The psb_T6. Among other simple things, we define here an extraction method that can be used to get a full copy of the part of the vector stored on the local process. -

    The type declaration is shown in figure 

    The type declaration is shown in figure 3 where T is a placeholder for the data type and precision variants

    -

    +

    I

    I
    -

    Integer; +

    Integer;

    -

    +

    S

    S
    -

    Single precision real; +

    Single precision real;

    -

    +

    D

    D
    -

    Double precision real; +

    Double precision real;

    -

    +

    C

    C
    -

    Single precision complex; +

    Single precision complex;

    -

    +

    Z

    Z
    -

    Double precision complex.

    -

    The actual data is contained in the polymorphic component v%v; the separation between +

    Double precision complex. +

    The actual data is contained in the polymorphic component v%v; the separation between the application and the actual data is essential for cases where it is necessary to link to data storage made available elsewhere outside the direct control of the compiler/application, e.g. data stored in a graphics accelerator’s private memory. -


    @@ -2231,7 +2246,7 @@ memory.
    -

    +

       type psb_T_base_vect_type
         TYPE(KIND_), allocatable :: v(:)
    @@ -2242,99 +2257,99 @@ memory.
       end type  psb_T_vect_type
     
     
    -

    -

    +
    Listing 3: The PSBLAS defined data type that contains a dense vector.


    -
    3.3.1 3.3.1 Vector Methods
    -

    -

    3.3.2

    +

    3.3.2 get_nrows — Get number of rows in a dense vector
    -

    nr = v%get_nrows() -

    +

    nr = v%get_nrows() +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    v

    v
    -

    the dense vector

    the dense vector
    Scope: local
    local

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    Function value

    Function value
    -

    The number of rows of dense vector v.

    -

    -

    3.3.3

    The number of rows of dense vector v. +

    +

    3.3.3 sizeof — Get memory occupation in bytes of a dense vector
    -

    memory_size = v%sizeof() -

    +

    memory_size = v%sizeof() +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    v

    v
    -

    the dense vector

    the dense vector
    Scope: local
    local

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    Function value

    Function value
    -

    The memory occupation in bytes.

    -

    -

    3.3.4

    The memory occupation in bytes. +

    +

    3.3.4 set — Set contents of the vector
    @@ -2344,94 +2359,94 @@ class="description">  call  v%set(vect[,first,last])  call  v%zero() -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    v

    v
    -

    the dense vector

    the dense vector
    Scope: local
    local

    -

    +

    alpha

    alpha
    -

    A scalar value.

    A scalar value.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    -

    +

    first,last

    first,last
    -

    Boundaries for setting in the vector.

    Boundaries for setting in the vector.
    Scope: local
    local
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: integers.

    -

    +

    vect

    vect
    -

    An array

    An array
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    -

    Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call +

    Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call to v%set(zero) with the zero constant having the appropriate type and kind. -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    v

    v
    -

    the dense vector, with updated entries

    the dense vector, with updated entries
    Scope: local
    local

    -

    -

    3.3.5

    +

    3.3.5 get_vect — Get a copy of the vector contents
    @@ -2439,66 +2454,66 @@ class="newline" />
     extv = v%get_vect([n])
     
    -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    v

    v
    -

    the dense vector

    the dense vector
    Scope: local
    local

    -

    +

    n

    n
    -

    Size to be returned

    Size to be returned
    Scope: local.
    local.
    Type: optional; default: entire vector.
    optional; default: entire vector.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    Function value

    Function value
    -

    An allocatable array holding a copy of the dense vector contents. If the - argument n is specified, the size of the returned array equals the minimum - between n and the internal size of the vector, or 0 if n is negative; - otherwise, the size of the array is the same as the internal size of the - vector.

    +

    An allocatable array holding a copy of the dense vector contents. If + the argument n is specified, the size of the returned array equals the + minimum between n and the internal size of the vector, or 0 if n is + negative; otherwise, the size of the array is the same as the internal size + of the vector. -

    -

    3.3.6

    +

    3.3.6 clone — Clone current object
    @@ -2506,70 +2521,70 @@ class="cmmi-10">n is negative;
     call  x%clone(y,info)
     
    -

    -

    +

    +

    -

    +

    Type:

    Type:
    -

    Asynchronous. +

    Asynchronous.

    -

    +

    On Entry

    On Entry
    -

    +

    -

    +

    x

    x
    -

    the dense vector.

    the dense vector.
    Scope: local.
    local.

    -

    +

    -

    +

    On Return

    On Return
    -

    +

    -

    +

    y

    y
    -

    A copy of the input object. +

    A copy of the input object.

    -

    +

    info

    info
    -

    Return code.

    +

    Return code. -

    -

    3.4

    +

    3.4 Preconditioner data structure

    -

    Our base library offers support for simple well known preconditioners like Diagonal +

    Our base library offers support for simple well known preconditioners like Diagonal Scaling or Block Jacobi with incomplete factorization ILU(0). -

    A preconditioner is held in the

    A preconditioner is held in the psb_prec_Tprec_type data structure reported in figure 4. The psb_prec_type data type may contain a simple preconditioning matrix -with the associated communication descriptor.The internal preconditioner is +href="#x8-53001r4">4. The psb_Tprec_type data type may contain a simple preconditioning +matrix with the associated communication descriptor. The internal preconditioner is allocated appropriately with the dynamic type corresponding to the desired preconditioner. -


    @@ -2577,7 +2592,7 @@ preconditioner.
    -

    +

     
       type psb_Tprec_type
    @@ -2585,7 +2600,7 @@ preconditioner.
       end type psb_Tprec_type
     
     
    -

    +


    Listing 4: The PSBLAS defined data type that contains a preconditioner.
    @@ -2593,72 +2608,73 @@ class="content">The PSBLAS defined data type that contains a preconditioner.
    -

    3.5 3.5 Heap data structure

    -

    Among the tools routines of sec. 

    Among the tools routines of sec. 6, we have a number of sorting utilities; the heap sort is implemented in terms of heaps having the following signatures:

    -

    +

    psb_T_heap

    -

    : a heap containing elements of type T, where T can be i,s,c,d,z for +

    : a heap containing elements of type T, where T can be i,s,c,d,z for integer, real and complex data;

    -

    +

    psb_T_idx_heap

    -

    : a heap containing elements of type T, as above, together with an integer +

    : a heap containing elements of type T, as above, together with an integer index.

    -

    Given a heap object, the following methods are defined on it: +

    Given a heap object, the following methods are defined on it:

    -

    +

    init

    init
    -

    Initialize memory; also choose ascending or descending order; +

    Initialize memory; also choose ascending or descending order;

    -

    +

    howmany

    howmany
    -

    Current heap occupancy; +

    Current heap occupancy;

    -

    +

    insert

    insert
    -

    Add an item (or an item and its index); +

    Add an item (or an item and its index);

    -

    +

    get_first

    get_first
    -

    Remove and return the first element; +

    Remove and return the first element;

    -

    +

    dump

    dump
    -

    Print on file; +

    Print on file;

    -

    +

    free

    free
    -

    Release memory.

    -

    These objects are used in AMG4PSBLAS to implement the factorization algorithms. +

    Release memory. +

    These objects are used to implement the factorization and approximate inversion +algorithms. diff --git a/docs/html/userhtmlse4.html b/docs/html/userhtmlse4.html index a23f021f..ca615bb1 100644 --- a/docs/html/userhtmlse4.html +++ b/docs/html/userhtmlse4.html @@ -16,12 +16,12 @@ href="userhtmlse3.html" >prev] [prev-tail] [tail] [up]

    -

    4 4 Computational routines

    -

    4.1 4.1 psb_geaxpby — General Dense Matrix Sum

    This subroutine is an interface to the computational kernel for dense matrix sum: @@ -44,7 +44,7 @@ src="userhtml1x.png" alt="y ← α x+ βy

    -

    +class="pplb7t-">Subroutine


    x, y, α, β x, y, α, β Subroutine


    Short Precision Real Short Precision Real psb_geaxpby
    Long Precision Real Long Precision Real psb_geaxpby
    Short Precision Complexpsb_geaxpby
    Long Precision Complex Long Precision Complexpsb_geaxpby


    -
    Table 1: Data types
    @@ -90,43 +90,43 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    alpha

    alpha

    the scalar α.
    α.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 1. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    beta

    beta

    the scalar β.
    β.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 1.

    y

    y

    the local portion of the global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of the type indicated in Table 1. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    y

    y

    the local portion of result submatrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type 1.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.2 4.2 psb_gedot — Dot Product

    This function computes dot product between two vectors x and y.
    x and y.
    If x and y are real vectors it computes dot-product as: +class="zplmr7m-">x and y are real vectors it computes dot-product as:

    dot ← xTy

    Else if x and y are complex vectors then it computes dot-product as: +class="zplmr7m-">x and y are complex vectors then it computes dot-product as:

    dot ← xHy

    -

    psb_gedot(x, y, desc_a, info [,global])

    +

    psb_gedot(x, y, desc_a, info [,global])

    @@ -272,7 +272,7 @@ src="userhtml3x.png" alt="dot ← xHy

    -

    +class="pplb7t-">Function


    dot, x, y dot, x, y Function


    Short Precision Real Short Precision Real psb_gedot
    Long Precision Real Long Precision Real psb_gedot
    Short Precision Complexpsb_gedot
    Long Precision Complex Long Precision Complexpsb_gedot


    -
    Table 2: Data types
    @@ -317,28 +317,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 2. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 2. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    global

    global
    @@ -403,53 +403,53 @@ class="description">

    Specifies whether the computation should include the global reduction across all processes.
    Scope: global
    global
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: a logical scalar. Default: global=.true.

    On Return

    On Return

    Function value

    Function value

    is the dot product of vectors x and y.
    x and y.
    Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
    Specified as: a number of the data type indicated in Table 2.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    Notes +class="pplb7t-x-x-120">Notes

    1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to - compute multiple dot products at the same time; in this case, it is + entails a significant overhead. It may be necessary and/or advisable + to compute multiple dot products at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

      (1:3))
      -

      4.3 4.3 psb_gedots — Generalized Dot Product

      This subroutine computes a series of dot products among the columns of two dense matrices x and y: +class="zplmr7m-">x and y:

      res(i) ← x(:,i)Ty(:,i)

      If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of x is used. If x and y are of rank one, then res is a scalar, else it is a rank +class="zplmr7m-">x is used. If x and y are of rank one, then res is a scalar, else it is a rank one array.

      call psb_gedots(res, x, y, desc_a, info)

      @@ -567,7 +567,7 @@ one array.

      -

      +class="pplb7t-">Subroutine +class="td11">Short Precision Real +class="td11">Long Precision Real +class="td11">psb_gedots +class="td11">Long Precision Complex


      res, x, y res, x, y Subroutine


      Short Precision Real psb_gedots psb_gedots
      Long Precision Real psb_gedots psb_gedots
      Short Precision Complexpsb_gedots
      Long Precision Complex psb_gedots psb_gedots


      -
      Table 3: Data types
      @@ -612,28 +612,28 @@ class="content">Data types

      Type:

      Type:

      Synchronous.

      On Entry

      On Entry

      x

      x

      the local portion of global dense matrix x.
      x.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 3. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

      y

      y

      the local portion of global dense matrix y.
      y.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 3. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

      desc_a

      desc_a

      contains data structures for communications.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: an object of type psb_type.

      On Return

      On Return

      @@ -699,50 +699,50 @@ class="description">

      res

      res

      is the dot product of vectors x and y.
      x and y.
      Scope: global
      global
      Intent: out.
      out.
      Specified as: a number or a rank-one array of the data type indicated in Table 2.

      info

      info

      Error code.
      Scope: local
      local
      Type: required
      required
      Intent: out.
      out.
      An integer value; 0 means no error has been detected.

      -

      4.4 4.4 psb_normi — Infinity-Norm of Vector

      This function computes the infinity-norm of a vector x.
      x.
      If x is a real vector it computes infinity norm as: +class="zplmr7m-">x is a real vector it computes infinity norm as:

      amax  ← max |xi|
+src=

      else if x is a complex vector then it computes the infinity-norm as: +class="zplmr7m-">x is a complex vector then it computes the infinity-norm as:

      amax ← maxi (|re(xi)|+ |im(xi)|)
+src=

      psb_geamax(x, desc_a, info [,global])
      psb_normi<

      -

      Function



      amax amax x x Function



      Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geamax
      Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geamax
      Short Precision Complexpsb_geamax
      Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geamax



      -
      Table 4: Data types
      @@ -809,28 +810,28 @@ class="content">Data types

      Type:

      Type:

      Synchronous.

      On Entry

      On Entry

      x

      x

      the local portion of global dense matrix x.
      x.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: a rank one or two array or an object of type 4.

      desc_a

      desc_a

      contains data structures for communications.
      Scope: local
      local
      Type: required
      required
      Intent: in.
      in.
      Specified as: an object of type psb_type.

      global

      global

      Specifies whether the computation should include the global reduction across all processes.
      Scope: global
      global
      Type: optional.
      optional.
      Intent: in.
      in.
      Specified as: a logical scalar. Default: global=.true.

      On Return

      On Return

      @@ -884,36 +885,36 @@ class="description">

      Function value

      Function value

      is the infinity norm of vector x.
      x.
      Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
      Specified as: a long precision real number.

      info

      info

      Error code.
      Scope: local
      local
      Type: required
      required
      Intent: out.
      out.
      An integer value; 0 means no error has been detected.

      Notes +class="pplb7t-x-x-120">Notes

      1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to compute - multiple norms at the same time; in this case, it is possible to improve the - runtime efficiency by using the following scheme: + entails a significant overhead. It may be necessary and/or advisable to + compute multiple norms at the same time; in this case, it is possible to improve + the runtime efficiency by using the following scheme:

         (1:3))
        -

        4.5 4.5 psb_geamaxs — Generalized Infinity Norm

        This subroutine computes a series of infinity norms on the columns of a dense matrix x: +class="zplmr7m-">x:

        res(i) ← max|x(k,i)|
+src=

        @@ -1017,7 +1018,7 @@ src="userhtml7x.png" alt="res(i) ← max|x(k,i)|

        -

        Subroutine



        res res x x Subroutine



        Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geamaxs
        Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geamaxs
        Short Precision Complexpsb_geamaxs
        Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geamaxs



        -
        Table 5: Data types
        @@ -1066,28 +1068,28 @@ class="content">Data types

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        x

        x

        the local portion of global dense matrix x.
        x.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a rank one or two array or an object of type 5.

        desc_a

        desc_a

        contains data structures for communications.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: an object of type psb_type.

        On Return

        On Return

        res

        res

        is the infinity norm of the columns of x.
        x.
        Scope: global
        global
        Intent: out.
        out.
        Specified as: a number or a rank-one array of long precision real numbers.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        4.6 4.6 psb_norm1 — 1-Norm of Vector

        This function computes the 1-norm of a vector x.
        x.
        If x is a real vector it computes 1-norm as: +class="zplmr7m-">x is a real vector it computes 1-norm as:

        asum ←  ∥xi∥
+src=

        else if x is a complex vector then it computes 1-norm as: +class="zplmr7m-">x is a complex vector then it computes 1-norm as:

        asum ←  ∥re(x)∥1 + ∥im (x)∥1
+src=

        -

        psb_geasum(x, desc_a, info [,global]) psb_norm1(x, desc_a, info [,global]) +

        psb_geasum(x, desc_a, info [,global])psb_norm1(x, desc_a, info [,global])

        @@ -1182,7 +1184,7 @@ src="userhtml9x.png" alt="asum ← ∥re(x)∥1 + ∥im (x)

        -

        Function



        asum asum x x Function



        Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geasum
        Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geasum
        Short Precision Complexpsb_geasum
        Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geasum



        -
        Table 6: Data types
        @@ -1231,28 +1234,28 @@ class="content">Data types

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        x

        x

        the local portion of global dense matrix x.
        x.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a rank one or two array or an object of type 6.

        desc_a

        desc_a

        contains data structures for communications.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: an object of type psb_type.

        global

        global

        Specifies whether the computation should include the global reduction across all processes.
        Scope: global
        global
        Type: optional.
        optional.
        Intent: in.
        in.
        Specified as: a logical scalar. Default: global=.true.

        On Return

        On Return

        @@ -1306,36 +1309,36 @@ class="description">

        Function value

        Function value

        is the 1-norm of vector x.
        x.
        Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
        Specified as: a long precision real number.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to compute - multiple norms at the same time; in this case, it is possible to improve the - runtime efficiency by using the following scheme: + entails a significant overhead. It may be necessary and/or advisable to + compute multiple norms at the same time; in this case, it is possible to improve + the runtime efficiency by using the following scheme:

           (1:3))
          -

          4.7 4.7 psb_geasums — Generalized 1-Norm of Vector

          This subroutine computes a series of 1-norms on the columns of a dense matrix x: +class="zplmr7m-">x:

          res(i) ← max|x(k,i)|
+src=

          This function computes the 1-norm of a vector x.
          x.
          If x is a real vector it computes 1-norm as: +class="zplmr7m-">x is a real vector it computes 1-norm as:

          res(i) ← ∥xi∥

          else if x is a complex vector then it computes 1-norm as: +class="zplmr7m-">x is a complex vector then it computes 1-norm as:

          res(i) ← ∥re(x )∥1 +∥im (x )∥1
+src=

          call psb_geasums(res, x, desc_a, info) @@ -1453,7 +1457,7 @@ src="userhtml12x.png" alt="res(i) ← ∥re(x )∥1 +∥im (

          -

          Subroutine



          res res x x Subroutine



          Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_geasums
          Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_geasums
          Short Precision Complexpsb_geasums
          Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_geasums



          -
          Table 7: Data types
          @@ -1502,28 +1507,28 @@ class="content">Data types

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          x

          x

          the local portion of global dense matrix x.
          x.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a rank one or two array or an object of type 7.

          desc_a

          desc_a

          contains data structures for communications.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: an object of type psb_type.

          On Return

          On Return

          res

          res

          contains the 1-norm of (the columns of) x.
          x.
          Scope: global
          global
          Intent: out.
          out.
          Short as: a long precision real number. Specified as: a long precision real number. @@ -1575,35 +1580,36 @@ class="newline" />Short as: a long precision real number. Specified as: a long p

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          -

          4.8 4.8 psb_norm2 — 2-Norm of Vector

          This function computes the 2-norm of a vector x.
          x.
          If x is a real vector it computes 2-norm as: +class="zplmr7m-">x is a real vector it computes 2-norm as:

          nrm2  ← √xT-x-
+src=

          else if x is a complex vector then it computes 2-norm as: +class="zplmr7m-">x is a complex vector then it computes 2-norm as:

                  √----
-nrm2 ←   xHx
+nrm 2 ←  xHx

          @@ -1619,7 +1625,7 @@ nrm2 ← xHx

          -

          Function



          nrm2 nrm2 x x Function



          Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_genrm2
          Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_genrm2
          Short Precision Complexpsb_genrm2
          Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_genrm2



          -
          Table 8: Data types
          @@ -1671,28 +1678,28 @@ class="newline" />

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          x

          x

          the local portion of global dense matrix x.
          x.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a rank one or two array or an object of type 8.

          desc_a

          desc_a

          contains data structures for communications.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: an object of type psb_type.

          global

          global

          Specifies whether the computation should include the global reduction across all processes.
          Scope: global
          global
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: a logical scalar. Default: global=.true.

          On Return

          On Return
          @@ -1746,38 +1753,38 @@ class="description">

          Function Value

          Function Value

          is the 2-norm of vector x.
          x.
          Scope: global unless the optional variable global=.false. has been +class="pplb7t-">global unless the optional variable global=.false. has been specified
          Type: required
          required
          Specified as: a long precision real number.

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. The computation of a global result requires a global communication, which - entails a significant overhead. It may be necessary and/or advisable to compute - multiple norms at the same time; in this case, it is possible to improve the - runtime efficiency by using the following scheme: + entails a significant overhead. It may be necessary and/or advisable to + compute multiple norms at the same time; in this case, it is possible to improve + the runtime efficiency by using the following scheme:

             (1:3))
            -

            4.9 4.9 psb_genrm2s — Generalized 2-Norm of Vector

            This subroutine computes a series of 2-norms on the columns of a dense matrix x: +class="zplmr7m-">x:

            res(i) ← ∥x(:,i)∥2
@@ -1880,7 +1887,7 @@ src=

            -

            Subroutine



            res res x x Subroutine



            Short Precision RealShort Precision Real Short Precision RealShort Precision Real psb_genrm2s
            Long Precision Real Long Precision Real Long Precision RealLong Precision Real psb_genrm2s
            Short Precision Complexpsb_genrm2s
            Long Precision Real Long Precision Complex Long Precision RealLong Precision Complexpsb_genrm2s



            -
            Table 9: Data types
            @@ -1929,28 +1937,28 @@ class="content">Data types

            Type:

            Type:

            Synchronous.

            On Entry

            On Entry

            x

            x

            the local portion of global dense matrix x.
            x.
            Scope: local
            local
            Type: required
            required
            Intent: in.
            in.
            Specified as: a rank one or two array or an object of type 9.

            desc_a

            desc_a

            contains data structures for communications.
            Scope: local
            local
            Type: required
            required
            Intent: in.
            in.
            Specified as: an object of type psb_type.

            On Return

            On Return

            res

            res

            contains the 1-norm of (the columns of) x.
            x.
            Scope: global
            global
            Intent: out.
            out.
            Specified as: a long precision real number.

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            -

            4.10 4.10 psb_norm1 — 1-Norm of Sparse Matrix

            This function computes the 1-norm of a matrix A:
            A:

            nrm1 ← ∥A ∥1
      <dl class=

            A

            A

            represents the global matrix A

    +class="zplmr7m-">A
    @@ -2044,7 +2052,7 @@ class="cmmi-10">A

    -

    Function


    A A Function


    Short Precision Real Short Precision Real psb_spnrm1
    Long Precision Real Long Precision Real psb_spnrm1
    Short Precision Complexpsb_spnrm1
    Long Precision Complex Long Precision Complexpsb_spnrm1


    -
    Table 10: Data types
    @@ -2094,28 +2103,28 @@ psb_norm1(A, desc_a, info)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    a

    a

    the local portion of the global sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    Function value

    Function value

    is the 1-norm of sparse submatrix A.
    A.
    Scope: global
    global
    Specified as: a long precision real number. @@ -2161,23 +2170,23 @@ class="newline" />Specified as: a long precision real number.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.11 4.11 psb_normi — Infinity Norm of Sparse Matrix

    This function computes the infinity-norm of a matrix A:
    A:

    nrmi ←  ∥A∥∞
      <dl class=

    A

    A

    represents the global matrix A

    +class="zplmr7m-">A
    @@ -2204,7 +2213,7 @@ class="cmmi-10">A

    -

    Function


    A A Function


    Short Precision Real Short Precision Real psb_spnrmi
    Long Precision Real Long Precision Real psb_spnrmi
    Short Precision Complexpsb_spnrmi
    Long Precision Complex Long Precision Complexpsb_spnrmi


    -
    Table 11: Data types
    @@ -2254,28 +2264,28 @@ psb_normi(A, desc_a, info)

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    a

    a

    the local portion of the global sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    Function value

    Function value

    is the infinity-norm of sparse submatrix A.
    A.
    Scope: global
    global
    Specified as: a long precision real number. @@ -2321,27 +2331,27 @@ class="newline" />Specified as: a long precision real number.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.12 4.12 psb_spmm — Sparse Matrix by Dense Matrix Product

    This subroutine computes the Sparse Matrix by Dense Matrix Product:
    y ← αAx + βy
+src=
    (1)
    @@ -2372,30 +2382,30 @@ src="userhtml20x.png" alt="y ← αAHx + βy

    x

    x

    is the global dense matrix x:,: +class="zplmr7m-">x:,:

    y

    y

    is the global dense matrix y:,: +class="zplmr7m-">y:,:

    A

    A

    is the global sparse matrix A

    +class="zplmr7m-">A
    @@ -2409,7 +2419,7 @@ class="cmmi-10">A

    -

    +class="pplb7t-">Subroutine +class="td11">Short Precision Real +class="td11">Long Precision Real +class="td11">psb_spmm +class="td11">Long Precision Complex


    A, x, y, α, β A, x, y, α, β Subroutine


    Short Precision Real psb_spmm psb_spmm
    Long Precision Real psb_spmm psb_spmm
    Short Precision Complexpsb_spmm
    Long Precision Complex psb_spmm psb_spmm


    -
    Table 12: Data types
    @@ -2458,43 +2468,43 @@ class="newline" />call

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    alpha

    alpha

    the scalar α.
    α.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 12.

    a

    a

    the local portion of the sparse matrix A.
    A.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 12. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    beta

    beta

    the scalar β.
    β.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 12.

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 12. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    trans

    trans

    indicates what kind of operation to perform.

    trans = N

    trans = N

    the operation is specified by equation 1

    trans = T

    trans = T

    the operation is specified by equation 2

    trans = C

    trans = C

    the operation is specified by equation 3

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: trans = N
    trans = N
    Specified as: a character variable. @@ -2627,108 +2638,109 @@ class="newline" />Specified as: a character variable.

    work

    work

    work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a rank one array of the same type of x and y with the TARGET +class="zplmr7m-">x and y with the TARGET attribute.

    On Return

    On Return

    y

    y

    the local portion of result matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an array of rank one or two containing numbers of type specified in Table 12.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.13 4.13 psb_spsm — Triangular System Solve

    This subroutine computes the Triangular System Solve:

    y  ←   αT- 1x + βy
-y  ←   αDT -1x +βy
-         - 1
-y  ←   αT  Dx  +βy
-y  ←   αT- Tx+ βy
-y  ←   αDT -Tx + βy
-y  ←   αT- TDx + βy
-         - H
-y  ←   αT   x +βy
-y  ←   αDT -Hx + βy
-y  ←   αT- HDx + βy
+           -1
+y  ←   αDT   x+ βy
+y  ←   αT- 1Dx + βy
+y  ←   αT-T x+ βy
+           -T
+y  ←   αDT   x + βy
+y  ←   αT-T Dx + βy
+y  ←   αT-Hx + βy
+           -H
+y  ←   αDT   x + βy
+y  ←   αT-HDx  + βy

    where:

    x

    x

    is the global dense matrix x:,: +class="zplmr7m-">x:,:

    y

    y

    is the global dense matrix y:,: +class="zplmr7m-">y:,:

    T

    T

    is the global sparse block triangular submatrix T +class="zplmr7m-">T

    D

    D

    is the scaling diagonal matrix.

    @@ -2750,7 +2762,7 @@ class="newline" />

    -

    +class="pplb7t-">Subroutine +class="td11">Short Precision Real +class="td11">Long Precision Real +class="td11">psb_spsm +class="td11">Long Precision Complex


    T, x, y, D, α, β T, x, y, D, α, β Subroutine


    Short Precision Real psb_spsm psb_spsm
    Long Precision Real psb_spsm psb_spsm
    Short Precision Complexpsb_spsm
    Long Precision Complex psb_spsm psb_spsm


    -
    Table 13: Data types
    @@ -2798,59 +2810,59 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    alpha

    alpha

    the scalar α.
    α.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 13.

    t

    t

    the global portion of the sparse matrix T.
    T.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object type specified in   3.

    x

    x

    the local portion of global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 13. The rank of x must be the same of y. +class="zplmr7m-">x must be the same of y.

    beta

    beta

    the scalar β.
    β.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a number of the data type indicated in Table 13. @@ -2883,16 +2895,16 @@ href="#x9-68002r13">13.

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type _vect_type containing numbers of type specified in Table 13. The rank of y must be the same of x. +class="zplmr7m-">y must be the same of x.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    trans

    trans

    specify with unitd the operation to perform. +class="pplri7t-">unitd the operation to perform.

    trans = ’N’

    trans = ’N’

    the operation is with no transposed matrix

    trans = ’T’

    trans = ’T’

    the operation is with transposed matrix.

    trans = ’C’

    trans = ’C’

    the operation is with conjugate transposed matrix.

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: trans = N
    trans = N
    Specified as: a character variable.

    unitd

    unitd

    specify with trans the operation to perform. +class="pplri7t-">trans the operation to perform.

    unitd = ’U’

    unitd = ’U’

    the operation is with no scaling

    unitd = ’L’

    unitd = ’L’

    the operation is with left scaling

    unitd = ’R’

    unitd = ’R’

    the operation is with right scaling.

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: unitd = U
    unitd = U
    Specified as: a character variable.

    choice

    choice

    specifies the update of overlap elements to be performed on exit:

    @@ -3022,11 +3036,11 @@ class="description"> class="description">

    psb_square_root_

    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Default: psb_avg_
    Specified as: an integer variable. @@ -3035,80 +3049,84 @@ class="newline" />Specified as: an integer variable.

    diag

    diag

    the diagonal scaling matrix.
    Scope: local
    local
    Type: optional
    optional
    Intent: in.
    in.
    Default: diag(1) = 1(noscaling)
    diag(1) = 1(noscaling)
    Specified as: a rank one array containing numbers of the type indicated in Table 13.

    work

    work

    a work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a rank one array of the same type of x with the TARGET +class="zplmr7m-">x with the TARGET attribute.

    On Return

    On Return

    y

    y

    the local portion of global dense matrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an array of rank one or two containing numbers of type specified in Table 13.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.14 4.14 psb_gemlt — Entrywise Product

    This function computes the entrywise product between two vectors x and +class="zplmr7m-">x and y +class="zplmr7m-">y

    dot ← x(i)y(i).
@@ -3128,7 +3146,7 @@ src=

    -

    +class="pplb7t-">Function


    dot, x, y dot, x, y Function


    Short Precision Real Short Precision Real psb_gemlt
    Long Precision Real Long Precision Real psb_gemlt
    Short Precision Complexpsb_gemlt
    Long Precision Complex Long Precision Complexpsb_gemlt


    -
    Table 14: Data types
    @@ -3173,28 +3191,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense vector x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    y

    y

    the local portion of global dense vector y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    On Return

    On Return

    @@ -3254,16 +3272,16 @@ class="description">

    y

    y

    the local portion of result submatrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an object of type psb14.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.15 4.15 psb_gediv — Entrywise Division

    This function computes the entrywise division between two vectors x and +class="zplmr7m-">x and y +class="zplmr7m-">y

    ∕ ← x(i)∕y(i).
+src=

    psb_gediv(x, y, desc_a, info, [flag) @@ -3313,7 +3331,7 @@ src="userhtml23x.png" alt="∕ ← x(i)∕y(i).

    -

    +class="pplb7t-">Function


    , x, y /, x, y Function


    Short Precision Real Short Precision Real psb_gediv
    Long Precision Real Long Precision Real psb_gediv
    Short Precision Complexpsb_gediv
    Long Precision Complex Long Precision Complexpsb_gediv


    -
    Table 15: Data types
    @@ -3358,28 +3376,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense vector x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    y

    y

    the local portion of global dense vector y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    flag

    flag

    check if any of the y(i) = 0, and in case returns error halting the +class="zplmr7m-">y(i) = 0, and in case returns error halting the computation.
    Scope: local
    local
    Type: optional Intent: in.
    optional Intent: in.
    Specified as: the logical value flag=.true. @@ -3448,22 +3468,22 @@ class="newline" />Specified as: the logical value

    On Return

    On Return

    x

    x

    the local portion of result submatrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an object of type psb14.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    4.16 4.16 psb_geinv — Entrywise Inversion

    This function computes the entrywise inverse of a vector x and puts it into +class="zplmr7m-">x and puts it into y +class="zplmr7m-">y

    ∕ ← 1∕x(i).
+src=

    psb_geinv(x, y, desc_a, info, [flag) @@ -3513,7 +3533,7 @@ src="userhtml24x.png" alt="∕ ← 1∕x(i).

    -

    +class="pplb7t-">Function


    , x, y /, x, y Function


    Short Precision Real Short Precision Real psb_geinv
    Long Precision Real Long Precision Real psb_geinv
    Short Precision Complexpsb_geinv
    Long Precision Complex Long Precision Complexpsb_geinv


    -
    Table 16: Data types
    @@ -3558,28 +3578,28 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    the local portion of global dense vector x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb2.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: an object of type psb_type.

    flag

    flag

    check if any of the x(i) = 0, and in case returns error halting the +class="zplmr7m-">x(i) = 0, and in case returns error halting the computation.
    Scope: local
    local
    Type: optional Intent: in.
    optional Intent: in.
    Specified as: the logical value flag=.true.

    On Return

    On Return

    @@ -3633,16 +3655,16 @@ class="description">

    y

    y

    the local portion of result submatrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    Specified as: an object of type psb16.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    diff --git a/docs/html/userhtmlse5.html b/docs/html/userhtmlse5.html index 6b87e4b3..f2e2d33c 100644 --- a/docs/html/userhtmlse5.html +++ b/docs/html/userhtmlse5.html @@ -16,7 +16,7 @@ href="userhtmlse4.html" >prev] [prev-tail] [tail] [up]

    -

    5 5 Communication routines

    The routines in this chapter implement various global communication operators on vectors associated with a discretization mesh. For auxiliary communication routines @@ -25,7 +25,7 @@ href="userhtmlse6.html#x11-770006">6. -

    5.1 5.1 psb_halo — Halo Data Communication

    These subroutines gathers the values of the halo elements:

    @@ -36,7 +36,7 @@ src="userhtml25x.png" alt="x ← x

    x

    x

    is a global dense submatrix.

    @@ -60,22 +60,22 @@ id="TBL-17-2">

    α, x α, x Subroutine +class="pplb7t-">Subroutine

    Integer Integer psb_halo Short Precision Real Short Precision Real psb_halo Long Precision Real Long Precision Real psb_halo Short Precision Complexpsb_halo Long Precision Complex Long Precision Complexpsb_halo

    -
    Table 17: Data types
    @@ -102,28 +102,28 @@ class="newline" />call

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type 17.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    work

    work

    the work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a rank one array of the same type of x. +class="zplmr7m-">x.

    data

    data

    index list selector.
    Scope: global
    global
    Type: optional
    optional
    Specified - as: an integer. Values:psb_comm_halo_,psb_comm_mov_, psb_comm_ext_, - default: psb_comm_halo_. Chooses the index list on which to base the data - exchange. + as: an integer. Values:psb_comm_halo_,psb_comm_mov_, psb_comm_ext_, + default: psb_comm_halo_. Chooses the index list on which to base the + data exchange.

    On Return

    On Return

    x

    x

    global dense result matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    Returned as: a rank one or two array containing numbers of type specified - in Table inout.
    Returned as: a rank one or two array containing numbers of type + specified in Table 
    17.

    info

    info

    the local portion of result submatrix y.
    y.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value that contains an error code.


    class="content">Sample discretization mesh.


    Usage Example Consider the discretization mesh depicted in fig. Usage Example Consider the discretization mesh depicted in fig. 3, partitioned among two processes as shown by the dashed line; the data distribution is such that each process will own 32 entries in the index space, with a halo made of 8 entries -placed at local indices 33 through 40. If process 0 assigns an initial value of 1 to -its entries in the x vector, and process 1 assigns a value of 2, then after +placed at local indices 33 through 40. If process 0 assigns an initial value of 1 +to its entries in the x vector, and process 1 assigns a value of 2, then after a call to psb_halo the contents of the local vectors will be the following:

    @@ -262,574 +262,574 @@ id="TBL-18-5">
    Process 0
    Process 1
    -Process 0
    Process 1
    I IGLOB(I)GLOB(I)X(I)X(I) IIGLOB(I)GLOB(I)X(I) +class="pplr7t-x-x-90">X(I) 1 11 1 1.01.0 1 331 33 2.02.0 22 22 1.01.0 22 3434 2.0 +class="pplr7t-x-x-90">2.0 3 33 3 1.01.0 3 353 35 2.02.0 44 44 1.01.0 44 3636 2.0 +class="pplr7t-x-x-90">2.0 5 55 5 1.01.0 5 375 37 2.02.0 66 66 1.01.0 66 3838 2.0 +class="pplr7t-x-x-90">2.0 7 77 7 1.01.0 7 397 39 2.02.0 88 88 1.01.0 88 4040 2.0 +class="pplr7t-x-x-90">2.0 9 99 9 1.01.0 9 419 41 2.02.01010 1010 1.01.01010 4242 2.0 +class="pplr7t-x-x-90">2.0 11 1111 11 1.01.011 4311 43 2.02.01212 1212 1.01.01212 4444 2.0 +class="pplr7t-x-x-90">2.0 13 1313 13 1.01.013 4513 45 2.02.01414 1414 1.01.01414 4646 2.0 +class="pplr7t-x-x-90">2.0 15 1515 15 1.01.015 4715 47 2.02.01616 1616 1.01.01616 4848 2.0 +class="pplr7t-x-x-90">2.0 17 1717 17 1.01.017 4917 49 2.02.01818 1818 1.01.01818 5050 2.0 +class="pplr7t-x-x-90">2.0 19 1919 19 1.01.019 5119 51 2.0 +class="pplr7t-x-x-90">2.0 20 2020 20 1.01.020 5220 52 2.0 +class="pplr7t-x-x-90">2.0 21 2121 21 1.01.021 5321 53 2.0 +class="pplr7t-x-x-90">2.0 22 2222 22 1.01.022 5422 54 2.0 +class="pplr7t-x-x-90">2.0 23 2323 23 1.01.023 5523 55 2.0 +class="pplr7t-x-x-90">2.0 24 2424 24 1.01.024 5624 56 2.0 +class="pplr7t-x-x-90">2.0 25 2525 25 1.01.025 5725 57 2.0 +class="pplr7t-x-x-90">2.0 26 2626 26 1.01.026 5826 58 2.0 +class="pplr7t-x-x-90">2.0 27 2727 27 1.01.027 5927 59 2.0 +class="pplr7t-x-x-90">2.0 28 2828 28 1.01.028 6028 60 2.0 +class="pplr7t-x-x-90">2.0 29 2929 29 1.01.029 6129 61 2.0 +class="pplr7t-x-x-90">2.0 30 3030 30 1.01.030 6230 62 2.0 +class="pplr7t-x-x-90">2.0 31 3131 31 1.01.031 6331 63 2.0 +class="pplr7t-x-x-90">2.0 32 3232 32 1.01.032 6432 64 2.0 +class="pplr7t-x-x-90">2.0 33 3333 33 2.02.033 2533 25 1.0 +class="pplr7t-x-x-90">1.0 34 3434 34 2.02.034 2634 26 1.0 +class="pplr7t-x-x-90">1.0 35 3535 35 2.02.035 2735 27 1.0 +class="pplr7t-x-x-90">1.0 36 3636 36 2.02.036 2836 28 1.0 +class="pplr7t-x-x-90">1.0 37 3737 37 2.02.037 2937 29 1.0 +class="pplr7t-x-x-90">1.0 38 3838 38 2.02.038 3038 30 1.0 +class="pplr7t-x-x-90">1.0 39 3939 39 2.02.039 3139 31 1.0 +class="pplr7t-x-x-90">1.0 40 4040 40 2.02.040 3240 32 1.0 +class="pplr7t-x-x-90">1.0
    @@ -841,7 +841,7 @@ class="td11"> -

    5.2 5.2 psb_ovrl — Overlap Update

    These subroutines applies an overlap operator to the input vector:

    @@ -852,20 +852,20 @@ src="userhtml26x.png" alt="x ← Qx

    x

    x

    is the global dense submatrix x +class="zplmr7m-">x

    Q

    Q

    is the overlap operator; it is the composition of two operators Pa and PT.

    +class="zplmr7m-">Pa and PT.
    @@ -887,30 +887,31 @@ id="TBL-19-2">

    x x SubroutineSubroutine

    Short Precision Real psb_ovrl +class="td +11">Short Precision Real psb_ovrl Long Precision Real psb_ovrl +class="td11">Long Precision Real psb_ovrl Short Precision Complexpsb_ovrl +class="td11">psb_ovrl Long Precision Complex psb_ovrl +class="td11">Long Precision Complexpsb_ovrl

    -
    Table 18: Data types
    @@ -923,28 +924,28 @@ class="newline" />call

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    x

    x

    global dense matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: a rank one or two array or an object of type 18.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    update

    update

    Update operator.

    update = psb_none_

    update = psb_none_

    Do nothing;

    update = psb_add_

    update = psb_add_

    Sum overlap entries, i.e. apply PT; +class="zplmr7m-">PT;

    update = psb_avg_

    update = psb_avg_

    Average overlap entries, i.e. apply PaPT;

    +class="zplmr7m-">PaPT;

    Scope: global
    global
    Intent: in.
    in.
    Default: update_type = psb_avg_
    update_type = psb_avg_
    Scope: global
    global
    Specified as: a integer variable.

    work

    work

    the work array.
    Scope: local
    local
    Type: optional
    optional
    Intent: inout.
    inout.
    Specified as: a one dimensional array of the same type of x. +class="zplmr7m-">x.

    On Return

    On Return

    x

    x

    global dense result matrix x.
    x.
    Scope: local
    local
    Type: required
    required
    Intent: inout.
    inout.
    Specified as: an array of rank one or two containing numbers of type specified in Table 18.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    Notes +class="pplb7t-x-x-120">Notes

    1. @@ -1086,20 +1088,21 @@ class="cmbx-12">Notes
    2. The operator PT performs the reduction sum of overlap elements; it is a +class="zplmr7m-">PT performs the reduction sum of overlap elements; it is a “prolongation” operator PT that replicates overlap elements, accounting +class="zplmr7m-">PT that replicates overlap elements, accounting for the physical replication of data;

    3. The operator Pa performs a scaling on the overlap elements by the +class="zplmr7m-">Pa performs a scaling on the overlap elements by the amount of replication; thus, when combined with the reduction operator, - it implements the average of replicated elements over all of their instances.

    + it implements the average of replicated elements over all of their + instances.


    @@ -1124,18 +1127,18 @@ class="content">Sample discretization mesh.


    Example of use Consider the discretization mesh depicted in fig. Example of use Consider the discretization mesh depicted in fig. 4, partitioned -among two processes as shown by the dashed lines, with an overlap of 1 extra layer -with respect to the partition of fig. 3; the data distribution is such that each process will own 40 entries in the index space, with an overlap of 16 entries placed at local indices 25 through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries in the x vector, and process 1 assigns a value of 2, then after a -call to psb_ovrl with psb_avg_ and a call to psb_halo_ the contents of -the local vectors will be the following (showing a transition among the two +class="zplmr7m-">x vector, and process 1 assigns a value of 2, then after a +call to psb_ovrl with psb_avg_ and a call to psb_halo_ the contents of the +local vectors will be the following (showing a transition among the two subdomains)

    @@ -1160,687 +1163,687 @@ id="TBL-20-5">
    Process 0
    Process 1
    -Process 0
    Process 1
    I IGLOB(I)GLOB(I)X(I)X(I) IIGLOB(I)GLOB(I)X(I) +class="pplr7t-x-x-80">X(I) 1 11 1 1.01.0 1 331 33 1.51.5 22 22 1.01.0 22 3434 1.5 +class="pplr7t-x-x-80">1.5 3 33 3 1.01.0 3 353 35 1.51.5 44 44 1.01.0 44 3636 1.5 +class="pplr7t-x-x-80">1.5 5 55 5 1.01.0 5 375 37 1.51.5 66 66 1.01.0 66 3838 1.5 +class="pplr7t-x-x-80">1.5 7 77 7 1.01.0 7 397 39 1.51.5 88 88 1.01.0 88 4040 1.5 +class="pplr7t-x-x-80">1.5 9 99 9 1.01.0 9 419 41 2.02.01010 1010 1.01.01010 4242 2.0 +class="pplr7t-x-x-80">2.0 11 1111 11 1.01.011 4311 43 2.02.01212 1212 1.01.01212 4444 2.0 +class="pplr7t-x-x-80">2.0 13 1313 13 1.01.013 4513 45 2.02.01414 1414 1.01.01414 4646 2.0 +class="pplr7t-x-x-80">2.0 15 1515 15 1.01.015 4715 47 2.02.01616 1616 1.01.01616 4848 2.0 +class="pplr7t-x-x-80">2.0 17 1717 17 1.01.017 4917 49 2.02.01818 1818 1.01.01818 5050 2.0 +class="pplr7t-x-x-80">2.0 19 1919 19 1.01.019 5119 51 2.02.02020 2020 1.01.02020 5252 2.0 +class="pplr7t-x-x-80">2.0 21 2121 21 1.01.021 5321 53 2.02.02222 2222 1.01.02222 5454 2.0 +class="pplr7t-x-x-80">2.0 23 2323 23 1.01.023 5523 55 2.0 +class="pplr7t-x-x-80">2.0 24 2424 24 1.01.024 5624 56 2.0 +class="pplr7t-x-x-80">2.0 25 2525 25 1.51.525 5725 57 2.0 +class="pplr7t-x-x-80">2.0 26 2626 26 1.51.526 5826 58 2.0 +class="pplr7t-x-x-80">2.0 27 2727 27 1.51.527 5927 59 2.0 +class="pplr7t-x-x-80">2.0 28 2828 28 1.51.528 6028 60 2.0 +class="pplr7t-x-x-80">2.0 29 2929 29 1.51.529 6129 61 2.0 +class="pplr7t-x-x-80">2.0 30 3030 30 1.51.530 6230 62 2.0 +class="pplr7t-x-x-80">2.0 31 3131 31 1.51.531 6331 63 2.0 +class="pplr7t-x-x-80">2.0 32 3232 32 1.51.532 6432 64 2.0 +class="pplr7t-x-x-80">2.0 33 3333 33 1.51.533 2533 25 1.5 +class="pplr7t-x-x-80">1.5 34 3434 34 1.51.534 2634 26 1.5 +class="pplr7t-x-x-80">1.5 35 3535 35 1.51.535 2735 27 1.5 +class="pplr7t-x-x-80">1.5 36 3636 36 1.51.536 2836 28 1.5 +class="pplr7t-x-x-80">1.5 37 3737 37 1.51.537 2937 29 1.5 +class="pplr7t-x-x-80">1.5 38 3838 38 1.51.538 3038 30 1.5 +class="pplr7t-x-x-80">1.5 39 3939 39 1.51.539 3139 31 1.5 +class="pplr7t-x-x-80">1.5 40 4040 40 1.51.540 3240 32 1.5 +class="pplr7t-x-x-80">1.5 41 4141 41 2.02.041 1741 17 1.0 +class="pplr7t-x-x-80">1.0 42 4242 42 2.02.042 1842 18 1.0 +class="pplr7t-x-x-80">1.0 43 4343 43 2.02.043 1943 19 1.0 +class="pplr7t-x-x-80">1.0 44 4444 44 2.02.044 2044 20 1.0 +class="pplr7t-x-x-80">1.0 45 4545 45 2.02.045 2145 21 1.0 +class="pplr7t-x-x-80">1.0 46 4646 46 2.02.046 2246 22 1.0 +class="pplr7t-x-x-80">1.0 47 4747 47 2.02.047 2347 23 1.0 +class="pplr7t-x-x-80">1.0 48 4848 48 2.02.048 2448 24 1.0 +class="pplr7t-x-x-80">1.0
    +class="td11">
    @@ -1849,41 +1852,43 @@ class="td11"> -

    5.3 5.3 psb_gather — Gather Global Dense Matrix

    These subroutines collect the portions of global dense matrix distributed over all process into one single array stored on one process.

    glob-x ← collect(loc-xi)
+src=

    where:

    glob_x

    glob_x

    is the global submatrix glob_x1:m,1:n +class="zplmr7m-">glob_x1:m,1:n

    loc_xi

    loc_xi

    is the local portion of global dense matrix on process i. +class="zplmr7m-">i.

    collect

    collect

    is the collect function.

    @@ -1907,37 +1912,37 @@ id="TBL-21-2">

    xi,y xi, y Subroutine +class="pplb7t-">Subroutine

    Integer psb_gather +class="td11">Integer psb_gather Short Precision Real psb_gather +class="td11">Short Precision Real psb_gather Long Precision Real psb_gather +class="td11">Long Precision Real psb_gather Short Precision Complexpsb_gather +class="td11">psb_gather Long Precision Complex psb_gather +class="td11">Long Precision Complexpsb_gather

    -
    Table 19: Data types
    @@ -1950,30 +1955,30 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    loc_x

    loc_x

    the local portion of global dense matrix glob_x.
    glob_x.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array or an object of type 19.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    root

    root

    The process that holds the global copy. If root = -1 all the processes will +class="zplmr7m-">root = -1 all the processes will have a copy of the global vector.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: an integer variable -1 root np - 1, default -1. +class="zplmr7y-">-1 root np- 1, default -1.

    On Return

    On Return

    @@ -2035,34 +2041,34 @@ class="description">

    glob_x

    glob_x

    The array where the local parts must be gathered.
    Scope: global
    global
    Type: required
    required
    Intent: out.
    out.
    Specified as: a rank one or two array with the ALLOCATABLE attribute.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    -

    5.4 5.4 psb_scatter — Scatter Global Dense Matrix

    These subroutines scatters the portions of global dense matrix owned by a process to all the processes in the processes grid. @@ -2074,29 +2080,31 @@ src="userhtml28x.png" alt="loc-xi ← scatter(glob-x)

    glob_x

    glob_x

    is the global matrix glob_x1:m,1:n +class="zplmr7m-">glob_x1:m,1:n

    loc_xi

    loc_xi

    is the local portion of global dense matrix on process i. +class="zplmr7m-">i.

    scatter

    scatter

    is the scatter function.

    @@ -2120,37 +2128,37 @@ id="TBL-22-2">

    xi,y xi, y Subroutine +class="pplb7t-">Subroutine

    Integer psb_scatter +class="td11">Integer psb_scatter Short Precision Real psb_scatter +class="td11">Short Precision Real psb_scatter Long Precision Real psb_scatter +class="td11">Long Precision Real psb_scatter Short Precision Complexpsb_scatter +class="td11">psb_scatter Long Precision Complex psb_scatter +class="td11">Long Precision Complexpsb_scatter

    -
    Table 20: Data types
    @@ -2162,42 +2170,42 @@ class="content">Data types

    Type:

    Type:

    Synchronous.

    On Entry

    On Entry

    glob_x

    glob_x

    The array that must be scattered into local pieces.
    Scope: global
    global
    Type: required
    required
    Intent: in.
    in.
    Specified as: a rank one or two array.

    desc_a

    desc_a

    contains data structures for communications.
    Scope: local
    local
    Type: required
    required
    Intent: in.
    in.
    Specified as: a structured data of type psb_type.

    root

    root

    The process that holds the global copy. If root = -1 all the processes have +class="zplmr7m-">root = -1 all the processes have a copy of the global vector.
    Scope: global
    global
    Type: optional
    optional
    Intent: in.
    in.
    Specified as: an integer variable -1 root np - 1, default psb_root_, +class="zplmr7y-">-1 root np- 1, default psb_root_, i.e. process 0.

    mold

    mold

    The desired dynamic type for the internal vector storage.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an object of a class derived from psb_type.

    On Return

    On Return

    loc_x

    loc_x

    the local portion of global dense matrix glob_x.
    glob_x.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    Specified as: a rank one or two ALLOCATABLE array or an object of type 20.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    diff --git a/docs/html/userhtmlse6.html b/docs/html/userhtmlse6.html index 19fb0f5d..9369ac6f 100644 --- a/docs/html/userhtmlse6.html +++ b/docs/html/userhtmlse6.html @@ -16,10 +16,10 @@ href="userhtmlse5.html" >prev] [prev-tail] [tail] [up]

    -

    6 6 Data management routines

    -

    6.1 6.1 psb_cdall — Allocates a communication descriptor

    @@ -32,89 +32,90 @@ call psb_cdall(icontxt, desc_a, info,nl=nl) call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)

    -

    This subroutine initializes the communication descriptor associated with an index -space. One of the optional arguments

    This subroutine initializes the communication descriptor associated with an +index space. One of the optional arguments parts, vg, vl, nl or repl must be specified, -thereby choosing the specific initialization strategy. +class="cmtt-10">repl must be +specified, thereby choosing the specific initialization strategy.

    On Entry

    On Entry

    Type:

    Type:

    Synchronous.

    icontxt

    icontxt

    the communication context.
    Scope:global.
    global.
    Type:required.
    required.
    Intent: in.
    in.
    Specified as: an integer value.

    vg

    vg

    Data allocation: each index i ∈{1mg} is allocated to process vg(i).
    i ∈{1mg} is allocated to process vg(i).
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array.

    flag

    flag

    Specifies whether entries in vg are zero- or one-based.
    vg are zero- or one-based.
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    Specified as: an integer value 0,1, default 0. +class="pplb7t-">in.
    Specified as: an integer value 0, 1, default 0.

    mg

    mg

    the (global) number of rows of the problem.
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer value. It is required if parts or repl is specified, @@ -123,58 +124,61 @@ class="cmtt-10">vg is specified.

    parts

    parts

    the subroutine that defines the partitioning scheme.
    Scope:global.
    global.
    Type:required.
    required.
    Specified as: a subroutine.

    vl

    vl

    Data allocation: the set of global indices vl(1 : nl) belonging to the calling +class="zplmr7m-">vl(1 : nl) belonging to the calling process.
    Scope:local.
    local.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array.

    nl

    nl

    Data allocation: in a generalized block-row distribution the number of indices belonging to the current process.
    Scope:local.
    local.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer value. May be specified together with vl.

    repl

    repl

    Data allocation: build a replicated index space (i.e. all processes own all indices).
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: the logical value .true. @@ -183,55 +187,58 @@ class="cmtt-10">.true.

    globalcheck

    globalcheck

    Data allocation: do global checks on the local index lists vl
    Scope:global.
    global.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: a logical value, default: .false.

    lidx

    lidx

    Data allocation: the set of local indices lidx(1 : nl) to be assigned to the +class="zplmr7m-">lidx(1 : nl) to be assigned to the global indices vl.
    vl.
    Scope:local.
    local.
    Type:optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array.

    On Return

    On Return

    desc_a

    desc_a

    the communication descriptor.
    Scope:local.
    local.
    Type:required.
    required.
    Intent: out.
    out.
    Specified as: a structured data of type psb_type.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected.

    Notes +class="pplb7t-x-x-120">Notes

    1. @@ -268,7 +275,7 @@ class="cmtt-10">repl must be specified,

      parts

      parts

      In this case we have a subroutine specifying the mapping between global indices and process/local index pairs. If this optional argument is @@ -290,70 +297,78 @@ class="cmtt-10">mg as well. The

      glob_index

      glob_index

      The global index to be mapped;

      np

      np

      The number of processes in the mapping;

      mg

      mg

      The total number of global rows in the mapping;

      The output arguments are:

      nv

      nv

      The number of entries in pv;

      pv

      pv

      A vector containing the indices of the processes to which the global index should be assigend; each entry must satisfy 0 +class="zplmr7y-">≤ pv(i) < np; if nv > 1 we have an index assigned to multiple +class="zplmr7m-">pv(i) < np; if nv > 1 we have an index assigned to multiple processes, i.e. we have an overlap among the subdomains.

      vg

      vg

      In this case the association between an index and a process is specified via an integer vector vg(1:mg); each index i ∈{1mg} is assigned to process +class="zplmr7m-">i ∈{1mg} is assigned to process vg(i). The vector vg(i). The vector vg must be identical on all calling processes; its - entries may have the ranges (0np - 1) or (1np) according to the - value of (0np- 1) or (1np) according to + the value of flag. The size mg may be specified via the optional +class="zplmr7m-">mg may be specified via the optional argument mg; the default is to use the entire vector vg, thus having @@ -362,7 +377,7 @@ class="cmtt-10">mg=size(vg).

      vl

      vl
      @@ -370,7 +385,7 @@ class="description">

      In this case we are specifying the list of indices vl(1:nl) assigned to the current process; thus, the global problem size mg is given by the range of +class="zplmr7m-">mg is given by the range of the aggregate of the individual vectors vl specified in the calling processes. The size may be specified via the optional argument vl, thus having < class="cmtt-10">nl=size(vl). If globalcheck=.true. the subroutine will check how many times each - entry in the global index space (1mg) is specified in the input lists (1mg) is specified in the input lists vl, thus allowing for the presence of overlap in the input, and checking for “orphan” indices. If globalcheck=.false., the subroutine will no

      lidx

      lidx

      The optional argument lidx is available for those cases in which the user @@ -414,20 +431,21 @@ href="userhtmlse2.html#x4-70002.3.1">2.3.1.

      nl

      nl

      If this argument is specified alone (i.e. without vl) the result is a generalized row-block distribution in which each process I gets assigned a - consecutive chunk of NI = nl global indices. +class="zplmr7m-">I gets assigned + a consecutive chunk of NI = nl global indices.

      repl

      repl

      This arguments specifies to replicate all indices on all processes. This is a special purpose data allocation that is useful in the construction of some @@ -464,23 +482,24 @@ class="cmtt-10">globalcheck=.true.,

    2. When the subroutine is invoked with vl in conjunction with globalcheck=.false., - no index space scan will take place. Thus it is the responsibility of the user to - make sure that the indices specified in vl have neither orphans nor overlaps; if - this assumption fails, results will be unpredictable. +class="cmtt-10">vl in conjunction with + globalcheck=.false., no index space scan will take place. Thus it is the + responsibility of the user to make sure that the indices specified in vl have + neither orphans nor overlaps; if this assumption fails, results will be + unpredictable.

    3. -

      Orphan and overlap indices are impossible by construction when the subroutine - is invoked with

      Orphan and overlap indices are impossible by construction when the + subroutine is invoked with nl (alone), or vg.

    -

    6.2 6.2 psb_cdins — Communication descriptor insert routine

    @@ -494,77 +513,85 @@ call psb_cdins(nz,ja,desc,info[,jla,mask,lidx]) discretization mesh (and isomorphic to the sparsity pattern of a linear system coefficient matrix), storing them as necessary into the communication descriptor. In the first form the edges are specified as pairs of indices ia(i),ja(i); the starting index -ia(i) should belong to the current process. In the second form only the remote indices -ja(i) are specified. +class="zplmr7m-">ia(i), ja(i); the starting index +ia(i) should belong to the current process. In the second form only the remote +indices ja(i) are specified.

    Type:

    Type:

    Asynchronous.

    On Entry

    On Entry

    nz

    nz

    the number of points being inserted.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer value.

    ia

    ia

    the indices of the starting vertex of the edges being inserted.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    ja

    ja

    the indices of the end vertex of the edges being inserted.
    Scope: local.
    local.
    Type: required.
    required.
    Intent: in.
    in.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    mask

    mask

    Mask entries in ja, they are inserted only when the corresponding mask entries are .true.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: a logical array of length nz, default nz, default .true..

    lidx

    lidx

    User defined local indices for ja.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: in.
    in.
    Specified as: an integer array of length nz.

    +class="zplmr7m-">nz.

    On Return

    On Return

    desc_a

    desc_a

    the updated communication descriptor.
    Scope:local.
    local.
    Type:required.
    required.
    Intent: inout.
    inout.
    Specified as: a structured data of type psb_type.

    info

    info

    Error code.
    Scope: local
    local
    Type: required
    required
    Intent: out.
    out.
    An integer value; 0 means no error has been detected. @@ -639,34 +666,34 @@ class="newline" />An integer value; 0 means no error has been detected.

    ila

    ila

    the local indices of the starting vertex of the edges being inserted.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: out.
    out.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    jla

    jla

    the local indices of the end vertex of the edges being inserted.
    Scope: local.
    local.
    Type: optional.
    optional.
    Intent: out.
    out.
    Specified as: an integer array of length nz. +class="zplmr7m-">nz.

    Notes +class="pplb7t-x-x-120">Notes

    1. @@ -686,7 +713,7 @@ href="userhtmlse2.html#x4-70002.3.1">2.3.1.< -

      6.3 6.3 psb_cdasb — Communication descriptor assembly routine

      @@ -699,28 +726,28 @@ call psb_cdasb(desc_a, info [, mold])

      Type:

      Type:

      Synchronous.

      On Entry

      On Entry

      desc_a

      desc_a

      the communication descriptor.
      Scope:local.
      local.
      Type:required.
      required.
      Intent: inout.
      inout.
      Specified as: a structured data of type psb_type.

      mold

      mold

      The desired dynamic type for the internal index storage.
      Scope: local.
      local.
      Type: optional.
      optional.
      Intent: in.
      Specified as: a object of type derived from (integer) +class="pplb7t-">in.
      Specified as: a object of type derived from (integer) psb_type.

      On Return

      On Return

      desc_a

      desc_a

      the communication descriptor.
      Scope:local.
      local.
      Type:required.
      required.
      Intent: inout.
      inout.
      Specified as: a structured data of type psb_type.

      info

      info

      Error code.
      Scope: local
      local
      Type: required
      required
      Intent: out.
      out.
      An integer value; 0 means no error has been detected.

      Notes +class="pplb7t-x-x-120">Notes

      1. @@ -807,7 +834,7 @@ class="cmtt-10">psb_cdasb. -

        6.4 6.4 psb_cdcpy — Copies a communication descriptor

        @@ -820,28 +847,28 @@ call psb_cdcpy(desc_in, desc_out, info)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        desc_in

        desc_in

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        On Return

        On Return

        desc_out

        desc_out

        the communication descriptor copy.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: out.
        out.
        Specified as: a structured data of type psb_type.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.5 6.5 psb_cdfree — Frees a communication descriptor

        @@ -905,28 +932,28 @@ call psb_cdfree(desc_a, info)

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        desc_a

        desc_a

        the communication descriptor to be freed.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: inout.
        inout.
        Specified as: a structured data of type psb_type.

        On Return

        On Return

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.6 6.6 psb_cdbldext — Build an extended communication descriptor

        @@ -964,48 +991,48 @@ class="newline" />An integer value; 0 means no error has been detected.

        -

        This subroutine builds an extended communication descriptor, based on the input -descriptor

        This subroutine builds an extended communication descriptor, based on the +input descriptor desc_a and on the stencil specified through the input sparse matrix a.

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        a

        a

        A sparse matrix Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data type.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        nl

        nl

        the number of additional layers desired.
        Scope:global.
        global.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: an integer value nl 0. +class="zplmr7m-">nl 0.

        extype

        extype

        the kind of estension required.
        Scope:global.
        global.
        Type:optional .
        optional .
        Intent: in.
        in.
        Specified as: an integer value psb_ovt_xhal_, psb_ovt_asov_, default: @@ -1051,22 +1078,22 @@ class="cmtt-10">psb_ovt_xhal_

        On Return

        On Return

        desc_out

        desc_out

        the extended communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: inout.
        inout.
        Specified as: a structured data of type psb_type.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. Specifying psb_ovt_xhal_ for the extype argument the user will obtain a - descriptor for a domain partition in which the additional layers are fetched - as part of an (extended) halo; however the index-to-process mapping is - identical to that of the base descriptor; +class="cmtt-10">extype argument the user will obtain + a descriptor for a domain partition in which the additional layers are + fetched as part of an (extended) halo; however the index-to-process + mapping is identical to that of the base descriptor;

        2. @@ -1111,7 +1138,7 @@ class="cmtt-10">extype argument the user will obtain -

          6.7 6.7 psb_spall — Allocates a sparse matrix

          @@ -1124,28 +1151,28 @@ call psb_spall(a, desc_a, info [, nnz, 

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          desc_a

          desc_a

          the communication descriptor.
          Scope:local.
          local.
          Type:required.
          required.
          Intent: in.
          in.
          Specified as: a structured data of type psb_type.

          nnz

          nnz

          An estimate of the number of nonzeroes in the local part of the assembled matrix.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: an integer value.

          dupl

          dupl

          How to handle duplicate coefficients.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: integer, possible values: psb_dupl_ovwrt_, psb_dupl_add_, @@ -1188,17 +1215,17 @@ class="cmtt-10">psb_dupl_err_.

          bldmode

          bldmode

          Whether to keep track of matrix entries that do not belong to the current process.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          Specified as: +class="pplb7t-">in.
          Specified as: an integer value psb_matbld_noremote_, psb_matbld_remote_. Default: @@ -1208,21 +1235,21 @@ class="cmtt-10">psb_matbld_noremote_.

          On Return

          On Return

          a

          a

          the matrix to be allocated.
          Scope:local
          local
          Type:required
          required
          Intent: out.
          out.
          Specified as: a structured data of type psb_type.

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. @@ -1258,7 +1285,7 @@ class="cmbx-12">Notes
          2. Providing a good estimate for the number of nonzeroes nnz in the +class="zplmr7m-">nnz in the assembled matrix may substantially improve performance in the matrix build phase, as it will reduce or eliminate the need for (potentially multiple) data reallocations; @@ -1271,7 +1298,7 @@ class="cmtt-10">psb_matbld_remote_ is likely to cause a -

            6.8 6.8 psb_spins — Insert a set of coefficients into a sparse matrix

            @@ -1285,53 +1312,53 @@ call psb_spins(nr, irw, irp, ja, val, 

            Type:

            Type:

            Asynchronous.

            On Entry

            On Entry

            nz

            nz

            the number of coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer scalar.

            nr

            nr

            the number of rows to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer scalar.

            irw

            irw

            the first row to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer scalar. @@ -1339,74 +1366,75 @@ class="newline" />Specified as: an integer scalar.

            ia

            ia

            the row indices of the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array of size nz. +class="zplmr7m-">nz.

            irp

            irp

            the row pointers of the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array of size nr + 1. +class="zplmr7m-">nr + 1.

            ja

            ja

            the column indices of the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array of size nz. +class="zplmr7m-">nz.

            val

            val

            the coefficients to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an array of size nz. Must be of the same type and kind of - the coefficients of the sparse matrix a. +class="zplmr7m-">nz. Must be of the same type and kind of the + coefficients of the sparse matrix a.

            desc_a

            desc_a

            The communication descriptor.
            Scope: local.
            local.
            Type: required.
            required.
            Intent: inout.
            inout.
            Specified as: a variable of type psb

            local

            local
            -

            Whether the entries in the indices vectors ia, ja are already in local +

            Whether the entries in the indices vectors ia, ja are already in local numbering.
            Scope:local.
            local.
            Type:optional.
            optional.
            Specified as: a logical value; default: .false..

            @@ -1436,21 +1464,21 @@ class="cmtt-10">.false..

            On Return

            On Return

            a

            a

            the matrix into which coefficients will be inserted.
            Scope:local
            local
            Type:required
            required
            Intent: inout.
            inout.
            Specified as: a structured data of type
            psb_type.

            desc_a

            desc_a

            The communication descriptor.
            Scope: local.
            local.
            Type: required.
            required.
            Intent: inout.
            inout.
            Specified as: a variable of type psb

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            Notes +class="pplb7t-x-x-120">Notes

            1. -

              On entry to this routine the descriptor may be in either the build or +

              On entry to this routine the descriptor may be in either the build or assembled state.

            2. psb_cdins class="enumerate" id="x11-85010x5">

              In COO format the coefficients to be inserted are represented by the ordered triples ia(i),ja(i),val(i), for i = 1,,nz; these triples are +class="zplmr7m-">ia(i), ja(i), val(i), for i = 1, , nz; these triples are arbitrary;

            3. In CSR format the coefficients to be inserted for each input row i = 1,nr - are represented by the ordered triples (i + irw - 1),ja(j),val(j), for +class="zplmr7m-">i = 1, nr + are represented by the ordered triples (i + irw- 1), ja(j), val(j), for j = j = irp(i),,irp(i + 1) - 1; these triples should belong to the current - process, i.e. i+irw-1 should be one of the local indices, but are otherwise +class="zplmr7m-">irp(i), , irp(i + 1) - 1; these triples should belong to the current process, + i.e. i + irw - 1 should be one of the local indices, but are otherwise arbitrary;

            4. -1 should be one of the local indices, but are otherwise
            5. -

              Coefficients from matrix rows not owned by the calling process are treated - according to the value of bldmode specified at allocation time; if bldmode - was chosen as psb_matbld_remote_ the library will keep track of them, - otherwise they are silently ignored; +

              Coefficients from matrix rows not owned by the calling process are + treated according to the value of bldmode specified at allocation time; if + bldmode was chosen as psb_matbld_remote_ the library will keep track + of them, otherwise they are silently ignored;

            6. @@ -1598,7 +1646,7 @@ class="cmtt-10">psb_matbld_remote_ the library will keep tr -

              6.9 6.9 psb_spasb — Sparse matrix assembly routine

              @@ -1611,28 +1659,28 @@ call psb_spasb(a, desc_a, info [, afmt,

              Type:

              Type:

              Synchronous.

              On Entry

              On Entry

              desc_a

              desc_a

              the communication descriptor.
              Scope:local.
              local.
              Type:required.
              required.
              Intent: in/out.
              in/out.
              Specified as: a structured data of type psb_type.

              afmt

              afmt

              the storage format for the sparse matrix.
              Scope: local.
              local.
              Type: optional.
              optional.
              Intent: in.
              in.
              Specified as: an array of characters. Defalt: ’CSR’.

              upd

              upd

              Provide for updates to the matrix coefficients.
              Scope: global.
              global.
              Type: optional.
              optional.
              Intent: in.
              in.
              Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_

              mold

              mold

              The desired dynamic type for the internal matrix storage.
              Scope: local.
              local.
              Type: optional.
              optional.
              Intent: in.
              in.
              Specified as: an object of a class derived from psb_mat.

              On Return

              On Return

              a

              a

              the matrix to be assembled.
              Scope:local
              local
              Type:required
              required
              Intent: inout.
              inout.
              Specified as: a structured data of type psb_type.

              desc_a

              desc_a

              the communication descriptor.
              Scope:local.
              local.
              Type:required.
              required.
              Intent: in/out.
              in/out.
              Specified as: a structured data of type psbbldmode=psb_matbld_remote_, then the descri

              info

              info

              Error code.
              Scope: local
              local
              Type: required
              required
              Intent: out.
              out.
              An integer value; 0 means no error has been detected.

              Notes +class="pplb7t-x-x-120">Notes

              1. -

                On entry to this routine the descriptor must be in the assembled state, - i.e.

                On entry to this routine the descriptor must be in the assembled state, i.e. + psb_cdasb must already have been called. @@ -1764,17 +1812,18 @@ class="cmtt-10">psb_cdasb must already have been called.

              2. -

                Duplicate entries are detected and handled in both build and update state, - with the exception of the error action that is only taken in the build state, - i.e. on the first assembly; +

                Duplicate entries are detected and handled in both build and update + state, with the exception of the error action that is only taken in the build + state, i.e. on the first assembly;

              3. -

                If the update choice is psb_upd_perm_, then subsequent calls to psb_spins - to update the matrix must be arranged in such a way as to produce exactly - the same sequence of coefficient values as encountered at the first assembly; +

                If the update choice is psb_upd_perm_, then subsequent calls to + psb_spins to update the matrix must be arranged in such a way as to + produce exactly the same sequence of coefficient values as encountered + at the first assembly;

              4. @@ -1782,23 +1831,23 @@ class="cmtt-10">psb_spins
              5. -

                On exit from this routine the matrix is in the assembled state, and thus - is suitable for the computational routines; +

                On exit from this routine the matrix is in the assembled state, and thus is + suitable for the computational routines;

              6. If the bldmode=psb_matbld_remote_ value was specified at allocation time, contributions defined on the current process but belonging to a - remote process will be handled accordingly. This is most likely to occur in - finite element applications, with dupl=psb_dupl_add_; it is necessary to - check for possible updates needed in the descriptor, hence there will be a - runtime overhead.

              + remote process will be handled accordingly. This is most likely to occur + in finite element applications, with dupl=psb_dupl_add_; it is necessary + to check for possible updates needed in the descriptor, hence there will + be a runtime overhead.
            -

            6.10 6.10 psb_spfree — Frees a sparse matrix

            @@ -1811,27 +1860,27 @@ call psb_spfree(a, desc_a, info)

            Type:

            Type:

            Synchronous.

            On Entry

            On Entry

            a

            a

            the matrix to be freed.
            Scope:local
            local
            Type:required
            required
            Intent: inout.
            inout.
            Specified as: a structured data of type psb_type.

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            On Return

            On Return

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            -

            6.11 6.11 psb_sprn — Reinit sparse matrix structure for psblas routines.

            @@ -1894,27 +1943,27 @@ call psb_sprn(a, decsc_a, info, clear)

            Type:

            Type:

            Synchronous.

            On Entry

            On Entry

            a

            a

            the matrix to be reinitialized.
            Scope:local
            local
            Type:required
            required
            Intent: inout.
            inout.
            Specified as: a structured data of type psb_type.

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            clear

            clear

            Choose whether to zero out matrix coefficients
            Scope:local.
            local.
            Type:optional.
            optional.
            Intent: in.
            in.
            Default: true.

            @@ -1958,24 +2007,24 @@ class="newline" />Default: true.

        On Return

        On Return

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. @@ -1983,7 +2032,7 @@ class="cmbx-12">Notes -

          6.12 6.12 psb_geall — Allocates a dense matrix

          @@ -1996,28 +2045,28 @@ call psb_geall(x, desc_a, info[, dupl, bldmod

          Type:

          Type:

          Synchronous.

          On Entry

          On Entry

          desc_a

          desc_a

          The communication descriptor.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a variable of type psb

          n

          n

          The number of columns of the dense matrix to be allocated.
          Scope: local
          local
          Type: optional
          optional
          Intent: in.
          in.
          Specified as: Integer scalar, default 1. It is not a valid argument if x is a +class="zplmr7m-">x is a rank-1 array.

          lb

          lb

          The lower bound for the column index range of the dense matrix to be allocated.
          Scope: local
          local
          Type: optional
          optional
          Intent: in.
          in.
          Specified as: Integer scalar, default 1. It is not a valid argument if x is a +class="zplmr7m-">x is a rank-1 array. @@ -2061,15 +2110,15 @@ class="cmmi-10">x is a

          dupl

          dupl

          How to handle duplicate coefficients.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          in.
          Specified as: integer, possible values: psb_dupl_ovwrt_, psb_dupl_add_; @@ -2078,17 +2127,17 @@ class="cmtt-10">psb_dupl_err_ has no effect.

          bldmode

          bldmode

          Whether to keep track of matrix entries that do not belong to the current process.
          Scope: global.
          global.
          Type: optional.
          optional.
          Intent: in.
          Specified as: +class="pplb7t-">in.
          Specified as: an integer value psb_matbld_noremote_, psb_matbld_remote_. Default: @@ -2098,21 +2147,21 @@ class="cmtt-10">psb_matbld_noremote_.

          On Return

          On Return

          x

          x

          The dense matrix to be allocated.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          Specified as: a rank one or two array with the ALLOCATABLE attribute or an object of type

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. @@ -2148,7 +2197,7 @@ class="cmtt-10">psb_matbld_remote_ is likely to cause a -

            6.13 6.13 psb_geins — Dense matrix insertion routine

            @@ -2161,59 +2210,61 @@ call psb_geins(m, irw, val, x, desc_a, 

            Type:

            Type:

            Asynchronous.

            On Entry

            On Entry

            m

            m

            Number of rows in val to be inserted.
            val to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer value.

            irw

            irw

            Indices of the rows to be inserted. Specifically, row i of val will be +class="zplmr7m-">i of val will be inserted into the local row corresponding to the global row index irw(i). +class="zplmr7m-">irw(i). Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: an integer array.

            val

            val

            the dense submatrix to be inserted.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a rank 1 or 2 array. Specified as: an integer value. @@ -2221,16 +2272,16 @@ class="newline" />Specified as: a rank 1 or 2 array. Specified as: an integer va

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            local

            local

            Whether the entries in the index vector irw, are already in local numbering.
            Scope:local.
            local.
            Type:optional.
            optional.
            Specified as: a logical value; default: .false..

            @@ -2255,21 +2306,21 @@ class="cmtt-10">.false..

            On Return

            On Return

            x

            x

            the output dense matrix.
            Scope: local
            local
            Type: required
            required
            Intent: inout.
            inout.
            Specified as: a rank one or two array or an object of type

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            Notes +class="pplb7t-x-x-120">Notes @@ -2303,12 +2354,12 @@ class="cmbx-12">Notes

          2. -

            Duplicate entries are either overwritten or added, there is no provision for - raising an error condition.

          +

          Duplicate entries are either overwritten or added, there is no provision + for raising an error condition.

        -

        6.14 6.14 psb_geasb — Assembly a dense matrix

        @@ -2321,28 +2372,28 @@ call psb_geasb(x, desc_a, info, mold)

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        desc_a

        desc_a

        The communication descriptor.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a variable of type psb

        mold

        mold

        The desired dynamic type for the internal vector storage.
        Scope: local.
        local.
        Type: optional.
        optional.
        Intent: in.
        in.
        Specified as: an object of a class derived from
        psb_base_vect_type; this is only allowed when x is of type x is of type psb_T_type.

        On Return

        On Return

        x

        x

        The dense matrix to be assembled.
        Scope: local
        local
        Type: required
        required
        Intent: inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an +class="pplb7t-">inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an object of type psb

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. -

          On entry to this routine the descriptor must be in the assembled state, - i.e.

          On entry to this routine the descriptor must be in the assembled state, i.e. + psb_cdasb must already have been called.

        2. psb_cdasb must already have been called.

          If the bldmode=psb_matbld_remote_ value was specified at allocation time, contributions defined on the current process but belonging to a - remote process will be handled accordingly. This is most likely to occur in - finite element applications, with dupl=psb_dupl_add_.

        -

        6.15 6.15 psb_gefree — Frees a dense matrix

        @@ -2451,28 +2502,28 @@ call psb_gefree(x, desc_a, info)

        Type:

        Type:

        Synchronous.

        On Entry

        On Entry

        x

        x

        The dense matrix to be freed.
        Scope: local
        local
        Type: required
        required
        Intent: inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an +class="pplb7t-">inout.
        Specified as: a rank one or two array with the ALLOCATABLE or an object of type psb

        desc_a

        desc_a

        The communication descriptor.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a variable of type
        psb

        On Return

        On Return

        @@ -2512,20 +2563,20 @@ class="description">

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.16 6.16 psb_gelp — Applies a left permutation to a dense matrix

        @@ -2538,61 +2589,61 @@ call psb_gelp(trans, iperm, x, info)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        trans

        trans

        A character that specifies whether to permute A or AT.
        A or AT.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a single character with value ’N’ for A or ’T’ for AT.
        A or ’T’ for AT.

        iperm

        iperm

        An integer array containing permutation information.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: an integer one-dimensional array.

        x

        x

        The dense matrix to be permuted.
        Scope: local
        local
        Type: required
        required
        Intent: inout.
        inout.
        Specified as: a one or two dimensional array.

        @@ -2602,26 +2653,26 @@ class="newline" />

        On Return

        On Return

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.17 6.17 psb_glob_to_loc — Global to local indices convertion

        @@ -2635,42 +2686,42 @@ call psb_glob_to_loc(x, desc_a, info, iact,owned)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        x

        x

        An integer vector of indices to be converted.
        Scope: local
        local
        Type: required
        required
        Intent: in, inout.
        in, inout.
        Specified as: a rank one integer array.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        iact

        iact

        specifies action to be taken in case of range errors. Scope: global
        global
        Type: optional
        optional
        Intent: in.
        in.
        Specified as: a character variable Ignore, Warning or Ignore.

        owned

        owned

        Specfies valid range of input Scope: global
        global
        Type: optional
        optional
        Intent: in.
        in.
        If true, then only indices strictly owned by the current process are - considered valid, if false then halo indices are also accepted. Default: false.

        + considered valid, if false then halo indices are also accepted. Default: + false.

        On Return

        On Return

        x

        x
        -

        If y is not present, then x is overwritten with the translated integer indices. - Scope: global

        If y is not present, then x is overwritten with the translated integer + indices. Scope: global
        Type: required
        required
        Intent: inout.
        inout.
        Specified as: a rank one integer array.

        y

        y

        If y is present, then y is overwritten with the translated integer indices, +class="zplmr7m-">y is present, then y is overwritten with the translated integer indices, and x is left unchanged. Scope: global
        x is left unchanged. Scope: global
        Type: optional
        optional
        Intent: out.
        out.
        Specified as: a rank one integer array.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        Notes +class="pplb7t-x-x-120">Notes

        1. -

          If an input index is out of range, then the corresponding output index is - set to a negative number; +

          If an input index is out of range, then the corresponding output index is + set to a negative number;

        2. -

          The default Ignore means that the negative output is the only action +

          The default Ignore means that the negative output is the only action taken on an out-of-range input.

        -

        6.18 6.18 psb_loc_to_glob — Local to global indices conversion

        @@ -2792,42 +2844,42 @@ call psb_loc_to_glob(x, desc_a, info, iact)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        x

        x

        An integer vector of indices to be converted.
        Scope: local
        local
        Type: required
        required
        Intent: in, inout.
        in, inout.
        Specified as: a rank one integer array.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        iact

        iact

        specifies action to be taken in case of range errors. Scope: global
        global
        Type: optional
        optional
        Intent: in.
        in.
        Specified as: a character variable Ignore, Warning or Ignore.

        On Return

        On Return

        x

        x
        -

        If y is not present, then x is overwritten with the translated integer indices. - Scope: global

        If y is not present, then x is overwritten with the translated integer + indices. Scope: global
        Type: required
        required
        Intent: inout.
        inout.
        Specified as: a rank one integer array.

        y

        y
        -

        If y is not present, then y is overwritten with the translated integer indices, - and x is left unchanged. Scope: global

        If y is not present, then y is overwritten with the translated integer + indices, and x is left unchanged. Scope: global
        Type: optional
        optional
        Intent: out.
        out.
        Specified as: a rank one integer array.

        info

        info

        Error code.
        Scope: local
        local
        Type: required
        required
        Intent: out.
        out.
        An integer value; 0 means no error has been detected.

        -

        6.19 6.19 psb_is_owned —

        @@ -2919,42 +2971,42 @@ call psb_is_owned(x, desc_a)

        Type:

        Type:

        Asynchronous.

        On Entry

        On Entry

        x

        x

        Integer index.
        Scope: local
        local
        Type: required
        required
        Intent: in.
        in.
        Specified as: a scalar integer.

        desc_a

        desc_a

        the communication descriptor.
        Scope:local.
        local.
        Type:required.
        required.
        Intent: in.
        in.
        Specified as: a structured data of type psb_type.

        On Return

        On Return

        Function value

        Function value

        A logical mask which is true if x is owned by the current process Scope: +class="zplmr7m-">x is owned by the current process Scope: local
        local
        Type: required
        required
        Intent: out.
        out.

        Notes +class="pplb7t-x-x-120">Notes

        1. @@ -2995,7 +3047,7 @@ class="cmtt-10">.true. value for an index that is strictly -

          6.20 6.20 psb_owned_index —

          @@ -3008,42 +3060,42 @@ call psb_owned_index(y, x, desc_a, info)

          Type:

          Type:

          Asynchronous.

          On Entry

          On Entry

          x

          x

          Integer indices.
          Scope: local
          local
          Type: required
          required
          Intent: in, inout.
          in, inout.
          Specified as: a scalar or a rank one integer array.

          desc_a

          desc_a

          the communication descriptor.
          Scope:local.
          local.
          Type:required.
          required.
          Intent: in.
          in.
          Specified as: a structured data of type psb_type.

          iact

          iact

          specifies action to be taken in case of range errors. Scope: global
          global
          Type: optional
          optional
          Intent: in.
          in.
          Specified as: a character variable Ignore, Warning or Ignore.

          On Return

          On Return

          y

          y

          A logical mask which is true for all corresponding entries of x that are +class="zplmr7m-">x that are owned by the current process Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          Specified as: a scalar or rank one logical array.

          info

          info

          Error code.
          Scope: local
          local
          Type: required
          required
          Intent: out.
          out.
          An integer value; 0 means no error has been detected.

          Notes +class="pplb7t-x-x-120">Notes

          1. -

            This routine returns a .true. value for those indices that are strictly +

            This routine returns a .true. value for those indices that are strictly owned by the current process, excluding the halo indices

          -

          6.21 6.21 psb_is_local —

          @@ -3126,42 +3178,42 @@ call psb_is_local(x, desc_a)

          Type:

          Type:

          Asynchronous.

          On Entry

          On Entry

          x

          x

          Integer index.
          Scope: local
          local
          Type: required
          required
          Intent: in.
          in.
          Specified as: a scalar integer.

          desc_a

          desc_a

          the communication descriptor.
          Scope:local.
          local.
          Type:required.
          required.
          Intent: in.
          in.
          Specified as: a structured data of type psb_type.

          On Return

          On Return

          Function value

          Function value

          A logical mask which is true if x is local to the current process Scope: +class="zplmr7m-">x is local to the current process Scope: local
          local
          Type: required
          required
          Intent: out.
          out.

          Notes +class="pplb7t-x-x-120">Notes

          1. @@ -3202,7 +3254,7 @@ class="cmtt-10">.true. value for an index that is local to -

            6.22 6.22 psb_local_index —

            @@ -3215,42 +3267,42 @@ call psb_local_index(y, x, desc_a, info)

            Type:

            Type:

            Asynchronous.

            On Entry

            On Entry

            x

            x

            Integer indices.
            Scope: local
            local
            Type: required
            required
            Intent: in, inout.
            in, inout.
            Specified as: a scalar or a rank one integer array.

            desc_a

            desc_a

            the communication descriptor.
            Scope:local.
            local.
            Type:required.
            required.
            Intent: in.
            in.
            Specified as: a structured data of type psb_type.

            iact

            iact

            specifies action to be taken in case of range errors. Scope: global
            global
            Type: optional
            optional
            Intent: in.
            in.
            Specified as: a character variable Ignore, Warning or Ignore.

            On Return

            On Return

            y

            y

            A logical mask which is true for all corresponding entries of x that are +class="zplmr7m-">x that are local to the current process Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            Specified as: a scalar or rank one logical array.

            info

            info

            Error code.
            Scope: local
            local
            Type: required
            required
            Intent: out.
            out.
            An integer value; 0 means no error has been detected.

            Notes +class="pplb7t-x-x-120">Notes

            1. @@ -3320,7 +3372,7 @@ class="cmtt-10">.true. value for those indices that are loc -

              6.23 6.23 psb_get_boundary — Extract list of boundary elements

              @@ -3333,27 +3385,27 @@ call psb_get_boundary(bndel, desc, info)

              Type:

              Type:

              Asynchronous.

              On Entry

              On Entry

              desc

              desc

              the communication descriptor.
              Scope:local.
              local.
              Type:required.
              required.
              Intent: in.
              in.
              Specified as: a structured data of type psb_type.

              On Return

              On Return

              bndel

              bndel

              The list of boundary elements on the calling process, in local numbering.
              Scope: local
              local
              Type: required
              required
              Intent: out.
              out.
              Specified as: a rank one array with the ALLOCATABLE attribute, of type integer.

              info

              info

              Error code.
              Scope: local
              local
              Type: required
              required
              Intent: out.
              out.
              An integer value; 0 means no error has been detected.

              Notes +class="pplb7t-x-x-120">Notes

              1. If there are no boundary elements (i.e., if the local part of the connectivity - graph is self-contained) the output vector is set to the “not allocated” + graph is self-contained) the output vector is set to the “not allocated” state.

              2. bndel will be exactly equal to the nu -

                6.24 6.24 psb_get_overlap — Extract list of overlap elements

                @@ -3427,27 +3479,27 @@ call psb_get_overlap(ovrel, desc, info)

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                desc

                desc

                the communication descriptor.
                Scope:local.
                local.
                Type:required.
                required.
                Intent: in.
                in.
                Specified as: a structured data of type psb_type.

                On Return

                On Return

                ovrel

                ovrel

                The list of overlap elements on the calling process, in local numbering.
                Scope: local
                local
                Type: required
                required
                Intent: out.
                out.
                Specified as: a rank one array with the ALLOCATABLE attribute, of type integer.

                info

                info

                Error code.
                Scope: local
                local
                Type: required
                required
                Intent: out.
                out.
                An integer value; 0 means no error has been detected.

                Notes +class="pplb7t-x-x-120">Notes

                1. @@ -3507,7 +3559,7 @@ class="cmtt-10">ovrel will be exactly equal to the number o -

                  6.25 6.25 psb_sp_getrow — Extract row(s) from a sparse matrix

                  @@ -3521,41 +3573,41 @@ call psb_sp_getrow(row, a, nz, ia, ja, 

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  row

                  row

                  The (first) row to be extracted.
                  Scope:local
                  local
                  Type:required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer > 0. +class="zplmr7m-">> 0.

                  a

                  a

                  the matrix from which to get rows.
                  Scope:local
                  local
                  Type:required
                  required
                  Intent: in.
                  in.
                  Specified as: a structured data of type psb_type.

                  append

                  append

                  Whether to append or overwrite existing output.
                  Scope:local
                  local
                  Type:optional
                  optional
                  Intent: in.
                  in.
                  Specified as: a logical value default: false (overwrite). @@ -3580,123 +3632,124 @@ class="newline" />Specified as: a logical value default: false (overwrite).

                  nzin

                  nzin

                  Input size to be appended to.
                  Scope:local
                  local
                  Type:optional
                  optional
                  Intent: in.
                  in.
                  Specified as: an integer > 0. When append is true, specifies how many +class="zplmr7m-">> 0. When append is true, specifies how many entries in the output vectors are already filled.

                  lrw

                  lrw

                  The last row to be extracted.
                  Scope:local
                  local
                  Type:optional
                  optional
                  Intent: in.
                  in.
                  Specified as: an integer > 0, default: row. +class="zplmr7m-">> 0, default: row.

                  On Return

                  On Return

                  nz

                  nz

                  the number of elements returned by this call.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: out.
                  out.
                  Returned as: an integer scalar.

                  ia

                  ia

                  the row indices.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: an integer array with the ALLOCATABLE attribute.

                  ja

                  ja

                  the column indices of the elements to be inserted.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: an integer array with the ALLOCATABLE attribute.

                  val

                  val

                  the elements to be inserted.
                  Scope:local.
                  local.
                  Type:required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: a real array with the ALLOCATABLE attribute.

                  info

                  info

                  Error code.
                  Scope: local
                  local
                  Type: required
                  required
                  Intent: out.
                  out.
                  An integer value; 0 means no error has been detected.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. The output nz is always the size of the output generated by the current +class="zplmr7m-">nz is always the size of the output generated by the current call; thus, if append=.true., the total output size will be nzin + nz, with +class="zplmr7m-">nzin + nz, with the newly extracted coefficients stored in entries nzin+1:nzin+nz of the array arguments; @@ -3715,7 +3768,7 @@ class="cmtt-10">psb_loc_to_glob routine on the output.

                  2. -

                    6.26 6.26 psb_sizeof — Memory occupation

                    This function computes the memory occupation of a PSBLAS object. @@ -3731,28 +3784,28 @@ isz = psb_sizeof(prec)

                    Type:

                    Type:

                    Asynchronous.

                    On Entry

                    On Entry

                    a

                    a

                    A sparse matrix A.
                    A.
                    Scope: local
                    local
                    Type: required
                    required
                    Intent: in.
                    in.
                    Specified as: a structured data of type psb_type.

                    desc_a

                    desc_a

                    Communication descriptor.
                    Scope: local
                    local
                    Type: required
                    required
                    Intent: in.
                    in.
                    Specified as: a structured data of type psb_type.

                    prec

                    prec

                    Scope: local
                    local
                    Type: required
                    required
                    Intent: in.
                    in.
                    Specified as: a preconditioner data structure psb_prec_Tprec_type. @@ -3798,34 +3851,34 @@ class="cmtt-10">_type.

                    On Return

                    On Return

                    Function value

                    Function value

                    The memory occupation of the object specified in the calling sequence, in bytes.
                    Scope: local
                    local
                    Returned as: an integer(psb_long_int_k_) number.

                    -

                    6.27 6.27 Sorting utilities —

                    psb_msort — Sorting by the Merge-sort algorithm +class="pplb7t-x-x-120">psb_msort — Sorting by the Merge-sort algorithm

                    psb_qsort — Sorting by the Quicksort algorithm +class="pplb7t-x-x-120">psb_qsort — Sorting by the Quicksort algorithm

                    psb_hsort — Sorting by the Heapsort algorithm +class="pplb7t-x-x-120">psb_hsort — Sorting by the Heapsort algorithm @@ -3836,57 +3889,57 @@ call psb_hsort(x,ix,dir,flag)

                    These serial routines sort a sequence X into ascending or descending order. The +class="zplmr7m-">X into ascending or descending order. The argument meaning is identical for the three calls; the only difference is the algorithm used to accomplish the task (see Usage Notes below).

                    Type:

                    Type:

                    Asynchronous.

                    On Entry

                    On Entry

                    x

                    x

                    The sequence to be sorted.
                    Type:required.
                    required.
                    Specified as: an integer, real or complex array of rank 1.

                    ix

                    ix

                    A vector of indices.
                    Type:optional.
                    optional.
                    Specified as: an integer array of (at least) the same size as X. +class="zplmr7m-">X.

                    dir

                    dir

                    The desired ordering.
                    Type:optional.
                    optional.
                    Specified as: an integer value:

                    Integer and real data:

                    Integer and real data:

                    psb_sort_up_, psb_sort_down_, psb_sort_up_, psb_sort_down_, psb_asort_up_, psb_asort_down_; default psb_sort_up_.

                    Complex data:

                    Complex data:

                    psb_lsort_up_, psb_lsort_down_, psb_lsort_up_, psb_lsort_down_, psb_asort_up_, psb_asort_down_; default psb_lsort_up_.

                    flag

                    flag

                    Whether to keep the original values in IX.
                    IX.
                    Type:optional.
                    optional.
                    Specified as: an integer value psb_sort_ovw_idx_ or psb_sort_keep_idx_; @@ -3925,31 +3978,31 @@ class="cmtt-10">psb_sort_ovw_idx_.

                    On Return

                    On Return

                    x

                    x

                    The sequence of values, in the chosen ordering.
                    Type:required.
                    required.
                    Specified as: an integer, real or complex array of rank 1.

                    ix

                    ix

                    A vector of indices.
                    Type: Optional
                    Optional
                    An integer array of rank 1, whose entries are moved to the same position as the corresponding entries in x.

                    +class="zplmr7m-">x.

                    Notes +class="pplb7t-x-x-120">Notes

                    1. @@ -3967,85 +4020,104 @@ class="cmbx-12">Notes
                    2. -

                      The routines return the items in the chosen ordering; the output difference - is the handling of ties (i.e. items with an equal value) in the original input. - With the merge-sort algorithm ties are preserved in the same relative - order as they had in the original sequence, while this is not guaranteed for - quicksort or heapsort; +

                      The routines return the items in the chosen ordering; the output + difference is the handling of ties (i.e. items with an equal value) in the + original input. With the merge-sort algorithm ties are preserved in the + same relative order as they had in the original sequence, while this is not + guaranteed for quicksort or heapsort;

                    3. If flag = psb_sort_ovw_idx_ then the entries in ix(1 : n) where n is the size +class="zplmr7m-">flag = psb_sort_ovw_idx_ then the entries in ix(1 : n) where n is the size of x are initialized to ix(i) i; thus, upon return from the subroutine, +class="zplmr7m-">x are initialized to ix(i) i; thus, upon return from the subroutine, for each index i we have in ix(i) the position that the item x(i) occupied +class="zplmr7m-">i we have in ix(i) the position that the item x(i) occupied in the original data sequence;

                    4. If flag = psb_sort_keep_idx_ the routine will assume that the entries in +class="zplmr7m-">flag = psb_sort_keep_idx_ the routine will assume that the entries in ix(:) have already been initialized by the user; +class="zplmr7m-">ix(:) have already been initialized by the user;

                    5. The three sorting algorithms have a similar O(nlog n) expected running time; +class="zplmr7m-">O(n log n) expected running time; in the average case quicksort will be the fastest and merge-sort the slowest. However note that:

                      1. -

                        The worst case running time for quicksort is O(n2); the algorithm - implemented here follows the well-known median-of-three heuristics, - but the worst case may still apply; +

                        The worst case running time + for quicksort is O(n2); the algorithm implemented here follows the + well-known median-of-three heuristics, but the worst case may still + apply;

                      2. The worst case running time for merge-sort and heap-sort is O(nlog n) as the average case; +class="zplmr7m-">O(n log n) as the average case;

                      3. The merge-sort algorithm is implemented to take advantage of subsequences that may be already in the desired ordering prior to the subroutine call; this situation is relatively common when dealing - with groups of indices of sparse matrix entries, thus merge-sort is the - preferred choice when a sorting is needed by other routines in the - library.

                      + with groups of indices of sparse matrix entries, thus merge-sort is + the preferred choice when a sorting is needed by other routines in + the library.
                  diff --git a/docs/html/userhtmlse7.html b/docs/html/userhtmlse7.html index 6e245159..04c4c5dc 100644 --- a/docs/html/userhtmlse7.html +++ b/docs/html/userhtmlse7.html @@ -16,12 +16,12 @@ href="userhtmlse6.html" >prev] [prev-tail] [tail] [up]

                  -

                  7 7 Parallel environment routines

                  -

                  7.1 7.1 psb_init — Initializes PSBLAS parallel environment

                  @@ -35,61 +35,63 @@ parallel machine.

                  Type:

                  Type:

                  Synchronous.

                  On Entry

                  On Entry

                  np

                  np

                  Number of processes in the PSBLAS virtual parallel machine.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value.  Default: use all available processes.

                  basectxt

                  basectxt

                  the initial communication context. The new context will be defined from the processes participating in the initial one.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value.  Default: use MPI_COMM_WORLD.

                  ids

                  ids
                  -

                  Identities of the processes to use for the new context; the argument is +

                  Identities of the processes to use for the new context; the argument is ignored when np is not specified. This allows the processes in the new environment to be in an order different from the original one.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  Specified as: an integer array.  Default: use the indices (0np - 1).

                  +class="pplb7t-">in.
                  Specified as: an integer array.  Default: use the indices (0np- 1). @@ -97,29 +99,29 @@ class="cmsy-10">- 1).

                  On Return

                  On Return

                  ctxt

                  ctxt
                  -

                  the communication context identifying the virtual parallel machine, type - psb_ctxt_type. Note that this is always a duplicate of

                  the communication context identifying the virtual parallel machine, + type psb_ctxt_type. Note that this is always a duplicate of basectxt, so that library communications are completely separated from other communication operations.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: out.
                  out.
                  Specified as: an integer variable.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. @@ -128,12 +130,12 @@ class="cmbx-12">Notes
                  2. It is an error to specify a value for np greater than the number of processes +class="zplmr7m-">np greater than the number of processes available in the underlying base parallel environment.

                  -

                  7.2 7.2 psb_info — Return information about PSBLAS parallel environment

                  @@ -147,82 +149,82 @@ defining a virtual parallel machine.

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  ctxt

                  ctxt

                  the communication context identifying the virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: in.
                  in.
                  Specified as: an integer variable.

                  On Return

                  On Return

                  iam

                  iam

                  Identifier of current process in the PSBLAS virtual parallel machine.
                  Scope: local.
                  local.
                  Type: required.
                  required.
                  Intent: out.
                  out.
                  Specified as: an integer value. -1 iam np - 1  +class="zplmr7y-">-1 iam np-

                  np

                  np

                  Number of processes in the PSBLAS virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: out.
                  out.
                  Specified as: an integer variable.  

                  Notes +class="pplb7t-x-x-120">Notes

                  1. -

                    For processes in the virtual parallel machine the identifier will satisfy +

                    For processes in the virtual parallel machine the identifier will satisfy 0 iam np - 1; +class="zplmr7y-">≤ iam np- 1;

                  2. @@ -230,15 +232,16 @@ class="cmsy-10">- 1; class="cmtt-10">psb_init a number of processes less than the total available in the parallel execution environment, the remaining processes will have on return iam = -1; the only call involving iam = -1; the only call involving ctxt that any such process may execute is to psb_exit.
                  -

                  7.3 7.3 psb_exit — Exit from PSBLAS parallel environment

                  @@ -252,53 +255,54 @@ call psb_exit(ctxt,close)

                  Type:

                  Type:

                  Synchronous.

                  On Entry

                  On Entry

                  ctxt

                  ctxt

                  the communication context identifying the virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: in.
                  in.
                  Specified as: an integer variable.

                  close

                  close
                  -

                  Whether to close all data structures related to the virtual parallel machine, - besides those associated with ctxt.

                  Whether to close all data structures related to the virtual parallel + machine, besides those associated with ctxt.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: a logical variable, default value: true.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. -

                    This routine may be called even if a previous call to psb_info has returned - with iam = -1; indeed, it it is the only routine that may be called with - argument

                    This routine may be called even if a previous call to psb_info has + returned with iam = -1; indeed, it it is the only routine that may be + called with argument ctxt in this situation. @@ -315,15 +319,16 @@ class="cmtt-10">MPI_Finalize, class="enumerate" id="x12-108006x3">

                    If the user whishes to use multiple communication contexts in the same program, or to enter and exit multiple times into the parallel - environment, this routine may be called to selectively close the contexts + environment, this routine may be called to selectively close the + contexts with close=.false., while on the last call it should be called with close=.false., while on the last call it should be called with - close=.true. to shutdown in a clean way the entire parallel environment.

                  +class="cmtt-10">close=.true. to shutdown in a clean way the entire parallel + environment.
                -

                7.4 7.4 psb_get_mpi_comm — Get the MPI communicator

                @@ -337,57 +342,57 @@ context

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                On Return

                On Return

                Function value

                Function value

                The MPI communicator associated with the PSBLAS virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: out.
                out.

                Notes The subroutine version Notes The subroutine version psb_get_mpicomm is still available but is deprecated. -

                7.5 7.5 psb_get_mpi_rank — Get the MPI rank

                @@ -397,81 +402,81 @@ rank = psb_get_mpi_rank(ctxt, id)

                This function returns the MPI rank of the PSBLAS process id +class="zplmr7m-">id

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                id

                id

                Identifier of a process in the PSBLAS virtual parallel machine.
                Scope: local.
                local.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer value. 0 id np -

                +class="zplmr7y-">≤ id np-

                On Return

                On Return

                Funciton value

                Funciton value

                The MPI rank associated with the PSBLAS process id.
                id.
                Scope: local.
                local.
                Type: required.
                required.
                Intent: out.
                out.

                Notes The subroutine version Notes The subroutine version psb_get_rank is still available but is deprecated. -

                7.6 7.6 psb_wtime — Wall clock timing

                @@ -485,19 +490,19 @@ on the underlying parallel environment implementation.

                Type:

                Type:

                Asynchronous.

                On Exit

                On Exit

                Function value

                Function value

                the elapsed time in seconds.
                Returned as: a real(psb_dpk_) variable.

                -

                7.7 7.7 psb_barrier — Sinchronization point parallel environment

                @@ -519,32 +524,32 @@ virtual machine.

                Type:

                Type:

                Synchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                -

                7.8 7.8 psb_abort — Abort a computation

                @@ -557,32 +562,32 @@ call psb_abort(ctxt)

                Type:

                Type:

                Asynchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                -

                7.9 7.9 psb_bcast — Broadcast data

                @@ -596,80 +601,82 @@ communication library.

                Type:

                Type:

                Synchronous.

                On Entry

                On Entry

                ctxt

                ctxt

                the communication context identifying the virtual parallel machine.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: in.
                in.
                Specified as: an integer variable.

                dat

                dat

                On the root process, the data to be broadcast.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: inout.
                inout.
                Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical variable, which may be - a scalar or rank 1 array.  Type, kind, rank and size must agree on all + a scalar or rank 1 array.  Type, kind, rank and size must agree on all processes.

                root

                root

                Root process holding data to be broadcast.
                Scope: global.
                global.
                Type: optional.
                optional.
                Intent: in.
                in.
                Specified as: an integer value 0 <= root <= np - 1, default 0   +class="zplmr7m-"><= root <= np- 1, default 0  

                mode

                mode

                Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                Scope: global.
                global.
                Type: optional.
                optional.
                Intent: in.
                in.
                Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -678,15 +685,15 @@ class="newline" />

                request

                request

                A request variable to check for operation completion.
                Scope: local.
                local.
                Type: optional.
                optional.
                Intent: inout.
                inout.
                If mode does not specify synchronous completion, then this variable must be present.

                @@ -694,41 +701,41 @@ class="cmtt-10">mode does not specify synchronous completio

                On Return

                On Return

                dat

                dat

                On all processes other than root, the broadcasted data.
                Scope: global.
                global.
                Type: required.
                required.
                Intent: inout.
                inout.
                Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical scalar.  Type, kind, rank and size must agree on all processes.

                request

                request

                A request variable to check for operation completion.
                Scope: local.
                local.
                Type: optional.
                optional.
                Intent: inout.
                inout.
                If mode does not specify synchronous completion, then this variable must be present.

                Notes +class="pplb7t-x-x-120">Notes

                1. @@ -756,7 +763,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-114006x3">

                  When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                  @@ -771,7 +778,7 @@ class="cmti-10">must not be -

                  7.10 7.10 psb_sum — Global sum

                  @@ -785,80 +792,83 @@ communication library.

                  Type:

                  Type:

                  Synchronous.

                  On Entry

                  On Entry

                  ctxt

                  ctxt

                  the communication context identifying the virtual parallel machine.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: in.
                  in.
                  Specified as: an integer variable.

                  dat

                  dat

                  The local contribution to the global sum.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: inout.
                  Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                  Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                  root

                  root

                  Process to hold the final sum, or -1 to make it available on all processes.
                  -1 to make it available on all processes.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value -1 <= root <= np - 1, default -1.   +class="zplmr7y-">-1 <= root <= np- 1, default -1.  

                  mode

                  mode

                  Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                  Scope: global.
                  global.
                  Type: optional.
                  optional.
                  Intent: in.
                  in.
                  Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -867,15 +877,15 @@ class="newline" />

                  request

                  request

                  A request variable to check for operation completion.
                  Scope: local.
                  local.
                  Type: optional.
                  optional.
                  Intent: inout.
                  inout.
                  If mode does not specify synchronous completion, then this variable must be present.

                  @@ -883,41 +893,41 @@ class="cmtt-10">mode does not specify synchronous completio

                  On Return

                  On Return

                  dat

                  dat

                  On destination process(es), the result of the sum operation.
                  Scope: global.
                  global.
                  Type: required.
                  required.
                  Intent: inout.
                  inout.
                  Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array.
                  Type, kind, rank and size must agree on all processes.

                  request

                  request

                  A request variable to check for operation completion.
                  Scope: local.
                  local.
                  Type: optional.
                  optional.
                  Intent: inout.
                  inout.
                  If mode does not specify synchronous completion, then this variable must be present.

                  Notes +class="pplb7t-x-x-120">Notes

                  1. @@ -945,7 +955,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-115006x3">

                    When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                    @@ -960,7 +970,7 @@ class="cmti-10">must not be -

                    7.11 7.11 psb_max — Global maximum

                    @@ -974,62 +984,64 @@ underlying communication library.

                    Type:

                    Type:

                    Synchronous.

                    On Entry

                    On Entry

                    ctxt

                    ctxt

                    the communication context identifying the virtual parallel machine.
                    Scope: global.
                    global.
                    Type: required.
                    required.
                    Intent: in.
                    in.
                    Specified as: an integer variable.

                    dat

                    dat

                    The local contribution to the global maximum.
                    Scope: local.
                    local.
                    Type: required.
                    required.
                    Intent: inout.
                    inout.
                    Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes.

                    root

                    root
                    -

                    Process to hold the final maximum, or -1 to make it available on all +

                    Process to hold the final maximum, or -1 to make it available on all processes.
                    Scope: global.
                    global.
                    Type: optional.
                    optional.
                    Intent: in.
                    in.
                    Specified as: an integer value -1 <= root <= np - 1, default -1.
                    -1 <= root <= np- 1, default -1.
                    @@ -1037,19 +1049,19 @@ class="newline" />

                    mode

                    mode

                    Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                    Scope: global.
                    global.
                    Type: optional.
                    optional.
                    Intent: in.
                    in.
                    Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1058,15 +1070,15 @@ class="newline" />

                    request

                    request

                    A request variable to check for operation completion.
                    Scope: local.
                    local.
                    Type: optional.
                    optional.
                    Intent: inout.
                    inout.
                    If mode does not specify synchronous completion, then this variable must be present.

                    @@ -1074,35 +1086,35 @@ class="cmtt-10">mode does not specify synchronous completio

                    On Return

                    On Return

                    dat

                    dat

                    On destination process(es), the result of the maximum operation.
                    Scope: global.
                    global.
                    Type: required.
                    required.
                    Intent: in.
                    in.
                    Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes.

                    request

                    request

                    A request variable to check for operation completion.
                    Scope: local.
                    local.
                    Type: optional.
                    optional.
                    Intent: inout.
                    inout.
                    If mode does not specify synchronous completion, then this variable must be present.

                    @@ -1110,7 +1122,7 @@ class="cmtt-10">mode does not specify synchronous completio

                    Notes +class="pplb7t-x-x-120">Notes

                    1. @@ -1138,7 +1150,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-116006x3">

                      When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                      @@ -1153,7 +1165,7 @@ class="cmti-10">must not be -

                      7.12 7.12 psb_min — Global minimum

                      @@ -1167,61 +1179,63 @@ underlying communication library.

                      Type:

                      Type:

                      Synchronous.

                      On Entry

                      On Entry

                      ctxt

                      ctxt

                      the communication context identifying the virtual parallel machine.
                      Scope: global.
                      global.
                      Type: required.
                      required.
                      Intent: in.
                      in.
                      Specified as: an integer variable.

                      dat

                      dat

                      The local contribution to the global minimum.
                      Scope: local.
                      local.
                      Type: required.
                      required.
                      Intent: inout.
                      inout.
                      Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes.

                      root

                      root

                      Process to hold the final value, or -1 to make it available on all processes.
                      -1 to make it available on all processes.
                      Scope: global.
                      global.
                      Type: optional.
                      optional.
                      Intent: in.
                      in.
                      Specified as: an integer value -1 <= root <= np - 1, default -1.
                      -1 <= root <= np- 1, default -1.
                      @@ -1229,19 +1243,19 @@ class="newline" />

                      mode

                      mode

                      Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                      Scope: global.
                      global.
                      Type: optional.
                      optional.
                      Intent: in.
                      in.
                      Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1250,15 +1264,15 @@ class="newline" />

                      request

                      request

                      A request variable to check for operation completion.
                      Scope: local.
                      local.
                      Type: optional.
                      optional.
                      Intent: inout.
                      inout.
                      If mode does not specify synchronous completion, then this variable must be present.

                      @@ -1266,41 +1280,41 @@ class="cmtt-10">mode does not specify synchronous completio

                      On Return

                      On Return

                      dat

                      dat

                      On destination process(es), the result of the minimum operation.
                      Scope: global.
                      global.
                      Type: required.
                      required.
                      Intent: inout.
                      inout.
                      Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array.
                      Type, kind, rank and size must agree on all processes.

                      request

                      request

                      A request variable to check for operation completion.
                      Scope: local.
                      local.
                      Type: optional.
                      optional.
                      Intent: inout.
                      inout.
                      If mode does not specify synchronous completion, then this variable must be present.

                      Notes +class="pplb7t-x-x-120">Notes

                      1. @@ -1328,7 +1342,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-117006x3">

                        When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                        @@ -1343,7 +1357,7 @@ class="cmti-10">must not be -

                        7.13 7.13 psb_amx — Global maximum absolute value

                        @@ -1352,66 +1366,69 @@ class="cmti-10">must not be call psb_amx(ctxt, dat [, root, mode, request])

                        -

                        This subroutine implements a maximum absolute value reduction operation based -on the underlying communication library. +

                        This subroutine implements a maximum absolute value reduction operation +based on the underlying communication library.

                        Type:

                        Type:

                        Synchronous.

                        On Entry

                        On Entry

                        ctxt

                        ctxt

                        the communication context identifying the virtual parallel machine.
                        Scope: global.
                        global.
                        Type: required.
                        required.
                        Intent: in.
                        in.
                        Specified as: an integer variable.

                        dat

                        dat

                        The local contribution to the global maximum.
                        Scope: local.
                        local.
                        Type: required.
                        required.
                        Intent: inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                        root

                        root

                        Process to hold the final value, or -1 to make it available on all processes.
                        -1 to make it available on all processes.
                        Scope: global.
                        global.
                        Type: optional.
                        optional.
                        Intent: in.
                        in.
                        Specified as: an integer value -1 <= root <= np - 1, default -1.
                        -1 <= root <= np- 1, default -1.
                        @@ -1419,19 +1436,19 @@ class="newline" />

                        mode

                        mode

                        Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                        Scope: global.
                        global.
                        Type: optional.
                        optional.
                        Intent: in.
                        in.
                        Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1440,15 +1457,15 @@ class="newline" />

                        request

                        request

                        A request variable to check for operation completion.
                        Scope: local.
                        local.
                        Type: optional.
                        optional.
                        Intent: inout.
                        inout.
                        If mode does not specify synchronous completion, then this variable must be present.

                        @@ -1456,43 +1473,41 @@ class="cmtt-10">mode does not specify synchronous completio

                        On Return

                        On Return

                        dat

                        dat

                        On destination process(es), the result of the maximum operation.
                        Scope: global.
                        global.
                        Type: required.
                        required.
                        Intent: inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                        Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                        request

                        request

                        A request variable to check for operation completion.
                        Scope: local.
                        local.
                        Type: optional.
                        optional.
                        Intent: inout.
                        inout.
                        If mode does not specify synchronous completion, then this variable must be present.

                        - - -

                        Notes +class="pplb7t-x-x-120">Notes

                        1. @@ -1520,7 +1535,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-118006x3">

                          When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                          @@ -1535,7 +1550,7 @@ class="cmti-10">must not be -

                          7.14 7.14 psb_amn — Global minimum absolute value

                          @@ -1544,66 +1559,69 @@ class="cmti-10">must not be call psb_amn(ctxt, dat [, root, mode, request])

                          -

                          This subroutine implements a minimum absolute value reduction operation based -on the underlying communication library. +

                          This subroutine implements a minimum absolute value reduction operation +based on the underlying communication library.

                          Type:

                          Type:

                          Synchronous.

                          On Entry

                          On Entry

                          ctxt

                          ctxt

                          the communication context identifying the virtual parallel machine.
                          Scope: global.
                          global.
                          Type: required.
                          required.
                          Intent: in.
                          in.
                          Specified as: an integer variable.

                          dat

                          dat

                          The local contribution to the global minimum.
                          Scope: local.
                          local.
                          Type: required.
                          required.
                          Intent: inout.
                          Specified as: an integer, real or complex variable, which may be a scalar, or - a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. +class="pplb7t-">inout.
                          Specified as: an integer, real or complex variable, which may be a scalar, + or a rank 1 or 2 array.  Type, kind, rank and size must agree on all + processes.

                          root

                          root

                          Process to hold the final value, or -1 to make it available on all processes.
                          -1 to make it available on all processes.
                          Scope: global.
                          global.
                          Type: optional.
                          optional.
                          Intent: in.
                          in.
                          Specified as: an integer value -1 <= root <= np - 1, default -1.
                          -1 <= root <= np- 1, default -1.
                          @@ -1611,19 +1629,19 @@ class="newline" />

                          mode

                          mode

                          Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                          Scope: global.
                          global.
                          Type: optional.
                          optional.
                          Intent: in.
                          in.
                          Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1632,15 +1650,15 @@ class="newline" />

                          request

                          request

                          A request variable to check for operation completion.
                          Scope: local.
                          local.
                          Type: optional.
                          optional.
                          Intent: inout.
                          inout.
                          If mode does not specify synchronous completion, then this variable must be present.

                          @@ -1648,41 +1666,41 @@ class="cmtt-10">mode does not specify synchronous completio

                          On Return

                          On Return

                          dat

                          dat

                          On destination process(es), the result of the minimum operation.
                          Scope: global.
                          global.
                          Type: required.
                          required.
                          Intent: inout.
                          inout.
                          Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array.
                          Type, kind, rank and size must agree on all processes.

                          request

                          request

                          A request variable to check for operation completion.
                          Scope: local.
                          local.
                          Type: optional.
                          optional.
                          Intent: inout.
                          inout.
                          If mode does not specify synchronous completion, then this variable must be present.

                          Notes +class="pplb7t-x-x-120">Notes

                          1. @@ -1710,7 +1728,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-119006x3">

                            When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls:

                            @@ -1725,7 +1743,7 @@ class="cmti-10">must not be -

                            7.15 7.15 psb_nrm2 — Global 2-norm reduction

                            @@ -1739,61 +1757,63 @@ underlying communication library.

                            Type:

                            Type:

                            Synchronous.

                            On Entry

                            On Entry

                            ctxt

                            ctxt

                            the communication context identifying the virtual parallel machine.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: in.
                            in.
                            Specified as: an integer variable.

                            dat

                            dat

                            The local contribution to the global minimum.
                            Scope: local.
                            local.
                            Type: required.
                            required.
                            Intent: inout.
                            Specified as: a real variable, which may be a scalar, or a rank 1 array. +class="pplb7t-">inout.
                            Specified as: a real variable, which may be a scalar, or a rank 1 array.  Kind, rank and size must agree on all processes.

                            root

                            root

                            Process to hold the final value, or -1 to make it available on all processes.
                            -1 to make it available on all processes.
                            Scope: global.
                            global.
                            Type: optional.
                            optional.
                            Intent: in.
                            in.
                            Specified as: an integer value -1 <= root <= np - 1, default -1.
                            -1 <= root <= np- 1, default -1.
                            @@ -1801,19 +1821,19 @@ class="newline" />

                            mode

                            mode

                            Whether the call is started in non-blocking mode and completed later, or is executed synchronously.
                            Scope: global.
                            global.
                            Type: optional.
                            optional.
                            Intent: in.
                            in.
                            Specified as: an integer value. The action to be taken is determined by - its bit fields, which can be set with bitwise OR. Basic action values are + its bit fields, which can be set with bitwise OR. Basic action values are psb_collective_start_, psb_collective_end_. Default: both fields are @@ -1822,15 +1842,15 @@ class="newline" />

                            request

                            request

                            A request variable to check for operation completion.
                            Scope: local.
                            local.
                            Type: optional.
                            optional.
                            Intent: inout.
                            inout.
                            If mode does not specify synchronous completion, then this variable must be present.

                            @@ -1838,35 +1858,35 @@ class="cmtt-10">mode does not specify synchronous completio

                            On Return

                            On Return

                            dat

                            dat

                            On destination process(es), the result of the 2-norm reduction.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: inout.
                            inout.
                            Specified as: a real variable, which may be a scalar, or a rank 1 array.
                            Kind, rank and size must agree on all processes.

                            request

                            request

                            A request variable to check for operation completion.
                            Scope: local.
                            local.
                            Type: optional.
                            optional.
                            Intent: inout.
                            inout.
                            If mode does not specify synchronous completion, then this variable must be present.

                            @@ -1874,7 +1894,7 @@ class="cmtt-10">mode does not specify synchronous completio

                            Notes +class="pplb7t-x-x-120">Notes

                            1. @@ -1884,17 +1904,17 @@ class="cmbx-12">Notes
                            2. Denoting by dati the value of the variable dat on process i, the output res +class="zplmr7m-">dati the value of the variable dat on process i, the output res is equivalent to the computation of

                                    ∘ ∑------
-res =      dat2i,
-         i
+src=

                              with care taken to avoid unnecessary overflow.

                            3. @@ -1924,7 +1944,7 @@ class="cmtt-10">request argument needs not be specified: class="enumerate" id="x12-120010x5">

                              When splitting the operation in two calls, the dat argument must not be +class="pplri7t-">must not be accessed between calls: @@ -1942,7 +1962,7 @@ class="cmti-10">must not be -

                              7.16 7.16 psb_snd — Send data

                              @@ -1955,62 +1975,64 @@ call psb_snd(ctxt, dat, dst, m)

                              Type:

                              Type:

                              Synchronous: see usage notes.

                              On Entry

                              On Entry

                              ctxt

                              ctxt

                              the communication context identifying the virtual parallel machine.
                              Scope: global.
                              global.
                              Type: required.
                              required.
                              Intent: in.
                              in.
                              Specified as: an integer variable.

                              dat

                              dat

                              The data to be sent.
                              Scope: local.
                              local.
                              Type: required.
                              required.
                              Intent: in.
                              in.
                              Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical scalar.  Type, kind and rank must agree on sender and receiver process; if m is not specified, size +class="zplmr7m-">m is not specified, size must agree as well.

                              dst

                              dst

                              Destination process.
                              Scope: global.
                              global.
                              Type: required.
                              required.
                              Intent: in.
                              in.
                              Specified as: an integer value 0 <= dst <= np - 1.
                              <= dst <= np- 1.
                              @@ -2018,45 +2040,51 @@ class="newline" />

                              m

                              m

                              Number of rows.
                              Scope: global.
                              global.
                              Type: Optional.
                              Optional.
                              Intent: in.
                              in.
                              Specified as: an integer value 0 <= m <= size(dat,1).
                              <= m <= size(dat, 1).
                              When dat is a rank 2 array, specifies the number of rows to be sent +class="zplmr7m-">dat is a rank 2 array, specifies the number of rows to be sent independently of the leading dimension size(dat,1); must have the same +class="zplmr7m-">size(dat, 1); must have the same value on sending and receiving processes.

                              On Return

                              On Return

                              Notes +class="pplb7t-x-x-120">Notes

                              1. This subroutine implies a synchronization, but only between the calling process and the destination process dst.

                              +class="zplmr7m-">dst.
                            -

                            7.17 7.17 psb_rcv — Receive data

                            @@ -2069,68 +2097,76 @@ call psb_rcv(ctxt, dat, src, m)

                            Type:

                            Type:

                            Synchronous: see usage notes.

                            On Entry

                            On Entry

                            ctxt

                            ctxt

                            the communication context identifying the virtual parallel machine.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: in.
                            in.
                            Specified as: an integer variable.

                            src

                            src

                            Source process.
                            Scope: global.
                            global.
                            Type: required.
                            required.
                            Intent: in.
                            in.
                            Specified as: an integer value 0 <= src <= np - 1.
                            <= src <= np- 1.

                            m

                            m

                            Number of rows.
                            Scope: global.
                            global.
                            Type: Optional.
                            Optional.
                            Intent: in.
                            in.
                            Specified as: an integer value 0 <= m <= size(dat,1).
                            <= m <= size(dat, 1).
                            When dat is a rank 2 array, specifies the number of rows to be sent +class="zplmr7m-">dat is a rank 2 array, specifies the number of rows to be sent independently of the leading dimension size(dat,1); must have the same +class="zplmr7m-">size(dat, 1); must have the same value on sending and receiving processes.

                            @@ -2139,34 +2175,34 @@ class="cmmi-10">dat,1); must have the same

                            On Return

                            On Return

                            dat

                            dat

                            The data to be received.
                            Scope: local.
                            local.
                            Type: required.
                            required.
                            Intent: inout.
                            inout.
                            Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array, or a character or logical scalar.  Type, kind and rank must agree on sender and receiver process; if m is not specified, size +class="zplmr7m-">m is not specified, size must agree as well.

                            Notes +class="pplb7t-x-x-120">Notes

                            1. This subroutine implies a synchronization, but only between the calling process and the source process src.

                            +class="zplmr7m-">src.
                          diff --git a/docs/html/userhtmlse8.html b/docs/html/userhtmlse8.html index 2e6b2ff0..447f8627 100644 --- a/docs/html/userhtmlse8.html +++ b/docs/html/userhtmlse8.html @@ -16,21 +16,21 @@ href="userhtmlse7.html" >prev] [prev-tail] [tail] [up]

                          -

                          8 8 Error handling

                          The PSBLAS library error handling policy has been completely rewritten in version 2.0. The idea behind the design of this new error handling strategy is to keep error messages on a stack allowing the user to trace back up to the point where the first error message has been generated. Every routine in the PSBLAS-2.0 library has, as last non-optional argument, an integer info variable; whenever, inside the routine, an -error is detected, this variable is set to a value corresponding to a specific -error code. Then this error code is also pushed on the error stack and then -either control is returned to the caller routine or the execution is aborted, -depending on the users choice. At the time when the execution is aborted, -an error message is printed on standard output with a level of verbosity -than can be chosen by the user. If the execution is not aborted, then, the -caller routine checks the value returned in the info variable; whenever, inside the +routine, an error is detected, this variable is set to a value corresponding to a +specific error code. Then this error code is also pushed on the error stack +and then either control is returned to the caller routine or the execution is +aborted, depending on the users choice. At the time when the execution is +aborted, an error message is printed on standard output with a level of +verbosity than can be chosen by the user. If the execution is not aborted, then, +the caller routine checks the value returned in the info variable and, if not zero, an error condition is raised. This process continues on all the levels of nested calls until the level where the user decides to abort the program @@ -100,7 +100,6 @@ class="cmtt-9">      info=      call psb_errpush      goto 9999 @@ -178,7 +175,6 @@ class="cmtt-9">      info=      call psb_errpush      goto 9999 @@ -246,7 +240,6 @@ class="cmtt-9">then class="cmtt-9">     call psb_error) class="cmtt-9">     return else class="cmtt-9">     return -

                      +


                  Listing 6:
                  )

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  err_c

                  err_c

                  the error code
                  Scope: local
                  local
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer.

                  r_name

                  r_name

                  the soutine where the error has been caught.
                  Scope: local
                  local
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: a string.

                  i_err

                  i_err

                  addional info for error code
                  Scope: local
                  local
                  Type: optional
                  optional
                  Specified as: an integer array

                  a_err

                  a_err

                  addional info for error code
                  Scope: local
                  local
                  Type: optional
                  optional
                  Specified as: a string.

                  -

                  8.2 8.2 psb_error — Prints the error stack content and aborts execution

                  )

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  icontxt

                  icontxt

                  the communication context.
                  Scope: global
                  global
                  Type: optional
                  optional
                  Intent: in.
                  in.
                  Specified as: an integer.

                  -

                  8.3 8.3 psb_set_errverbosity — Sets the verbosity of error messages

                  )

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  v

                  v

                  the verbosity level
                  Scope: global
                  global
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer.

                  -

                  8.4 8.4 psb_set_erraction — Set the type of action to be taken upon error condition

                  @@ -537,28 +528,28 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  err_act

                  err_act

                  the type of action.
                  Scope: global
                  global
                  Type: required
                  required
                  Intent: in.
                  in.
                  Specified as: an integer. Possible values: psb_act_ret, psb_act_abort.

                  diff --git a/docs/html/userhtmlse9.html b/docs/html/userhtmlse9.html index f0fa9516..fba09a3a 100644 --- a/docs/html/userhtmlse9.html +++ b/docs/html/userhtmlse9.html @@ -16,7 +16,7 @@ href="userhtmlse8.html" >prev] [prev-tail] [tail] [up]

                  -

                  9 9 Utilities

                  We have some utilities available for input and output of sparse matrices; the interfaces to these routines are available in the module psb_util_mod. -

                  9.1 9.1 hb_read — Read a sparse matrix from a file in the Harwell–Boeing format

                  @@ -50,53 +50,53 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  filename

                  filename

                  The name of the file to be read.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  a

                  a

                  the sparse matrix read from file.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  b

                  b

                  Rigth hand side(s).
                  Type: Optional
                  Optional
                  An array of type real or complex, rank 2 and having the ALLOCATABLE attribute; will be allocated and filled in if the input file contains a right hand side, otherwise will be left in the UNALLOCATED state.

                  mtitle

                  mtitle

                  Matrix title.
                  Type: Optional
                  Optional
                  A charachter variable of length 72 holding a copy of the matrix title as specified by the Harwell-Boeing format and contained in the input file.

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.2 9.2 hb_write — Write a sparse matrix to a file in the Harwell–Boeing format

                  @@ -166,23 +166,23 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  a

                  a

                  the sparse matrix to be written.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  b

                  b

                  Rigth hand side.
                  Type: Optional
                  Optional
                  An array of type real or complex, rank 1 and having the ALLOCATABLE attribute; will be allocated and filled in if the input file contains a right hand side.

                  filename

                  filename

                  The name of the file to be written to.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default output unit 6 (i.e. standard output in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -. @@ -228,43 +228,43 @@ class="cmtt-10">-.

                  key

                  key

                  Matrix key.
                  Type: Optional
                  Optional
                  A charachter variable of length 8 holding the matrix key as specified by the Harwell-Boeing format and to be written to file.

                  mtitle

                  mtitle

                  Matrix title.
                  Type: Optional
                  Optional
                  A charachter variable of length 72 holding the matrix title as specified by the Harwell-Boeing format and to be written to file.

                  On Return

                  On Return

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.3 9.3 mm_mat_read — Read a sparse matrix from a file in the MatrixMarket format

                  @@ -286,53 +286,53 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  filename

                  filename

                  The name of the file to be read.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  a

                  a

                  the sparse matrix read from file.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.4 9.4 mm_array_read — Read a dense array from a file in the MatrixMarket format

                  @@ -375,54 +375,54 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  filename

                  filename

                  The name of the file to be read.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  b

                  b

                  Rigth hand side(s).
                  Type: required
                  An array of type real or complex, rank 1 or 2 and having the +class="pplb7t-">required
                  An array of type real or complex, rank 1 or 2 and having the @@ -431,24 +431,24 @@ href="userhtmlse3.html#vdata">psb_T_vect_type, of - type real or complex.
                  _type, of type + real or complex.
                  Will be allocated and filled in if the input file contains a right hand side, otherwise will be left in the UNALLOCATED state.

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  -

                  9.5 9.5 mm_mat_write — Write a sparse matrix to a file in the MatrixMarket format

                  @@ -472,23 +472,23 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  a

                  a

                  the sparse matrix to be written.
                  Type:required.
                  required.
                  Specified as: a structured data of type psb_type.

                  mtitle

                  mtitle

                  Matrix title.
                  Type: required
                  required
                  A charachter variable holding a descriptive title for the matrix to be written to file.

                  filename

                  filename

                  The name of the file to be written to.
                  Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default output unit 6 (i.e. standard output in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  @@ -534,27 +534,27 @@ class="cmtt-10">-.

                  On Return

                  On Return

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  Notes +class="pplb7t-x-x-120">Notes

                  If this function is called on a matrix a on a distributed communicator only the local part is written in output. To get a single MatrixMarket file with the whole matrix when appropriate, e.g. for debugging purposes, one could gather the whole +class="pplri7t-">gather the whole matrix on a single rank and then write it. Consider the following example for a double precision matrix +class="pplri7t-">double precision matrix

                  @@ -581,7 +581,7 @@ psb_i_t psb_c_<s,d,c,z>global_mat_write(ah,cdh); -

                  9.6 9.6 mm_array_write — Write a dense array from a file in the MatrixMarket format

                  @@ -605,23 +605,23 @@ class="cmtt-10">)

                  Type:

                  Type:

                  Asynchronous.

                  On Entry

                  On Entry

                  b

                  b

                  Rigth hand side(s).
                  Type: required
                  required
                  An array of type real or complex, rank 1 or 2, or an object of type

                  filename

                  filename

                  The name of the file to be written.

                  vtitle

                  vtitle

                  Matrix title.
                  Type: required
                  A charachter variable holding a descriptive title for the vector to be written - to file. Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in +class="pplb7t-">required
                  A charachter variable holding a descriptive title for the vector to be + written to file. Type:optional.
                  Specified as: a character variable containing a valid file name, or -, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.

                  iunit

                  iunit

                  The Fortran file unit number.
                  Type:optional.
                  optional.
                  Specified as: an integer value. Only meaningful if filename is not -.

                  On Return

                  On Return

                  iret

                  iret

                  Error code.
                  Type: required
                  required
                  An integer value; 0 means no error has been detected.

                  Notes +class="pplb7t-x-x-120">Notes

                  If this function is called on a vector v on a distributed communicator only the local part is written in output. To get a single MatrixMarket file with the whole vector when appropriate, e.g. for debugging purposes, one could gather the whole +class="pplri7t-">gather the whole vector on a single rank and then write it. Consider the following example for a double +class="pplri7t-">double precision vector

                  diff --git a/docs/html/zplmr7y-42.png b/docs/html/zplmr7y-42.png new file mode 100644 index 00000000..1879254d Binary files /dev/null and b/docs/html/zplmr7y-42.png differ diff --git a/docs/html/zplmr7y-48.png b/docs/html/zplmr7y-48.png new file mode 100644 index 00000000..a3d208c1 Binary files /dev/null and b/docs/html/zplmr7y-48.png differ diff --git a/docs/html/zplmr7y-49.png b/docs/html/zplmr7y-49.png new file mode 100644 index 00000000..230ddcab Binary files /dev/null and b/docs/html/zplmr7y-49.png differ diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf index 6d104b9d..9bdda6df 100644 --- a/docs/psblas-3.9.pdf +++ b/docs/psblas-3.9.pdf @@ -447,7 +447,7 @@ endobj /Type /ObjStm /N 100 /First 928 -/Length 16303 +/Length 16628 >> stream 403 0 407 48 408 376 411 424 412 766 415 814 416 1030 419 1078 420 1241 423 1283 @@ -457,9 +457,9 @@ stream 484 6009 487 6057 488 6218 491 6266 492 6442 495 6484 496 6593 499 6640 500 6994 503 7041 504 7435 507 7482 508 7853 511 7900 512 8366 515 8408 516 8489 519 8536 520 8990 523 9037 524 9483 527 9530 528 9986 531 10033 532 10489 535 10536 536 10992 539 11039 540 11505 543 11548 -544 11707 547 11755 548 11991 551 12039 552 12260 555 12308 556 12584 559 12632 560 12977 563 13025 -564 13271 567 13319 568 13525 571 13568 572 13697 575 13745 576 14035 579 14078 580 14169 583 14217 -584 14374 587 14422 588 14614 591 14662 592 14816 595 14864 596 15023 599 15066 600 15238 603 15281 +544 11707 547 11755 548 11991 551 12039 552 12280 555 12328 556 12549 559 12597 560 12873 563 12921 +564 13266 567 13314 568 13560 571 13608 572 13814 575 13857 576 13986 579 14034 580 14324 583 14372 +584 14712 587 14755 588 14846 591 14894 592 15051 595 15099 596 15291 599 15339 600 15493 603 15541 % 403 0 obj << /S /GoTo /D (subsection.6.24) >> % 407 0 obj @@ -607,63 +607,63 @@ stream % 548 0 obj << /S /GoTo /D (subsection.10.2) >> % 551 0 obj -(\376\377\0001\0000\000.\0002\000\040\000b\000u\000i\000l\000d\000\040\040\024\000\040\000B\000u\000i\000l\000d\000s\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0002\000\040\000S\000e\000t\000\040\040\024\000\040\000s\000e\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r\000\040\000p\000a\000r\000a\000m\000e\000t\000e\000r\000s) % 552 0 obj << /S /GoTo /D (subsection.10.3) >> % 555 0 obj -(\376\377\0001\0000\000.\0003\000\040\000a\000p\000p\000l\000y\000\040\040\024\000\040\000P\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r\000\040\000a\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000r\000o\000u\000t\000i\000n\000e) +(\376\377\0001\0000\000.\0003\000\040\000b\000u\000i\000l\000d\000\040\040\024\000\040\000B\000u\000i\000l\000d\000s\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 556 0 obj << /S /GoTo /D (subsection.10.4) >> % 559 0 obj -(\376\377\0001\0000\000.\0004\000\040\000d\000e\000s\000c\000r\000\040\040\024\000\040\000P\000r\000i\000n\000t\000s\000\040\000a\000\040\000d\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n\000\040\000o\000f\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0004\000\040\000a\000p\000p\000l\000y\000\040\040\024\000\040\000P\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r\000\040\000a\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000r\000o\000u\000t\000i\000n\000e) % 560 0 obj << /S /GoTo /D (subsection.10.5) >> % 563 0 obj -(\376\377\0001\0000\000.\0005\000\040\000c\000l\000o\000n\000e\000\040\040\024\000\040\000c\000l\000o\000n\000e\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0005\000\040\000d\000e\000s\000c\000r\000\040\040\024\000\040\000P\000r\000i\000n\000t\000s\000\040\000a\000\040\000d\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n\000\040\000o\000f\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 564 0 obj << /S /GoTo /D (subsection.10.6) >> % 567 0 obj -(\376\377\0001\0000\000.\0006\000\040\000f\000r\000e\000e\000\040\040\024\000\040\000F\000r\000e\000e\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) +(\376\377\0001\0000\000.\0006\000\040\000c\000l\000o\000n\000e\000\040\040\024\000\040\000c\000l\000o\000n\000e\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 568 0 obj -<< /S /GoTo /D (section.11) >> +<< /S /GoTo /D (subsection.10.7) >> % 571 0 obj -(\376\377\0001\0001\000\040\000I\000t\000e\000r\000a\000t\000i\000v\000e\000\040\000M\000e\000t\000h\000o\000d\000s) +(\376\377\0001\0000\000.\0007\000\040\000f\000r\000e\000e\000\040\040\024\000\040\000F\000r\000e\000e\000\040\000a\000\040\000p\000r\000e\000c\000o\000n\000d\000i\000t\000i\000o\000n\000e\000r) % 572 0 obj -<< /S /GoTo /D (subsection.11.1) >> +<< /S /GoTo /D (section.11) >> % 575 0 obj -(\376\377\0001\0001\000.\0001\000\040\000p\000s\000b\000\137\000k\000r\000y\000l\000o\000v\000\040\000\040\040\024\000\040\000K\000r\000y\000l\000o\000v\000\040\000M\000e\000t\000h\000o\000d\000s\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) +(\376\377\0001\0001\000\040\000I\000t\000e\000r\000a\000t\000i\000v\000e\000\040\000M\000e\000t\000h\000o\000d\000s) % 576 0 obj -<< /S /GoTo /D (section.12) >> +<< /S /GoTo /D (subsection.11.1) >> % 579 0 obj -(\376\377\0001\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0001\000.\0001\000\040\000p\000s\000b\000\137\000k\000r\000y\000l\000o\000v\000\040\000\040\040\024\000\040\000K\000r\000y\000l\000o\000v\000\040\000M\000e\000t\000h\000o\000d\000s\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) % 580 0 obj -<< /S /GoTo /D (subsection.12.1) >> +<< /S /GoTo /D (subsection.11.2) >> % 583 0 obj -(\376\377\0001\0002\000.\0001\000\040\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0001\000.\0002\000\040\000p\000s\000b\000\137\000r\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000\040\040\024\000\040\000R\000i\000c\000h\000a\000r\000d\000s\000o\000n\000\040\000I\000t\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000r\000i\000v\000e\000r\000\040\000R\000o\000u\000t\000i\000n\000e) % 584 0 obj -<< /S /GoTo /D (subsection.12.2) >> +<< /S /GoTo /D (section.12) >> % 587 0 obj -(\376\377\0001\0002\000.\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000'\000\040\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) +(\376\377\0001\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 588 0 obj -<< /S /GoTo /D (subsection.12.3) >> +<< /S /GoTo /D (subsection.12.1) >> % 591 0 obj -(\376\377\0001\0002\000.\0003\000\040\000C\000P\000U\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000.\0001\000\040\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 592 0 obj -<< /S /GoTo /D (subsection.12.4) >> +<< /S /GoTo /D (subsection.12.2) >> % 595 0 obj -(\376\377\0001\0002\000.\0004\000\040\000C\000U\000D\000A\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) +(\376\377\0001\0002\000.\0002\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000'\000\040\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) % 596 0 obj -<< /S /GoTo /D (section.13) >> +<< /S /GoTo /D (subsection.12.3) >> % 599 0 obj -(\376\377\0001\0003\000\040\000C\000U\000D\000A\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000R\000o\000u\000t\000i\000n\000e\000s) +(\376\377\0001\0002\000.\0003\000\040\000C\000P\000U\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) % 600 0 obj -<< /S /GoTo /D (section*.6) >> +<< /S /GoTo /D (subsection.12.4) >> % 603 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000i\000n\000i\000t) +(\376\377\0001\0002\000.\0004\000\040\000C\000U\000D\000A\000-\000c\000l\000a\000s\000s\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000s) endstream endobj -662 0 obj +670 0 obj << /Length 729 >> @@ -674,14 +674,14 @@ stream 0 g 0 G 0 g 0 G BT -/F59 24.7871 Tf 169.511 626.367 Td [(PSBLAS)-250(3.9.0)-250(User)-55(')55(s)-250(guide)]TJ +/F75 24.7871 Tf 169.511 626.367 Td [(PSBLAS)-250(3.9.0)-250(User)-55(')55(s)-250(guide)]TJ ET q 1 0 0 1 125.3 609.739 cm 0 0 343.711 4.981 re f Q BT -/F60 14.3462 Tf 156.541 586.546 Td [(A)-250(r)18(efer)18(ence)-250(guide)-250(for)-250(the)-250(Parallel)-250(Sparse)-250(BLAS)-250(library)]TJ +/F78 14.3462 Tf 156.541 586.546 Td [(A)-250(r)18(efer)18(ence)-250(guide)-250(for)-250(the)-250(Parallel)-250(Sparse)-250(BLAS)-250(library)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -701,14 +701,14 @@ Q 0 g 0 G 1 0 0 1 -168.637 -345.042 cm BT -/F59 9.9626 Tf 365.51 263.977 Td [(by)-250(Salvatore)-250(Filippone)]TJ 14.396 -11.956 Td [(and)-250(Alfredo)-250(Buttari)]TJ/F62 9.9626 Tf 29.957 -11.955 Td [(Aug)-250(1st,)-250(2024)]TJ +/F75 9.9626 Tf 365.51 263.977 Td [(by)-250(Salvatore)-250(Filippone)]TJ 14.396 -11.956 Td [(and)-250(Alfredo)-250(Buttari)]TJ/F84 9.9626 Tf 29.957 -11.955 Td [(Aug)-250(1st,)-250(2024)]TJ 0 g 0 G 0 g 0 G ET endstream endobj -659 0 obj +667 0 obj << /Type /XObject /Subtype /Image @@ -716,14 +716,14 @@ endobj /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB -/SMask 669 0 R +/SMask 677 0 R /Length 921600 >> stream ½ѳ򴴴ȳ賳޳Գ˳³ⳳٳϳ񴴴ų糳ܳӳɳ볳ೳ׳ͳﳳų䳳ڳѳ򴴴ȳ賳߳ճ˳³ⳳٳϳ񴴴ų糳ܳӳɳ볳ᳳ׳ͳﳳų䳳¿¿¿棟͙ͣͣͣͣȔŔŔŔŔŒą~xvpvpvpvpvpvphbf`f`f`f`f`b[WPWPWPWPWPWPLDH@H@H@H@H@F>9090909090900') ) ) ) ) ) ೳ7.%leڳ'vpB9賳ɳZS) vqֳA8ME䳳,#Ƴ|/&󴴴 {ӳe^VOᳳJBó4+𴴴5,г $aZ޳pj:2쳳WP̳%<4leڳ+"B9賳}wɳ) _Xvq׳G?ME䳳$$,#+"$Ƴ0'$JCfa~ʗ٨䵴︸︸︸︸︸︸ﯯ髪杛܊xtgbUOB;) /&󴴴2*gbڷ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸שׂ損vrYT=5{ӳ#IBԸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﳲ뒐lhH@#kd;3׸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﶶlgVOᳳid︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xtóPH"Ҹ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xt4+𴴴$ٸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xtг91Ҹ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xt ql︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xtaZ޳'<5︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xtwqָ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xt:2C<︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xt̳ZSʸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ᎋyunigbd_d_hcrm|ɑԪ常︸︸︸︸︸︸︸︸︸︸︸︸︸xt%#츸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸UO*!) G?d_~ʩ常︸︸︸︸︸︸︸︸xtleڳB9IB︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸難F?;3idط︸︸︸︸xtmi︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﭬ/&) \V۸︸︸xtB9賳/&и︸︸︸︸︸︸︸︸︸︸︸︸︸︸TN;4{wŰxtɳ~޸︸︸︸︸︸︸︸︸︸︸︸︸︸ﮭ#91) 븸︸︸︸︸︸︸︸︸︸︸︸︸︸vq׳e_︸︸︸︸︸︸︸︸︸︸︸︸︸︸ ︸︸︸︸︸︸︸︸︸︸︸︸︸︸ME䳳JC︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴ$Ƴ︸︸︸︸︸︸︸︸︸︸︸︸︸︸rn/&󴴴5,㸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷd_{ӳո︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸MF&so︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸難zvLE&VOᳳrlNH︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷ{w[U<5ó"츸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴ횘{w[U:24+𴴴WP}ɸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﱱ뎋idD=г;4︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ}yE> <4˸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸難rn1)aZ޳*!游︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷ1)+"H@︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴoj:2~xUO︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸1)̳LE길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸שׂ<5%`Y3*ڸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﭬ4+leڳ`Z縸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ H@#hc丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸pkB9賳HA̵︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﴳ-$ɳ0'&QJ{wť⸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸pk) 0(YS}yƟ߷︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸﫪vq׳#$H@jeѰ길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸?7mf;3b]Զ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸e_PH䳳(`Zุ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸½aZ`Z븸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸-#𴴴¿¿¿¿¿¿޶سְֳֳֳֳԣ͚ͣͣͣͣͣɔŔŔŔŔŔŅyvpA:븸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸睊ųWPWPWPWPWPWPOGH@H@H@H@H@H@9190909090903*) ) ) ) ) ) TMid︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﳳH@泳* '︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷIA~xݸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴjcܳ0'Ѹ︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﯮ4+^VMFMF׸︸︸︸︸︸︸︸︸︸︸︸︸︸︸磻ҳKDd_LE縸︸︸︸︸︸︸︸︸︸︸︸︸︸︸$󴴴$1(d_︸︸ZT KD︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸|ȳoismd_︸︸︸︸שׂrm5,#ุ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸b]91볳+"d_︸︸︸︸︸︸︸^X+")ָ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸?7VOjcd_︸︸︸︸︸︸︸︸︸ﷷidA9^X常︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﯯ\UೳD<d_︸︸︸︸︸︸︸︸︸︸︸︸︸ﳲ뗔xt\VG?5,#(>6XRʯ鸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸|;391d_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﱱ뮭豱븸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸G?|ֳhbd_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ *!%d_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸LEͳ{uwqd_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸1(<4d_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸﨧*!ij]VC:d_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﲲ;3KC䳳^Wd_︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰC<G?$!\V︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸6.smڳ0(d_ط︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴtp 0'6--$`[ֶ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵵ턀2*ѳME#G?lgԲ븸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸je+"(񴴴#TM<4`ZwsÍѣᶶ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷ|\V2*ȳjc* 2*HAWQb]mixtxt}yƁ~xtxtqlfaYSKD6-@8賳}wPH0'b[޳^V91KDճ1("'sm˳vp(5-쳳jc³ZSD<SLⳳ6.:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2800')91A8丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﶶ啓zv`[<4hbztٳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰꈅSL#%/&丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﴳ~{3*wqϳ}丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷ~{'<4* 񴴴 丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸שׂJCC:ųe^丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷni]VH@泳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸|$!JB丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸{wjcܳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[6-5,丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴ5-MEӳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸TM$󴴴$丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸G@* ɳqk丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸}yNHNHNHNHNHNHNHNHNHUO_Ylhѯ鸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸}w80볳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[UOݸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷ0'0'WP丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[rm︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸e_^V[Tೳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[mi︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸KD<4丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[ָ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ1(|׳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[A9︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸/&sm+"丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸C<(ͳ}w丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[|ȸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸SLjc/&ﳳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[lh︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸YTC;ų_X丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[`[︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[91IA䳳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[gb︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸]WhbH@丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[tp︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸VP %rl۳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[ظ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸LExr0'丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[&︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸7/<4ѳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[ni︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷ#C:'󴴴#丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[6.츸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸]Vȳle丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[0'㸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸xt$!@8賳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[XR鸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸HAPH丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`["C6SLSLٳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﴳ{w,#șșșșșȪѭӭӭӭӭӱվܾܾܾܾܾ.%丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸hc)¿¿¿¿¿¿޽۳ֳֳֳֳֳ֧ϣͣͣͣͣ̔͡ŔŔŔŔŔŋvpvpvpvpѳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸睊凄`[5-\UWPWPWPTMH@H@H@H@H@H@@7909090909090*!) ) ) ) ) $@7丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ۄ˄˄˄˄˄˄˄˄˄˄˄˃xtrnc^UOA9&jc߳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[ !\U丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[f`91 丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[1(γ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[JC2)丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[QIvp۳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[6-SK丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[smB:곳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`['ʳzt丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[rl"-$丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[)~س丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[¿XQJC丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[@8ME泳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[<4ȳoi丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[f`* 󴴴(丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[+"Գ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[yB:丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[" WQⳳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[aZije_丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[7/1(𴴴$丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[H@ѳ丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[TL;3丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[1(jc߳丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸`[}w\U$91 mfγ+!2)QIvp۳H@SK:2B:곳jcʳzt'"-$ys~س$JC\TME泳91ȳoiB:* 󴴴(\UԳ0&B:|WQⳳ !ije_ga1(𴴴$1(ѳOG;3KCjc߳6-\Usm91 'γtn2)(vp۳XQSK@8B:곳A8ʳzt_X"-$,#"0'91A:A9:23*(~سztpxtxtxtxtxtxtxtxtxtxtxtxtxtxtnilgd_]WG?0(&xtxtxtxtxtxtxtxtxt[U>6xtxtxtxtxtxtxtxtxtxtxtMF$\VʣḸ︸︸︸︸︸︸︸ﴳ죡soXR;4JC" 길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﴳ썊`[,#0'︸︸︸︸︸︸︸︸̸︸︸︸︸︸︸︸︸︸︸+"~{ȳ븸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﳳ쑏lg ME泳b[길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴvr) 0'︸︸︸︸︸︸︸︸%츸︸︸︸︸︸︸︸︸︸︸︸;3WQ鸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸*!ȳoi5-길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸﨧800'︸︸︸︸︸︸︸︸\V︸︸︸︸︸︸︸︸︸︸︸︸tp`Z︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸*!* 󴴴'IA길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﭬ*!0'︸︸︸︸︸︸︸︸ظ︸︸︸︸︸︸︸︸︸︸︸︸שׂTM︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸*!ԳSL길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸3*︸︸︸︸︸︸︸︸︸︸︸︸︸︸LE#常︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸*!B:4+길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸0(0'︸︸︸︸︸︸︸︸mi︸︸︸︸︸︸︸︸︸︸︸︸︸︸je︸︸︸︸︸︸︸︸︸︸︸ﷷ梡஭跷︸︸︸︸︸︸︸︸︸*!WQⳳvp길︸︸︸︸︸︸︸罹0'0'0'0'0'2*C<`[⸸︸︸︸︸︸︸︸︸︸b]0'︸︸︸︸︸︸︸︸㸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴ&޸︸︸︸︸︸︸︸ﷷG@'+"IBfaѳ븸︸︸︸*!ije_$길︸︸︸︸︸︸︸藍#۸︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸D=︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸^X/&︸︸︸︸︸︸︸ﷷOI!KD~ʴ츸*!1(𴴴$nh길︸︸︸︸︸︸︸藍D=︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸|ȸ︸︸︸︸︸︸︸߸︸︸︸︸︸︸︸G@︸︸︸︸︸︸︸&a\$ѳ* 길︸︸︸︸︸︸︸藍︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸"븸︸︸︸︸︸︸︸A:츸︸︸︸︸︸︸︸5,UO︸︸︸︸︸︸︸fa;3RJ길︸︸︸︸︸︸︸藍︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸VP︸︸︸︸︸︸︸˸︸︸︸︸︸︸︸pk`[︸︸︸︸︸︸︸mijc߳H@길︸︸︸︸︸︸︸藍4+︸︸︸︸︸︸︸︸~0'︸︸︸︸︸︸︸︸Ը︸︸︸︸︸︸︸kfNH︸︸︸︸︸︸︸﨧XR︸︸︸︸︸︸︸磻"\U;3길︸︸︸︸︸︸︸藍~zǸ︸︸︸︸︸︸︸︸WQ0'︸︸︸︸︸︸︸︸.%︸︸︸︸︸︸︸︸4+길︸︸︸︸︸︸︸G?KD︸︸︸︸︸︸︸︸JC91 ib길︸︸︸︸︸︸︸藍4+~{ȸ︸︸︸︸︸︸︸︸﫪"0'︸︸︸︸︸︸︸︸gb︸︸︸︸︸︸︸|ȸ︸︸︸︸︸︸︸~) ︸︸︸︸︸︸︸︸︸︸罹}yTM1)γ*!길︸︸︸︸︸︸︸ﵴ옖٘٘٘٘٠޴츸︸︸︸︸︸︸︸︸︸︸RK0'︸︸︸︸︸︸︸︸߸︸︸︸︸︸︸︸e_IB︸︸︸︸︸︸︸ﳳ#ݸ︸︸︸︸︸︸︸︸︸︸︸︸︸ﯮ鐍pkLE&2)zt길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷa\0'︸︸︸︸︸︸︸︸?7︸︸︸︸︸︸︸ﷷ0'縸︸︸︸︸︸︸︸XRWQ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷkf2*vp۳$길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸A90'︸︸︸︸︸︸︸︸xtø︸︸︸︸︸︸︸{wŸ︸︸︸︸︸︸︸ڸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸A9SK\U길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﵴxt6.0'︸︸︸︸︸︸︸︸踸︸︸︸︸︸︸︸`ZD=︸︸︸︸︸︸︸ﷷ/'.%游︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸#C;91¿길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﷷws0'︸︸︸︸︸︸︸︸PJ︸︸︸︸︸︸︸ﷷ*!常︸︸︸︸︸︸︸id/&ܸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸) zt/&7/7/7/7/7/;2SLSLSLSLSLSL`Ymfmfmfmfmfmf}șșșșșȧϭӭӭӭӭӮӾC;길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸и︸︸︸︸︸︸︸vr¸︸︸︸︸︸︸︸f`길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸+""길︸︸︸︸︸︸︸ﵵࢡࢡࢡࢡࢡ੨嶶︸︸︸︸︸︸︸︸︸︸}y0'︸︸︸︸︸︸︸︸) ︸︸︸︸︸︸︸YT?7︸︸︸︸︸︸︸︸A9&`[ݸ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ZT길︸︸︸︸︸︸︸藍 F?и︸︸︸︸︸︸︸︸︸A90'︸︸︸︸︸︸︸︸b]︸︸︸︸︸︸︸ﵴ&㸸︸︸︸︸︸︸︸{w0(YT˨丸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸藍=5賳A9길︸︸︸︸︸︸︸藍oj︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸ܸ︸︸︸︸︸︸︸ql︸︸︸︸︸︸︸ﯯ ,#OItp߸︸︸︸︸︸︸︸︸︸︸︸︸5,길︸︸︸︸︸︸︸藍ุ︸︸︸︸︸︸︸ﵴ 0'︸︸︸︸︸︸︸︸80︸︸︸︸︸︸︸︸d_d_d_d_d_d_d_d_d_|xƸ︸︸︸︸︸︸︸︸SL0'c^常︸︸︸︸︸︸︸︸︸YTUNݳrl길︸︸︸︸︸︸︸藍rm︸︸︸︸︸︸︸︸>60'︸︸︸︸︸︸︸︸so︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸$׸︸︸︸︸︸︸︸︸je길︸︸︸︸︸︸︸藍_Y︸︸︸︸︸︸︸︸PI0'︸︸︸︸︸︸︸︸常︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﶶ*!4+︸︸︸︸︸︸︸︸vruoԳ길︸︸︸︸︸︸︸藍d_︸︸︸︸︸︸︸︸ZT0'︸︸︸︸︸︸︸︸JC︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸d_游︸︸︸︸︸︸︸ql%5-길︸︸︸︸︸︸︸藍}ɸ︸︸︸︸︸︸︸︸OI0'︸︸︸︸︸︸︸︸̸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸) b]"縸︸︸︸︸︸︸︸e_ʳ길︸︸︸︸︸︸︸藍) 길︸︸︸︸︸︸︸︸A90'︸︸︸︸︸︸︸︸%츸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸;30'ﭬje&:2︸︸︸︸︸︸︸︸WQ3*e^길︸︸︸︸︸︸︸藍)׸︸︸︸︸︸︸︸︸ﷷ) 0'︸︸︸︸︸︸︸︸[U︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸vr0'︸︸ﴳ솃MF)ܸ︸︸︸︸︸︸︸︸4+³길︸︸︸︸︸︸︸罹0'0'0'0'0'1);3NHvr¯鸸︸︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸ﲲ뢡ࢡࢡࢡࢡࢡࢡࢡࢡࢡࢡࢡࢡࢡࢡࢡظ︸︸︸︸︸︸︸ﮭxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtâ߸︸︸︸︸︸︸︸שׂ0'︸︸︸︸︸ﮭ舅f`C<'5-hc游︸︸︸︸︸︸︸︸殮KDᳳ길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ZT0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ3*︸︸︸︸︸︸︸︸xtZT︸︸︸︸︸︸︸︸MF0'︸︸︸︸︸︸︸︸︸︸ﷷשׂ梡০㵴츸︸︸︸︸︸︸︸︸︸︸︸so-$길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰmi︸︸︸︸︸︸︸︸A9&︸︸︸︸︸︸︸0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﲲ-$ibس길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸睊5,0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ㸸︸︸︸︸︸︸︸殮Ѹ︸︸︸︸︸︸︸ﵴ'0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸_YYR길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸藍2*0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰD=︸︸︸︸︸︸︸︸pkUO︸︸︸︸︸︸︸︸^X0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸wsγ길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰgb 0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ|ȸ︸︸︸︸︸︸︸︸91#븸︸︸︸︸︸︸︸&Ӷ︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ^X.%񴴴길︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﮭ膃SL#0'︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﰰ"븸︸︸︸︸︸︸︸͸︸︸︸︸︸︸︸︸6-'YSЯ鸸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸︸ﱱ}y,#ų'jeninininininininininininininininid_^XWQC<) %ninininininininininininininininininininininininininije3*nininininininininiKD=5nininininininininiA980^X}yƔת常︸︸︸︸︸︸︸ﵴ왗|xTN"@7泳"0'7/>6D=;44++"NG\Uܳzztҳ"'󴴴ȳA98/鳳rlMEೳnhֳ5-"̳e^/&ﳳóE=㳳-$b[ڳYRzг) 򴴴&ȳ=5賳NGTM޳z"tnԳ%A9˳3*rl³JCⳳ5-gaسe^γ-$񴴴ų-$?6糳YR\Tܳysӳ&&ɳNG8/볳zMEೳ"mfֳA9"ͳrl/&ﳳųD<䳳5-¿aZڳd]%) ) ) ) ) +"909090909090A8H@H@H@H@H@H@UNWPWPWPWPWP\Tf`f`f`f`f`f`qkvpvpvpvpvpwqͣͣͣͨгֳֳֳֳֳֽ¿¿¿¿¿ѳ򴴴ֳ䳳Ƴ򴴴ӳೳóﳳϳݳ볳˳ٳ賳ɳֳ㳳Ƴ򴴴ҳೳóﳳϳݳ볳˳ٳ賳ɳֳ㳳Ƴ򴴴ҳೳóﳳϳݳ볳˳ٳ賳ɳֳ㳳Ƴ򴴴ҳೳ³ endstream endobj -669 0 obj +677 0 obj << /Type /XObject /Subtype /Image @@ -759,7 +759,7 @@ stream X<+#ǻNxwwwwwqffffffZUUUUUSDDDDDD;333333$""""" endstream endobj -672 0 obj +680 0 obj << /Length 78 >> @@ -768,617 +768,616 @@ stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 320.07 90.438 Td [(2)]TJ +/F84 9.9626 Tf 320.07 90.438 Td [(2)]TJ 0 g 0 G ET endstream endobj -718 0 obj +727 0 obj << -/Length 15343 +/Length 15914 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 706.042 Td [(Contents)]TJ +/F75 14.3462 Tf 99.895 706.042 Td [(Contents)]TJ 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf 0 -22.894 Td [(1)-1000(Introduction)]TJ +/F75 9.9626 Tf 0 -22.889 Td [(1)-1000(Introduction)]TJ 0 g 0 G [-26723(1)]TJ 0 0 1 rg 0 0 1 RG - 0 -22.116 Td [(2)-1000(General)-250(overview)]TJ + 0 -22.112 Td [(2)-1000(General)-250(overview)]TJ 0 g 0 G [-24361(2)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.074 Td [(2.1)-1050(Basic)-250(Nomenclatur)18(e)]TJ +/F84 9.9626 Tf 14.944 -12.071 Td [(2.1)-1050(Basic)-250(Nomenclatur)18(e)]TJ 0 g 0 G [-339(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(3)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(2.2)-1050(Library)-250(contents)]TJ + 0 -12.072 Td [(2.2)-1050(Library)-250(contents)]TJ 0 g 0 G [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(4)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(2.3)-1050(Application)-250(str)8(uctur)18(e)]TJ + 0 -12.071 Td [(2.3)-1011(Application)-250(str)8(uctur)18(e)]TJ 0 g 0 G - [-480(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-519(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(6)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.074 Td [(2.3.1)-1200(User)18(-de\002ned)-250(index)-250(mappings)]TJ + 22.914 -12.071 Td [(2.3.1)-1200(User)18(-de\002ned)-250(index)-250(mappings)]TJ 0 g 0 G [-325(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(8)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.074 Td [(2.4)-1050(Pr)18(ogramming)-250(model)]TJ + -22.914 -12.072 Td [(2.4)-1050(Pr)18(ogramming)-250(model)]TJ 0 g 0 G [-717(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(8)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -22.116 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ +/F75 9.9626 Tf -14.944 -22.111 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ 0 g 0 G [-19810(9)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.074 Td [(3.1)-1050(Descriptor)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 14.944 -12.071 Td [(3.1)-1050(Descriptor)-250(data)-250(str)8(uctur)18(e)]TJ 0 g 0 G [-369(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-2000(9)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.074 Td [(3.1.1)-1200(Descriptor)-250(Methods)]TJ + 22.914 -12.072 Td [(3.1.1)-1200(Descriptor)-250(Methods)]TJ 0 g 0 G [-911(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.1.2)-1200(get)]TJ + 0 -12.071 Td [(3.1.2)-1200(get)]TJ ET q -1 0 0 1 183.79 542.523 cm +1 0 0 1 183.79 542.558 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 542.324 Td [(local)]TJ +/F84 9.9626 Tf 186.779 542.359 Td [(local)]TJ ET q -1 0 0 1 208.019 542.523 cm +1 0 0 1 208.019 542.558 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 211.008 542.324 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(r)18(ows)]TJ +/F84 9.9626 Tf 211.008 542.359 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(r)18(ows)]TJ 0 g 0 G [-471(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.255 -12.074 Td [(3.1.3)-1200(get)]TJ + -73.255 -12.072 Td [(3.1.3)-1200(get)]TJ ET q -1 0 0 1 183.79 530.449 cm +1 0 0 1 183.79 530.487 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 530.25 Td [(local)]TJ +/F84 9.9626 Tf 186.779 530.287 Td [(local)]TJ ET q -1 0 0 1 208.019 530.449 cm +1 0 0 1 208.019 530.487 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 211.008 530.25 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ +/F84 9.9626 Tf 211.008 530.287 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ 0 g 0 G [-673(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.255 -12.074 Td [(3.1.4)-1200(get)]TJ + -73.255 -12.071 Td [(3.1.4)-1200(get)]TJ ET q -1 0 0 1 183.79 518.375 cm +1 0 0 1 183.79 518.415 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 518.176 Td [(global)]TJ +/F84 9.9626 Tf 186.779 518.216 Td [(global)]TJ ET q -1 0 0 1 214.644 518.375 cm +1 0 0 1 214.644 518.415 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 217.633 518.176 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(r)18(ows)]TJ +/F84 9.9626 Tf 217.633 518.216 Td [(r)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(r)18(ows)]TJ 0 g 0 G [-641(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -79.88 -12.074 Td [(3.1.5)-1200(get)]TJ + -79.88 -12.071 Td [(3.1.5)-1200(get)]TJ ET q -1 0 0 1 183.79 506.301 cm +1 0 0 1 183.79 506.344 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 506.102 Td [(global)]TJ +/F84 9.9626 Tf 186.779 506.145 Td [(global)]TJ ET q -1 0 0 1 214.644 506.301 cm +1 0 0 1 214.644 506.344 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 217.633 506.102 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ +/F84 9.9626 Tf 217.633 506.145 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ 0 g 0 G [-843(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -79.88 -12.075 Td [(3.1.6)-1200(get)]TJ + -79.88 -12.072 Td [(3.1.6)-1200(get)]TJ ET q -1 0 0 1 183.79 494.227 cm +1 0 0 1 183.79 494.273 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 494.027 Td [(global)]TJ +/F84 9.9626 Tf 186.779 494.073 Td [(global)]TJ ET q -1 0 0 1 214.644 494.227 cm +1 0 0 1 214.644 494.273 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 217.633 494.027 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ +/F84 9.9626 Tf 217.633 494.073 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ 0 g 0 G [-999(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -79.88 -12.074 Td [(3.1.7)-1200(get)]TJ + -79.88 -12.071 Td [(3.1.7)-1200(get)]TJ ET q -1 0 0 1 183.79 482.153 cm +1 0 0 1 183.79 482.201 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 481.953 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ +/F84 9.9626 Tf 186.779 482.002 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ 0 g 0 G [-852(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.1.8)-1200(Clone)-250(\227)-250(clone)-250(curr)18(ent)-250(object)]TJ + -49.026 -12.071 Td [(3.1.8)-1200(Clone)-250(\227)-250(clone)-250(curr)18(ent)-250(object)]TJ 0 g 0 G [-763(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.1.9)-1200(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ + 0 -12.072 Td [(3.1.9)-1200(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ 0 g 0 G [-496(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.1.10)-700(psb)]TJ + 0 -12.071 Td [(3.1.10)]TJ 1.02 0 0 1 169.335 445.788 Tm [(psb)]TJ ET q -1 0 0 1 185.952 445.93 cm +1 0 0 1 185.968 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 188.941 445.731 Td [(cd)]TJ +/F84 9.9626 Tf 1.02 0 0 1 188.957 445.788 Tm [(cd)]TJ ET q -1 0 0 1 200.049 445.93 cm +1 0 0 1 200.275 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 203.038 445.731 Td [(get)]TJ +/F84 9.9626 Tf 1.02 0 0 1 203.264 445.788 Tm [(get)]TJ ET q -1 0 0 1 217.195 445.93 cm +1 0 0 1 217.692 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 220.184 445.731 Td [(lar)18(ge)]TJ +/F84 9.9626 Tf 1.02 0 0 1 220.681 445.788 Tm [(lar)18(ge)]TJ ET q -1 0 0 1 242.729 445.93 cm +1 0 0 1 243.668 445.987 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 245.718 445.731 Td [(thr)18(eshold)-190(\227)-190(Get)-190(thr)18(eshold)-190(for)-190(index)-190(map-)]TJ -76.084 -11.955 Td [(ping)-250(switch)]TJ +/F84 9.9626 Tf 1.02 0 0 1 246.657 445.788 Tm [(thr)18(eshold)-430(\227)-430(Get)-430(thr)18(eshold)-430(for)-430(index)]TJ 1 0 0 1 169.634 433.833 Tm [(mapping)-250(switch)]TJ 0 g 0 G - [-819(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-335(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.1.11)-700(psb)]TJ + -31.881 -12.072 Td [(3.1.11)]TJ 0.98 0 0 1 169.335 421.761 Tm [(psb)]TJ ET q -1 0 0 1 185.952 421.901 cm +1 0 0 1 185.339 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 188.941 421.702 Td [(cd)]TJ +/F84 9.9626 Tf 0.98 0 0 1 188.328 421.761 Tm [(cd)]TJ ET q -1 0 0 1 200.049 421.901 cm +1 0 0 1 199.226 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 203.038 421.702 Td [(set)]TJ +/F84 9.9626 Tf 0.98 0 0 1 202.215 421.761 Tm [(set)]TJ ET q -1 0 0 1 215.88 421.901 cm +1 0 0 1 214.812 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 218.869 421.702 Td [(lar)18(ge)]TJ +/F84 9.9626 Tf 0.98 0 0 1 217.8 421.761 Tm [(lar)18(ge)]TJ ET q -1 0 0 1 241.414 421.901 cm +1 0 0 1 239.903 421.961 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 244.403 421.702 Td [(thr)18(eshold)-190(\227)-190(Set)-190(thr)18(eshold)-190(for)-190(index)-190(map-)]TJ -74.769 -11.955 Td [(ping)-250(switch)]TJ +/F84 9.9626 Tf 0.98 0 0 1 242.892 421.761 Tm [(thr)18(eshold)-215(\227)-215(Set)-215(thr)19(eshold)-215(for)-215(index)-215(map-)]TJ 1 0 0 1 169.335 409.806 Tm [(ping)-250(switch)]TJ 0 g 0 G - [-819(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-849(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.1.12)-700(get)]TJ + -31.582 -12.071 Td [(3.1.12)-700(get)]TJ ET q -1 0 0 1 183.79 397.872 cm +1 0 0 1 183.79 397.934 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 397.673 Td [(p)]TJ +/F84 9.9626 Tf 186.779 397.735 Td [(p)]TJ ET q -1 0 0 1 193.364 397.872 cm +1 0 0 1 193.364 397.934 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 196.353 397.673 Td [(adjcncy)-250(\227)-250(Get)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ +/F84 9.9626 Tf 196.353 397.735 Td [(adjcncy)-250(\227)-250(Get)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ 0 g 0 G [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -58.6 -12.074 Td [(3.1.13)-700(set)]TJ + -58.6 -12.072 Td [(3.1.13)-700(set)]TJ ET q -1 0 0 1 182.475 385.798 cm +1 0 0 1 182.475 385.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 185.464 385.599 Td [(p)]TJ +/F84 9.9626 Tf 185.464 385.663 Td [(p)]TJ ET q -1 0 0 1 192.049 385.798 cm +1 0 0 1 192.049 385.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 195.038 385.599 Td [(adjcncy)-250(\227)-250(Set)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ +/F84 9.9626 Tf 195.038 385.663 Td [(adjcncy)-250(\227)-250(Set)-250(pr)18(ocess)-250(adjacency)-250(list)]TJ 0 g 0 G [-272(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -57.285 -12.074 Td [(3.1.14)-700(fnd)]TJ + -57.285 -12.071 Td [(3.1.14)-700(fnd)]TJ ET q -1 0 0 1 185.434 373.724 cm +1 0 0 1 185.434 373.791 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 188.423 373.524 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(pr)18(ocess)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ +/F84 9.9626 Tf 188.423 373.592 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(pr)18(ocess)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ 0 g 0 G [-361(.)]TJ 0 g 0 G [-1500(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -50.67 -12.074 Td [(3.1.15)-700(Named)-250(Constants)]TJ + -50.67 -12.071 Td [(3.1.15)-700(Named)-250(Constants)]TJ 0 g 0 G [-277(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(16)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.074 Td [(3.2)-1050(Sparse)-250(Matrix)-250(class)]TJ + -22.914 -12.072 Td [(3.2)-1050(Sparse)-250(Matrix)-250(class)]TJ 0 g 0 G [-719(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(16)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.074 Td [(3.2.1)-1200(Sparse)-250(Matrix)-250(Methods)]TJ + 22.914 -12.071 Td [(3.2.1)-1200(Sparse)-250(Matrix)-250(Methods)]TJ 0 g 0 G [-938(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.2)-1200(get)]TJ + 0 -12.071 Td [(3.2.2)-1200(get)]TJ ET q -1 0 0 1 183.79 325.427 cm +1 0 0 1 183.79 325.506 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 325.228 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 186.779 325.307 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G [-286(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.3)-1200(get)]TJ + -49.026 -12.072 Td [(3.2.3)-1200(get)]TJ ET q -1 0 0 1 183.79 313.353 cm +1 0 0 1 183.79 313.434 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 313.154 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 186.779 313.235 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G [-670(.)]TJ 0 g 0 G [-1500(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.4)-1200(get)]TJ + -49.026 -12.071 Td [(3.2.4)]TJ 1.02 0 0 1 169.634 301.164 Tm [(get)]TJ ET q -1 0 0 1 183.79 301.279 cm +1 0 0 1 184.062 301.363 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 301.08 Td [(nnzer)18(os)-190(\227)-190(Get)-190(number)-190(of)-190(nonzer)18(o)-190(elements)-190(in)-190(a)-190(sparse)]TJ -17.145 -11.955 Td [(matrix)]TJ +/F84 9.9626 Tf 1.02 0 0 1 187.05 301.164 Tm [(nnzer)18(os)-424(\227)-423(Get)-423(number)-424(of)-423(nonzer)18(o)-423(elements)-424(in)-423(a)]TJ 1 0 0 1 169.634 289.209 Tm [(sparse)-250(matrix)]TJ 0 g 0 G - [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-766(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.2.5)-1200(get)]TJ + -31.881 -12.072 Td [(3.2.5)]TJ 0.983 0 0 1 169.634 277.137 Tm [(get)]TJ ET q -1 0 0 1 183.79 277.25 cm +1 0 0 1 183.56 277.336 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 277.051 Td [(size)-354(\227)-354(Get)-355(maximum)-354(number)-354(of)-354(nonzer)18(o)-354(elements)]TJ -17.145 -11.955 Td [(in)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 0.983 0 0 1 186.549 277.137 Tm [(size)-254(\227)-254(Get)-254(maximum)-254(number)-254(of)-254(nonzer)19(o)-254(elements)-254(in)]TJ 1 0 0 1 169.634 265.182 Tm [(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-393(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-766(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.2.6)-1200(sizeof)-206(\227)-205(Get)-206(memory)-205(occupation)-206(in)-205(bytes)-206(of)-205(a)-206(sparse)-205(ma-)]TJ 31.881 -11.956 Td [(trix)]TJ + -31.881 -12.071 Td [(3.2.6)]TJ 0.98 0 0 1 169.634 253.111 Tm [(sizeof)-239(\227)-239(Get)-239(memory)-239(occupation)-239(in)-239(bytes)-239(of)-239(a)-239(sparse)-239(matrix)]TJ 0 g 0 G - [-722(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1500(19)]TJ + 1 0 0 1 433.644 253.111 Tm [(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.881 -12.074 Td [(3.2.7)-1200(get)]TJ + -295.891 -12.072 Td [(3.2.7)-1200(get)]TJ ET q -1 0 0 1 183.79 229.192 cm +1 0 0 1 183.79 241.239 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 228.992 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ +/F84 9.9626 Tf 186.779 241.039 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ 0 g 0 G [-278(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.8)-1200(is)]TJ + -49.026 -12.071 Td [(3.2.8)-1200(is)]TJ ET q -1 0 0 1 177.355 217.117 cm +1 0 0 1 177.355 229.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 180.344 216.918 Td [(bld,)-250(is)]TJ +/F84 9.9626 Tf 180.344 228.968 Td [(bld,)-250(is)]TJ ET q -1 0 0 1 207.541 217.117 cm +1 0 0 1 207.541 229.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.53 216.918 Td [(upd,)-250(is)]TJ +/F84 9.9626 Tf 210.53 228.968 Td [(upd,)-250(is)]TJ ET q -1 0 0 1 241.314 217.117 cm +1 0 0 1 241.314 229.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 244.303 216.918 Td [(asb)-250(\227)-250(Status)-250(check)]TJ +/F84 9.9626 Tf 244.303 228.968 Td [(asb)-250(\227)-250(Status)-250(check)]TJ 0 g 0 G [-569(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -106.55 -12.074 Td [(3.2.9)-1200(is)]TJ + -106.55 -12.071 Td [(3.2.9)-1200(is)]TJ ET q -1 0 0 1 177.355 205.043 cm +1 0 0 1 177.355 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 180.344 204.844 Td [(lower)74(,)-250(is)]TJ +/F84 9.9626 Tf 180.344 216.897 Td [(lower)74(,)-250(is)]TJ ET q -1 0 0 1 217.663 205.043 cm +1 0 0 1 217.663 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 220.652 204.844 Td [(upper)74(,)-250(is)]TJ +/F84 9.9626 Tf 220.652 216.897 Td [(upper)74(,)-250(is)]TJ ET q -1 0 0 1 259.306 205.043 cm +1 0 0 1 259.306 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 262.295 204.844 Td [(triangle,)-250(is)]TJ +/F84 9.9626 Tf 262.295 216.897 Td [(triangle,)-250(is)]TJ ET q -1 0 0 1 309.069 205.043 cm +1 0 0 1 309.069 217.096 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 312.058 204.844 Td [(unit)-250(\227)-250(Format)-250(check)]TJ +/F84 9.9626 Tf 312.058 216.897 Td [(unit)-250(\227)-250(Format)-250(check)]TJ 0 g 0 G [-441(.)-500(.)]TJ 0 g 0 G [-1500(20)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -174.305 -12.074 Td [(3.2.10)-700(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(fer)18(ent)-250(storage)-250(format)]TJ + -174.305 -12.072 Td [(3.2.10)-700(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(fer)18(ent)-250(storage)-250(format)]TJ 0 g 0 G [-815(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(20)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.11)-700(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ + 0 -12.071 Td [(3.2.11)-700(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ 0 g 0 G [-358(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(21)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.12)-700(clean)]TJ + 0 -12.072 Td [(3.2.12)-700(clean)]TJ ET q -1 0 0 1 193.106 168.821 cm +1 0 0 1 193.106 180.882 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 196.094 168.622 Td [(zer)18(os)-250(\227)-250(Eliminate)-250(zer)18(o)-250(coef)18(\002cients)]TJ +/F84 9.9626 Tf 196.094 180.682 Td [(zer)18(os)-250(\227)-250(Eliminate)-250(zer)18(o)-250(coef)18(\002cients)]TJ 0 g 0 G [-677(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(21)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -58.341 -12.074 Td [(3.2.13)-700(get)]TJ + -58.341 -12.071 Td [(3.2.13)-700(get)]TJ ET q -1 0 0 1 183.79 156.747 cm +1 0 0 1 183.79 168.81 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 186.779 156.548 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ +/F84 9.9626 Tf 186.779 168.611 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ 0 g 0 G [-870(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.074 Td [(3.2.14)-700(clip)]TJ + -49.026 -12.071 Td [(3.2.14)-700(clip)]TJ ET q -1 0 0 1 186.44 144.673 cm +1 0 0 1 186.44 156.739 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 189.429 144.474 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ +/F84 9.9626 Tf 189.429 156.54 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ 0 g 0 G [-309(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -51.676 -12.074 Td [(3.2.15)-700(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ + -51.676 -12.072 Td [(3.2.15)-700(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ 0 g 0 G [-292(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(22)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.074 Td [(3.2.16)-700(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ + 0 -12.071 Td [(3.2.16)-700(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ 0 g 0 G [-596(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(23)]TJ 0 g 0 G -0 g 0 G - 132.548 -29.888 Td [(i)]TJ -0 g 0 G -ET - -endstream -endobj -775 0 obj -<< -/Length 15896 ->> -stream -0 g 0 G -0 g 0 G 0 0 1 rg 0 0 1 RG -BT -/F62 9.9626 Tf 188.563 706.129 Td [(3.2.17)-700(psb)]TJ + 0 -12.071 Td [(3.2.17)-670(psb)]TJ ET q -1 0 0 1 236.762 706.328 cm +1 0 0 1 185.654 120.525 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 239.751 706.129 Td [(set)]TJ +/F84 9.9626 Tf 188.642 120.326 Td [(set)]TJ ET q -1 0 0 1 252.592 706.328 cm +1 0 0 1 201.484 120.525 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 255.581 706.129 Td [(mat)]TJ +/F84 9.9626 Tf 204.473 120.326 Td [(mat)]TJ ET q -1 0 0 1 273.205 706.328 cm +1 0 0 1 222.096 120.525 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 276.194 706.129 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ +/F84 9.9626 Tf 225.085 120.326 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ 0 g 0 G - [-829(.)-500(.)-500(.)-500(.)]TJ + [-859(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(24)]TJ 0 g 0 G +0 g 0 G + 45.216 -29.888 Td [(i)]TJ +0 g 0 G +ET + +endstream +endobj +783 0 obj +<< +/Length 15815 +>> +stream +0 g 0 G +0 g 0 G 0 0 1 rg 0 0 1 RG - -87.631 -12.08 Td [(3.2.18)-700(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ +BT +/F84 9.9626 Tf 188.563 706.129 Td [(3.2.18)-700(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ 0 g 0 G [-763(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1392,16 +1391,16 @@ BT [-1500(24)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.079 Td [(3.3)-1050(Dense)-250(V)111(ector)-250(Data)-250(Str)8(uctur)18(e)]TJ + -22.914 -12.08 Td [(3.3)-1050(Dense)-250(V)111(ector)-250(Data)-250(Str)8(uctur)18(e)]TJ 0 g 0 G [-491(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(24)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.08 Td [(3.3.1)-1200(V)111(ector)-250(Methods)]TJ + 22.914 -12.079 Td [(3.3.1)-1164(V)111(ector)-250(Methods)]TJ 0 g 0 G - [-535(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-571(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(25)]TJ 0 g 0 G @@ -1409,24 +1408,24 @@ BT 0 -12.08 Td [(3.3.2)-1200(get)]TJ ET q -1 0 0 1 234.6 645.93 cm +1 0 0 1 234.6 658.009 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 237.589 645.73 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(dense)-250(vector)]TJ +/F84 9.9626 Tf 237.589 657.81 Td [(nr)18(ows)-250(\227)-250(Get)-250(number)-250(of)-250(r)18(ows)-250(in)-250(a)-250(dense)-250(vector)]TJ 0 g 0 G [-690(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(25)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.079 Td [(3.3.3)-1200(sizeof)-226(\227)-227(Get)-226(memory)-227(occupation)-226(in)-226(bytes)-227(of)-226(a)-227(dense)-226(vector)]TJ + -49.026 -12.08 Td [(3.3.3)]TJ 0.99 0 0 1 220.443 645.73 Tm [(sizeof)-253(\227)-252(Get)-253(memory)-252(occupation)-253(in)-252(bytes)-253(of)-252(a)-253(dense)-252(vector)]TJ 0 g 0 G 0 g 0 G - [-550(25)]TJ + 1 0 0 1 484.453 645.73 Tm [(25)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.08 Td [(3.3.4)-1200(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ + -295.89 -12.079 Td [(3.3.4)-1200(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ 0 g 0 G [-461(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1436,25 +1435,25 @@ BT 0 -12.08 Td [(3.3.5)-1200(get)]TJ ET q -1 0 0 1 234.6 609.691 cm +1 0 0 1 234.6 621.77 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 237.589 609.491 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ +/F84 9.9626 Tf 237.589 621.571 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ 0 g 0 G [-770(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(27)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -49.026 -12.079 Td [(3.3.6)-1200(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ + -49.026 -12.08 Td [(3.3.6)-1200(clone)-250(\227)-250(Clone)-250(curr)18(ent)-250(object)]TJ 0 g 0 G [-763(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(27)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.08 Td [(3.4)-1050(Pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ + -22.914 -12.079 Td [(3.4)-1050(Pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 g 0 G [-741(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1468,467 +1467,481 @@ BT [-1500(28)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -22.125 Td [(4)-1000(Computational)-250(routines)]TJ +/F75 9.9626 Tf -14.944 -22.125 Td [(4)-1000(Computational)-250(routines)]TJ 0 g 0 G [-21085(29)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.08 Td [(4.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.08 Td [(4.1)-1020(psb)]TJ ET q -1 0 0 1 204.881 539.246 cm +1 0 0 1 204.583 551.326 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 539.047 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ +/F84 9.9626 Tf 207.571 551.127 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ 0 g 0 G - [-539(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-569(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(30)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.2)-1050(psb)]TJ + -41.922 -12.08 Td [(4.2)-1020(psb)]TJ ET q -1 0 0 1 204.881 527.167 cm +1 0 0 1 204.583 539.246 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 526.967 Td [(gedot)-250(\227)-250(Dot)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 539.047 Td [(gedot)-250(\227)-250(Dot)-250(Pr)18(oduct)]TJ 0 g 0 G - [-837(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-867(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(32)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.3)-1050(psb)]TJ + -41.922 -12.08 Td [(4.3)-1020(psb)]TJ ET q -1 0 0 1 204.881 515.087 cm +1 0 0 1 204.583 527.167 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 514.888 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 526.967 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Pr)18(oduct)]TJ 0 g 0 G - [-793(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(34)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.4)-1050(psb)]TJ + -41.922 -12.079 Td [(4.4)-1020(psb)]TJ ET q -1 0 0 1 204.881 503.007 cm +1 0 0 1 204.583 515.087 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 502.808 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 514.888 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-868(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-898(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(36)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.5)-1050(psb)]TJ + -41.922 -12.08 Td [(4.5)-1020(psb)]TJ ET q -1 0 0 1 204.881 490.928 cm +1 0 0 1 204.583 503.007 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 490.728 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ +/F84 9.9626 Tf 207.571 502.808 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ 0 g 0 G - [-600(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-630(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(38)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.6)-1050(psb)]TJ + -41.922 -12.08 Td [(4.6)-1020(psb)]TJ ET q -1 0 0 1 204.881 478.848 cm +1 0 0 1 204.583 490.928 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 478.649 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 490.728 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-438(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(39)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.7)-1050(psb)]TJ + -41.922 -12.079 Td [(4.7)-1020(psb)]TJ ET q -1 0 0 1 204.881 466.768 cm +1 0 0 1 204.583 478.848 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 466.569 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 478.649 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-605(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(41)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.8)-1050(psb)]TJ + -41.922 -12.08 Td [(4.8)-1020(psb)]TJ ET q -1 0 0 1 204.881 454.688 cm +1 0 0 1 204.583 466.768 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 454.489 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 466.569 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-438(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(43)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.9)-1050(psb)]TJ + -41.922 -12.08 Td [(4.9)-1020(psb)]TJ ET q -1 0 0 1 204.881 442.609 cm +1 0 0 1 204.583 454.688 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 442.409 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ +/F84 9.9626 Tf 207.571 454.489 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ 0 g 0 G - [-655(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-685(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(45)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.10)-550(psb)]TJ + -41.922 -12.08 Td [(4.10)-520(psb)]TJ ET q -1 0 0 1 204.881 430.529 cm +1 0 0 1 204.583 442.609 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 430.33 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 442.409 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ 0 g 0 G - [-841(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-871(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(46)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.11)-550(psb)]TJ + -41.922 -12.079 Td [(4.11)-520(psb)]TJ ET q -1 0 0 1 204.881 418.449 cm +1 0 0 1 204.583 430.529 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 418.25 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 430.33 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ 0 g 0 G - [-604(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-634(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(47)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.12)-550(psb)]TJ + -41.922 -12.08 Td [(4.12)-520(psb)]TJ ET q -1 0 0 1 204.881 406.37 cm +1 0 0 1 204.583 418.449 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 406.17 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 418.25 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct)]TJ 0 g 0 G - [-491(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-521(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(48)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.13)-550(psb)]TJ + -41.922 -12.08 Td [(4.13)-520(psb)]TJ ET q -1 0 0 1 204.881 394.29 cm +1 0 0 1 204.583 406.37 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 394.091 Td [(spsm)-250(\227)-250(T)90(riangular)-250(System)-250(Solve)]TJ +/F84 9.9626 Tf 207.571 406.17 Td [(spsm)-250(\227)-250(T)90(riangular)-250(System)-250(Solve)]TJ 0 g 0 G - [-945(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-975(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(50)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.14)-550(psb)]TJ + -41.922 -12.079 Td [(4.14)-520(psb)]TJ ET q -1 0 0 1 204.881 382.21 cm +1 0 0 1 204.583 394.29 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 382.011 Td [(gemlt)-250(\227)-250(Entrywise)-250(Pr)18(oduct)]TJ +/F84 9.9626 Tf 207.571 394.091 Td [(gemlt)-250(\227)-250(Entrywise)-250(Pr)18(oduct)]TJ 0 g 0 G - [-968(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-998(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(53)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(4.15)-550(psb)]TJ + -41.922 -12.08 Td [(4.15)-520(psb)]TJ ET q -1 0 0 1 204.881 370.131 cm +1 0 0 1 204.583 382.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 369.931 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ +/F84 9.9626 Tf 207.571 382.011 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ 0 g 0 G - [-748(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-778(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(55)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(4.16)-550(psb)]TJ + -41.922 -12.08 Td [(4.16)-520(psb)]TJ ET q -1 0 0 1 204.881 358.051 cm +1 0 0 1 204.583 370.131 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 357.852 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ +/F84 9.9626 Tf 207.571 369.931 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ 0 g 0 G - [-340(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-370(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(57)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.165 -22.126 Td [(5)-1000(Communication)-250(routines)]TJ +/F75 9.9626 Tf -56.866 -22.125 Td [(5)-1000(Communication)-250(routines)]TJ 0 g 0 G [-20585(58)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.079 Td [(5.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.08 Td [(5.1)-1020(psb)]TJ ET q -1 0 0 1 204.881 323.846 cm +1 0 0 1 204.583 335.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 323.647 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ +/F84 9.9626 Tf 207.571 335.726 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ 0 g 0 G - [-888(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-918(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(59)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(5.2)-1050(psb)]TJ + -41.922 -12.08 Td [(5.2)-1020(psb)]TJ ET q -1 0 0 1 204.881 311.766 cm +1 0 0 1 204.583 323.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 311.567 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ +/F84 9.9626 Tf 207.571 323.647 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ 0 g 0 G - [-553(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-583(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(62)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(5.3)-1050(psb)]TJ + -41.922 -12.08 Td [(5.3)-1020(psb)]TJ ET q -1 0 0 1 204.881 299.686 cm +1 0 0 1 204.583 311.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 299.487 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 311.567 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ 0 g 0 G - [-973(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-253(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(66)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(5.4)-1050(psb)]TJ + -41.922 -12.08 Td [(5.4)-1020(psb)]TJ ET q -1 0 0 1 204.881 287.607 cm +1 0 0 1 204.583 299.686 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 287.407 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ +/F84 9.9626 Tf 207.571 299.487 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ 0 g 0 G - [-967(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-997(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(68)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.165 -22.125 Td [(6)-1000(Data)-250(management)-250(routines)]TJ +/F75 9.9626 Tf -56.866 -22.125 Td [(6)-1000(Data)-250(management)-250(routines)]TJ 0 g 0 G [-19668(70)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.08 Td [(6.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.08 Td [(6.1)-1020(psb)]TJ ET q -1 0 0 1 204.881 253.402 cm +1 0 0 1 204.583 265.481 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 253.202 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 265.282 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-363(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-393(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(70)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.2)-1050(psb)]TJ + -41.922 -12.08 Td [(6.2)-1020(psb)]TJ ET q -1 0 0 1 204.881 241.322 cm +1 0 0 1 204.583 253.402 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 241.123 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(r)18(outine)]TJ +/F84 9.9626 Tf 207.571 253.202 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(r)18(outine)]TJ 0 g 0 G - [-261(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-291(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(74)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.3)-1050(psb)]TJ + -41.922 -12.079 Td [(6.3)-1020(psb)]TJ ET q -1 0 0 1 204.881 229.242 cm +1 0 0 1 204.583 241.322 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 229.043 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(r)18(outine)]TJ +/F84 9.9626 Tf 207.571 241.123 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(r)18(outine)]TJ 0 g 0 G - [-718(.)-500(.)-500(.)]TJ + [-748(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(76)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.4)-1050(psb)]TJ + -41.922 -12.08 Td [(6.4)-1020(psb)]TJ ET q -1 0 0 1 204.881 217.163 cm +1 0 0 1 204.583 229.242 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 216.963 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 229.043 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-873(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-903(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(77)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.5)-1050(psb)]TJ + -41.922 -12.08 Td [(6.5)-1020(psb)]TJ ET q -1 0 0 1 204.881 205.083 cm +1 0 0 1 204.583 217.163 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 204.884 Td [(cdfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 216.963 Td [(cdfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-791(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-821(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(78)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.6)-1050(psb)]TJ + -41.922 -12.079 Td [(6.6)-1020(psb)]TJ ET q -1 0 0 1 204.881 193.003 cm +1 0 0 1 204.583 205.083 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 192.804 Td [(cdbldext)-250(\227)-250(Build)-250(an)-250(extended)-250(communication)-250(descriptor)]TJ +/F84 9.9626 Tf 207.571 204.884 Td [(cdbldext)-250(\227)-250(Build)-250(an)-250(extended)-250(communication)-250(descriptor)]TJ 0 g 0 G - [-676(.)]TJ + [-706(.)]TJ 0 g 0 G [-1500(79)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.7)-1050(psb)]TJ + -41.922 -12.08 Td [(6.7)-1020(psb)]TJ ET q -1 0 0 1 204.881 180.923 cm +1 0 0 1 204.583 193.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 180.724 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 192.804 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-842(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-872(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(81)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.8)-1050(psb)]TJ + -41.922 -12.08 Td [(6.8)-1020(psb)]TJ ET q -1 0 0 1 204.881 168.844 cm +1 0 0 1 204.583 180.923 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 168.644 Td [(spins)-250(\227)-250(Insert)-250(a)-250(set)-250(of)-250(coef)18(\002cients)-250(into)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 180.724 Td [(spins)-250(\227)-250(Insert)-250(a)-250(set)-250(of)-250(coef)18(\002cients)-250(into)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-625(.)-500(.)-500(.)]TJ + [-655(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(83)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.9)-1050(psb)]TJ + -41.922 -12.08 Td [(6.9)-1020(psb)]TJ ET q -1 0 0 1 204.881 156.764 cm +1 0 0 1 204.583 168.844 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 156.565 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(r)18(outine)]TJ +/F84 9.9626 Tf 207.571 168.644 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(r)18(outine)]TJ 0 g 0 G - [-611(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-641(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(86)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.10)-550(psb)]TJ + -41.922 -12.079 Td [(6.10)-520(psb)]TJ ET q -1 0 0 1 204.881 144.684 cm +1 0 0 1 204.583 156.764 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 144.485 Td [(spfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 156.565 Td [(spfr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-520(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-550(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(88)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.08 Td [(6.11)-550(psb)]TJ + -41.922 -12.08 Td [(6.11)-520(psb)]TJ ET q -1 0 0 1 204.881 132.605 cm +1 0 0 1 204.583 144.684 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 132.405 Td [(sprn)-250(\227)-250(Reinit)-250(sparse)-250(matrix)-250(str)8(uctur)18(e)-250(for)-250(psblas)-250(r)18(outines.)]TJ +/F84 9.9626 Tf 207.571 144.485 Td [(sprn)-250(\227)-250(Reinit)-250(sparse)-250(matrix)-250(str)8(uctur)18(e)-250(for)-250(psblas)-250(r)18(outines.)]TJ 0 g 0 G - [-725(.)]TJ + [-755(.)]TJ 0 g 0 G [-1500(89)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.221 -12.079 Td [(6.12)-550(psb)]TJ + -41.922 -12.08 Td [(6.12)-520(psb)]TJ ET q -1 0 0 1 204.881 120.525 cm +1 0 0 1 204.583 132.605 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 120.326 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 207.571 132.405 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-330(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-360(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(90)]TJ 0 g 0 G +0 0 1 rg 0 0 1 RG + -41.922 -12.079 Td [(6.13)-520(psb)]TJ +ET +q +1 0 0 1 204.583 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 207.571 120.326 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(r)18(outine)]TJ +0 g 0 G + [-441(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1500(92)]TJ +0 g 0 G 0 g 0 G - 111.791 -29.888 Td [(ii)]TJ + 112.09 -29.888 Td [(ii)]TJ 0 g 0 G ET @@ -1938,1365 +1951,1326 @@ endobj << /Type /ObjStm /N 100 -/First 904 -/Length 14415 ->> -stream -604 0 608 43 609 137 612 180 613 304 616 347 617 491 620 535 621 654 624 698 -625 817 628 861 629 995 632 1039 633 1153 636 1197 637 1346 640 1390 641 1539 644 1583 -645 1752 648 1796 649 1945 652 1989 653 2133 656 2177 657 2346 658 2391 660 2520 663 2626 -664 2682 3 2738 661 2792 671 2921 673 3035 670 3092 717 3159 674 3653 675 3799 676 3945 -677 4097 678 4249 679 4401 680 4556 681 4708 682 4851 683 5003 684 5160 685 5317 686 5474 -687 5629 688 5786 689 5943 690 6100 691 6257 692 6410 721 6568 693 6723 722 6881 694 7038 -695 7196 696 7354 697 7512 698 7670 699 7821 700 7978 701 8134 702 8291 723 8448 703 8604 -724 8761 704 8916 725 9073 705 9229 706 9386 707 9543 708 9700 709 9858 710 10014 711 10172 -712 10330 713 10488 714 10646 719 10801 720 10857 716 10913 774 10993 715 11495 726 11653 727 11811 -728 11969 729 12120 730 12277 731 12434 732 12590 733 12747 734 12904 735 13061 736 13213 737 13365 +/First 903 +/Length 14167 +>> +stream +604 0 608 43 609 215 612 258 613 352 616 395 617 489 620 532 621 656 624 699 +625 843 628 887 629 1006 632 1050 633 1169 636 1213 637 1347 640 1391 641 1505 644 1549 +645 1698 648 1742 649 1891 652 1935 653 2104 656 2148 657 2297 660 2341 661 2485 664 2529 +665 2698 666 2743 668 2872 671 2978 672 3034 3 3090 669 3144 679 3273 681 3387 678 3444 +726 3511 682 4005 683 4151 684 4297 685 4449 686 4601 687 4753 688 4908 689 5060 690 5206 +691 5358 692 5515 693 5672 694 5829 695 5984 696 6141 697 6298 698 6455 699 6612 700 6769 +730 6927 701 7084 731 7242 702 7394 703 7552 704 7710 705 7868 706 8026 707 8178 708 8335 +709 8490 710 8647 732 8804 711 8960 733 9117 712 9273 713 9430 714 9587 715 9744 716 9901 +717 10058 718 10216 719 10374 720 10532 721 10690 722 10848 723 11005 728 11161 729 11217 725 11273 +782 11353 724 11855 734 12013 735 12171 736 12323 737 12479 738 12636 739 12793 740 12950 741 13107 % 604 0 obj -<< /S /GoTo /D (section*.7) >> +<< /S /GoTo /D (section.13) >> % 608 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000e\000x\000i\000t) +(\376\377\0001\0003\000\040\000C\000U\000D\000A\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000R\000o\000u\000t\000i\000n\000e\000s) % 609 0 obj -<< /S /GoTo /D (section*.8) >> +<< /S /GoTo /D (section*.6) >> % 612 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000S\000y\000n\000c) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000i\000n\000i\000t) % 613 0 obj -<< /S /GoTo /D (section*.9) >> +<< /S /GoTo /D (section*.7) >> % 616 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e\000C\000o\000u\000n\000t) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000e\000x\000i\000t) % 617 0 obj -<< /S /GoTo /D (section*.10) >> +<< /S /GoTo /D (section*.8) >> % 620 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000S\000y\000n\000c) % 621 0 obj -<< /S /GoTo /D (section*.11) >> +<< /S /GoTo /D (section*.9) >> % 624 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000s\000e\000t\000D\000e\000v\000i\000c\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e\000C\000o\000u\000n\000t) % 625 0 obj -<< /S /GoTo /D (section*.12) >> +<< /S /GoTo /D (section*.10) >> % 628 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000H\000a\000s\000U\000V\000A) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000g\000e\000t\000D\000e\000v\000i\000c\000e) % 629 0 obj -<< /S /GoTo /D (section*.13) >> +<< /S /GoTo /D (section*.11) >> % 632 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000W\000a\000r\000p\000S\000i\000z\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000s\000e\000t\000D\000e\000v\000i\000c\000e) % 633 0 obj -<< /S /GoTo /D (section*.14) >> +<< /S /GoTo /D (section*.12) >> % 636 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000u\000l\000t\000i\000P\000r\000o\000c\000e\000s\000s\000o\000r\000s) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000D\000e\000v\000i\000c\000e\000H\000a\000s\000U\000V\000A) % 637 0 obj -<< /S /GoTo /D (section*.15) >> +<< /S /GoTo /D (section*.13) >> % 640 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000T\000h\000r\000e\000a\000d\000s\000P\000e\000r\000M\000P) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000W\000a\000r\000p\000S\000i\000z\000e) % 641 0 obj -<< /S /GoTo /D (section*.16) >> +<< /S /GoTo /D (section*.14) >> % 644 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000R\000e\000g\000i\000s\000t\000e\000r\000P\000e\000r\000B\000l\000o\000c\000k) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000u\000l\000t\000i\000P\000r\000o\000c\000e\000s\000s\000o\000r\000s) % 645 0 obj -<< /S /GoTo /D (section*.17) >> +<< /S /GoTo /D (section*.15) >> % 648 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000C\000l\000o\000c\000k\000R\000a\000t\000e) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000T\000h\000r\000e\000a\000d\000s\000P\000e\000r\000M\000P) % 649 0 obj -<< /S /GoTo /D (section*.18) >> +<< /S /GoTo /D (section*.16) >> % 652 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000B\000u\000s\000W\000i\000d\000t\000h) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000a\000x\000R\000e\000g\000i\000s\000t\000e\000r\000P\000e\000r\000B\000l\000o\000c\000k) % 653 0 obj -<< /S /GoTo /D (section*.19) >> +<< /S /GoTo /D (section*.17) >> % 656 0 obj -(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000P\000e\000a\000k\000B\000a\000n\000d\000w\000i\000d\000t\000h) +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000C\000l\000o\000c\000k\000R\000a\000t\000e) % 657 0 obj -<< /S /GoTo /D [658 0 R /Fit] >> -% 658 0 obj +<< /S /GoTo /D (section*.18) >> +% 660 0 obj +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000B\000u\000s\000W\000i\000d\000t\000h) +% 661 0 obj +<< /S /GoTo /D (section*.19) >> +% 664 0 obj +(\376\377\000p\000s\000b\000\137\000c\000u\000d\000a\000\137\000M\000e\000m\000o\000r\000y\000P\000e\000a\000k\000B\000a\000n\000d\000w\000i\000d\000t\000h) +% 665 0 obj +<< /S /GoTo /D [666 0 R /Fit] >> +% 666 0 obj << /Type /Page -/Contents 662 0 R -/Resources 661 0 R +/Contents 670 0 R +/Resources 669 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Group 660 0 R +/Parent 676 0 R +/Group 668 0 R >> -% 660 0 obj +% 668 0 obj %PTEX Group needed for transparent pngs <> -% 663 0 obj +% 671 0 obj << -/D [658 0 R /XYZ 98.895 753.953 null] +/D [666 0 R /XYZ 98.895 753.953 null] >> -% 664 0 obj +% 672 0 obj << -/D [658 0 R /XYZ 99.895 716.092 null] +/D [666 0 R /XYZ 99.895 716.092 null] >> % 3 0 obj << -/D [658 0 R /XYZ 99.895 716.092 null] +/D [666 0 R /XYZ 99.895 716.092 null] >> -% 661 0 obj +% 669 0 obj << -/Font << /F59 665 0 R /F60 666 0 R /F62 667 0 R >> -/XObject << /Im1 659 0 R >> +/Font << /F75 673 0 R /F78 674 0 R /F84 675 0 R >> +/XObject << /Im1 667 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> -% 671 0 obj +% 679 0 obj << /Type /Page -/Contents 672 0 R -/Resources 670 0 R +/Contents 680 0 R +/Resources 678 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R +/Parent 676 0 R >> -% 673 0 obj +% 681 0 obj << -/D [671 0 R /XYZ 149.705 753.953 null] +/D [679 0 R /XYZ 149.705 753.953 null] >> -% 670 0 obj +% 678 0 obj << -/Font << /F62 667 0 R >> +/Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 717 0 obj +% 726 0 obj << /Type /Page -/Contents 718 0 R -/Resources 716 0 R +/Contents 727 0 R +/Resources 725 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 721 0 R 693 0 R 722 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 723 0 R 703 0 R 724 0 R 704 0 R 725 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R ] +/Parent 676 0 R +/Annots [ 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 730 0 R 701 0 R 731 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 732 0 R 711 0 R 733 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R ] >> -% 674 0 obj +% 682 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 681.973 173.389 691.303] +/Rect [98.899 681.977 173.389 691.307] /A << /S /GoTo /D (section.1) >> >> -% 675 0 obj +% 683 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 659.857 196.921 669.187] +/Rect [98.899 659.866 196.921 669.196] /A << /S /GoTo /D (section.2) >> >> -% 676 0 obj +% 684 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 647.803 227.028 657.212] +/Rect [113.843 647.814 227.028 657.224] /A << /S /GoTo /D (subsection.2.1) >> >> -% 677 0 obj +% 685 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 633.079 211.078 645.138] +/Rect [113.843 633.093 211.078 645.152] /A << /S /GoTo /D (subsection.2.2) >> >> -% 678 0 obj +% 686 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 621.004 233.094 633.064] +/Rect [113.843 621.021 232.706 633.081] /A << /S /GoTo /D (subsection.2.3) >> >> -% 679 0 obj +% 687 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 608.93 301.886 620.99] +/Rect [136.757 608.95 301.886 621.01] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 680 0 obj +% 688 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 596.856 230.734 608.916] +/Rect [113.843 596.879 230.734 608.938] /A << /S /GoTo /D (subsection.2.4) >> >> -% 681 0 obj +% 689 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 577.37 242.261 586.7] +/Rect [98.899 577.397 242.261 586.727] /A << /S /GoTo /D (section.3) >> >> -% 682 0 obj +% 690 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 562.666 249.144 574.726] +/Rect [113.843 562.696 249.144 574.755] /A << /S /GoTo /D (subsection.3.1) >> >> -% 683 0 obj +% 691 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 550.592 258.689 562.652] +/Rect [136.757 550.624 258.689 562.684] /A << /S /GoTo /D (subsubsection.3.1.1) >> >> -% 684 0 obj +% 692 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 538.518 360.207 550.578] +/Rect [136.757 538.553 360.207 550.613] /A << /S /GoTo /D (subsubsection.3.1.2) >> >> -% 685 0 obj +% 693 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 526.444 350.723 538.504] +/Rect [136.757 526.482 350.723 538.541] /A << /S /GoTo /D (subsubsection.3.1.3) >> >> -% 686 0 obj +% 694 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 514.37 373.457 526.43] +/Rect [136.757 514.41 373.457 526.47] /A << /S /GoTo /D (subsubsection.3.1.4) >> >> -% 687 0 obj +% 695 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 502.296 363.973 514.355] +/Rect [136.757 502.339 363.973 514.399] /A << /S /GoTo /D (subsubsection.3.1.5) >> >> -% 688 0 obj +% 696 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 490.222 384.834 502.281] +/Rect [136.757 490.268 384.834 502.327] /A << /S /GoTo /D (subsubsection.3.1.6) >> >> -% 689 0 obj +% 697 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 478.148 356.411 490.013] +/Rect [136.757 478.196 356.411 490.062] /A << /S /GoTo /D (subsubsection.3.1.7) >> >> -% 690 0 obj +% 698 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 466.074 297.523 478.133] +/Rect [136.757 466.125 297.523 478.185] /A << /S /GoTo /D (subsubsection.3.1.8) >> >> -% 691 0 obj +% 699 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 454 345.014 466.059] +/Rect [136.757 454.054 345.014 466.113] /A << /S /GoTo /D (subsubsection.3.1.9) >> >> -% 692 0 obj +% 700 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 441.925 444.603 453.985] +/Rect [136.757 441.982 444.603 454.042] /A << /S /GoTo /D (subsubsection.3.1.10) >> >> -% 721 0 obj +% 730 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 429.97 222.246 442.03] +/Rect [98.899 430.027 242.012 442.087] /A << /S /GoTo /D (subsubsection.3.1.10) >> >> -% 693 0 obj +% 701 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 417.896 444.603 429.956] +/Rect [136.757 417.956 444.603 430.015] /A << /S /GoTo /D (subsubsection.3.1.11) >> >> -% 722 0 obj +% 731 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 405.941 222.246 418.001] +/Rect [98.899 406 221.947 418.06] /A << /S /GoTo /D (subsubsection.3.1.11) >> >> -% 694 0 obj +% 702 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 393.867 358.404 405.927] +/Rect [136.757 393.929 358.404 405.989] /A << /S /GoTo /D (subsubsection.3.1.12) >> >> -% 695 0 obj +% 703 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 381.793 354.718 393.853] +/Rect [136.757 381.858 354.718 393.917] /A << /S /GoTo /D (subsubsection.3.1.13) >> >> -% 696 0 obj +% 704 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 369.719 413.607 381.778] +/Rect [136.757 369.786 413.607 381.846] /A << /S /GoTo /D (subsubsection.3.1.14) >> >> -% 697 0 obj +% 705 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 360.295 250.062 369.704] +/Rect [136.757 360.365 250.062 369.775] /A << /S /GoTo /D (subsubsection.3.1.15) >> >> -% 698 0 obj +% 706 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 345.571 223.242 357.63] +/Rect [113.843 345.644 223.242 357.703] /A << /S /GoTo /D (subsection.3.2) >> >> -% 699 0 obj +% 707 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 333.497 273.364 345.556] +/Rect [136.757 333.572 273.364 345.632] /A << /S /GoTo /D (subsubsection.3.2.1) >> >> -% 700 0 obj +% 708 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 321.423 399.41 333.482] +/Rect [136.757 321.501 399.41 333.56] /A << /S /GoTo /D (subsubsection.3.2.2) >> >> -% 701 0 obj +% 709 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 309.348 410.528 321.408] +/Rect [136.757 309.429 410.528 321.489] /A << /S /GoTo /D (subsubsection.3.2.3) >> >> -% 702 0 obj +% 710 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 297.274 444.603 309.334] +/Rect [136.757 297.358 444.603 309.418] /A << /S /GoTo /D (subsubsection.3.2.4) >> >> -% 723 0 obj +% 732 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 287.969 199.631 297.075] +/Rect [98.899 285.403 230.246 297.159] /A << /S /GoTo /D (subsubsection.3.2.4) >> >> -% 703 0 obj +% 711 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 273.245 444.603 285.305] +/Rect [136.757 273.332 444.603 285.391] /A << /S /GoTo /D (subsubsection.3.2.5) >> >> -% 724 0 obj +% 733 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 261.29 248.906 273.046] +/Rect [98.899 261.376 237.718 273.132] /A << /S /GoTo /D (subsubsection.3.2.5) >> >> -% 704 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 249.216 444.603 261.276] -/A << /S /GoTo /D (subsubsection.3.2.6) >> ->> -% 725 0 obj +% 712 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 239.911 185.853 249.016] +/Rect [136.757 249.305 429.161 261.365] /A << /S /GoTo /D (subsubsection.3.2.6) >> >> -% 705 0 obj +% 713 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 225.187 384.545 237.246] +/Rect [136.757 237.234 384.545 249.293] /A << /S /GoTo /D (subsubsection.3.2.7) >> >> -% 706 0 obj +% 714 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 213.113 329.343 225.172] +/Rect [136.757 225.162 329.343 237.222] /A << /S /GoTo /D (subsubsection.3.2.8) >> >> -% 707 0 obj +% 715 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 201.038 405.337 213.098] +/Rect [136.757 213.091 405.337 225.151] /A << /S /GoTo /D (subsubsection.3.2.9) >> >> -% 708 0 obj +% 716 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 188.964 371.724 201.024] +/Rect [136.757 201.02 371.724 213.079] /A << /S /GoTo /D (subsubsection.3.2.10) >> >> -% 709 0 obj +% 717 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 176.89 309.029 188.95] +/Rect [136.757 188.948 309.029 201.008] /A << /S /GoTo /D (subsubsection.3.2.11) >> >> -% 710 0 obj +% 718 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 167.466 350.683 176.876] +/Rect [136.757 179.527 350.683 188.936] /A << /S /GoTo /D (subsubsection.3.2.12) >> >> -% 711 0 obj +% 719 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 152.742 303.929 164.802] +/Rect [136.757 164.805 303.929 176.865] /A << /S /GoTo /D (subsubsection.3.2.13) >> >> -% 712 0 obj +% 720 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 140.668 324.462 152.728] +/Rect [136.757 152.734 324.462 164.794] /A << /S /GoTo /D (subsubsection.3.2.14) >> >> -% 713 0 obj +% 721 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 128.594 309.687 140.654] +/Rect [136.757 140.663 309.687 152.722] /A << /S /GoTo /D (subsubsection.3.2.15) >> >> -% 714 0 obj +% 722 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 116.52 314.13 128.58] +/Rect [136.757 128.591 314.13 140.651] /A << /S /GoTo /D (subsubsection.3.2.16) >> >> -% 719 0 obj +% 723 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.757 116.52 386.229 128.58] +/A << /S /GoTo /D (subsubsection.3.2.17) >> +>> +% 728 0 obj << -/D [717 0 R /XYZ 98.895 753.953 null] +/D [726 0 R /XYZ 98.895 753.953 null] >> -% 720 0 obj +% 729 0 obj << -/D [717 0 R /XYZ 99.895 723.975 null] +/D [726 0 R /XYZ 99.895 723.975 null] >> -% 716 0 obj +% 725 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 774 0 obj +% 782 0 obj << /Type /Page -/Contents 775 0 R -/Resources 773 0 R +/Contents 783 0 R +/Resources 781 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 715 0 R 726 0 R 727 0 R 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R ] +/Parent 676 0 R +/Annots [ 724 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R 778 0 R 779 0 R ] >> -% 715 0 obj +% 724 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 702.323 437.338 714.383] -/A << /S /GoTo /D (subsubsection.3.2.17) >> +/Rect [187.567 702.323 348.332 714.383] +/A << /S /GoTo /D (subsubsection.3.2.18) >> >> -% 726 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 690.243 348.332 702.303] -/A << /S /GoTo /D (subsubsection.3.2.18) >> ->> -% 727 0 obj +% 734 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 680.814 300.871 690.223] +/Rect [187.567 692.894 300.871 702.303] /A << /S /GoTo /D (subsubsection.3.2.19) >> >> -% 728 0 obj +% 735 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 668.734 313.682 677.95] +/Rect [164.653 680.814 313.682 690.029] /A << /S /GoTo /D (subsection.3.3) >> >> -% 729 0 obj +% 736 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 656.654 290.829 666.064] +/Rect [187.567 668.734 290.47 678.144] /A << /S /GoTo /D (subsubsection.3.3.1) >> >> -% 730 0 obj +% 737 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 641.925 446.194 653.984] +/Rect [187.567 654.004 446.194 666.064] /A << /S /GoTo /D (subsubsection.3.3.2) >> >> -% 731 0 obj +% 738 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 629.845 479.97 641.905] +/Rect [187.567 641.925 479.958 653.984] /A << /S /GoTo /D (subsubsection.3.3.3) >> >> -% 732 0 obj +% 739 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 620.415 358.813 629.825] +/Rect [187.567 632.495 358.813 641.905] /A << /S /GoTo /D (subsubsection.3.3.4) >> >> -% 733 0 obj +% 740 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 605.686 415.509 617.745] +/Rect [187.567 617.765 415.509 629.825] /A << /S /GoTo /D (subsubsection.3.3.5) >> >> -% 734 0 obj +% 741 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.567 593.606 348.332 605.666] +/Rect [187.567 605.686 348.332 617.745] /A << /S /GoTo /D (subsubsection.3.3.6) >> >> -% 735 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 584.176 318.663 593.586] -/A << /S /GoTo /D (subsection.3.4) >> ->> -% 736 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 569.446 277.409 581.506] -/A << /S /GoTo /D (subsection.3.5) >> ->> -% 737 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 547.56 275.386 559.281] -/A << /S /GoTo /D (section.4) >> ->> endstream endobj -822 0 obj +830 0 obj << -/Length 18214 +/Length 18648 >> stream 0 g 0 G 0 g 0 G 0 0 1 rg 0 0 1 RG BT -/F62 9.9626 Tf 114.839 706.129 Td [(6.13)-550(psb)]TJ -ET -q -1 0 0 1 154.072 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 157.061 706.129 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(r)18(outine)]TJ -0 g 0 G - [-411(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1500(92)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(6.14)-550(psb)]TJ +/F84 9.9626 Tf 114.839 706.129 Td [(6.14)-520(psb)]TJ ET q -1 0 0 1 154.072 694.234 cm +1 0 0 1 153.773 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 694.035 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 156.762 706.129 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-376(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-406(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(94)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(6.15)-550(psb)]TJ + -41.923 -12.094 Td [(6.15)-520(psb)]TJ ET q -1 0 0 1 154.072 682.14 cm +1 0 0 1 153.773 694.234 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 681.941 Td [(gefr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 156.762 694.035 Td [(gefr)18(ee)-250(\227)-250(Fr)18(ees)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-758(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-788(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(95)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(6.16)-550(psb)]TJ + -41.923 -12.094 Td [(6.16)-520(psb)]TJ ET q -1 0 0 1 154.072 670.046 cm +1 0 0 1 153.773 682.14 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 669.846 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ +/F84 9.9626 Tf 156.762 681.941 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G - [-801(.)-500(.)-500(.)-500(.)]TJ + [-831(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(96)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(6.17)-550(psb)]TJ + -41.923 -12.095 Td [(6.17)-520(psb)]TJ ET q -1 0 0 1 154.072 657.951 cm +1 0 0 1 153.773 670.046 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 657.752 Td [(glob)]TJ +/F84 9.9626 Tf 156.762 669.846 Td [(glob)]TJ ET q -1 0 0 1 177.046 657.951 cm +1 0 0 1 176.747 670.046 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 180.034 657.752 Td [(to)]TJ +/F84 9.9626 Tf 179.735 669.846 Td [(to)]TJ ET q -1 0 0 1 189.319 657.951 cm +1 0 0 1 189.02 670.046 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 192.308 657.752 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ +/F84 9.9626 Tf 192.009 669.846 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ 0 g 0 G - [-427(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-457(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(97)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -77.469 -12.094 Td [(6.18)-550(psb)]TJ + -77.17 -12.094 Td [(6.18)-520(psb)]TJ ET q -1 0 0 1 154.072 645.857 cm +1 0 0 1 153.773 657.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 645.658 Td [(loc)]TJ +/F84 9.9626 Tf 156.762 657.752 Td [(loc)]TJ ET q -1 0 0 1 170.42 645.857 cm +1 0 0 1 170.122 657.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 173.409 645.658 Td [(to)]TJ +/F84 9.9626 Tf 173.11 657.752 Td [(to)]TJ ET q -1 0 0 1 182.694 645.857 cm +1 0 0 1 182.395 657.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 185.683 645.658 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ +/F84 9.9626 Tf 185.384 657.752 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ 0 g 0 G - [-966(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-996(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1500(99)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -70.844 -12.094 Td [(6.19)-550(psb)]TJ + -70.545 -12.094 Td [(6.19)-520(psb)]TJ ET q -1 0 0 1 154.072 633.763 cm +1 0 0 1 153.773 645.857 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 633.564 Td [(is)]TJ +/F84 9.9626 Tf 156.762 645.658 Td [(is)]TJ ET q -1 0 0 1 164.782 633.763 cm +1 0 0 1 164.483 645.857 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 167.771 633.564 Td [(owned)-250(\227)]TJ +/F84 9.9626 Tf 167.472 645.658 Td [(owned)-250(\227)]TJ 0 g 0 G - [-1135(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-1165(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(100)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -52.932 -12.094 Td [(6.20)-550(psb)]TJ + -52.633 -12.094 Td [(6.20)-520(psb)]TJ ET q -1 0 0 1 154.072 621.669 cm +1 0 0 1 153.773 633.763 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 621.47 Td [(owned)]TJ +/F84 9.9626 Tf 156.762 633.564 Td [(owned)]TJ ET q -1 0 0 1 188.064 621.669 cm +1 0 0 1 187.765 633.763 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 191.053 621.47 Td [(index)-250(\227)]TJ +/F84 9.9626 Tf 190.754 633.564 Td [(index)-250(\227)]TJ 0 g 0 G - [-871(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-901(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(101)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -76.214 -12.095 Td [(6.21)-550(psb)]TJ + -75.915 -12.094 Td [(6.21)-520(psb)]TJ ET q -1 0 0 1 154.072 609.575 cm +1 0 0 1 153.773 621.669 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 609.375 Td [(is)]TJ +/F84 9.9626 Tf 156.762 621.47 Td [(is)]TJ ET q -1 0 0 1 164.782 609.575 cm +1 0 0 1 164.483 621.669 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 167.771 609.375 Td [(local)-250(\227)]TJ +/F84 9.9626 Tf 167.472 621.47 Td [(local)-250(\227)]TJ 0 g 0 G - [-615(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-645(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(102)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -52.932 -12.094 Td [(6.22)-550(psb)]TJ + -52.633 -12.095 Td [(6.22)-520(psb)]TJ ET q -1 0 0 1 154.072 597.481 cm +1 0 0 1 153.773 609.575 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 597.281 Td [(local)]TJ +/F84 9.9626 Tf 156.762 609.375 Td [(local)]TJ ET q -1 0 0 1 178.301 597.481 cm +1 0 0 1 178.002 609.575 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 181.29 597.281 Td [(index)-250(\227)]TJ +/F84 9.9626 Tf 180.991 609.375 Td [(index)-250(\227)]TJ 0 g 0 G - [-1101(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-1131(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(103)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -66.451 -12.094 Td [(6.23)-550(psb)]TJ + -66.152 -12.094 Td [(6.23)-520(psb)]TJ ET q -1 0 0 1 154.072 585.386 cm +1 0 0 1 153.773 597.481 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 585.187 Td [(get)]TJ +/F84 9.9626 Tf 156.762 597.281 Td [(get)]TJ ET q -1 0 0 1 171.217 585.386 cm +1 0 0 1 170.919 597.481 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 585.187 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ +/F84 9.9626 Tf 173.907 597.281 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ 0 g 0 G - [-827(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-857(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(104)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -59.367 -12.094 Td [(6.24)-550(psb)]TJ + -59.068 -12.094 Td [(6.24)-520(psb)]TJ ET q -1 0 0 1 154.072 573.292 cm +1 0 0 1 153.773 585.386 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 573.093 Td [(get)]TJ +/F84 9.9626 Tf 156.762 585.187 Td [(get)]TJ ET q -1 0 0 1 171.217 573.292 cm +1 0 0 1 170.919 585.386 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 573.093 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ +/F84 9.9626 Tf 173.907 585.187 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ 0 g 0 G - [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-545(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(105)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -59.367 -12.094 Td [(6.25)-550(psb)]TJ + -59.068 -12.094 Td [(6.25)-520(psb)]TJ ET q -1 0 0 1 154.072 561.198 cm +1 0 0 1 153.773 573.292 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 560.999 Td [(sp)]TJ +/F84 9.9626 Tf 156.762 573.093 Td [(sp)]TJ ET q -1 0 0 1 167.87 561.198 cm +1 0 0 1 167.571 573.292 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 170.859 560.999 Td [(getr)18(ow)-250(\227)-250(Extract)-250(r)18(ow\050s\051)-250(fr)18(om)-250(a)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 170.56 573.093 Td [(getr)18(ow)-250(\227)-250(Extract)-250(r)18(ow\050s\051)-250(fr)18(om)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-671(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-701(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(106)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -56.02 -12.094 Td [(6.26)-550(psb)]TJ + -55.721 -12.094 Td [(6.26)-520(psb)]TJ ET q -1 0 0 1 154.072 549.104 cm +1 0 0 1 153.773 561.198 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 548.905 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ +/F84 9.9626 Tf 156.762 560.999 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ 0 g 0 G - [-251(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-281(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(108)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(6.27)-550(Sorting)-250(utilities)-250(\227)]TJ + -41.923 -12.094 Td [(6.27)-550(Sorting)-250(utilities)-250(\227)]TJ 0 g 0 G [-1157(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(109)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -22.149 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ +/F75 9.9626 Tf -14.944 -22.15 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ 0 g 0 G [-17835(111)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.094 Td [(7.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.094 Td [(7.1)-1020(psb)]TJ ET q -1 0 0 1 154.072 502.766 cm +1 0 0 1 153.773 514.86 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 502.567 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ +/F84 9.9626 Tf 156.762 514.661 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ 0 g 0 G - [-766(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-796(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(112)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(7.2)-1050(psb)]TJ + -41.923 -12.094 Td [(7.2)]TJ 0.98 0 0 1 137.455 502.567 Tm [(psb)]TJ ET q -1 0 0 1 154.072 490.672 cm +1 0 0 1 153.459 502.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 490.472 Td [(info)-264(\227)-264(Return)-264(information)-264(abou)1(t)-264(PSBLAS)-264(parallel)-264(envir)18(on-)]TJ -19.308 -11.955 Td [(ment)]TJ +/F84 9.9626 Tf 0.98 0 0 1 156.448 502.567 Tm [(info)-218(\227)-219(Return)-218(information)-219(abou)1(t)-219(PSBLAS)-218(parallel)-219(envir)19(onment)]TJ 0 g 0 G - [-930(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(113)]TJ + 1 0 0 1 428.663 502.567 Tm [(113)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.094 Td [(7.3)-1050(psb)]TJ + -313.824 -12.095 Td [(7.3)-1020(psb)]TJ ET q -1 0 0 1 154.072 466.622 cm +1 0 0 1 153.773 490.672 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 466.423 Td [(exit)-250(\227)-250(Exit)-250(fr)18(om)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ +/F84 9.9626 Tf 156.762 490.472 Td [(exit)-250(\227)-250(Exit)-250(fr)18(om)-250(PSBLAS)-250(parallel)-250(envir)18(onment)]TJ 0 g 0 G - [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-853(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(114)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.4)-1050(psb)]TJ + -41.923 -12.094 Td [(7.4)-1020(psb)]TJ ET q -1 0 0 1 154.072 454.528 cm +1 0 0 1 153.773 478.578 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 454.329 Td [(get)]TJ +/F84 9.9626 Tf 156.762 478.378 Td [(get)]TJ ET q -1 0 0 1 171.217 454.528 cm +1 0 0 1 170.919 478.578 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 454.329 Td [(mpi)]TJ +/F84 9.9626 Tf 173.907 478.378 Td [(mpi)]TJ ET q -1 0 0 1 192.487 454.528 cm +1 0 0 1 192.189 478.578 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 195.476 454.329 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ +/F84 9.9626 Tf 195.177 478.378 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ 0 g 0 G - [-615(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-645(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(115)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -80.637 -12.094 Td [(7.5)-1050(psb)]TJ + -80.338 -12.094 Td [(7.5)-1020(psb)]TJ ET q -1 0 0 1 154.072 442.434 cm +1 0 0 1 153.773 466.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 442.235 Td [(get)]TJ +/F84 9.9626 Tf 156.762 466.284 Td [(get)]TJ ET q -1 0 0 1 171.217 442.434 cm +1 0 0 1 170.919 466.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 174.206 442.235 Td [(mpi)]TJ +/F84 9.9626 Tf 173.907 466.284 Td [(mpi)]TJ ET q -1 0 0 1 192.487 442.434 cm +1 0 0 1 192.189 466.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 195.476 442.235 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ +/F84 9.9626 Tf 195.177 466.284 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ 0 g 0 G - [-498(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-528(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(116)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -80.637 -12.094 Td [(7.6)-1050(psb)]TJ + -80.338 -12.094 Td [(7.6)-1020(psb)]TJ ET q -1 0 0 1 154.072 430.34 cm +1 0 0 1 153.773 454.389 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 430.141 Td [(wtime)-250(\227)-250(W)92(all)-250(clock)-250(timing)]TJ +/F84 9.9626 Tf 156.762 454.19 Td [(wtime)-250(\227)-250(W)92(all)-250(clock)-250(timing)]TJ 0 g 0 G - [-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-529(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(117)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(7.7)-1050(psb)]TJ + -41.923 -12.094 Td [(7.7)-1020(psb)]TJ ET q -1 0 0 1 154.072 418.246 cm +1 0 0 1 153.773 442.295 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 418.046 Td [(barrier)-250(\227)-250(Sinchr)18(onization)-250(point)-250(parallel)-250(envir)18(onment)]TJ +/F84 9.9626 Tf 156.762 442.096 Td [(barrier)-250(\227)-250(Sinchr)18(onization)-250(point)-250(parallel)-250(envir)18(onment)]TJ 0 g 0 G - [-903(.)-500(.)-500(.)]TJ + [-933(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(118)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.8)-1050(psb)]TJ + -41.923 -12.094 Td [(7.8)-1020(psb)]TJ ET q -1 0 0 1 154.072 406.151 cm +1 0 0 1 153.773 430.201 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 405.952 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ +/F84 9.9626 Tf 156.762 430.002 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ 0 g 0 G - [-946(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-976(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(119)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.9)-1050(psb)]TJ + -41.923 -12.095 Td [(7.9)-1020(psb)]TJ ET q -1 0 0 1 154.072 394.057 cm +1 0 0 1 153.773 418.107 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 393.858 Td [(bcast)-250(\227)-250(Br)18(oadcast)-250(data)]TJ +/F84 9.9626 Tf 156.762 417.907 Td [(bcast)-250(\227)-250(Br)18(oadcast)-250(data)]TJ 0 g 0 G - [-739(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-769(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(120)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.10)-550(psb)]TJ + -41.923 -12.094 Td [(7.10)-520(psb)]TJ ET q -1 0 0 1 154.072 381.963 cm +1 0 0 1 153.773 406.012 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 381.764 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ +/F84 9.9626 Tf 156.762 405.813 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ 0 g 0 G - [-998(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-278(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(122)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.11)-550(psb)]TJ + -41.923 -12.094 Td [(7.11)-520(psb)]TJ ET q -1 0 0 1 154.072 369.869 cm +1 0 0 1 153.773 393.918 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 369.67 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ +/F84 9.9626 Tf 156.762 393.719 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ 0 g 0 G - [-610(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-640(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(124)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.095 Td [(7.12)-550(psb)]TJ + -41.923 -12.094 Td [(7.12)-520(psb)]TJ ET q -1 0 0 1 154.072 357.775 cm +1 0 0 1 153.773 381.824 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 357.575 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ +/F84 9.9626 Tf 156.762 381.625 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ 0 g 0 G - [-896(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-926(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(126)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.13)-550(psb)]TJ + -41.923 -12.094 Td [(7.13)-520(psb)]TJ ET q -1 0 0 1 154.072 345.681 cm +1 0 0 1 153.773 369.73 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 345.481 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ +/F84 9.9626 Tf 156.762 369.531 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ 0 g 0 G - [-700(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-730(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(128)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.14)-550(psb)]TJ + -41.923 -12.095 Td [(7.14)-520(psb)]TJ ET q -1 0 0 1 154.072 333.586 cm +1 0 0 1 153.773 357.636 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 333.387 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ +/F84 9.9626 Tf 156.762 357.436 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ 0 g 0 G - [-777(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-807(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(130)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.15)-550(psb)]TJ + -41.923 -12.094 Td [(7.15)-520(psb)]TJ ET q -1 0 0 1 154.072 321.492 cm +1 0 0 1 153.773 345.542 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 321.293 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(r)18(eduction)]TJ +/F84 9.9626 Tf 156.762 345.342 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(r)18(eduction)]TJ 0 g 0 G - [-710(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-740(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(132)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.16)-550(psb)]TJ + -41.923 -12.094 Td [(7.16)-520(psb)]TJ ET q -1 0 0 1 154.072 309.398 cm +1 0 0 1 153.773 333.447 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 309.199 Td [(snd)-250(\227)-250(Send)-250(data)]TJ +/F84 9.9626 Tf 156.762 333.248 Td [(snd)-250(\227)-250(Send)-250(data)]TJ 0 g 0 G - [-511(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-541(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(134)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(7.17)-550(psb)]TJ + -41.923 -12.094 Td [(7.17)-520(psb)]TJ ET q -1 0 0 1 154.072 297.304 cm +1 0 0 1 153.773 321.353 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 297.105 Td [(r)18(cv)-250(\227)-250(Receive)-250(data)]TJ +/F84 9.9626 Tf 156.762 321.154 Td [(r)18(cv)-250(\227)-250(Receive)-250(data)]TJ 0 g 0 G - [-284(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-314(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(135)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.166 -22.15 Td [(8)-1000(Error)-250(handling)]TJ +/F75 9.9626 Tf -56.867 -22.15 Td [(8)-1000(Error)-250(handling)]TJ 0 g 0 G [-24750(136)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.094 Td [(8.1)-1050(psb)]TJ +/F84 9.9626 Tf 14.944 -12.094 Td [(8.1)-1020(psb)]TJ ET q -1 0 0 1 154.072 263.06 cm +1 0 0 1 153.773 287.11 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 262.861 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(err)18(or)-250(code)-250(onto)-250(the)-250(err)18(or)-250(stack)]TJ +/F84 9.9626 Tf 156.762 286.91 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(err)18(or)-250(code)-250(onto)-250(the)-250(err)18(or)-250(stack)]TJ 0 g 0 G - [-734(.)-500(.)-500(.)-500(.)]TJ + [-764(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(138)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(8.2)-1050(psb)]TJ + -41.923 -12.094 Td [(8.2)-1020(psb)]TJ ET q -1 0 0 1 154.072 250.966 cm +1 0 0 1 153.773 275.015 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 250.767 Td [(err)18(or)-250(\227)-250(Prints)-250(the)-250(err)18(or)-250(stack)-250(content)-250(and)-250(aborts)-250(execution)]TJ +/F84 9.9626 Tf 156.762 274.816 Td [(err)18(or)-250(\227)-250(Prints)-250(the)-250(err)18(or)-250(stack)-250(content)-250(and)-250(aborts)-250(execution)]TJ 0 g 0 G 0 g 0 G - [-1381(139)]TJ + [-1411(139)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -42.222 -12.094 Td [(8.3)-1050(psb)]TJ + -41.923 -12.094 Td [(8.3)-1020(psb)]TJ ET q -1 0 0 1 154.072 238.872 cm +1 0 0 1 153.773 262.921 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 238.673 Td [(set)]TJ +/F84 9.9626 Tf 156.762 262.722 Td [(set)]TJ ET q -1 0 0 1 169.902 238.872 cm +1 0 0 1 169.604 262.921 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 172.891 238.673 Td [(errverbosity)-250(\227)-250(Sets)-250(the)-250(verbosity)-250(of)-250(err)18(or)-250(messages)]TJ +/F84 9.9626 Tf 172.592 262.722 Td [(errverbosity)-250(\227)-250(Sets)-250(the)-250(verbosity)-250(of)-250(err)18(or)-250(messages)]TJ 0 g 0 G - [-253(.)-500(.)-500(.)]TJ + [-283(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(140)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -58.052 -12.095 Td [(8.4)-1050(psb)]TJ + -57.753 -12.094 Td [(8.4)]TJ 0.994 0 0 1 137.455 250.628 Tm [(psb)]TJ ET q -1 0 0 1 154.072 226.778 cm +1 0 0 1 153.679 250.827 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 157.061 226.578 Td [(set)]TJ +/F84 9.9626 Tf 0.994 0 0 1 156.668 250.628 Tm [(set)]TJ ET q -1 0 0 1 169.902 226.778 cm +1 0 0 1 169.436 250.827 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 172.891 226.578 Td [(erraction)-232(\227)-231(Set)-232(the)-231(type)-232(of)-231(action)-232(to)-232(b)1(e)-232(taken)-232(upon)-231(err)18(or)]TJ -35.138 -11.955 Td [(condition)]TJ +/F84 9.9626 Tf 0.994 0 0 1 172.425 250.628 Tm [(erraction)-251(\227)-251(Set)-252(the)-251(type)-251(of)-251(action)-251(to)-252(b)1(e)-252(taken)-251(upon)-251(err)18(or)]TJ 1 0 0 1 137.753 238.673 Tm [(condition)]TJ 0 g 0 G [-481(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(141)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -37.858 -22.149 Td [(9)-1000(Utilities)]TJ +/F75 9.9626 Tf -37.858 -22.15 Td [(9)-1000(Utilities)]TJ 0 g 0 G [-27780(142)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -12.095 Td [(9.1)-1450(hb)]TJ +/F84 9.9626 Tf 14.944 -12.094 Td [(9.1)]TJ 0.98 0 0 1 137.753 204.429 Tm [(hb)]TJ ET q -1 0 0 1 153.644 180.579 cm +1 0 0 1 149.432 204.628 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 156.633 180.38 Td [(r)18(ead)-400(\227)-400(Read)-400(a)-400(sparse)-400(matrix)-400(fr)18(om)-400(a)-400(\002le)-400(in)-400(the)-400(Harwell\226)]TJ -18.88 -11.956 Td [(Boeing)-250(format)]TJ +/F84 9.9626 Tf 0.98 0 0 1 152.421 204.429 Tm [(r)18(ead)-209(\227)-209(Read)-210(a)-209(sparse)-210(matr)1(ix)-210(fr)19(om)-210(a)-209(\002le)-210(in)-209(the)-209(Harwell\226Boeing)]TJ 1 0 0 1 137.753 192.474 Tm [(format)]TJ 0 g 0 G - [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-967(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(143)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.094 Td [(9.2)-1050(hb)]TJ + -22.914 -12.094 Td [(9.2)]TJ 0.99 0 0 1 137.753 180.38 Tm [(hb)]TJ ET q -1 0 0 1 149.659 156.529 cm +1 0 0 1 149.546 180.579 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 152.647 156.33 Td [(write)-226(\227)-226(W)74(rite)-226(a)-226(sparse)-226(matrix)-226(to)-226(a)-225(\002le)-226(in)-226(the)-226(Harwell\226Boeing)]TJ -14.894 -11.955 Td [(format)]TJ +/F84 9.9626 Tf 0.99 0 0 1 152.534 180.38 Tm [(write)-252(\227)-251(W)75(rite)-252(a)-251(sparse)-252(matrix)-251(to)-252(a)-251(\002le)-252(in)-251(the)-252(Harwell\226Boeing)]TJ 1 0 0 1 137.753 168.424 Tm [(format)]TJ 0 g 0 G [-967(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(144)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.094 Td [(9.3)-1050(mm)]TJ + -22.914 -12.094 Td [(9.3)]TJ 1.014 0 0 1 137.753 156.33 Tm [(mm)]TJ ET q -1 0 0 1 155.945 132.48 cm +1 0 0 1 156.191 156.529 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 158.934 132.281 Td [(mat)]TJ +/F84 9.9626 Tf 1.014 0 0 1 159.18 156.33 Tm [(mat)]TJ ET q -1 0 0 1 176.558 132.48 cm +1 0 0 1 177.042 156.529 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 179.546 132.281 Td [(r)18(ead)-265(\227)-265(Read)-265(a)-265(sparse)-265(matrix)-265(fr)18(om)-265(a)-265(\002le)-265(in)-265(the)-265(Matrix-)]TJ -41.793 -11.955 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 1.014 0 0 1 180.031 156.33 Tm [(r)18(ead)-246(\227)-245(Read)-246(a)-245(sparse)-245(matrix)-246(fr)18(om)-245(a)-246(\002le)-245(in)-246(the)-245(Matrix-)]TJ 1 0 0 1 137.753 144.375 Tm [(Market)-250(format)]TJ 0 g 0 G [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(145)]TJ 0 g 0 G -0 g 0 G - 129.649 -29.888 Td [(iii)]TJ -0 g 0 G -ET - -endstream -endobj -862 0 obj -<< -/Length 13187 ->> -stream -0 g 0 G -0 g 0 G 0 0 1 rg 0 0 1 RG -BT -/F62 9.9626 Tf 165.649 706.129 Td [(9.4)-1050(mm)]TJ + -22.914 -12.094 Td [(9.4)]TJ 1.02 0 0 1 137.753 132.281 Tm [(mm)]TJ ET q -1 0 0 1 206.755 706.328 cm +1 0 0 1 156.297 132.48 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.743 706.129 Td [(array)]TJ +/F84 9.9626 Tf 1.02 0 0 1 159.286 132.281 Tm [(array)]TJ ET q -1 0 0 1 233.713 706.328 cm +1 0 0 1 183.723 132.48 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 236.702 706.129 Td [(r)18(ead)-281(\227)-281(Read)-281(a)-281(dense)-281(array)-281(fr)18(om)-281(a)-281(\002le)-281(in)-281(the)-281(Matrix-)]TJ -48.139 -11.955 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 1.02 0 0 1 186.712 132.281 Tm [(r)18(ead)-247(\227)-247(Read)-247(a)-247(dense)-247(array)-246(fr)17(om)-247(a)-247(\002le)-246(in)-247(the)-247(Matrix-)]TJ 1 0 0 1 137.753 120.326 Tm [(Market)-250(format)]TJ 0 g 0 G [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(146)]TJ 0 g 0 G +0 g 0 G + 129.649 -29.888 Td [(iii)]TJ +0 g 0 G +ET + +endstream +endobj +871 0 obj +<< +/Length 13169 +>> +stream +0 g 0 G +0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -11.955 Td [(9.5)-1050(mm)]TJ +BT +/F84 9.9626 Tf 165.649 706.129 Td [(9.5)]TJ 0.98 0 0 1 188.563 706.129 Tm [(mm)]TJ ET q -1 0 0 1 206.755 682.418 cm +1 0 0 1 206.403 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.743 682.219 Td [(mat)]TJ +/F84 9.9626 Tf 0.98 0 0 1 209.392 706.129 Tm [(mat)]TJ ET q -1 0 0 1 227.367 682.418 cm +1 0 0 1 226.675 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 230.356 682.219 Td [(write)-333(\227)-333(W)74(rite)-334(a)-333(sparse)-333(matrix)-333(to)-333(a)-334(\002le)-333(in)-333(the)-333(Matrix-)]TJ -41.793 -11.956 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 0.98 0 0 1 229.664 706.129 Tm [(write)-234(\227)-234(W)76(rite)-234(a)-234(sparse)-234(matrix)-234(to)-234(a)-234(\002le)-234(in)-234(the)-234(MatrixMar)19(-)]TJ 1 0 0 1 188.563 694.174 Tm [(ket)-250(format)]TJ 0 g 0 G - [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-856(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(147)]TJ 0 g 0 G @@ -3304,143 +3278,164 @@ BT -22.914 -11.955 Td [(9.6)-1050(mm)]TJ ET q -1 0 0 1 206.755 658.507 cm +1 0 0 1 206.755 682.418 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.743 658.308 Td [(array)]TJ +/F84 9.9626 Tf 209.743 682.219 Td [(array)]TJ ET q -1 0 0 1 233.713 658.507 cm +1 0 0 1 233.713 682.418 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 236.702 658.308 Td [(write)-234(\227)-234(W)74(rite)-234(a)-234(dense)-234(array)-234(fr)18(om)-234(a)-234(\002le)-234(in)-234(the)-234(Matrix-)]TJ -48.139 -11.955 Td [(Market)-250(format)]TJ +/F84 9.9626 Tf 236.702 682.219 Td [(write)-249(\227)-249(W)74(rite)-249(a)-249(dense)-250(array)-249(fr)18(om)-249(a)-249(\002le)-249(in)-249(the)-249(Matrix-)]TJ -48.139 -11.956 Td [(Market)-250(format)]TJ 0 g 0 G [-515(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(148)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -37.858 -21.918 Td [(10)-500(Preconditioner)-250(routines)]TJ +/F75 9.9626 Tf -37.858 -21.917 Td [(10)-500(Preconditioner)-250(routines)]TJ 0 g 0 G [-20696(150)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(10.1)-550(init)-250(\227)-250(Initialize)-250(a)-250(pr)18(econditioner)]TJ +/F84 9.9626 Tf 14.944 -11.956 Td [(10.1)-550(init)-250(\227)-250(Initialize)-250(a)-250(pr)18(econditioner)]TJ 0 g 0 G [-772(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(151)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.2)-550(build)-250(\227)-250(Builds)-250(a)-250(pr)18(econditioner)]TJ + 0 -11.955 Td [(10.2)-550(Set)-250(\227)-250(set)-250(pr)18(econditioner)-250(parameters)]TJ 0 g 0 G - [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-609(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(152)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.3)-550(apply)-250(\227)-250(Pr)18(econditioner)-250(application)-250(r)18(outine)]TJ + 0 -11.955 Td [(10.3)-550(build)-250(\227)-250(Builds)-250(a)-250(pr)18(econditioner)]TJ 0 g 0 G - [-421(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1000(154)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.4)-550(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(curr)18(ent)-250(pr)18(econditioner)]TJ + 0 -11.955 Td [(10.4)-550(apply)-250(\227)-250(Pr)18(econditioner)-250(application)-250(r)18(outine)]TJ +0 g 0 G + [-421(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1000(156)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + 0 -11.955 Td [(10.5)-550(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(curr)18(ent)-250(pr)18(econditioner)]TJ 0 g 0 G [-350(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(155)]TJ + [-1000(157)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.956 Td [(10.5)-550(clone)-250(\227)-250(clone)-250(curr)18(ent)-250(pr)18(econditioner)]TJ + 0 -11.955 Td [(10.6)-550(clone)-250(\227)-250(clone)-250(curr)18(ent)-250(pr)18(econditioner)]TJ 0 g 0 G [-260(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(156)]TJ + [-1000(158)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -11.955 Td [(10.6)-550(fr)18(ee)-250(\227)-250(Fr)18(ee)-250(a)-250(pr)18(econditioner)]TJ + 0 -11.956 Td [(10.7)-550(fr)18(ee)-250(\227)-250(Fr)18(ee)-250(a)-250(pr)18(econditioner)]TJ 0 g 0 G [-341(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(157)]TJ + [-1000(159)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -21.918 Td [(11)-500(Iterative)-250(Methods)]TJ +/F75 9.9626 Tf -14.944 -21.917 Td [(11)-500(Iterative)-250(Methods)]TJ 0 g 0 G - [-23362(158)]TJ + [-23362(160)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(11.1)-550(psb)]TJ +/F84 9.9626 Tf 14.944 -11.956 Td [(11.1)-520(psb)]TJ ET q -1 0 0 1 204.881 519.031 cm +1 0 0 1 204.583 530.986 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.87 518.831 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ +/F84 9.9626 Tf 207.571 530.786 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ 0 g 0 G - [-716(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-746(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(159)]TJ + [-1000(161)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -41.922 -11.955 Td [(11.2)-520(psb)]TJ +ET +q +1 0 0 1 204.583 519.031 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 207.571 518.831 Td [(richar)18(dson)-250(\227)-250(Richar)18(dson)-250(Iteration)-250(Driver)-250(Routine)]TJ +0 g 0 G + [-839(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1000(164)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -57.165 -21.918 Td [(12)-500(Extensions)]TJ +/F75 9.9626 Tf -56.866 -21.918 Td [(12)-500(Extensions)]TJ 0 g 0 G - [-26557(162)]TJ + [-26557(167)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(12.1)-550(Using)-250(the)-250(extensions)]TJ +/F84 9.9626 Tf 14.944 -11.955 Td [(12.1)-550(Using)-250(the)-250(extensions)]TJ 0 g 0 G [-783(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(162)]TJ + [-1000(167)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.2)-550(Extensions')-250(Data)-250(Str)8(uctur)18(es)]TJ 0 g 0 G [-797(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(163)]TJ + [-1000(168)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.3)-550(CPU-class)-250(extensions)]TJ 0 g 0 G [-544(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(163)]TJ + [-1000(168)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG 0 -11.955 Td [(12.4)-550(CUDA-class)-250(extensions)]TJ 0 g 0 G [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(170)]TJ + [-1000(175)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F59 9.9626 Tf -14.944 -21.918 Td [(13)-500(CUDA)-250(Environment)-250(Routines)]TJ +/F75 9.9626 Tf -14.944 -21.918 Td [(13)-500(CUDA)-250(Environment)-250(Routines)]TJ 0 g 0 G - [-17779(171)]TJ + [-17779(176)]TJ 0 0 1 rg 0 0 1 RG -/F62 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ +/F84 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ ET q 1 0 0 1 181.967 415.419 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 415.22 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 415.22 Td [(cuda)]TJ ET q 1 0 0 1 207.053 415.419 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 415.22 Td [(init)]TJ +/F84 9.9626 Tf 210.042 415.22 Td [(init)]TJ 0 g 0 G [-304(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(171)]TJ + [-1000(176)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3450,18 +3445,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 403.265 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 403.265 Td [(cuda)]TJ ET q 1 0 0 1 207.053 403.464 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 403.265 Td [(exit)]TJ +/F84 9.9626 Tf 210.042 403.265 Td [(exit)]TJ 0 g 0 G [-932(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(171)]TJ + [-1000(176)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.956 Td [(psb)]TJ @@ -3471,18 +3466,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 391.309 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 391.309 Td [(cuda)]TJ ET q 1 0 0 1 207.053 391.509 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 391.309 Td [(DeviceSync)]TJ +/F84 9.9626 Tf 210.042 391.309 Td [(DeviceSync)]TJ 0 g 0 G [-405(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3492,18 +3487,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 379.354 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 379.354 Td [(cuda)]TJ ET q 1 0 0 1 207.053 379.554 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 379.354 Td [(getDeviceCount)]TJ +/F84 9.9626 Tf 210.042 379.354 Td [(getDeviceCount)]TJ 0 g 0 G [-635(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3513,18 +3508,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 367.399 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 367.399 Td [(cuda)]TJ ET q 1 0 0 1 207.053 367.598 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 367.399 Td [(getDevice)]TJ +/F84 9.9626 Tf 210.042 367.399 Td [(getDevice)]TJ 0 g 0 G [-401(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3534,18 +3529,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 355.444 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 355.444 Td [(cuda)]TJ ET q 1 0 0 1 207.053 355.643 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 355.444 Td [(setDevice)]TJ +/F84 9.9626 Tf 210.042 355.444 Td [(setDevice)]TJ 0 g 0 G [-533(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3555,18 +3550,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 343.489 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 343.489 Td [(cuda)]TJ ET q 1 0 0 1 207.053 343.688 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 343.489 Td [(DeviceHasUV)111(A)]TJ +/F84 9.9626 Tf 210.042 343.489 Td [(DeviceHasUV)111(A)]TJ 0 g 0 G [-839(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3576,18 +3571,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 331.534 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 331.534 Td [(cuda)]TJ ET q 1 0 0 1 207.053 331.733 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 331.534 Td [(W)92(arpSize)]TJ +/F84 9.9626 Tf 210.042 331.534 Td [(W)92(arpSize)]TJ 0 g 0 G [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.956 Td [(psb)]TJ @@ -3597,18 +3592,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 319.578 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 319.578 Td [(cuda)]TJ ET q 1 0 0 1 207.053 319.778 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 319.578 Td [(MultiPr)18(ocessors)]TJ +/F84 9.9626 Tf 210.042 319.578 Td [(MultiPr)18(ocessors)]TJ 0 g 0 G [-674(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3618,18 +3613,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 307.623 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 307.623 Td [(cuda)]TJ ET q 1 0 0 1 207.053 307.823 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 307.623 Td [(MaxThr)18(eadsPerMP)]TJ +/F84 9.9626 Tf 210.042 307.623 Td [(MaxThr)18(eadsPerMP)]TJ 0 g 0 G [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(172)]TJ + [-1000(177)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3639,18 +3634,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 295.668 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 295.668 Td [(cuda)]TJ ET q 1 0 0 1 207.053 295.867 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 295.668 Td [(MaxRegisterPerBlock)]TJ +/F84 9.9626 Tf 210.042 295.668 Td [(MaxRegisterPerBlock)]TJ 0 g 0 G [-538(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3660,18 +3655,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 283.713 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 283.713 Td [(cuda)]TJ ET q 1 0 0 1 207.053 283.912 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 283.713 Td [(MemoryClockRate)]TJ +/F84 9.9626 Tf 210.042 283.713 Td [(MemoryClockRate)]TJ 0 g 0 G [-970(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3681,18 +3676,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 271.758 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 271.758 Td [(cuda)]TJ ET q 1 0 0 1 207.053 271.957 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 271.758 Td [(MemoryBusW)55(idth)]TJ +/F84 9.9626 Tf 210.042 271.758 Td [(MemoryBusW)55(idth)]TJ 0 g 0 G [-346(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(178)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -44.393 -11.955 Td [(psb)]TJ @@ -3702,18 +3697,18 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 184.956 259.803 Td [(cuda)]TJ +/F84 9.9626 Tf 184.956 259.803 Td [(cuda)]TJ ET q 1 0 0 1 207.053 260.002 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 210.042 259.803 Td [(MemoryPeakBandwidth)]TJ +/F84 9.9626 Tf 210.042 259.803 Td [(MemoryPeakBandwidth)]TJ 0 g 0 G [-652(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1000(173)]TJ + [-1000(178)]TJ 0 g 0 G 0 g 0 G 108.254 -169.365 Td [(iv)]TJ @@ -3722,888 +3717,888 @@ ET endstream endobj -777 0 obj +785 0 obj << /Type /ObjStm /N 100 /First 926 -/Length 16374 ->> -stream -738 0 739 152 740 304 741 456 742 608 743 760 744 912 745 1064 746 1216 747 1367 -748 1520 749 1673 750 1826 751 1979 752 2132 753 2285 754 2438 755 2585 756 2735 757 2887 -758 3039 759 3191 760 3338 761 3490 762 3642 763 3794 764 3946 765 4098 766 4250 767 4402 -768 4554 769 4706 770 4859 771 5010 776 5161 773 5218 821 5298 772 5800 778 5953 779 6105 -780 6258 781 6409 782 6562 783 6715 784 6868 785 7020 786 7172 787 7325 788 7478 789 7631 -790 7784 791 7936 792 8089 793 8235 794 8387 824 8539 795 8690 796 8842 797 8994 798 9146 -799 9298 800 9448 801 9600 802 9752 803 9905 804 10058 805 10209 806 10361 807 10514 808 10667 -809 10820 810 10973 811 11119 812 11271 813 11423 814 11575 825 11727 815 11878 816 12024 826 12176 -817 12327 827 12479 818 12630 828 12782 823 12931 820 12987 861 13067 819 13473 864 13625 829 13777 -865 13929 830 14081 866 14233 831 14385 832 14530 833 14683 834 14836 835 14989 836 15142 837 15295 -% 738 0 obj +/Length 16358 +>> +stream +742 0 743 152 744 304 745 450 746 602 747 754 748 906 749 1058 750 1210 751 1362 +752 1514 753 1666 754 1818 755 1969 756 2122 757 2275 758 2428 759 2581 760 2734 761 2887 +762 3033 763 3184 764 3334 765 3486 766 3638 767 3785 768 3937 769 4089 770 4241 771 4393 +772 4545 773 4697 774 4849 775 5001 776 5153 777 5306 778 5458 779 5609 784 5760 781 5817 +829 5897 780 6399 786 6552 787 6705 788 6858 789 7009 790 7161 791 7314 792 7467 793 7620 +794 7772 795 7925 796 8078 797 8230 798 8383 799 8536 800 8681 801 8832 802 8984 803 9136 +804 9288 805 9440 806 9592 807 9742 808 9894 809 10046 810 10199 811 10351 812 10504 813 10657 +814 10809 815 10962 816 11115 817 11268 818 11414 819 11566 820 11716 821 11868 832 12020 822 12171 +823 12317 833 12469 824 12620 834 12772 825 12923 835 13075 826 13226 836 13378 831 13527 828 13583 +870 13663 827 14069 873 14221 837 14373 874 14525 838 14677 839 14821 840 14974 841 15126 842 15279 +% 742 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 596.256 318.663 605.666] +/A << /S /GoTo /D (subsection.3.4) >> +>> +% 743 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 581.526 277.409 593.586] +/A << /S /GoTo /D (subsection.3.5) >> +>> +% 744 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.709 559.64 275.386 571.361] +/A << /S /GoTo /D (section.4) >> +>> +% 745 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 535.241 380.451 547.301] +/Rect [164.653 547.321 380.152 559.381] /A << /S /GoTo /D (subsection.4.1) >> >> -% 739 0 obj +% 746 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 523.162 302.763 535.221] +/Rect [164.653 535.241 302.465 547.301] /A << /S /GoTo /D (subsection.4.2) >> >> -% 740 0 obj +% 747 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 511.082 362.977 523.142] +/Rect [164.653 523.162 362.678 535.221] /A << /S /GoTo /D (subsection.4.3) >> >> -% 741 0 obj +% 748 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 499.002 354.758 511.062] +/Rect [164.653 511.082 354.459 523.142] /A << /S /GoTo /D (subsection.4.4) >> >> -% 742 0 obj +% 749 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 486.923 379.844 498.982] +/Rect [164.653 499.002 379.545 511.062] /A << /S /GoTo /D (subsection.4.5) >> >> -% 743 0 obj +% 750 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 474.843 329.154 486.903] +/Rect [164.653 486.923 328.856 498.982] /A << /S /GoTo /D (subsection.4.6) >> >> -% 744 0 obj +% 751 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 462.763 394.738 474.823] +/Rect [164.653 474.843 394.439 486.903] /A << /S /GoTo /D (subsection.4.7) >> >> -% 745 0 obj +% 752 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 450.684 329.154 462.743] +/Rect [164.653 462.763 328.856 474.823] /A << /S /GoTo /D (subsection.4.8) >> >> -% 746 0 obj +% 753 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 438.604 394.24 450.663] +/Rect [164.653 450.684 393.941 462.743] /A << /S /GoTo /D (subsection.4.9) >> >> -% 747 0 obj +% 754 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 426.524 362.499 438.584] +/Rect [164.653 438.604 362.2 450.663] /A << /S /GoTo /D (subsection.4.10) >> >> -% 748 0 obj +% 755 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 414.444 387.276 426.504] +/Rect [164.653 426.524 386.977 438.584] /A << /S /GoTo /D (subsection.4.11) >> >> -% 749 0 obj +% 756 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 402.365 425.761 414.424] +/Rect [164.653 414.444 425.462 426.504] /A << /S /GoTo /D (subsection.4.12) >> >> -% 750 0 obj +% 757 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 390.285 353.991 402.345] +/Rect [164.653 402.365 353.692 414.424] /A << /S /GoTo /D (subsection.4.13) >> >> -% 751 0 obj +% 758 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 378.205 331.346 390.265] +/Rect [164.653 390.285 331.047 402.345] /A << /S /GoTo /D (subsection.4.14) >> >> -% 752 0 obj +% 759 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 366.126 333.538 378.185] +/Rect [164.653 378.205 333.239 390.265] /A << /S /GoTo /D (subsection.4.15) >> >> -% 753 0 obj +% 760 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 354.046 337.602 366.106] +/Rect [164.653 366.126 337.303 378.185] /A << /S /GoTo /D (subsection.4.16) >> >> -% 754 0 obj +% 761 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 334.551 280.368 343.701] +/Rect [149.709 346.63 280.368 355.781] /A << /S /GoTo /D (section.5) >> >> -% 755 0 obj +% 762 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 319.841 362.031 331.9] +/Rect [164.653 331.921 361.732 343.98] /A << /S /GoTo /D (subsection.5.1) >> >> -% 756 0 obj +% 763 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 307.761 313.065 319.821] +/Rect [164.653 319.841 312.766 331.9] /A << /S /GoTo /D (subsection.5.2) >> >> -% 757 0 obj +% 764 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 295.681 376.127 307.741] +/Rect [164.653 307.761 375.828 319.821] /A << /S /GoTo /D (subsection.5.3) >> >> -% 758 0 obj +% 765 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 283.602 376.187 295.661] +/Rect [164.653 295.681 375.888 307.741] /A << /S /GoTo /D (subsection.5.4) >> >> -% 759 0 obj +% 766 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 261.636 289.504 273.257] +/Rect [149.709 273.716 289.504 285.337] /A << /S /GoTo /D (section.6) >> >> -% 760 0 obj +% 767 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 249.397 412.092 261.456] +/Rect [164.653 261.476 411.793 273.536] /A << /S /GoTo /D (subsection.6.1) >> >> -% 761 0 obj +% 768 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 237.317 428.052 249.377] +/Rect [164.653 249.397 427.753 261.456] /A << /S /GoTo /D (subsection.6.2) >> >> -% 762 0 obj +% 769 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 225.237 445.915 237.297] +/Rect [164.653 237.317 445.616 249.377] /A << /S /GoTo /D (subsection.6.3) >> >> -% 763 0 obj +% 770 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 213.158 407.011 225.217] +/Rect [164.653 225.237 406.712 237.297] /A << /S /GoTo /D (subsection.6.4) >> >> -% 764 0 obj +% 771 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 201.078 400.356 213.138] +/Rect [164.653 213.158 400.057 225.217] /A << /S /GoTo /D (subsection.6.5) >> >> -% 765 0 obj +% 772 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 188.998 461.277 201.058] +/Rect [164.653 201.078 460.978 213.138] /A << /S /GoTo /D (subsection.6.6) >> >> -% 766 0 obj +% 773 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 176.918 355.017 188.978] +/Rect [164.653 188.998 354.718 201.058] /A << /S /GoTo /D (subsection.6.7) >> >> -% 767 0 obj +% 774 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 164.839 446.841 176.898] +/Rect [164.653 176.918 446.543 188.978] /A << /S /GoTo /D (subsection.6.8) >> >> -% 768 0 obj +% 775 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 152.759 387.206 164.819] +/Rect [164.653 164.839 386.907 176.898] /A << /S /GoTo /D (subsection.6.9) >> >> -% 769 0 obj +% 776 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 140.679 343.281 152.739] +/Rect [164.653 152.759 342.982 164.819] /A << /S /GoTo /D (subsection.6.10) >> >> -% 770 0 obj +% 777 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 128.6 460.789 140.659] +/Rect [164.653 140.679 460.49 152.739] /A << /S /GoTo /D (subsection.6.11) >> >> -% 771 0 obj +% 778 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 116.52 352.646 128.58] +/Rect [164.653 128.6 352.347 140.659] /A << /S /GoTo /D (subsection.6.12) >> >> -% 776 0 obj +% 779 0 obj << -/D [774 0 R /XYZ 149.705 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 116.52 381.427 128.58] +/A << /S /GoTo /D (subsection.6.13) >> >> -% 773 0 obj +% 784 0 obj +<< +/D [782 0 R /XYZ 149.705 753.953 null] +>> +% 781 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 821 0 obj +% 829 0 obj << /Type /Page -/Contents 822 0 R -/Resources 820 0 R +/Contents 830 0 R +/Resources 828 0 R /MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 772 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 824 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 825 0 R 815 0 R 816 0 R 826 0 R 817 0 R 827 0 R 818 0 R 828 0 R ] ->> -% 772 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 702.323 330.917 714.383] -/A << /S /GoTo /D (subsection.6.13) >> +/Parent 676 0 R +/Annots [ 780 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 819 0 R 820 0 R 821 0 R 832 0 R 822 0 R 823 0 R 833 0 R 824 0 R 834 0 R 825 0 R 835 0 R 826 0 R 836 0 R ] >> -% 778 0 obj +% 780 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 690.229 308.85 702.289] +/Rect [113.843 702.323 308.551 714.383] /A << /S /GoTo /D (subsection.6.14) >> >> -% 779 0 obj +% 786 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 678.135 290.101 690.194] +/Rect [113.843 690.229 289.802 702.289] /A << /S /GoTo /D (subsection.6.15) >> >> -% 780 0 obj +% 787 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 666.041 386.806 678.1] +/Rect [113.843 678.135 386.507 690.194] /A << /S /GoTo /D (subsection.6.16) >> >> -% 781 0 obj +% 788 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 653.946 368.116 666.006] +/Rect [113.843 666.041 367.818 678.1] /A << /S /GoTo /D (subsection.6.17) >> >> -% 782 0 obj +% 789 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 641.852 370.219 653.912] +/Rect [113.843 653.946 369.92 666.006] /A << /S /GoTo /D (subsection.6.18) >> >> -% 783 0 obj +% 790 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 629.758 214.116 641.818] +/Rect [113.843 641.852 213.818 653.912] /A << /S /GoTo /D (subsection.6.19) >> >> -% 784 0 obj +% 791 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 617.664 231.69 629.724] +/Rect [113.843 629.758 231.391 641.818] /A << /S /GoTo /D (subsection.6.20) >> >> -% 785 0 obj +% 792 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 605.57 204.353 617.629] +/Rect [113.843 617.664 204.054 629.724] /A << /S /GoTo /D (subsection.6.21) >> >> -% 786 0 obj +% 793 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 593.476 221.927 605.535] +/Rect [113.843 605.57 221.628 617.629] /A << /S /GoTo /D (subsection.6.22) >> >> -% 787 0 obj +% 794 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 581.381 379.076 593.441] +/Rect [113.843 593.476 378.777 605.535] /A << /S /GoTo /D (subsection.6.23) >> >> -% 788 0 obj +% 795 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 569.287 359.768 581.347] +/Rect [113.843 581.381 359.469 593.441] /A << /S /GoTo /D (subsection.6.24) >> >> -% 789 0 obj +% 796 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 557.193 373.158 569.253] +/Rect [113.843 569.287 372.86 581.347] /A << /S /GoTo /D (subsection.6.25) >> >> -% 790 0 obj +% 797 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 545.099 287.68 557.158] +/Rect [113.843 557.193 287.381 569.253] /A << /S /GoTo /D (subsection.6.26) >> >> -% 791 0 obj +% 798 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 533.005 221.369 545.064] +/Rect [113.843 545.099 221.369 557.158] /A << /S /GoTo /D (subsection.6.27) >> >> -% 792 0 obj +% 799 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 513.485 251.974 522.815] +/Rect [98.899 525.58 251.974 534.909] /A << /S /GoTo /D (section.7) >> >> -% 793 0 obj +% 800 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 498.761 364.739 510.821] +/Rect [113.843 510.855 364.44 522.915] /A << /S /GoTo /D (subsection.7.1) >> >> -% 794 0 obj +% 801 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 486.667 444.603 498.726] +/Rect [113.843 498.761 429.161 510.821] /A << /S /GoTo /D (subsection.7.2) >> >> -% 824 0 obj +% 802 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 477.362 161.365 486.467] -/A << /S /GoTo /D (subsection.7.2) >> +/Rect [113.843 486.667 363.873 498.726] +/A << /S /GoTo /D (subsection.7.3) >> >> -% 795 0 obj +% 803 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 462.617 364.172 474.677] -/A << /S /GoTo /D (subsection.7.3) >> +/Rect [113.843 474.573 358.473 486.632] +/A << /S /GoTo /D (subsection.7.4) >> >> -% 796 0 obj +% 804 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 450.523 358.772 462.583] -/A << /S /GoTo /D (subsection.7.4) >> ->> -% 797 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 438.429 307.635 450.489] +/Rect [113.843 462.478 307.336 474.538] /A << /S /GoTo /D (subsection.7.5) >> >> -% 798 0 obj +% 805 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 426.335 277.737 438.395] +/Rect [113.843 450.384 277.438 462.444] /A << /S /GoTo /D (subsection.7.6) >> >> -% 799 0 obj +% 806 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 414.241 393.262 426.3] +/Rect [113.843 438.29 392.963 450.35] /A << /S /GoTo /D (subsection.7.7) >> >> -% 800 0 obj +% 807 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 402.147 288.227 414.206] +/Rect [113.843 426.196 287.928 438.256] /A << /S /GoTo /D (subsection.7.8) >> >> -% 801 0 obj +% 808 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 390.052 260.403 402.112] +/Rect [113.843 414.102 260.104 426.161] /A << /S /GoTo /D (subsection.7.9) >> >> -% 802 0 obj +% 809 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 377.958 242.878 390.018] +/Rect [113.843 402.008 242.579 414.067] /A << /S /GoTo /D (subsection.7.10) >> >> -% 803 0 obj +% 810 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 365.864 269.159 377.924] +/Rect [113.843 389.913 268.86 401.973] /A << /S /GoTo /D (subsection.7.11) >> >> -% 804 0 obj +% 811 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 353.77 266.31 365.829] +/Rect [113.843 377.819 266.011 389.879] /A << /S /GoTo /D (subsection.7.12) >> >> -% 805 0 obj +% 812 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 341.676 335.51 353.735] +/Rect [113.843 365.725 335.211 377.785] /A << /S /GoTo /D (subsection.7.13) >> >> -% 806 0 obj +% 813 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 329.581 334.742 341.641] +/Rect [113.843 353.631 334.444 365.69] /A << /S /GoTo /D (subsection.7.14) >> >> -% 807 0 obj +% 814 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 317.487 305.523 329.547] +/Rect [113.843 341.537 305.224 353.596] /A << /S /GoTo /D (subsection.7.15) >> >> -% 808 0 obj +% 815 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 305.393 232.786 317.453] +/Rect [113.843 329.442 232.488 341.502] /A << /S /GoTo /D (subsection.7.16) >> >> -% 809 0 obj +% 816 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 293.299 242.519 305.359] +/Rect [113.843 317.348 242.221 329.408] /A << /S /GoTo /D (subsection.7.17) >> >> -% 810 0 obj +% 817 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 271.309 183.083 283.109] +/Rect [98.899 295.358 183.083 307.159] /A << /S /GoTo /D (section.8) >> >> -% 811 0 obj +% 818 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 259.055 387.474 271.115] +/Rect [113.843 283.105 387.175 295.164] /A << /S /GoTo /D (subsection.8.1) >> >> -% 812 0 obj +% 819 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 246.961 415.897 259.021] +/Rect [113.843 271.01 415.598 283.07] /A << /S /GoTo /D (subsection.8.2) >> >> -% 813 0 obj +% 820 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 234.867 399.738 246.926] +/Rect [113.843 258.916 399.439 270.976] /A << /S /GoTo /D (subsection.8.3) >> >> -% 814 0 obj +% 821 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 222.773 444.603 234.832] +/Rect [113.843 246.822 444.603 258.882] /A << /S /GoTo /D (subsection.8.4) >> >> -% 825 0 obj +% 832 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 213.468 180.781 222.877] +/Rect [98.899 237.517 180.781 246.926] /A << /S /GoTo /D (subsection.8.4) >> >> -% 815 0 obj +% 822 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 191.298 152.896 200.628] +/Rect [98.899 215.348 152.896 224.677] /A << /S /GoTo /D (section.9) >> >> -% 816 0 obj +% 823 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 176.574 444.603 188.633] +/Rect [113.843 200.623 444.603 212.683] /A << /S /GoTo /D (subsection.9.1) >> >> -% 826 0 obj +% 833 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 164.619 201.494 176.678] +/Rect [98.899 191.318 168.468 200.728] /A << /S /GoTo /D (subsection.9.1) >> >> -% 817 0 obj +% 824 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 152.524 444.603 164.584] +/Rect [113.843 176.574 444.603 188.633] /A << /S /GoTo /D (subsection.9.2) >> >> -% 827 0 obj +% 834 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 143.219 168.468 152.629] +/Rect [98.899 167.269 168.468 176.678] /A << /S /GoTo /D (subsection.9.2) >> >> -% 818 0 obj +% 825 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 128.475 444.603 140.535] +/Rect [113.843 152.524 444.603 164.584] /A << /S /GoTo /D (subsection.9.3) >> >> -% 828 0 obj +% 835 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 119.17 202.859 128.58] +/Rect [98.899 143.219 202.859 152.629] /A << /S /GoTo /D (subsection.9.3) >> >> -% 823 0 obj -<< -/D [821 0 R /XYZ 98.895 753.953 null] ->> -% 820 0 obj -<< -/Font << /F62 667 0 R /F59 665 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 861 0 obj -<< -/Type /Page -/Contents 862 0 R -/Resources 860 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 668 0 R -/Annots [ 819 0 R 864 0 R 829 0 R 865 0 R 830 0 R 866 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R ] ->> -% 819 0 obj +% 826 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 702.323 495.412 714.383] +/Rect [113.843 128.475 444.603 140.535] /A << /S /GoTo /D (subsection.9.4) >> >> -% 864 0 obj +% 836 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 693.018 253.668 702.428] +/Rect [98.899 119.17 202.859 128.58] /A << /S /GoTo /D (subsection.9.4) >> >> -% 829 0 obj +% 831 0 obj +<< +/D [829 0 R /XYZ 98.895 753.953 null] +>> +% 828 0 obj +<< +/Font << /F84 675 0 R /F75 673 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 870 0 obj +<< +/Type /Page +/Contents 871 0 R +/Resources 869 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 676 0 R +/Annots [ 827 0 R 873 0 R 837 0 R 874 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R ] +>> +% 827 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 678.413 495.412 690.472] +/Rect [164.653 702.323 495.412 714.383] /A << /S /GoTo /D (subsection.9.5) >> >> -% 865 0 obj +% 873 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 669.108 253.668 678.517] +/Rect [149.709 693.018 235.327 702.428] /A << /S /GoTo /D (subsection.9.5) >> >> -% 830 0 obj +% 837 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 654.503 495.412 666.562] +/Rect [164.653 678.413 495.412 690.472] /A << /S /GoTo /D (subsection.9.6) >> >> -% 866 0 obj +% 874 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 645.197 253.668 654.607] +/Rect [149.709 669.108 253.668 678.517] /A << /S /GoTo /D (subsection.9.6) >> >> -% 831 0 obj +% 838 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 623.26 274.28 632.59] +/Rect [149.709 647.17 274.28 656.5] /A << /S /GoTo /D (section.10) >> >> -% 832 0 obj +% 839 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 608.674 333.298 620.734] +/Rect [164.653 632.585 333.298 644.644] /A << /S /GoTo /D (subsection.10.1) >> >> -% 833 0 obj +% 840 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 596.719 331.326 608.779] +/Rect [164.653 620.63 349.866 632.689] /A << /S /GoTo /D (subsection.10.2) >> >> -% 834 0 obj +% 841 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 584.764 381.626 596.824] +/Rect [164.653 608.674 331.326 620.734] /A << /S /GoTo /D (subsection.10.3) >> >> -% 835 0 obj +% 842 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 572.809 427.165 584.869] +/Rect [164.653 596.719 381.626 608.779] /A << /S /GoTo /D (subsection.10.4) >> >> -% 836 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 560.854 353.343 572.913] -/A << /S /GoTo /D (subsection.10.5) >> ->> -% 837 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 548.899 315.177 560.958] -/A << /S /GoTo /D (subsection.10.6) >> ->> endstream endobj -880 0 obj +888 0 obj << -/Length 8045 +/Length 9121 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(1)-1000(Introduction)]TJ/F62 9.9626 Tf 0 -22.913 Td [(The)-272(PSBLAS)-271(library)111(,)-277(developed)-272(with)-272(t)1(he)-272(aim)-272(to)-271(facilitate)-272(the)-272(parallelization)-271(of)]TJ 0 -11.955 Td [(computationally)-348(intensive)-347(scienti\002c)-348(applications,)-372(is)-347(designed)-348(to)-348(addr)18(ess)-347(par)18(-)]TJ 0 -11.955 Td [(allel)-282(implementation)-283(of)-282(iterative)-282(solvers)-283(for)-282(sparse)-282(linear)-283(systems)-282(thr)18(ough)-282(the)]TJ 0 -11.955 Td [(distributed)-232(memory)-232(paradigm.)-304(It)-232(includes)-233(r)18(outines)-232(for)-232(multiplying)-232(sparse)-232(ma-)]TJ 0 -11.955 Td [(trices)-211(by)-211(dense)-211(matrices,)-219(solving)-211(block)-211(diagonal)-211(systems)-211(with)-211(triangular)-211(diago-)]TJ 0 -11.956 Td [(nal)-229(entries,)-233(pr)18(epr)18(ocessing)-228(sparse)-229(matrices,)-233(and)-228(contains)-229(additional)-229(r)18(outines)-228(for)]TJ 0 -11.955 Td [(dense)-292(matrix)-292(operations.)-436(The)-292(curr)18(ent)-292(implementation)-292(of)-292(PSBLAS)-292(addr)18(esses)-292(a)]TJ 0 -11.955 Td [(distributed)-250(memory)-250(execution)-250(model)-250(operating)-250(with)-250(message)-250(passing.)]TJ 14.944 -12.064 Td [(The)-267(PSBLAS)-267(library)-268(version)-267(3)-267(is)-267(implemented)-267(in)-267(the)-268(Fortran)-267(2003)-267([)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(1)-1000(Introduction)]TJ/F84 9.9626 Tf 1.009 0 0 1 99.587 682.871 Tm [(The)-247(PSBLAS)-247(library)110(,)-247(developed)-246(with)-247(the)-247(aim)-247(to)-247(facilitate)-246(the)-247(parallelization)-247(of)]TJ 0.98 0 0 1 99.895 670.916 Tm [(computationally)-246(intensive)-247(scienti\002c)-246(applications,)-248(is)-246(designed)-247(to)-246(addr)18(ess)-246(parallel)]TJ 1.02 0 0 1 99.895 658.961 Tm [(implementation)-250(of)-250(iterative)-251(solvers)-250(for)-250(sparse)-250(linear)-250(systems)-251(thr)18(ough)-250(the)-250(dis-)]TJ 0.98 0 0 1 99.895 647.006 Tm [(tributed)-232(memory)-232(paradigm.)-309(It)-232(includes)-232(r)18(outines)-232(for)-232(multiplying)-232(sparse)-232(matrices)]TJ 1.02 0 0 1 99.895 635.051 Tm [(by)-305(dense)-305(matrices,)-320(solving)-305(block)-305(diagonal)-305(systems)-306(with)-305(triangular)-305(diagonal)]TJ 1.02 0 0 1 99.895 623.095 Tm [(entries,)-366(pr)18(epr)18(ocessing)-342(sparse)-342(matrices,)-365(and)-342(contains)-342(additional)-341(r)17(outines)-341(for)]TJ 1.015 0 0 1 99.895 611.14 Tm [(dense)-245(matrix)-244(operations.)-305(The)-245(curr)18(ent)-245(implementation)-244(of)-245(PSBLAS)-244(addr)17(esses)-244(a)]TJ 1 0 0 1 99.895 599.185 Tm [(distributed)-250(memory)-250(execution)-250(model)-250(operating)-250(with)-250(message)-250(passing.)]TJ 1.013 0 0 1 114.839 587.121 Tm [(The)-247(PSBLAS)-246(library)-247(version)-246(3)-247(is)-247(implemented)-246(in)-247(the)-246(Fortran)-247(2003)-247([)]TJ 1 0 0 rg 1 0 0 RG - [(16)]TJ + 1 0 0 1 410.705 587.121 Tm [(17)]TJ 0 g 0 G - [(])-267(pr)18(o-)]TJ -14.944 -11.955 Td [(gramming)-278(language,)-284(with)-277(r)18(euse)-278(and/or)-278(adaptation)-277(of)-278(existing)-277(Fortran)-278(77)-277(and)]TJ 0 -11.955 Td [(Fortran)-250(95)-250(softwar)18(e,)-250(plus)-250(a)-250(handful)-250(of)-250(C)-250(r)18(outines.)]TJ 14.944 -12.064 Td [(The)-391(use)-392(of)-391(Fortran)-392(2003)-391(of)18(fers)-392(a)-391(number)-391(of)-392(advantages)-391(over)-392(Fortran)-391(95,)]TJ -14.944 -11.955 Td [(mostly)-385(in)-385(the)-385(handling)-385(of)-385(r)18(equir)18(ements)-385(for)-385(evolution)-385(and)-385(adaptation)-385(of)-385(the)]TJ 0 -11.956 Td [(library)-431(to)-432(new)-431(computing)-432(ar)18(chitectur)18(es)-431(and)-432(integration)-431(of)-432(new)-431(algorithms.)]TJ 0 -11.955 Td [(For)-365(a)-365(detail)1(ed)-365(discussion)-365(of)-365(our)-364(design)-365(see)-365([)]TJ + 1.013 0 0 1 420.668 587.121 Tm [(])-247(pr)18(o-)]TJ 1.009 0 0 1 99.895 575.166 Tm [(gramming)-247(language,)-248(with)-247(r)17(e)1(use)-248(and/or)-247(adaptation)-248(of)-247(existing)-248(Fortran)-247(77)-247(and)]TJ 1 0 0 1 99.895 563.211 Tm [(Fortran)-250(95)-250(softwar)18(e,)-250(plus)-250(a)-250(handful)-250(of)-250(C)-250(r)18(outines.)]TJ 1.02 0 0 1 114.839 551.147 Tm [(The)-348(use)-347(of)-348(Fortran)-348(2003)-348(of)18(fers)-347(a)-348(number)-348(of)-348(advant)1(ages)-348(over)-348(Fortran)-348(95,)]TJ 1.02 0 0 1 99.895 539.192 Tm [(mostly)-323(in)-324(the)-323(handling)-324(of)-323(r)17(equir)18(ements)-323(for)-324(evolution)-323(and)-324(adaptation)-323(of)-324(the)]TJ 0.995 0 0 1 99.895 527.237 Tm [(library)-252(to)-252(new)-252(computin)1(g)-252(ar)18(chitectur)18(es)-252(and)-252(integration)-252(of)-251(new)-252(algorithms.)-314(For)]TJ 1.011 0 0 1 99.895 515.281 Tm [(a)-247(detailed)-247(discussion)-247(of)-248(our)-247(design)-247(see)-247([)]TJ 1 0 0 rg 1 0 0 RG - [(10)]TJ + 1 0 0 1 276.552 515.281 Tm [(11)]TJ 0 g 0 G - [(];)-422(other)-365(works)-364(discussing)-365(ad-)]TJ 0 -11.955 Td [(vanced)-361(pr)18(ogramming)-362(in)-361(Fortran)-362(2003)-361(include)-362([)]TJ + 1.011 0 0 1 286.514 515.281 Tm [(];)-247(other)-247(works)-248(discussi)1(ng)-248(advanced)]TJ 0.98 0 0 1 99.596 503.326 Tm [(pr)18(ogramming)-202(in)-203(Fortran)-202(2003)-203(include)-202([)]TJ 1 0 0 rg 1 0 0 RG - [(20)]TJ + 1 0 0 1 265.469 503.326 Tm [(21)]TJ 0 g 0 G - [(,)]TJ + 0.98 0 0 1 275.432 503.326 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - [-361(18)]TJ + 1 0 0 1 279.85 503.326 Tm [(19)]TJ 0 g 0 G - [(];)-417(suf)18(\002cient)-362(support)-361(for)]TJ 0 -11.955 Td [(Fortran)-314(2003)-314(is)-313(now)-314(available)-314(fr)18(om)-314(many)-313(compilers,)-330(including)-314(the)-313(GNU)-314(For)18(-)]TJ 0 -11.955 Td [(tran)-250(compiler)-250(fr)18(om)-250(the)-250(Fr)18(ee)-250(Softwar)18(e)-250(Foundation)-250(\050as)-250(of)-250(version)-250(4.8\051.)]TJ 14.944 -12.064 Td [(Pr)18(evious)-311(appr)18(oaches)-312(have)-311(been)-311(based)-311(on)-312(mixing)-311(Fortran)-311(95,)-327(with)-311(its)-311(sup-)]TJ -14.944 -11.955 Td [(port)-249(for)-249(object-based)-249(design,)-249(with)-249(other)-249(languages;)-249(these)-249(have)-249(been)-249(advocated)]TJ 0 -11.956 Td [(by)-346(a)-346(number)-346(of)-347(authors,)-370(e.g.)-346([)]TJ + 0.98 0 0 1 289.813 503.326 Tm [(];)-220(suf)18(\002cient)-203(suppor)1(t)-203(for)-203(Fortran)-202(2003)]TJ 1.02 0 0 1 99.895 491.371 Tm [(is)-269(now)-268(available)-269(fr)18(om)-269(many)-268(compilers,)-275(including)-269(the)-268(GNU)-269(Fortran)-268(compiler)]TJ 1 0 0 1 99.895 479.416 Tm [(fr)18(om)-250(the)-250(Fr)18(ee)-250(Softwar)18(e)-250(Foundation)-250(\050as)-250(of)-250(version)-250(4.8\051.)]TJ 0.98 0 0 1 114.839 467.352 Tm [(Pr)18(evious)-234(appr)19(oaches)-234(have)-234(been)-234(based)-234(on)-234(mixing)-234(Fortran)-234(95,)-239(with)-234(its)-234(support)]TJ 1.02 0 0 1 99.895 455.397 Tm [(for)-260(object-based)-260(design,)-264(with)-260(other)-260(languages;)-267(these)-260(have)-260(been)-260(advocated)-260(by)]TJ 1.016 0 0 1 99.895 443.442 Tm [(a)-246(number)-246(of)-247(aut)1(hors,)-247(e.g.)-246([)]TJ 1 0 0 rg 1 0 0 RG - [(15)]TJ + 1 0 0 1 217.299 443.442 Tm [(16)]TJ 0 g 0 G - [(].)-598(Mor)18(eover)74(,)-371(the)-346(Fortran)-346(95)-346(facilities)-346(for)-346(dy-)]TJ 0 -11.955 Td [(namic)-411(memory)-410(management)-411(and)-410(interface)-411(overloading)-410(gr)18(eatly)-411(enhance)-410(the)]TJ 0 -11.955 Td [(usability)-397(of)-398(the)-397(PSBLAS)-398(subr)18(outines.)-752(In)-398(this)-397(way)111(,)-434(the)-398(library)-397(can)-398(take)-397(car)18(e)]TJ 0 -11.955 Td [(of)-267(r)8(untime)-266(memory)-267(r)18(equir)18(ements)-266(that)-267(ar)18(e)-266(quite)-267(dif)18(\002cult)-267(or)-266(even)-267(impossible)-266(to)]TJ 0 -11.955 Td [(pr)18(edict)-250(at)-250(implementation)-250(or)-250(compilation)-250(time.)]TJ 14.944 -12.064 Td [(The)-249(pr)18(esentation)-250(of)-249(the)-250(PSBLAS)-249(library)-249(follows)-250(the)-249(general)-249(str)8(uctur)18(e)-250(of)-249(the)]TJ -14.944 -11.955 Td [(pr)18(oposal)-207(for)-206(serial)-207(Sparse)-207(BLAS)-207([)]TJ + 1.016 0 0 1 227.261 443.442 Tm [(].)-305(Mor)17(eover)73(,)-246(the)-246(Fortran)-246(95)-247(facil)1(ities)-247(for)-246(dynamic)]TJ 1.006 0 0 1 99.895 431.486 Tm [(memory)-248(management)-248(and)-247(interface)-248(overloading)-248(gr)18(eatly)-248(enhance)-247(the)-248(usability)]TJ 1.02 0 0 1 99.895 419.531 Tm [(of)-287(the)-287(PSBLAS)-288(su)1(br)17(outines.)-430(In)-287(this)-287(way)109(,)-298(the)-287(library)-288(can)-287(take)-287(car)18(e)-287(of)-288(r)8(untime)]TJ 1.02 0 0 1 99.895 407.576 Tm [(memory)-248(r)17(equ)1(ir)17(ements)-248(that)-248(ar)18(e)-249(quite)-248(dif)18(\002cult)-248(or)-248(even)-248(impossible)-248(to)-248(pr)17(edict)-248(at)]TJ 1 0 0 1 99.895 395.621 Tm [(implementation)-250(or)-250(compilation)-250(time.)]TJ 14.944 -12.064 Td [(The)-249(pr)18(esentation)-250(of)-249(the)-250(PSBLAS)-249(library)-249(follows)-250(the)-249(general)-249(str)8(uctur)18(e)-250(of)-249(the)]TJ 0.98 0 0 1 99.596 371.602 Tm [(pr)18(oposal)-255(for)-255(serial)-254(Sparse)-255(BLAS)-255([)]TJ 1 0 0 rg 1 0 0 RG - [(7)]TJ + 1 0 0 1 242.106 371.602 Tm [(8)]TJ 0 g 0 G - [(,)]TJ + 0.98 0 0 1 247.087 371.602 Tm [(,)]TJ 1 0 0 rg 1 0 0 RG - [-206(8)]TJ + 1 0 0 1 252.017 371.602 Tm [(9)]TJ 0 g 0 G - [(],)-216(which)-206(in)-207(its)-207(turn)-206(is)-207(based)-207(on)-207(t)1(he)-207(pr)18(oposal)]TJ 0 -11.956 Td [(for)-250(BLAS)-250(on)-250(dense)-250(matrices)-250([)]TJ + 0.98 0 0 1 256.998 371.602 Tm [(],)-255(which)-255(in)-255(its)-255(turn)-255(is)-255(based)-255(on)-255(the)-255(pr)19(oposal)]TJ 1 0 0 1 99.895 359.647 Tm [(for)-250(BLAS)-250(on)-250(dense)-250(matrices)-250([)]TJ 1 0 0 rg 1 0 0 RG - [(14)]TJ + [(15)]TJ 0 g 0 G [(,)]TJ 1 0 0 rg 1 0 0 RG - [-250(4)]TJ + [-250(5)]TJ 0 g 0 G [(,)]TJ 1 0 0 rg 1 0 0 RG - [-250(5)]TJ + [-250(6)]TJ 0 g 0 G - [(].)]TJ 14.944 -12.063 Td [(The)-297(applicability)-297(of)-298(sparse)-297(iterative)-297(solvers)-297(to)-297(many)-298(dif)18(fer)18(ent)-297(ar)18(eas)-297(causes)]TJ -14.944 -11.956 Td [(some)-190(terminology)-190(pr)18(oblems)-190(because)-190(the)-190(same)-190(concept)-190(may)-190(be)-190(denoted)-190(thr)18(ough)]TJ 0 -11.955 Td [(dif)18(fer)18(ent)-271(names)-271(depending)-272(on)-271(the)-271(application)-271(ar)18(ea.)-374(The)-271(PSBLAS)-271(featur)18(es)-271(pr)18(e-)]TJ 0 -11.955 Td [(sented)-332(in)-333(this)-332(document)-332(will)-333(be)-332(discussed)-332(r)18(eferring)-333(to)-332(a)-333(\002ni)1(te)-333(dif)18(fer)18(ence)-332(dis-)]TJ 0 -11.955 Td [(cr)18(etization)-284(of)-285(a)-284(Partial)-285(Dif)18(fer)18(ential)-284(Equation)-284(\050PDE\051.)-285(However)74(,)-293(the)-284(scope)-285(of)-284(the)]TJ 0 -11.955 Td [(library)-283(is)-283(wider)-283(than)-284(that:)-376(for)-283(example,)-291(it)-283(can)-284(be)-283(applied)-283(to)-283(\002nite)-283(element)-283(dis-)]TJ 0 -11.956 Td [(cr)18(etizations)-267(of)-267(PDEs,)-271(and)-267(even)-266(to)-267(dif)18(fer)18(ent)-267(classes)-267(of)-267(pr)18(oblems)-267(such)-266(as)-267(nonlin-)]TJ 0 -11.955 Td [(ear)-250(optimization,)-250(for)-250(example)-250(in)-250(optimal)-250(contr)18(ol)-250(pr)18(oblems.)]TJ 14.944 -12.064 Td [(The)-383(design)-383(of)-383(a)-383(solver)-383(for)-384(sparse)-383(linear)-383(systems)-383(is)-383(driven)-383(by)-383(many)-383(con-)]TJ -14.944 -11.955 Td [(\003icting)-271(objectives,)-277(such)-272(as)-271(limiting)-271(occupation)-272(of)-271(storage)-271(r)18(esour)18(ces,)-277(exploiting)]TJ 0 -11.955 Td [(r)18(egularities)-274(in)-274(the)-275(input)-274(data,)-280(exploiting)-274(har)18(dwar)18(e)-275(characteristi)1(cs)-275(of)-274(the)-274(paral-)]TJ 0 -11.955 Td [(lel)-350(platform.)-610(T)92(o)-350(achieve)-350(an)-350(optimal)-350(communication)-350(to)-350(computation)-350(ratio)-350(on)]TJ 0 -11.955 Td [(distributed)-379(memory)-378(machines)-379(it)-378(is)-379(essential)-379(to)-378(keep)-379(the)]TJ/F60 9.9626 Tf 256.501 0 Td [(data)-379(locality)]TJ/F62 9.9626 Tf 54.198 0 Td [(as)-379(high)]TJ -310.699 -11.956 Td [(as)-315(possible;)-346(this)-315(can)-314(be)-315(done)-315(thr)18(ough)-314(an)-315(appr)18(opriate)-314(data)-315(allocation)-314(strategy)111(.)]TJ 0 -11.955 Td [(The)-323(choice)-323(of)-324(the)-323(pr)18(econditioner)-323(is)-323(another)-323(very)-324(important)-323(factor)-323(that)-323(af)18(fects)]TJ 0 -11.955 Td [(ef)18(\002ciency)-300(of)-300(the)-300(im)1(plemented)-300(application.)-460(Optimal)-300(data)-299(distribution)-300(r)18(equir)18(e-)]TJ 0 -11.955 Td [(ments)-300(for)-299(a)-300(given)-300(pr)18(econditioner)-299(may)-300(con\003ict)-300(with)-300(distribution)-299(r)18(equir)18(ements)]TJ 0 -11.955 Td [(of)-356(the)-356(r)18(est)-356(of)-357(the)-356(solver)74(.)-628(Finding)-356(the)-357(o)1(ptimal)-357(trade-of)18(f)-356(may)-356(be)-356(very)-356(dif)18(\002cult)]TJ 0 -11.955 Td [(because)-292(it)-291(is)-292(application)-291(dependent.)-435(Possible)-292(solutions)-291(to)-292(these)-292(pr)18(oblems)-291(and)]TJ 0 -11.956 Td [(other)-342(important)-342(inputs)-342(to)-342(the)-342(development)-342(of)-341(the)-342(PSBLAS)-342(softwar)18(e)-342(package)]TJ + [(].)]TJ 1.016 0 0 1 114.839 347.583 Tm [(The)-245(applicability)-245(of)-246(sparse)-245(iterative)-245(solvers)-245(to)-245(many)-246(dif)18(fe)1(r)17(ent)-245(ar)18(eas)-245(causes)]TJ 0.98 0 0 1 99.895 335.627 Tm [(some)-251(terminology)-252(pr)19(oblems)-252(because)-251(the)-252(same)-251(concept)-251(may)-252(be)-251(denoted)-252(thr)19(ough)]TJ 1.013 0 0 1 99.895 323.672 Tm [(dif)18(fer)18(ent)-248(names)-247(depending)-247(on)-248(the)-247(application)-248(ar)18(ea.)-308(The)-247(PSBLAS)-247(featur)17(es)-247(pr)18(e-)]TJ 1.02 0 0 1 99.895 311.717 Tm [(sented)-290(in)-289(this)-289(document)-290(will)-289(be)-290(discussed)-289(r)17(eferring)-289(to)-290(a)-289(\002nite)-290(dif)18(fer)18(ence)-289(dis-)]TJ 1.012 0 0 1 99.895 299.762 Tm [(cr)18(etization)-248(of)-248(a)-248(Partial)-248(Dif)18(fer)18(ential)-248(Equation)-248(\050PDE\051.)-248(Howe)1(ver)73(,)-248(the)-248(scope)-248(of)-248(the)]TJ 1.02 0 0 1 99.895 287.807 Tm [(library)-249(is)-249(wider)-249(than)-249(that:)-312(for)-250(example,)-250(it)-249(can)-249(be)-249(applied)-249(to)-249(\002nite)-249(element)-249(dis-)]TJ 0.98 0 0 1 99.895 275.852 Tm [(cr)18(etizations)-240(of)-241(PDEs,)-244(and)-240(even)-241(to)-240(dif)18(fer)18(ent)-241(classes)-240(of)-241(pr)18(oblems)-240(such)-241(as)-241(nonlinear)]TJ 1 0 0 1 99.895 263.896 Tm [(optimization,)-250(for)-250(example)-250(in)-250(optimal)-250(contr)18(ol)-250(pr)18(oblems.)]TJ 1.02 0 0 1 114.839 251.832 Tm [(The)-346(design)-346(of)-346(a)-345(solver)-346(for)-346(sparse)-346(linear)-346(systems)-346(is)-345(driven)-346(by)-346(many)-346(con-)]TJ 1.006 0 0 1 99.895 239.877 Tm [(\003icting)-250(objectives,)-250(such)-249(as)-250(limiting)-249(occupation)-250(of)-250(storage)-249(r)18(esour)17(ces,)-249(exploiting)]TJ 1.013 0 0 1 99.895 227.922 Tm [(r)18(egularities)-247(in)-247(the)-247(input)-247(data,)-247(exploiting)-246(har)17(dwar)18(e)-247(characteristics)-247(of)-246(the)-247(paral-)]TJ 1.02 0 0 1 99.895 215.967 Tm [(lel)-293(platform.)-447(T)90(o)-292(achieve)-293(an)-293(optimal)-293(communication)-292(to)-293(computation)-293(ratio)-293(on)]TJ 1.02 0 0 1 99.895 204.012 Tm [(distributed)-322(memory)-322(machines)-323(it)-322(is)-322(essential)-322(to)-323(keep)-322(the)]TJ/F78 9.9626 Tf 1.02 0 0 1 356.37 204.012 Tm [(data)-322(locality)]TJ/F84 9.9626 Tf 1.02 0 0 1 410.507 204.012 Tm [(as)-322(high)]TJ 1.02 0 0 1 99.895 192.057 Tm [(as)-270(possible;)-283(this)-270(can)-270(be)-270(done)-271(thr)18(ough)-270(an)-270(appr)17(opriate)-270(data)-270(allocation)-270(strategy)109(.)]TJ 1.02 0 0 1 99.587 180.101 Tm [(The)-264(choice)-265(of)-264(the)-265(pr)18(econditioner)-264(is)-265(another)-264(very)-265(important)-264(factor)-265(that)-264(af)18(fects)]TJ 1.02 0 0 1 99.895 168.146 Tm [(ef)18(\002ciency)-248(of)-247(the)-248(implemented)-247(application.)-311(Optimal)-248(data)-247(distribution)-248(r)18(equir)18(e-)]TJ 1.014 0 0 1 99.895 156.191 Tm [(ments)-247(for)-246(a)-247(given)-247(pr)18(econditioner)-247(may)-246(con\003ict)-247(with)-247(distribution)-246(r)17(equir)18(ements)]TJ 1.02 0 0 1 99.895 144.236 Tm [(of)-310(the)-311(r)18(est)-310(of)-311(the)-310(solver)72(.)-499(Finding)-311(the)-310(optimal)-310(trade-of)17(f)-310(may)-310(be)-310(very)-311(dif)18(\002cult)]TJ 1.016 0 0 1 99.895 132.281 Tm [(because)-246(it)-245(is)-246(application)-246(depende)1(nt.)-305(Possible)-246(solutions)-246(to)-245(these)-246(pr)18(oblems)-246(and)]TJ 1.02 0 0 1 99.895 120.326 Tm [(other)-274(important)-274(inputs)-275(to)-274(the)-274(development)-274(of)-275(the)-274(PSBLAS)-274(softwar)18(e)-275(package)]TJ 0 g 0 G - 169.365 -29.887 Td [(1)]TJ + 1 0 0 1 269.26 90.438 Tm [(1)]TJ 0 g 0 G ET endstream endobj -899 0 obj +907 0 obj << -/Length 5269 +/Length 5731 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 150.705 706.129 Td [(have)-292(come)-291(fr)18(om)-292(an)-292(established)-291(experience)-292(in)-292(applying)-291(the)-292(PSBLAS)-291(solvers)-292(to)]TJ 0 -11.955 Td [(computational)-250(\003uid)-250(dynamics)-250(applications.)]TJ/F59 14.3462 Tf 0 -33.474 Td [(2)-1000(General)-250(overview)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-190(PSBLAS)-190(library)-190(is)-190(designed)-190(to)-190(handle)-190(the)-190(implementation)-190(of)-190(iterative)-190(solvers)]TJ 0 -11.955 Td [(for)-275(sparse)-275(linear)-275(systems)-275(on)-275(distributed)-275(memory)-274(parallel)-275(computers.)-385(The)-275(sys-)]TJ 0 -11.955 Td [(tem)-307(coef)18(\002cient)-308(matrix)]TJ/F60 9.9626 Tf 100.571 0 Td [(A)]TJ/F62 9.9626 Tf 10.381 0 Td [(must)-307(be)-308(squar)18(e;)-336(it)-308(may)-307(be)-308(r)18(eal)-307(or)-307(complex,)-322(nonsym-)]TJ -110.952 -11.955 Td [(metric,)-301(and)-291(its)-291(sparsity)-291(pattern)-291(needs)-291(not)-291(to)-291(be)-291(symmetric.)-433(The)-291(serial)-291(compu-)]TJ 0 -11.955 Td [(tation)-240(parts)-239(ar)18(e)-240(based)-240(on)-239(the)-240(serial)-240(sparse)-239(BLAS,)-240(so)-240(that)-239(any)-240(extension)-239(made)-240(to)]TJ 0 -11.956 Td [(the)-258(data)-258(str)8(uctur)18(es)-259(of)-258(the)-258(serial)-258(kernels)-258(is)-259(available)-258(to)-258(the)-258(parallel)-258(version.)-335(The)]TJ 0 -11.955 Td [(overall)-294(design)-294(and)-294(parallelization)-294(strategy)-294(have)-294(been)-294(in\003uenced)-294(by)-294(the)-294(str)8(uc-)]TJ 0 -11.955 Td [(tur)18(e)-306(of)-307(the)-306(ScaLAP)92(ACK)-306(parallel)-307(library)111(.)-479(The)-306(layer)18(ed)-306(str)8(uctur)18(e)-306(of)-307(the)-306(PSBLAS)]TJ 0 -11.955 Td [(library)-349(is)-349(shown)-348(in)-349(\002gur)18(e)]TJ +/F84 9.9626 Tf 1.015 0 0 1 150.705 706.129 Tm [(have)-245(come)-246(fr)18(om)-245(an)-245(established)-246(experience)-245(in)-245(applying)-245(the)-246(PSBLAS)-245(solvers)-245(to)]TJ 1 0 0 1 150.705 694.174 Tm [(computational)-250(\003uid)-250(dynamics)-250(applications.)]TJ/F75 14.3462 Tf 0 -37.746 Td [(2)-1000(General)-250(overview)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 632.548 Tm [(The)-390(PSBLAS)-390(library)-391(is)-390(designed)-390(to)-390(handle)-390(the)-391(implementation)-390(of)-390(iterative)]TJ 1.02 0 0 1 150.705 620.593 Tm [(solvers)-293(for)-294(sparse)-293(linear)-294(systems)-293(on)-294(distributed)-293(memory)-294(parallel)-293(computers.)]TJ 1.02 0 0 1 150.396 608.638 Tm [(The)-332(system)-332(coef)18(\002cient)-332(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 288.366 608.638 Tm [(A)]TJ/F84 9.9626 Tf 1.02 0 0 1 299.058 608.638 Tm [(must)-332(be)-332(squar)18(e;)-376(it)-332(may)-332(be)-332(r)18(eal)-332(or)-332(complex,)]TJ 1.02 0 0 1 150.705 596.683 Tm [(nonsymmetric,)-250(and)-249(its)-248(sparsity)-249(pattern)-249(needs)-249(not)-249(to)-249(be)-249(symmetric.)-315(The)-249(serial)]TJ 1.02 0 0 1 150.705 584.728 Tm [(computation)-245(parts)-246(ar)18(e)-246(based)-245(on)-246(the)-245(serial)-246(sparse)-246(BLAS,)-245(so)-246(that)-245(any)-246(extension)]TJ 1.02 0 0 1 150.705 572.772 Tm [(made)-355(to)-355(the)-356(data)-355(str)8(uctur)18(es)-355(of)-356(the)-355(serial)-355(kernels)-355(is)-355(available)-355(to)-356(th)1(e)-356(parallel)]TJ 1.015 0 0 1 150.426 560.817 Tm [(version.)-305(The)-245(overall)-245(design)-245(and)-245(parallelization)-245(strategy)-245(have)-245(been)-245(in\003uenced)]TJ 1.02 0 0 1 150.705 548.862 Tm [(by)-281(the)-281(str)8(uctur)18(e)-281(of)-281(the)-281(ScaLAP)90(ACK)-281(parallel)-281(library)109(.)-412(The)-281(layer)18(ed)-281(str)8(uctur)17(e)-281(of)]TJ 1 0 0 1 150.705 536.907 Tm [(the)-251(PSBLAS)-250(library)-251(is)-251(sh)1(own)-251(in)-251(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-349(1)]TJ + [-250(1)]TJ 0 g 0 G - [(;)-398(lower)-349(layers)-349(of)-349(the)-349(library)-349(in)1(dicate)-349(an)-349(encapsu-)]TJ 0 -11.955 Td [(lation)-314(r)18(elationship)-314(with)-313(upper)-314(layers.)-502(The)-314(ongoing)-314(discussion)-313(focuses)-314(on)-314(the)]TJ 0 -11.955 Td [(Fortran)-244(2003)-244(layer)-245(immediately)-244(below)-244(the)-244(application)-244(layer)74(.)-308(The)-245(serial)-244(parts)-244(of)]TJ 0 -11.956 Td [(the)-230(computation)-230(on)-230(each)-230(pr)18(ocess)-230(ar)18(e)-230(executed)-230(thr)18(ough)-230(calls)-230(to)-230(the)-230(serial)-230(sparse)]TJ 0 -11.955 Td [(BLAS)-307(subr)18(outines.)-482(In)-307(a)-307(similar)-308(way)111(,)-321(the)-307(inter)18(-pr)18(ocess)-308(message)-307(exchanges)-307(ar)18(e)]TJ 0 -11.955 Td [(encapsulated)-244(in)-243(an)-244(applicaiton)-244(layer)-243(that)-244(has)-244(been)-243(str)18(ongly)-244(inspir)18(ed)-244(by)-243(the)-244(Ba-)]TJ 0 -11.955 Td [(sic)-314(Linear)-313(Algebra)-314(Communication)-313(Subr)18(outines)-314(\050BLACS\051)-314(library)-313([)]TJ + [(;)-251(lower)-251(layers)-251(of)-250(the)-251(library)-251(indi)1(cate)-251(an)]TJ 1.005 0 0 1 150.705 524.952 Tm [(encapsulation)-247(r)18(elationship)-247(with)-247(upper)-247(layers.)-308(The)-247(ongoing)-247(discussion)-246(focuses)]TJ 1.018 0 0 1 150.705 512.997 Tm [(on)-244(the)-245(Fortran)-244(2003)-245(layer)-244(immediately)-245(below)-244(the)-245(application)-244(layer)73(.)-305(The)-244(serial)]TJ 0.98 0 0 1 150.406 501.041 Tm [(parts)-246(of)-245(the)-246(computation)-246(on)-245(each)-246(pr)18(ocess)-245(ar)18(e)-246(executed)-245(thr)18(ough)-246(calls)-245(to)-246(the)-246(serial)]TJ 0.98 0 0 1 150.705 489.086 Tm [(sparse)-243(BLAS)-243(subr)18(outines.)-312(In)-243(a)-243(similar)-243(way)113(,)-245(the)-243(inter)18(-pr)19(ocess)-243(message)-243(exchanges)]TJ 1 0 0 1 150.705 477.131 Tm [(ar)18(e)-251(encapsulated)-251(in)-251(an)-251(applicaiton)-251(layer)-251(that)-251(has)-251(been)-251(str)18(ongly)-251(inspir)18(ed)-251(by)-251(the)]TJ 0.987 0 0 1 150.705 465.176 Tm [(Basic)-251(Linear)-252(Algebra)-251(Communication)-251(Subr)18(outines)-251(\050BLACS\051)-252(library)-251([)]TJ 1 0 0 rg 1 0 0 RG - [(6)]TJ + 1 0 0 1 447.153 465.176 Tm [(7)]TJ 0 g 0 G - [(].)-501(Usually)]TJ 0 -11.955 Td [(ther)18(e)-315(is)-314(no)-315(need)-315(to)-314(deal)-315(dir)18(ectly)-314(with)-315(MPI;)-315(however)74(,)-330(in)-315(some)-315(cases,)-331(MPI)-314(r)18(ou-)]TJ 0 -11.955 Td [(tines)-219(ar)18(e)-219(used)-218(dir)18(ectly)-219(to)-219(impr)18(ove)-219(ef)18(\002ciency)111(.)-299(For)-219(further)-219(details)-219(on)-218(our)-219(commu-)]TJ 0 -11.956 Td [(nication)-250(layer)-250(see)-250(Sec.)]TJ + 0.987 0 0 1 452.135 465.176 Tm [(].)-313(Usually)]TJ 0.98 0 0 1 150.705 453.221 Tm [(ther)18(e)-240(is)-241(no)-241(need)-240(to)-241(deal)-241(dir)19(ectly)-241(with)-240(MPI;)-241(however)75(,)-243(in)-241(some)-240(cases,)-244(MPI)-241(r)19(outines)]TJ 0.98 0 0 1 150.705 441.266 Tm [(ar)18(e)-199(used)-198(dir)18(ectly)-199(to)-199(impr)18(o)1(ve)-199(ef)18(\002ciency)113(.)-298(For)-199(further)-199(det)1(ails)-199(on)-199(our)-199(communication)]TJ 1 0 0 1 150.705 429.31 Tm [(layer)-250(see)-250(Sec.)]TJ 0 0 1 rg 0 0 1 RG [-250(7)]TJ 0 g 0 G @@ -4612,7 +4607,7 @@ BT 0 g 0 G 0 g 0 G ET -1 0 0 1 258.536 281.98 cm +1 0 0 1 258.536 273.582 cm q .65 0 0 .65 0 0 cm q @@ -4621,33 +4616,33 @@ q Q Q 0 g 0 G -1 0 0 1 -258.536 -281.98 cm +1 0 0 1 -258.536 -273.582 cm BT -/F62 9.9626 Tf 216.385 250.1 Td [(Figur)18(e)-250(1:)-310(PSBLAS)-250(library)-250(components)-250(hierar)18(chy)111(.)]TJ +/F84 9.9626 Tf 216.385 241.701 Td [(Figur)18(e)-250(1:)-310(PSBLAS)-250(library)-250(components)-250(hierar)18(chy)111(.)]TJ 0 g 0 G 0 g 0 G - -50.736 -22.178 Td [(The)-370(type)-369(of)-370(linear)-369(system)-370(matrices)-370(that)-369(we)-370(addr)18(ess)-369(typically)-370(arise)-370(in)-369(the)]TJ -14.944 -11.955 Td [(numerical)-260(solution)-261(of)-260(PDEs;)-266(in)-260(such)-260(a)-261(context,)-263(it)-260(is)-261(necessary)-260(to)-260(pay)-261(special)-260(at-)]TJ 0 -11.955 Td [(tention)-297(to)-298(the)-297(str)8(uctur)18(e)-298(of)-297(the)-298(pr)18(oblem)-297(fr)18(om)-298(which)-297(the)-298(application)-297(originates.)]TJ 0 -11.955 Td [(The)-277(nonzer)18(o)-276(pattern)-277(of)-277(a)-276(matrix)-277(arising)-277(fr)18(om)-276(the)-277(discr)18(etization)-276(of)-277(a)-277(PDE)-276(is)-277(in-)]TJ 0 -11.956 Td [(\003uenced)-232(by)-232(various)-231(factors,)-236(such)-232(as)-232(the)-231(shape)-232(of)-232(the)-232(domain,)-235(the)-232(discr)18(etization)]TJ 0 -11.955 Td [(strategy)111(,)-313(and)-301(the)-300(equation/unknown)-301(or)18(dering.)-461(The)-301(matrix)-301(it)1(self)-301(can)-301(be)-300(inter)18(-)]TJ 0 -11.955 Td [(pr)18(eted)-291(as)-291(the)-291(adjacency)-291(matrix)-292(of)-291(the)-291(graph)-291(associated)-291(with)-291(the)-291(discr)18(etization)]TJ 0 -11.955 Td [(mesh.)]TJ 14.944 -11.955 Td [(The)-308(distribution)-308(of)-308(the)-309(coef)18(\002cient)-308(matrix)-308(for)-308(the)-308(linear)-309(system)-308(is)-308(based)-308(on)]TJ -14.944 -11.955 Td [(the)-314(\223owner)-314(computes\224)-314(r)8(ule:)-438(the)-314(variable)-314(associated)-314(to)-314(each)-314(mesh)-314(point)-314(is)-314(as-)]TJ + 1.02 0 0 1 165.649 216.575 Tm [(The)-316(type)-315(of)-316(linear)-316(system)-315(matrices)-316(that)-315(we)-316(addr)18(ess)-316(typically)-316(arise)-315(in)-316(the)]TJ 0.98 0 0 1 150.705 204.62 Tm [(numerical)-223(solution)-223(of)-223(PDEs;)-234(in)-223(such)-223(a)-223(context,)-229(it)-223(is)-223(necessary)-223(to)-224(pay)-223(special)-223(atten-)]TJ 0.998 0 0 1 150.705 192.665 Tm [(tion)-249(to)-250(the)-249(str)8(uctur)18(e)-250(of)-249(the)-250(pr)18(oblem)-249(fr)18(om)-250(which)-249(the)-250(application)-249(originates.)-310(The)]TJ 0.98 0 0 1 150.705 180.709 Tm [(nonzer)18(o)-213(pattern)-214(of)-214(a)-214(matrix)-214(arising)-213(fr)18(om)-214(the)-214(discr)19(etization)-214(of)-214(a)-214(PDE)-213(is)-214(in\003uenced)]TJ 1.001 0 0 1 150.705 168.754 Tm [(by)-249(various)-248(factors,)-249(such)-249(as)-249(the)-248(shape)-249(of)-249(the)-248(domain,)-249(the)-249(discr)18(etization)-248(strategy)110(,)]TJ 1.02 0 0 1 150.705 156.799 Tm [(and)-263(the)-262(equation/unknown)-263(or)18(dering.)-357(The)-263(matrix)-263(itself)-262(can)-263(be)-263(interpr)18(eted)-263(as)]TJ 1 0 0 1 150.705 144.844 Tm [(the)-250(adjacency)-250(matrix)-250(of)-250(the)-250(graph)-250(associated)-250(with)-250(the)-250(discr)18(etization)-250(mesh.)]TJ 1.02 0 0 1 165.649 132.281 Tm [(The)-380(distribution)-380(of)-380(the)-380(coef)18(\002cient)-380(matri)1(x)-380(for)-380(the)-380(linear)-380(system)-380(is)-380(based)]TJ 1.02 0 0 1 150.705 120.326 Tm [(on)-272(the)-271(\223owner)-272(computes\224)-271(r)7(ule:)-356(the)-272(variable)-272(associated)-271(to)-272(each)-271(mesh)-272(point)-272(is)]TJ 0 g 0 G - 169.365 -29.888 Td [(2)]TJ + 1 0 0 1 320.07 90.438 Tm [(2)]TJ 0 g 0 G ET endstream endobj -895 0 obj +903 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/psblas.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 901 0 R +/PTEX.InfoDict 909 0 R /BBox [0 0 197 215] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 902 0 R ->>/Font << /R8 903 0 R>> +/R7 910 0 R +>>/Font << /R8 911 0 R>> >> /Length 898 /Filter /FlateDecode @@ -4668,7 +4663,7 @@ x Ͻ'Ǜa>=|9hBu湣$Lq5k^޽;>NiZ\V+9D8NLG׻~0+'mw>o;{=EaѲ8S4%ǥ_N#OΏ endstream endobj -905 0 obj +913 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -4688,39 +4683,39 @@ p IZt4w!}^gh9@^ ҅s2=3B2H>yn7C#h-whGtBVպ`u1F3vo34\z",P&+ڻoB03xs!F/m'~n?vaD+5t0 +ԷsRztJxFzQ`/d2j@7G.?wyc$OI(SMEߌ| ^`2!-"VIN"̂B-e/uV9:6:.ǰMɪH endstream endobj -911 0 obj +919 0 obj << -/Length 8252 +/Length 9352 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 99.895 706.129 Td [(signed)-263(to)-264(a)-263(pr)18(ocess)-263(that)-263(will)-264(own)-263(the)-263(corr)18(esponding)-263(r)18(ow)-263(in)-264(the)-263(coef)18(\002cient)-263(ma-)]TJ 0 -11.955 Td [(trix)-406(and)-406(will)-406(carry)-405(out)-406(all)-406(r)18(elated)-406(computations.)-778(This)-406(all)1(ocation)-406(strategy)-406(is)]TJ 0 -11.955 Td [(equivalent)-353(to)-353(a)-353(partition)-353(of)-353(the)-353(discr)18(etization)-353(mesh)-353(in)1(to)]TJ/F60 9.9626 Tf 253.543 0 Td [(sub-domains)]TJ/F62 9.9626 Tf 51.107 0 Td [(.)-619(Our)-353(li-)]TJ -304.65 -11.956 Td [(brary)-220(supports)-220(any)-220(distribution)-220(that)-220(keeps)-220(together)-220(the)-220(coef)18(\002cients)-220(of)-220(each)-220(ma-)]TJ 0 -11.955 Td [(trix)-244(r)18(ow;)-245(ther)18(e)-244(ar)18(e)-243(no)-244(other)-243(constraints)-244(on)-243(the)-243(variable)-244(assignment.)-308(This)-243(choice)]TJ 0 -11.955 Td [(is)-324(consistent)-324(with)-324(simple)-324(data)-325(distributions)-324(such)-324(as)]TJ/F67 9.9626 Tf 232.237 0 Td [(CYCLIC\050N\051)]TJ/F62 9.9626 Tf 50.302 0 Td [(and)]TJ/F67 9.9626 Tf 20.095 0 Td [(BLOCK)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)-324(as)]TJ -328.786 -11.955 Td [(well)-310(as)-309(completely)-310(arbitrary)-310(assignments)-309(of)-310(equation)-310(indices)-309(to)-310(pr)18(ocesses.)-489(In)]TJ 0 -11.955 Td [(particular)-250(it)-250(is)-251(consistent)-250(with)-250(the)-250(usage)-250(of)-251(graph)-250(partitioning)-250(tools)-250(commonly)]TJ 0 -11.956 Td [(available)-333(in)-332(the)-333(literatur)18(e,)-353(e.g.)-558(METIS)-332([)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 706.129 Tm [(assigned)-295(to)-294(a)-295(pr)17(ocess)-294(that)-295(will)-295(own)-294(the)-295(corr)18(esponding)-295(r)17(ow)-294(in)-295(the)-295(coef)18(\002cient)]TJ 1.02 0 0 1 99.895 694.174 Tm [(matrix)-247(and)-247(will)-246(carry)-247(out)-247(all)-247(r)18(elated)-247(computations.)-309(T)1(his)-247(allocation)-247(strategy)-247(is)]TJ 0.98 0 0 1 99.895 682.219 Tm [(equivalent)-251(to)-251(a)-251(partition)-252(of)-251(the)-251(discr)18(etizati)1(on)-252(mesh)-251(into)]TJ/F78 9.9626 Tf 0.98 0 0 1 339.419 682.219 Tm [(sub-domains)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.504 682.219 Tm [(.)-315(Our)-251(library)]TJ 1.02 0 0 1 99.895 670.263 Tm [(supports)-297(any)-298(distribution)-297(that)-297(keeps)-298(together)-297(the)-297(coef)17(\002)1(cients)-298(of)-297(each)-297(matrix)]TJ 1.02 0 0 1 99.895 658.308 Tm [(r)18(ow;)-366(ther)18(e)-326(ar)18(e)-325(no)-326(other)-325(constraints)-325(on)-326(the)-325(variable)-326(assignment.)-544(This)-326(choice)]TJ 1.02 0 0 1 99.895 646.353 Tm [(is)-276(consistent)-275(with)-276(simple)-276(data)-276(distributi)1(ons)-276(such)-276(as)]TJ/F131 9.9626 Tf 1 0 0 1 332.842 646.353 Tm [(CYCLIC\050N\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 382.717 646.353 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 402.723 646.353 Tm [(BLOCK)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.874 646.353 Tm [(,)-276(as)]TJ 1.02 0 0 1 99.477 634.398 Tm [(well)-256(as)-256(completely)-256(arbitrary)-256(assignments)-256(of)-256(equation)-256(indices)-256(to)-256(pr)18(ocesses.)-337(In)]TJ 1.002 0 0 1 99.596 622.443 Tm [(particular)-250(it)-250(is)-251(consistent)-250(with)-250(the)-250(usage)-250(of)-251(graph)-250(partitioning)-250(tools)-250(commonly)]TJ 1.02 0 0 1 99.895 610.488 Tm [(available)-288(in)-289(the)-288(literatur)18(e,)-299(e.g.)-434(METIS)-288([)]TJ 1 0 0 rg 1 0 0 RG - [(13)]TJ + 1 0 0 1 276.029 610.488 Tm [(14)]TJ 0 g 0 G - [(].)-558(Dense)-333(ve)1(ctors)-333(conform)-333(to)-332(sparse)]TJ 0 -11.955 Td [(matrices,)-257(that)-255(is,)-257(the)-255(entries)-255(of)-256(a)-255(vector)-255(follow)-256(the)-255(same)-255(distribution)-256(of)-255(the)-255(ma-)]TJ 0 -11.955 Td [(trix)-250(r)18(ows.)]TJ 14.944 -12.648 Td [(W)92(e)-343(assume)-344(that)-343(the)-344(sparse)-343(matrix)-343(is)-344(built)-343(in)-344(parallel,)-366(wher)18(e)-344(each)-343(pr)18(ocess)]TJ -14.944 -11.955 Td [(generates)-254(its)-254(own)-255(portion.)-322(W)92(e)-255(never)-254(r)18(equir)18(e)-254(that)-254(the)-255(entir)18(e)-254(matrix)-254(be)-254(available)]TJ 0 -11.955 Td [(on)-288(a)-288(single)-288(node.)-423(However)74(,)-298(it)-287(is)-288(possible)-288(to)-288(hold)-288(the)-288(entir)18(e)-288(matrix)-287(in)-288(one)-288(pr)18(o-)]TJ 0 -11.955 Td [(cess)-241(and)-242(distribute)-241(it)-241(explicitly)]TJ + 1.02 0 0 1 285.992 610.488 Tm [(].)-433(Dense)-289(vectors)-288(conform)-288(to)-288(sparse)]TJ 0.98 0 0 1 99.895 598.532 Tm [(matrices,)-228(that)-222(is,)-228(the)-221(entries)-221(of)-222(a)-221(vector)-222(follow)-221(the)-221(same)-222(distribution)-221(of)-221(the)-222(matrix)]TJ 1 0 0 1 99.895 586.577 Tm [(r)18(ows.)]TJ 1.02 0 0 1 114.839 573.93 Tm [(W)90(e)-290(assume)-290(that)-291(the)-290(sparse)-290(matrix)-290(is)-291(built)-290(in)-290(parallel,)-302(wher)18(e)-290(each)-291(pr)18(ocess)]TJ 1.002 0 0 1 99.895 561.974 Tm [(generates)-249(its)-249(own)-250(port)1(ion.)-310(W)92(e)-249(never)-249(r)18(equir)18(e)-250(th)1(at)-250(the)-249(entir)18(e)-249(matrix)-249(be)-249(available)]TJ 0.98 0 0 1 99.895 550.019 Tm [(on)-244(a)-244(single)-244(node.)-313(However)76(,)-247(it)-244(is)-244(possible)-244(to)-244(hold)-244(the)-244(entir)19(e)-244(matrix)-245(in)-244(one)-244(pr)19(ocess)]TJ 0.98 0 0 1 99.895 538.064 Tm [(and)-199(distr)1(ibute)-199(it)-198(explicitly)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 133.807 3.616 Td [(1)]TJ +/F84 7.5716 Tf 1 0 0 1 210.127 541.68 Tm [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(,)-243(even)-241(though)-242(the)-241(r)18(esulting)-241(memory)-241(bottleneck)]TJ -138.091 -11.955 Td [(would)-250(make)-250(this)-250(option)-250(unattractive)-250(in)-250(most)-250(cases.)]TJ/F59 11.9552 Tf 0 -33.074 Td [(2.1)-1000(Basic)-250(Nomenclature)]TJ/F62 9.9626 Tf 0 -20.306 Td [(Our)-301(computational)-301(model)-301(implies)-301(that)-301(the)-301(data)-301(al)1(location)-301(on)-301(the)-301(parallel)-301(dis-)]TJ 0 -11.955 Td [(tributed)-370(memory)-369(machine)-370(is)-370(guided)-370(by)-369(the)-370(str)8(uctur)18(e)-370(of)-370(the)-369(physical)-370(model,)]TJ 0 -11.955 Td [(and)-250(speci\002cally)-250(by)-250(the)-250(discr)18(etization)-250(mesh)-250(of)-250(the)-250(PDE.)]TJ 14.944 -12.648 Td [(Each)-400(point)-400(of)-400(the)-399(discr)18(etization)-400(mesh)-400(will)-400(have)-400(\050at)-400(least)1(\051)-400(one)-400(associated)]TJ -14.944 -11.955 Td [(equation/variable,)-416(and)-384(ther)18(efor)18(e)-383(one)-383(index.)-710(W)92(e)-383(say)-383(that)-384(point)]TJ/F60 9.9626 Tf 289.765 0 Td [(i)-403(depends)]TJ/F62 9.9626 Tf 42.709 0 Td [(on)]TJ -332.474 -11.955 Td [(point)]TJ/F60 9.9626 Tf 26.955 0 Td [(j)]TJ/F62 9.9626 Tf 6.004 0 Td [(if)-312(the)-312(equation)-312(for)-312(a)-312(variable)-313(associated)-312(with)]TJ/F60 9.9626 Tf 202.502 0 Td [(i)]TJ/F62 9.9626 Tf 6.074 0 Td [(contains)-312(a)-312(term)-312(in)]TJ/F60 9.9626 Tf 84.153 0 Td [(j)]TJ/F62 9.9626 Tf 2.894 0 Td [(,)-328(or)]TJ -328.582 -11.955 Td [(equivalently)-291(if)]TJ/F60 9.9626 Tf 67.321 0 Td [(a)]TJ/F60 7.5716 Tf 4.59 -1.96 Td [(i)-67(j)]TJ/F91 10.3811 Tf 8.967 1.96 Td [(6)]TJ/F93 10.3811 Tf 0.249 0 Td [(=)]TJ/F62 9.9626 Tf 11.726 0 Td [(0.)-434(After)-292(the)-291(partition)-292(of)-291(the)-292(discr)18(etization)-291(mesh)-292(into)]TJ/F60 9.9626 Tf 233.514 0 Td [(sub-)]TJ -326.367 -11.955 Td [(domains)]TJ/F62 9.9626 Tf 37.559 0 Td [(assigned)-381(to)-381(the)-381(parallel)-381(pr)18(ocesses,)-413(we)-381(classify)-381(the)-381(points)-381(of)-381(a)-381(given)]TJ -37.559 -11.955 Td [(sub-domain)-250(as)-250(following.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 214.41 538.064 Tm [(,)-210(even)-198(though)-199(the)-198(r)18(esulting)-198(memory)-199(bottleneck)-198(would)]TJ 1 0 0 1 99.895 526.109 Tm [(make)-250(this)-250(option)-250(unattractive)-250(in)-250(most)-250(cases.)]TJ/F75 11.9552 Tf 0 -33.074 Td [(2.1)-1000(Basic)-250(Nomenclature)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 472.73 Tm [(Our)-254(computational)-254(model)-255(implies)-254(that)-254(the)-254(data)-255(allocation)-254(on)-254(the)-254(parallel)-254(dis-)]TJ 0.981 0 0 1 99.895 460.774 Tm [(tributed)-254(memory)-253(machine)-254(is)-253(guided)-254(by)-253(the)-254(str)8(uctur)19(e)-254(of)-253(the)-254(physical)-254(model,)-253(and)]TJ 1 0 0 1 99.895 448.819 Tm [(speci\002cally)-250(by)-250(the)-250(discr)18(etization)-250(mesh)-250(of)-250(the)-250(PDE.)]TJ 1.02 0 0 1 114.839 436.172 Tm [(Each)-341(point)-341(of)-341(the)-341(discr)18(etization)-341(mesh)-341(will)-341(have)-341(\050at)-341(least\051)-341(one)-341(associated)]TJ 1.02 0 0 1 99.895 424.216 Tm [(equation/variable,)-353(and)-332(ther)18(efor)17(e)-331(one)-332(index.)-564(W)90(e)-331(say)-332(that)-332(point)]TJ/F78 9.9626 Tf 1 0 0 1 389.687 424.216 Tm [(i)]TJ 1.02 0 0 1 396.022 424.216 Tm [(depends)]TJ/F84 9.9626 Tf 1.02 0 0 1 432.144 424.216 Tm [(on)]TJ 1.02 0 0 1 99.596 412.261 Tm [(point)]TJ/F78 9.9626 Tf 1 0 0 1 126.7 412.261 Tm [(j)]TJ/F84 9.9626 Tf 1.02 0 0 1 132.384 412.261 Tm [(if)-275(the)-274(equation)-275(for)-274(a)-275(variable)-275(associated)-274(with)]TJ/F78 9.9626 Tf 1 0 0 1 335.887 412.261 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 341.641 412.261 Tm [(contains)-275(a)-274(term)-275(in)]TJ/F78 9.9626 Tf 1 0 0 1 425.943 412.261 Tm [(j)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.837 412.261 Tm [(,)-282(or)]TJ 1.02 0 0 1 99.895 400.306 Tm [(equivalently)-262(if)]TJ/F78 9.9626 Tf 1 0 0 1 167.957 400.306 Tm [(a)]TJ/F78 7.5716 Tf 4.59 -1.96 Td [(i)-67(j)]TJ/F179 10.3811 Tf 8.519 1.96 Td [(6)]TJ/F181 10.3811 Tf 0.249 0 Td [(=)]TJ/F84 9.9626 Tf 1.02 0 0 1 192.593 400.306 Tm [(0.)-355(After)-261(the)-262(partition)-262(of)-262(the)-262(discr)17(etizat)1(ion)-262(mesh)-262(into)]TJ/F78 9.9626 Tf 1.02 0 0 1 427.569 400.306 Tm [(sub-)]TJ 1.02 0 0 1 99.895 388.351 Tm [(domains)]TJ/F84 9.9626 Tf 1.02 0 0 1 137.642 388.351 Tm [(assigned)-326(to)-325(the)-326(parallel)-325(pr)17(ocesses,)-346(we)-325(classify)-326(the)-325(points)-326(of)-326(a)-325(given)]TJ 1 0 0 1 99.895 376.396 Tm [(sub-domain)-250(as)-250(following.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.003 Td [(Internal.)]TJ +/F75 9.9626 Tf 0 -22.003 Td [(Internal.)]TJ 0 g 0 G -/F62 9.9626 Tf 43.995 0 Td [(An)-359(internal)-359(poi)1(nt)-359(of)-359(a)-359(given)-359(domain)]TJ/F60 9.9626 Tf 168.65 0 Td [(depends)]TJ/F62 9.9626 Tf 35.684 0 Td [(only)-359(on)-359(points)-358(of)-359(the)]TJ -223.422 -11.955 Td [(same)-264(domain.)-351(If)-264(all)-264(points)-264(of)-264(a)-264(domain)-263(ar)18(e)-264(assigned)-264(to)-264(one)-264(pr)18(ocess,)-267(then)]TJ 0 -11.956 Td [(a)-196(computational)-196(step)-195(\050e.g.,)-207(a)-196(matrix-vector)-196(pr)18(oduct\051)-196(of)-195(the)-196(equations)-196(asso-)]TJ 0 -11.955 Td [(ciated)-214(with)-213(the)-214(internal)-214(points)-214(r)18(equir)18(es)-213(no)-214(data)-214(items)-214(fr)18(om)-213(other)-214(domains)]TJ 0 -11.955 Td [(and)-250(no)-250(communications.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 143.502 354.393 Tm [(An)-313(internal)-313(poin)1(t)-313(of)-313(a)-313(given)-313(domain)]TJ/F78 9.9626 Tf 1.02 0 0 1 312.255 354.393 Tm [(depends)]TJ/F84 9.9626 Tf 1.02 0 0 1 348.185 354.393 Tm [(only)-313(on)-313(points)-312(of)-313(the)]TJ 1.02 0 0 1 124.802 342.438 Tm [(same)-387(domain.)-729(If)-387(all)-387(points)-387(of)-386(a)-387(domain)-387(ar)18(e)-387(assigned)-387(to)-387(one)-387(pr)18(ocess,)]TJ 0.991 0 0 1 124.802 330.483 Tm [(then)-252(a)-252(computational)-251(step)-252(\050e.g.,)-252(a)-252(matrix-vector)-252(pr)19(oduct\051)-252(of)-252(the)-252(equations)]TJ 1.02 0 0 1 124.802 318.527 Tm [(associated)-369(wit)1(h)-369(the)-369(internal)-368(points)-369(r)18(equir)18(es)-369(no)-368(data)-369(items)-368(fr)17(om)-368(other)]TJ 1 0 0 1 124.802 306.572 Tm [(domains)-250(and)-250(no)-250(communications.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.695 Td [(Boundary)92(.)]TJ +/F75 9.9626 Tf -24.907 -22.695 Td [(Boundary)92(.)]TJ 0 g 0 G -/F62 9.9626 Tf 51.397 0 Td [(A)-192(point)-191(of)-192(a)-192(given)-191(domain)-192(is)-192(a)-191(boundary)-192(point)-192(if)-191(it)]TJ/F60 9.9626 Tf 217.552 0 Td [(depends)]TJ/F62 9.9626 Tf 34.019 0 Td [(on)-192(points)]TJ -278.061 -11.955 Td [(belonging)-250(to)-250(other)-250(domains.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 150.904 283.877 Tm [(A)-237(point)-237(of)-238(a)-237(given)-237(domain)-238(is)-237(a)-237(boundary)-237(point)-238(if)-237(it)]TJ/F78 9.9626 Tf 0.98 0 0 1 369.449 283.877 Tm [(depends)]TJ/F84 9.9626 Tf 0.98 0 0 1 403.233 283.877 Tm [(on)-237(points)]TJ 1 0 0 1 124.802 271.922 Tm [(belonging)-250(to)-250(other)-250(domains.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.696 Td [(Halo.)]TJ +/F75 9.9626 Tf -24.907 -22.695 Td [(Halo.)]TJ 0 g 0 G -/F62 9.9626 Tf 29.609 0 Td [(A)-389(halo)-389(point)-389(for)-389(a)-389(given)-389(domain)-389(i)1(s)-389(a)-389(point)-389(belonging)-389(to)-389(another)-389(do-)]TJ -4.702 -11.955 Td [(main)-267(such)-267(that)-266(ther)18(e)-267(is)-267(a)-267(boundary)-267(point)-266(which)]TJ/F60 9.9626 Tf 212.474 0 Td [(depends)]TJ/F62 9.9626 Tf 34.767 0 Td [(on)-267(it.)-360(Whenever)]TJ -247.241 -11.955 Td [(performing)-360(a)-361(computational)-360(step,)-388(such)-361(as)-360(a)-361(matrix-vector)-360(pr)18(oduct,)-388(the)]TJ 0 -11.955 Td [(values)-274(associated)-273(with)-274(halo)-274(points)-274(ar)18(e)-274(r)18(equested)-273(fr)18(om)-274(other)-274(domains.)-381(A)]TJ 0 -11.955 Td [(boundary)-259(point)-258(of)-259(a)-258(given)-259(domain)-258(is)-259(usually)-258(a)-259(halo)-258(point)-259(for)-259(some)-258(other)]TJ 0 -11.956 Td [(domain)]TJ +/F84 9.9626 Tf 1.02 0 0 1 129.116 249.227 Tm [(A)-357(halo)-357(point)-356(for)-357(a)-357(given)-357(domain)-357(is)-357(a)-357(point)-356(belonging)-357(to)-357(another)-357(do-)]TJ 1.009 0 0 1 124.802 237.271 Tm [(main)-247(such)-248(that)-247(ther)17(e)-247(is)-248(a)-247(boundary)-248(poi)1(nt)-248(which)]TJ/F78 9.9626 Tf 1.009 0 0 1 337.442 237.271 Tm [(depends)]TJ/F84 9.9626 Tf 1.009 0 0 1 372.328 237.271 Tm [(on)-248(it)1(.)-308(Whenever)]TJ 1.02 0 0 1 124.503 225.316 Tm [(performing)-297(a)-297(computational)-298(step,)-310(such)-297(as)-297(a)-297(matrix-vector)-298(pr)18(oduct,)-310(the)]TJ 1.012 0 0 1 124.523 213.361 Tm [(values)-247(associated)-247(with)-247(halo)-248(points)-247(ar)18(e)-247(r)18(equested)-248(fr)18(om)-247(other)-247(domains.)-307(A)]TJ 1.005 0 0 1 124.802 201.406 Tm [(boundary)-248(point)-248(of)-247(a)-248(given)-248(domain)-248(is)-248(usually)-248(a)-247(halo)-248(point)-248(for)-248(some)-248(other)]TJ 0.994 0 0 1 124.802 189.451 Tm [(domain)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 34.002 3.617 Td [(2)]TJ +/F84 7.5716 Tf 1 0 0 1 158.6 193.067 Tm [(2)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.617 Td [(;)-238(ther)18(efor)18(e)-232(the)-233(car)18(dinality)-232(of)-232(the)-232(boundary)-233(p)1(oints)-233(set)-232(denotes)-232(the)]TJ -38.286 -11.955 Td [(amount)-250(of)-250(data)-250(sent)-250(to)-250(other)-250(domains.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 162.884 189.451 Tm [(;)-252(ther)18(efor)18(e)-252(the)-252(car)18(dinality)-251(of)-252(the)-252(boundary)-252(points)-252(set)-252(denotes)-252(the)]TJ 1 0 0 1 124.802 177.496 Tm [(amount)-250(of)-250(data)-250(sent)-250(to)-250(other)-250(domains.)]TJ 0 g 0 G ET q @@ -4728,35 +4723,35 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 161.427 Td [(1)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(In)-250(our)-250(pr)18(ototype)-250(implementation)-250(we)-250(pr)18(ovide)-250(sample)-250(scatter/gather)-250(r)18(outines.)]TJ/F62 5.9776 Tf -3.487 -6.922 Td [(2)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(This)-401(is)-402(the)-401(normal)-402(situation)-401(when)-402(the)-401(pattern)-402(of)-401(the)-402(sparse)-401(matrix)-402(is)-401(symmetric,)-440(which)-401(is)]TJ -14.347 -9.464 Td [(equivalent)-358(to)-358(say)-358(that)-358(the)-357(interaction)-358(between)-358(two)-358(variables)-358(is)-358(r)18(ecipr)18(ocal.)-634(If)-357(the)-358(matrix)-358(pattern)]TJ 0 -9.465 Td [(is)-241(non-symmetric)-241(we)-242(may)-241(have)-241(one-way)-241(interactions,)-243(and)-241(these)-241(could)-241(cause)-242(a)-241(situation)-241(in)-241(which)-241(a)]TJ 0 -9.464 Td [(boundary)-250(point)-250(is)-250(not)-250(a)-250(halo)-250(point)-250(for)-250(its)-250(neighbour)74(.)]TJ +/F84 5.9776 Tf 110.755 161.427 Td [(1)]TJ/F84 7.9701 Tf 3.487 -2.893 Td [(In)-250(our)-250(pr)18(ototype)-250(implementation)-250(we)-250(pr)18(ovide)-250(sample)-250(scatter/gather)-250(r)18(outines.)]TJ/F84 5.9776 Tf -3.487 -6.922 Td [(2)]TJ/F84 7.9701 Tf 1.02 0 0 1 113.995 148.719 Tm [(This)-350(is)-350(the)-351(normal)-350(situation)-350(when)-350(the)-351(pattern)-350(of)-350(the)-350(sparse)-351(matrix)-350(is)-350(symmetric,)-377(which)-350(is)]TJ 1.02 0 0 1 99.895 139.255 Tm [(equivalent)-244(to)-245(say)-244(that)-245(t)1(he)-245(interaction)-244(between)-245(two)-244(variables)-244(is)-245(r)18(ecipr)18(ocal.)-304(If)-244(the)-245(matrix)-244(pattern)-244(is)]TJ 1.02 0 0 1 99.895 129.79 Tm [(non-symmetric)-249(we)-249(may)-249(have)-249(one-way)-250(interact)1(ions,)-251(and)-249(these)-249(could)-249(cause)-249(a)-249(situation)-249(in)-249(which)-249(a)]TJ 1 0 0 1 99.895 120.326 Tm [(boundary)-250(point)-250(is)-250(not)-250(a)-250(halo)-250(point)-250(for)-250(its)-250(neighbour)74(.)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 169.365 -29.888 Td [(3)]TJ +/F84 9.9626 Tf 169.365 -29.888 Td [(3)]TJ 0 g 0 G ET endstream endobj -924 0 obj +932 0 obj << -/Length 4830 +/Length 5244 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(Overlap.)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(Overlap.)]TJ 0 g 0 G -/F62 9.9626 Tf 44.553 0 Td [(An)-245(overlap)-244(point)-245(is)-245(a)-245(boundary)-244(point)-245(assigned)-245(to)-244(multiple)-245(domains.)]TJ -19.647 -11.955 Td [(Any)-204(operation)-204(that)-204(involves)-204(an)-204(overlap)-204(point)-204(has)-204(to)-204(be)-204(r)18(eplicated)-204(for)-204(each)]TJ 0 -11.955 Td [(assignment.)]TJ -24.906 -18.943 Td [(Overlap)-358(points)-359(do)-358(not)-358(usually)-359(exist)-358(in)-359(the)-358(basic)-358(data)-359(distributions;)-412(however)]TJ 0 -11.955 Td [(they)-325(ar)18(e)-326(a)-325(featur)18(e)-326(of)-325(Domain)-326(Decomposition)-325(Schwarz)-326(pr)18(econditioners)-325(which)]TJ 0 -11.956 Td [(ar)18(e)-250(the)-250(subject)-250(of)-250(r)18(elated)-250(r)18(esear)18(ch)-250(work)-250([)]TJ +/F84 9.9626 Tf 1.006 0 0 1 194.869 706.129 Tm [(An)-248(overlap)-248(point)-248(is)-248(a)-248(boundary)-248(point)-249(assigned)-248(to)-248(multiple)-248(domains.)]TJ 0.983 0 0 1 175.223 694.174 Tm [(Any)-253(operation)-254(that)-253(involves)-254(an)-253(overlap)-254(point)-253(has)-254(to)-253(be)-254(r)19(eplicated)-254(for)-253(each)]TJ 1 0 0 1 175.611 682.219 Tm [(assignment.)]TJ 0.98 0 0 1 150.705 663.276 Tm [(Overlap)-232(points)-233(do)-232(not)-233(usually)-232(exist)-233(in)-232(the)-233(basic)-232(data)-233(distributions;)-240(however)-232(they)]TJ 0.989 0 0 1 150.705 651.321 Tm [(ar)18(e)-251(a)-252(featur)19(e)-252(of)-251(Domain)-251(Decomposition)-252(Schwarz)-251(pr)18(econditioners)-251(which)-252(ar)19(e)-252(the)]TJ 1 0 0 1 150.705 639.365 Tm [(subject)-250(of)-250(r)18(elated)-250(r)18(esear)18(ch)-250(work)-250([)]TJ 1 0 0 rg 1 0 0 RG - [(3)]TJ + [(4)]TJ 0 g 0 G [(,)]TJ 1 0 0 rg 1 0 0 RG - [-250(2)]TJ + [-250(3)]TJ 0 g 0 G - [(].)]TJ 14.944 -11.955 Td [(W)92(e)-225(denote)-225(the)-225(sets)-225(of)-225(internal,)-230(boundary)-225(and)-225(halo)-225(points)-225(for)-225(a)-225(given)-225(subdo-)]TJ -14.944 -11.955 Td [(main)-251(by)]TJ/F91 10.3811 Tf 38.66 0 Td [(I)]TJ/F62 9.9626 Tf 6.53 0 Td [(,)]TJ/F91 10.3811 Tf 5.125 0 Td [(B)]TJ/F62 9.9626 Tf 9.753 0 Td [(and)]TJ/F91 10.3811 Tf 19.497 0 Td [(H)]TJ/F62 9.9626 Tf 8.972 0 Td [(.)-314(Each)-252(subdomain)-251(is)-252(assigned)-251(to)-252(one)-251(pr)18(ocess;)-253(each)-251(pr)18(ocess)]TJ -88.537 -11.955 Td [(usually)-346(owns)-346(one)-346(su)1(bdomain,)-370(although)-346(the)-346(user)-346(may)-346(choose)-345(to)-346(assign)-346(mor)18(e)]TJ 0 -11.955 Td [(than)-302(one)-301(subdomain)-302(to)-301(a)-302(pr)18(ocess.)-465(If)-302(each)-301(pr)18(ocess)]TJ/F60 9.9626 Tf 222.767 0 Td [(i)]TJ/F62 9.9626 Tf 5.968 0 Td [(owns)-302(one)-301(subdomain,)-315(the)]TJ -228.735 -11.956 Td [(number)-221(of)-221(r)18(ows)-221(in)-221(the)-221(local)-221(sparse)-221(matrix)-221(is)]TJ/F91 10.3811 Tf 192.655 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 4.799 0 Td [(+)]TJ/F91 10.3811 Tf 9.989 0 Td [(j)-24(B)]TJ/F60 7.5716 Tf 10.108 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.003 0 Td [(,)-227(and)-221(the)-221(number)-221(of)-221(local)]TJ -235.248 -11.955 Td [(columns)-207(\050i.e.)-296(those)-207(for)-207(which)-207(ther)18(e)-208(exists)-207(at)-207(least)-207(one)-207(non-zer)18(o)-208(entry)-207(in)-207(the)-207(local)]TJ 0 -11.955 Td [(r)18(ows\051)-250(is)]TJ/F91 10.3811 Tf 37.275 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.066 0 Td [(+)]TJ/F91 10.3811 Tf 10.255 0 Td [(j)-24(B)]TJ/F60 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.066 0 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(j)-24(H)]TJ/F60 7.5716 Tf 12.051 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.004 0 Td [(.)]TJ + [(].)]TJ 0.995 0 0 1 165.649 627.41 Tm [(W)92(e)-251(denote)-251(the)-251(sets)-251(of)-251(internal,)-251(boundary)-251(and)-251(halo)-251(points)-251(for)-251(a)-251(given)-251(subdo-)]TJ 1.001 0 0 1 150.705 615.455 Tm [(main)-249(by)]TJ/F179 10.3811 Tf 1 0 0 1 189.363 615.455 Tm [(I)]TJ/F84 9.9626 Tf 1.001 0 0 1 195.893 615.455 Tm [(,)]TJ/F179 10.3811 Tf 1 0 0 1 201 615.455 Tm [(B)]TJ/F84 9.9626 Tf 1.001 0 0 1 210.736 615.455 Tm [(and)]TJ/F179 10.3811 Tf 1 0 0 1 230.232 615.455 Tm [(H)]TJ/F84 9.9626 Tf 1.001 0 0 1 239.203 615.455 Tm [(.)-310(Each)-249(subdomain)-250(is)-249(assigned)-249(to)-250(one)-249(pr)18(ocess;)-250(each)-249(pr)17(oc)1(ess)]TJ 1.02 0 0 1 150.705 603.5 Tm [(usually)-286(owns)-285(one)-286(subdomain,)-295(although)-286(the)-285(user)-286(may)-286(choose)-285(to)-286(assign)-285(mor)17(e)]TJ 1.02 0 0 1 150.705 591.545 Tm [(than)-257(one)-257(subdomain)-257(to)-257(a)-257(pr)18(ocess.)-340(If)-257(each)-257(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 373.028 591.545 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 378.603 591.545 Tm [(owns)-257(one)-257(subdomain,)-260(the)]TJ 0.983 0 0 1 150.705 579.589 Tm [(number)-255(of)-255(r)19(ows)-255(in)-255(the)-255(local)-255(sparse)-255(matrix)-255(is)]TJ/F179 10.3811 Tf 1 0 0 1 343.065 579.589 Tm [(j)-24(I)]TJ/F78 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.068 0 Td [(+)]TJ/F179 10.3811 Tf 10.258 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.108 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F84 9.9626 Tf 0.983 0 0 1 386.196 579.589 Tm [(,)-255(and)-255(the)-255(number)-255(of)-254(local)]TJ 0.982 0 0 1 150.705 567.634 Tm [(columns)-254(\050i.e.)-316(those)-254(for)-255(which)-254(ther)18(e)-254(exists)-254(at)-255(least)-254(one)-254(non-zer)18(o)-254(entry)-255(in)-254(the)-255(local)]TJ 1 0 0 1 150.705 555.679 Tm [(r)18(ows\051)-250(is)]TJ/F179 10.3811 Tf 37.275 0 Td [(j)-24(I)]TJ/F78 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.066 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.066 0 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(j)-24(H)]TJ/F78 7.5716 Tf 12.051 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf 3.004 0 Td [(.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -4775,14 +4770,14 @@ Q 0 g 0 G 1 0 0 1 -222.462 -541.675 cm BT -/F62 9.9626 Tf 260.803 335.398 Td [(Figur)18(e)-250(2:)-310(Point)-250(class\002cation.)]TJ +/F84 9.9626 Tf 260.803 335.398 Td [(Figur)18(e)-250(2:)-310(Point)-250(class\002cation.)]TJ 0 g 0 G 0 g 0 G - -95.154 -23.688 Td [(This)-190(classi\002cation)-190(of)-190(mesh)-190(points)-190(guides)-190(the)-190(naming)-190(scheme)-190(that)-190(we)-190(adopted)]TJ -14.944 -11.956 Td [(in)-190(the)-190(library)-190(internals)-190(and)-190(in)-190(the)-190(data)-190(str)8(uctur)18(es.)-290(W)92(e)-190(explicitly)-190(note)-190(that)-190(\223Halo\224)]TJ 0 -11.955 Td [(points)-250(ar)18(e)-250(also)-250(often)-250(called)-250(\223ghost\224)-250(points)-250(in)-250(the)-250(literatur)18(e.)]TJ/F59 11.9552 Tf 0 -28.902 Td [(2.2)-1000(Library)-250(contents)]TJ/F62 9.9626 Tf 0 -18.964 Td [(The)-250(PSBLAS)-250(library)-250(consists)-250(of)-250(various)-250(classes)-250(of)-250(subr)18(outines:)]TJ + 0.98 0 0 1 165.649 311.71 Tm [(This)-211(classi\002cation)-211(of)-211(mesh)-211(points)-211(guides)-211(the)-211(naming)-211(scheme)-211(that)-212(we)-211(adopted)]TJ 0.982 0 0 1 150.705 299.754 Tm [(in)-256(the)-255(library)-256(internals)-255(and)-256(in)-255(the)-256(data)-255(str)8(uctur)18(es.)-319(W)94(e)-256(explici)1(tly)-256(note)-256(that)-255(\223Halo\224)]TJ 1 0 0 1 150.406 287.799 Tm [(points)-250(ar)18(e)-250(also)-250(often)-250(called)-250(\223ghost\224)-250(points)-250(in)-250(the)-250(literatur)18(e.)]TJ/F75 11.9552 Tf 0.299 -28.902 Td [(2.2)-1000(Library)-250(contents)]TJ/F84 9.9626 Tf -0.309 -18.964 Td [(The)-250(PSBLAS)-250(library)-250(consists)-250(of)-250(various)-250(classes)-250(of)-250(subr)18(outines:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -18.943 Td [(Computational)-250(routines)]TJ +/F75 9.9626 Tf 0.309 -18.943 Td [(Computational)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 113.723 0 Td [(comprising:)]TJ +/F84 9.9626 Tf 113.723 0 Td [(comprising:)]TJ 0 g 0 G -77.917 -19.434 Td [(\225)]TJ 0 g 0 G @@ -4794,7 +4789,7 @@ BT 0 g 0 G 0 -15.449 Td [(\225)]TJ 0 g 0 G - [-500(V)111(ector)-250(and)-250(matrix)-250(norms;)]TJ + [-464(V)111(ector)-250(and)-250(matrix)-250(norms;)]TJ 0 g 0 G 0 -15.449 Td [(\225)]TJ 0 g 0 G @@ -4804,9 +4799,9 @@ BT 0 g 0 G [-500(Dot)-250(pr)18(oducts.)]TJ 0 g 0 G -/F59 9.9626 Tf -35.806 -19.434 Td [(Communication)-250(routines)]TJ +/F75 9.9626 Tf -35.806 -19.434 Td [(Communication)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 118.704 0 Td [(handling)-250(halo)-250(and)-250(overlap)-250(communications;)]TJ +/F84 9.9626 Tf 118.704 0 Td [(handling)-250(halo)-250(and)-250(overlap)-250(communications;)]TJ 0 g 0 G 50.661 -29.888 Td [(4)]TJ 0 g 0 G @@ -4814,20 +4809,20 @@ ET endstream endobj -921 0 obj +929 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/points.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 927 0 R +/PTEX.InfoDict 935 0 R /BBox [0 0 274 308] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 928 0 R ->>/Font << /R8 929 0 R>> +/R7 936 0 R +>>/Font << /R8 937 0 R>> >> /Length 1397 /Filter /FlateDecode @@ -4837,18 +4832,18 @@ x  3B=bAH}ϩc?ׄe]_?dwGad"沾}e4ߠ,s,_x/w׷~[Z.1uoO*x/22T<ᜇd&o/VC1V^dR 9^Ӿ͚zzõ7!SjJRWZSNm ide3fyRO|J_F~]~z2}VНm΀sQ<I}y5N p%UW@E$|pxE`&U %AIU0G]&MJxT.)~C8}~WۢvKK,8͗&`[C*ONs m 9؆u!`{P9mKI7oB*O샹~̳'^IavRy!zw'`x"0.Ѥb'i|sP:-%X/[^#ahdPY/)Zq&-VֽONtnGY& ˒וB̜Mnng%#؜ǂ"d;)(\X0}Zp#`ӆS%Hvţf``-+ЎQ49Ç,xO/,f,zinv$-܌`?禩|,7c;@!os]?ݲta0yҥZdyORܐ<%9䃀[}拇6m8uIPhf>m))YꓠҐ<%9䃀[}kWOr= A} 0' 9S,ir+\_uݿѐE?{'ȋB#4_$&`[qq&/> M5^_'`[BO% /]07o[qq &/M 5^_'n޶4.16sܥ%]!CgVe@ٖ$)5-5}?Lg+ |>{>hO‘jX5~,>0x},1c X€5Xb$3 څt=>tp8Շ$i>-%TXJR#gL“-J/0jȶw.ickZ,Ԥ^kU Wjǂ.UEzgP,"e̋:t!*%~ *Q@emPM1:ޒX(4 N]J' endstream endobj -936 0 obj +944 0 obj << -/Length 4927 +/Length 5268 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(Data)-250(management)-250(and)-250(auxiliary)-250(routines)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(Data)-250(management)-250(and)-250(auxiliary)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 190.375 0 Td [(including:)]TJ +/F84 9.9626 Tf 190.375 0 Td [(including:)]TJ 0 g 0 G -154.569 -24.208 Td [(\225)]TJ 0 g 0 G @@ -4870,175 +4865,178 @@ BT 0 g 0 G [-500(Sparse)-250(matrix)-250(and)-250(data)-250(distribution)-250(pr)18(epr)18(ocessing.)]TJ 0 g 0 G -/F59 9.9626 Tf -35.806 -24.207 Td [(Preconditioner)-250(routines)]TJ +/F75 9.9626 Tf -35.806 -24.207 Td [(Preconditioner)-250(routines)]TJ 0 g 0 G 0 g 0 G 0 -24.208 Td [(Iterative)-250(methods)]TJ 0 g 0 G -/F62 9.9626 Tf 84.951 0 Td [(a)-250(subset)-250(of)-250(Krylov)-250(subspace)-250(iterative)-250(methods)]TJ -84.951 -23.137 Td [(The)-262(following)-263(naming)-262(scheme)-262(has)-262(been)-263(adopted)-262(for)-262(all)-263(the)-262(symbols)-262(internally)]TJ 0 -11.955 Td [(de\002ned)-250(in)-250(the)-250(PSBLAS)-250(softwar)18(e)-250(package:)]TJ +/F84 9.9626 Tf 84.951 0 Td [(a)-250(subset)-250(of)-250(Krylov)-250(subspace)-250(iterative)-250(methods)]TJ 1.007 0 0 1 99.587 538.043 Tm [(The)-247(following)-247(naming)-246(scheme)-247(has)-247(been)-247(adopted)-247(for)-246(all)-247(the)-247(symbols)-247(internally)]TJ 1 0 0 1 99.895 526.088 Tm [(de\002ned)-250(in)-250(the)-250(PSBLAS)-250(softwar)18(e)-250(package:)]TJ 0 g 0 G 13.888 -23.137 Td [(\225)]TJ 0 g 0 G - [-500(all)-250(symbols)-250(\050i.e.)-310(subr)18(outine)-250(names,)-250(data)-250(types...\051)-310(ar)18(e)-250(pr)18(e\002xed)-250(by)]TJ/F67 9.9626 Tf 294.184 0 Td [(psb_)]TJ + [-500(all)-250(symbols)-250(\050i.e.)-310(subr)18(outine)-250(names,)-250(data)-250(types...\051)-310(ar)18(e)-250(pr)18(e\002xed)-250(by)]TJ/F131 9.9626 Tf 294.184 0 Td [(psb_)]TJ 0 g 0 G -/F62 9.9626 Tf -294.184 -24.208 Td [(\225)]TJ +/F84 9.9626 Tf -294.184 -24.208 Td [(\225)]TJ 0 g 0 G - [-500(all)-250(data)-250(type)-250(names)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F67 9.9626 Tf 166.604 0 Td [(_type)]TJ + [-500(all)-250(data)-250(type)-250(names)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F131 9.9626 Tf 166.604 0 Td [(_type)]TJ 0 g 0 G -/F62 9.9626 Tf -166.604 -24.208 Td [(\225)]TJ +/F84 9.9626 Tf -166.604 -24.208 Td [(\225)]TJ 0 g 0 G - [-500(all)-250(constants)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F67 9.9626 Tf 135.59 0 Td [(_)]TJ + [-500(all)-250(constants)-250(ar)18(e)-250(suf)18(\002xed)-250(by)]TJ/F131 9.9626 Tf 135.591 0 Td [(_)]TJ 0 g 0 G -/F62 9.9626 Tf -135.59 -24.208 Td [(\225)]TJ +/F84 9.9626 Tf -135.591 -24.208 Td [(\225)]TJ 0 g 0 G - [-500(all)-279(top-level)-279(subr)18(outine)-279(names)-279(follow)-279(the)-279(r)8(ule)]TJ/F67 9.9626 Tf 216.11 0 Td [(psb_xxname)]TJ/F62 9.9626 Tf 55.083 0 Td [(wher)18(e)]TJ/F67 9.9626 Tf 30.187 0 Td [(xx)]TJ/F62 9.9626 Tf 13.241 0 Td [(can)]TJ -303.602 -11.955 Td [(be)-250(either:)]TJ + 1.013 0 0 1 124.802 430.327 Tm [(all)-246(top-level)-246(subr)18(outine)-246(names)-246(follow)-246(the)-246(r)8(ule)]TJ/F131 9.9626 Tf 1 0 0 1 330.228 430.327 Tm [(psb_xxname)]TJ/F84 9.9626 Tf 1.013 0 0 1 385.014 430.327 Tm [(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 415.263 430.327 Tm [(xx)]TJ/F84 9.9626 Tf 1.013 0 0 1 428.206 430.327 Tm [(can)]TJ 1 0 0 1 124.802 418.372 Tm [(be)-250(either:)]TJ 0 g 0 G -/F59 9.9626 Tf 11.955 -24.208 Td [(\226)]TJ +/F75 9.9626 Tf 11.955 -24.208 Td [(\226)]TJ 0 g 0 G -/F67 9.9626 Tf 9.963 0 Td [(ge)]TJ/F62 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(dense)-250(data,)]TJ +/F131 9.9626 Tf 9.963 0 Td [(ge)]TJ/F84 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(dense)-250(data,)]TJ 0 g 0 G -/F59 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ +/F75 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ 0 g 0 G -/F67 9.9626 Tf 9.963 0 Td [(sp)]TJ/F62 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(sparse)-250(data,)]TJ +/F131 9.9626 Tf 9.963 0 Td [(sp)]TJ/F84 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(sparse)-250(data,)]TJ 0 g 0 G -/F59 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ +/F75 9.9626 Tf -20.423 -18.081 Td [(\226)]TJ 0 g 0 G -/F67 9.9626 Tf 9.963 0 Td [(cd)]TJ/F62 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(communication)-250(descriptor)-250(\050see)]TJ +/F131 9.9626 Tf 9.963 0 Td [(cd)]TJ/F84 9.9626 Tf 10.46 0 Td [(:)-310(the)-250(r)18(outine)-250(is)-250(r)18(elated)-250(to)-250(communication)-250(descriptor)-250(\050see)]TJ 0 0 1 rg 0 0 1 RG [-250(3)]TJ 0 g 0 G - [(\051.)]TJ -32.378 -24.208 Td [(For)-215(example)-215(the)]TJ/F67 9.9626 Tf 72.515 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ/F67 9.9626 Tf 4.704 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.218 0 Td [(and)]TJ/F67 9.9626 Tf 19.011 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 49.218 0 Td [(perform)-215(the)-215(same)]TJ -241.739 -11.955 Td [(action)-247(\050see)]TJ + [(\051.)]TJ 0.981 0 0 1 124.802 333.794 Tm [(For)-254(example)-255(the)]TJ/F131 9.9626 Tf 1 0 0 1 197.086 333.794 Tm [(psb_geins)]TJ/F84 9.9626 Tf 0.981 0 0 1 244.159 333.794 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 249.09 333.794 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.981 0 0 1 298.649 333.794 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 317.681 333.794 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 0.981 0 0 1 367.241 333.794 Tm [(perform)-254(the)-255(same)]TJ 1.02 0 0 1 124.802 321.839 Tm [(action)-359(\050see)]TJ 0 0 1 rg 0 0 1 RG - [-246(6)]TJ + [-359(6)]TJ 0 g 0 G - [(\051)-247(on)-246(dense)-247(matrices,)-247(sparse)-247(matric)1(es)-247(and)-247(communication)-246(de-)]TJ 0 -11.956 Td [(scriptors)-222(r)18(espectively)111(.)-301(Interface)-222(overloading)-223(allows)-222(the)-222(usage)-222(of)-223(the)-222(same)]TJ 0 -11.955 Td [(subr)18(outine)-250(names)-250(for)-250(both)-250(r)18(eal)-250(and)-250(complex)-250(data.)]TJ -24.907 -23.137 Td [(In)-288(the)-288(description)-288(of)-289(the)-288(subr)18(outines,)-297(ar)18(guments)-289(or)-288(ar)18(gument)-288(entries)-288(ar)18(e)-288(clas-)]TJ 0 -11.955 Td [(si\002ed)-250(as:)]TJ + [(\051)-360(on)-359(dense)-359(matrices,)-388(sparse)-359(matrices)-359(and)-360(communication)]TJ 1.02 0 0 1 124.802 309.883 Tm [(descriptors)-308(r)18(espectively)109(.)-492(Interface)-307(overloading)-308(allows)-308(the)-307(usage)-308(of)-308(the)]TJ 1 0 0 1 124.802 297.928 Tm [(same)-250(subr)18(outine)-250(names)-250(for)-250(both)-250(r)18(eal)-250(and)-250(complex)-250(data.)]TJ 0.996 0 0 1 99.895 274.791 Tm [(In)-252(the)-252(description)-251(of)-252(the)-252(subr)18(outines,)-252(ar)18(guments)-251(or)-252(ar)18(gument)-252(entries)-252(ar)18(e)-251(classi-)]TJ 1 0 0 1 99.895 262.836 Tm [(\002ed)-250(as:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -23.137 Td [(global)]TJ +/F75 9.9626 Tf 0 -23.137 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(For)-270(input)-270(ar)18(guments,)-275(the)-270(value)-271(must)-270(be)-270(the)-270(same)-270(on)-270(all)-270(pr)18(ocesses)-270(par)18(-)]TJ -8.856 -11.955 Td [(ticipating)-276(in)-277(the)-276(subr)18(outine)-277(call;)-289(for)-277(output)-276(ar)18(guments)-277(the)-276(value)-277(is)-276(guar)18(-)]TJ 0 -11.955 Td [(anteed)-250(to)-250(be)-250(the)-250(same.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 133.659 239.699 Tm [(For)-223(input)-223(ar)19(guments,)-230(the)-223(value)-222(must)-223(be)-223(the)-223(same)-223(on)-223(all)-223(pr)18(ocesses)-222(partici-)]TJ 0.98 0 0 1 124.503 227.744 Tm [(pating)-220(in)-219(the)-220(subr)18(outine)-219(call;)-232(for)-220(output)-219(ar)18(guments)-220(the)-219(value)-220(is)-220(guaranteed)]TJ 1 0 0 1 124.802 215.789 Tm [(to)-250(be)-250(the)-250(same.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.208 Td [(local)]TJ +/F75 9.9626 Tf -24.907 -24.208 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(Each)-250(pr)18(ocess)-250(has)-250(its)-250(own)-250(value\050s\051)-250(independently)111(.)]TJ -26.56 -23.137 Td [(T)92(o)-250(\002nish)-250(our)-250(general)-250(description,)-250(we)-250(de\002ne)-250(a)-250(version)-250(string)-250(with)-250(the)-250(constant)]TJ/F67 9.9626 Tf 122.168 -24.059 Td [(psb_version_string_)]TJ/F62 9.9626 Tf -122.168 -24.059 Td [(whose)-250(curr)18(ent)-250(value)-250(is)]TJ/F67 9.9626 Tf 101.857 0 Td [(3.8.0)]TJ +/F84 9.9626 Tf 26.561 0 Td [(Each)-250(pr)18(ocess)-250(has)-250(its)-250(own)-250(value\050s\051)-250(independently)111(.)]TJ -26.869 -23.137 Td [(T)92(o)-250(\002nish)-250(our)-250(general)-250(description,)-250(we)-250(de\002ne)-250(a)-250(version)-250(string)-250(with)-250(the)-250(constant)]TJ/F131 9.9626 Tf 122.476 -24.059 Td [(psb_version_string_)]TJ/F84 9.9626 Tf -122.586 -24.059 Td [(whose)-250(curr)18(ent)-250(value)-250(is)]TJ/F131 9.9626 Tf 101.857 0 Td [(3.9.0)]TJ 0 g 0 G -/F62 9.9626 Tf 67.508 -29.888 Td [(5)]TJ +/F84 9.9626 Tf 67.926 -29.888 Td [(5)]TJ 0 g 0 G ET endstream endobj -941 0 obj +949 0 obj << -/Length 8378 +/Length 9679 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(2.3)-1000(Application)-250(structure)]TJ/F62 9.9626 Tf 0 -19.381 Td [(The)-244(main)-244(underlyi)1(ng)-244(principle)-244(of)-244(the)-244(PSBLAS)-243(library)-244(is)-244(that)-244(the)-243(library)-244(objects)]TJ 0 -11.956 Td [(ar)18(e)-236(cr)18(eated)-235(and)-236(exist)-235(with)-236(r)18(efer)18(ence)-235(to)-236(a)-235(discr)18(etized)-236(space)-236(t)1(o)-236(which)-236(ther)18(e)-235(corr)18(e-)]TJ 0 -11.955 Td [(sponds)-258(an)-257(index)-258(space)-257(and)-258(a)-258(matrix)-257(sparsity)-258(pattern.)-332(As)-258(an)-258(example,)-259(consider)]TJ 0 -11.955 Td [(a)-310(cell-center)18(ed)-309(\002nite-volume)-310(discr)18(etization)-310(of)-309(the)-310(Navier)18(-Stokes)-310(e)1(quations)-310(on)]TJ 0 -11.955 Td [(a)-234(simulation)-235(domain;)-239(the)-234(index)-235(space)-234(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 185.595 0 Td [(n)]TJ/F62 9.9626 Tf 7.998 0 Td [(is)-234(isomorphic)-235(to)-234(the)-234(set)-235(of)-234(cell)-234(cen-)]TJ -193.593 -11.955 Td [(ters,)-210(wher)18(eas)-200(the)-201(pattern)-200(of)-200(the)-201(associated)-200(linear)-200(system)-200(matrix)-201(is)-200(isomorphic)-200(to)]TJ 0 -11.956 Td [(the)-294(adjacency)-294(graph)-294(imposed)-294(on)-294(the)-294(discr)18(et)1(ization)-294(mesh)-294(by)-294(the)-294(discr)18(etization)]TJ 0 -11.955 Td [(stencil.)]TJ 14.944 -12.17 Td [(Thus)-343(the)-343(\002rst)-343(or)18(der)-344(of)-343(business)-343(is)-343(to)-343(establish)-343(an)-343(index)-343(space,)-367(and)-343(this)-343(is)]TJ -14.944 -11.955 Td [(done)-287(with)-287(a)-287(call)-287(to)]TJ/F67 9.9626 Tf 85.52 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 49.932 0 Td [(in)-287(which)-287(we)-287(specify)-287(the)-287(size)-287(of)-287(the)-287(index)-287(space)]TJ/F60 9.9626 Tf -135.328 -11.956 Td [(n)]TJ/F62 9.9626 Tf 8.041 0 Td [(and)-238(the)-239(allocation)-238(of)-239(the)-239(ele)1(ments)-239(of)-239(the)-238(index)-239(space)-238(to)-239(the)-238(various)-239(pr)18(ocesses)]TJ -8.165 -11.955 Td [(making)-250(up)-250(the)-250(MPI)-250(\050virtual\051)-250(parallel)-250(machine.)]TJ 14.944 -12.17 Td [(The)-366(index)-367(space)-366(is)-366(partitioned)-367(among)-366(pr)18(ocesses,)-396(and)-366(this)-366(cr)18(eates)-367(a)-366(map-)]TJ -14.944 -11.956 Td [(ping)-301(fr)18(om)-300(the)-301(\223global\224)-301(numbering)-300(1)-180(.)-191(.)-192(.)]TJ/F60 9.9626 Tf 176.584 0 Td [(n)]TJ/F62 9.9626 Tf 8.659 0 Td [(to)-301(a)-300(numbering)-301(\223local\224)-301(to)-301(each)-300(pr)18(o-)]TJ -185.243 -11.955 Td [(cess;)-230(each)-221(pr)18(ocess)]TJ/F60 9.9626 Tf 79.682 0 Td [(i)]TJ/F62 9.9626 Tf 5.162 0 Td [(will)-221(own)-220(a)-221(certain)-220(subset)-221(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 130.532 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -1.494 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.537 -1.649 Td [(i)]TJ/F62 9.9626 Tf 2.775 3.143 Td [(,)-226(each)-221(element)-221(of)-220(which)]TJ -241.352 -11.955 Td [(corr)18(esponds)-258(to)-259(a)-258(certain)-258(element)-258(of)-259(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 177.035 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 0 Td [(.)-335(The)-258(user)-259(doe)1(s)-259(not)-258(set)-258(explicitly)-259(this)]TJ -182.699 -11.955 Td [(mapping;)-225(when)-212(the)-212(application)-212(needs)-213(to)-212(indicate)-212(to)-212(which)-213(el)1(ement)-213(of)-212(the)-212(index)]TJ 0 -11.955 Td [(space)-305(a)-306(certain)-305(item)-306(is)-305(r)18(elated,)-320(such)-305(as)-306(the)-305(r)18(ow)-306(and)-305(column)-306(index)-305(of)-306(a)-305(matrix)]TJ 0 -11.956 Td [(coef)18(\002cient,)-283(it)-276(does)-277(so)-276(in)-277(the)-276(\223global\224)-277(numb)1(ering,)-284(and)-276(the)-276(library)-277(will)-276(translate)]TJ 0 -11.955 Td [(into)-250(the)-250(appr)18(opriate)-250(\223local\224)-250(numbering.)]TJ 14.944 -12.17 Td [(For)-324(a)-325(given)-324(index)-324(space)-325(1)-179(.)-191(.)-192(.)]TJ/F60 9.9626 Tf 129.74 0 Td [(n)]TJ/F62 9.9626 Tf 8.895 0 Td [(ther)18(e)-324(ar)18(e)-325(many)-324(possible)-324(associated)-325(topolo-)]TJ -153.579 -11.956 Td [(gies,)-213(i.e.)-295(many)-204(dif)18(fer)18(ent)-204(discr)18(etization)-204(stencils;)-220(thus)-204(the)-204(description)-204(of)-204(the)-204(index)]TJ 0 -11.955 Td [(space)-277(is)-278(not)-277(completed)-278(until)-277(the)-277(user)-278(has)-277(de\002ned)-278(a)-277(sparsity)-278(p)1(attern,)-285(either)-277(ex-)]TJ 0 -11.955 Td [(plicitly)-263(thr)18(ough)]TJ/F67 9.9626 Tf 71.63 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 49.698 0 Td [(or)-264(im)1(plicitly)-264(thr)18(ough)]TJ/F67 9.9626 Tf 95.326 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)-351(T)1(he)-264(descriptor)-263(is)]TJ -263.727 -11.955 Td [(\002nalized)-225(with)-225(a)-225(call)-226(to)]TJ/F67 9.9626 Tf 98.787 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 49.316 0 Td [(and)-225(a)-225(sparse)-225(matrix)-226(with)-225(a)-225(call)-225(to)]TJ/F67 9.9626 Tf 146.044 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)]TJ -341.22 -11.955 Td [(After)]TJ/F67 9.9626 Tf 26.16 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 50.21 0 Td [(each)-315(pr)18(ocess)]TJ/F60 9.9626 Tf 59.13 0 Td [(i)]TJ/F62 9.9626 Tf 6.101 0 Td [(will)-315(have)-315(de\002ned)-315(a)-314(set)-315(of)-315(\223halo\224)-315(\050or)-315(\223ghost\224\051)]TJ -141.601 -11.955 Td [(indices)]TJ/F60 9.9626 Tf 34.731 0 Td [(n)]TJ/F62 9.9626 Tf 5.663 -1.495 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.538 -1.648 Td [(i)]TJ/F93 10.3811 Tf 5.211 3.143 Td [(+)]TJ/F62 9.9626 Tf 10.506 0 Td [(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -3.831 Td [(col)]TJ/F60 5.9776 Tf 12.794 -1.648 Td [(i)]TJ/F62 9.9626 Tf 2.775 5.479 Td [(,)-377(denoting)-352(elements)-351(of)-352(the)-352(index)-351(space)-352(that)-351(ar)18(e)]TJ/F60 9.9626 Tf 215.582 0 Td [(not)]TJ/F62 9.9626 Tf -330.431 -13.79 Td [(assigned)-289(to)-290(pr)18(ocess)]TJ/F60 9.9626 Tf 88.744 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(;)-309(however)-290(t)1(he)-290(variables)-289(associated)-290(with)-289(them)-290(ar)18(e)-289(needed)]TJ -91.708 -11.955 Td [(to)-289(complete)-289(computations)-289(associated)-289(with)-290(the)-289(sparse)-289(matrix)]TJ/F60 9.9626 Tf 269.662 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(,)-299(and)-289(thus)-289(they)]TJ -276.98 -11.955 Td [(have)-266(to)-266(be)-266(fetched)-265(fr)18(om)-266(\050neighbouring\051)-266(pr)18(ocesses.)-358(The)-266(descriptor)-265(of)-266(the)-266(index)]TJ 0 -11.956 Td [(space)-294(is)-293(built)-294(exactly)-294(for)-293(the)-294(purpose)-294(of)-293(pr)18(operly)-294(sequencing)-294(the)-293(communica-)]TJ 0 -11.955 Td [(tion)-250(steps)-250(r)18(equir)18(ed)-250(to)-250(achieve)-250(this)-250(objective.)]TJ 14.944 -12.17 Td [(A)-197(simple)-197(application)-197(str)8(uctur)18(e)-197(will)-197(walk)-197(thr)18(ough)-197(the)-197(index)-197(space)-197(allocation,)]TJ -14.944 -11.956 Td [(matrix/vector)-250(cr)18(eation)-250(and)-250(linear)-250(system)-250(solution)-250(as)-250(follows:)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(2.3)-1000(Application)-250(structure)]TJ/F84 9.9626 Tf 0.999 0 0 1 150.396 686.748 Tm [(The)-249(main)-249(underlying)-250(principle)-249(of)-249(the)-249(PSBLAS)-250(library)-249(is)-249(that)-249(the)-250(l)1(ibrary)-250(objects)]TJ 0.999 0 0 1 150.705 674.792 Tm [(ar)18(e)-251(cr)18(eated)-251(and)-251(exist)-251(with)-251(r)18(efer)18(ence)-251(to)-251(a)-251(discr)18(etized)-251(space)-251(to)-251(which)-251(ther)18(e)-251(corr)18(e-)]TJ 0.98 0 0 1 150.705 662.837 Tm [(sponds)-255(an)-254(index)-255(space)-255(and)-254(a)-255(matrix)-255(sparsity)-254(pattern.)-316(As)-255(an)-255(example,)-255(consi)1(der)-255(a)]TJ 1.015 0 0 1 150.705 650.882 Tm [(cell-center)18(ed)-246(\002nite-volume)-246(discr)18(etization)-246(of)-246(the)-246(Navier)18(-Stokes)-246(equations)-245(on)-246(a)]TJ 0.98 0 0 1 150.705 638.927 Tm [(simulation)-233(domain;)-240(the)-233(index)-233(space)-232(1)]TJ 1 0 0 1 312.466 638.927 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 333.604 638.927 Tm [(is)-233(isomorphic)-233(to)-232(the)-233(set)-233(of)-233(cell)-233(centers,)]TJ 1.02 0 0 1 150.286 626.972 Tm [(wher)18(eas)-332(the)-332(pattern)-332(of)-332(the)-332(associated)-332(linear)-332(system)-332(matrix)-332(is)-332(isomorphic)-332(to)]TJ 1.014 0 0 1 150.705 615.017 Tm [(the)-246(adjacency)-246(graph)-247(imposed)-246(on)-246(the)-246(discr)17(etization)-246(mesh)-246(by)-246(the)-247(discr)18(etization)]TJ 1 0 0 1 150.705 603.061 Tm [(stencil.)]TJ 1.02 0 0 1 165.649 590.891 Tm [(Thus)-298(the)-297(\002rst)-298(or)18(der)-298(of)-297(business)-298(is)-298(to)-297(establish)-298(an)-297(index)-298(space,)-311(and)-297(this)-298(is)]TJ 0.989 0 0 1 150.705 578.936 Tm [(done)-253(with)-253(a)-253(call)-253(to)]TJ/F131 9.9626 Tf 1 0 0 1 233.611 578.936 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 0.989 0 0 1 283.177 578.936 Tm [(in)-253(which)-253(we)-253(specify)-253(the)-253(size)-253(of)-253(the)-253(index)-253(space)]TJ/F78 9.9626 Tf 1 0 0 1 488.752 578.936 Tm [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 566.98 Tm [(and)-249(the)-250(allocation)-249(of)-250(the)-249(elements)-250(of)-249(the)-250(index)-249(space)-250(to)-249(the)-250(various)-249(pr)17(ocesses)]TJ 1 0 0 1 150.705 555.025 Tm [(making)-250(up)-250(the)-250(MPI)-250(\050virtual\051)-250(parallel)-250(machine.)]TJ 0.987 0 0 1 165.649 542.855 Tm [(The)-254(index)-255(space)-254(is)-254(partitioned)-254(among)-255(pr)19(ocesses,)-255(and)-254(this)-254(cr)18(eates)-254(a)-255(mapping)]TJ 1.02 0 0 1 150.705 530.899 Tm [(fr)18(om)-313(the)-312(\223global\224)-313(numbering)-312(1)]TJ 1 0 0 1 294.115 530.899 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 316.154 530.899 Tm [(to)-312(a)-313(numbering)-312(\223local\224)-313(to)-312(each)-312(pr)17(ocess;)]TJ 1.02 0 0 1 150.705 518.944 Tm [(each)-357(pr)17(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 211.881 518.944 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 218.474 518.944 Tm [(will)-357(own)-357(a)-358(certain)-357(subset)-357(1)]TJ 1 0 0 1 345.057 518.944 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(n)]TJ/F84 9.9626 Tf 5.664 -1.494 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.649 Td [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.233 518.944 Tm [(,)-385(each)-357(element)-358(of)-357(which)]TJ 1.004 0 0 1 150.705 506.989 Tm [(corr)18(esponds)-250(to)-249(a)-250(certain)-249(element)-250(of)-249(1)]TJ 1 0 0 1 314.664 506.989 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(n)]TJ/F84 9.9626 Tf 1.004 0 0 1 333.528 506.989 Tm [(.)-311(The)-249(user)-250(does)-249(not)-250(set)-249(explicitly)-250(this)]TJ 0.987 0 0 1 150.705 495.034 Tm [(mapping;)-253(when)-254(the)-253(application)-253(needs)-254(to)-253(indicate)-253(to)-254(which)-253(element)-253(of)-254(the)-253(index)]TJ 1.02 0 0 1 150.705 483.079 Tm [(space)-263(a)-262(certain)-263(item)-263(is)-262(r)17(elated,)-267(such)-262(as)-263(the)-263(r)18(ow)-263(and)-262(column)-263(index)-263(of)-262(a)-263(matrix)]TJ 1.011 0 0 1 150.705 471.124 Tm [(coef)18(\002cient,)-246(it)-247(does)-246(so)-246(in)-246(the)-246(\223global\224)-247(numbering,)-246(and)-246(the)-246(library)-247(will)-246(translate)]TJ 1 0 0 1 150.705 459.168 Tm [(into)-250(the)-250(appr)18(opriate)-250(\223local\224)-250(numbering.)]TJ 0.98 0 0 1 165.649 446.998 Tm [(For)-242(a)-242(given)-241(index)-242(space)-242(1)]TJ 1 0 0 1 275.866 446.998 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 297.092 446.998 Tm [(ther)18(e)-241(ar)18(e)-242(many)-242(possible)-241(associated)-242(topologies,)]TJ 0.98 0 0 1 150.705 435.043 Tm [(i.e.)-308(many)-230(dif)18(fer)18(ent)-230(discr)19(etization)-230(stencils;)-239(thus)-230(the)-230(description)-230(of)-230(the)-230(index)-230(space)]TJ 1.011 0 0 1 150.705 423.087 Tm [(is)-247(not)-247(completed)-248(until)-247(the)-247(user)-247(has)-247(de\002ned)-248(a)-247(sparsity)-247(pattern,)-247(either)-247(explicitly)]TJ 0.98 0 0 1 150.705 411.132 Tm [(thr)18(ough)]TJ/F131 9.9626 Tf 1 0 0 1 187.885 411.132 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 0.98 0 0 1 237.267 411.132 Tm [(or)-237(implicit)1(ly)-237(thr)18(ough)]TJ/F131 9.9626 Tf 1 0 0 1 329.893 411.132 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.98 0 0 1 376.967 411.132 Tm [(.)-310(The)-237(descriptor)-236(is)-237(\002nalized)]TJ 1.02 0 0 1 150.286 399.177 Tm [(with)-294(a)-294(call)-293(to)]TJ/F131 9.9626 Tf 1 0 0 1 212.338 399.177 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 262.397 399.177 Tm [(and)-294(a)-294(sparse)-293(matrix)-294(with)-294(a)-294(call)-294(to)]TJ/F131 9.9626 Tf 1 0 0 1 416.944 399.177 Tm [(psb_spasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 464.017 399.177 Tm [(.)-450(After)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 387.222 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.001 0 0 1 200.273 387.222 Tm [(each)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 258.173 387.222 Tm [(i)]TJ/F84 9.9626 Tf 1.001 0 0 1 263.632 387.222 Tm [(will)-250(have)-250(de\002ned)-251(a)-250(set)-250(of)-250(\223halo\224)-250(\050or)-251(\223ghost\224\051)-250(indices)]TJ/F78 9.9626 Tf 1 0 0 1 150.829 375.267 Tm [(n)]TJ/F84 9.9626 Tf 5.664 -1.495 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F181 10.3811 Tf 4.655 3.143 Td [(+)]TJ/F84 9.9626 Tf 0.98 0 0 1 188.635 375.267 Tm [(1)]TJ 1 0 0 1 195.301 375.267 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)]TJ/F84 9.9626 Tf 5.663 -3.831 Td [(col)]TJ/F78 5.9776 Tf 12.795 -1.648 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 229.735 375.267 Tm [(,)-239(denoting)-235(elements)-235(of)-235(the)-235(index)-235(space)-235(that)-235(ar)18(e)]TJ/F78 9.9626 Tf 0.98 0 0 1 430.544 375.267 Tm [(not)]TJ/F84 9.9626 Tf 0.98 0 0 1 445.853 375.267 Tm [(assigned)-235(to)]TJ 1.01 0 0 1 150.406 361.477 Tm [(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 186.098 361.477 Tm [(i)]TJ/F84 9.9626 Tf 1.01 0 0 1 189.062 361.477 Tm [(;)-247(however)-246(the)-247(variables)-246(associated)-247(with)-246(them)-247(ar)18(e)-247(needed)-246(to)-247(complete)]TJ 1.02 0 0 1 150.705 349.522 Tm [(computations)-284(associated)-284(with)-285(the)-284(sparse)-284(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 369.566 349.522 Tm [(A)]TJ/F84 9.9626 Tf 1.02 0 0 1 376.883 349.522 Tm [(,)-294(and)-284(thus)-284(they)-285(have)-284(to)-284(be)]TJ 1.02 0 0 1 150.705 337.567 Tm [(fetched)-303(fr)18(om)-304(\050neighbouring)1(\051)-304(pr)18(ocesses.)-478(The)-303(descriptor)-303(of)-303(the)-303(index)-304(space)-303(is)]TJ 1.007 0 0 1 150.705 325.612 Tm [(built)-249(exactly)-248(for)-249(the)-249(purpose)-249(of)-248(pr)18(operly)-249(sequencing)-249(the)-249(communication)-248(steps)]TJ 1 0 0 1 150.705 313.656 Tm [(r)18(equir)18(ed)-250(to)-250(achieve)-250(this)-250(objective.)]TJ 0.987 0 0 1 165.649 301.486 Tm [(A)-253(simple)-253(application)-254(str)9(uctur)18(e)-253(will)-254(walk)-253(thr)18(ough)-253(the)-253(index)-253(space)-253(allocation,)]TJ 1 0 0 1 150.705 289.531 Tm [(matrix/vector)-250(cr)18(eation)-250(and)-250(linear)-250(system)-250(solution)-250(as)-250(follows:)]TJ 0 g 0 G - 12.453 -20.571 Td [(1.)]TJ + 12.453 -20.572 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.465 0 Td [(psb_init)]TJ + [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F131 9.9626 Tf 171.465 0 Td [(psb_init)]TJ/F84 9.9626 Tf 41.843 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -171.465 -20.787 Td [(2.)]TJ + -213.308 -20.787 Td [(2.)]TJ 0 g 0 G - [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ + [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F131 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -130.489 -20.788 Td [(3.)]TJ + -177.562 -20.787 Td [(3.)]TJ 0 g 0 G - [-500(Allocate)-221(sparse)-221(matrix)-221(and)-221(dense)-221(vectors)-220(with)]TJ/F67 9.9626 Tf 215.843 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 49.274 0 Td [(and)]TJ/F67 9.9626 Tf 19.068 0 Td [(psb_geall)]TJ + 0.983 0 0 1 175.223 227.385 Tm [(Allocate)-254(sparse)-255(matrix)-254(and)-254(dense)-254(vectors)-255(with)]TJ/F131 9.9626 Tf 1 0 0 1 377.444 227.385 Tm [(psb_spall)]TJ/F84 9.9626 Tf 0.983 0 0 1 427.008 227.385 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 446.079 227.385 Tm [(psb_geall)]TJ/F84 9.9626 Tf 0.983 0 0 1 493.152 227.385 Tm [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -284.185 -20.787 Td [(4.)]TJ + 1 0 0 1 163.158 206.597 Tm [(4.)]TJ 0 g 0 G - [-500(Loop)-320(over)-320(all)-320(local)-320(r)18(ows,)-338(generate)-320(matrix)-320(and)-320(vector)-320(entries,)-337(and)-320(insert)]TJ 12.454 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.849 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ + 1.02 0 0 1 175.611 206.597 Tm [(Loop)-265(over)-265(all)-266(local)-265(r)18(ows,)-270(generate)-266(matrix)-265(and)-265(vector)-265(entries,)-271(and)-265(insert)]TJ 1 0 0 1 175.611 194.642 Tm [(them)-250(with)]TJ/F131 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F84 9.9626 Tf 49.564 0 Td [(and)]TJ/F131 9.9626 Tf 19.357 0 Td [(psb_geins)]TJ 0 g 0 G -/F62 9.9626 Tf -129.225 -20.787 Td [(5.)]TJ +/F84 9.9626 Tf -129.224 -20.787 Td [(5.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(various)-250(entities:)]TJ + [-461(Assemble)-250(the)-250(various)-250(entities:)]TJ 0 g 0 G 17.774 -20.787 Td [(\050a\051)]TJ 0 g 0 G -/F67 9.9626 Tf 16.597 0 Td [(psb_cdasb)]TJ +/F131 9.9626 Tf 16.597 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(,)]TJ 0 g 0 G -/F62 9.9626 Tf -17.125 -16.371 Td [(\050b\051)]TJ + -64.198 -16.371 Td [(\050b\051)]TJ 0 g 0 G -/F67 9.9626 Tf 17.125 0 Td [(psb_spasb)]TJ +/F131 9.9626 Tf 17.125 0 Td [(psb_spasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(,)]TJ 0 g 0 G -/F62 9.9626 Tf -16.039 -16.371 Td [(\050c\051)]TJ + -63.112 -16.371 Td [(\050c\051)]TJ 0 g 0 G -/F67 9.9626 Tf 16.039 0 Td [(psb_geasb)]TJ +/F131 9.9626 Tf 16.039 0 Td [(psb_geasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf 122.541 -29.888 Td [(6)]TJ + 75.468 -29.888 Td [(6)]TJ 0 g 0 G ET endstream endobj -954 0 obj +962 0 obj << -/Length 7484 +/Length 8953 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 112.349 706.129 Td [(6.)]TJ +/F84 9.9626 Tf 112.349 706.129 Td [(6.)]TJ 0 g 0 G - [-500(Choose)-301(the)-300(pr)18(econditioner)-301(to)-300(be)-301(used)-300(with)]TJ/F67 9.9626 Tf 205.537 0 Td [(prec%init)]TJ/F62 9.9626 Tf 50.068 0 Td [(and)-301(build)-300(it)-301(with)]TJ/F67 9.9626 Tf -243.152 -11.955 Td [(prec%build)]TJ + 0.984 0 0 1 124.802 706.129 Tm [(Choose)-254(the)-254(pr)19(econditioner)-254(to)-254(be)-253(used)-254(with)]TJ/F131 9.9626 Tf 1 0 0 1 311.582 706.129 Tm [(prec%init)]TJ/F84 9.9626 Tf 0.984 0 0 1 361.143 706.129 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 380.228 706.129 Tm [(prec%set)]TJ/F84 9.9626 Tf 0.984 0 0 1 422.07 706.129 Tm [(,)-254(and)]TJ 1 0 0 1 124.802 694.174 Tm [(build)-250(it)-250(with)]TJ/F131 9.9626 Tf 57.274 0 Td [(prec%build)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 52.303 3.616 Td [(3)]TJ +/F84 7.5716 Tf 52.304 3.616 Td [(3)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(.)]TJ +/F84 9.9626 Tf 4.284 -3.616 Td [(;)]TJ 0 g 0 G - -69.04 -22.307 Td [(7.)]TJ + -126.315 -18.137 Td [(7.)]TJ 0 g 0 G - [-500(Call)-190(the)-190(iterative)-190(driver)]TJ/F67 9.9626 Tf 115.326 0 Td [(psb_krylov)]TJ/F62 9.9626 Tf 54.196 0 Td [(with)-190(the)-190(method)-190(of)-190(choice,)-202(e.g.)]TJ/F67 9.9626 Tf 134.982 0 Td [(bicgstab)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -358.801 -21.712 Td [(This)-250(is)-250(the)-250(str)8(uctur)18(e)-250(of)-250(the)-250(sample)-250(pr)18(ograms)-250(in)-250(the)-250(dir)18(ectory)]TJ/F67 9.9626 Tf 266.418 0 Td [(test/pargen/)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ -314.238 -12.551 Td [(For)-257(a)-258(simulation)-257(in)-257(which)-257(the)-258(same)-257(discr)18(etization)-257(mesh)-257(is)-258(used)-257(over)-257(multi-)]TJ -14.944 -11.955 Td [(ple)-250(time)-250(steps,)-250(the)-250(following)-250(str)8(uctur)18(e)-250(may)-250(be)-250(mor)18(e)-250(appr)18(opriate:)]TJ + 0.98 0 0 1 124.802 676.037 Tm [(Call)-204(one)-203(of)-204(the)-204(iterative)-203(drivers)-204(with)-204(the)-203(method)-204(of)-204(choice,)-214(e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 391.565 676.037 Tm [(psb_krylov)]TJ/F84 9.9626 Tf -267.181 -11.955 Td [(with)]TJ/F131 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ -89.384 -16.347 Td [(This)-250(is)-250(the)-250(str)8(uctur)18(e)-250(of)-250(the)-250(sample)-250(pr)18(ograms)-250(in)-250(the)-250(dir)18(ectory)]TJ/F131 9.9626 Tf 266.417 0 Td [(test/pargen/)]TJ/F84 9.9626 Tf 62.764 0 Td [(.)]TJ 0.98 0 0 1 114.839 635.78 Tm [(For)-227(a)-227(simulation)-227(in)-227(which)-227(the)-227(same)-226(discr)18(etization)-227(mesh)-227(is)-227(used)-227(over)-227(multiple)]TJ 1 0 0 1 99.895 623.824 Tm [(time)-250(steps,)-250(the)-250(following)-250(str)8(uctur)18(e)-250(may)-250(be)-250(mor)18(e)-250(appr)18(opriate:)]TJ 0 g 0 G - 12.454 -21.712 Td [(1.)]TJ + 12.454 -16.347 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F67 9.9626 Tf 171.464 0 Td [(psb_init)]TJ + [-500(Initialize)-250(parallel)-250(envir)18(onment)-250(with)]TJ/F131 9.9626 Tf 171.464 0 Td [(psb_init)]TJ 0 g 0 G -/F62 9.9626 Tf -171.464 -22.307 Td [(2.)]TJ +/F84 9.9626 Tf -171.464 -18.136 Td [(2.)]TJ 0 g 0 G - [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F67 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ + [-500(Initialize)-250(index)-250(space)-250(with)]TJ/F131 9.9626 Tf 130.489 0 Td [(psb_cdall)]TJ 0 g 0 G -/F62 9.9626 Tf -130.489 -22.307 Td [(3.)]TJ +/F84 9.9626 Tf -130.489 -18.137 Td [(3.)]TJ 0 g 0 G - [-500(Loop)-248(over)-248(the)-248(topology)-248(of)-248(the)-248(discr)18(eti)1(zation)-248(mesh)-248(and)-248(build)-248(the)-248(descrip-)]TJ 12.453 -11.955 Td [(tor)-250(with)]TJ/F67 9.9626 Tf 37.857 0 Td [(psb_cdins)]TJ + 0.98 0 0 1 124.802 571.204 Tm [(Loop)-224(over)-225(the)-224(topology)-224(of)-224(the)-225(discr)19(etization)-225(me)1(sh)-225(and)-224(build)-224(the)-225(descriptor)]TJ 1 0 0 1 124.384 559.249 Tm [(with)]TJ/F131 9.9626 Tf 22.744 0 Td [(psb_cdins)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -50.31 -22.307 Td [(4.)]TJ + -81.852 -18.136 Td [(4.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F67 9.9626 Tf 144.386 0 Td [(psb_cdasb)]TJ + [-461(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F131 9.9626 Tf 143.998 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -144.386 -22.307 Td [(5.)]TJ + -191.071 -18.136 Td [(5.)]TJ 0 g 0 G - [-500(Allocate)-190(the)-190(sparse)-190(matrices)-190(and)-190(dense)-190(vectors)-190(with)]TJ/F67 9.9626 Tf 237.676 0 Td [(psb_spall)]TJ/F62 9.9626 Tf 48.966 0 Td [(and)]TJ/F67 9.9626 Tf 18.759 0 Td [(psb_geall)]TJ + 1.02 0 0 1 124.413 522.977 Tm [(Allocate)-408(t)1(he)-408(sparse)-407(matrices)-408(and)-407(dense)-408(vectors)-407(with;)]TJ/F131 9.9626 Tf 1 0 0 1 375.188 522.977 Tm [(psb_spall)]TJ/F84 9.9626 Tf 1.02 0 0 1 426.402 522.977 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 511.021 Tm [(psb_geall)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -305.401 -22.308 Td [(6.)]TJ + -59.526 -18.136 Td [(6.)]TJ 0 g 0 G [-500(Loop)-250(over)-250(the)-250(time)-250(steps:)]TJ 0 g 0 G - 17.773 -22.307 Td [(\050a\051)]TJ + 17.773 -18.136 Td [(\050a\051)]TJ 0 g 0 G - [-500(If)-297(after)-298(\002rst)-297(time)-298(step,)-309(r)18(einitialize)-297(the)-298(sparse)-297(matrix)-298(with)]TJ/F67 9.9626 Tf 269.151 0 Td [(psb_sprn)]TJ/F62 9.9626 Tf 41.843 0 Td [(;)]TJ -294.396 -11.955 Td [(also)-250(zer)18(o)-250(out)-250(the)-250(dense)-250(vectors;)]TJ + 1.02 0 0 1 146.72 474.749 Tm [(If)-260(after)-261(\002rst)-260(time)-260(step,)-264(r)18(einitialize)-261(the)-260(sparse)-260(matrix)-260(with)]TJ/F131 9.9626 Tf 1 0 0 1 400.469 474.749 Tm [(psb_sprn)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.311 474.749 Tm [(;)]TJ 1 0 0 1 146.72 462.794 Tm [(also)-250(zer)18(o)-250(out)-250(the)-250(dense)-250(vectors;)]TJ 0 g 0 G - -17.126 -17.131 Td [(\050b\051)]TJ + -17.126 -14.152 Td [(\050b\051)]TJ 0 g 0 G - [-500(Loop)-428(over)-429(the)-428(mesh,)-473(generate)-429(the)-428(coef)18(\002cients)-429(and)-428(insert/update)]TJ 17.126 -11.955 Td [(them)-250(with)]TJ/F67 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.563 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ + 1.02 0 0 1 146.72 448.642 Tm [(Loop)-357(over)-358(the)-357(mesh,)-386(generate)-357(the)-358(coef)18(\002cients)-357(and)-358(insert/update)]TJ 1 0 0 1 146.72 436.687 Tm [(them)-250(with)]TJ/F131 9.9626 Tf 47.85 0 Td [(psb_spins)]TJ/F84 9.9626 Tf 49.564 0 Td [(and)]TJ/F131 9.9626 Tf 19.357 0 Td [(psb_geins)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -132.811 -17.131 Td [(\050c\051)]TJ + -179.884 -14.151 Td [(\050c\051)]TJ 0 g 0 G - [-500(Assemble)-250(with)]TJ/F67 9.9626 Tf 84.223 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(psb_geasb)]TJ + [-461(Assemble)-250(with)]TJ/F131 9.9626 Tf 83.835 0 Td [(psb_spasb)]TJ/F84 9.9626 Tf 49.563 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(psb_geasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf -154.808 -17.132 Td [(\050d\051)]TJ + -201.493 -14.151 Td [(\050d\051)]TJ 0 g 0 G - [-500(Choose)-250(and)-250(build)-250(pr)18(econditioner)-250(with)]TJ/F67 9.9626 Tf 188.671 0 Td [(prec%init)]TJ/F62 9.9626 Tf 49.563 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(prec%build)]TJ 0 g 0 G -/F62 9.9626 Tf -256.277 -17.131 Td [(\050e\051)]TJ + 1.316 -14.152 Td [(\050e\051)]TJ 0 g 0 G - [-500(Call)-250(the)-250(iterative)-250(method)-250(of)-250(choice,)-250(e.g.)]TJ/F67 9.9626 Tf 190.902 0 Td [(psb_bicgstab)]TJ/F62 9.9626 Tf -221.338 -22.307 Td [(The)-276(insertion)-275(r)18(outines)-276(will)-275(be)-276(called)-275(as)-276(many)-276(times)-275(as)-276(needed;)-288(they)-276(only)-275(need)]TJ 0 -11.955 Td [(to)-214(be)-213(called)-214(on)-213(the)-214(data)-214(t)1(hat)-214(is)-214(actually)-213(allocated)-214(to)-213(the)-214(curr)18(ent)-213(pr)18(ocess,)-221(i.e.)-298(each)]TJ 0 -11.955 Td [(pr)18(ocess)-250(generates)-250(its)-250(own)-250(data.)]TJ 14.944 -12.551 Td [(In)-219(principle)-218(ther)18(e)-219(is)-219(no)-218(speci\002c)-219(or)18(der)-219(in)-218(the)-219(calls)-219(to)]TJ/F67 9.9626 Tf 220.804 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)-225(nor)-219(is)-218(ther)18(e)-219(a)]TJ -282.821 -11.955 Td [(r)18(equir)18(ement)-243(to)-243(build)-243(a)-242(matrix)-243(r)18(ow)-243(in)-243(its)-243(entir)18(ety)-243(befor)18(e)-242(calling)-243(the)-243(r)18(outine;)-245(this)]TJ 0 -11.955 Td [(allows)-364(t)1(he)-364(application)-363(pr)18(ogrammer)-364(to)-363(walk)-364(thr)18(ough)-363(the)-364(discr)18(etization)-363(mesh)]TJ 0 -11.955 Td [(element)-316(by)-317(element,)-333(generating)-316(the)-316(main)-317(part)-316(of)-316(a)-317(given)-316(matrix)-316(r)18(ow)-317(but)-316(also)]TJ 0 -11.956 Td [(contributions)-250(to)-250(the)-250(r)18(ows)-250(corr)18(esponding)-250(to)-250(neighbouring)-250(elements.)]TJ 14.944 -12.55 Td [(Fr)18(om)-328(a)-329(func)1(tional)-329(point)-328(of)-328(view)-328(it)-329(is)-328(even)-328(possible)-328(to)-329(exe)1(cute)-329(one)-328(call)-328(for)]TJ -14.944 -11.955 Td [(each)-204(nonzer)18(o)-204(coef)18(\002cient;)-219(however)-203(this)-204(would)-204(have)-204(a)-204(subst)1(antial)-204(computational)]TJ 0 -11.955 Td [(over)18(head.)-457(It)-299(is)-299(ther)18(efor)18(e)-299(advisable)-299(to)-299(pack)-299(a)-299(certain)-299(amount)-299(of)-299(data)-299(into)-299(each)]TJ 0 -11.956 Td [(call)-303(to)-303(the)-302(insertion)-303(r)18(outine,)-316(say)-303(touching)-303(on)-302(a)-303(few)-303(tens)-303(of)-302(r)18(ows;)-330(the)-302(best)-303(per)18(-)]TJ 0 -11.955 Td [(formng)-342(value)-343(would)-342(depend)-342(on)-342(both)-343(the)-342(ar)18(chitectur)18(e)-342(of)-343(the)-342(computer)-342(being)]TJ 0 -11.955 Td [(used)-223(and)-223(on)-222(the)-223(pr)18(oblem)-223(str)8(uctur)18(e.)-301(At)-222(the)-223(opposite)-223(extr)18(eme,)-228(it)-223(would)-222(be)-223(possi-)]TJ 0 -11.955 Td [(ble)-267(to)-267(generate)-267(the)-267(entir)18(e)-267(part)-267(of)-267(a)-267(coef)18(\002cient)-267(matrix)-267(r)18(esiding)-267(on)-267(a)-267(pr)18(ocess)-267(and)]TJ 0 -11.955 Td [(pass)-275(it)-274(in)-275(a)-275(single)-274(call)-275(to)]TJ/F67 9.9626 Tf 108.421 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)-287(this,)-281(however)74(,)-281(would)-274(entail)-275(a)-275(doubling)-274(of)]TJ -155.494 -11.956 Td [(memory)-250(occupation,)-250(and)-250(thus)-250(would)-250(be)-250(almost)-250(always)-250(far)-250(fr)18(om)-250(optimal.)]TJ + 0.98 0 0 1 146.72 394.233 Tm [(Choose)-245(the)-246(pr)18(eco)1(nditioner)-246(to)-245(be)-246(used)-245(with)]TJ/F131 9.9626 Tf 1 0 0 1 332.173 394.233 Tm [(prec%init)]TJ/F84 9.9626 Tf 0.98 0 0 1 381.642 394.233 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 400.568 394.233 Tm [(prec%set)]TJ/F84 9.9626 Tf 0.98 0 0 1 442.411 394.233 Tm [(,)]TJ 1 0 0 1 146.72 382.278 Tm [(and)-250(build)-250(it)-250(with)]TJ/F131 9.9626 Tf 76.631 0 Td [(prec%build)]TJ/F84 9.9626 Tf 52.304 0 Td [(;)]TJ +0 g 0 G + -143.869 -14.151 Td [(\050f\051)]TJ +0 g 0 G + 1.02 0 0 1 146.72 368.127 Tm [(Call)-416(one)-415(of)-416(the)-415(iterative)-416(drivers)-416(with)-415(the)-416(method)-415(of)-416(choice,)-458(e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 146.72 356.172 Tm [(psb_krylov)]TJ/F84 9.9626 Tf 54.794 0 Td [(with)]TJ/F131 9.9626 Tf 22.744 0 Td [(bicgstab)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0.98 0 0 1 99.587 338.035 Tm [(The)-247(insertion)-247(r)19(outines)-247(will)-247(be)-247(called)-247(as)-247(many)-247(times)-247(as)-246(needed;)-250(they)-247(only)-247(need)-247(to)]TJ 1.02 0 0 1 99.895 326.08 Tm [(be)-245(called)-245(on)-245(the)-245(data)-245(that)-246(is)-245(actually)-245(allocated)-245(to)-245(the)-245(curr)18(ent)-245(pr)17(ocess,)-245(i.e.)-304(each)]TJ 1 0 0 1 99.596 314.125 Tm [(pr)18(ocess)-250(generates)-250(its)-250(own)-250(data.)]TJ 0.981 0 0 1 114.839 302.17 Tm [(In)-256(principle)-255(ther)18(e)-256(is)-255(no)-256(speci\002c)-255(or)18(der)-256(in)-255(the)-256(calls)-256(to)]TJ/F131 9.9626 Tf 1 0 0 1 335.416 302.17 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.981 0 0 1 382.49 302.17 Tm [(,)-256(nor)-255(is)-256(ther)18(e)-255(a)]TJ 0.997 0 0 1 99.895 290.215 Tm [(r)18(equir)18(ement)-251(to)-251(build)-251(a)-251(matrix)-251(r)18(ow)-251(in)-251(its)-251(entir)18(ety)-251(befor)18(e)-251(calling)-251(the)-251(r)18(outine;)-251(this)]TJ 1.02 0 0 1 99.895 278.26 Tm [(allows)-288(the)-288(application)-289(pr)18(ogrammer)-288(to)-288(walk)-288(thr)17(ough)-288(the)-288(discr)17(etizati)1(on)-289(mesh)]TJ 1.02 0 0 1 99.895 266.304 Tm [(element)-265(by)-265(element,)-271(generating)-265(the)-265(main)-265(part)-265(of)-265(a)-266(given)-265(matrix)-265(r)18(ow)-266(but)-265(also)]TJ 1 0 0 1 99.895 254.349 Tm [(contributions)-250(to)-250(the)-250(r)18(ows)-250(corr)18(esponding)-250(to)-250(neighbouring)-250(elements.)]TJ 1.02 0 0 1 114.839 242.394 Tm [(Fr)18(om)-284(a)-283(functional)-284(point)-283(of)-283(view)-284(it)-283(is)-283(even)-284(possible)-283(to)-284(execute)-283(one)-283(call)-284(for)]TJ 0.988 0 0 1 99.895 230.439 Tm [(each)-252(nonzer)18(o)-252(coef)18(\002cient;)-252(however)-252(this)-252(would)-252(have)-252(a)-252(substantial)-252(computational)]TJ 0.98 0 0 1 99.895 218.484 Tm [(over)18(head.)-306(It)-224(is)-225(ther)19(efor)18(e)-224(advisable)-225(to)-224(pack)-225(a)-224(certain)-225(amount)-224(of)-225(data)-224(into)-225(each)-224(call)]TJ 0.988 0 0 1 99.895 206.529 Tm [(to)-253(the)-254(insertion)-253(r)18(outine,)-253(say)-253(touching)-254(on)-253(a)-253(few)-254(tens)-253(of)-253(r)18(ows;)-254(the)-253(best)-253(performng)]TJ 1.009 0 0 1 99.616 194.573 Tm [(value)-248(woul)1(d)-248(depend)-247(on)-248(both)-247(the)-248(ar)18(chitectur)18(e)-248(of)-247(the)-248(computer)-247(being)-248(used)-247(and)]TJ 1.02 0 0 1 99.895 182.618 Tm [(on)-333(the)-333(pr)18(oblem)-333(str)8(uctur)18(e.)-567(At)-333(the)-333(opposite)-333(extr)18(eme,)-355(it)-332(would)-333(be)-333(possible)-333(to)]TJ 0.996 0 0 1 99.895 170.663 Tm [(generate)-250(the)-251(entir)18(e)-250(part)-251(of)-250(a)-250(coef)18(\002cient)-251(matrix)-250(r)18(esiding)-251(on)-250(a)-251(pr)19(ocess)-251(and)-250(pass)-251(it)]TJ 0.981 0 0 1 99.895 158.708 Tm [(in)-255(a)-255(single)-254(call)-255(to)]TJ/F131 9.9626 Tf 1 0 0 1 174.836 158.708 Tm [(psb_spins)]TJ/F84 9.9626 Tf 0.981 0 0 1 221.909 158.708 Tm [(;)-255(this,)-255(however)76(,)-255(would)-255(entail)-254(a)-255(doubling)-255(of)-255(memory)]TJ 1 0 0 1 99.895 146.753 Tm [(occupation,)-250(and)-250(thus)-250(would)-250(be)-250(almost)-250(always)-250(far)-250(fr)18(om)-250(optimal.)]TJ 0 g 0 G ET q @@ -5046,64 +5044,96 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 132.683 Td [(3)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(The)-260(subr)18(outine)-260(style)]TJ/F97 7.9701 Tf 74.235 0 Td [(psb)]TJ +/F84 5.9776 Tf 110.755 132.683 Td [(3)]TJ/F84 7.9701 Tf 0.981 0 0 1 113.995 129.79 Tm [(The)-255(subr)18(outine)-255(style)]TJ/F207 7.9701 Tf 1 0 0 1 186.708 129.79 Tm [(psb)]TJ ET q -1 0 0 1 201.687 129.989 cm +1 0 0 1 199.919 129.989 cm []0 d 0 J 0.398 w 0 0 m 2.541 0 l S Q BT -/F97 7.9701 Tf 204.228 129.79 Td [(precinit)]TJ/F62 7.9701 Tf 35.946 0 Td [(and)]TJ/F97 7.9701 Tf 15.567 0 Td [(psb)]TJ +/F207 7.9701 Tf 202.459 129.79 Td [(precinit)]TJ/F84 7.9701 Tf 0.981 0 0 1 238.33 129.79 Tm [(and)]TJ/F207 7.9701 Tf 1 0 0 1 253.565 129.79 Tm [(psb)]TJ ET q -1 0 0 1 268.951 129.989 cm +1 0 0 1 266.775 129.989 cm []0 d 0 J 0.398 w 0 0 m 2.541 0 l S Q BT -/F97 7.9701 Tf 271.492 129.79 Td [(precbl)]TJ/F62 7.9701 Tf 27.478 0 Td [(ar)18(e)-260(still)-260(supported)-260(for)-260(backwar)18(d)-260(compat-)]TJ -199.075 -9.464 Td [(ibility)]TJ +/F207 7.9701 Tf 269.316 129.79 Td [(precbld)]TJ/F84 7.9701 Tf 0.981 0 0 1 300.952 129.79 Tm [(ar)18(e)-255(still)-256(supported)-255(for)-256(b)1(ackwar)18(d)-256(compati-)]TJ 1 0 0 1 99.895 120.326 Tm [(bility)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 169.365 -29.888 Td [(7)]TJ +/F84 9.9626 Tf 169.365 -29.888 Td [(7)]TJ 0 g 0 G ET endstream endobj -867 0 obj +875 0 obj << /Type /ObjStm /N 100 -/First 906 -/Length 12362 ->> -stream -838 0 839 147 840 300 841 447 842 600 843 753 844 906 845 1059 846 1206 847 1354 -848 1502 849 1650 850 1797 851 1946 852 2095 853 2244 854 2393 855 2542 856 2691 857 2840 -858 2989 859 3138 863 3286 860 3343 879 3423 868 3629 869 3779 870 3930 871 4082 872 4236 -873 4386 874 4536 875 4686 876 4834 877 4982 7 5130 878 5184 898 5277 901 5427 902 5668 -903 5710 904 6096 892 6396 893 6542 894 6689 11 6836 900 6892 897 6949 910 7070 896 7220 -907 7368 908 7517 912 7666 15 7722 916 7777 917 7834 909 7891 923 8023 927 8165 928 8279 -929 8321 919 8390 920 8537 925 8685 926 8742 19 8799 922 8855 935 9002 932 9144 933 9291 -937 9438 934 9494 940 9587 942 9701 23 9758 943 9814 944 9871 945 9928 946 9985 947 10042 -948 10099 949 10156 950 10213 939 10270 953 10389 938 10523 955 10672 956 10728 957 10784 958 10840 -959 10896 960 10952 961 11008 962 11064 963 11120 964 11176 965 11232 966 11288 967 11344 968 11400 -% 838 0 obj +/First 911 +/Length 12757 +>> +stream +843 0 844 153 845 306 846 459 847 606 848 758 849 911 850 1058 851 1211 852 1364 +853 1517 854 1670 855 1817 856 1965 857 2113 858 2261 859 2408 860 2557 861 2706 862 2855 +863 3004 864 3153 865 3302 866 3451 867 3600 868 3749 872 3897 869 3954 887 4034 876 4240 +877 4390 878 4541 879 4692 880 4846 881 4997 882 5147 883 5297 884 5445 885 5593 7 5741 +886 5795 906 5888 909 6038 910 6279 911 6321 912 6707 900 7007 901 7153 902 7300 11 7447 +908 7502 905 7559 918 7680 904 7830 915 7978 916 8126 920 8274 15 8330 924 8385 925 8442 +917 8499 931 8634 935 8776 936 8890 937 8932 927 9001 928 9149 933 9296 934 9353 19 9410 +930 9466 943 9615 940 9757 941 9904 945 10050 942 10106 948 10200 950 10314 23 10371 951 10427 +952 10484 953 10541 954 10598 955 10655 956 10712 957 10769 958 10826 947 10883 961 11004 946 11138 +963 11286 964 11342 965 11398 966 11454 967 11510 968 11566 969 11622 970 11678 971 11734 972 11790 +% 843 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 584.764 427.165 596.824] +/A << /S /GoTo /D (subsection.10.5) >> +>> +% 844 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 572.809 353.343 584.869] +/A << /S /GoTo /D (subsection.10.6) >> +>> +% 845 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 560.854 315.177 572.913] +/A << /S /GoTo /D (subsection.10.7) >> +>> +% 846 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 529.611 247.72 538.941] +/Rect [149.709 541.566 247.72 550.896] /A << /S /GoTo /D (section.11) >> >> -% 839 0 obj +% 847 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 515.026 393.631 527.085] +/Rect [164.653 526.981 393.332 539.04] /A << /S /GoTo /D (subsection.11.1) >> >> -% 840 0 obj +% 848 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 515.026 429.766 527.085] +/A << /S /GoTo /D (subsection.11.2) >> +>> +% 849 0 obj << /Type /Annot /Subtype /Link @@ -5111,7 +5141,7 @@ stream /Rect [149.709 495.738 215.89 504.888] /A << /S /GoTo /D (section.12) >> >> -% 841 0 obj +% 850 0 obj << /Type /Annot /Subtype /Link @@ -5119,7 +5149,7 @@ stream /Rect [164.653 481.153 280.885 493.212] /A << /S /GoTo /D (subsection.12.1) >> >> -% 842 0 obj +% 851 0 obj << /Type /Annot /Subtype /Link @@ -5127,7 +5157,7 @@ stream /Rect [164.653 471.847 310.634 481.063] /A << /S /GoTo /D (subsection.12.2) >> >> -% 843 0 obj +% 852 0 obj << /Type /Annot /Subtype /Link @@ -5135,7 +5165,7 @@ stream /Rect [164.653 459.892 283.267 469.302] /A << /S /GoTo /D (subsection.12.3) >> >> -% 844 0 obj +% 853 0 obj << /Type /Annot /Subtype /Link @@ -5143,7 +5173,7 @@ stream /Rect [164.653 447.937 292.711 457.347] /A << /S /GoTo /D (subsection.12.4) >> >> -% 845 0 obj +% 854 0 obj << /Type /Annot /Subtype /Link @@ -5151,7 +5181,7 @@ stream /Rect [149.709 425.999 303.341 435.15] /A << /S /GoTo /D (section.13) >> >> -% 846 0 obj +% 855 0 obj << /Type /Annot /Subtype /Link @@ -5159,7 +5189,7 @@ stream /Rect [164.653 411.414 225.882 423.474] /A << /S /GoTo /D (section*.6) >> >> -% 847 0 obj +% 856 0 obj << /Type /Annot /Subtype /Link @@ -5167,7 +5197,7 @@ stream /Rect [164.653 399.459 227.098 411.519] /A << /S /GoTo /D (section*.7) >> >> -% 848 0 obj +% 857 0 obj << /Type /Annot /Subtype /Link @@ -5175,7 +5205,7 @@ stream /Rect [164.653 387.504 262.236 399.563] /A << /S /GoTo /D (section*.8) >> >> -% 849 0 obj +% 858 0 obj << /Type /Annot /Subtype /Link @@ -5183,7 +5213,7 @@ stream /Rect [164.653 375.549 282.36 387.608] /A << /S /GoTo /D (section*.9) >> >> -% 850 0 obj +% 859 0 obj << /Type /Annot /Subtype /Link @@ -5191,7 +5221,7 @@ stream /Rect [164.653 363.593 254.803 375.653] /A << /S /GoTo /D (section*.10) >> >> -% 851 0 obj +% 860 0 obj << /Type /Annot /Subtype /Link @@ -5199,7 +5229,7 @@ stream /Rect [164.653 351.638 253.488 363.698] /A << /S /GoTo /D (section*.11) >> >> -% 852 0 obj +% 861 0 obj << /Type /Annot /Subtype /Link @@ -5207,7 +5237,7 @@ stream /Rect [164.653 339.683 280.328 351.743] /A << /S /GoTo /D (section*.12) >> >> -% 853 0 obj +% 862 0 obj << /Type /Annot /Subtype /Link @@ -5215,7 +5245,7 @@ stream /Rect [164.653 327.728 252.871 339.788] /A << /S /GoTo /D (section*.13) >> >> -% 854 0 obj +% 863 0 obj << /Type /Annot /Subtype /Link @@ -5223,7 +5253,7 @@ stream /Rect [164.653 315.773 281.971 327.832] /A << /S /GoTo /D (section*.14) >> >> -% 855 0 obj +% 864 0 obj << /Type /Annot /Subtype /Link @@ -5231,7 +5261,7 @@ stream /Rect [164.653 303.818 296.477 315.877] /A << /S /GoTo /D (section*.15) >> >> -% 856 0 obj +% 865 0 obj << /Type /Annot /Subtype /Link @@ -5239,7 +5269,7 @@ stream /Rect [164.653 291.862 305.742 303.922] /A << /S /GoTo /D (section*.16) >> >> -% 857 0 obj +% 866 0 obj << /Type /Annot /Subtype /Link @@ -5247,7 +5277,7 @@ stream /Rect [164.653 279.907 293.966 291.967] /A << /S /GoTo /D (section*.17) >> >> -% 858 0 obj +% 867 0 obj << /Type /Annot /Subtype /Link @@ -5255,7 +5285,7 @@ stream /Rect [164.653 267.952 292.711 280.012] /A << /S /GoTo /D (section*.18) >> >> -% 859 0 obj +% 868 0 obj << /Type /Annot /Subtype /Link @@ -5263,97 +5293,97 @@ stream /Rect [164.653 255.997 319.55 268.057] /A << /S /GoTo /D (section*.19) >> >> -% 863 0 obj +% 872 0 obj << -/D [861 0 R /XYZ 149.705 753.953 null] +/D [870 0 R /XYZ 149.705 753.953 null] >> -% 860 0 obj +% 869 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 879 0 obj +% 887 0 obj << /Type /Page -/Contents 880 0 R -/Resources 878 0 R +/Contents 888 0 R +/Resources 886 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 868 0 R 869 0 R 870 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R ] +/Parent 889 0 R +/Annots [ 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R ] >> -% 868 0 obj +% 876 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [408.168 585.966 420.123 595.071] +/Rect [409.709 586.065 421.664 595.071] /A << /S /GoTo /D (cite.metcalf) >> >> -% 869 0 obj +% 877 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [300.381 514.126 312.336 523.231] +/Rect [275.556 514.225 287.511 523.231] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 870 0 obj +% 878 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [311.368 502.171 323.323 511.127] +/Rect [264.473 502.27 276.428 511.276] /A << /S /GoTo /D (cite.DesPat:11) >> >> -% 871 0 obj +% 879 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [327.422 502.171 339.378 511.276] +/Rect [278.854 502.171 290.809 511.276] /A << /S /GoTo /D (cite.RouXiaXu:11) >> >> -% 872 0 obj +% 880 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [234.17 442.286 246.125 451.392] +/Rect [216.302 442.286 228.257 451.392] /A << /S /GoTo /D (cite.machiels) >> >> -% 873 0 obj +% 881 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [241.917 370.546 248.891 379.402] +/Rect [241.109 370.446 248.083 379.402] /A << /S /GoTo /D (cite.sblas97) >> >> -% 874 0 obj +% 882 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [251.448 370.446 258.422 379.402] +/Rect [251.021 370.446 257.995 379.402] /A << /S /GoTo /D (cite.sblas02) >> >> -% 875 0 obj +% 883 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [226.689 358.591 238.644 367.597] +/Rect [226.689 358.491 238.644 367.597] /A << /S /GoTo /D (cite.BLAS1) >> >> -% 876 0 obj +% 884 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [241.633 358.591 248.606 367.597] +/Rect [241.633 358.491 248.606 367.447] /A << /S /GoTo /D (cite.BLAS2) >> >> -% 877 0 obj +% 885 0 obj << /Type /Annot /Subtype /Link @@ -5363,23 +5393,23 @@ stream >> % 7 0 obj << -/D [879 0 R /XYZ 99.895 716.092 null] +/D [887 0 R /XYZ 99.895 716.092 null] >> -% 878 0 obj +% 886 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 898 0 obj +% 906 0 obj << /Type /Page -/Contents 899 0 R -/Resources 897 0 R +/Contents 907 0 R +/Resources 905 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 892 0 R 893 0 R 894 0 R ] +/Parent 889 0 R +/Annots [ 900 0 R 901 0 R 902 0 R ] >> -% 901 0 obj +% 909 0 obj << /Producer (GPL Ghostscript 9.04) /CreationDate (D:20111215145523+01'00') @@ -5388,15 +5418,15 @@ stream /Creator (fig2dev Version 3.2 Patchlevel 5d) /Author (sfilippo@donald \(Salvatore Filippone\)) >> -% 902 0 obj +% 910 0 obj << /Type /ExtGState /OPM 1 >> -% 903 0 obj +% 911 0 obj << /BaseFont /JEJNJE+Times-Roman -/FontDescriptor 904 0 R +/FontDescriptor 912 0 R /Type /Font /FirstChar 32 /LastChar 116 @@ -5404,7 +5434,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 904 0 obj +% 912 0 obj << /Type /FontDescriptor /FontName /JEJNJE+Times-Roman @@ -5418,170 +5448,170 @@ stream /MissingWidth 500 /XHeight 460 /CharSet (/A/B/F/I/L/M/P/S/a/c/e/f/g/i/l/n/o/p/r/s/space/t/three/two/zero) -/FontFile3 905 0 R +/FontFile3 913 0 R >> -% 892 0 obj +% 900 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [268.275 538.551 275.249 550.611] +/Rect [318.599 533.101 325.573 545.161] /A << /S /GoTo /D (figure.1) >> >> -% 893 0 obj +% 901 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [443.339 469.47 450.312 478.427] +/Rect [446.157 464.12 453.131 472.977] /A << /S /GoTo /D (cite.BLACS) >> >> -% 894 0 obj +% 902 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.969 430.955 254.943 443.014] +/Rect [209.992 425.505 216.966 437.564] /A << /S /GoTo /D (section.7) >> >> % 11 0 obj << -/D [898 0 R /XYZ 150.705 675.823 null] +/D [906 0 R /XYZ 150.705 672.16 null] >> -% 900 0 obj +% 908 0 obj << -/D [898 0 R /XYZ 150.705 272.018 null] +/D [906 0 R /XYZ 150.705 263.619 null] >> -% 897 0 obj +% 905 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F60 666 0 R >> -/XObject << /Im2 895 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F78 674 0 R >> +/XObject << /Im2 903 0 R >> /ProcSet [ /PDF /Text ] >> -% 910 0 obj +% 918 0 obj << /Type /Page -/Contents 911 0 R -/Resources 909 0 R +/Contents 919 0 R +/Resources 917 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 896 0 R 907 0 R 908 0 R ] +/Parent 889 0 R +/Annots [ 904 0 R 915 0 R 916 0 R ] >> -% 896 0 obj +% 904 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [275.119 609.332 287.074 618.438] +/Rect [275.033 609.432 286.988 618.438] /A << /S /GoTo /D (cite.METIS) >> >> -% 907 0 obj +% 915 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.706 534.258 238.983 547.962] +/Rect [209.13 534.258 215.407 547.962] /A << /S /GoTo /D (Hfootnote.1) >> >> -% 908 0 obj +% 916 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.808 185.645 164.084 199.235] +/Rect [157.604 185.645 163.88 199.235] /A << /S /GoTo /D (Hfootnote.2) >> >> -% 912 0 obj +% 920 0 obj << -/D [910 0 R /XYZ 98.895 753.953 null] +/D [918 0 R /XYZ 98.895 753.953 null] >> % 15 0 obj << -/D [910 0 R /XYZ 99.895 504.866 null] +/D [918 0 R /XYZ 99.895 504.866 null] >> -% 916 0 obj +% 924 0 obj << -/D [910 0 R /XYZ 114.242 167.999 null] +/D [918 0 R /XYZ 114.242 167.999 null] >> -% 917 0 obj +% 925 0 obj << -/D [910 0 R /XYZ 114.242 158.184 null] +/D [918 0 R /XYZ 114.242 158.184 null] >> -% 909 0 obj +% 917 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F67 913 0 R /F59 665 0 R /F91 914 0 R /F93 915 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R /F75 673 0 R /F179 922 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 923 0 obj +% 931 0 obj << /Type /Page -/Contents 924 0 R -/Resources 922 0 R +/Contents 932 0 R +/Resources 930 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 919 0 R 920 0 R ] +/Parent 889 0 R +/Annots [ 927 0 R 928 0 R ] >> -% 927 0 obj +% 935 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070123225315) /ModDate (D:20070123225315) >> -% 928 0 obj +% 936 0 obj << /Type /ExtGState /OPM 1 >> -% 929 0 obj +% 937 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> -% 919 0 obj +% 927 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [327.281 638.21 334.255 647.166] +/Rect [294.972 638.309 301.946 647.315] /A << /S /GoTo /D (cite.2007c) >> >> -% 920 0 obj +% 928 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [337.243 638.309 344.217 647.166] +/Rect [304.935 638.21 311.909 647.166] /A << /S /GoTo /D (cite.2007d) >> >> -% 925 0 obj +% 933 0 obj << -/D [923 0 R /XYZ 149.705 753.953 null] +/D [931 0 R /XYZ 149.705 753.953 null] >> -% 926 0 obj +% 934 0 obj << -/D [923 0 R /XYZ 150.705 353.614 null] +/D [931 0 R /XYZ 150.705 353.614 null] >> % 19 0 obj << -/D [923 0 R /XYZ 150.705 270.035 null] +/D [931 0 R /XYZ 150.705 270.035 null] >> -% 922 0 obj +% 930 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R >> -/XObject << /Im3 921 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> +/XObject << /Im3 929 0 R >> /ProcSet [ /PDF /Text ] >> -% 935 0 obj +% 943 0 obj << /Type /Page -/Contents 936 0 R -/Resources 934 0 R +/Contents 944 0 R +/Resources 942 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R -/Annots [ 932 0 R 933 0 R ] +/Parent 889 0 R +/Annots [ 940 0 R 941 0 R ] >> -% 932 0 obj +% 940 0 obj << /Type /Annot /Subtype /Link @@ -5589,161 +5619,145 @@ stream /Rect [404.739 354.196 411.713 366.255] /A << /S /GoTo /D (section.3) >> >> -% 933 0 obj +% 941 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.593 318.033 179.567 330.093] +/Rect [175.86 318.033 182.933 330.093] /A << /S /GoTo /D (section.6) >> >> -% 937 0 obj +% 945 0 obj << -/D [935 0 R /XYZ 98.895 753.953 null] +/D [943 0 R /XYZ 98.895 753.953 null] >> -% 934 0 obj +% 942 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 940 0 obj +% 948 0 obj << /Type /Page -/Contents 941 0 R -/Resources 939 0 R +/Contents 949 0 R +/Resources 947 0 R /MediaBox [0 0 595.276 841.89] -/Parent 881 0 R +/Parent 889 0 R >> -% 942 0 obj +% 950 0 obj << -/D [940 0 R /XYZ 149.705 753.953 null] +/D [948 0 R /XYZ 149.705 753.953 null] >> % 23 0 obj << -/D [940 0 R /XYZ 150.705 716.092 null] +/D [948 0 R /XYZ 150.705 716.092 null] >> -% 943 0 obj +% 951 0 obj << -/D [940 0 R /XYZ 150.705 282.521 null] +/D [948 0 R /XYZ 150.705 282.521 null] >> -% 944 0 obj +% 952 0 obj << -/D [940 0 R /XYZ 150.705 261.733 null] +/D [948 0 R /XYZ 150.705 261.733 null] >> -% 945 0 obj +% 953 0 obj << -/D [940 0 R /XYZ 150.705 240.946 null] +/D [948 0 R /XYZ 150.705 240.946 null] >> -% 946 0 obj +% 954 0 obj << -/D [940 0 R /XYZ 150.705 220.159 null] +/D [948 0 R /XYZ 150.705 220.159 null] >> -% 947 0 obj +% 955 0 obj << -/D [940 0 R /XYZ 150.705 188.012 null] +/D [948 0 R /XYZ 150.705 188.012 null] >> -% 948 0 obj +% 956 0 obj << -/D [940 0 R /XYZ 150.705 167.072 null] +/D [948 0 R /XYZ 150.705 167.072 null] >> -% 949 0 obj +% 957 0 obj << -/D [940 0 R /XYZ 150.705 148.646 null] +/D [948 0 R /XYZ 150.705 148.646 null] >> -% 950 0 obj +% 958 0 obj << -/D [940 0 R /XYZ 150.705 132.275 null] +/D [948 0 R /XYZ 150.705 132.275 null] >> -% 939 0 obj +% 947 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 953 0 obj +% 961 0 obj << /Type /Page -/Contents 954 0 R -/Resources 952 0 R +/Contents 962 0 R +/Resources 960 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 938 0 R ] +/Parent 980 0 R +/Annots [ 946 0 R ] >> -% 938 0 obj +% 946 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [176.109 690.964 182.386 703.958] +/Rect [233.383 690.964 239.66 703.958] /A << /S /GoTo /D (Hfootnote.3) >> >> -% 955 0 obj -<< -/D [953 0 R /XYZ 98.895 753.953 null] ->> -% 956 0 obj -<< -/D [953 0 R /XYZ 99.895 716.092 null] ->> -% 957 0 obj -<< -/D [953 0 R /XYZ 99.895 686.784 null] ->> -% 958 0 obj -<< -/D [953 0 R /XYZ 99.895 618.259 null] ->> -% 959 0 obj +% 963 0 obj << -/D [953 0 R /XYZ 99.895 595.952 null] +/D [961 0 R /XYZ 98.895 753.953 null] >> -% 960 0 obj +% 964 0 obj << -/D [953 0 R /XYZ 99.895 573.645 null] +/D [961 0 R /XYZ 99.895 716.092 null] >> -% 961 0 obj +% 965 0 obj << -/D [953 0 R /XYZ 99.895 539.978 null] +/D [961 0 R /XYZ 99.895 688.869 null] >> -% 962 0 obj +% 966 0 obj << -/D [953 0 R /XYZ 99.895 517.075 null] +/D [961 0 R /XYZ 99.895 619.713 null] >> -% 963 0 obj +% 967 0 obj << -/D [953 0 R /XYZ 99.895 494.768 null] +/D [961 0 R /XYZ 99.895 601.577 null] >> -% 964 0 obj +% 968 0 obj << -/D [953 0 R /XYZ 99.895 469.873 null] +/D [961 0 R /XYZ 99.895 583.441 null] >> -% 965 0 obj +% 969 0 obj << -/D [953 0 R /XYZ 99.895 442.062 null] +/D [961 0 R /XYZ 99.895 553.945 null] >> -% 966 0 obj +% 970 0 obj << -/D [953 0 R /XYZ 99.895 412.296 null] +/D [961 0 R /XYZ 99.895 535.213 null] >> -% 967 0 obj +% 971 0 obj << -/D [953 0 R /XYZ 99.895 395.165 null] +/D [961 0 R /XYZ 99.895 505.717 null] >> -% 968 0 obj +% 972 0 obj << -/D [953 0 R /XYZ 99.895 377.438 null] +/D [961 0 R /XYZ 99.895 484.993 null] >> endstream endobj -976 0 obj +985 0 obj << -/Length 7173 +/Length 7868 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(2.3.1)-1000(User)18(-de\002ned)-250(index)-250(mappings)]TJ/F62 9.9626 Tf 0 -18.964 Td [(PSBLAS)-316(supports)-315(user)18(-de\002ned)-316(global)-316(to)-315(local)-316(index)-316(mappings,)-332(subject)-315(to)-316(the)]TJ 0 -11.955 Td [(constraints)-250(outlined)-250(in)-250(sec.)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(2.3.1)-1000(User)18(-de\002ned)-250(index)-250(mappings)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 687.165 Tm [(PSBLAS)-250(sup)1(ports)-250(user)18(-de\002ned)-250(global)-249(to)-250(local)-249(index)-250(mappings,)-251(subject)-249(to)-250(the)]TJ 1 0 0 1 150.705 675.21 Tm [(constraints)-250(outlined)-250(in)-250(sec.)]TJ 0 0 1 rg 0 0 1 RG [-250(2.3)]TJ 0 g 0 G @@ -5751,64 +5765,64 @@ BT 0 g 0 G 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-250(set)-250(of)-250(indices)-250(owned)-250(locally)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)-250(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 294.494 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -1.495 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F62 9.9626 Tf 2.775 3.143 Td [(;)]TJ + [-469(The)-250(set)-250(of)-250(indices)-250(owned)-250(locally)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)-250(1)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 294.185 0 Td [(n)]TJ/F84 9.9626 Tf 5.664 -1.495 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F84 9.9626 Tf 2.775 3.143 Td [(;)]TJ 0 g 0 G - -320.47 -19.926 Td [(2.)]TJ + -320.161 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-250(set)-250(of)-250(halo)-250(points)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)]TJ/F60 9.9626 Tf 228.286 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -1.494 Td [(r)18(ow)]TJ/F60 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F93 10.3811 Tf 4.836 3.142 Td [(+)]TJ/F62 9.9626 Tf 10.132 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.966 0 Td [(n)]TJ/F62 9.9626 Tf 5.664 -3.83 Td [(col)]TJ/F60 5.9776 Tf 12.795 -1.649 Td [(i)]TJ/F62 9.9626 Tf 2.774 5.479 Td [(;)]TJ -320.107 -21.759 Td [(but)-289(otherwise)-289(the)-288(mapping)-289(is)-289(arbitrary)111(.)-426(The)-289(user)-289(application)-289(is)-288(r)18(esponsible)-289(to)]TJ 0 -11.956 Td [(ensur)18(e)-262(consistency)-261(of)-262(this)-262(mapping;)-267(some)-262(err)18(ors)-262(may)-261(be)-262(caught)-262(by)-261(the)-262(library)111(,)]TJ 0 -11.955 Td [(but)-236(this)-236(is)-236(not)-236(guaranteed.)-305(The)-236(application)-236(str)8(uctur)18(e)-236(to)-236(support)-236(this)-236(usage)-236(is)-236(as)]TJ 0 -11.955 Td [(follows:)]TJ + [-469(The)-250(set)-250(of)-250(halo)-250(points)-250(must)-250(be)-250(mapped)-250(to)-250(the)-250(set)]TJ/F78 9.9626 Tf 227.978 0 Td [(n)]TJ/F84 9.9626 Tf 5.663 -1.494 Td [(r)18(ow)]TJ/F78 5.9776 Tf 17.537 -1.648 Td [(i)]TJ/F181 10.3811 Tf 4.837 3.142 Td [(+)]TJ/F84 9.9626 Tf 10.131 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 19.966 0 Td [(n)]TJ/F84 9.9626 Tf 5.664 -3.83 Td [(col)]TJ/F78 5.9776 Tf 12.795 -1.649 Td [(i)]TJ/F84 9.9626 Tf 2.775 5.479 Td [(;)]TJ 1.016 0 0 1 150.705 613.6 Tm [(but)-246(otherwise)-247(the)-246(mapping)-246(is)-246(arbitrary)109(.)-306(The)-246(user)-247(application)-246(is)-246(r)17(esponsibl)1(e)-247(to)]TJ 1.009 0 0 1 150.705 601.644 Tm [(ensur)18(e)-247(consistency)-247(of)-246(this)-247(mapping;)-247(some)-247(err)18(ors)-247(may)-246(be)-247(caught)-247(by)-247(the)-246(library)110(,)]TJ 0.994 0 0 1 150.705 589.689 Tm [(but)-253(this)-252(is)-253(not)-252(guaranteed.)-315(The)-253(application)-252(str)8(uctur)18(e)-253(to)-252(support)-253(this)-252(usage)-253(is)-252(as)]TJ 1 0 0 1 150.705 577.734 Tm [(follows:)]TJ 0 g 0 G 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(Initialize)-190(index)-190(space)-190(with)]TJ/F67 9.9626 Tf 128.098 0 Td [(psb_cdall\050ictx,desc,info,vl=vl,lidx=lidx\051)]TJ/F62 9.9626 Tf -115.645 -11.955 Td [(passing)-292(the)-293(vectors)]TJ/F67 9.9626 Tf 87.882 0 Td [(vl\050:\051)]TJ/F62 9.9626 Tf 29.064 0 Td [(containing)-292(the)-293(set)-292(of)-293(global)-292(indices)-292(owned)-293(by)]TJ -116.946 -11.956 Td [(the)-327(curr)18(ent)-328(pr)18(ocess)-327(and)]TJ/F67 9.9626 Tf 108.493 0 Td [(lidx\050:\051)]TJ/F62 9.9626 Tf 39.873 0 Td [(containing)-327(the)-327(corr)18(esponding)-328(local)-327(in-)]TJ -148.366 -11.955 Td [(dices;)]TJ + 0.98 0 0 1 175.611 557.809 Tm [(Initialize)-194(index)-194(space)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 289.095 557.809 Tm [(psb_cdall\050ictx,desc,info,vl=vl,lidx=lidx\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.313 545.854 Tm [(passing)-205(the)-205(vectors)]TJ/F131 9.9626 Tf 1 0 0 1 258.875 545.854 Tm [(vl\050:\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 287.028 545.854 Tm [(containing)-205(the)-205(set)-205(of)-205(global)-205(indices)-205(owned)-205(by)-204(the)]TJ 1 0 0 1 175.611 533.898 Tm [(curr)18(ent)-250(pr)18(ocess)-250(and)]TJ/F131 9.9626 Tf 89.105 0 Td [(lidx\050:\051)]TJ/F84 9.9626 Tf 39.103 0 Td [(containing)-250(the)-250(corr)18(esponding)-250(local)-250(indices;)]TJ 0 g 0 G - -12.453 -19.925 Td [(2.)]TJ + -140.661 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Add)-412(the)-412(halo)-412(points)]TJ/F67 9.9626 Tf 109.326 0 Td [(ja\050:\051)]TJ/F62 9.9626 Tf 30.256 0 Td [(and)-412(their)-412(associated)-412(local)-412(indices)]TJ/F67 9.9626 Tf 155.064 0 Td [(lidx\050:\051)]TJ/F62 9.9626 Tf -282.193 -11.955 Td [(with)-250(a\050some\051)-250(call\050s\051)-250(to)]TJ/F67 9.9626 Tf 99.815 0 Td [(psb_cdins\050nz,ja,desc,info,lidx=lidx\051)]TJ/F62 9.9626 Tf 188.292 0 Td [(;)]TJ + 0.98 0 0 1 175.223 513.973 Tm [(Add)-241(the)-241(halo)-241(points)]TJ/F131 9.9626 Tf 1 0 0 1 263.482 513.973 Tm [(ja\050:\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 291.986 513.973 Tm [(and)-241(their)-241(associated)-241(local)-241(indices)]TJ/F131 9.9626 Tf 1 0 0 1 435.602 513.973 Tm [(lidx\050:\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 474.567 513.973 Tm [(with)]TJ 1 0 0 1 175.611 502.018 Tm [(a\050some\051)-250(call\050s\051)-250(to)]TJ/F131 9.9626 Tf 77.071 0 Td [(psb_cdins\050nz,ja,desc,info,lidx=lidx\051)]TJ/F84 9.9626 Tf 188.292 0 Td [(;)]TJ 0 g 0 G - -300.56 -19.926 Td [(3.)]TJ + -277.816 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F67 9.9626 Tf 144.387 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)]TJ + [-461(Assemble)-250(the)-250(descriptor)-250(with)]TJ/F131 9.9626 Tf 143.998 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)]TJ 0 g 0 G - -191.46 -19.925 Td [(4.)]TJ + -191.071 -19.926 Td [(4.)]TJ 0 g 0 G - [-500(Build)-190(the)-190(sparse)-190(matrices)-190(and)-190(vectors,)-202(optionally)-190(making)-190(use)-190(in)]TJ/F67 9.9626 Tf 288.117 0 Td [(psb_spins)]TJ/F62 9.9626 Tf -275.664 -11.955 Td [(and)]TJ/F67 9.9626 Tf 19.958 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 50.163 0 Td [(of)-310(the)]TJ/F67 9.9626 Tf 28.756 0 Td [(local)]TJ/F62 9.9626 Tf 29.243 0 Td [(ar)18(gument)-310(specifying)-310(that)-310(the)-311(indices)-310(in)]TJ/F67 9.9626 Tf 177.734 0 Td [(ia)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf -316.314 -11.955 Td [(ja)]TJ/F62 9.9626 Tf 12.952 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(irw)]TJ/F62 9.9626 Tf 15.691 0 Td [(,)-250(r)18(espectively)111(,)-250(ar)18(e)-250(alr)18(eady)-250(local)-250(indices.)]TJ/F59 11.9552 Tf -72.906 -29.133 Td [(2.4)-1000(Programming)-250(model)]TJ/F62 9.9626 Tf 0 -18.964 Td [(The)-316(PSBLAS)-315(librarary)-316(is)-315(based)-316(on)-315(the)-316(Single)-315(Pr)18(ogram)-316(Multiple)-316(Data)-315(\050SPMD\051)]TJ 0 -11.955 Td [(pr)18(ogramming)-277(model:)-364(each)-277(pr)18(ocess)-277(participatin)1(g)-277(in)-277(the)-277(computation)-277(performs)]TJ 0 -11.955 Td [(the)-250(same)-250(actions)-250(on)-250(a)-250(chunk)-250(of)-250(data.)-310(Parallelism)-250(is)-250(thus)-250(data-driven.)]TJ 14.944 -11.956 Td [(Because)-313(of)-313(this)-312(str)8(uctur)18(e,)-329(many)-313(subr)18(outines)-313(coor)18(dinate)-312(their)-313(action)-313(acr)18(oss)]TJ -14.944 -11.955 Td [(the)-336(various)-336(pr)18(ocesses,)-358(thus)-336(pr)18(oviding)-336(an)-336(implicit)-336(synchr)18(onization)-336(point,)-358(and)]TJ 0 -11.955 Td [(ther)18(efor)18(e)]TJ/F60 9.9626 Tf 43.283 0 Td [(must)]TJ/F62 9.9626 Tf 24.136 0 Td [(be)-367(called)-366(simultaneously)-367(by)-366(all)-367(pr)18(ocesses)-367(participating)-366(in)-367(the)]TJ -67.419 -11.955 Td [(computation.)-525(This)-321(is)-322(certainly)-322(tr)8(ue)-321(for)-322(the)-322(data)-321(allocation)-322(and)-322(assembl)1(y)-322(r)18(ou-)]TJ 0 -11.955 Td [(tines,)-250(for)-250(all)-250(the)-250(computational)-250(r)18(outines)-250(and)-250(for)-250(some)-250(of)-250(the)-250(tools)-250(r)18(outines.)]TJ 14.944 -11.955 Td [(However)-333(ther)18(e)-332(ar)18(e)-333(many)-333(cases)-332(wher)18(e)-333(no)-333(synchr)18(onizati)1(on,)-354(and)-332(indeed)-333(no)]TJ -14.944 -11.956 Td [(communication)-344(among)-343(pr)18(ocesses,)-367(is)-344(implied;)-390(for)-344(instance,)-367(all)-344(the)-343(r)18(outines)-344(in)]TJ 0 -11.955 Td [(sec.)]TJ + 0.98 0 0 1 175.611 462.167 Tm [(Build)-206(the)-207(sparse)-206(matrices)-207(and)-206(vectors,)-216(optionally)-207(making)-206(use)-206(in)]TJ/F131 9.9626 Tf 1 0 0 1 447.343 462.167 Tm [(psb_spins)]TJ/F84 9.9626 Tf 1.02 0 0 1 175.611 450.212 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 195.653 450.212 Tm [(psb_geins)]TJ/F84 9.9626 Tf 1.02 0 0 1 245.564 450.212 Tm [(of)-279(the)]TJ/F131 9.9626 Tf 1 0 0 1 274.266 450.212 Tm [(local)]TJ/F84 9.9626 Tf 1.02 0 0 1 303.255 450.212 Tm [(ar)18(gument)-280(specifying)-279(that)-279(the)-279(indices)-280(in)]TJ/F131 9.9626 Tf 1 0 0 1 482.66 450.212 Tm [(ia)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 450.212 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 438.257 Tm [(ja)]TJ/F84 9.9626 Tf 12.952 0 Td [(and)]TJ/F131 9.9626 Tf 19.357 0 Td [(irw)]TJ/F84 9.9626 Tf 15.691 0 Td [(,)-250(r)18(espectively)111(,)-250(ar)18(e)-250(alr)18(eady)-250(local)-250(indices.)]TJ/F75 11.9552 Tf -72.906 -29.133 Td [(2.4)-1000(Programming)-250(model)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 390.16 Tm [(The)-266(PSBLAS)-265(librarary)-266(is)-266(based)-266(on)-265(the)-266(Single)-266(Pr)18(ogram)-266(Multiple)-265(Data)-266(\050SPMD\051)]TJ 1.008 0 0 1 150.406 378.205 Tm [(pr)18(ogramming)-250(model:)-310(each)-250(pr)18(ocess)-250(participating)-249(in)-250(the)-250(computat)1(ion)-250(performs)]TJ 1 0 0 1 150.705 366.25 Tm [(the)-250(same)-250(actions)-250(on)-250(a)-250(chunk)-250(of)-250(data.)-310(Parallelism)-250(is)-250(thus)-250(data-driven.)]TJ 1.019 0 0 1 165.649 354.295 Tm [(Because)-246(of)-246(this)-246(str)8(uctur)17(e,)-246(many)-246(subr)18(outines)-246(coor)18(dinate)-246(their)-246(action)-246(acr)17(oss)]TJ 1.02 0 0 1 150.705 342.34 Tm [(the)-265(various)-264(pr)18(ocesses,)-270(thus)-264(pr)17(oviding)-264(an)-265(implicit)-264(synchr)17(onization)-264(point,)-270(and)]TJ 1.02 0 0 1 150.705 330.384 Tm [(ther)18(efor)17(e)]TJ/F78 9.9626 Tf 1.02 0 0 1 194.173 330.384 Tm [(must)]TJ/F84 9.9626 Tf 1.02 0 0 1 218.103 330.384 Tm [(be)-299(called)-299(simultaneously)-299(by)-298(all)-299(pr)17(ocesses)-299(p)1(articipating)-299(in)-299(the)]TJ 0.98 0 0 1 150.705 318.429 Tm [(computation.)-306(This)-225(is)-225(certainly)-225(tr)9(ue)-225(for)-225(the)-225(data)-225(allocation)-224(and)-225(assembly)-225(r)18(outines,)]TJ 1 0 0 1 150.705 306.474 Tm [(for)-250(all)-250(the)-250(computational)-250(r)18(outines)-250(and)-250(for)-250(some)-250(of)-250(the)-250(tools)-250(r)18(outines.)]TJ 1.02 0 0 1 165.649 294.519 Tm [(However)-269(ther)17(e)-269(ar)18(e)-269(many)-270(cases)-269(wher)18(e)-270(no)-269(synchr)18(onization,)-276(and)-269(indeed)-269(no)]TJ 1.02 0 0 1 150.705 282.564 Tm [(communication)-282(among)-281(pr)17(ocesses,)-290(is)-282(implied;)-300(for)-282(instance,)-290(all)-282(the)-282(r)18(outines)-282(in)]TJ 1.02 0 0 1 150.705 270.609 Tm [(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-246(3)]TJ + [-377(3)]TJ 0 g 0 G - [-247(ar)18(e)-246(only)-246(acting)-246(on)-247(the)-246(local)-246(data)-247(str)8(uctur)18(es,)-247(and)-246(thus)-246(may)-247(be)-246(called)-246(inde-)]TJ 0 -11.955 Td [(pendently)111(.)-306(The)-238(most)-238(important)-237(case)-238(is)-238(that)-238(of)-238(the)-238(coef)18(\002cient)-237(insertion)-238(r)18(outines:)]TJ 0 -11.955 Td [(since)-231(the)-231(number)-231(of)-230(coef)18(\002cients)-231(in)-231(the)-231(sparse)-231(and)-231(dense)-230(matrices)-231(varies)-231(among)]TJ 0 -11.955 Td [(the)-248(pr)18(ocessors,)-249(and)-249(since)-248(the)-249(user)-248(is)-249(fr)18(ee)-248(to)-249(choose)-248(an)-249(arbitrary)-248(or)18(der)-249(in)-248(builid-)]TJ 0 -11.955 Td [(ing)-250(the)-250(matrix)-250(entries,)-250(these)-250(r)18(outines)-250(cannot)-250(imply)-250(a)-250(synchr)18(onization.)]TJ 14.944 -11.956 Td [(Thr)18(oughout)-250(this)-250(user)-74('s)-250(guide)-250(each)-250(subr)18(outine)-250(will)-250(be)-250(clearly)-250(indicated)-250(as:)]TJ + [-377(ar)17(e)-377(only)-377(acting)-377(on)-378(the)-377(local)-377(data)-377(str)8(uctur)17(es,)-410(and)-377(thus)-377(may)-377(be)-378(called)]TJ 1.02 0 0 1 150.705 258.653 Tm [(independently)109(.)-657(The)-362(most)-363(important)-363(case)-362(is)-363(that)-363(of)-362(the)-363(coef)18(\002cient)-363(insertion)]TJ 0.98 0 0 1 150.705 246.698 Tm [(r)18(outines:)-296(since)-215(the)-215(number)-216(of)-215(coef)19(\002)-1(cients)-215(in)-215(the)-215(sparse)-216(and)-215(dense)-215(matrices)-215(varies)]TJ 0.996 0 0 1 150.705 234.743 Tm [(among)-252(the)-251(pr)18(ocessors,)-252(and)-252(since)-252(the)-251(user)-252(is)-252(fr)18(ee)-251(to)-252(choose)-252(an)-251(arbitrary)-252(or)18(der)-252(in)]TJ 1 0 0 1 150.705 222.788 Tm [(builiding)-250(the)-250(matrix)-250(entries,)-250(these)-250(r)18(outines)-250(cannot)-250(imply)-250(a)-250(synchr)18(onization.)]TJ 14.944 -11.955 Td [(Thr)18(oughout)-250(this)-250(user)-74('s)-250(guide)-250(each)-250(subr)18(outine)-250(will)-250(be)-250(clearly)-250(indicated)-250(as:)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(Synchronous:)]TJ +/F75 9.9626 Tf -14.944 -19.926 Td [(Synchronous:)]TJ 0 g 0 G -/F62 9.9626 Tf 67.247 0 Td [(must)-307(be)-307(called)-308(simultaneously)-307(by)-307(all)-307(the)-308(pr)18(ocesses)-307(in)-307(the)-307(r)18(ele-)]TJ -42.341 -11.955 Td [(vant)-250(communication)-250(context;)]TJ +/F84 9.9626 Tf 0.98 0 0 1 217.952 190.907 Tm [(must)-200(be)-200(called)-200(simultaneously)-200(by)-200(all)-200(the)-199(pr)18(ocesses)-200(in)-200(the)-200(r)18(el)1(evant)]TJ 1 0 0 1 175.611 178.952 Tm [(communication)-250(context;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(Asynchronous:)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(Asynchronous:)]TJ 0 g 0 G -/F62 9.9626 Tf 73.334 0 Td [(may)-250(be)-250(called)-250(in)-250(a)-250(totally)-250(independent)-250(manner)74(.)]TJ +/F84 9.9626 Tf 73.334 0 Td [(may)-250(be)-250(called)-250(in)-250(a)-250(totally)-250(independent)-250(manner)74(.)]TJ 0 g 0 G - 96.031 -56.634 Td [(8)]TJ + 96.031 -68.589 Td [(8)]TJ 0 g 0 G ET endstream endobj -987 0 obj +996 0 obj << -/Length 8187 +/Length 8753 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ/F62 9.9626 Tf 0 -23.091 Td [(In)-289(this)-288(chapter)-289(we)-289(illustrate)-288(the)-289(data)-289(str)8(uctur)18(es)-288(used)-289(for)-289(de\002nition)-289(of)-288(r)18(outines)]TJ 0 -11.956 Td [(interfaces.)-622(They)-354(include)-354(data)-354(str)8(uctur)18(es)-354(for)-354(sparse)-354(matrices,)-380(communication)]TJ 0 -11.955 Td [(descriptors)-250(and)-250(pr)18(econditioners.)]TJ 14.944 -12.156 Td [(All)-248(the)-248(data)-249(types)-248(and)-248(the)-248(basic)-248(subr)18(outine)-249(interfaces)-248(r)18(elated)-248(to)-248(descriptors)]TJ -14.944 -11.955 Td [(and)-345(sparse)-345(matrices)-344(ar)18(e)-345(de\002ned)-345(in)-345(the)-345(module)]TJ/F67 9.9626 Tf 213.323 0 Td [(psb_base_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(;)-392(this)-345(will)-345(have)]TJ -276.087 -11.955 Td [(to)-381(be)-381(included)-381(by)-381(every)-381(user)-381(subr)18(outine)-381(that)-381(makes)-381(u)1(se)-381(of)-381(the)-381(library)111(.)-703(The)]TJ 0 -11.956 Td [(pr)18(econditioners)-250(ar)18(e)-250(de\002ned)-250(in)-250(the)-250(module)]TJ/F67 9.9626 Tf 187.993 0 Td [(psb_prec_mod)]TJ/F62 9.9626 Tf -173.049 -12.156 Td [(Integer)74(,)-433(r)18(eal)-396(and)-397(complex)-396(data)-396(types)-397(ar)18(e)-396(parametrized)-396(with)-397(a)-396(kind)-396(type)]TJ -14.944 -11.955 Td [(de\002ned)-250(in)-250(the)-250(library)-250(as)-250(follows:)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(3)-1000(Data)-250(Structures)-250(and)-250(Classes)]TJ/F84 9.9626 Tf 1.015 0 0 1 99.895 682.693 Tm [(In)-246(this)-246(chapter)-246(we)-247(illustrate)-246(the)-246(data)-246(str)8(uctur)18(es)-247(u)1(sed)-247(for)-246(de\002nition)-246(of)-246(r)18(outines)]TJ 1.02 0 0 1 99.895 670.737 Tm [(interfaces.)-430(They)-287(include)-287(data)-287(str)8(uctur)18(es)-287(for)-287(sparse)-287(matrices,)-298(communication)]TJ 1 0 0 1 99.895 658.782 Tm [(descriptors)-250(and)-250(pr)18(econditioners.)]TJ 0.999 0 0 1 114.839 646.626 Tm [(All)-251(the)-251(data)-252(types)-251(and)-251(the)-251(basic)-252(su)1(br)18(outine)-252(interfaces)-251(r)18(elated)-251(to)-251(descriptors)]TJ 1.02 0 0 1 99.895 634.671 Tm [(and)-297(sparse)-296(matrices)-296(ar)17(e)-296(de\002ned)-297(in)-296(the)-297(module)]TJ/F131 9.9626 Tf 1 0 0 1 313.56 634.671 Tm [(psb_base_mod)]TJ/F84 9.9626 Tf 1.02 0 0 1 376.324 634.671 Tm [(;)-322(this)-297(will)-296(have)]TJ 1.02 0 0 1 99.895 622.716 Tm [(to)-335(be)-335(included)-335(by)-335(every)-336(user)-335(subr)18(outine)-335(that)-335(makes)-335(use)-335(of)-335(the)-336(library)109(.)-574(The)]TJ 1 0 0 1 99.596 610.76 Tm [(pr)18(econditioners)-250(ar)18(e)-250(de\002ned)-250(in)-250(the)-250(module)]TJ/F131 9.9626 Tf 187.993 0 Td [(psb_prec_mod)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 598.604 Tm [(Integer)73(,)-362(r)17(eal)-338(and)-339(complex)-338(data)-339(types)-338(ar)17(e)-338(parametrized)-339(with)-338(a)-339(kind)-338(type)]TJ 1 0 0 1 99.895 586.649 Tm [(de\002ned)-250(in)-250(the)-250(library)-250(as)-250(follows:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.528 Td [(psb)]TJ +/F75 9.9626 Tf 0 -20.528 Td [(psb)]TJ ET q 1 0 0 1 117.091 566.32 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 566.121 Td [(spk)]TJ +/F75 9.9626 Tf 120.08 566.121 Td [(spk)]TJ ET q 1 0 0 1 137.275 566.32 cm @@ -5816,20 +5830,20 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 145.245 566.121 Td [(Kind)-407(parameter)-406(for)-407(short)-406(pr)18(ecision)-407(r)18(eal)-406(and)-407(complex)-406(data;)-485(corr)18(e-)]TJ -20.443 -11.955 Td [(sponds)-250(to)-250(a)]TJ +/F84 9.9626 Tf 1.02 0 0 1 145.245 566.121 Tm [(Kind)-362(p)1(arameter)-362(for)-361(short)-362(pr)18(ecision)-362(r)18(eal)-362(and)-361(complex)-362(data;)-419(corr)17(e-)]TJ 1 0 0 1 124.802 554.166 Tm [(sponds)-250(to)-250(a)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 52.901 0 Td [(REAL)]TJ +/F131 9.9626 Tf 52.901 0 Td [(REAL)]TJ 0 g 0 G -/F62 9.9626 Tf 23.412 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(4)-250(bytes;)]TJ +/F84 9.9626 Tf 23.412 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(4)-250(bytes;)]TJ 0 g 0 G -/F59 9.9626 Tf -101.22 -20.73 Td [(psb)]TJ +/F75 9.9626 Tf -101.22 -20.73 Td [(psb)]TJ ET q 1 0 0 1 117.091 533.635 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 533.436 Td [(dpk)]TJ +/F75 9.9626 Tf 120.08 533.436 Td [(dpk)]TJ ET q 1 0 0 1 138.939 533.635 cm @@ -5837,20 +5851,20 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 146.909 533.436 Td [(Kind)-420(parameter)-421(for)-420(long)-420(pr)18(ecision)-421(r)18(eal)-420(and)-420(complex)-421(data;)-505(corr)18(e-)]TJ -22.107 -11.955 Td [(sponds)-250(to)-250(a)]TJ +/F84 9.9626 Tf 1.02 0 0 1 146.909 533.436 Tm [(Kind)-376(parameter)-375(for)-376(long)-375(pr)17(ecision)-375(r)17(eal)-375(and)-376(complex)-376(data;)-441(corr)18(e-)]TJ 1 0 0 1 124.802 521.481 Tm [(sponds)-250(to)-250(a)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 52.901 0 Td [(DOUBLE)-525(PRECISION)]TJ +/F131 9.9626 Tf 52.901 0 Td [(DOUBLE)-525(PRECISION)]TJ 0 g 0 G -/F62 9.9626 Tf 86.176 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(8)-250(bytes;)]TJ +/F84 9.9626 Tf 86.176 0 Td [(declaration)-250(and)-250(is)-250(normally)-250(8)-250(bytes;)]TJ 0 g 0 G -/F59 9.9626 Tf -163.984 -20.73 Td [(psb)]TJ +/F75 9.9626 Tf -163.984 -20.73 Td [(psb)]TJ ET q 1 0 0 1 117.091 500.951 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 500.751 Td [(mpk)]TJ +/F75 9.9626 Tf 120.08 500.751 Td [(mpk)]TJ ET q 1 0 0 1 141.708 500.951 cm @@ -5858,16 +5872,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 149.678 500.751 Td [(Kind)-250(parameter)-250(for)-250(4-bytes)-250(integer)-250(data,)-250(as)-250(is)-250(always)-250(used)-250(by)-250(MPI;)]TJ +/F84 9.9626 Tf 149.678 500.751 Td [(Kind)-250(parameter)-250(for)-250(4-bytes)-250(integer)-250(data,)-250(as)-250(is)-250(always)-250(used)-250(by)-250(MPI;)]TJ 0 g 0 G -/F59 9.9626 Tf -49.783 -20.729 Td [(psb)]TJ +/F75 9.9626 Tf -49.783 -20.729 Td [(psb)]TJ ET q 1 0 0 1 117.091 480.221 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 480.022 Td [(epk)]TJ +/F75 9.9626 Tf 120.08 480.022 Td [(epk)]TJ ET q 1 0 0 1 137.833 480.221 cm @@ -5875,16 +5889,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 145.803 480.022 Td [(Kind)-364(parameter)-363(for)-364(8-bytes)-363(integer)-364(data,)-391(a)-1(s)-363(is)-364(always)-363(used)-364(by)-363(the)]TJ/F67 9.9626 Tf -21.001 -11.955 Td [(sizeof)]TJ/F62 9.9626 Tf 33.873 0 Td [(methods;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 145.803 480.022 Tm [(Kind)-311(parameter)-312(for)-311(8-bytes)-311(integer)-312(data,)-327(as)-312(is)-311(always)-311(used)-312(by)-311(the)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 468.067 Tm [(sizeof)]TJ/F84 9.9626 Tf 33.873 0 Td [(methods;)]TJ 0 g 0 G -/F59 9.9626 Tf -58.78 -20.73 Td [(psb)]TJ +/F75 9.9626 Tf -58.78 -20.73 Td [(psb)]TJ ET q 1 0 0 1 117.091 447.537 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 447.337 Td [(ipk)]TJ +/F75 9.9626 Tf 120.08 447.337 Td [(ipk)]TJ ET q 1 0 0 1 136.169 447.537 cm @@ -5892,16 +5906,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 144.139 447.337 Td [(Kind)-398(parameter)-399(for)-398(\223local\224)-398(integer)-399(indices)-398(and)-398(data;)-473(with)-398(default)]TJ -19.337 -11.955 Td [(build)-250(options)-250(this)-250(is)-250(a)-250(4)-250(bytes)-250(integer;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 144.139 447.337 Tm [(Kind)-336(parameter)-336(for)-336(\223local\224)-336(integer)-336(indices)-336(and)-336(data;)-382(with)-336(default)]TJ 1 0 0 1 124.802 435.382 Tm [(build)-250(options)-250(this)-250(is)-250(a)-250(4)-250(bytes)-250(integer;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.729 Td [(psb)]TJ +/F75 9.9626 Tf -24.907 -20.729 Td [(psb)]TJ ET q 1 0 0 1 117.091 414.852 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 414.653 Td [(lpk)]TJ +/F75 9.9626 Tf 120.08 414.653 Td [(lpk)]TJ ET q 1 0 0 1 136.169 414.852 cm @@ -5909,29 +5923,29 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 144.139 414.653 Td [(Kind)-328(parameter)-329(for)-328(\223global\224)-328(integer)-329(indices)-328(and)-328(data;)-368(with)-328(default)]TJ -19.337 -11.955 Td [(build)-250(options)-250(this)-250(is)-250(an)-250(8)-250(bytes)-250(integer;)]TJ -24.907 -20.529 Td [(The)-205(integer)-205(kinds)-205(for)-206(local)-205(and)-205(global)-205(indices)-205(can)-205(be)-206(chosen)-205(at)-205(con\002gur)18(e)-205(time)-205(to)]TJ 0 -11.955 Td [(hold)-266(4)-267(or)-266(8)-267(bytes,)-270(with)-266(the)-267(global)-266(indices)-266(at)-267(least)-266(as)-267(lar)18(ge)-266(as)-266(the)-267(local)-266(ones.)-359(T)92(o-)]TJ 0 -11.955 Td [(gether)-219(with)-220(the)-219(classes)-219(attributes)-219(we)-219(also)-220(discuss)-219(their)-219(methods.)-300(Most)-219(methods)]TJ 0 -11.955 Td [(detailed)-272(her)18(e)-272(only)-273(act)-272(on)-272(the)-272(local)-272(variable,)-278(i.e.)-376(their)-273(action)-272(is)-272(pur)18(ely)-272(local)-272(and)]TJ 0 -11.956 Td [(asynchr)18(onous)-359(unless)-360(otherwise)-359(stated.)-638(The)-359(list)-360(of)-359(methods)-359(her)18(e)-360(is)-359(not)-359(com-)]TJ 0 -11.955 Td [(pletely)-336(exhaustive;)-380(many)-336(methods,)-358(especially)-336(those)-336(that)-336(alter)-337(the)-336(contents)-336(of)]TJ 0 -11.955 Td [(the)-299(various)-298(objects,)-311(ar)18(e)-299(usually)-299(not)-299(needed)-298(by)-299(the)-299(end-user)74(,)-311(and)-298(ther)18(efor)18(e)-299(ar)18(e)]TJ 0 -11.955 Td [(described)-250(in)-250(the)-250(developer)-74('s)-250(documentation.)]TJ/F59 11.9552 Tf 0 -30.277 Td [(3.1)-1000(Descriptor)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -19.353 Td [(All)-241(the)-241(gener)1(a)-1(l)-240(matrix)-241(informations)-241(and)-240(elements)-241(to)-241(be)-241(exchanged)-240(among)-241(pr)18(o-)]TJ 0 -11.956 Td [(cesses)-402(ar)18(e)-401(stor)18(ed)-402(within)-401(a)-402(data)-401(str)8(uctur)18(e)-402(of)-401(the)-402(type)]TJ/F67 9.9626 Tf 242.575 0 Td [(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 144.139 414.653 Tm [(Kind)-266(parameter)-266(for)-266(\223global\224)-266(integer)-266(indices)-266(and)-266(data;)-277(with)-266(default)]TJ 1 0 0 1 124.802 402.698 Tm [(build)-250(options)-250(this)-250(is)-250(an)-250(8)-250(bytes)-250(integer;)]TJ 1.017 0 0 1 99.587 382.169 Tm [(The)-246(integer)-246(kinds)-246(for)-246(local)-246(and)-246(global)-246(indices)-246(can)-246(be)-246(chosen)-246(at)-246(con\002gur)18(e)-246(time)]TJ 1.02 0 0 1 99.895 370.214 Tm [(to)-273(hold)-273(4)-273(or)-273(8)-273(bytes,)-280(with)-273(the)-273(global)-273(indices)-273(at)-273(least)-273(as)-273(lar)18(ge)-273(as)-273(the)-273(local)-273(ones.)]TJ 1.002 0 0 1 99.587 358.259 Tm [(T)92(ogether)-249(with)-249(the)-250(classes)-249(attributes)-249(we)-249(also)-249(discuss)-249(their)-249(methods.)-310(Most)-249(meth-)]TJ 1.016 0 0 1 99.895 346.304 Tm [(ods)-245(detailed)-245(her)18(e)-245(only)-245(act)-245(on)-245(the)-244(local)-245(variable,)-245(i.e.)-305(their)-245(action)-245(is)-245(pur)18(ely)-245(local)]TJ 1.02 0 0 1 99.895 334.349 Tm [(and)-346(asynchr)18(onous)-346(unless)-346(otherwise)-346(stated.)-607(The)-346(list)-346(of)-346(methods)-346(her)17(e)-346(is)-346(not)]TJ 1.006 0 0 1 99.895 322.393 Tm [(completely)-247(exhaustive;)-248(many)-248(methods,)-247(especially)-248(those)-247(that)-248(alter)-247(the)-247(contents)]TJ 0.984 0 0 1 99.895 310.438 Tm [(of)-253(the)-254(various)-253(objects,)-253(ar)18(e)-254(u)1(sually)-254(not)-253(needed)-253(by)-254(the)-253(end-user)75(,)-253(and)-254(ther)19(efor)18(e)-253(ar)18(e)]TJ 1 0 0 1 99.895 298.483 Tm [(described)-250(in)-250(the)-250(developer)-74('s)-250(documentation.)]TJ/F75 11.9552 Tf 0 -30.277 Td [(3.1)-1000(Descriptor)-250(data)-250(structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.507 248.853 Tm [(All)-387(the)-386(general)-387(matrix)-387(informations)-386(and)-387(elements)-387(to)-387(b)1(e)-387(exchanged)-387(among)]TJ 1.02 0 0 1 99.596 236.897 Tm [(pr)18(ocesses)-247(ar)18(e)-247(stor)18(ed)-247(within)-246(a)-247(data)-246(str)7(uctur)18(e)-246(of)-247(the)-247(type)]TJ/F131 9.9626 Tf 1 0 0 1 346.774 236.897 Tm [(psb)]TJ ET q -1 0 0 1 358.788 237.097 cm +1 0 0 1 363.093 237.097 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 361.927 236.897 Td [(desc)]TJ +/F131 9.9626 Tf 366.231 236.897 Td [(desc)]TJ ET q -1 0 0 1 383.476 237.097 cm +1 0 0 1 387.78 237.097 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 386.614 236.897 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)-765(Every)]TJ -307.64 -11.955 Td [(str)8(uctur)18(e)-371(of)-370(this)-371(type)-370(is)-371(associated)-370(with)-371(a)-371(discr)18(etization)-370(pattern)-371(and)-370(enables)]TJ 0 -11.955 Td [(data)-301(communications)-302(and)-301(other)-301(operations)-302(that)-301(ar)18(e)-302(nece)1(ssa)-1(r)1(y)-302(for)-301(implement-)]TJ 0 -11.955 Td [(ing)-250(the)-250(various)-250(algorithms)-250(of)-250(inter)18(est)-250(to)-250(us.)]TJ 14.944 -12.156 Td [(The)-265(data)-266(str)8(uctur)18(e)-265(itself)]TJ/F67 9.9626 Tf 107.448 0 Td [(psb_desc_type)]TJ/F62 9.9626 Tf 70.638 0 Td [(can)-265(be)-266(tr)18(eated)-265(as)-265(an)-265(opaque)-266(object)]TJ -193.03 -11.955 Td [(handled)-321(via)-321(the)-321(tools)-321(r)18(outines)-321(of)-321(Sec.)]TJ +/F131 9.9626 Tf 390.918 236.897 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 411.84 236.897 Tm [(.)-308(Every)]TJ 0.98 0 0 1 99.895 224.942 Tm [(str)8(uctur)19(e)-237(of)-238(thi)1(s)-238(type)-237(is)-237(associated)-237(with)-237(a)-237(discr)19(etization)-237(pattern)-237(and)-237(enables)-237(data)]TJ 0.997 0 0 1 99.895 212.987 Tm [(communications)-252(and)-252(other)-253(operations)-252(that)-252(ar)18(e)-252(necessary)-253(for)-252(implementing)-252(the)]TJ 1 0 0 1 99.616 201.032 Tm [(various)-250(algorithms)-250(of)-250(inter)18(est)-250(to)-250(us.)]TJ 1.007 0 0 1 114.839 188.876 Tm [(The)-249(data)-248(str)7(uct)1(ur)17(e)-248(itself)]TJ/F131 9.9626 Tf 1 0 0 1 222.376 188.876 Tm [(psb_desc_type)]TJ/F84 9.9626 Tf 1.007 0 0 1 292.866 188.876 Tm [(can)-249(be)-248(tr)17(eated)-248(as)-249(an)-249(opaque)-248(object)]TJ 1.02 0 0 1 99.895 176.921 Tm [(handled)-278(via)-279(the)-278(tools)-278(r)17(outines)-278(of)-278(Sec.)]TJ 0 0 1 rg 0 0 1 RG - [-321(6)]TJ + [-279(6)]TJ 0 g 0 G - [-321(or)-321(the)-321(query)-321(r)18(outines)-321(detailed)-321(below;)]TJ 0 -11.956 Td [(nevertheless)-250(we)-250(include)-250(her)18(e)-250(a)-250(description)-250(for)-250(the)-250(curious)-250(r)18(eader)74(.)]TJ 14.944 -12.156 Td [(First)-229(we)-228(describe)-228(the)]TJ/F67 9.9626 Tf 92.473 0 Td [(psb_indx_map)]TJ/F62 9.9626 Tf 65.04 0 Td [(type.)-303(This)-228(is)-229(a)-228(data)-229(str)8(uctur)18(e)-228(that)-229(keeps)]TJ -172.457 -11.955 Td [(track)-250(of)-250(a)-250(certain)-250(number)-250(of)-250(basic)-250(issues)-250(such)-250(as:)]TJ + [-278(or)-279(the)-278(query)-278(r)17(outines)-278(detailed)-278(below;)]TJ 1 0 0 1 99.895 164.965 Tm [(nevertheless)-250(we)-250(include)-250(her)18(e)-250(a)-250(description)-250(for)-250(the)-250(curious)-250(r)18(eader)74(.)]TJ 0.99 0 0 1 114.839 152.809 Tm [(First)-252(we)-252(describe)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 207.319 152.809 Tm [(psb_indx_map)]TJ/F84 9.9626 Tf 0.99 0 0 1 272.569 152.809 Tm [(type.)-313(This)-252(is)-252(a)-252(data)-252(str)8(uctur)18(e)-252(that)-252(keeps)]TJ 1 0 0 1 99.895 140.854 Tm [(track)-250(of)-250(a)-250(certain)-250(number)-250(of)-250(basic)-250(issues)-250(such)-250(as:)]TJ 0 g 0 G 13.888 -20.528 Td [(\225)]TJ 0 g 0 G - [-500(The)-250(value)-250(of)-250(the)-250(communication)-250(context;)]TJ + [-469(The)-250(value)-250(of)-250(the)-250(communication)-250(context;)]TJ 0 g 0 G 155.477 -29.888 Td [(9)]TJ 0 g 0 G @@ -5939,76 +5953,76 @@ ET endstream endobj -995 0 obj +1004 0 obj << -/Length 6070 +/Length 6425 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 164.593 706.129 Td [(\225)]TJ +/F84 9.9626 Tf 164.593 706.129 Td [(\225)]TJ 0 g 0 G - [-500(The)-236(number)-236(of)-235(indices)-236(in)-236(the)-236(index)-236(space,)-238(i.e.)-306(global)-236(number)-235(of)-236(r)18(ows)-236(and)]TJ 11.018 -11.955 Td [(columns)-250(of)-250(a)-250(sparse)-250(matrix;)]TJ + 0.995 0 0 1 175.303 706.129 Tm [(The)-251(number)-252(of)-251(indices)-252(in)-251(the)-252(index)-251(space,)-252(i.e.)-312(global)-252(number)-251(of)-252(r)18(ows)-251(and)]TJ 1 0 0 1 175.611 694.174 Tm [(columns)-250(of)-250(a)-250(sparse)-250(matrix;)]TJ 0 g 0 G -11.018 -20.409 Td [(\225)]TJ 0 g 0 G - [-500(The)-250(local)-250(set)-250(of)-250(indices,)-250(including:)]TJ + [-469(The)-250(local)-250(set)-250(of)-250(indices,)-250(including:)]TJ 0 g 0 G -/F59 9.9626 Tf 22.974 -20.408 Td [(\226)]TJ +/F75 9.9626 Tf 22.974 -20.408 Td [(\226)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(number)-250(of)-250(local)-250(indices)-250(\050and)-250(local)-250(r)18(ows\051;)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(number)-250(of)-250(local)-250(indices)-250(\050and)-250(local)-250(r)18(ows\051;)]TJ 0 g 0 G -/F59 9.9626 Tf -9.962 -16.182 Td [(\226)]TJ +/F75 9.9626 Tf -9.653 -16.182 Td [(\226)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(number)-250(of)-250(halo)-250(indices)-250(\050and)-250(ther)18(efor)18(e)-250(local)-250(columns\051;)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(number)-250(of)-250(halo)-250(indices)-250(\050and)-250(ther)18(efor)18(e)-250(local)-250(columns\051;)]TJ 0 g 0 G -/F59 9.9626 Tf -9.962 -16.181 Td [(\226)]TJ +/F75 9.9626 Tf -9.653 -16.181 Td [(\226)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(global)-250(indices)-250(corr)18(esponding)-250(to)-250(the)-250(local)-250(ones.)]TJ -46.824 -20.409 Td [(Ther)18(e)-301(ar)18(e)-301(many)-301(dif)18(fer)18(ent)-301(schemes)-301(for)-301(storing)-301(these)-301(data;)-326(ther)18(efor)18(e)-301(ther)18(e)-301(ar)18(e)-301(a)]TJ 0 -11.955 Td [(number)-299(of)-299(types)-300(extending)-299(the)-299(base)-299(one,)-312(and)-299(the)-299(descriptor)-300(str)8(uctur)18(e)-299(holds)-299(a)]TJ 0 -11.955 Td [(polymorphic)-212(object)-213(whose)-212(dynamic)-212(type)-213(can)-212(be)-212(any)-213(of)-212(the)-212(extended)-213(types.)-297(The)]TJ 0 -11.955 Td [(methods)-250(associated)-250(with)-250(this)-250(data)-250(type)-250(answer)-250(the)-250(following)-250(queries:)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(global)-250(indices)-250(corr)18(esponding)-250(to)-250(the)-250(local)-250(ones.)]TJ 1.02 0 0 1 150.396 600.585 Tm [(Ther)18(e)-249(ar)17(e)-248(many)-249(dif)17(f)1(er)17(ent)-249(schemes)-249(for)-248(storing)-249(these)-249(data;)-251(ther)18(efor)17(e)-249(ther)18(e)-249(ar)18(e)-249(a)]TJ 1.02 0 0 1 150.705 588.63 Tm [(number)-244(of)-244(types)-243(extending)-244(the)-244(base)-244(one,)-244(and)-244(the)-244(descriptor)-243(str)7(uctur)18(e)-244(holds)-244(a)]TJ 0.988 0 0 1 150.406 576.675 Tm [(polymorphic)-252(object)-251(whose)-252(dynamic)-252(type)-252(can)-251(be)-252(any)-252(of)-252(the)-251(extended)-252(types.)-314(The)]TJ 1 0 0 1 150.705 564.72 Tm [(methods)-250(associated)-250(with)-250(this)-250(data)-250(type)-250(answer)-250(the)-250(following)-250(queries:)]TJ 0 g 0 G 13.888 -20.288 Td [(\225)]TJ 0 g 0 G - [-500(For)-411(a)-412(given)-411(set)-412(of)-411(local)-411(indices,)-452(\002nd)-412(the)-411(corr)18(esponding)-411(indices)-412(in)-411(the)]TJ 11.018 -11.955 Td [(global)-250(numbering;)]TJ + 0.98 0 0 1 175.611 544.432 Tm [(For)-222(a)-222(given)-222(set)-222(of)-222(local)-223(indice)1(s,)-229(\002nd)-222(the)-222(corr)18(esponding)-222(indices)-222(in)-222(the)-222(global)]TJ 1 0 0 1 175.611 532.477 Tm [(numbering;)]TJ 0 g 0 G -11.018 -20.408 Td [(\225)]TJ 0 g 0 G - [-500(For)-357(a)-357(given)-357(set)-357(of)-358(global)-357(indices,)-384(\002nd)-357(the)-357(corr)18(esponding)-357(indices)-357(in)-357(the)]TJ 11.018 -11.955 Td [(local)-250(numbering,)-250(if)-250(any)111(,)-250(or)-250(r)18(eturn)-250(an)-250(invalid)]TJ + 1.02 0 0 1 175.611 512.069 Tm [(For)-306(a)-306(given)-305(set)-306(of)-306(global)-306(indices,)-321(\002nd)-305(the)-306(corr)18(esponding)-306(indices)-306(in)-306(the)]TJ 1 0 0 1 175.611 500.114 Tm [(local)-250(numbering,)-250(if)-250(any)111(,)-250(or)-250(r)18(eturn)-250(an)-250(invalid)]TJ 0 g 0 G -11.018 -20.409 Td [(\225)]TJ 0 g 0 G - [-500(Add)-250(a)-250(global)-250(index)-250(to)-250(the)-250(set)-250(of)-250(halo)-250(indices;)]TJ + [-461(Add)-250(a)-250(global)-250(index)-250(to)-250(the)-250(set)-250(of)-250(halo)-250(indices;)]TJ 0 g 0 G 0 -20.408 Td [(\225)]TJ 0 g 0 G - [-500(Find)-250(the)-250(pr)18(ocess)-250(owner)-250(of)-250(each)-250(member)-250(of)-250(a)-250(set)-250(of)-250(global)-250(indices.)]TJ -13.888 -20.288 Td [(All)-295(methods)-295(but)-294(the)-295(last)-295(ar)18(e)-295(pur)18(ely)-295(local;)-317(the)-295(last)-295(method)-294(potentially)-295(r)18(equir)18(es)]TJ 0 -11.955 Td [(communication)-418(among)-419(pr)18(ocesses,)-460(and)-419(thus)-418(is)-418(a)-419(synchr)18(onous)-418(method.)-815(The)]TJ 0 -11.955 Td [(choice)-244(of)-244(a)-244(speci\002c)-244(dynamic)-244(type)-244(for)-244(the)-244(index)-244(map)-244(is)-244(made)-244(at)-244(the)-244(time)-244(the)-244(de-)]TJ 0 -11.955 Td [(scriptor)-210(is)-211(init)1(ially)-211(allocated,)-218(accor)18(ding)-210(to)-211(t)1(he)-211(mode)-210(of)-210(initialization)-211(\050see)-210(also)]TJ + [-500(Find)-250(the)-250(pr)18(ocess)-250(owner)-250(of)-250(each)-250(member)-250(of)-250(a)-250(set)-250(of)-250(global)-250(indices.)]TJ 1.019 0 0 1 150.316 439.009 Tm [(All)-246(methods)-246(but)-246(the)-247(l)1(ast)-247(ar)18(e)-246(pur)18(ely)-247(local;)-246(the)-246(last)-246(method)-246(potentially)-247(r)18(equir)18(es)]TJ 0.98 0 0 1 150.705 427.054 Tm [(communication)-201(among)-202(pr)18(ocesses,)-212(and)-201(thus)-202(is)-202(a)-201(synchr)18(onous)-201(method.)-299(The)-201(choice)]TJ 0.996 0 0 1 150.705 415.099 Tm [(of)-251(a)-250(speci\002c)-251(dynamic)-251(type)-250(for)-251(the)-251(index)-250(map)-251(is)-251(made)-250(at)-251(the)-250(time)-251(the)-251(descriptor)]TJ 1 0 0 1 150.705 403.144 Tm [(is)-250(initially)-250(allocated,)-250(accor)18(ding)-250(to)-250(the)-250(mode)-250(of)-250(initialization)-250(\050see)-250(also)]TJ 0 0 1 rg 0 0 1 RG - [-210(6)]TJ + [-250(6)]TJ 0 g 0 G [(\051.)]TJ 14.944 -12.076 Td [(The)-250(descriptor)-250(contents)-250(ar)18(e)-250(as)-250(follows:)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -20.288 Td [(indxmap)]TJ +/F75 9.9626 Tf -14.944 -20.288 Td [(indxmap)]TJ 0 g 0 G -/F62 9.9626 Tf 45.38 0 Td [(A)-190(polymorphic)-190(variable)-190(of)-190(a)-190(type)-190(that)-190(is)-190(any)-190(extension)-190(of)-190(the)-190(indx)]TJ +/F84 9.9626 Tf 0.98 0 0 1 195.696 370.78 Tm [(A)-194(polymorphic)-194(variable)-193(of)-194(a)-194(type)-194(that)-194(is)-194(any)-194(extension)-194(of)-193(the)-194(indx)]TJ ET q -1 0 0 1 478.491 370.98 cm +1 0 0 1 472.921 370.98 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 481.48 370.78 Td [(map)]TJ -305.869 -11.955 Td [(type)-250(described)-250(above.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 475.91 370.78 Tm [(map)]TJ 1 0 0 1 175.611 358.825 Tm [(type)-250(described)-250(above.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -32.363 Td [(halo)]TJ +/F75 9.9626 Tf -24.906 -32.363 Td [(halo)]TJ ET q 1 0 0 1 171.228 326.661 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.217 326.462 Td [(index)]TJ +/F75 9.9626 Tf 174.217 326.462 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.435 0 Td [(A)-331(list)-332(of)-331(the)-332(halo)-331(and)-332(boundary)-331(elements)-332(for)-331(the)-332(curr)18(ent)-331(pr)18(ocess)]TJ -29.041 -11.955 Td [(to)-247(be)-247(exchanged)-247(with)-246(other)-247(pr)18(ocesses;)-248(for)-247(each)-247(pr)18(ocesses)-247(with)-247(whic)1(h)-247(it)-247(is)]TJ 0 -11.956 Td [(necessary)-250(to)-250(communicate:)]TJ +/F84 9.9626 Tf 1.02 0 0 1 204.264 326.462 Tm [(A)-283(list)-283(of)-283(the)-283(halo)-283(and)-283(boundary)-283(elements)-283(for)-283(the)-283(curr)17(ent)-283(pr)18(ocess)]TJ 0.999 0 0 1 175.611 314.507 Tm [(to)-250(be)-249(exchanged)-250(with)-249(other)-250(pr)18(ocesses;)-250(for)-249(each)-250(pr)18(ocesses)-249(with)-250(which)-250(it)-249(is)]TJ 1 0 0 1 175.611 302.551 Tm [(necessary)-250(to)-250(communicate:)]TJ 0 g 0 G 9.465 -20.408 Td [(1.)]TJ 0 g 0 G @@ -6034,31 +6048,31 @@ BT 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.409 Td [(ext)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(ext)]TJ ET q 1 0 0 1 164.583 176.799 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 167.572 176.599 Td [(index)]TJ +/F75 9.9626 Tf 167.572 176.599 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.435 0 Td [(A)-216(list)-217(of)-216(element)-217(indices)-216(to)-217(be)-216(exchanged)-217(to)-216(implement)-217(the)-216(mapping)]TJ -22.396 -11.955 Td [(between)-250(a)-250(base)-250(descriptor)-250(and)-250(a)-250(descriptor)-250(with)-250(overlap.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ +/F84 9.9626 Tf 0.988 0 0 1 197.619 176.599 Tm [(A)-253(list)-253(of)-253(element)-253(indices)-253(to)-252(be)-253(exchanged)-253(to)-253(implement)-253(the)-253(mapping)]TJ 1 0 0 1 175.611 164.644 Tm [(between)-250(a)-250(base)-250(descriptor)-250(and)-250(a)-250(descriptor)-250(with)-250(overlap.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ 0 0 1 rg 0 0 1 RG [-250(3.3)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.408 Td [(ovrlap)]TJ +/F75 9.9626 Tf -24.906 -20.408 Td [(ovrlap)]TJ ET q 1 0 0 1 180.642 132.48 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 183.631 132.281 Td [(index)]TJ +/F75 9.9626 Tf 183.631 132.281 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(A)-259(list)-259(of)-258(the)-259(overlap)-259(elements)-259(for)-259(the)-258(curr)18(ent)-259(pr)18(ocess,)-261(or)18(ganized)]TJ -38.456 -11.955 Td [(in)-250(gr)18(oups)-250(like)-250(the)-250(pr)18(evious)-250(vector:)]TJ +/F84 9.9626 Tf 1.005 0 0 1 213.678 132.281 Tm [(A)-249(list)-249(of)-249(the)-249(overl)1(ap)-249(elements)-249(for)-249(the)-249(curr)18(ent)-249(pr)18(ocess,)-249(or)18(ganized)]TJ 1 0 0 1 175.611 120.326 Tm [(in)-250(gr)18(oups)-250(like)-250(the)-250(pr)18(evious)-250(vector:)]TJ 0 g 0 G 141.968 -29.888 Td [(10)]TJ 0 g 0 G @@ -6066,16 +6080,16 @@ ET endstream endobj -1006 0 obj +1015 0 obj << -/Length 7045 +/Length 7273 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 134.267 706.129 Td [(1.)]TJ +/F84 9.9626 Tf 134.267 706.129 Td [(1.)]TJ 0 g 0 G [-500(Pr)18(ocess)-250(identi\002er;)]TJ 0 g 0 G @@ -6099,38 +6113,38 @@ BT 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(ovr)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(ovr)]TJ ET q 1 0 0 1 115.447 596.693 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 118.436 596.494 Td [(mst)]TJ +/F75 9.9626 Tf 118.436 596.494 Td [(mst)]TJ ET q 1 0 0 1 135.631 596.693 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 138.62 596.494 Td [(idx)]TJ +/F75 9.9626 Tf 138.62 596.494 Td [(idx)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(A)-331(list)-332(to)-331(r)18(etrieve)-331(the)-332(value)-331(of)-331(each)-332(overlap)-331(element)-331(fr)18(om)-332(the)-331(r)18(e-)]TJ -33.185 -11.956 Td [(spective)-250(master)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ +/F84 9.9626 Tf 0.98 0 0 1 157.599 596.494 Tm [(A)-235(list)-236(to)-235(r)19(etrieve)-236(the)-235(value)-235(of)-236(each)-235(overlap)-235(element)-236(fr)19(om)-235(the)-236(r)19(espec-)]TJ 1 0 0 1 124.802 584.538 Tm [(tive)-250(master)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(vector)-250(of)-250(integer)-250(type,)-250(see)]TJ 0 0 1 rg 0 0 1 RG [-250(3.3)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(ovrlap)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(ovrlap)]TJ ET q 1 0 0 1 129.833 551.351 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 132.822 551.152 Td [(elem)]TJ +/F75 9.9626 Tf 132.822 551.152 Td [(elem)]TJ 0 g 0 G -/F62 9.9626 Tf 27.118 0 Td [(For)-250(all)-250(overlap)-250(points)-250(belonging)-250(to)-250(th)-250(ecurr)18(ent)-250(pr)18(ocess:)]TJ +/F84 9.9626 Tf 27.118 0 Td [(For)-250(all)-250(overlap)-250(points)-250(belonging)-250(to)-250(th)-250(ecurr)18(ent)-250(pr)18(ocess:)]TJ 0 g 0 G -25.673 -21.431 Td [(1.)]TJ 0 g 0 G @@ -6144,16 +6158,16 @@ BT 0 g 0 G [-500(Index)-250(of)-250(a)-250(\223master)-74(\224)-250(pr)18(ocess:)]TJ -9.465 -21.431 Td [(Speci\002ed)-250(as:)-310(an)-250(allocatable)-250(integer)-250(array)-250(of)-250(rank)-250(two.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(bnd)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(bnd)]TJ ET q 1 0 0 1 118.755 453.671 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 121.743 453.472 Td [(elem)]TJ +/F75 9.9626 Tf 121.743 453.472 Td [(elem)]TJ 0 g 0 G -/F62 9.9626 Tf 27.119 0 Td [(A)-235(list)-235(of)-235(all)-235(boundary)-235(points,)-238(i.e.)-305(points)-235(that)-235(have)-235(a)-235(connection)-235(with)]TJ -24.06 -11.955 Td [(other)-250(pr)18(ocesses.)]TJ -24.907 -21.055 Td [(The)-393(Fortran)-394(2003)-393(declaration)-394(for)]TJ/F67 9.9626 Tf 151.232 0 Td [(psb_desc_type)]TJ/F62 9.9626 Tf 71.913 0 Td [(str)8(uctur)18(es)-393(is)-394(as)-393(follows:)-597(A)]TJ +/F84 9.9626 Tf 0.995 0 0 1 148.473 453.472 Tm [(A)-252(list)-251(of)-252(all)-252(boundary)-251(points,)-252(i.e.)-313(points)-251(that)-252(have)-252(a)-251(connection)-252(with)]TJ 1 0 0 1 124.802 441.517 Tm [(other)-250(pr)18(ocesses.)]TJ 1.02 0 0 1 99.587 420.462 Tm [(The)-350(Fortran)-350(2003)-350(declaration)-350(for)]TJ/F131 9.9626 Tf 1 0 0 1 251.633 420.462 Tm [(psb_desc_type)]TJ/F84 9.9626 Tf 1.02 0 0 1 323.183 420.462 Tm [(str)8(uctur)17(es)-349(is)-350(as)-350(follows:)-514(A)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -6166,7 +6180,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 102.884 388.902 Td [(type)]TJ +/F231 8.9664 Tf 102.884 388.902 Td [(type)]TJ 0 g 0 G [-525(psb_desc_type)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -6289,15 +6303,15 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -2.989 -41.43 Td [(Listing)-259(1:)-327(The)-259(PSBLAS)-259(de\002ned)-259(data)-258(type)-259(that)-259(contains)-259(the)-258(communication)-259(de-)]TJ 0 -11.955 Td [(scriptor)74(.)]TJ 0 -25.259 Td [(communication)-319(descriptor)-320(associated)-319(with)-319(a)-320(sparse)-319(matrix)-320(has)-319(a)-319(state,)-337(which)]TJ 0 -11.955 Td [(can)-250(take)-250(the)-250(following)-250(values:)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 259.801 Tm [(Listing)-350(1:)-513(The)-350(PSBLAS)-350(de\002ned)-350(data)-349(type)-350(that)-350(contains)-350(the)-350(communication)]TJ 1 0 0 1 99.895 247.846 Tm [(descriptor)74(.)]TJ 1.02 0 0 1 99.895 222.587 Tm [(communication)-253(descriptor)-253(associated)-254(with)-253(a)-253(sparse)-254(matrix)-253(has)-253(a)-253(state,)-256(which)]TJ 1 0 0 1 99.895 210.632 Tm [(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.054 Td [(Build:)]TJ +/F75 9.9626 Tf 0 -21.054 Td [(Build:)]TJ 0 g 0 G -/F62 9.9626 Tf 32.927 0 Td [(State)-283(enter)18(ed)-283(after)-283(the)-283(\002rst)-284(allocation,)-291(and)-283(befor)18(e)-283(the)-283(\002rst)-283(assembly;)-300(in)]TJ -8.02 -11.956 Td [(this)-220(state)-220(it)-220(is)-220(possible)-220(to)-220(add)-220(communication)-220(r)18(equir)18(ements)-220(among)-220(dif)18(fer)18(-)]TJ 0 -11.955 Td [(ent)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 132.822 189.578 Tm [(State)-350(enter)18(ed)-350(after)-349(the)-350(\002rst)-349(allocation,)-376(and)-350(befor)18(e)-350(the)-349(\002rst)-350(assembly;)]TJ 1.02 0 0 1 124.802 177.622 Tm [(in)-344(this)-344(state)-343(it)-344(is)-344(possible)-344(to)-344(add)-343(communication)-344(r)17(equir)18(ements)-344(among)]TJ 1 0 0 1 124.802 165.667 Tm [(dif)18(fer)18(ent)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.431 Td [(Assembled:)]TJ +/F75 9.9626 Tf -24.907 -21.431 Td [(Assembled:)]TJ 0 g 0 G -/F62 9.9626 Tf 58.381 0 Td [(State)-308(enter)18(ed)-308(after)-308(the)-309(assembly;)-337(computations)-308(using)-308(the)-308(associ-)]TJ -33.474 -11.955 Td [(ated)-310(sparse)-310(matrix,)-325(such)-310(as)-310(matrix-vector)-309(pr)18(oducts,)-325(ar)18(e)-310(only)-310(possible)-310(in)]TJ 0 -11.955 Td [(this)-250(state.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 158.276 144.236 Tm [(State)-261(enter)18(ed)-261(after)-261(the)-261(assembly;)-269(computations)-261(using)-260(the)-261(associ-)]TJ 1.02 0 0 1 124.802 132.281 Tm [(ated)-250(sparse)-250(matrix,)-251(such)-250(as)-250(matrix)1(-vector)-250(pr)17(oducts,)-251(ar)18(e)-250(only)-250(possible)-250(in)]TJ 1 0 0 1 124.802 120.326 Tm [(this)-250(state.)]TJ 0 g 0 G 141.968 -29.888 Td [(11)]TJ 0 g 0 G @@ -6305,517 +6319,517 @@ ET endstream endobj -1022 0 obj +1031 0 obj << -/Length 4957 +/Length 5156 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.1.1)-1000(Descriptor)-250(Methods)]TJ 0 -19 Td [(3.1.2)-1000(get)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.1.1)-1000(Descriptor)-250(Methods)]TJ 0 -19 Td [(3.1.2)-1000(get)]TJ ET q 1 0 0 1 195.029 687.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 687.129 Td [(local)]TJ +/F75 9.9626 Tf 198.017 687.129 Td [(local)]TJ ET q 1 0 0 1 220.194 687.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 223.183 687.129 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(rows)]TJ +/F75 9.9626 Tf 223.183 687.129 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(rows)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -72.478 -19 Td [(nr)-525(=)-525(desc%get_local_rows\050\051)]TJ +/F131 9.9626 Tf -72.478 -19 Td [(nr)-525(=)-525(desc%get_local_rows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.001 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.001 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.011 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-399(number)-398(of)-399(local)-398(r)18(ows,)-436(i.e.)-756(the)-398(number)-399(of)-399(r)18(ows)-398(owned)]TJ -47.87 -11.956 Td [(by)-350(the)-349(curr)18(ent)-350(pr)18(ocess;)-399(as)-350(explained)-350(in)]TJ +/F84 9.9626 Tf 1.02 0 0 1 223.173 540.269 Tm [(The)-249(number)-249(of)-249(local)-249(r)18(ows,)-250(i.e.)-315(the)-249(number)-249(of)-249(r)17(ows)-249(owned)-249(b)1(y)]TJ 0.98 0 0 1 175.611 528.314 Tm [(the)-211(curr)18(ent)-211(pr)19(ocess;)-226(as)-211(explained)-211(in)]TJ 0 0 1 rg 0 0 1 RG - [-349(1)]TJ + [-211(1)]TJ 0 g 0 G - [(,)-375(it)-350(is)-349(equal)-350(to)]TJ/F91 10.3811 Tf 249.705 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.433 0 Td [(+)]TJ/F91 10.3811 Tf 10.624 0 Td [(j)-23(B)]TJ/F60 7.5716 Tf 10.108 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.003 0 Td [(.)-609(The)]TJ -293.569 -11.955 Td [(r)18(eturned)-250(value)-250(is)-250(speci\002c)-250(to)-250(the)-250(calling)-250(pr)18(ocess.)]TJ/F59 9.9626 Tf -24.906 -27.247 Td [(3.1.3)-1000(get)]TJ + [(,)-220(it)-211(is)-211(equal)-211(to)]TJ/F179 10.3811 Tf 1 0 0 1 390.69 528.314 Tm [(j)-24(I)]TJ/F78 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 4.667 0 Td [(+)]TJ/F179 10.3811 Tf 9.858 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf 0.98 0 0 1 433.021 528.314 Tm [(.)-302(The)-211(r)19(eturned)]TJ 1 0 0 1 175.333 516.359 Tm [(value)-250(is)-250(speci\002c)-250(to)-250(the)-250(calling)-250(pr)18(ocess.)]TJ/F75 9.9626 Tf -24.628 -27.247 Td [(3.1.3)-1000(get)]TJ ET q 1 0 0 1 195.029 489.311 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 489.112 Td [(local)]TJ +/F75 9.9626 Tf 198.017 489.112 Td [(local)]TJ ET q 1 0 0 1 220.194 489.311 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 223.183 489.112 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ +/F75 9.9626 Tf 223.183 489.112 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(local)-250(cols)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -72.478 -19 Td [(nc)-525(=)-525(desc%get_local_cols\050\051)]TJ +/F131 9.9626 Tf -72.478 -19 Td [(nc)-525(=)-525(desc%get_local_cols\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.001 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.011 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-320(number)-320(of)-321(local)-320(cols,)-338(i.e.)-521(the)-320(number)-320(of)-321(indices)-320(used)-320(by)]TJ -47.87 -11.955 Td [(the)-322(curr)18(ent)-322(pr)18(ocess,)-340(including)-322(both)-322(local)-322(and)-322(halo)-322(indices;)-358(as)-322(explained)]TJ 0 -11.956 Td [(in)]TJ +/F84 9.9626 Tf 0.98 0 0 1 223.173 342.253 Tm [(The)-239(number)-239(of)-238(local)-239(cols,)-242(i.e.)-311(the)-239(number)-239(of)-238(indices)-239(used)-239(by)-239(the)]TJ 0.98 0 0 1 175.611 330.298 Tm [(curr)18(ent)-256(pr)19(ocess,)-257(including)-256(both)-256(local)-256(and)-256(halo)-257(indices;)-256(as)-256(explained)-257(in)]TJ 0 0 1 rg 0 0 1 RG - [-284(1)]TJ + [-256(1)]TJ 0 g 0 G - [(,)-294(i)1(t)-285(is)-284(equal)-285(to)]TJ/F91 10.3811 Tf 79.58 0 Td [(j)-24(I)]TJ/F60 7.5716 Tf 8.943 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.193 0 Td [(+)]TJ/F91 10.3811 Tf 10.383 0 Td [(j)-24(B)]TJ/F60 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F93 10.3811 Tf 5.192 0 Td [(+)]TJ/F91 10.3811 Tf 10.383 0 Td [(j)-24(H)]TJ/F60 7.5716 Tf 12.052 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F62 9.9626 Tf 3.004 0 Td [(.)-413(The)-285(r)18(eturned)-284(value)-285(is)-284(speci\002c)-285(to)-284(the)]TJ -153.464 -11.955 Td [(calling)-250(pr)18(ocess.)]TJ/F59 9.9626 Tf -24.907 -27.247 Td [(3.1.4)-1000(get)]TJ + [(,)-256(it)]TJ 1.017 0 0 1 175.611 318.342 Tm [(is)-246(equal)-245(to)]TJ/F179 10.3811 Tf 1 0 0 1 223.931 318.342 Tm [(j)-24(I)]TJ/F78 7.5716 Tf 8.944 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.063 0 Td [(+)]TJ/F179 10.3811 Tf 10.254 0 Td [(j)-24(B)]TJ/F78 7.5716 Tf 10.109 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F181 10.3811 Tf 5.063 0 Td [(+)]TJ/F179 10.3811 Tf 10.254 0 Td [(j)-24(H)]TJ/F78 7.5716 Tf 12.051 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf 1.017 0 0 1 297.298 318.342 Tm [(.)-305(The)-245(r)17(eturned)-245(value)-246(is)-245(speci\002c)-246(to)-245(the)-246(calling)]TJ 1 0 0 1 175.313 306.387 Tm [(pr)18(ocess.)]TJ/F75 9.9626 Tf -24.608 -27.247 Td [(3.1.4)-1000(get)]TJ ET q 1 0 0 1 195.029 279.339 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 279.14 Td [(global)]TJ +/F75 9.9626 Tf 198.017 279.14 Td [(global)]TJ ET q 1 0 0 1 227.397 279.339 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 230.386 279.14 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(rows)]TJ +/F75 9.9626 Tf 230.386 279.14 Td [(rows)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(rows)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -79.681 -19 Td [(nr)-525(=)-525(desc%get_global_rows\050\051)]TJ +/F131 9.9626 Tf -79.681 -19 Td [(nr)-525(=)-525(desc%get_global_rows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.974 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.001 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.011 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -33.929 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-351(number)-351(of)-350(global)-351(r)18(ows,)-376(i.e.)-613(the)-351(size)-351(of)-350(the)-351(global)-351(index)]TJ -47.87 -11.955 Td [(space.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 223.173 132.281 Tm [(The)-314(number)-314(of)-314(global)-314(r)18(ows,)-332(i.e.)-511(the)-314(size)-314(of)-314(the)-314(global)-314(index)]TJ 1 0 0 1 175.611 120.326 Tm [(space.)]TJ 0 g 0 G - 141.967 -29.888 Td [(12)]TJ + 141.968 -29.888 Td [(12)]TJ 0 g 0 G ET endstream endobj -1026 0 obj +1035 0 obj << -/Length 4367 +/Length 4481 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.1.5)-1000(get)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.1.5)-1000(get)]TJ ET q 1 0 0 1 144.219 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 706.129 Td [(global)]TJ +/F75 9.9626 Tf 147.208 706.129 Td [(global)]TJ ET q 1 0 0 1 176.587 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 179.576 706.129 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ +/F75 9.9626 Tf 179.576 706.129 Td [(cols)-250(\227)-250(Get)-250(number)-250(of)-250(global)-250(cols)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -79.681 -18.974 Td [(nr)-525(=)-525(desc%get_global_cols\050\051)]TJ +/F131 9.9626 Tf -79.681 -18.974 Td [(nr)-525(=)-525(desc%get_global_cols\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.935 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.935 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.947 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.947 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-242(number)-242(of)-241(global)-242(cols;)-245(usually)-241(this)-242(is)-242(equal)-242(to)-241(the)-242(number)]TJ -47.87 -11.955 Td [(of)-250(global)-250(r)18(ows.)]TJ/F59 9.9626 Tf -24.907 -27.172 Td [(3.1.6)-1000(get)]TJ +/F84 9.9626 Tf 0.998 0 0 1 172.363 559.535 Tm [(The)-252(number)-251(of)-252(global)-251(cols;)-252(usually)-252(this)-252(i)1(s)-252(equal)-252(to)-251(the)-252(number)]TJ 1 0 0 1 124.802 547.58 Tm [(of)-250(global)-250(r)18(ows.)]TJ/F75 9.9626 Tf -24.907 -27.172 Td [(3.1.6)-1000(get)]TJ ET q 1 0 0 1 144.219 520.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 520.408 Td [(global)]TJ +/F75 9.9626 Tf 147.208 520.408 Td [(global)]TJ ET q 1 0 0 1 176.587 520.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 179.576 520.408 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ +/F75 9.9626 Tf 179.576 520.408 Td [(indices)-250(\227)-250(Get)-250(vector)-250(of)-250(global)-250(indices)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -79.681 -18.974 Td [(myidx)-525(=)-525(desc%get_global_indices\050[owned]\051)]TJ +/F131 9.9626 Tf -79.681 -18.974 Td [(myidx)-525(=)-525(desc%get_global_indices\050[owned]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.947 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.947 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -91.287 -31.902 Td [(owned)]TJ +/F75 9.9626 Tf -90.979 -31.902 Td [(owned)]TJ 0 g 0 G -/F62 9.9626 Tf 35.975 0 Td [(Choose)-330(if)-329(you)-330(only)-329(want)-330(owned)-330(indices)-329(\050)]TJ/F67 9.9626 Tf 185.766 0 Td [(owned)]TJ +/F84 9.9626 Tf 1.02 0 0 1 135.87 383.793 Tm [(Choose)-281(if)-282(you)-281(only)-282(want)-281(owned)-281(indices)-282(\050)]TJ/F131 9.9626 Tf 1 0 0 1 321.922 383.793 Tm [(owned)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.true.)]TJ/F62 9.9626 Tf 62.764 0 Td [(\051)-330(or)-329(also)-330(halo)]TJ -259.598 -11.955 Td [(indices)-250(\050)]TJ/F67 9.9626 Tf 36.911 0 Td [(owned)]TJ + [(.true.)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.686 383.793 Tm [(\051)-281(or)-282(also)-281(halo)]TJ 1 0 0 1 124.802 371.838 Tm [(indices)-250(\050)]TJ/F131 9.9626 Tf 36.911 0 Td [(owned)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 67.995 0 Td [(\051.)-310(Scope:)]TJ/F59 9.9626 Tf 40.328 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -166.813 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(;)-250(default:)]TJ/F67 9.9626 Tf 41.872 0 Td [(.true.)]TJ/F62 9.9626 Tf 31.382 0 Td [(.)]TJ + [(.false.)]TJ/F84 9.9626 Tf 67.995 0 Td [(\051.)-310(Scope:)]TJ/F75 9.9626 Tf 40.328 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -167.122 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(;)-250(default:)]TJ/F131 9.9626 Tf 41.872 0 Td [(.true.)]TJ/F84 9.9626 Tf 31.382 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -163.436 -33.89 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -163.127 -33.89 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-277(global)-277(indices,)-284(r)18(eturned)-277(as)-277(an)-277(allocatable)-277(integer)-277(array)-277(of)]TJ -47.87 -11.955 Td [(kind)]TJ/F67 9.9626 Tf 22.814 0 Td [(psb_lpk_)]TJ/F62 9.9626 Tf 44.334 0 Td [(and)-250(rank)-250(1.)]TJ/F59 9.9626 Tf -92.055 -27.171 Td [(3.1.7)-1000(get)]TJ +/F84 9.9626 Tf 1.011 0 0 1 172.363 306.046 Tm [(The)-248(global)-249(indices,)-248(r)18(eturned)-249(as)-248(an)-248(allocatable)-248(integer)-249(array)-248(of)]TJ 1 0 0 1 124.802 294.091 Tm [(kind)]TJ/F131 9.9626 Tf 22.814 0 Td [(psb_lpk_)]TJ/F84 9.9626 Tf 44.334 0 Td [(and)-250(rank)-250(1.)]TJ/F75 9.9626 Tf -92.055 -27.171 Td [(3.1.7)-1000(get)]TJ ET q 1 0 0 1 144.219 267.119 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 266.92 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ +/F75 9.9626 Tf 147.208 266.92 Td [(context)-250(\227)-250(Get)-250(communication)-250(context)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.313 -18.975 Td [(ctxt)-525(=)-525(desc%get_context\050\051)]TJ +/F131 9.9626 Tf -47.313 -18.975 Td [(ctxt)-525(=)-525(desc%get_context\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.934 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.947 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.947 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -33.889 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.947 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(communication)-250(context.)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(communication)-250(context.)]TJ 0 g 0 G - 94.098 -29.888 Td [(13)]TJ + 94.407 -29.888 Td [(13)]TJ 0 g 0 G ET endstream endobj -1031 0 obj +1040 0 obj << -/Length 4754 +/Length 5028 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.1.8)-1000(Clone)-250(\227)-250(clone)-250(current)-250(object)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.1.8)-1000(Clone)-250(\227)-250(clone)-250(current)-250(object)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%clone\050descout,info\051)]TJ +/F131 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%clone\050descout,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.597 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.598 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -34.377 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -34.377 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.597 Td [(descout)]TJ 0 g 0 G -/F62 9.9626 Tf 39.84 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 39.452 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -39.84 -20.597 Td [(info)]TJ +/F75 9.9626 Tf -39.452 -20.597 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -28.097 Td [(3.1.9)-1000(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -28.097 Td [(3.1.9)-1000(CNV)-250(\227)-250(convert)-250(internal)-250(storage)-250(format)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%cnv\050mold\051)]TJ +/F131 9.9626 Tf 0 -19.289 Td [(call)-1050(desc%cnv\050mold\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.597 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.597 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -32.553 Td [(mold)]TJ +/F75 9.9626 Tf -77.917 -32.553 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(the)-250(desir)18(ed)-250(integer)-250(storage)-250(format.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(object)-190(of)-190(type)-190(derived)-190(fr)18(om)-190(\050integer\051)]TJ/F67 9.9626 Tf 221.926 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.782 0 Td [(the)-250(desir)18(ed)-250(integer)-250(storage)-250(format.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0.98 0 0 1 175.611 356.277 Tm [(Speci\002ed)-212(as:)-295(a)-212(object)-212(of)-212(type)-213(derived)-212(fr)19(om)-212(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 394.97 356.277 Tm [(psb)]TJ ET q -1 0 0 1 413.855 356.476 cm +1 0 0 1 411.288 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 416.994 356.277 Td [(T)]TJ +/F131 9.9626 Tf 414.427 356.277 Td [(T)]TJ ET q -1 0 0 1 422.851 356.476 cm +1 0 0 1 420.285 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 425.99 356.277 Td [(base)]TJ +/F131 9.9626 Tf 423.423 356.277 Td [(base)]TJ ET q -1 0 0 1 447.539 356.476 cm +1 0 0 1 444.972 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 450.677 356.277 Td [(vect)]TJ +/F131 9.9626 Tf 448.11 356.277 Td [(vect)]TJ ET q -1 0 0 1 472.226 356.476 cm +1 0 0 1 469.659 356.476 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 475.364 356.277 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -345.58 -22.59 Td [(The)]TJ/F67 9.9626 Tf 19.583 0 Td [(mold)]TJ/F62 9.9626 Tf 23.828 0 Td [(ar)18(guments)-292(may)-291(be)-292(employed)-292(to)-292(interface)-291(with)-292(special)-292(devices,)-302(such)]TJ -43.411 -11.955 Td [(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ/F59 9.9626 Tf 0 -28.096 Td [(3.1.10)-1000(psb)]TJ +/F131 9.9626 Tf 472.797 356.277 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.719 356.277 Tm [(.)]TJ 0.98 0 0 1 150.396 333.687 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.17 333.687 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 192.522 333.687 Tm [(ar)18(guments)-249(may)-249(be)-248(employed)-249(to)-249(interface)-249(with)-249(special)-249(devices,)-250(such)-249(as)]TJ 1 0 0 1 150.705 321.732 Tm [(GPUs)-250(and)-250(other)-250(accelerators.)]TJ/F75 9.9626 Tf 0 -28.096 Td [(3.1.10)]TJ 0.98 0 0 1 185.574 293.636 Tm [(psb)]TJ ET q -1 0 0 1 202.769 293.835 cm +1 0 0 1 202.438 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 205.758 293.636 Td [(cd)]TJ +/F75 9.9626 Tf 0.98 0 0 1 205.426 293.636 Tm [(cd)]TJ ET q -1 0 0 1 216.867 293.835 cm +1 0 0 1 216.324 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 219.855 293.636 Td [(get)]TJ +/F75 9.9626 Tf 0.98 0 0 1 219.313 293.636 Tm [(get)]TJ ET q -1 0 0 1 234.291 293.835 cm +1 0 0 1 233.472 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 237.28 293.636 Td [(large)]TJ +/F75 9.9626 Tf 0.98 0 0 1 236.461 293.636 Tm [(large)]TJ ET q -1 0 0 1 260.572 293.835 cm +1 0 0 1 259.299 293.835 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 263.561 293.636 Td [(threshold)-190(\227)-190(Get)-190(threshold)-190(for)-190(index)-190(mapping)-190(switch)]TJ +/F75 9.9626 Tf 0.98 0 0 1 262.288 293.636 Tm [(threshold)-194(\227)-194(Get)-194(threshold)-194(fo)1(r)-194(index)-194(mapping)-194(switch)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -112.856 -19.29 Td [(ith)-525(=)-525(psb_cd_get_large_threshold\050\051)]TJ +/F131 9.9626 Tf 1 0 0 1 150.705 274.346 Tm [(ith)-525(=)-525(psb_cd_get_large_threshold\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.421 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.421 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -29.439 -20.598 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -20.598 Td [(Function)-250(value)]TJ + 0 -20.597 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(curr)18(ent)-250(value)-250(for)-250(the)-250(size)-250(thr)18(eshold.)]TJ/F59 9.9626 Tf -72.777 -28.096 Td [(3.1.11)-1000(psb)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(curr)18(ent)-250(value)-250(for)-250(the)-250(size)-250(thr)18(eshold.)]TJ/F75 9.9626 Tf -72.468 -28.096 Td [(3.1.11)]TJ 0.98 0 0 1 185.574 182.634 Tm [(psb)]TJ ET q -1 0 0 1 202.769 182.833 cm +1 0 0 1 202.438 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 205.758 182.634 Td [(cd)]TJ +/F75 9.9626 Tf 0.98 0 0 1 205.426 182.634 Tm [(cd)]TJ ET q -1 0 0 1 216.867 182.833 cm +1 0 0 1 216.324 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 219.855 182.634 Td [(set)]TJ +/F75 9.9626 Tf 0.98 0 0 1 219.313 182.634 Tm [(set)]TJ ET q -1 0 0 1 233.175 182.833 cm +1 0 0 1 232.379 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 236.164 182.634 Td [(large)]TJ +/F75 9.9626 Tf 0.98 0 0 1 235.368 182.634 Tm [(large)]TJ ET q -1 0 0 1 259.457 182.833 cm +1 0 0 1 258.206 182.833 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 262.445 182.634 Td [(threshold)-190(\227)-190(Set)-190(threshold)-190(for)-190(index)-190(mapping)-190(switch)]TJ +/F75 9.9626 Tf 0.98 0 0 1 261.195 182.634 Tm [(threshold)-238(\227)-239(Set)-238(threshold)-239(for)-238(index)-239(mapping)-238(switch)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -111.74 -19.289 Td [(call)-525(psb_cd_set_large_threshold\050ith\051)]TJ +/F131 9.9626 Tf 1 0 0 1 150.705 163.345 Tm [(call)-525(psb_cd_set_large_threshold\050ith\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.597 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.874 -29.888 Td [(14)]TJ +/F84 9.9626 Tf 166.874 -29.888 Td [(14)]TJ 0 g 0 G ET endstream endobj -1036 0 obj +1045 0 obj << -/Length 5640 +/Length 5864 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(ith)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(ith)]TJ 0 g 0 G -/F62 9.9626 Tf 17.704 0 Td [(the)-250(new)-250(thr)18(eshold)-250(for)-250(communication)-250(descriptors.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(gr)18(eater)-250(than)-250(zer)18(o.)]TJ -24.907 -20.813 Td [(Note:)-665(the)-427(thr)18(eshold)-428(value)-427(is)-428(only)-427(queried)-428(by)-427(the)-428(library)-427(at)-428(the)-427(time)-428(a)-427(call)]TJ 0 -11.955 Td [(to)]TJ/F67 9.9626 Tf 12.451 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 50.837 0 Td [(is)-378(executed,)-409(ther)18(efor)18(e)-378(changing)-378(the)-378(thr)18(eshold)-377(has)-378(no)-378(ef)18(fect)-378(on)]TJ -63.288 -11.955 Td [(communication)-339(descriptors)-340(that)-339(have)-339(alr)18(eady)-340(been)-339(initialized.)-578(Mor)18(eover)-339(the)]TJ 0 -11.955 Td [(thr)18(eshold)-250(must)-250(have)-250(the)-250(same)-250(value)-250(on)-250(all)-250(pr)18(ocesses.)]TJ/F59 9.9626 Tf 0 -26.933 Td [(3.1.12)-1000(get)]TJ +/F84 9.9626 Tf 17.704 0 Td [(the)-250(new)-250(thr)18(eshold)-250(for)-250(communication)-250(descriptors.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(gr)18(eater)-250(than)-250(zer)18(o.)]TJ 1.02 0 0 1 99.895 637.495 Tm [(Note:)-578(the)-382(thr)18(eshold)-383(value)-382(is)-382(only)-382(queried)-382(by)-382(the)-382(library)-382(at)-382(the)-382(time)-383(a)-382(call)]TJ 1.02 0 0 1 99.895 625.54 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 112.066 625.54 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 162.448 625.54 Tm [(is)-326(executed,)-345(ther)17(efor)18(e)-326(changing)-325(the)-326(thr)18(eshold)-326(has)-326(no)-325(ef)17(f)1(ect)-326(on)]TJ 1.02 0 0 1 99.895 613.585 Tm [(communication)-271(descriptors)-270(that)-271(have)-271(alr)18(eady)-271(been)-271(initialized.)-381(Mor)18(eover)-271(the)]TJ 1 0 0 1 99.895 601.63 Tm [(thr)18(eshold)-250(must)-250(have)-250(the)-250(same)-250(value)-250(on)-250(all)-250(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0 -26.933 Td [(3.1.12)-1000(get)]TJ ET q 1 0 0 1 149.2 574.896 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 152.189 574.697 Td [(p)]TJ +/F75 9.9626 Tf 152.189 574.697 Td [(p)]TJ ET q 1 0 0 1 158.874 574.896 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 161.863 574.697 Td [(adjcncy)-250(\227)-250(Get)-250(process)-250(adjacency)-250(list)]TJ +/F75 9.9626 Tf 161.863 574.697 Td [(adjcncy)-250(\227)-250(Get)-250(process)-250(adjacency)-250(list)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -61.968 -18.964 Td [(list)-525(=)-1050(desc%get_p_adjcncy\050\051)]TJ +/F131 9.9626 Tf -61.968 -18.964 Td [(list)-525(=)-1050(desc%get_p_adjcncy\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.483 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -29.44 -19.483 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.484 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-190(curr)18(ent)-190(list)-190(of)-190(adjacent)-190(pr)18(ocesses,)-202(i.e.)-290(pr)18(ocesses)-190(with)-190(which)]TJ -47.87 -11.955 Td [(the)-250(curr)18(ent)-250(one)-250(has)-250(to)-250(exchange)-250(halo)-250(data.)]TJ/F59 9.9626 Tf -24.907 -26.933 Td [(3.1.13)-1000(set)]TJ +/F84 9.9626 Tf 0.98 0 0 1 172.363 495.953 Tm [(The)-252(curr)18(ent)-252(list)-252(of)-253(adjacent)-252(pr)18(oc)1(esses,)-253(i.e.)-316(pr)19(ocesses)-253(with)-252(which)]TJ 1 0 0 1 124.802 483.998 Tm [(the)-250(curr)18(ent)-250(one)-250(has)-250(to)-250(exchange)-250(halo)-250(data.)]TJ/F75 9.9626 Tf -24.907 -26.933 Td [(3.1.13)-1000(set)]TJ ET q 1 0 0 1 148.085 457.264 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 151.073 457.065 Td [(p)]TJ +/F75 9.9626 Tf 151.073 457.065 Td [(p)]TJ ET q 1 0 0 1 157.758 457.264 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 160.747 457.065 Td [(adjcncy)-250(\227)-250(Set)-250(process)-250(adjacency)-250(list)]TJ +/F75 9.9626 Tf 160.747 457.065 Td [(adjcncy)-250(\227)-250(Set)-250(process)-250(adjacency)-250(list)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -60.852 -18.964 Td [(call)-525(desc%set_p_adjcncy\050list\051)]TJ +/F131 9.9626 Tf -60.852 -18.964 Td [(call)-525(desc%set_p_adjcncy\050list\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.483 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.483 Td [(list)]TJ 0 g 0 G -/F62 9.9626 Tf 19.358 0 Td [(the)-250(list)-250(of)-250(adjacent)-250(pr)18(ocesses.)]TJ 5.549 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F67 9.9626 Tf 250.209 0 Td [(psb_ipk_)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -316.959 -20.813 Td [(Note:)-596(this)-392(method)-393(can)-393(be)-393(called)-393(after)-392(a)-393(call)-393(to)]TJ/F67 9.9626 Tf 216.367 0 Td [(psb_cdall)]TJ/F62 9.9626 Tf 50.987 0 Td [(and)-393(befor)18(e)-393(a)-392(call)]TJ -267.354 -11.955 Td [(to)]TJ/F67 9.9626 Tf 11.711 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)-470(The)-304(user)-303(is)-304(specifying)-303(her)18(e)-304(some)-303(knowledge)-304(about)-303(which)-304(pr)18(o-)]TJ -58.784 -11.955 Td [(cesses)-208(ar)18(e)-208(topol)1(ogical)-208(neighbours)-208(of)-208(the)-207(curr)18(ent)-208(pr)18(ocess.)-296(The)-208(availability)-207(of)-208(this)]TJ 0 -11.955 Td [(information)-250(may)-250(speed)-250(up)-250(the)-250(execution)-250(of)-250(the)-250(assembly)-250(call)]TJ/F67 9.9626 Tf 269.656 0 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)]TJ/F59 9.9626 Tf -316.729 -26.934 Td [(3.1.14)-1000(fnd)]TJ +/F84 9.9626 Tf 19.358 0 Td [(the)-250(list)-250(of)-250(adjacent)-250(pr)18(ocesses.)]TJ 5.549 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 1.02 0 0 1 99.895 309.688 Tm [(Note:)-521(this)-354(method)-353(can)-354(be)-353(called)-354(after)-354(a)-353(call)-354(to)]TJ/F131 9.9626 Tf 1 0 0 1 316.246 309.688 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 366.913 309.688 Tm [(and)-354(befor)18(e)-354(a)-353(call)]TJ 1.02 0 0 1 99.895 297.733 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 111.504 297.733 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 158.577 297.733 Tm [(.)-380(The)-270(user)-271(i)1(s)-271(specifying)-270(her)17(e)-270(some)-270(knowledge)-271(about)-270(which)-270(pr)17(o-)]TJ 0.986 0 0 1 99.895 285.778 Tm [(cesses)-255(ar)19(e)-255(topological)-255(neighbours)-254(of)-255(the)-254(curr)18(ent)-255(pr)18(ocess.)-317(The)-255(availability)-254(of)-255(this)]TJ 1 0 0 1 99.895 273.823 Tm [(information)-250(may)-250(speed)-250(up)-250(the)-250(execution)-250(of)-250(the)-250(assembly)-250(call)]TJ/F131 9.9626 Tf 269.656 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ/F75 9.9626 Tf -316.729 -26.933 Td [(3.1.14)-1000(fnd)]TJ ET q 1 0 0 1 151.412 247.089 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 154.401 246.89 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(process)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ +/F75 9.9626 Tf 154.401 246.89 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(process)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -54.506 -18.964 Td [(call)-525(desc%fnd_owner\050idx,iprc,info\051)]TJ +/F131 9.9626 Tf -54.506 -18.964 Td [(call)-525(desc%fnd_owner\050idx,iprc,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.484 Td [(idx)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(the)-250(list)-250(of)-250(global)-250(indices)-250(for)-250(which)-250(we)-250(need)-250(the)-250(owning)-250(pr)18(ocesses.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F67 9.9626 Tf 250.209 0 Td [(psb_lpk_)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ +/F84 9.9626 Tf 19.368 0 Td [(the)-250(list)-250(of)-250(global)-250(indices)-250(for)-250(which)-250(we)-250(need)-250(the)-250(owning)-250(pr)18(ocesses.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_lpk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0 g 0 G -150.084 -29.888 Td [(15)]TJ 0 g 0 G @@ -6823,21 +6837,21 @@ ET endstream endobj -1043 0 obj +1052 0 obj << -/Length 7676 +/Length 8028 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.934 Td [(iprc)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(the)-250(list)-250(of)-250(pr)18(ocesses)-250(owning)-250(the)-250(indices)-250(in)]TJ/F67 9.9626 Tf 184.993 0 Td [(idx)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ -198.463 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.381 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-408(as:)-627(an)-408(allocatable)-408(one-dimensional)-408(array)-409(of)-408(integers)-408(of)-408(kind)]TJ/F67 9.9626 Tf 0 -11.955 Td [(psb_ipk_)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ -66.749 -23.926 Td [(Note:)-349(this)-269(method)-269(may)-270(or)-269(may)-269(not)-269(actually)-270(r)18(equir)18(e)-269(communications,)-274(depend-)]TJ 0 -11.956 Td [(ing)-283(on)-283(the)-283(ex)1(a)-1(c)1(t)-283(internal)-283(data)-283(storage;)-299(given)-283(that)-283(the)-283(choice)-283(of)-282(storage)-283(may)-283(be)]TJ 0 -11.955 Td [(alter)18(ed)-376(by)-375(r)8(untime)-376(parameters,)-407(it)-376(is)-375(necessary)-376(for)-376(safety)-375(that)-376(this)-375(method)-376(is)]TJ 0 -11.955 Td [(called)-250(by)-250(all)-250(pr)18(ocesses.)]TJ/F59 9.9626 Tf 0 -29.998 Td [(3.1.15)-1000(Named)-250(Constants)]TJ +/F84 9.9626 Tf 22.685 0 Td [(the)-250(list)-250(of)-250(pr)18(ocesses)-250(owning)-250(the)-250(indices)-250(in)]TJ/F131 9.9626 Tf 184.993 0 Td [(idx)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ -198.463 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 636.374 Tm [(Speci\002ed)-345(as:)-504(an)-345(allocatable)-345(one-dimensional)-345(array)-345(of)-346(integ)1(ers)-346(of)-345(kind)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 624.419 Tm [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0.98 0 0 1 150.705 600.493 Tm [(Note:)-304(this)-231(method)-231(may)-230(or)-231(may)-231(not)-231(actually)-231(r)19(equir)18(e)-231(communications,)-235(depending)]TJ 0.98 0 0 1 150.705 588.537 Tm [(on)-217(the)-216(exact)-217(internal)-217(data)-216(storage;)-230(given)-217(that)-216(the)-217(choice)-217(of)-216(storage)-217(may)-217(be)-217(alter)19(ed)]TJ 0.98 0 0 1 150.705 576.582 Tm [(by)-250(r)8(untime)-250(parameters,)-250(it)-250(is)-250(necessary)-250(for)-250(safety)-250(that)-250(this)-250(method)-250(is)-249(called)-250(by)-250(all)]TJ 1 0 0 1 150.406 564.627 Tm [(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0.299 -29.998 Td [(3.1.15)-1000(Named)-250(Constants)]TJ 0 g 0 G 0 -19.937 Td [(psb)]TJ ET @@ -6846,7 +6860,7 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 514.692 Td [(none)]TJ +/F75 9.9626 Tf 170.889 514.692 Td [(none)]TJ ET q 1 0 0 1 194.182 514.891 cm @@ -6854,16 +6868,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 202.152 514.692 Td [(Generic)-250(no-op;)]TJ +/F84 9.9626 Tf 202.152 514.692 Td [(Generic)-250(no-op;)]TJ 0 g 0 G -/F59 9.9626 Tf -51.447 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -51.447 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 492.957 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 492.758 Td [(root)]TJ +/F75 9.9626 Tf 170.889 492.758 Td [(root)]TJ ET q 1 0 0 1 189.758 492.957 cm @@ -6871,16 +6885,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 197.728 492.758 Td [(Default)-250(r)18(oot)-250(pr)18(ocess)-250(for)-250(br)18(oadcast)-250(and)-250(scatter)-250(operations;)]TJ +/F84 9.9626 Tf 197.728 492.758 Td [(Default)-250(r)18(oot)-250(pr)18(ocess)-250(for)-250(br)18(oadcast)-250(and)-250(scatter)-250(operations;)]TJ 0 g 0 G -/F59 9.9626 Tf -47.023 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -47.023 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 471.023 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 470.824 Td [(nohalo)]TJ +/F75 9.9626 Tf 170.889 470.824 Td [(nohalo)]TJ ET q 1 0 0 1 203.038 471.023 cm @@ -6888,16 +6902,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 211.008 470.824 Td [(Do)-250(not)-250(fetch)-250(halo)-250(elements;)]TJ +/F84 9.9626 Tf 211.008 470.824 Td [(Do)-250(not)-250(fetch)-250(halo)-250(elements;)]TJ 0 g 0 G -/F59 9.9626 Tf -60.303 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -60.303 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 449.089 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 448.89 Td [(halo)]TJ +/F75 9.9626 Tf 170.889 448.89 Td [(halo)]TJ ET q 1 0 0 1 191.412 449.089 cm @@ -6905,16 +6919,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 199.382 448.89 Td [(Fetch)-250(halo)-250(elements)-250(fr)18(om)-250(neighbouring)-250(pr)18(ocesses;)]TJ +/F84 9.9626 Tf 199.382 448.89 Td [(Fetch)-250(halo)-250(elements)-250(fr)18(om)-250(neighbouring)-250(pr)18(ocesses;)]TJ 0 g 0 G -/F59 9.9626 Tf -48.677 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -48.677 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 427.155 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 426.956 Td [(sum)]TJ +/F75 9.9626 Tf 170.889 426.956 Td [(sum)]TJ ET q 1 0 0 1 190.854 427.155 cm @@ -6922,16 +6936,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 198.824 426.956 Td [(Sum)-250(overlapped)-250(elements)]TJ +/F84 9.9626 Tf 198.824 426.956 Td [(Sum)-250(overlapped)-250(elements)]TJ 0 g 0 G -/F59 9.9626 Tf -48.119 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -48.119 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 405.221 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 405.022 Td [(avg)]TJ +/F75 9.9626 Tf 170.889 405.022 Td [(avg)]TJ ET q 1 0 0 1 187.546 405.221 cm @@ -6939,23 +6953,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 195.517 405.022 Td [(A)92(verage)-250(overlapped)-250(elements)]TJ +/F84 9.9626 Tf 195.128 405.022 Td [(A)92(verage)-250(overlapped)-250(elements)]TJ 0 g 0 G -/F59 9.9626 Tf -44.812 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -44.423 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 383.288 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 383.088 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 383.088 Td [(comm)]TJ ET q 1 0 0 1 199.163 383.288 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 383.088 Td [(halo)]TJ +/F75 9.9626 Tf 202.152 383.088 Td [(halo)]TJ ET q 1 0 0 1 222.674 383.288 cm @@ -6963,23 +6977,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 230.645 383.088 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.92 0 Td [(halo_index)]TJ/F62 9.9626 Tf 54.794 0 Td [(list;)]TJ +/F84 9.9626 Tf 230.645 383.088 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(halo_index)]TJ/F84 9.9626 Tf 54.794 0 Td [(list;)]TJ 0 g 0 G -/F59 9.9626 Tf -259.654 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -259.654 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 361.354 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 361.154 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 361.154 Td [(comm)]TJ ET q 1 0 0 1 199.163 361.354 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 361.154 Td [(ext)]TJ +/F75 9.9626 Tf 202.152 361.154 Td [(ext)]TJ ET q 1 0 0 1 216.029 361.354 cm @@ -6987,23 +7001,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 224 361.154 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.92 0 Td [(ext_index)]TJ/F62 9.9626 Tf 49.564 0 Td [(list;)]TJ +/F84 9.9626 Tf 224 361.154 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ext_index)]TJ/F84 9.9626 Tf 49.564 0 Td [(list;)]TJ 0 g 0 G -/F59 9.9626 Tf -247.779 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -247.779 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 339.42 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 339.22 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 339.22 Td [(comm)]TJ ET q 1 0 0 1 199.163 339.42 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 339.22 Td [(ovr)]TJ +/F75 9.9626 Tf 202.152 339.22 Td [(ovr)]TJ ET q 1 0 0 1 217.703 339.42 cm @@ -7011,23 +7025,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 225.673 339.22 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.92 0 Td [(ovrlap_index)]TJ/F62 9.9626 Tf 65.255 0 Td [(list;)]TJ +/F84 9.9626 Tf 225.673 339.22 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ovrlap_index)]TJ/F84 9.9626 Tf 65.255 0 Td [(list;)]TJ 0 g 0 G -/F59 9.9626 Tf -265.143 -21.934 Td [(psb)]TJ +/F75 9.9626 Tf -265.143 -21.934 Td [(psb)]TJ ET q 1 0 0 1 167.9 317.486 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 317.286 Td [(comm)]TJ +/F75 9.9626 Tf 170.889 317.286 Td [(comm)]TJ ET q 1 0 0 1 199.163 317.486 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.152 317.286 Td [(mov)]TJ +/F75 9.9626 Tf 202.152 317.286 Td [(mov)]TJ ET q 1 0 0 1 222.684 317.486 cm @@ -7035,63 +7049,63 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 230.654 317.286 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F67 9.9626 Tf 124.921 0 Td [(ovr_mst_idx)]TJ/F62 9.9626 Tf 60.024 0 Td [(list;)]TJ/F59 11.9552 Tf -264.894 -31.99 Td [(3.2)-1000(Sparse)-250(Matrix)-250(class)]TJ/F62 9.9626 Tf 0 -19.937 Td [(The)]TJ/F67 9.9626 Tf 19.623 0 Td [(psb)]TJ +/F84 9.9626 Tf 230.654 317.286 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.921 0 Td [(ovr_mst_idx)]TJ/F84 9.9626 Tf 60.024 0 Td [(list;)]TJ/F75 11.9552 Tf -264.894 -31.99 Td [(3.2)-1000(Sparse)-250(Matrix)-250(class)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 265.359 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.907 265.359 Tm [(psb)]TJ ET q -1 0 0 1 186.647 265.558 cm +1 0 0 1 186.225 265.558 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 189.785 265.359 Td [(Tspmat)]TJ +/F131 9.9626 Tf 189.363 265.359 Td [(Tspmat)]TJ ET q -1 0 0 1 221.795 265.558 cm +1 0 0 1 221.373 265.558 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 224.933 265.359 Td [(type)]TJ/F62 9.9626 Tf 23.868 0 Td [(class)-296(contains)-295(all)-296(information)-296(about)-296(the)-295(local)-296(portion)-296(of)]TJ -98.096 -11.955 Td [(the)-200(sparse)-199(matrix)-200(and)-199(its)-200(storage)-200(mode.)-293(Its)-199(design)-200(is)-200(based)-199(on)-200(the)-200(ST)74(A)74(TE)-199(design)]TJ 0 -11.955 Td [(pattern)-256([)]TJ +/F131 9.9626 Tf 224.511 265.359 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.932 265.359 Tm [(class)-246(contains)-246(all)-246(information)-246(about)-246(the)-246(local)-246(portion)-246(of)]TJ 0.98 0 0 1 150.705 253.404 Tm [(the)-252(sparse)-253(matrix)-252(and)-252(its)-252(storage)-253(mode.)-315(Its)-252(design)-253(is)-252(based)-252(on)-253(the)-252(ST)76(A)75(TE)-252(design)]TJ 0.98 0 0 1 150.406 241.449 Tm [(pattern)-251([)]TJ 1 0 0 rg 1 0 0 RG - [(12)]TJ + 1 0 0 1 187.44 241.449 Tm [(13)]TJ 0 g 0 G - [(])-255(as)-256(detailed)-256(in)-256([)]TJ + 0.98 0 0 1 197.402 241.449 Tm [(])-251(as)-251(detailed)-252(in)-251([)]TJ 1 0 0 rg 1 0 0 RG - [(10)]TJ + 1 0 0 1 266.289 241.449 Tm [(11)]TJ 0 g 0 G - [(];)-258(the)-256(type)-256(declaration)-255(is)-256(shown)-256(in)-256(\002gur)18(e)]TJ + 0.98 0 0 1 276.252 241.449 Tm [(];)-252(the)-252(type)-251(declaration)-251(is)-251(shown)-251(in)-251(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-255(2)]TJ + [-251(2)]TJ 0 g 0 G - [-256(wher)18(e)]TJ/F67 9.9626 Tf 0 -11.956 Td [(T)]TJ/F62 9.9626 Tf 7.721 0 Td [(is)-250(a)-250(placeholder)-250(for)-250(the)-250(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ + [-251(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 489.447 241.449 Tm [(T)]TJ/F84 9.9626 Tf -338.742 -11.956 Td [(is)-250(a)-250(placeholder)-250(for)-250(the)-250(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ 0 g 0 G -/F59 9.9626 Tf -7.721 -21.431 Td [(S)]TJ +/F75 9.9626 Tf 0 -21.431 Td [(S)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -11.068 -21.934 Td [(D)]TJ +/F75 9.9626 Tf -11.068 -21.934 Td [(D)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 13.28 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -13.28 -21.934 Td [(C)]TJ +/F75 9.9626 Tf -13.28 -21.934 Td [(C)]TJ 0 g 0 G -/F62 9.9626 Tf 12.174 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ +/F84 9.9626 Tf 12.174 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ 0 g 0 G -/F59 9.9626 Tf -12.174 -21.934 Td [(Z)]TJ +/F75 9.9626 Tf -12.174 -21.934 Td [(Z)]TJ 0 g 0 G -/F62 9.9626 Tf 11.626 0 Td [(Double)-250(pr)18(ecision)-250(complex;)]TJ +/F84 9.9626 Tf 11.626 0 Td [(Double)-250(pr)18(ecision)-250(complex;)]TJ 0 g 0 G -/F59 9.9626 Tf -11.626 -21.934 Td [(LS,LD,LC,LZ)]TJ +/F75 9.9626 Tf -11.626 -21.934 Td [(LS,LD,LC,LZ)]TJ 0 g 0 G -/F62 9.9626 Tf 65.026 0 Td [(Same)-214(numeric)-214(type)-215(as)-214(above,)-221(but)-214(with)]TJ/F67 9.9626 Tf 168.016 0 Td [(psb_lpk_)]TJ/F62 9.9626 Tf 43.978 0 Td [(integer)-214(indices.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 215.731 120.326 Tm [(Same)-250(numeric)-251(type)-250(as)-251(above,)-251(but)-250(with)]TJ/F131 9.9626 Tf 1 0 0 1 385.185 120.326 Tm [(psb_lpk_)]TJ/F84 9.9626 Tf 0.994 0 0 1 429.509 120.326 Tm [(integer)-250(indices.)]TJ 0 g 0 G - -110.146 -29.888 Td [(16)]TJ + 1 0 0 1 317.579 90.438 Tm [(16)]TJ 0 g 0 G ET endstream endobj -1050 0 obj +1059 0 obj << -/Length 7385 +/Length 7719 >> stream 0 g 0 G @@ -7109,7 +7123,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 699.454 Td [(type)]TJ +/F231 8.9664 Tf 112.299 699.454 Td [(type)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -7147,275 +7161,275 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 4.295 -41.429 Td [(Listing)-250(2:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(sparse)-250(matrix.)]TJ -16.699 -32.661 Td [(The)-190(actual)-190(data)-190(is)-190(contained)-190(in)-190(the)-190(polymorphic)-190(component)]TJ/F67 9.9626 Tf 259.484 0 Td [(a%a)]TJ/F62 9.9626 Tf 17.584 0 Td [(of)-190(type)]TJ/F67 9.9626 Tf 32.089 0 Td [(psb)]TJ +/F84 9.9626 Tf 4.295 -41.429 Td [(Listing)-250(2:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(sparse)-250(matrix.)]TJ 0.98 0 0 1 99.587 603.446 Tm [(The)-194(actual)-194(data)-194(is)-193(contained)-194(in)-194(the)-194(polymorphic)-194(component)]TJ/F131 9.9626 Tf 1 0 0 1 354.222 603.446 Tm [(a%a)]TJ/F84 9.9626 Tf 0.98 0 0 1 371.805 603.446 Tm [(of)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 403.329 603.446 Tm [(psb)]TJ ET q -1 0 0 1 425.371 603.645 cm +1 0 0 1 419.647 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 428.509 603.446 Td [(T)]TJ +/F131 9.9626 Tf 422.785 603.446 Td [(T)]TJ ET q -1 0 0 1 434.367 603.645 cm +1 0 0 1 428.643 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 437.505 603.446 Td [(base)]TJ +/F131 9.9626 Tf 431.782 603.446 Td [(base)]TJ ET q -1 0 0 1 459.054 603.645 cm +1 0 0 1 453.331 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 462.193 603.446 Td [(sparse)]TJ +/F131 9.9626 Tf 456.469 603.446 Td [(sparse)]TJ ET q -1 0 0 1 494.202 603.645 cm +1 0 0 1 488.478 603.645 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 497.341 603.446 Td [(mat)]TJ/F62 9.9626 Tf 15.691 0 Td [(;)]TJ -413.137 -11.955 Td [(its)-306(speci)1(\002c)-306(layout)-305(can)-306(be)-305(chosen)-306(dynamically)-305(among)-306(the)-305(pr)18(ede\002ned)-306(types,)-319(or)]TJ 0 -11.955 Td [(an)-305(entir)18(ely)-305(new)-305(storage)-305(layout)-305(can)-305(be)-305(implemented)-304(and)-305(passed)-305(to)-305(the)-305(library)]TJ 0 -11.955 Td [(at)-231(r)8(untime)-231(via)-231(the)]TJ/F67 9.9626 Tf 80.145 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 49.377 0 Td [(r)18(outine.)-304(The)-231(following)-231(very)-231(common)-231(formats)-231(ar)18(e)]TJ -129.522 -11.955 Td [(pr)18(ecompiled)-250(in)-250(PSBLAS)-250(and)-250(thus)-250(ar)18(e)-250(always)-250(available:)]TJ +/F131 9.9626 Tf 491.617 603.446 Td [(mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 507.308 603.446 Tm [(;)]TJ 1.02 0 0 1 99.895 591.491 Tm [(its)-247(speci\002c)-247(layout)-247(can)-247(be)-247(chosen)-247(dynamically)-247(among)-247(the)-247(pr)18(ede\002ned)-247(types,)-247(or)]TJ 1.02 0 0 1 99.895 579.536 Tm [(an)-252(entir)18(ely)-252(new)-252(storage)-251(layout)-252(can)-252(be)-251(implemented)-252(and)-252(passed)-252(to)-251(the)-252(library)]TJ 0.993 0 0 1 99.895 567.581 Tm [(at)-251(r)8(untime)-252(via)-251(the)]TJ/F131 9.9626 Tf 1 0 0 1 180.278 567.581 Tm [(psb_spasb)]TJ/F84 9.9626 Tf 0.993 0 0 1 229.837 567.581 Tm [(r)18(outine.)-312(The)-251(following)-252(very)-251(common)-251(formats)-252(ar)19(e)]TJ 1 0 0 1 99.596 555.626 Tm [(pr)18(ecompiled)-250(in)-250(PSBLAS)-250(and)-250(thus)-250(ar)18(e)-250(always)-250(available:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.889 Td [(psb)]TJ +/F75 9.9626 Tf 0.299 -19.889 Td [(psb)]TJ ET q 1 0 0 1 117.091 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 535.737 Td [(T)]TJ +/F75 9.9626 Tf 120.08 535.737 Td [(T)]TJ ET q 1 0 0 1 127.322 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 130.311 535.737 Td [(coo)]TJ +/F75 9.9626 Tf 130.311 535.737 Td [(coo)]TJ ET q 1 0 0 1 146.411 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 149.399 535.737 Td [(sparse)]TJ +/F75 9.9626 Tf 149.399 535.737 Td [(sparse)]TJ ET q 1 0 0 1 178.769 535.936 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 181.758 535.737 Td [(mat)]TJ +/F75 9.9626 Tf 181.758 535.737 Td [(mat)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Coor)18(dinate)-250(storage;)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Coor)18(dinate)-250(storage;)]TJ 0 g 0 G -/F59 9.9626 Tf -104 -19.907 Td [(psb)]TJ +/F75 9.9626 Tf -104 -19.907 Td [(psb)]TJ ET q 1 0 0 1 117.091 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 515.83 Td [(T)]TJ +/F75 9.9626 Tf 120.08 515.83 Td [(T)]TJ ET q 1 0 0 1 127.322 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 130.311 515.83 Td [(csr)]TJ +/F75 9.9626 Tf 130.311 515.83 Td [(csr)]TJ ET q 1 0 0 1 143.631 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 146.62 515.83 Td [(sparse)]TJ +/F75 9.9626 Tf 146.62 515.83 Td [(sparse)]TJ ET q 1 0 0 1 175.989 516.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 178.978 515.83 Td [(mat)]TJ +/F75 9.9626 Tf 178.978 515.83 Td [(mat)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(r)18(ows;)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(r)18(ows;)]TJ 0 g 0 G -/F59 9.9626 Tf -101.22 -19.906 Td [(psb)]TJ +/F75 9.9626 Tf -101.22 -19.906 Td [(psb)]TJ ET q 1 0 0 1 117.091 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 120.08 495.924 Td [(T)]TJ +/F75 9.9626 Tf 120.08 495.924 Td [(T)]TJ ET q 1 0 0 1 127.322 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 130.311 495.924 Td [(csc)]TJ +/F75 9.9626 Tf 130.311 495.924 Td [(csc)]TJ ET q 1 0 0 1 144.179 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.168 495.924 Td [(sparse)]TJ +/F75 9.9626 Tf 147.168 495.924 Td [(sparse)]TJ ET q 1 0 0 1 176.537 496.123 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 179.526 495.924 Td [(mat)]TJ +/F75 9.9626 Tf 179.526 495.924 Td [(mat)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(columns;)]TJ -101.768 -19.889 Td [(The)-295(inner)-295(sparse)-294(matrix)-295(has)-295(an)-295(associated)-294(state,)-306(which)-295(can)-295(take)-294(the)-295(following)]TJ 0 -11.955 Td [(values:)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(columns;)]TJ 1.019 0 0 1 99.587 476.035 Tm [(The)-245(inner)-244(sparse)-245(matrix)-244(has)-245(an)-245(associated)-244(state,)-245(which)-244(can)-245(take)-245(the)-244(following)]TJ 1 0 0 1 99.616 464.08 Tm [(values:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.888 Td [(Build:)]TJ +/F75 9.9626 Tf 0.279 -19.888 Td [(Build:)]TJ 0 g 0 G -/F62 9.9626 Tf 32.927 0 Td [(State)-283(enter)18(ed)-283(after)-283(the)-283(\002rst)-284(allocation,)-291(and)-283(befor)18(e)-283(the)-283(\002rst)-283(assembly;)-300(in)]TJ -8.02 -11.955 Td [(this)-250(state)-250(it)-250(is)-250(possible)-250(to)-250(add)-250(nonzer)18(o)-250(entries.)]TJ +/F84 9.9626 Tf 1.014 0 0 1 132.822 444.192 Tm [(State)-246(enter)18(ed)-247(after)-246(the)-246(\002rst)-246(allocation,)-246(and)-246(befor)17(e)-246(the)-246(\002rst)-246(assembly;)-246(in)]TJ 1 0 0 1 124.802 432.237 Tm [(this)-250(state)-250(it)-250(is)-250(possible)-250(to)-250(add)-250(nonzer)18(o)-250(entries.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.907 Td [(Assembled:)]TJ +/F75 9.9626 Tf -24.907 -19.907 Td [(Assembled:)]TJ 0 g 0 G -/F62 9.9626 Tf 58.381 0 Td [(State)-324(enter)18(ed)-325(after)-324(the)-325(assembly;)-362(computations)-324(using)-325(the)-324(sparse)]TJ -33.474 -11.955 Td [(matrix,)-250(such)-250(as)-250(matrix-vector)-250(pr)18(oducts,)-250(ar)18(e)-250(only)-250(possible)-250(in)-250(this)-250(state;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 158.276 412.33 Tm [(State)-258(enter)18(ed)-259(after)-258(the)-258(assembly;)-264(computations)-258(using)-258(the)-259(sparse)]TJ 1 0 0 1 124.802 400.375 Tm [(matrix,)-250(such)-250(as)-250(matrix-vector)-250(pr)18(oducts,)-250(ar)18(e)-250(only)-250(possible)-250(in)-250(this)-250(state;)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.907 Td [(Update:)]TJ +/F75 9.9626 Tf -24.907 -19.907 Td [(Update:)]TJ 0 g 0 G -/F62 9.9626 Tf 40.678 0 Td [(State)-219(enter)18(ed)-220(after)-219(a)-219(r)18(einitalization;)-230(this)-219(is)-219(used)-220(to)-219(handle)-219(applications)]TJ -15.771 -11.955 Td [(in)-288(which)-288(the)-288(same)-288(sparsity)-289(pattern)-288(is)-288(used)-288(multiple)-288(times)-288(with)-288(dif)18(fer)18(ent)]TJ 0 -11.955 Td [(coef)18(\002cients.)-298(In)-213(this)-214(state)-213(it)-214(is)-213(only)-214(possible)-213(to)-214(enter)-213(coef)18(\002cients)-214(for)-213(alr)18(eady)]TJ 0 -11.956 Td [(existing)-250(nonzer)18(o)-250(entries.)]TJ -24.907 -19.888 Td [(The)-293(only)-292(storage)-293(variant)-292(supporting)-293(the)-293(build)-292(state)-293(is)-292(COO;)-293(all)-293(other)-292(variants)]TJ 0 -11.955 Td [(ar)18(e)-250(obtained)-250(by)-250(conversion)-250(to/fr)18(om)-250(it.)]TJ/F59 9.9626 Tf 0 -27.132 Td [(3.2.1)-1000(Sparse)-250(Matrix)-250(Methods)]TJ 0 -18.964 Td [(3.2.2)-1000(get)]TJ +/F84 9.9626 Tf 0.989 0 0 1 140.573 380.468 Tm [(State)-254(enter)18(ed)-254(after)-254(a)-254(r)18(einitalization;)-255(this)-254(is)-254(used)-254(to)-254(handle)-254(applications)]TJ 1.015 0 0 1 124.802 368.513 Tm [(in)-245(which)-245(the)-245(same)-245(sparsity)-245(pattern)-246(is)-245(used)-245(multiple)-245(times)-245(with)-245(dif)18(fer)18(ent)]TJ 0.987 0 0 1 124.802 356.558 Tm [(coef)18(\002cients.)-316(In)-253(this)-254(state)-254(it)-254(is)-254(only)-253(possible)-254(to)-254(enter)-254(coef)18(\002cients)-254(for)-253(alr)18(eady)]TJ 1 0 0 1 124.802 344.602 Tm [(existing)-250(nonzer)18(o)-250(entries.)]TJ 1.018 0 0 1 99.587 324.714 Tm [(The)-244(only)-245(storage)-244(variant)-244(supporting)-244(the)-245(build)-244(state)-244(is)-245(COO;)-244(all)-244(other)-245(variant)1(s)]TJ 1 0 0 1 99.895 312.759 Tm [(ar)18(e)-250(obtained)-250(by)-250(conversion)-250(to/fr)18(om)-250(it.)]TJ/F75 9.9626 Tf 0 -27.132 Td [(3.2.1)-1000(Sparse)-250(Matrix)-250(Methods)]TJ 0 -18.964 Td [(3.2.2)-1000(get)]TJ ET q 1 0 0 1 144.219 266.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 266.663 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 147.208 266.663 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.313 -18.963 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ +/F131 9.9626 Tf -47.313 -18.963 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.872 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.872 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.907 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.907 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.907 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -33.827 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.906 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 165.298 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 165.299 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G - -76.431 -29.888 Td [(17)]TJ + -76.122 -29.888 Td [(17)]TJ 0 g 0 G ET endstream endobj -1055 0 obj +1064 0 obj << -/Length 3860 +/Length 4020 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.3)-1000(get)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.3)-1000(get)]TJ ET q 1 0 0 1 195.029 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 706.129 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 198.017 706.129 Td [(ncols)-250(\227)-250(Get)-250(number)-250(of)-250(columns)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.312 -19.023 Td [(nc)-525(=)-525(a%get_ncols\050\051)]TJ +/F131 9.9626 Tf -47.312 -19.023 Td [(nc)-525(=)-525(a%get_ncols\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.049 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.049 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -33.965 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 181.158 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ/F59 9.9626 Tf -259.165 -27.315 Td [(3.2.4)-1000(get)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 181.158 0 Td [(a)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ/F75 9.9626 Tf -258.857 -27.315 Td [(3.2.4)-1000(get)]TJ ET q 1 0 0 1 195.029 531.915 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 531.716 Td [(nnzeros)-250(\227)-250(Get)-250(number)-250(of)-250(nonzero)-250(elements)-250(in)-250(a)-250(sparse)-250(matrix)]TJ +/F75 9.9626 Tf 198.017 531.716 Td [(nnzeros)-250(\227)-250(Get)-250(number)-250(of)-250(nonzero)-250(elements)-250(in)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.312 -19.024 Td [(nz)-525(=)-525(a%get_nnzeros\050\051)]TJ +/F131 9.9626 Tf -47.312 -19.024 Td [(nz)-525(=)-525(a%get_nnzeros\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.048 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.048 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -33.965 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(nonzer)18(o)-250(elements)-250(stor)18(ed)-250(in)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 251.284 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ/F59 9.9626 Tf -329.292 -22.041 Td [(Notes)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(nonzer)18(o)-250(elements)-250(stor)18(ed)-250(in)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 251.284 0 Td [(a)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ/F75 9.9626 Tf -328.983 -22.041 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -20.017 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -20.017 Td [(1.)]TJ 0 g 0 G - [-500(The)-395(function)-395(value)-395(is)-395(speci\002c)-395(to)-395(the)-395(storage)-395(format)-395(of)-396(matri)1(x)]TJ/F67 9.9626 Tf 295.646 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(;)-468(some)]TJ -288.422 -11.956 Td [(storage)-343(formats)-342(employ)-343(padding,)-366(thus)-343(the)-342(r)18(eturned)-343(value)-343(for)-342(the)-343(same)]TJ 0 -11.955 Td [(matrix)-250(may)-250(be)-250(dif)18(fer)18(ent)-250(for)-250(dif)18(fer)18(ent)-250(storage)-250(choices.)]TJ/F59 9.9626 Tf -24.907 -27.315 Td [(3.2.5)-1000(get)]TJ + 1.02 0 0 1 175.303 342.56 Tm [(The)-348(function)-348(value)-348(is)-348(speci\002c)-347(to)-348(the)-348(storage)-348(format)-348(of)-348(matrix)]TJ/F131 9.9626 Tf 1 0 0 1 458.89 342.56 Tm [(a)]TJ/F84 9.9626 Tf 1.02 0 0 1 464.12 342.56 Tm [(;)-399(some)]TJ 1.02 0 0 1 175.611 330.604 Tm [(storage)-281(formats)-282(employ)-281(padding,)-290(thus)-282(the)-281(r)18(eturned)-282(value)-281(for)-281(the)-282(same)]TJ 1 0 0 1 175.611 318.649 Tm [(matrix)-250(may)-250(be)-250(dif)18(fer)18(ent)-250(for)-250(dif)18(fer)18(ent)-250(storage)-250(choices.)]TJ/F75 9.9626 Tf -24.906 -27.315 Td [(3.2.5)]TJ 1.02 0 0 1 180.593 291.334 Tm [(get)]TJ ET q -1 0 0 1 195.029 291.533 cm +1 0 0 1 195.305 291.533 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 198.017 291.334 Td [(size)-398(\227)-397(Get)-398(maximum)-397(number)-398(of)-398(nonzero)-397(elements)-398(in)-398(a)-397(sparse)]TJ -17.424 -11.955 Td [(matrix)]TJ +/F75 9.9626 Tf 1.02 0 0 1 198.294 291.334 Tm [(size)-337(\227)-336(Get)-337(maximum)-336(number)-337(of)-336(nonzero)-337(elements)-336(in)-337(a)-337(sparse)]TJ 1 0 0 1 180.593 279.379 Tm [(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -29.888 -19.024 Td [(maxnz)-525(=)-525(a%get_size\050\051)]TJ +/F131 9.9626 Tf -29.888 -19.024 Td [(maxnz)-525(=)-525(a%get_size\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.01 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.048 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.048 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ 0 g 0 G -56.338 -33.965 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.048 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-220(maximum)-220(number)-219(of)-220(nonzer)18(o)-220(elements)-220(that)-220(can)-219(be)-220(stor)18(ed)]TJ -47.87 -11.955 Td [(in)-250(sparse)-250(matrix)]TJ/F67 9.9626 Tf 73.294 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(using)-250(its)-250(curr)18(ent)-250(memory)-250(allocation.)]TJ +/F84 9.9626 Tf 0.99 0 0 1 223.173 132.281 Tm [(The)-254(maximum)-254(number)-253(of)-254(nonzer)18(o)-254(elements)-254(that)-254(can)-253(be)-254(stor)18(ed)]TJ 1 0 0 1 175.611 120.326 Tm [(in)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 73.295 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(using)-250(its)-250(curr)18(ent)-250(memory)-250(allocation.)]TJ 0 g 0 G 60.952 -29.888 Td [(18)]TJ 0 g 0 G @@ -7423,200 +7437,63 @@ ET endstream endobj -1060 0 obj -<< -/Length 4447 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.2.6)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(sparse)-250(matrix)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf 0 -20.135 Td [(memory_size)-525(=)-525(a%sizeof\050\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -23.732 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ -0 g 0 G - -56.339 -35.687 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F59 9.9626 Tf -72.777 -30.58 Td [(3.2.7)-1000(get)]TJ -ET -q -1 0 0 1 144.219 517.21 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 147.208 517.011 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -47.313 -20.135 Td [(write)]TJ -0 g 0 G - [(\050)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ -0 g 0 G - [(,)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(a%get_fmt\050\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ -0 g 0 G - -56.339 -35.686 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-244(short)-245(string)-244(describing)-245(the)-244(dynamic)-245(type)-244(of)-245(the)-244(matrix.)-308(Pr)18(e-)]TJ -47.87 -11.955 Td [(de\002ned)-250(values)-250(include)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 102.415 0 Td [(NULL)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(COO)]TJ/F62 9.9626 Tf 15.691 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(CSR)]TJ/F62 9.9626 Tf 18.181 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(CSC)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ/F59 9.9626 Tf -227.127 -30.581 Td [(3.2.8)-1000(is)]TJ -ET -q -1 0 0 1 138.122 315.533 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 141.111 315.333 Td [(bld,)-250(is)]TJ -ET -q -1 0 0 1 169.922 315.533 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 172.911 315.333 Td [(upd,)-250(is)]TJ -ET -q -1 0 0 1 204.493 315.533 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 207.482 315.333 Td [(asb)-250(\227)-250(Status)-250(check)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -107.587 -20.135 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050a%is_bld\050\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -11.955 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050a%is_upd\050\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -11.955 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050a%is_asb\050\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ -0 g 0 G -0 g 0 G -/F59 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.343 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ -0 g 0 G - -56.339 -35.686 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.343 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)]TJ -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 9.966 0 Td [(logical)]TJ -0 g 0 G -/F62 9.9626 Tf 38.827 0 Td [(value)-222(indicating)-223(whether)-222(the)-222(matrix)-223(is)-222(in)-222(the)-223(Build,)]TJ -96.663 -11.955 Td [(Update)-250(or)-250(Assembled)-250(state,)-250(r)18(espectively)111(.)]TJ -0 g 0 G - 141.968 -29.888 Td [(19)]TJ -0 g 0 G -ET - -endstream -endobj -972 0 obj +981 0 obj << /Type /ObjStm /N 100 -/First 913 -/Length 9266 ->> -stream -969 0 952 57 975 150 951 292 973 444 977 591 27 648 978 704 979 761 980 816 -981 872 982 929 983 986 31 1043 974 1099 986 1218 984 1352 988 1499 35 1555 39 1610 -989 1665 985 1721 994 1814 990 1964 991 2110 992 2262 996 2414 997 2471 998 2528 999 2585 -1000 2642 1001 2700 993 2758 1005 2838 1002 2985 1003 3138 1007 3291 1008 3349 1009 3407 1010 3465 -1011 3523 1012 3581 1013 3639 1014 3697 1015 3755 1017 3813 1004 3871 1021 3980 1018 4127 1019 4275 -1023 4422 43 4481 47 4538 51 4595 55 4652 1020 4709 1025 4842 1027 4960 59 5018 63 5074 -67 5130 1024 5186 1030 5280 1032 5398 71 5457 75 5514 1033 5571 79 5630 83 5685 1029 5742 -1035 5836 1037 5954 87 6012 91 6068 95 6124 1034 6180 1042 6274 1038 6431 1039 6589 1040 6741 -1044 6889 99 6948 103 7005 1045 7063 1041 7122 1049 7216 1051 7334 1047 7392 1052 7450 107 7509 -111 7566 1048 7623 1054 7732 1056 7850 115 7909 119 7967 1057 8025 123 8084 1053 8141 1059 8235 -% 969 0 obj +/First 918 +/Length 9196 +>> +stream +973 0 974 56 975 112 976 168 977 224 978 280 960 337 984 432 959 574 982 726 +986 872 27 929 987 985 988 1042 989 1097 990 1153 991 1210 992 1267 31 1324 983 1380 +995 1501 993 1635 997 1782 35 1838 39 1893 998 1948 994 2005 1003 2099 999 2254 1000 2400 +1001 2553 1005 2706 1006 2765 1007 2824 1008 2883 1009 2942 1010 3001 1002 3060 1014 3141 1011 3288 +1012 3441 1016 3594 1017 3652 1018 3710 1019 3768 1020 3826 1021 3884 1022 3942 1023 4000 1024 4058 +1026 4116 1013 4174 1030 4284 1027 4431 1028 4579 1032 4726 43 4785 47 4842 51 4899 55 4956 +1029 5013 1034 5149 1036 5267 59 5325 63 5381 67 5437 1033 5493 1039 5588 1041 5706 71 5765 +75 5822 1042 5879 79 5937 83 5992 1038 6049 1044 6144 1046 6262 87 6320 91 6376 95 6432 +1043 6488 1051 6583 1047 6740 1048 6898 1049 7050 1053 7198 99 7257 103 7314 1054 7372 1050 7431 +1058 7526 1060 7644 1056 7702 1061 7760 107 7819 111 7876 1057 7933 1063 8043 1065 8161 115 8220 +% 973 0 obj << -/D [953 0 R /XYZ 114.242 139.255 null] +/D [961 0 R /XYZ 99.895 460.161 null] >> -% 952 0 obj +% 974 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F97 970 0 R >> -/ProcSet [ /PDF /Text ] +/D [961 0 R /XYZ 99.895 433.375 null] >> % 975 0 obj << +/D [961 0 R /XYZ 99.895 419.224 null] +>> +% 976 0 obj +<< +/D [961 0 R /XYZ 99.895 405.145 null] +>> +% 977 0 obj +<< +/D [961 0 R /XYZ 99.895 378.966 null] +>> +% 978 0 obj +<< +/D [961 0 R /XYZ 114.242 139.255 null] +>> +% 960 0 obj +<< +/Font << /F84 675 0 R /F131 921 0 R /F207 979 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 984 0 obj +<< /Type /Page -/Contents 976 0 R -/Resources 974 0 R +/Contents 985 0 R +/Resources 983 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 951 0 R 973 0 R ] +/Parent 980 0 R +/Annots [ 959 0 R 982 0 R ] >> -% 951 0 obj +% 959 0 obj << /Type /Annot /Subtype /Link @@ -7624,111 +7501,111 @@ stream /Rect [269.647 674.054 284.093 683.464] /A << /S /GoTo /D (subsection.2.3) >> >> -% 973 0 obj +% 982 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.073 254.848 175.046 266.907] +/Rect [169.77 266.803 176.844 278.862] /A << /S /GoTo /D (section.3) >> >> -% 977 0 obj +% 986 0 obj << -/D [975 0 R /XYZ 149.705 753.953 null] +/D [984 0 R /XYZ 149.705 753.953 null] >> % 27 0 obj << -/D [975 0 R /XYZ 150.705 716.092 null] +/D [984 0 R /XYZ 150.705 716.092 null] >> -% 978 0 obj +% 987 0 obj << -/D [975 0 R /XYZ 150.705 671.065 null] +/D [984 0 R /XYZ 150.705 671.065 null] >> -% 979 0 obj +% 988 0 obj << -/D [975 0 R /XYZ 150.705 648.1 null] +/D [984 0 R /XYZ 150.705 648.1 null] >> -% 980 0 obj +% 989 0 obj << -/D [975 0 R /XYZ 150.705 573.59 null] +/D [984 0 R /XYZ 150.705 573.59 null] >> -% 981 0 obj +% 990 0 obj << -/D [975 0 R /XYZ 150.705 516.424 null] +/D [984 0 R /XYZ 150.705 527.104 null] >> -% 982 0 obj +% 991 0 obj << -/D [975 0 R /XYZ 150.705 483.864 null] +/D [984 0 R /XYZ 150.705 495.819 null] >> -% 983 0 obj +% 992 0 obj << -/D [975 0 R /XYZ 150.705 463.343 null] +/D [984 0 R /XYZ 150.705 475.298 null] >> % 31 0 obj << -/D [975 0 R /XYZ 150.705 408.307 null] +/D [984 0 R /XYZ 150.705 420.262 null] >> -% 974 0 obj +% 983 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 986 0 obj +% 995 0 obj << /Type /Page -/Contents 987 0 R -/Resources 985 0 R +/Contents 996 0 R +/Resources 994 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 984 0 R ] +/Parent 980 0 R +/Annots [ 993 0 R ] >> -% 984 0 obj +% 993 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [268.105 173.115 275.079 185.175] +/Rect [268.458 173.115 275.531 185.175] /A << /S /GoTo /D (section.6) >> >> -% 988 0 obj +% 997 0 obj << -/D [986 0 R /XYZ 98.895 753.953 null] +/D [995 0 R /XYZ 98.895 753.953 null] >> % 35 0 obj << -/D [986 0 R /XYZ 99.895 716.092 null] +/D [995 0 R /XYZ 99.895 716.092 null] >> % 39 0 obj << -/D [986 0 R /XYZ 99.895 279.545 null] +/D [995 0 R /XYZ 99.895 279.545 null] >> -% 989 0 obj +% 998 0 obj << -/D [986 0 R /XYZ 342.47 236.897 null] +/D [995 0 R /XYZ 346.774 236.897 null] >> -% 985 0 obj +% 994 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 994 0 obj +% 1003 0 obj << /Type /Page -/Contents 995 0 R -/Resources 993 0 R +/Contents 1004 0 R +/Resources 1002 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 990 0 R 991 0 R 992 0 R ] +/Parent 980 0 R +/Annots [ 999 0 R 1000 0 R 1001 0 R ] >> -% 990 0 obj +% 999 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [482.63 399.338 489.604 411.398] +/Rect [450.716 399.338 457.69 411.398] /A << /S /GoTo /D (section.6) >> >> -% 991 0 obj +% 1000 0 obj << /Type /Annot /Subtype /Link @@ -7736,7 +7613,7 @@ stream /Rect [354.987 193.202 369.432 205.262] /A << /S /GoTo /D (subsection.3.3) >> >> -% 992 0 obj +% 1001 0 obj << /Type /Annot /Subtype /Link @@ -7744,45 +7621,45 @@ stream /Rect [354.987 148.883 369.432 160.943] /A << /S /GoTo /D (subsection.3.3) >> >> -% 996 0 obj +% 1005 0 obj << -/D [994 0 R /XYZ 149.705 753.953 null] +/D [1003 0 R /XYZ 149.705 753.953 null] >> -% 997 0 obj +% 1006 0 obj << -/D [994 0 R /XYZ 150.705 293.402 null] +/D [1003 0 R /XYZ 150.705 293.402 null] >> -% 998 0 obj +% 1007 0 obj << -/D [994 0 R /XYZ 150.705 278.496 null] +/D [1003 0 R /XYZ 150.705 278.496 null] >> -% 999 0 obj +% 1008 0 obj << -/D [994 0 R /XYZ 150.705 261.039 null] +/D [1003 0 R /XYZ 150.705 261.039 null] >> -% 1000 0 obj +% 1009 0 obj << -/D [994 0 R /XYZ 150.705 244.857 null] +/D [1003 0 R /XYZ 150.705 244.857 null] >> -% 1001 0 obj +% 1010 0 obj << -/D [994 0 R /XYZ 150.705 228.675 null] +/D [1003 0 R /XYZ 150.705 228.675 null] >> -% 993 0 obj +% 1002 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1005 0 obj +% 1014 0 obj << /Type /Page -/Contents 1006 0 R -/Resources 1004 0 R +/Contents 1015 0 R +/Resources 1013 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 1002 0 R 1003 0 R ] +/Parent 980 0 R +/Annots [ 1011 0 R 1012 0 R ] >> -% 1002 0 obj +% 1011 0 obj << /Type /Annot /Subtype /Link @@ -7790,7 +7667,7 @@ stream /Rect [304.177 614.119 318.623 626.179] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1003 0 obj +% 1012 0 obj << /Type /Annot /Subtype /Link @@ -7798,366 +7675,498 @@ stream /Rect [304.177 568.778 318.623 580.837] /A << /S /GoTo /D (subsection.3.3) >> >> -% 1007 0 obj +% 1016 0 obj << -/D [1005 0 R /XYZ 98.895 753.953 null] +/D [1014 0 R /XYZ 98.895 753.953 null] >> -% 1008 0 obj +% 1017 0 obj << -/D [1005 0 R /XYZ 99.895 716.092 null] +/D [1014 0 R /XYZ 99.895 716.092 null] >> -% 1009 0 obj +% 1018 0 obj << -/D [1005 0 R /XYZ 99.895 702.226 null] +/D [1014 0 R /XYZ 99.895 702.226 null] >> -% 1010 0 obj +% 1019 0 obj << -/D [1005 0 R /XYZ 99.895 684.257 null] +/D [1014 0 R /XYZ 99.895 684.257 null] >> -% 1011 0 obj +% 1020 0 obj << -/D [1005 0 R /XYZ 99.895 667.564 null] +/D [1014 0 R /XYZ 99.895 667.564 null] >> -% 1012 0 obj +% 1021 0 obj << -/D [1005 0 R /XYZ 99.895 650.871 null] +/D [1014 0 R /XYZ 99.895 650.871 null] >> -% 1013 0 obj +% 1022 0 obj << -/D [1005 0 R /XYZ 99.895 541.236 null] +/D [1014 0 R /XYZ 99.895 541.236 null] >> -% 1014 0 obj +% 1023 0 obj << -/D [1005 0 R /XYZ 99.895 524.542 null] +/D [1014 0 R /XYZ 99.895 524.542 null] >> -% 1015 0 obj +% 1024 0 obj << -/D [1005 0 R /XYZ 99.895 507.849 null] +/D [1014 0 R /XYZ 99.895 507.849 null] >> -% 1017 0 obj +% 1026 0 obj << -/D [1005 0 R /XYZ 99.895 288.977 null] +/D [1014 0 R /XYZ 99.895 288.977 null] >> -% 1004 0 obj +% 1013 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F102 1016 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1021 0 obj +% 1030 0 obj << /Type /Page -/Contents 1022 0 R -/Resources 1020 0 R +/Contents 1031 0 R +/Resources 1029 0 R /MediaBox [0 0 595.276 841.89] -/Parent 971 0 R -/Annots [ 1018 0 R 1019 0 R ] +/Parent 980 0 R +/Annots [ 1027 0 R 1028 0 R ] >> -% 1018 0 obj +% 1027 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [352.861 524.509 359.835 537.101] +/Rect [326.584 524.509 333.459 537.101] /A << /S /GoTo /D (section.1) >> >> -% 1019 0 obj +% 1028 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.147 314.537 193.12 327.129] +/Rect [477.57 326.492 484.444 338.552] /A << /S /GoTo /D (section.1) >> >> -% 1023 0 obj +% 1032 0 obj << -/D [1021 0 R /XYZ 149.705 753.953 null] +/D [1030 0 R /XYZ 149.705 753.953 null] >> % 43 0 obj << -/D [1021 0 R /XYZ 150.705 716.092 null] +/D [1030 0 R /XYZ 150.705 716.092 null] >> % 47 0 obj << -/D [1021 0 R /XYZ 150.705 696.532 null] +/D [1030 0 R /XYZ 150.705 696.532 null] >> % 51 0 obj << -/D [1021 0 R /XYZ 150.705 498.276 null] +/D [1030 0 R /XYZ 150.705 498.276 null] >> % 55 0 obj << -/D [1021 0 R /XYZ 150.705 288.305 null] +/D [1030 0 R /XYZ 150.705 288.305 null] >> -% 1020 0 obj +% 1029 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1025 0 obj +% 1034 0 obj << /Type /Page -/Contents 1026 0 R -/Resources 1024 0 R +/Contents 1035 0 R +/Resources 1033 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1037 0 R >> -% 1027 0 obj +% 1036 0 obj << -/D [1025 0 R /XYZ 98.895 753.953 null] +/D [1034 0 R /XYZ 98.895 753.953 null] >> % 59 0 obj << -/D [1025 0 R /XYZ 99.895 716.092 null] +/D [1034 0 R /XYZ 99.895 716.092 null] >> % 63 0 obj << -/D [1025 0 R /XYZ 99.895 529.559 null] +/D [1034 0 R /XYZ 99.895 529.559 null] >> % 67 0 obj << -/D [1025 0 R /XYZ 99.895 276.666 null] +/D [1034 0 R /XYZ 99.895 276.666 null] >> -% 1024 0 obj +% 1033 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1030 0 obj +% 1039 0 obj << /Type /Page -/Contents 1031 0 R -/Resources 1029 0 R +/Contents 1040 0 R +/Resources 1038 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1037 0 R >> -% 1032 0 obj +% 1041 0 obj << -/D [1030 0 R /XYZ 149.705 753.953 null] +/D [1039 0 R /XYZ 149.705 753.953 null] >> % 71 0 obj << -/D [1030 0 R /XYZ 150.705 716.092 null] +/D [1039 0 R /XYZ 150.705 716.092 null] >> % 75 0 obj << -/D [1030 0 R /XYZ 150.705 519.544 null] +/D [1039 0 R /XYZ 150.705 519.544 null] >> -% 1033 0 obj +% 1042 0 obj << -/D [1030 0 R /XYZ 397.537 356.277 null] +/D [1039 0 R /XYZ 394.97 356.277 null] >> % 79 0 obj << -/D [1030 0 R /XYZ 150.705 305.6 null] +/D [1039 0 R /XYZ 150.705 305.6 null] >> % 83 0 obj << -/D [1030 0 R /XYZ 150.705 194.578 null] +/D [1039 0 R /XYZ 150.705 194.578 null] >> -% 1029 0 obj +% 1038 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1035 0 obj +% 1044 0 obj << /Type /Page -/Contents 1036 0 R -/Resources 1034 0 R +/Contents 1045 0 R +/Resources 1043 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1037 0 R >> -% 1037 0 obj +% 1046 0 obj << -/D [1035 0 R /XYZ 98.895 753.953 null] +/D [1044 0 R /XYZ 98.895 753.953 null] >> % 87 0 obj << -/D [1035 0 R /XYZ 99.895 583.842 null] +/D [1044 0 R /XYZ 99.895 583.842 null] >> % 91 0 obj << -/D [1035 0 R /XYZ 99.895 466.211 null] +/D [1044 0 R /XYZ 99.895 466.211 null] >> % 95 0 obj << -/D [1035 0 R /XYZ 99.895 256.035 null] +/D [1044 0 R /XYZ 99.895 256.035 null] >> -% 1034 0 obj +% 1043 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1042 0 obj +% 1051 0 obj << /Type /Page -/Contents 1043 0 R -/Resources 1041 0 R +/Contents 1052 0 R +/Resources 1050 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R -/Annots [ 1038 0 R 1039 0 R 1040 0 R ] +/Parent 1037 0 R +/Annots [ 1047 0 R 1048 0 R 1049 0 R ] >> -% 1038 0 obj +% 1047 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [187.544 240.393 199.499 249.399] +/Rect [186.443 240.293 198.399 249.399] /A << /S /GoTo /D (cite.DesignPatterns) >> >> -% 1039 0 obj +% 1048 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] -/Rect [267.981 240.293 279.936 249.399] +/Rect [265.293 240.393 277.248 249.399] /A << /S /GoTo /D (cite.Sparse03) >> >> -% 1040 0 obj +% 1049 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.483 237.643 465.457 249.703] +/Rect [451.809 237.643 458.683 249.703] /A << /S /GoTo /D (listing.2) >> >> -% 1044 0 obj +% 1053 0 obj << -/D [1042 0 R /XYZ 149.705 753.953 null] +/D [1051 0 R /XYZ 149.705 753.953 null] >> % 99 0 obj << -/D [1042 0 R /XYZ 150.705 544.277 null] +/D [1051 0 R /XYZ 150.705 544.277 null] >> % 103 0 obj << -/D [1042 0 R /XYZ 150.705 296.936 null] +/D [1051 0 R /XYZ 150.705 296.936 null] >> -% 1045 0 obj +% 1054 0 obj << -/D [1042 0 R /XYZ 170.328 265.359 null] +/D [1051 0 R /XYZ 169.907 265.359 null] >> -% 1041 0 obj +% 1050 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1049 0 obj +% 1058 0 obj << /Type /Page -/Contents 1050 0 R -/Resources 1048 0 R +/Contents 1059 0 R +/Resources 1057 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1037 0 R >> -% 1051 0 obj +% 1060 0 obj << -/D [1049 0 R /XYZ 98.895 753.953 null] +/D [1058 0 R /XYZ 98.895 753.953 null] >> -% 1047 0 obj +% 1056 0 obj << -/D [1049 0 R /XYZ 99.895 665.282 null] +/D [1058 0 R /XYZ 99.895 665.282 null] >> -% 1052 0 obj +% 1061 0 obj << -/D [1049 0 R /XYZ 409.052 603.446 null] +/D [1058 0 R /XYZ 403.329 603.446 null] >> % 107 0 obj << -/D [1049 0 R /XYZ 99.895 294.773 null] +/D [1058 0 R /XYZ 99.895 294.773 null] >> % 111 0 obj << -/D [1049 0 R /XYZ 99.895 276.048 null] +/D [1058 0 R /XYZ 99.895 276.048 null] >> -% 1048 0 obj +% 1057 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R /F67 913 0 R /F59 665 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1054 0 obj +% 1063 0 obj << /Type /Page -/Contents 1055 0 R -/Resources 1053 0 R +/Contents 1064 0 R +/Resources 1062 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1028 0 R +/Parent 1037 0 R >> -% 1056 0 obj +% 1065 0 obj << -/D [1054 0 R /XYZ 149.705 753.953 null] +/D [1063 0 R /XYZ 149.705 753.953 null] >> % 115 0 obj << -/D [1054 0 R /XYZ 150.705 716.092 null] ->> -% 119 0 obj -<< -/D [1054 0 R /XYZ 150.705 540.892 null] ->> -% 1057 0 obj -<< -/D [1054 0 R /XYZ 150.705 358.382 null] ->> -% 123 0 obj -<< -/D [1054 0 R /XYZ 150.705 300.51 null] ->> -% 1053 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] +/D [1063 0 R /XYZ 150.705 716.092 null] >> -% 1059 0 obj + +endstream +endobj +1070 0 obj << -/Type /Page -/Contents 1060 0 R -/Resources 1058 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Length 4545 >> +stream +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 99.895 706.129 Td [(3.2.6)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(sparse)-250(matrix)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf 0 -20.135 Td [(memory_size)-525(=)-525(a%sizeof\050\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -23.732 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -22.343 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ +0 g 0 G + -56.339 -35.687 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 72.468 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F75 9.9626 Tf -72.468 -30.58 Td [(3.2.7)-1000(get)]TJ +ET +q +1 0 0 1 144.219 517.21 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 147.208 517.011 Td [(fmt)-250(\227)-250(Short)-250(description)-250(of)-250(the)-250(dynamic)-250(type)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -47.574 -20.135 Td [(write)]TJ +0 g 0 G + [(\050)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(,)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a%get_fmt\050\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0.261 -24.336 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -22.343 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ +0 g 0 G + -56.339 -35.686 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 1.006 0 0 1 172.283 357.869 Tm [(A)-249(short)-249(string)-249(describing)-249(the)-249(dynamic)-249(typ)1(e)-249(of)-249(the)-249(matrix.)-310(Pr)18(e-)]TJ 1 0 0 1 124.802 345.914 Tm [(de\002ned)-250(values)-250(include)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 102.415 0 Td [(NULL)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(COO)]TJ/F84 9.9626 Tf 15.691 0 Td [(,)]TJ/F131 9.9626 Tf 4.982 0 Td [(CSR)]TJ/F84 9.9626 Tf 18.181 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(CSC)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ/F75 9.9626 Tf -227.127 -30.581 Td [(3.2.8)-1000(is)]TJ +ET +q +1 0 0 1 138.122 315.533 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 141.111 315.333 Td [(bld,)-250(is)]TJ +ET +q +1 0 0 1 169.922 315.533 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 172.911 315.333 Td [(upd,)-250(is)]TJ +ET +q +1 0 0 1 204.493 315.533 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 207.482 315.333 Td [(asb)-250(\227)-250(Status)-250(check)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -107.587 -20.135 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050a%is_bld\050\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -11.955 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050a%is_upd\050\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -11.955 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050a%is_asb\050\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0 g 0 G +/F75 9.9626 Tf 0 -24.336 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -22.343 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ +0 g 0 G + -56.339 -35.686 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -22.343 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 0.995 0 0 1 172.283 132.281 Tm [(A)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 182.48 132.281 Tm [(logical)]TJ +0 g 0 G +/F84 9.9626 Tf 0.995 0 0 1 221.577 132.281 Tm [(value)-251(indicating)-250(whether)-251(the)-250(matrix)-251(is)-251(in)-250(the)-251(Build,)]TJ 1 0 0 1 124.802 120.326 Tm [(Update)-250(or)-250(Assembled)-250(state,)-250(r)18(espectively)111(.)]TJ +0 g 0 G + 141.968 -29.888 Td [(19)]TJ +0 g 0 G +ET endstream endobj -1066 0 obj +1075 0 obj << -/Length 5883 +/Length 6066 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.9)-1000(is)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.9)-1000(is)]TJ ET q 1 0 0 1 188.931 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 191.92 706.129 Td [(lower)55(,)-250(is)]TJ +/F75 9.9626 Tf 191.92 706.129 Td [(lower)55(,)-250(is)]TJ ET q 1 0 0 1 230.704 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 233.693 706.129 Td [(upper)55(,)-250(is)]TJ +/F75 9.9626 Tf 233.693 706.129 Td [(upper)55(,)-250(is)]TJ ET q 1 0 0 1 273.583 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 276.572 706.129 Td [(triangle,)-250(is)]TJ +/F75 9.9626 Tf 276.572 706.129 Td [(triangle,)-250(is)]TJ ET q 1 0 0 1 325.309 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 328.298 706.129 Td [(unit)-250(\227)-250(Format)-250(check)]TJ +/F75 9.9626 Tf 328.298 706.129 Td [(unit)-250(\227)-250(Format)-250(check)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -177.593 -19.573 Td [(if)]TJ +/F131 9.9626 Tf -177.593 -19.573 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -8201,29 +8210,29 @@ BT [-525(then)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 0 -22.86 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.86 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.183 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -21.183 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.183 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ 0 g 0 G -56.338 -34.816 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.183 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)]TJ +/F84 9.9626 Tf 0.982 0 0 1 223.093 517.51 Tm [(A)]TJ 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F67 9.9626 Tf 10.803 0 Td [(logical)]TJ +/F131 9.9626 Tf 1 0 0 1 233.202 517.51 Tm [(logical)]TJ 0 g 0 G -/F62 9.9626 Tf 39.665 0 Td [(value)-306(indicating)-307(whether)-306(the)-307(matrix)-306(is)-306(triangular;)]TJ -98.338 -11.955 Td [(if)]TJ/F67 9.9626 Tf 8.595 0 Td [(is_triangle\050\051)]TJ/F62 9.9626 Tf 70.373 0 Td [(r)18(eturns)]TJ/F67 9.9626 Tf 34.119 0 Td [(.true.)]TJ/F62 9.9626 Tf 33.761 0 Td [(check)-239(also)-238(if)-239(it)-239(is)-239(lower)74(,)-241(upper)-238(and)-239(with)]TJ -146.848 -11.955 Td [(a)-250(unit)-250(\050i.e.)-310(assumed\051)-250(diagonal.)]TJ/F59 9.9626 Tf -24.907 -28.929 Td [(3.2.10)-1000(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(ferent)-250(storage)-250(format)]TJ +/F84 9.9626 Tf 0.982 0 0 1 272.312 517.51 Tm [(value)-255(indicating)-256(whether)-255(the)-255(matrix)-255(is)-256(triangular;)-255(if)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 505.555 Tm [(is_triangle\050\051)]TJ/F84 9.9626 Tf 70.478 0 Td [(r)18(eturns)]TJ/F131 9.9626 Tf 34.224 0 Td [(.true.)]TJ/F84 9.9626 Tf 33.866 0 Td [(check)-249(also)-249(if)-250(it)-249(is)-249(lower)74(,)-250(upper)-249(and)-249(with)-249(a)]TJ -138.568 -11.955 Td [(unit)-250(\050i.e.)-310(assumed\051)-250(diagonal.)]TJ/F75 9.9626 Tf -24.906 -28.929 Td [(3.2.10)-1000(cscnv)-250(\227)-250(Convert)-250(to)-250(a)-250(dif)18(ferent)-250(storage)-250(format)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -19.573 Td [(call)]TJ +/F131 9.9626 Tf 0 -19.573 Td [(call)]TJ 0 g 0 G [-1050(a%cscnv\050b,info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8261,43 +8270,43 @@ BT 0 g 0 G [-525(dupl]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.861 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.861 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.183 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -21.183 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.183 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.077 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.556 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.69 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -33.138 Td [(type)]TJ +/F75 9.9626 Tf -77.917 -33.138 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.906 0 Td [(a)-250(string)-250(r)18(equesting)-250(a)-250(new)-250(format.)]TJ 0.001 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 24.906 0 Td [(a)-250(string)-250(r)18(equesting)-250(a)-250(new)-250(format.)]TJ -0.308 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.183 Td [(mold)]TJ +/F75 9.9626 Tf -24.598 -21.183 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(a)-236(variable)-236(of)]TJ +/F84 9.9626 Tf 0.994 0 0 1 179.487 277.73 Tm [(a)-251(variable)-251(o)1(f)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 56.403 0 Td [(class)]TJ +/F131 9.9626 Tf 1 0 0 1 235.985 277.73 Tm [(class)]TJ 0 g 0 G - [(\050psb_T_base_sparse_mat\051)]TJ/F62 9.9626 Tf 148.803 0 Td [(r)18(equesting)-236(a)-236(new)-237(format)1(.)]TJ -209.081 -11.955 Td [(T)90(ype:)-310(optional.)]TJ + [(\050psb_T_base_sparse_mat\051)]TJ/F84 9.9626 Tf 0.994 0 0 1 384.919 277.73 Tm [(r)18(equesting)-251(a)-250(new)-251(format.)]TJ 1 0 0 1 175.303 265.775 Tm [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.182 Td [(dupl)]TJ +/F75 9.9626 Tf -24.598 -21.182 Td [(dupl)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(an)-359(integer)-358(value)-359(speci\002ng)-358(how)-359(to)-359(handle)-358(duplicates)-359(\050see)-359(Named)-358(Con-)]TJ -1.653 -11.956 Td [(stants)-250(below\051)]TJ +/F84 9.9626 Tf 0.98 0 0 1 177.265 244.593 Tm [(an)-199(integer)-198(value)-199(speci\002ng)-199(how)-198(to)-199(handle)-199(duplicates)-198(\050see)-199(Named)-199(Constants)]TJ 1 0 0 1 175.611 232.637 Tm [(below\051)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.861 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.86 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -21.182 Td [(b,a)]TJ + 0 -21.183 Td [(b,a)]TJ 0 g 0 G -/F62 9.9626 Tf 18.54 0 Td [(A)-250(copy)-250(of)]TJ/F67 9.9626 Tf 45.37 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(with)-250(a)-250(new)-250(storage)-250(format.)]TJ -46.724 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.456 0 Td [(.)]TJ +/F84 9.9626 Tf 18.152 0 Td [(A)-250(copy)-250(of)]TJ/F131 9.9626 Tf 45.369 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(with)-250(a)-250(new)-250(storage)-250(format.)]TJ -46.724 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -21.183 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -21.183 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ -23.801 -23.175 Td [(The)]TJ/F67 9.9626 Tf 19.584 0 Td [(mold)]TJ/F62 9.9626 Tf 23.827 0 Td [(ar)18(guments)-292(may)-291(be)-292(employed)-292(to)-292(interface)-291(with)-292(special)-292(devices,)-302(such)]TJ -43.411 -11.955 Td [(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ 0.98 0 0 1 150.396 132.281 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.17 132.281 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 192.522 132.281 Tm [(ar)18(guments)-249(may)-249(be)-248(employed)-249(to)-249(interface)-249(with)-249(special)-249(devices,)-250(such)-249(as)]TJ 1 0 0 1 150.705 120.326 Tm [(GPUs)-250(and)-250(other)-250(accelerators.)]TJ 0 g 0 G 166.874 -29.888 Td [(20)]TJ 0 g 0 G @@ -8305,19 +8314,19 @@ ET endstream endobj -1070 0 obj +1079 0 obj << -/Length 4616 +/Length 5078 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.2.11)-1000(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.2.11)-1000(csclip)-250(\227)-250(Reduce)-250(to)-250(a)-250(submatrix)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.922 -20.279 Td [(call)]TJ +/F131 9.9626 Tf 20.922 -18.964 Td [(call)]TJ 0 g 0 G [-525(a%csclip\050b,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8325,9 +8334,9 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F62 9.9626 Tf -21.669 -24.631 Td [(Returns)-190(the)-190(submatrix)]TJ/F67 9.9626 Tf 98.878 0 Td [(A\050imin:imax,jmin:jmax\051)]TJ/F62 9.9626 Tf 115.068 0 Td [(,)-202(optionally)-190(r)18(escaling)-190(r)18(ow/-)]TJ -228.89 -11.955 Td [(col)-250(indices)-250(to)-250(the)-250(range)]TJ + [-525(imin,imax,jmin,jmax,rscale,cscale]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 654.656 Tm [(Returns)-212(the)-213(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 212.397 654.656 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.465 654.656 Tm [(,)-221(optionally)-212(r)18(escaling)-212(r)18(ow/-)]TJ 1 0 0 1 99.895 642.7 Tm [(col)-250(indices)-250(to)-250(the)-250(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf 103.85 0 Td [(1)]TJ +/F131 9.9626 Tf 103.85 0 Td [(1)]TJ 0 g 0 G [(:imax)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8355,156 +8364,164 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 141.219 0 Td [(.)]TJ +/F84 9.9626 Tf 141.219 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -245.069 -21.961 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -245.069 -18.834 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.638 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.38 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.639 Td [(a)]TJ + 0 -19.38 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -34.594 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -77.918 -31.335 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F62 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -74.978 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.638 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -19.38 Td [(rscale,cscale)]TJ 0 g 0 G -/F62 9.9626 Tf 60.025 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -60.025 -24.632 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -20.554 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -22.639 Td [(b)]TJ + 0 -19.38 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F67 9.9626 Tf 111.321 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -102.713 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(a)-250(submatrix)-250(of)]TJ/F131 9.9626 Tf 111.322 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -102.714 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -22.639 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -19.38 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.801 -31 Td [(3.2.12)-1000(clean)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -26.885 Td [(3.2.12)-1000(clean)]TJ ET q -1 0 0 1 159.153 364.307 cm +1 0 0 1 159.153 400.571 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 162.142 364.108 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ +/F75 9.9626 Tf 162.142 400.372 Td [(zeros)-250(\227)-250(Eliminate)-250(zero)-250(coef)18(\002cients)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -62.247 -20.278 Td [(call)]TJ +/F131 9.9626 Tf -62.247 -18.964 Td [(call)]TJ 0 g 0 G - [-525(a%clean_zeros\050info\051)]TJ/F62 9.9626 Tf 14.944 -12.634 Td [(Eliminates)-214(zer)18(o)-214(coef)18(\002cients)-214(in)-214(the)-214(input)-214(matrix.)-298(Note)-214(that)-214(depending)-214(on)-214(the)]TJ -14.944 -11.955 Td [(internal)-246(storage)-245(format,)-247(ther)18(e)-245(may)-246(still)-245(be)-246(some)-245(amount)-246(of)-246(ze)1(r)18(o)-246(padding)-246(in)-245(the)]TJ 0 -11.955 Td [(output.)]TJ + [-525(a%clean_zeros\050info\051)]TJ/F84 9.9626 Tf 14.944 -11.955 Td [(Eliminates)-250(zer)18(o)-250(coef)18(\002cients)-250(explicitly)-250(stor)18(ed)-250(in)-250(the)-250(input)-250(matrix.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.632 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -20.554 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.638 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.38 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.639 Td [(a)]TJ + 0 -19.38 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -35.908 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -32.51 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -22.638 Td [(a)]TJ + 0 -19.379 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(matrix)]TJ/F67 9.9626 Tf 50.659 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.436 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(matrix)]TJ/F131 9.9626 Tf 50.66 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(zer)18(o)-250(coef)18(\002cients.)]TJ -43.517 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -22.638 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -19.38 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -20.554 Td [(Notes)]TJ 0 g 0 G - 143.074 -29.888 Td [(21)]TJ +/F84 9.9626 Tf 12.454 -18.834 Td [(1.)]TJ 0 g 0 G -ET - -endstream + 0.98 0 0 1 124.802 163.616 Tm [(Depending)-242(on)-243(the)-242(internal)-243(storage)-242(format,)-245(ther)18(e)-242(may)-243(still)-242(be)-243(some)-242(amount)]TJ 1 0 0 1 124.802 151.661 Tm [(of)-250(zer)18(o)-250(padding)-250(in)-250(the)-250(output.)]TJ +0 g 0 G + -12.453 -19.38 Td [(2.)]TJ +0 g 0 G + 1.02 0 0 1 124.413 132.281 Tm [(Any)-388(explicit)-389(zer)18(os)-389(on)-388(the)-389(main)-388(diagonal)-388(ar)17(e)-388(always)-389(kept)-388(in)-389(t)1(he)-389(data)]TJ 1 0 0 1 124.802 120.326 Tm [(str)8(uctur)18(e.)]TJ +0 g 0 G + 141.968 -29.888 Td [(21)]TJ +0 g 0 G +ET + +endstream endobj -1074 0 obj +1085 0 obj << -/Length 4627 +/Length 4703 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.13)-1000(get)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.13)-1000(get)]TJ ET q 1 0 0 1 200.01 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 202.999 706.129 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ +/F75 9.9626 Tf 202.999 706.129 Td [(diag)-250(\227)-250(Get)-250(main)-250(diagonal)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -52.294 -19.329 Td [(call)]TJ +/F131 9.9626 Tf -52.294 -19.329 Td [(call)]TJ 0 g 0 G - [-525(a%get_diag\050d,info\051)]TJ/F62 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ + [-525(a%get_diag\050d,info\051)]TJ/F84 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -20.49 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -20.49 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.679 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.679 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.077 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(d)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(A)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ 13.839 -11.955 Td [(A)-250(one-dimensional)-250(array)-250(of)-250(the)-250(appr)18(opriate)-250(type.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(the)-250(main)-250(diagonal.)]TJ 13.838 -11.955 Td [(A)-250(one-dimensional)-250(array)-250(of)-250(the)-250(appr)18(opriate)-250(type.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.679 Td [(info)]TJ +/F75 9.9626 Tf -24.518 -20.679 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -28.213 Td [(3.2.14)-1000(clip)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -28.213 Td [(3.2.14)-1000(clip)]TJ ET q 1 0 0 1 203.317 472.944 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 206.306 472.745 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ +/F75 9.9626 Tf 206.306 472.745 Td [(diag)-250(\227)-250(Cut)-250(out)-250(main)-250(diagonal)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -55.601 -19.329 Td [(call)]TJ +/F131 9.9626 Tf -55.601 -19.329 Td [(call)]TJ 0 g 0 G - [-525(a%clip_diag\050b,info\051)]TJ/F62 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)]TJ/F67 9.9626 Tf 79.73 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ + [-525(a%clip_diag\050b,info\051)]TJ/F84 9.9626 Tf 14.944 -12.144 Td [(Returns)-250(a)-250(copy)-250(of)]TJ/F131 9.9626 Tf 79.73 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ 0 g 0 G -/F59 9.9626 Tf -102.395 -20.49 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -102.395 -20.49 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.679 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.679 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.077 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -34.627 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.679 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(A)-250(copy)-250(of)]TJ/F67 9.9626 Tf 45.37 0 Td [(a)]TJ/F62 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ -39.252 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.622 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)]TJ/F131 9.9626 Tf 45.369 0 Td [(a)]TJ/F84 9.9626 Tf 7.721 0 Td [(without)-250(the)-250(main)-250(diagonal.)]TJ -39.252 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.984 -20.679 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -20.679 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -28.213 Td [(3.2.15)-1000(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -28.213 Td [(3.2.15)-1000(tril)-250(\227)-250(Return)-250(the)-250(lower)-250(triangle)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.921 -19.329 Td [(call)]TJ +/F131 9.9626 Tf 20.921 -19.329 Td [(call)]TJ 0 g 0 G [-525(a%tril\050l,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8512,9 +8529,9 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(diag,imin,imax,jmin,jmax,rscale,cscale,u]\051)]TJ/F62 9.9626 Tf -21.668 -22.671 Td [(Returns)-309(the)-308(lower)-309(triangular)-308(part)-309(of)-309(submatrix)]TJ/F67 9.9626 Tf 211.209 0 Td [(A\050imin:imax,jmin:jmax\051)]TJ/F62 9.9626 Tf 115.067 0 Td [(,)]TJ -341.22 -11.956 Td [(optionally)-190(r)18(escaling)-190(r)18(ow/col)-190(indices)-190(to)-190(the)-190(range)]TJ + [-525(diag,imin,imax,jmin,jmax,rscale,cscale,u]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 185.405 Tm [(Returns)-266(the)-266(lower)-266(triangular)-266(part)-266(of)-266(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 378.053 185.405 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 185.405 Tm [(,)]TJ 0.98 0 0 1 150.705 173.45 Tm [(optionally)-194(r)19(escaling)-194(r)18(ow/col)-194(indices)-194(to)-193(the)-194(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf 212.61 0 Td [(1)]TJ +/F131 9.9626 Tf 1 0 0 1 359.321 173.45 Tm [(1)]TJ 0 g 0 G [(:imax)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8542,78 +8559,78 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf -212.61 -11.955 Td [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(upper)-250(triangle.)]TJ +/F84 9.9626 Tf -208.616 -11.955 Td [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(upper)-250(triangle.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.49 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.49 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.679 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.679 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.874 -29.888 Td [(22)]TJ +/F84 9.9626 Tf 166.874 -29.888 Td [(22)]TJ 0 g 0 G ET endstream endobj -1078 0 obj +1089 0 obj << -/Length 6324 +/Length 6539 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(a)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ +/F75 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ 0 g 0 G -/F62 9.9626 Tf 24.907 0 Td [(Include)-300(diagonals)-301(up)-300(to)-301(this)-300(one;)]TJ/F67 9.9626 Tf 149.76 0 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 124.802 651.513 Tm [(Include)-258(diagonals)-258(up)-258(to)-258(this)-258(one;)]TJ/F131 9.9626 Tf 1 0 0 1 274.777 651.513 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 34.376 0 Td [(means)-300(the)-301(\002rst)-300(super)18(diagonal,)]TJ/F67 9.9626 Tf -184.136 -11.955 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 308.781 651.513 Tm [(means)-258(the)-258(\002rst)-258(super)18(diagonal,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 639.558 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=-)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ +/F84 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F62 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -74.978 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.75 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -18.75 Td [(rscale,cscale)]TJ 0 g 0 G -/F62 9.9626 Tf 60.025 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -60.025 -18.979 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -18.979 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.75 Td [(l)]TJ 0 g 0 G -/F62 9.9626 Tf 8.299 0 Td [(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 137.333 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -125.956 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 7.911 0 Td [(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 137.333 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -125.956 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.75 Td [(u)]TJ +/F75 9.9626 Tf -184.596 -18.75 Td [(u)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 184.485 0 Td [(a)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -175.878 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.74 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 184.486 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -175.938 -11.956 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.749 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -18.749 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.801 -26.59 Td [(3.2.16)-1000(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.801 -26.59 Td [(3.2.16)-1000(triu)-250(\227)-250(Return)-250(the)-250(upper)-250(triangle)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.922 -18.964 Td [(call)]TJ +/F131 9.9626 Tf 20.922 -18.964 Td [(call)]TJ 0 g 0 G [-525(a%triu\050u,info[,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -8621,9 +8638,9 @@ BT 15.691 -11.955 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(diag,imin,imax,jmin,jmax,rscale,cscale,l]\051)]TJ/F62 9.9626 Tf -21.669 -18.979 Td [(Returns)-289(the)-290(upper)-289(triangular)-290(part)-289(of)-290(submatrix)]TJ/F67 9.9626 Tf 211.209 0 Td [(A\050imin:imax,jmin:jmax\051)]TJ/F62 9.9626 Tf 115.068 0 Td [(,)]TJ -341.221 -11.955 Td [(optionally)-190(r)18(escaling)-190(r)18(ow/col)-190(indices)-190(to)-190(the)-190(range)]TJ + [-525(diag,imin,imax,jmin,jmax,rscale,cscale,l]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 414.476 Tm [(Returns)-247(the)-247(upper)-247(triangular)-247(part)-246(of)-247(submatrix)]TJ/F131 9.9626 Tf 1 0 0 1 327.244 414.476 Tm [(A\050imin:imax,jmin:jmax\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.311 414.476 Tm [(,)]TJ 0.98 0 0 1 99.895 402.521 Tm [(optionally)-194(r)19(escaling)-194(r)18(ow/col)-194(indices)-194(to)-194(the)-193(range)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf 212.611 0 Td [(1)]TJ +/F131 9.9626 Tf 1 0 0 1 308.511 402.521 Tm [(1)]TJ 0 g 0 G [(:imax)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -8651,141 +8668,141 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 141.219 0 Td [(,)]TJ -353.83 -11.956 Td [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(lower)-250(triangle.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 449.73 402.521 Tm [(,)]TJ 1 0 0 1 99.895 390.565 Tm [(and)-250(r)18(eturing)-250(the)-250(complementary)-250(lower)-250(triangle.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -17.574 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -17.574 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -18.75 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -18.75 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -18.75 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ -160.078 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.555 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ -159.689 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ +/F75 9.9626 Tf -77.918 -30.706 Td [(diag)]TJ 0 g 0 G -/F62 9.9626 Tf 24.907 0 Td [(Include)-300(diagonals)-301(up)-300(to)-301(this)-300(one;)]TJ/F67 9.9626 Tf 149.76 0 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 124.802 280.876 Tm [(Include)-258(diagonals)-258(up)-258(to)-258(this)-258(one;)]TJ/F131 9.9626 Tf 1 0 0 1 274.777 280.876 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 34.376 0 Td [(means)-300(the)-301(\002rst)-300(super)18(diagonal,)]TJ/F67 9.9626 Tf -184.136 -11.955 Td [(diag)]TJ +/F84 9.9626 Tf 1.02 0 0 1 308.781 280.876 Tm [(means)-258(the)-258(\002rst)-258(super)18(diagonal,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 268.92 Tm [(diag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=-)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ +/F84 9.9626 Tf 39.103 0 Td [(means)-250(the)-250(\002rst)-250(subdiagonal.)-310(Default)-250(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ +/F75 9.9626 Tf -64.01 -18.75 Td [(imin,imax,jmin,jmax)]TJ 0 g 0 G -/F62 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -74.978 -11.955 Td [(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 99.885 0 Td [(Minimum)-250(and)-250(maximum)-250(r)18(ow)-250(and)-250(column)-250(indices.)]TJ -75.287 -11.955 Td [(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.75 Td [(rscale,cscale)]TJ +/F75 9.9626 Tf -24.598 -18.75 Td [(rscale,cscale)]TJ 0 g 0 G -/F62 9.9626 Tf 60.025 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ +/F84 9.9626 Tf 59.527 0 Td [(Whether)-250(to)-250(r)18(escale)-250(r)18(ow/column)-250(indices.)-310(T)90(ype:)-310(optional.)]TJ 0 g 0 G -/F59 9.9626 Tf -60.025 -18.979 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -59.527 -18.979 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.75 Td [(u)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 138.668 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -130.06 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(the)-250(upper)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 138.668 0 Td [(a)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ -130.061 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.75 Td [(l)]TJ +/F75 9.9626 Tf -184.596 -18.75 Td [(l)]TJ 0 g 0 G -/F62 9.9626 Tf 8.299 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F67 9.9626 Tf 183.151 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -171.773 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F67 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F62 9.9626 Tf 78.455 0 Td [(.)]TJ +/F84 9.9626 Tf 7.97 0 Td [(\050optional\051)-250(A)-250(copy)-250(of)-250(the)-250(lower)-250(triangle)-250(of)]TJ/F131 9.9626 Tf 183.151 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ -171.833 -11.955 Td [(A)-250(variable)-250(of)-250(type)]TJ/F131 9.9626 Tf 81.623 0 Td [(psb_Tspmat_type)]TJ/F84 9.9626 Tf 78.455 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -184.985 -18.75 Td [(info)]TJ +/F75 9.9626 Tf -184.596 -18.75 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ 0 g 0 G - 143.074 -29.888 Td [(23)]TJ + 143.073 -29.888 Td [(23)]TJ 0 g 0 G ET endstream endobj -1084 0 obj +1095 0 obj << -/Length 7619 +/Length 7927 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(3.2.17)-1000(psb)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(3.2.17)-1000(psb)]TJ ET q 1 0 0 1 202.769 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 205.758 706.129 Td [(set)]TJ +/F75 9.9626 Tf 205.758 706.129 Td [(set)]TJ ET q 1 0 0 1 219.078 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 222.067 706.129 Td [(mat)]TJ +/F75 9.9626 Tf 222.067 706.129 Td [(mat)]TJ ET q 1 0 0 1 239.82 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 242.809 706.129 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ +/F75 9.9626 Tf 242.809 706.129 Td [(default)-250(\227)-250(Set)-250(default)-250(storage)-250(format)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -92.104 -18.964 Td [(call)]TJ +/F131 9.9626 Tf -92.104 -18.964 Td [(call)]TJ 0 g 0 G [-1050(psb_set_mat_default\050a\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.231 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.231 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.231 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(a)-203(variable)-203(of)]TJ +/F84 9.9626 Tf 0.988 0 0 1 160.667 628.52 Tm [(a)-253(variable)-253(of)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 55.42 0 Td [(class)]TJ +/F131 9.9626 Tf 1 0 0 1 216.887 628.52 Tm [(class)]TJ 0 g 0 G - [(\050psb_T_base_sparse_mat\051)]TJ/F62 9.9626 Tf 148.475 0 Td [(r)18(equesting)-203(a)-204(new)-203(default)-203(stor)18(-)]TJ -188.951 -11.956 Td [(age)-250(format.)]TJ 0 -11.955 Td [(T)90(ype:)-310(r)18(equir)18(ed.)]TJ/F59 9.9626 Tf -24.907 -26.815 Td [(3.2.18)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ + [(\050psb_T_base_sparse_mat\051)]TJ/F84 9.9626 Tf 0.988 0 0 1 365.826 628.52 Tm [(r)18(equesting)-253(a)-253(new)-252(default)-253(stor)18(-)]TJ 1 0 0 1 175.611 616.564 Tm [(age)-250(format.)]TJ -0.308 -11.955 Td [(T)90(ype:)-310(r)18(equir)18(ed.)]TJ/F75 9.9626 Tf -24.598 -26.815 Td [(3.2.18)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -18.964 Td [(call)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)]TJ 0 g 0 G [-1050(a%clone\050b,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.183 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.231 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.231 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.231 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sparse)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.917 -32.138 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.917 -32.138 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.232 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 10.68 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -11.068 -19.231 Td [(info)]TJ +/F75 9.9626 Tf -10.68 -19.231 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F59 9.9626 Tf -23.8 -26.815 Td [(3.2.19)-1000(Named)-250(Constants)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ/F75 9.9626 Tf -23.8 -26.815 Td [(3.2.19)-1000(Named)-250(Constants)]TJ 0 g 0 G 0 -18.964 Td [(psb)]TJ ET @@ -8794,14 +8811,14 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 371.85 Td [(dupl)]TJ +/F75 9.9626 Tf 170.889 371.85 Td [(dupl)]TJ ET q 1 0 0 1 193.066 372.049 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 196.055 371.85 Td [(ovwrt)]TJ +/F75 9.9626 Tf 196.055 371.85 Td [(ovwrt)]TJ ET q 1 0 0 1 223.222 372.049 cm @@ -8809,23 +8826,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 231.193 371.85 Td [(Duplicate)-259(coef)18(\002cients)-259(shou)1(ld)-259(be)-259(overwritten)-259(\050i.e.)-336(ignor)18(e)-259(du-)]TJ -55.582 -11.955 Td [(plications\051)]TJ +/F84 9.9626 Tf 1.01 0 0 1 231.193 371.85 Tm [(Duplicate)-247(coef)17(\002)1(cients)-248(should)-247(be)-248(overwritten)-247(\050i.e.)-307(ignor)18(e)-248(du-)]TJ 1 0 0 1 175.313 359.895 Tm [(plications\051)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.231 Td [(psb)]TJ +/F75 9.9626 Tf -24.608 -19.231 Td [(psb)]TJ ET q 1 0 0 1 167.9 340.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 340.664 Td [(dupl)]TJ +/F75 9.9626 Tf 170.889 340.664 Td [(dupl)]TJ ET q 1 0 0 1 193.066 340.863 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 196.055 340.664 Td [(add)]TJ +/F75 9.9626 Tf 196.055 340.664 Td [(add)]TJ ET q 1 0 0 1 213.808 340.863 cm @@ -8833,23 +8850,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 221.778 340.664 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(be)-250(added;)]TJ +/F84 9.9626 Tf 221.778 340.664 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(be)-250(added;)]TJ 0 g 0 G -/F59 9.9626 Tf -71.073 -19.232 Td [(psb)]TJ +/F75 9.9626 Tf -71.073 -19.232 Td [(psb)]TJ ET q 1 0 0 1 167.9 321.632 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 321.432 Td [(dupl)]TJ +/F75 9.9626 Tf 170.889 321.432 Td [(dupl)]TJ ET q 1 0 0 1 193.066 321.632 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 196.055 321.432 Td [(err)]TJ +/F75 9.9626 Tf 196.055 321.432 Td [(err)]TJ ET q 1 0 0 1 209.384 321.632 cm @@ -8857,23 +8874,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 217.355 321.432 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(trigger)-250(an)-250(err)18(or)-250(conditino)]TJ +/F84 9.9626 Tf 217.355 321.432 Td [(Duplicate)-250(coef)18(\002cients)-250(should)-250(trigger)-250(an)-250(err)18(or)-250(conditino)]TJ 0 g 0 G -/F59 9.9626 Tf -66.65 -19.231 Td [(psb)]TJ +/F75 9.9626 Tf -66.65 -19.231 Td [(psb)]TJ ET q 1 0 0 1 167.9 302.4 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 302.201 Td [(upd)]TJ +/F75 9.9626 Tf 170.889 302.201 Td [(upd)]TJ ET q 1 0 0 1 189.748 302.4 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 192.737 302.201 Td [(d\003t)]TJ +/F75 9.9626 Tf 192.737 302.201 Td [(d\003t)]TJ ET q 1 0 0 1 208.827 302.4 cm @@ -8881,23 +8898,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 216.797 302.201 Td [(Default)-250(update)-250(strategy)-250(for)-250(matrix)-250(coef)18(\002cients;)]TJ +/F84 9.9626 Tf 216.797 302.201 Td [(Default)-250(update)-250(strategy)-250(for)-250(matrix)-250(coef)18(\002cients;)]TJ 0 g 0 G -/F59 9.9626 Tf -66.092 -19.231 Td [(psb)]TJ +/F75 9.9626 Tf -66.092 -19.231 Td [(psb)]TJ ET q 1 0 0 1 167.9 283.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 282.97 Td [(upd)]TJ +/F75 9.9626 Tf 170.889 282.97 Td [(upd)]TJ ET q 1 0 0 1 189.748 283.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 192.737 282.97 Td [(srch)]TJ +/F75 9.9626 Tf 192.737 282.97 Td [(srch)]TJ ET q 1 0 0 1 212.144 283.169 cm @@ -8905,23 +8922,23 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 220.114 282.97 Td [(Update)-250(strategy)-250(based)-250(on)-250(sear)18(ch)-250(into)-250(the)-250(data)-250(str)8(uctur)18(e;)]TJ +/F84 9.9626 Tf 220.114 282.97 Td [(Update)-250(strategy)-250(based)-250(on)-250(sear)18(ch)-250(into)-250(the)-250(data)-250(str)8(uctur)18(e;)]TJ 0 g 0 G -/F59 9.9626 Tf -69.409 -19.232 Td [(psb)]TJ +/F75 9.9626 Tf -69.409 -19.232 Td [(psb)]TJ ET q 1 0 0 1 167.9 263.938 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 170.889 263.738 Td [(upd)]TJ +/F75 9.9626 Tf 170.889 263.738 Td [(upd)]TJ ET q 1 0 0 1 189.748 263.938 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 192.737 263.738 Td [(perm)]TJ +/F75 9.9626 Tf 192.737 263.738 Td [(perm)]TJ ET q 1 0 0 1 217.135 263.938 cm @@ -8929,64 +8946,64 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 225.106 263.738 Td [(Update)-392(strategy)-393(based)-392(on)-393(additional)-392(permutation)-393(data)-392(\050see)]TJ -49.495 -11.955 Td [(tools)-250(r)18(outine)-250(description\051.)]TJ/F59 11.9552 Tf -24.906 -28.807 Td [(3.3)-1000(Dense)-250(V)111(ector)-250(Data)-250(Structure)]TJ/F62 9.9626 Tf 0 -18.964 Td [(The)]TJ/F67 9.9626 Tf 20.094 0 Td [(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 225.106 263.738 Tm [(Update)-317(strategy)-316(based)-317(on)-317(additional)-317(permutation)-316(data)-317(\050see)]TJ 1 0 0 1 175.611 251.783 Tm [(tools)-250(r)18(outine)-250(description\051.)]TJ/F75 11.9552 Tf -24.906 -28.807 Td [(3.3)-1000(Dense)-250(V)111(ector)-250(Data)-250(Structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 204.012 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 170.422 204.012 Tm [(psb)]TJ ET q -1 0 0 1 187.117 204.211 cm +1 0 0 1 186.74 204.211 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 190.255 204.012 Td [(T)]TJ +/F131 9.9626 Tf 189.878 204.012 Td [(T)]TJ ET q -1 0 0 1 196.113 204.211 cm +1 0 0 1 195.736 204.211 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 199.252 204.012 Td [(vect)]TJ +/F131 9.9626 Tf 198.875 204.012 Td [(vect)]TJ ET q -1 0 0 1 220.801 204.211 cm +1 0 0 1 220.424 204.211 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 223.939 204.012 Td [(type)]TJ/F62 9.9626 Tf 24.338 0 Td [(data)-343(str)8(uctur)18(e)-343(encapsulates)-343(the)-343(dense)-343(vectors)-342(in)-343(a)-343(way)]TJ -97.572 -11.955 Td [(similar)-368(to)-368(sparse)-368(matrices,)-397(i.e.)-664(including)-368(a)-368(base)-368(type)]TJ/F67 9.9626 Tf 242.472 0 Td [(psb)]TJ +/F131 9.9626 Tf 223.562 204.012 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.498 204.012 Tm [(data)-297(str)8(uctur)18(e)-297(encapsulates)-296(the)-297(dense)-297(vectors)-296(in)-297(a)-297(way)]TJ 0.98 0 0 1 150.705 192.057 Tm [(similar)-230(to)-231(sparse)-230(matrices,)-236(i.e.)-308(including)-230(a)-231(base)-230(type)]TJ/F131 9.9626 Tf 1 0 0 1 373.874 192.057 Tm [(psb)]TJ ET q -1 0 0 1 409.495 192.256 cm +1 0 0 1 390.193 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 412.633 192.057 Td [(T)]TJ +/F131 9.9626 Tf 393.331 192.057 Td [(T)]TJ ET q -1 0 0 1 418.491 192.256 cm +1 0 0 1 399.189 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 421.63 192.057 Td [(base)]TJ +/F131 9.9626 Tf 402.327 192.057 Td [(base)]TJ ET q -1 0 0 1 443.178 192.256 cm +1 0 0 1 423.876 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 446.317 192.057 Td [(vect)]TJ +/F131 9.9626 Tf 427.015 192.057 Td [(vect)]TJ ET q -1 0 0 1 467.866 192.256 cm +1 0 0 1 448.563 192.256 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 471.004 192.057 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -341.22 -11.956 Td [(The)-263(user)-263(will)-263(not,)-266(in)-263(general,)-267(access)-263(the)-263(vector)-263(components)-263(dir)18(ectly)111(,)-266(but)-263(rather)]TJ 0 -11.955 Td [(via)-222(the)-222(r)18(out)1(ines)-222(of)-222(sec.)]TJ +/F131 9.9626 Tf 451.702 192.057 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 472.623 192.057 Tm [(.)-308(The)]TJ 1.016 0 0 1 150.705 180.101 Tm [(user)-245(will)-245(not,)-245(in)-245(general,)-245(access)-245(the)-244(vector)-245(components)-245(dir)18(ectly)109(,)-245(but)-245(rather)-245(via)]TJ 0.994 0 0 1 150.705 168.146 Tm [(the)-252(r)18(outines)-252(of)-253(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-222(6)]TJ + [-252(6)]TJ 0 g 0 G - [(.)-300(Among)-222(other)-222(simple)-222(things,)-227(we)-222(de\002ne)-222(her)18(e)-221(an)-222(extrac-)]TJ 0 -11.955 Td [(tion)-273(method)-274(that)-273(can)-274(be)-273(used)-274(to)-273(get)-274(a)-273(full)-274(copy)-273(of)-274(the)-273(part)-274(of)-273(the)-274(vector)-273(stor)18(ed)]TJ 0 -11.955 Td [(on)-250(the)-250(local)-250(pr)18(ocess.)]TJ 14.944 -11.955 Td [(The)-311(type)-311(declaration)-311(is)-310(shown)-311(in)-311(\002gur)18(e)]TJ + [(.)-314(Among)-252(other)-253(simple)-252(things,)-252(we)-253(de\002ne)-252(her)18(e)-252(an)-252(extraction)]TJ 0.98 0 0 1 150.705 156.191 Tm [(method)-255(that)-254(can)-255(be)-255(used)-254(to)-255(get)-254(a)-255(full)-255(copy)-254(of)-255(the)-255(part)-254(of)-255(the)-255(vector)-254(stor)18(ed)-255(on)-254(the)]TJ 1 0 0 1 150.705 144.236 Tm [(local)-250(pr)18(ocess.)]TJ 1.02 0 0 1 165.649 132.281 Tm [(The)-265(type)-266(declaration)-265(is)-265(shown)-266(in)-265(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-311(3)]TJ + [-266(3)]TJ 0 g 0 G - [-311(wher)18(e)]TJ/F67 9.9626 Tf 217.442 0 Td [(T)]TJ/F62 9.9626 Tf 8.327 0 Td [(is)-311(a)-311(placeholder)-311(for)-310(the)]TJ -240.713 -11.955 Td [(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ + [-265(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 383.282 132.281 Tm [(T)]TJ/F84 9.9626 Tf 1.02 0 0 1 391.209 132.281 Tm [(is)-265(a)-266(placeholder)-265(for)-265(the)]TJ 1 0 0 1 150.705 120.326 Tm [(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ 0 g 0 G 166.874 -29.888 Td [(24)]TJ 0 g 0 G @@ -8994,34 +9011,34 @@ ET endstream endobj -1090 0 obj +1101 0 obj << -/Length 5064 +/Length 5165 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(I)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(I)]TJ 0 g 0 G -/F62 9.9626 Tf 8.857 0 Td [(Integer;)]TJ +/F84 9.9626 Tf 8.857 0 Td [(Integer;)]TJ 0 g 0 G -/F59 9.9626 Tf -8.857 -20.359 Td [(S)]TJ +/F75 9.9626 Tf -8.857 -20.359 Td [(S)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 11.069 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -11.069 -20.358 Td [(D)]TJ +/F75 9.9626 Tf -11.069 -20.358 Td [(D)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ +/F84 9.9626 Tf 13.281 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ 0 g 0 G -/F59 9.9626 Tf -13.281 -20.359 Td [(C)]TJ +/F75 9.9626 Tf -13.281 -20.359 Td [(C)]TJ 0 g 0 G -/F62 9.9626 Tf 12.175 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ +/F84 9.9626 Tf 12.175 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ 0 g 0 G -/F59 9.9626 Tf -12.175 -20.358 Td [(Z)]TJ +/F75 9.9626 Tf -12.175 -20.358 Td [(Z)]TJ 0 g 0 G -/F62 9.9626 Tf 11.627 0 Td [(Double)-250(pr)18(ecision)-250(complex.)]TJ -11.627 -20.251 Td [(The)-209(actual)-208(data)-209(is)-208(contained)-209(in)-209(the)-208(polymorphic)-209(component)]TJ/F67 9.9626 Tf 261.152 0 Td [(v%v)]TJ/F62 9.9626 Tf 15.691 0 Td [(;)-222(the)-209(separation)]TJ -276.843 -11.955 Td [(between)-353(the)-353(application)-353(and)-353(the)-353(actual)-353(data)-353(is)-353(esse)1(ntial)-353(for)-353(cases)-353(wher)18(e)-353(it)-353(is)]TJ 0 -11.955 Td [(necessary)-321(to)-321(link)-320(to)-321(data)-321(storage)-321(made)-320(available)-321(elsewher)18(e)-321(outside)-320(the)-321(dir)18(ect)]TJ 0 -11.955 Td [(contr)18(ol)-231(of)-231(the)-231(compiler/application,)-235(e.g.)-304(data)-231(stor)18(ed)-231(in)-231(a)-231(graphics)-231(accelerator)-74('s)]TJ 0 -11.955 Td [(private)-250(memory)111(.)]TJ +/F84 9.9626 Tf 11.627 0 Td [(Double)-250(pr)18(ecision)-250(complex.)]TJ 0.987 0 0 1 99.587 604.444 Tm [(The)-252(actual)-252(data)-252(is)-252(contained)-252(in)-252(the)-253(pol)1(ymorphic)-253(component)]TJ/F131 9.9626 Tf 1 0 0 1 361.193 604.444 Tm [(v%v)]TJ/F84 9.9626 Tf 0.987 0 0 1 376.884 604.444 Tm [(;)-252(the)-253(separation)]TJ 1.02 0 0 1 99.895 592.489 Tm [(between)-301(the)-301(application)-301(and)-300(the)-301(actual)-301(data)-301(is)-301(essential)-301(for)-301(cases)-301(wher)18(e)-301(it)-301(is)]TJ 1.02 0 0 1 99.895 580.534 Tm [(necessary)-259(to)-259(link)-260(to)-259(data)-259(storage)-259(made)-259(available)-259(elsewher)17(e)-259(outside)-259(the)-259(dir)17(ect)]TJ 0.995 0 0 1 99.895 568.579 Tm [(contr)18(ol)-250(of)-250(the)-250(compiler/application,)-250(e.g.)-311(data)-250(stor)18(ed)-250(i)1(n)-250(a)-250(graphics)-250(accelerator)-75('s)]TJ 1 0 0 1 99.596 556.624 Tm [(private)-250(memory)111(.)]TJ 0 g 0 G 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -9036,7 +9053,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 525.005 Td [(type)]TJ +/F231 8.9664 Tf 112.299 525.005 Td [(type)]TJ 0 g 0 G [-525(psb_T_base_vect_type)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9098,14 +9115,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 6.677 -41.429 Td [(Listing)-250(3:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(dense)-250(vector)74(.)]TJ/F59 9.9626 Tf -19.081 -39.929 Td [(3.3.1)-1000(V)111(ector)-250(Methods)]TJ 0 -19.174 Td [(3.3.2)-1000(get)]TJ +/F84 9.9626 Tf 6.677 -41.429 Td [(Listing)-250(3:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(dense)-250(vector)74(.)]TJ/F75 9.9626 Tf -19.081 -39.929 Td [(3.3.1)-1000(V)111(ector)-250(Methods)]TJ 0 -19.174 Td [(3.3.2)-1000(get)]TJ ET q 1 0 0 1 144.219 358.919 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 358.719 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(dense)-250(vector)]TJ/F67 9.9626 Tf -47.313 -19.173 Td [(nr)]TJ +/F75 9.9626 Tf 147.208 358.719 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(dense)-250(vector)]TJ/F131 9.9626 Tf -47.313 -19.173 Td [(nr)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -9115,23 +9132,23 @@ BT 0 g 0 G [-525(v%get_nrows\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.359 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -20.359 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.358 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -34.198 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.358 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(dense)-250(vector)]TJ/F67 9.9626 Tf 161.273 0 Td [(v)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ/F59 9.9626 Tf -239.281 -27.757 Td [(3.3.3)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(dense)-250(vector)]TJ/F67 9.9626 Tf 0 -19.174 Td [(memory_size)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(dense)-250(vector)]TJ/F131 9.9626 Tf 161.274 0 Td [(v)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ/F75 9.9626 Tf -238.972 -27.757 Td [(3.3.3)-1000(sizeof)-250(\227)-250(Get)-250(memory)-250(occupation)-250(in)-250(bytes)-250(of)-250(a)-250(dense)-250(vector)]TJ/F131 9.9626 Tf 0 -19.174 Td [(memory_size)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -9141,42 +9158,42 @@ BT 0 g 0 G [-525(v%sizeof\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.351 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.358 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -20.358 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(25)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(25)]TJ 0 g 0 G ET endstream endobj -1097 0 obj +1108 0 obj << -/Length 3867 +/Length 3987 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(v)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -36.868 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -23.918 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F59 9.9626 Tf -72.776 -32.82 Td [(3.3.4)-1000(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(memory)-250(occupation)-250(in)-250(bytes.)]TJ/F75 9.9626 Tf -72.468 -32.82 Td [(3.3.4)-1000(set)-250(\227)-250(Set)-250(contents)-250(of)-250(the)-250(vector)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 5.23 -20.898 Td [(call)]TJ +/F131 9.9626 Tf 5.23 -20.898 Td [(call)]TJ 0 g 0 G [-1050(v%set\050alpha[,first,last]\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9192,134 +9209,134 @@ BT 0 g 0 G [-1050(v%zero\050\051)]TJ 0 g 0 G -/F59 9.9626 Tf -5.23 -24.913 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -5.23 -24.913 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -23.918 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -23.918 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -23.918 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.338 -35.873 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(A)-250(scalar)-250(value.)]TJ -5.53 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.047 0 Td [(A)-250(scalar)-250(value.)]TJ -5.141 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -23.918 Td [(\002rst,last)]TJ +/F75 9.9626 Tf -24.906 -23.918 Td [(\002rst,last)]TJ 0 g 0 G -/F62 9.9626 Tf 41.215 0 Td [(Boundaries)-250(for)-250(setting)-250(in)-250(the)-250(vector)74(.)]TJ -16.309 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integers.)]TJ +/F84 9.9626 Tf 41.215 0 Td [(Boundaries)-250(for)-250(setting)-250(in)-250(the)-250(vector)74(.)]TJ -16.309 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integers.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -23.918 Td [(vect)]TJ +/F75 9.9626 Tf -24.906 -23.918 Td [(vect)]TJ 0 g 0 G -/F62 9.9626 Tf 23.242 0 Td [(An)-250(array)]TJ 1.664 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 22.854 0 Td [(An)-250(array)]TJ 2.052 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G - [(.)]TJ -24.906 -25.91 Td [(Note)-336(that)-336(a)-335(call)-336(to)]TJ/F67 9.9626 Tf 84.614 0 Td [(v%zero\050\051)]TJ/F62 9.9626 Tf 45.189 0 Td [(is)-336(pr)18(ovided)-336(as)-335(a)-336(shorthand,)-358(but)-335(is)-336(equivalent)-336(to)]TJ -129.803 -11.956 Td [(a)-270(call)-270(to)]TJ/F67 9.9626 Tf 36.947 0 Td [(v%set\050zero\051)]TJ/F62 9.9626 Tf 60.225 0 Td [(with)-270(the)]TJ/F67 9.9626 Tf 39.456 0 Td [(zero)]TJ/F62 9.9626 Tf 23.613 0 Td [(constant)-270(having)-270(the)-271(appr)18(opriat)1(e)-271(type)-270(and)]TJ -160.241 -11.955 Td [(kind.)]TJ + [(.)]TJ 1.018 0 0 1 150.705 217.975 Tm [(Note)-246(that)-246(a)-245(call)-246(to)]TJ/F131 9.9626 Tf 1 0 0 1 232.277 217.975 Tm [(v%zero\050\051)]TJ/F84 9.9626 Tf 1.018 0 0 1 276.612 217.975 Tm [(is)-246(pr)18(ovided)-246(as)-246(a)-246(shorthand,)-245(but)-246(is)-246(equivalent)-246(to)-246(a)]TJ 1.02 0 0 1 150.705 206.02 Tm [(call)-293(to)]TJ/F131 9.9626 Tf 1 0 0 1 181.022 206.02 Tm [(v%set\050zero\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 241.53 206.02 Tm [(with)-293(the)]TJ/F131 9.9626 Tf 1 0 0 1 282.233 206.02 Tm [(zero)]TJ/F84 9.9626 Tf 1.02 0 0 1 306.129 206.02 Tm [(constant)-293(having)-292(the)-293(appr)18(opriate)-293(type)-293(and)]TJ 1 0 0 1 150.705 194.064 Tm [(kind.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -25.91 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 0 -25.91 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -23.918 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)74(,)-250(with)-250(updated)-250(entries)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(dense)-250(vector)74(,)-250(with)-250(updated)-250(entries)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 110.536 -41.843 Td [(26)]TJ +/F84 9.9626 Tf 110.536 -41.843 Td [(26)]TJ 0 g 0 G ET endstream endobj -1104 0 obj +1115 0 obj << -/Length 4464 +/Length 4800 >> stream 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(3.3.5)-1000(get)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(3.3.5)-1000(get)]TJ ET q 1 0 0 1 144.219 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 147.208 706.129 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ +/F75 9.9626 Tf 147.208 706.129 Td [(vect)-250(\227)-250(Get)-250(a)-250(copy)-250(of)-250(the)-250(vector)-250(contents)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -47.313 -19.66 Td [(extv)-525(=)-525(v%get_vect\050[n]\051)]TJ +/F131 9.9626 Tf -47.313 -19.66 Td [(extv)-525(=)-525(v%get_vect\050[n]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.994 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.994 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.362 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -21.362 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.361 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(dense)-250(vector)]TJ 14.386 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ 0 g 0 G -56.339 -33.316 Td [(n)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(Size)-250(to)-250(be)-250(r)18(eturned)]TJ 13.838 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(;)-250(default:)-310(entir)18(e)-250(vector)74(.)]TJ +/F84 9.9626 Tf 11.069 0 Td [(Size)-250(to)-250(be)-250(r)18(eturned)]TJ 13.838 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(;)-250(default:)-310(entir)18(e)-250(vector)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -90.182 -34.95 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -89.873 -34.95 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.361 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(An)-316(allocatable)-316(array)-316(holding)-316(a)-317(copy)-316(of)-316(the)-316(dense)-316(vector)-316(con-)]TJ -47.87 -11.955 Td [(tents.)-321(If)-254(the)-254(ar)18(gument)]TJ/F60 9.9626 Tf 98.086 0 Td [(n)]TJ/F62 9.9626 Tf 8.192 0 Td [(is)-254(speci\002ed,)-255(the)-253(size)-254(of)-254(the)-254(r)18(eturned)-254(array)-253(equals)]TJ -106.278 -11.955 Td [(the)-339(minimum)-339(between)]TJ/F60 9.9626 Tf 105.247 0 Td [(n)]TJ/F62 9.9626 Tf 9.041 0 Td [(and)-339(the)-339(internal)-339(size)-339(of)-339(the)-339(vector)74(,)-361(or)-339(0)-339(if)]TJ/F60 9.9626 Tf 188.353 0 Td [(n)]TJ/F62 9.9626 Tf 9.04 0 Td [(is)]TJ -311.681 -11.956 Td [(negative;)-314(otherwise,)-303(the)-292(size)-293(of)-292(the)-293(array)-292(is)-293(the)-292(same)-293(as)-292(the)-293(internal)-292(size)]TJ 0 -11.955 Td [(of)-250(the)-250(vector)74(.)]TJ/F59 9.9626 Tf -24.907 -29.183 Td [(3.3.6)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ +/F84 9.9626 Tf 1.02 0 0 1 172.283 495.259 Tm [(An)-283(allocatable)-283(array)-283(holding)-283(a)-282(copy)-283(of)-283(the)-283(dense)-283(vector)-283(con-)]TJ 1.002 0 0 1 124.802 483.304 Tm [(tents.)-310(If)-249(the)-250(ar)18(gument)]TJ/F78 9.9626 Tf 1 0 0 1 222.842 483.304 Tm [(n)]TJ/F84 9.9626 Tf 1.002 0 0 1 230.998 483.304 Tm [(is)-250(speci\002ed,)-249(the)-250(size)-250(of)-249(the)-250(r)18(eturned)-249(array)-250(equals)]TJ 1.02 0 0 1 124.802 471.349 Tm [(the)-299(minimum)-299(between)]TJ/F78 9.9626 Tf 1 0 0 1 230.938 471.349 Tm [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 239.641 471.349 Tm [(and)-299(the)-299(internal)-299(size)-299(of)-299(the)-300(vector)73(,)-313(or)-299(0)-299(if)]TJ/F78 9.9626 Tf 1 0 0 1 427.637 471.349 Tm [(n)]TJ/F84 9.9626 Tf 1.02 0 0 1 436.341 471.349 Tm [(is)]TJ 0.981 0 0 1 124.802 459.394 Tm [(negative;)-256(otherwise)1(,)-256(the)-255(size)-256(of)-255(the)-255(array)-256(is)-255(the)-255(same)-256(as)-255(the)-255(internal)-256(size)-255(of)]TJ 1 0 0 1 124.802 447.438 Tm [(the)-250(vector)74(.)]TJ/F75 9.9626 Tf -24.907 -29.183 Td [(3.3.6)-1000(clone)-250(\227)-250(Clone)-250(current)-250(object)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -19.659 Td [(call)-1050(x%clone\050y,info\051)]TJ +/F131 9.9626 Tf 0 -19.659 Td [(call)-1050(x%clone\050y,info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.995 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.995 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.361 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -21.361 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.362 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(dense)-250(vector)74(.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(dense)-250(vector)74(.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.918 -34.95 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -77.918 -34.95 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.361 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ +/F84 9.9626 Tf 10.132 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -/F59 9.9626 Tf -10.521 -21.361 Td [(info)]TJ +/F75 9.9626 Tf -10.132 -21.361 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F59 11.9552 Tf -23.801 -31.176 Td [(3.4)-1000(Preconditioner)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -19.659 Td [(Our)-396(base)-397(l)1(ibrary)-397(of)18(fers)-396(support)-396(for)-396(simple)-397(well)-396(known)-396(pr)18(econditioners)-396(like)]TJ 0 -11.956 Td [(Diagonal)-250(Scaling)-250(or)-250(Block)-250(Jacobi)-250(with)-250(incomplete)-250(factorization)-250(ILU\0500\051.)]TJ 14.944 -12.314 Td [(A)-361(pr)18(econditioner)-361(is)-361(held)-361(in)-361(the)]TJ/F67 9.9626 Tf 143.781 0 Td [(psb)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Return)-250(code.)]TJ/F75 11.9552 Tf -23.801 -31.176 Td [(3.4)-1000(Preconditioner)-250(data)-250(structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 192.416 Tm [(Our)-329(base)-328(library)-329(of)18(fers)-328(support)-329(for)-328(simple)-329(well)-328(known)-329(pr)18(econditioners)-329(like)]TJ 1 0 0 1 99.895 180.46 Tm [(Diagonal)-250(Scaling)-250(or)-250(Block)-250(Jacobi)-250(with)-250(incomplete)-250(factorization)-250(ILU\0500\051.)]TJ 1.02 0 0 1 114.839 168.146 Tm [(A)-258(pr)18(econditioner)-257(is)-258(held)-257(in)-258(the)]TJ/F131 9.9626 Tf 1 0 0 1 255.19 168.146 Tm [(psb)]TJ ET q -1 0 0 1 274.939 168.346 cm +1 0 0 1 271.508 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 278.077 168.146 Td [(prec)]TJ +/F131 9.9626 Tf 274.647 168.146 Td [(Tprec)]TJ ET q -1 0 0 1 299.626 168.346 cm +1 0 0 1 301.426 168.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 302.764 168.146 Td [(type)]TJ/F62 9.9626 Tf 24.519 0 Td [(data)-361(str)8(uctur)18(e)-361(r)18(eported)-361(in)]TJ -227.388 -11.955 Td [(\002gur)18(e)]TJ +/F131 9.9626 Tf 304.564 168.146 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 328.103 168.146 Tm [(data)-258(str)8(uctur)18(e)-258(r)18(eported)-257(in)]TJ 0.994 0 0 1 99.895 156.191 Tm [(\002gur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-282(4)]TJ + [-252(4)]TJ 0 g 0 G - [(.)-407(The)]TJ/F67 9.9626 Tf 59.933 0 Td [(psb_prec_type)]TJ/F62 9.9626 Tf 70.808 0 Td [(data)-282(type)-283(may)-282(contain)-282(a)-283(simple)-282(pr)18(econditioning)]TJ -130.741 -11.955 Td [(matrix)-376(with)-376(the)-376(associated)-376(communication)-375(descriptor)74(.The)-376(internal)-376(pr)18(econdi-)]TJ 0 -11.955 Td [(tioner)-317(is)-317(allocated)-318(appr)18(opriately)-317(with)-317(the)-317(dynamic)-318(type)-317(corr)18(esponding)-317(to)-317(the)]TJ 0 -11.955 Td [(desir)18(ed)-250(pr)18(econditioner)74(.)]TJ + [(.)-315(The)]TJ/F131 9.9626 Tf 1 0 0 1 157.963 156.191 Tm [(psb_Tprec_type)]TJ/F84 9.9626 Tf 0.994 0 0 1 233.688 156.191 Tm [(data)-253(type)-252(may)-253(contain)-252(a)-253(simpl)1(e)-253(pr)18(econditioning)]TJ 1.02 0 0 1 99.895 144.236 Tm [(matrix)-255(with)-254(the)-255(associated)-255(communication)-255(descr)1(iptor)72(.)-333(The)-254(internal)-255(pr)18(econdi-)]TJ 1.02 0 0 1 99.895 132.281 Tm [(tioner)-250(is)-249(allocated)-250(appr)18(opriately)-249(with)-250(the)-249(dynamic)-250(type)-249(corr)17(esponding)-249(to)-250(the)]TJ 1 0 0 1 99.895 120.326 Tm [(desir)18(ed)-250(pr)18(econditioner)74(.)]TJ 0 g 0 G 166.875 -29.888 Td [(27)]TJ 0 g 0 G @@ -9327,9 +9344,9 @@ ET endstream endobj -1110 0 obj +1121 0 obj << -/Length 4234 +/Length 4371 >> stream 0 g 0 G @@ -9347,7 +9364,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 699.454 Td [(type)]TJ +/F231 8.9664 Tf 163.108 699.454 Td [(type)]TJ 0 g 0 G [-525(psb_Tprec_type)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9378,85 +9395,85 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 1.845 -41.429 Td [(Listing)-250(4:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(pr)18(econditioner)74(.)]TJ/F59 11.9552 Tf -14.248 -32.698 Td [(3.5)-1000(Heap)-250(data)-250(structure)]TJ/F62 9.9626 Tf 0 -18.964 Td [(Among)-310(the)-311(tools)-310(r)18(outines)-310(of)-310(sec.)]TJ +/F84 9.9626 Tf 1.845 -41.429 Td [(Listing)-250(4:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(pr)18(econditioner)74(.)]TJ/F75 11.9552 Tf -14.248 -32.698 Td [(3.5)-1000(Heap)-250(data)-250(structure)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.316 584.445 Tm [(Among)-267(the)-267(t)1(ools)-267(r)17(outines)-266(of)-267(sec.)]TJ 0 0 1 rg 0 0 1 RG - [-311(6)]TJ + [-267(6)]TJ 0 g 0 G - [(,)-325(we)-310(have)-311(a)-310(number)-310(of)-311(so)1(rting)-311(utilities;)-340(the)]TJ 0 -11.955 Td [(heap)-250(sort)-250(is)-250(implemented)-250(in)-250(terms)-250(of)-250(heaps)-250(having)-250(the)-250(following)-250(signatur)18(es:)]TJ + [(,)-272(we)-267(have)-266(a)-267(number)-267(of)-267(sorting)-266(utilities;)-278(the)]TJ 1 0 0 1 150.705 572.49 Tm [(heap)-250(sort)-250(is)-250(implemented)-250(in)-250(terms)-250(of)-250(heaps)-250(having)-250(the)-250(following)-250(signatur)18(es:)]TJ 0 g 0 G -/F67 9.9626 Tf 0 -19.925 Td [(psb)]TJ +/F131 9.9626 Tf 0 -19.925 Td [(psb)]TJ ET q 1 0 0 1 167.023 552.764 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 170.162 552.565 Td [(T)]TJ +/F131 9.9626 Tf 170.162 552.565 Td [(T)]TJ ET q 1 0 0 1 176.02 552.764 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 179.158 552.565 Td [(heap)]TJ +/F131 9.9626 Tf 179.158 552.565 Td [(heap)]TJ 0 g 0 G -/F62 9.9626 Tf 25.903 0 Td [(:)-333(a)-262(heap)-262(containing)-262(e)1(lements)-262(of)-262(type)-262(T)74(,)-261(wher)18(e)-262(T)-262(can)-261(be)]TJ/F67 9.9626 Tf 242.282 0 Td [(i,s,c,d,z)]TJ/F62 9.9626 Tf -271.731 -11.955 Td [(for)-250(integer)74(,)-250(r)18(eal)-250(and)-250(complex)-250(data;)]TJ +/F84 9.9626 Tf 1.007 0 0 1 205.061 552.565 Tm [(:)-308(a)-249(heap)-249(contai)1(ning)-249(elements)-249(of)-248(type)-249(T)74(,)-249(wher)18(e)-248(T)-249(can)-249(be)]TJ/F131 9.9626 Tf 1 0 0 1 447.343 552.565 Tm [(i,s,c,d,z)]TJ/F84 9.9626 Tf -271.732 -11.955 Td [(for)-250(integer)74(,)-250(r)18(eal)-250(and)-250(complex)-250(data;)]TJ 0 g 0 G -/F67 9.9626 Tf -24.907 -19.925 Td [(psb)]TJ +/F131 9.9626 Tf -24.906 -19.925 Td [(psb)]TJ ET q 1 0 0 1 167.023 520.884 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 170.162 520.685 Td [(T)]TJ +/F131 9.9626 Tf 170.162 520.685 Td [(T)]TJ ET q 1 0 0 1 176.02 520.884 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 179.158 520.685 Td [(idx)]TJ +/F131 9.9626 Tf 179.158 520.685 Td [(idx)]TJ ET q 1 0 0 1 195.476 520.884 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 198.615 520.685 Td [(heap)]TJ +/F131 9.9626 Tf 198.615 520.685 Td [(heap)]TJ 0 g 0 G -/F62 9.9626 Tf 25.902 0 Td [(:)-289(a)-207(heap)-207(containing)-207(elements)-207(of)-207(type)-207(T)74(,)-207(as)-207(above,)-215(together)-207(with)]TJ -48.906 -11.956 Td [(an)-250(integer)-250(index.)]TJ -24.906 -19.925 Td [(Given)-250(a)-250(heap)-250(object,)-250(the)-250(following)-250(methods)-250(ar)18(e)-250(de\002ned)-250(on)-250(it:)]TJ +/F84 9.9626 Tf 0.982 0 0 1 224.517 520.685 Tm [(:)-316(a)-255(heap)-255(containing)-255(elements)-255(of)-255(type)-255(T)76(,)-255(as)-255(above,)-255(together)-255(with)]TJ 1 0 0 1 175.611 508.729 Tm [(an)-250(integer)-250(index.)]TJ -24.906 -19.925 Td [(Given)-250(a)-250(heap)-250(object,)-250(the)-250(following)-250(methods)-250(ar)18(e)-250(de\002ned)-250(on)-250(it:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(init)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(init)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(Initialize)-250(memory;)-250(also)-250(choose)-250(ascending)-250(or)-250(descending)-250(or)18(der;)]TJ +/F84 9.9626 Tf 21.021 0 Td [(Initialize)-250(memory;)-250(also)-250(choose)-250(ascending)-250(or)-250(descending)-250(or)18(der;)]TJ 0 g 0 G -/F59 9.9626 Tf -21.021 -19.925 Td [(howmany)]TJ +/F75 9.9626 Tf -21.021 -19.925 Td [(howmany)]TJ 0 g 0 G -/F62 9.9626 Tf 50.371 0 Td [(Curr)18(ent)-250(heap)-250(occupancy;)]TJ +/F84 9.9626 Tf 50.371 0 Td [(Curr)18(ent)-250(heap)-250(occupancy;)]TJ 0 g 0 G -/F59 9.9626 Tf -50.371 -19.926 Td [(insert)]TJ +/F75 9.9626 Tf -50.371 -19.926 Td [(insert)]TJ 0 g 0 G -/F62 9.9626 Tf 30.983 0 Td [(Add)-250(an)-250(item)-250(\050or)-250(an)-250(item)-250(and)-250(its)-250(index\051;)]TJ +/F84 9.9626 Tf 30.595 0 Td [(Add)-250(an)-250(item)-250(\050or)-250(an)-250(item)-250(and)-250(its)-250(index\051;)]TJ 0 g 0 G -/F59 9.9626 Tf -30.983 -19.925 Td [(get)]TJ +/F75 9.9626 Tf -30.595 -19.925 Td [(get)]TJ ET q 1 0 0 1 165.141 409.302 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 168.129 409.103 Td [(\002rst)]TJ +/F75 9.9626 Tf 168.129 409.103 Td [(\002rst)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(Remove)-250(and)-250(r)18(eturn)-250(the)-250(\002rst)-250(element;)]TJ +/F84 9.9626 Tf 22.685 0 Td [(Remove)-250(and)-250(r)18(eturn)-250(the)-250(\002rst)-250(element;)]TJ 0 g 0 G -/F59 9.9626 Tf -40.109 -19.925 Td [(dump)]TJ +/F75 9.9626 Tf -40.109 -19.925 Td [(dump)]TJ 0 g 0 G -/F62 9.9626 Tf 32.099 0 Td [(Print)-250(on)-250(\002le;)]TJ +/F84 9.9626 Tf 32.099 0 Td [(Print)-250(on)-250(\002le;)]TJ 0 g 0 G -/F59 9.9626 Tf -32.099 -19.926 Td [(free)]TJ +/F75 9.9626 Tf -32.099 -19.926 Td [(free)]TJ 0 g 0 G -/F62 9.9626 Tf 22.695 0 Td [(Release)-250(memory)111(.)]TJ -22.695 -19.925 Td [(These)-305(objects)-305(ar)18(e)-305(used)-305(in)-305(AMG4PSBLAS)-305(to)-305(implement)-305(the)-305(factorization)-305(algo-)]TJ 0 -11.955 Td [(rithms.)]TJ +/F84 9.9626 Tf 22.695 0 Td [(Release)-250(memory)111(.)]TJ 0.98 0 0 1 150.396 349.327 Tm [(These)-206(objects)-206(ar)19(e)-206(used)-206(to)-206(implement)-206(the)-206(factorization)-206(and)-205(appr)18(oximate)-206(inversion)]TJ 1 0 0 1 150.705 337.372 Tm [(algorithms.)]TJ 0 g 0 G 166.874 -246.934 Td [(28)]TJ 0 g 0 G @@ -9464,7 +9481,7 @@ ET endstream endobj -1114 0 obj +1125 0 obj << /Length 158 >> @@ -9472,34 +9489,34 @@ stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(4)-1000(Computational)-250(routines)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(4)-1000(Computational)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -615.346 Td [(29)]TJ +/F84 9.9626 Tf 166.875 -615.346 Td [(29)]TJ 0 g 0 G ET endstream endobj -1125 0 obj +1136 0 obj << -/Length 7465 +/Length 7649 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ/F62 9.9626 Tf -51.12 -19.189 Td [(This)-358(subr)18(outine)-358(is)-359(an)-358(interface)-358(to)-358(the)-358(computational)-359(kernel)-358(for)-358(dense)-358(matrix)]TJ 0 -11.955 Td [(sum:)]TJ/F60 9.9626 Tf 143.149 -12.304 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.397 0 Td [(a)]TJ/F60 9.9626 Tf 7.616 0 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(geaxpby)-250(\227)-250(General)-250(Dense)-250(Matrix)-250(Sum)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 686.94 Tm [(This)-302(subr)18(outine)-302(is)-302(an)-301(interface)-302(to)-302(the)-302(computational)-301(kernel)-302(for)-302(dense)-302(matrix)]TJ 1 0 0 1 150.705 674.985 Tm [(sum:)]TJ/F78 9.9626 Tf 143.149 -12.304 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 7.616 0 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -175.407 -18.398 Td [(call)]TJ +/F131 9.9626 Tf -175.407 -18.398 Td [(call)]TJ 0 g 0 G [-525(psb_geaxpby\050alpha,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -9526,42 +9543,42 @@ q []0 d 0 J 0.398 w 0 0 m 189.647 0 l S Q BT -/F60 9.9626 Tf 234.009 621.114 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(,)]TJ/F68 9.9626 Tf 5.105 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(,)]TJ/F68 9.9626 Tf 5.355 0 Td [(b)]TJ/F59 9.9626 Tf 89.359 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 234.009 621.114 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(,)]TJ/F133 9.9626 Tf 5.105 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 89.359 0 Td [(Subroutine)]TJ ET q 1 0 0 1 227.737 617.328 cm []0 d 0 J 0.398 w 0 0 m 189.647 0 l S Q BT -/F62 9.9626 Tf 233.715 608.761 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 233.715 608.761 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 370.948 608.96 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 608.761 Td [(geaxpby)]TJ -140.222 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 373.937 608.761 Td [(geaxpby)]TJ -140.222 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 370.948 597.005 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 596.805 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 373.937 596.805 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 370.948 585.05 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 584.85 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 373.937 584.85 Td [(geaxpby)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 370.948 573.094 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 373.937 572.895 Td [(geaxpby)]TJ +/F84 9.9626 Tf 373.937 572.895 Td [(geaxpby)]TJ ET q 1 0 0 1 227.737 569.109 cm @@ -9569,206 +9586,206 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 540.731 Td [(T)92(able)-250(1:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 540.731 Td [(T)92(able)-250(1:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -35.05 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -35.05 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.39 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.39 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.391 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.368 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.391 Td [(x)]TJ +/F75 9.9626 Tf -24.907 -20.391 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(o)1(r)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 348.869 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 348.869 Tm [(psb)]TJ ET q 1 0 0 1 436.673 349.068 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 348.869 Td [(T)]TJ +/F131 9.9626 Tf 439.811 348.869 Td [(T)]TJ ET q 1 0 0 1 445.669 349.068 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 348.869 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 348.869 Td [(vect)]TJ ET q 1 0 0 1 470.356 349.068 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 348.869 Td [(type)]TJ +/F131 9.9626 Tf 473.495 348.869 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 175.611 336.914 Tm [(containing)-270(numbers)-269(of)-270(type)-270(speci\002ed)-270(in)-269(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-312(1)]TJ + [-270(1)]TJ 0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-378(The)-270(rank)-269(of)]TJ/F78 9.9626 Tf 1 0 0 1 450.52 336.914 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.466 336.914 Tm [(must)-270(be)]TJ 1 0 0 1 175.611 324.958 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.958 -20.391 Td [(beta)]TJ +/F75 9.9626 Tf -82.958 -20.39 Td [(beta)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.618 0 Td [(b)]TJ/F62 9.9626 Tf 5.524 0 Td [(.)]TJ -49.584 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.618 0 Td [(b)]TJ/F84 9.9626 Tf 5.524 0 Td [(.)]TJ -49.584 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.391 Td [(y)]TJ +/F75 9.9626 Tf -24.906 -20.391 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 191.754 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -182.473 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 191.754 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -182.474 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 188.537 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 188.537 Tm [(psb)]TJ ET q 1 0 0 1 436.673 188.736 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 188.537 Td [(T)]TJ +/F131 9.9626 Tf 439.811 188.537 Td [(T)]TJ ET q 1 0 0 1 445.669 188.736 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 188.537 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 188.537 Td [(vect)]TJ ET q 1 0 0 1 470.356 188.736 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 188.537 Td [(type)]TJ +/F131 9.9626 Tf 473.495 188.537 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-276(numbers)-277(of)-276(the)-276(type)-276(indicated)-277(in)-276(T)92(able)]TJ +/F84 9.9626 Tf 1.014 0 0 1 175.611 176.581 Tm [(containing)-247(numbers)-247(of)-246(the)-247(type)-247(indicated)-247(in)-247(T)91(able)]TJ 0 0 1 rg 0 0 1 RG - [-276(1)]TJ + [-247(1)]TJ 0 g 0 G - [(.)-389(The)-276(rank)-277(of)]TJ/F60 9.9626 Tf 288.67 0 Td [(y)]TJ/F62 9.9626 Tf 7.859 0 Td [(must)]TJ -296.529 -11.955 Td [(be)-250(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 65.888 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ + [(.)-306(The)-247(rank)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 464.229 176.581 Tm [(y)]TJ/F84 9.9626 Tf 1.014 0 0 1 471.828 176.581 Tm [(must)]TJ 1 0 0 1 175.611 164.626 Tm [(be)-250(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 65.888 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.999 -20.39 Td [(desc)]TJ +/F75 9.9626 Tf -95.999 -20.39 Td [(desc)]TJ ET q 1 0 0 1 171.218 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 144.236 Td [(a)]TJ +/F75 9.9626 Tf 174.207 144.236 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ 0 g 0 G -/F62 9.9626 Tf 114.879 -29.888 Td [(30)]TJ +/F84 9.9626 Tf 115.188 -29.888 Td [(30)]TJ 0 g 0 G ET endstream endobj -1132 0 obj +1143 0 obj << -/Length 2404 +/Length 2434 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 694.373 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 694.174 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 694.174 Td [(desc)]TJ ET q 1 0 0 1 298.05 694.373 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 694.174 Td [(type)]TJ +/F131 9.9626 Tf 301.189 694.174 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.68 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.68 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 604.51 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 604.51 Tm [(psb)]TJ ET q 1 0 0 1 385.864 604.709 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 604.51 Td [(T)]TJ +/F131 9.9626 Tf 389.002 604.51 Td [(T)]TJ ET q 1 0 0 1 394.86 604.709 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 604.51 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 604.51 Td [(vect)]TJ ET q 1 0 0 1 419.547 604.709 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 604.51 Td [(type)]TJ +/F131 9.9626 Tf 422.685 604.51 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -434.371 Td [(31)]TJ + 142.357 -434.371 Td [(31)]TJ 0 g 0 G ET endstream endobj -1142 0 obj +1153 0 obj << -/Length 7647 +/Length 7835 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.2)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(gedot)-250(\227)-250(Dot)-250(Product)]TJ/F62 9.9626 Tf -51.12 -18.976 Td [(This)-250(function)-250(computes)-250(dot)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F60 9.9626 Tf 254.647 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.481 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -286.93 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.459 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 7.597 0 Td [(ar)18(e)-250(r)18(eal)-250(vectors)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F60 9.9626 Tf 104.717 -23.132 Td [(d)-25(o)-35(t)]TJ/F91 10.3811 Tf 16.337 0 Td [(\040)]TJ/F60 9.9626 Tf 13.566 0 Td [(x)]TJ/F60 7.5716 Tf 5.399 4.115 Td [(T)]TJ/F60 9.9626 Tf 5.525 -4.115 Td [(y)]TJ/F62 9.9626 Tf -189.778 -21.93 Td [(Else)-250(if)]TJ/F60 9.9626 Tf 29.474 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 7.596 0 Td [(ar)18(e)-250(complex)-250(vectors)-250(then)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F60 9.9626 Tf 83.965 -23.132 Td [(d)-25(o)-35(t)]TJ/F91 10.3811 Tf 16.336 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F60 7.5716 Tf 5.588 4.115 Td [(H)]TJ/F60 9.9626 Tf 6.812 -4.115 Td [(y)]TJ/F67 9.9626 Tf -175.572 -21.937 Td [(psb_gedot\050x,)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(gedot)-250(\227)-250(Dot)-250(Product)]TJ/F84 9.9626 Tf -51.429 -18.976 Td [(This)-250(function)-250(computes)-250(dot)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F78 9.9626 Tf 254.647 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ -286.621 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.459 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 7.597 0 Td [(ar)18(e)-250(r)18(eal)-250(vectors)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F78 9.9626 Tf 104.717 -23.132 Td [(d)-25(o)-35(t)]TJ/F179 10.3811 Tf 16.337 0 Td [(\040)]TJ/F78 9.9626 Tf 13.566 0 Td [(x)]TJ/F78 7.5716 Tf 5.399 4.115 Td [(T)]TJ/F78 9.9626 Tf 5.525 -4.115 Td [(y)]TJ/F84 9.9626 Tf -189.778 -21.93 Td [(Else)-250(if)]TJ/F78 9.9626 Tf 29.474 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 7.596 0 Td [(ar)18(e)-250(complex)-250(vectors)-250(then)-250(it)-250(computes)-250(dot-pr)18(oduct)-250(as:)]TJ/F78 9.9626 Tf 83.965 -23.132 Td [(d)-25(o)-35(t)]TJ/F179 10.3811 Tf 16.336 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F78 7.5716 Tf 5.588 4.115 Td [(H)]TJ/F78 9.9626 Tf 6.812 -4.115 Td [(y)]TJ/F131 9.9626 Tf -175.572 -21.937 Td [(psb_gedot\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -9790,42 +9807,42 @@ q []0 d 0 J 0.398 w 0 0 m 177.263 0 l S Q BT -/F60 9.9626 Tf 240.031 562.118 Td [(d)-25(o)-35(t)]TJ/F62 9.9626 Tf 13.444 0 Td [(,)]TJ/F60 9.9626 Tf 5.276 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 91.76 0 Td [(Function)]TJ +/F78 9.9626 Tf 240.031 562.118 Td [(d)-25(o)-35(t)]TJ/F84 9.9626 Tf 13.444 0 Td [(,)]TJ/F78 9.9626 Tf 5.276 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 91.76 0 Td [(Function)]TJ ET q 1 0 0 1 233.929 558.332 cm []0 d 0 J 0.398 w 0 0 m 177.263 0 l S Q BT -/F62 9.9626 Tf 239.906 549.765 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 239.906 549.765 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 377.14 549.964 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 549.765 Td [(gedot)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 380.129 549.765 Td [(gedot)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 377.14 538.009 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 537.809 Td [(gedot)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 380.129 537.809 Td [(gedot)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 377.14 526.053 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 525.854 Td [(gedot)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 380.129 525.854 Td [(gedot)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 377.14 514.098 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 380.129 513.899 Td [(gedot)]TJ +/F84 9.9626 Tf 380.129 513.899 Td [(gedot)]TJ ET q 1 0 0 1 233.929 510.113 cm @@ -9833,681 +9850,391 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 481.735 Td [(T)92(able)-250(2:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 481.735 Td [(T)92(able)-250(2:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -34.507 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -34.507 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.951 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.951 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.951 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 359.506 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 359.506 Tm [(psb)]TJ ET q 1 0 0 1 436.673 359.705 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 359.506 Td [(T)]TJ +/F131 9.9626 Tf 439.811 359.506 Td [(T)]TJ ET q 1 0 0 1 445.669 359.705 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 359.506 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 359.506 Td [(vect)]TJ ET q 1 0 0 1 470.356 359.705 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 359.506 Td [(type)]TJ +/F131 9.9626 Tf 473.495 359.506 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 175.611 347.55 Tm [(containing)-270(numbers)-269(of)-270(type)-270(speci\002ed)-270(in)-269(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-312(2)]TJ + [-270(2)]TJ 0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-378(The)-270(rank)-269(of)]TJ/F78 9.9626 Tf 1 0 0 1 450.52 347.55 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.466 347.55 Tm [(must)-270(be)]TJ 1 0 0 1 175.611 335.595 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.958 -19.951 Td [(y)]TJ +/F75 9.9626 Tf -82.958 -19.951 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 267.824 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 267.824 Tm [(psb)]TJ ET q 1 0 0 1 436.673 268.023 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 267.824 Td [(T)]TJ +/F131 9.9626 Tf 439.811 267.824 Td [(T)]TJ ET q 1 0 0 1 445.669 268.023 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 267.824 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 267.824 Td [(vect)]TJ ET q 1 0 0 1 470.356 268.023 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 267.824 Td [(type)]TJ +/F131 9.9626 Tf 473.495 267.824 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-313(numbers)-314(of)-313(type)-313(speci\002ed)-314(in)-313(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 175.611 255.869 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-247(T)94(able)]TJ 0 0 1 rg 0 0 1 RG - [-313(2)]TJ + [-246(2)]TJ 0 g 0 G - [(.)-500(The)-314(rank)-313(of)]TJ/F60 9.9626 Tf 274.898 0 Td [(y)]TJ/F62 9.9626 Tf 8.228 0 Td [(must)-313(be)]TJ -283.126 -11.956 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.116 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ + [(.)-314(The)-246(rank)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 436.643 255.869 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 444.155 255.869 Tm [(must)-246(be)-247(the)]TJ 1 0 0 1 175.611 243.913 Tm [(same)-250(of)]TJ/F78 9.9626 Tf 36.807 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.227 -19.95 Td [(desc)]TJ +/F75 9.9626 Tf -66.919 -19.95 Td [(desc)]TJ ET q 1 0 0 1 171.218 224.162 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 223.963 Td [(a)]TJ +/F75 9.9626 Tf 174.207 223.963 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 324.173 176.341 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 176.142 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 176.142 Td [(desc)]TJ ET q 1 0 0 1 348.86 176.341 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 176.142 Td [(type)]TJ +/F131 9.9626 Tf 351.998 176.142 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.951 Td [(global)]TJ +/F75 9.9626 Tf -222.214 -19.951 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(Speci\002es)-226(whether)-227(the)-226(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.955 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ +/F84 9.9626 Tf 0.994 0 0 1 184.468 156.191 Tm [(Speci\002es)-250(whether)-250(t)1(he)-250(computation)-250(should)-250(include)-250(the)-249(global)-250(r)18(eduction)]TJ 1 0 0 1 175.611 144.236 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 0 g 0 G - 76.693 -29.888 Td [(32)]TJ + 77.002 -29.888 Td [(32)]TJ 0 g 0 G ET endstream endobj -1148 0 obj +1067 0 obj +<< +/Type /ObjStm +/N 100 +/First 955 +/Length 10284 +>> +stream +119 0 1066 58 123 117 1062 174 1069 269 1071 387 127 445 131 502 135 559 1068 616 +1074 711 1076 829 139 888 143 946 1073 1004 1078 1099 1080 1217 147 1275 151 1332 1081 1389 +1082 1447 1077 1505 1084 1600 1086 1718 155 1777 159 1835 163 1893 1083 1951 1088 2046 1090 2164 +167 2222 1087 2278 1094 2373 1091 2521 1092 2667 1096 2815 171 2874 175 2932 179 2989 183 3046 +1097 3104 1093 3163 1100 3258 1102 3376 1098 3434 187 3492 191 3549 195 3606 1099 3663 1107 3773 +1104 3921 1105 4067 1109 4212 199 4271 1106 4329 1114 4424 1111 4563 1116 4711 204 4769 208 4826 +212 4882 1117 4939 1113 4997 1120 5105 1112 5244 1122 5391 1118 5450 216 5509 1119 5567 1124 5677 +1126 5795 220 5853 1123 5910 1135 5991 1127 6175 1128 6321 1129 6465 1130 6611 1131 6757 1132 6901 +1137 7046 224 7105 1110 7163 1134 7222 1142 7373 1133 7530 1139 7677 1140 7821 1144 7967 1141 8025 +1152 8133 1146 8308 1147 8449 1148 8595 1149 8739 1150 8884 1154 9031 228 9090 1155 9148 1151 9207 +% 119 0 obj << -/Length 4270 +/D [1063 0 R /XYZ 150.705 540.892 null] >> -stream -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.318 0 Td [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.true.)]TJ -0 g 0 G -/F59 9.9626 Tf -190.225 -31.881 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F60 9.9626 Tf 126.33 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -206.483 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(2)]TJ -0 g 0 G - [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ -0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(ove)1(r)18(head.)-514(It)-318(may)-318(be)-318(necessary)-317(and/or)-318(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-204(multiple)-204(dot)-204(pr)18(oducts)-204(at)-204(the)-204(same)-204(time;)-219(in)-204(this)-204(case,)-213(it)-204(is)-204(possible)]TJ 0 -11.955 Td [(to)-250(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -/F67 9.9626 Tf 52.303 -19.925 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_gedot\050x1,y1,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 0 -11.956 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(2)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_gedot\050x2,y2,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 0 -11.955 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(3)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_gedot\050x3,y3,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -11.955 Td [(call)]TJ -0 g 0 G - [-525(psb_sum\050ctxt,vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ -0 g 0 G - [(:)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(3)]TJ -0 g 0 G - [(\051\051)]TJ/F62 9.9626 Tf -52.303 -19.925 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communicati)1(on,)-254(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.955 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ -0 g 0 G - 141.968 -282.939 Td [(33)]TJ -0 g 0 G -ET - -endstream -endobj -1159 0 obj +% 1066 0 obj << -/Length 8519 +/D [1063 0 R /XYZ 150.705 358.382 null] >> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ -ET -q -1 0 0 1 198.238 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-283(subr)18(outine)-284(computes)-283(a)-284(series)-284(of)-283(dot)-284(pr)18(oducts)-283(among)-284(the)-283(columns)-284(of)-283(two)]TJ 0 -11.955 Td [(dense)-250(matrices)]TJ/F60 9.9626 Tf 68.208 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(:)]TJ/F60 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F60 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F60 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F93 10.3811 Tf 5.23 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf -214.288 -16.876 Td [(If)-300(the)-299(matrices)-300(ar)18(e)-299(complex,)-312(then)-300(the)-300(usual)-299(convention)-300(applies,)-312(i.e.)-459(the)-299(conju-)]TJ 0 -11.955 Td [(gate)-239(transpose)-239(of)]TJ/F60 9.9626 Tf 77.351 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(is)-239(used.)-307(If)]TJ/F60 9.9626 Tf 45.493 0 Td [(x)]TJ/F62 9.9626 Tf 7.589 0 Td [(and)]TJ/F60 9.9626 Tf 19.375 0 Td [(y)]TJ/F62 9.9626 Tf 7.489 0 Td [(ar)18(e)-239(of)-239(rank)-240(one,)-241(then)]TJ/F60 9.9626 Tf 92.601 0 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 14.552 0 Td [(is)-239(a)-240(scalar)75(,)-242(else)-239(it)]TJ -272.039 -11.955 Td [(is)-250(a)-250(rank)-250(one)-250(array)111(.)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 20.174 -11.955 Td [(call)]TJ -0 g 0 G - [-525(psb_gedots\050res,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(y,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(info\051)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -ET -q -1 0 0 1 230.392 595.704 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -BT -/F60 9.9626 Tf 236.394 587.136 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf 12.17 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 93.135 0 Td [(Subroutine)]TJ -ET -q -1 0 0 1 230.392 583.351 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -BT -/F62 9.9626 Tf 236.369 574.783 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ -ET -q -1 0 0 1 373.603 574.982 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 574.783 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ -ET -q -1 0 0 1 373.603 563.027 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 562.828 Td [(gedots)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ -ET -q -1 0 0 1 373.603 551.072 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 550.872 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ -ET -q -1 0 0 1 373.603 539.116 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 376.592 538.917 Td [(gedots)]TJ -ET -q -1 0 0 1 230.392 535.131 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S -Q -0 g 0 G -BT -/F62 9.9626 Tf 280.768 506.753 Td [(T)92(able)-250(3:)-310(Data)-250(types)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -130.063 -32.002 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.22 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.22 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ -ET -q -1 0 0 1 436.673 388.689 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 439.811 388.49 Td [(T)]TJ -ET -q -1 0 0 1 445.669 388.689 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 448.807 388.49 Td [(vect)]TJ -ET -q -1 0 0 1 470.356 388.689 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 473.495 388.49 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-312(numbers)-311(of)-312(type)-311(speci\002ed)-312(in)-311(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-312(3)]TJ -0 g 0 G - [(.)-494(The)-312(rank)-312(of)]TJ/F60 9.9626 Tf 274.834 0 Td [(x)]TJ/F62 9.9626 Tf 8.31 0 Td [(must)-311(be)]TJ -283.144 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -82.958 -19.221 Td [(y)]TJ -0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ -ET -q -1 0 0 1 436.673 297.738 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 439.811 297.539 Td [(T)]TJ -ET -q -1 0 0 1 445.669 297.738 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 448.807 297.539 Td [(vect)]TJ -ET -q -1 0 0 1 470.356 297.738 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 473.495 297.539 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-313(numbers)-314(of)-313(type)-313(speci\002ed)-314(in)-313(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-313(3)]TJ -0 g 0 G - [(.)-500(The)-314(rank)-313(of)]TJ/F60 9.9626 Tf 274.898 0 Td [(y)]TJ/F62 9.9626 Tf 8.228 0 Td [(must)-313(be)]TJ -283.126 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.116 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -83.227 -19.22 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 254.607 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 254.408 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ -ET -q -1 0 0 1 324.173 206.786 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 327.311 206.587 Td [(desc)]TJ -ET -q -1 0 0 1 348.86 206.786 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 351.998 206.587 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -222.214 -19.22 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.221 Td [(res)]TJ -0 g 0 G -/F62 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F60 9.9626 Tf 126.33 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.968 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-289(as:)-389(a)-290(number)-290(or)-289(a)-290(rank-one)-289(array)-290(of)-289(the)-290(data)-289(type)-290(indicated)-289(in)]TJ 0 -11.955 Td [(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(2)]TJ -0 g 0 G - [(.)]TJ -0 g 0 G - 141.967 -29.888 Td [(34)]TJ -0 g 0 G -ET - -endstream -endobj -1063 0 obj +% 123 0 obj << -/Type /ObjStm -/N 100 -/First 957 -/Length 10603 ->> -stream -1061 0 127 58 131 115 135 172 1058 229 1065 323 1067 441 139 500 143 558 1064 616 -1069 710 1071 828 147 886 151 943 1068 1000 1073 1094 1075 1212 155 1271 159 1329 163 1387 -1072 1445 1077 1539 1079 1657 167 1715 1076 1771 1083 1865 1080 2013 1081 2159 1085 2307 171 2366 -175 2424 179 2481 183 2538 1086 2596 1082 2655 1089 2749 1091 2867 1087 2925 187 2983 191 3040 -195 3097 1088 3154 1096 3263 1093 3411 1094 3557 1098 3702 199 3761 1095 3819 1103 3913 1100 4052 -1105 4200 204 4258 208 4315 212 4371 1106 4428 1102 4486 1109 4593 1101 4732 1111 4879 1107 4938 -216 4997 1108 5055 1113 5164 1115 5282 220 5340 1112 5397 1124 5478 1116 5662 1117 5808 1118 5952 -1119 6098 1120 6244 1121 6388 1126 6534 224 6593 1099 6651 1123 6710 1131 6857 1122 7014 1128 7161 -1129 7305 1133 7451 1130 7509 1141 7616 1135 7791 1136 7932 1137 8078 1138 8222 1139 8367 1143 8514 -228 8573 1144 8631 1140 8690 1147 8810 1145 8949 1149 9095 1150 9153 1146 9211 1158 9318 1151 9502 -% 1061 0 obj +/D [1063 0 R /XYZ 150.705 300.51 null] +>> +% 1062 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1069 0 obj +<< +/Type /Page +/Contents 1070 0 R +/Resources 1068 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1072 0 R +>> +% 1071 0 obj << -/D [1059 0 R /XYZ 98.895 753.953 null] +/D [1069 0 R /XYZ 98.895 753.953 null] >> % 127 0 obj << -/D [1059 0 R /XYZ 99.895 716.092 null] +/D [1069 0 R /XYZ 99.895 716.092 null] >> % 131 0 obj << -/D [1059 0 R /XYZ 99.895 526.761 null] +/D [1069 0 R /XYZ 99.895 526.761 null] >> % 135 0 obj << -/D [1059 0 R /XYZ 99.895 326.359 null] +/D [1069 0 R /XYZ 99.895 326.359 null] >> -% 1058 0 obj +% 1068 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1065 0 obj +% 1074 0 obj << /Type /Page -/Contents 1066 0 R -/Resources 1064 0 R +/Contents 1075 0 R +/Resources 1073 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1072 0 R >> -% 1067 0 obj +% 1076 0 obj << -/D [1065 0 R /XYZ 149.705 753.953 null] +/D [1074 0 R /XYZ 149.705 753.953 null] >> % 139 0 obj << -/D [1065 0 R /XYZ 150.705 716.092 null] +/D [1074 0 R /XYZ 150.705 716.092 null] >> % 143 0 obj << -/D [1065 0 R /XYZ 150.705 474.131 null] +/D [1074 0 R /XYZ 150.705 474.131 null] >> -% 1064 0 obj +% 1073 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1069 0 obj +% 1078 0 obj << /Type /Page -/Contents 1070 0 R -/Resources 1068 0 R +/Contents 1079 0 R +/Resources 1077 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1072 0 R >> -% 1071 0 obj +% 1080 0 obj << -/D [1069 0 R /XYZ 98.895 753.953 null] +/D [1078 0 R /XYZ 98.895 753.953 null] >> % 147 0 obj << -/D [1069 0 R /XYZ 99.895 716.092 null] +/D [1078 0 R /XYZ 99.895 716.092 null] >> % 151 0 obj << -/D [1069 0 R /XYZ 99.895 376.562 null] +/D [1078 0 R /XYZ 99.895 412.148 null] >> -% 1068 0 obj +% 1081 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/D [1078 0 R /XYZ 99.895 179.104 null] +>> +% 1082 0 obj +<< +/D [1078 0 R /XYZ 99.895 145.139 null] +>> +% 1077 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1073 0 obj +% 1084 0 obj << /Type /Page -/Contents 1074 0 R -/Resources 1072 0 R +/Contents 1085 0 R +/Resources 1083 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1072 0 R >> -% 1075 0 obj +% 1086 0 obj << -/D [1073 0 R /XYZ 149.705 753.953 null] +/D [1084 0 R /XYZ 149.705 753.953 null] >> % 155 0 obj << -/D [1073 0 R /XYZ 150.705 716.092 null] +/D [1084 0 R /XYZ 150.705 716.092 null] >> % 159 0 obj << -/D [1073 0 R /XYZ 150.705 484.709 null] +/D [1084 0 R /XYZ 150.705 484.709 null] >> % 163 0 obj << -/D [1073 0 R /XYZ 150.705 251.325 null] +/D [1084 0 R /XYZ 150.705 251.325 null] >> -% 1072 0 obj +% 1083 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1077 0 obj +% 1088 0 obj << /Type /Page -/Contents 1078 0 R -/Resources 1076 0 R +/Contents 1089 0 R +/Resources 1087 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R +/Parent 1072 0 R >> -% 1079 0 obj +% 1090 0 obj << -/D [1077 0 R /XYZ 98.895 753.953 null] +/D [1088 0 R /XYZ 98.895 753.953 null] >> % 167 0 obj << -/D [1077 0 R /XYZ 99.895 476.15 null] +/D [1088 0 R /XYZ 99.895 476.15 null] >> -% 1076 0 obj +% 1087 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1083 0 obj +% 1094 0 obj << /Type /Page -/Contents 1084 0 R -/Resources 1082 0 R +/Contents 1095 0 R +/Resources 1093 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1062 0 R -/Annots [ 1080 0 R 1081 0 R ] +/Parent 1072 0 R +/Annots [ 1091 0 R 1092 0 R ] >> -% 1080 0 obj +% 1091 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [248.894 164.341 255.868 176.4] +/Rect [233.882 164.341 240.826 176.4] /A << /S /GoTo /D (section.6) >> >> -% 1081 0 obj +% 1092 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.512 128.475 350.485 140.535] +/Rect [343.853 128.475 350.927 140.535] /A << /S /GoTo /D (listing.3) >> >> -% 1085 0 obj +% 1096 0 obj << -/D [1083 0 R /XYZ 149.705 753.953 null] +/D [1094 0 R /XYZ 149.705 753.953 null] >> % 171 0 obj << -/D [1083 0 R /XYZ 150.705 716.092 null] +/D [1094 0 R /XYZ 150.705 716.092 null] >> % 175 0 obj << -/D [1083 0 R /XYZ 150.705 586.94 null] +/D [1094 0 R /XYZ 150.705 586.94 null] >> % 179 0 obj << -/D [1083 0 R /XYZ 150.705 402.59 null] +/D [1094 0 R /XYZ 150.705 402.59 null] >> % 183 0 obj << -/D [1083 0 R /XYZ 150.705 234.114 null] +/D [1094 0 R /XYZ 150.705 234.114 null] >> -% 1086 0 obj +% 1097 0 obj << -/D [1083 0 R /XYZ 170.799 204.012 null] +/D [1094 0 R /XYZ 170.422 204.012 null] >> -% 1082 0 obj +% 1093 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1089 0 obj +% 1100 0 obj << /Type /Page -/Contents 1090 0 R -/Resources 1088 0 R +/Contents 1101 0 R +/Resources 1099 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R +/Parent 1103 0 R >> -% 1091 0 obj +% 1102 0 obj << -/D [1089 0 R /XYZ 98.895 753.953 null] +/D [1100 0 R /XYZ 98.895 753.953 null] >> -% 1087 0 obj +% 1098 0 obj << -/D [1089 0 R /XYZ 99.895 446.997 null] +/D [1100 0 R /XYZ 99.895 446.997 null] >> % 187 0 obj << -/D [1089 0 R /XYZ 99.895 387.147 null] +/D [1100 0 R /XYZ 99.895 387.147 null] >> % 191 0 obj << -/D [1089 0 R /XYZ 99.895 370.604 null] +/D [1100 0 R /XYZ 99.895 370.604 null] >> % 195 0 obj << -/D [1089 0 R /XYZ 99.895 194.093 null] +/D [1100 0 R /XYZ 99.895 194.093 null] >> -% 1088 0 obj +% 1099 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1096 0 obj +% 1107 0 obj << /Type /Page -/Contents 1097 0 R -/Resources 1095 0 R +/Contents 1108 0 R +/Resources 1106 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1093 0 R 1094 0 R ] +/Parent 1103 0 R +/Annots [ 1104 0 R 1105 0 R ] >> -% 1093 0 obj +% 1104 0 obj << /Type /Annot /Subtype /Link @@ -10515,7 +10242,7 @@ stream /Rect [428.968 383.557 435.942 395.616] /A << /S /GoTo /D (table.1) >> >> -% 1094 0 obj +% 1105 0 obj << /Type /Annot /Subtype /Link @@ -10523,126 +10250,126 @@ stream /Rect [428.968 240.08 435.942 252.139] /A << /S /GoTo /D (table.1) >> >> -% 1098 0 obj +% 1109 0 obj << -/D [1096 0 R /XYZ 149.705 753.953 null] +/D [1107 0 R /XYZ 149.705 753.953 null] >> % 199 0 obj << -/D [1096 0 R /XYZ 150.705 610.712 null] +/D [1107 0 R /XYZ 150.705 610.712 null] >> -% 1095 0 obj +% 1106 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1103 0 obj +% 1114 0 obj << /Type /Page -/Contents 1104 0 R -/Resources 1102 0 R +/Contents 1115 0 R +/Resources 1113 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1100 0 R ] +/Parent 1103 0 R +/Annots [ 1111 0 R ] >> -% 1100 0 obj +% 1111 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [127.814 152.385 134.788 164.445] +/Rect [127.344 152.385 134.288 164.445] /A << /S /GoTo /D (listing.4) >> >> -% 1105 0 obj +% 1116 0 obj << -/D [1103 0 R /XYZ 98.895 753.953 null] +/D [1114 0 R /XYZ 98.895 753.953 null] >> % 204 0 obj << -/D [1103 0 R /XYZ 99.895 716.092 null] +/D [1114 0 R /XYZ 99.895 716.092 null] >> % 208 0 obj << -/D [1103 0 R /XYZ 99.895 430.41 null] +/D [1114 0 R /XYZ 99.895 430.41 null] >> % 212 0 obj << -/D [1103 0 R /XYZ 99.895 226.203 null] +/D [1114 0 R /XYZ 99.895 226.203 null] >> -% 1106 0 obj +% 1117 0 obj << -/D [1103 0 R /XYZ 258.62 168.146 null] +/D [1114 0 R /XYZ 255.19 168.146 null] >> -% 1102 0 obj +% 1113 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1109 0 obj +% 1120 0 obj << /Type /Page -/Contents 1110 0 R -/Resources 1108 0 R +/Contents 1121 0 R +/Resources 1119 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1101 0 R ] +/Parent 1103 0 R +/Annots [ 1112 0 R ] >> -% 1101 0 obj +% 1112 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [297.461 580.64 304.435 592.699] +/Rect [297.376 580.64 304.449 592.699] /A << /S /GoTo /D (section.6) >> >> -% 1111 0 obj +% 1122 0 obj << -/D [1109 0 R /XYZ 149.705 753.953 null] +/D [1120 0 R /XYZ 149.705 753.953 null] >> -% 1107 0 obj +% 1118 0 obj << -/D [1109 0 R /XYZ 150.705 665.282 null] +/D [1120 0 R /XYZ 150.705 665.282 null] >> % 216 0 obj << -/D [1109 0 R /XYZ 150.705 613.372 null] +/D [1120 0 R /XYZ 150.705 613.372 null] >> -% 1108 0 obj +% 1119 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R /F59 665 0 R /F67 913 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F75 673 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1113 0 obj +% 1124 0 obj << /Type /Page -/Contents 1114 0 R -/Resources 1112 0 R +/Contents 1125 0 R +/Resources 1123 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R +/Parent 1103 0 R >> -% 1115 0 obj +% 1126 0 obj << -/D [1113 0 R /XYZ 98.895 753.953 null] +/D [1124 0 R /XYZ 98.895 753.953 null] >> % 220 0 obj << -/D [1113 0 R /XYZ 99.895 716.092 null] +/D [1124 0 R /XYZ 99.895 716.092 null] >> -% 1112 0 obj +% 1123 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1124 0 obj +% 1135 0 obj << /Type /Page -/Contents 1125 0 R -/Resources 1123 0 R +/Contents 1136 0 R +/Resources 1134 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1092 0 R -/Annots [ 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R ] +/Parent 1103 0 R +/Annots [ 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R ] >> -% 1116 0 obj +% 1127 0 obj << /Type /Annot /Subtype /Link @@ -10650,7 +10377,7 @@ stream /Rect [428.968 413.274 435.942 425.334] /A << /S /GoTo /D (table.1) >> >> -% 1117 0 obj +% 1128 0 obj << /Type /Annot /Subtype /Link @@ -10658,15 +10385,15 @@ stream /Rect [419.358 345.063 495.412 357.123] /A << /S /GoTo /D (vdata) >> >> -% 1118 0 obj +% 1129 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.755 333.108 388.729 345.168] +/Rect [382.942 333.108 390.016 345.168] /A << /S /GoTo /D (table.1) >> >> -% 1119 0 obj +% 1130 0 obj << /Type /Annot /Subtype /Link @@ -10674,7 +10401,7 @@ stream /Rect [428.968 252.942 435.942 265.002] /A << /S /GoTo /D (table.1) >> >> -% 1120 0 obj +% 1131 0 obj << /Type /Annot /Subtype /Link @@ -10682,41 +10409,41 @@ stream /Rect [419.358 184.731 495.412 196.791] /A << /S /GoTo /D (vdata) >> >> -% 1121 0 obj +% 1132 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.868 172.776 404.842 184.835] +/Rect [398.626 172.776 405.67 184.835] /A << /S /GoTo /D (table.1) >> >> -% 1126 0 obj +% 1137 0 obj << -/D [1124 0 R /XYZ 149.705 753.953 null] +/D [1135 0 R /XYZ 149.705 753.953 null] >> % 224 0 obj << -/D [1124 0 R /XYZ 150.705 716.092 null] +/D [1135 0 R /XYZ 150.705 716.092 null] >> -% 1099 0 obj +% 1110 0 obj << -/D [1124 0 R /XYZ 150.705 558.947 null] +/D [1135 0 R /XYZ 150.705 558.947 null] >> -% 1123 0 obj +% 1134 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1131 0 obj +% 1142 0 obj << /Type /Page -/Contents 1132 0 R -/Resources 1130 0 R +/Contents 1143 0 R +/Resources 1141 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1122 0 R 1128 0 R 1129 0 R ] +/Parent 1145 0 R +/Annots [ 1133 0 R 1139 0 R 1140 0 R ] >> -% 1122 0 obj +% 1133 0 obj << /Type /Annot /Subtype /Link @@ -10724,7 +10451,7 @@ stream /Rect [256.048 690.368 323.106 702.428] /A << /S /GoTo /D (descdata) >> >> -% 1128 0 obj +% 1139 0 obj << /Type /Annot /Subtype /Link @@ -10732,7 +10459,7 @@ stream /Rect [368.549 600.704 444.603 612.764] /A << /S /GoTo /D (vdata) >> >> -% 1129 0 obj +% 1140 0 obj << /Type /Annot /Subtype /Link @@ -10740,25 +10467,25 @@ stream /Rect [344.963 588.749 351.937 600.809] /A << /S /GoTo /D (table.1) >> >> -% 1133 0 obj +% 1144 0 obj << -/D [1131 0 R /XYZ 98.895 753.953 null] +/D [1142 0 R /XYZ 98.895 753.953 null] >> -% 1130 0 obj +% 1141 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1141 0 obj +% 1152 0 obj << /Type /Page -/Contents 1142 0 R -/Resources 1140 0 R +/Contents 1153 0 R +/Resources 1151 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R ] +/Parent 1145 0 R +/Annots [ 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R ] >> -% 1135 0 obj +% 1146 0 obj << /Type /Annot /Subtype /Link @@ -10766,15 +10493,15 @@ stream /Rect [419.358 355.7 495.412 367.76] /A << /S /GoTo /D (vdata) >> >> -% 1136 0 obj +% 1147 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.755 343.745 388.729 355.804] +/Rect [382.942 343.745 390.016 355.804] /A << /S /GoTo /D (table.2) >> >> -% 1137 0 obj +% 1148 0 obj << /Type /Annot /Subtype /Link @@ -10782,15 +10509,15 @@ stream /Rect [419.358 264.018 495.412 276.078] /A << /S /GoTo /D (vdata) >> >> -% 1138 0 obj +% 1149 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.88 252.063 388.854 264.123] +/Rect [373.146 252.063 380.02 264.123] /A << /S /GoTo /D (table.2) >> >> -% 1139 0 obj +% 1150 0 obj << /Type /Annot /Subtype /Link @@ -10798,316 +10525,86 @@ stream /Rect [306.858 172.336 373.916 184.396] /A << /S /GoTo /D (descdata) >> >> -% 1143 0 obj +% 1154 0 obj << -/D [1141 0 R /XYZ 149.705 753.953 null] +/D [1152 0 R /XYZ 149.705 753.953 null] >> % 228 0 obj << -/D [1141 0 R /XYZ 150.705 716.092 null] +/D [1152 0 R /XYZ 150.705 716.092 null] >> -% 1144 0 obj -<< -/D [1141 0 R /XYZ 150.705 499.951 null] ->> -% 1140 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1147 0 obj -<< -/Type /Page -/Contents 1148 0 R -/Resources 1146 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1145 0 R ] ->> -% 1145 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.159 602.697 385.133 614.756] -/A << /S /GoTo /D (table.2) >> ->> -% 1149 0 obj -<< -/D [1147 0 R /XYZ 98.895 753.953 null] ->> -% 1150 0 obj -<< -/D [1147 0 R /XYZ 99.895 512.639 null] ->> -% 1146 0 obj -<< -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1158 0 obj +% 1155 0 obj << -/Type /Page -/Contents 1159 0 R -/Resources 1157 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R ] +/D [1152 0 R /XYZ 150.705 499.951 null] >> % 1151 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 384.684 495.412 396.744] -/A << /S /GoTo /D (vdata) >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] >> endstream endobj -1165 0 obj +1159 0 obj << -/Length 582 +/Length 4450 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ + [(.true.)]TJ 0 g 0 G - 141.968 -567.87 Td [(35)]TJ +/F75 9.9626 Tf -190.225 -31.881 Td [(On)-250(Return)]TJ 0 g 0 G -ET - -endstream -endobj -1172 0 obj -<< -/Length 7777 ->> -stream 0 g 0 G + 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.4)-1000(psb)]TJ -ET -q -1 0 0 1 198.238 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 201.825 706.129 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 233.576 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -238.781 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.459 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(in\002nity)-250(norm)-250(as:)]TJ/F60 9.9626 Tf 117.807 -18.736 Td [(a)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 25.761 0 Td [(\040)]TJ/F62 9.9626 Tf 13.272 0 Td [(max)]TJ/F60 7.5716 Tf 8.355 -7.21 Td [(i)]TJ/F91 10.3811 Tf 12.349 7.21 Td [(j)]TJ/F60 9.9626 Tf 3.298 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F62 9.9626 Tf -206.019 -23.313 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(the)-250(in\002nity-norm)-250(as:)]TJ/F60 9.9626 Tf 63.42 -18.737 Td [(a)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 25.761 0 Td [(\040)]TJ/F62 9.9626 Tf 13.273 0 Td [(max)]TJ/F60 7.5716 Tf 8.354 -7.21 Td [(i)]TJ/F93 10.3811 Tf 12.35 7.21 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F60 9.9626 Tf 3.028 0 Td [(r)-17(e)]TJ/F93 10.3811 Tf 8.17 0 Td [(\050)]TJ/F60 9.9626 Tf 4.443 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F93 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F93 10.3811 Tf 5.066 0 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(j)]TJ/F60 9.9626 Tf 3.058 0 Td [(i)-32(m)]TJ/F93 10.3811 Tf 11.088 0 Td [(\050)]TJ/F60 9.9626 Tf 4.444 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F93 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F93 10.3811 Tf 3.128 0 Td [(\051)]TJ/F67 9.9626 Tf -225.616 -22.974 Td [(psb_geamax\050x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F78 9.9626 Tf 126.33 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ 0.98 0 0 1 124.802 630.413 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 155.612 630.413 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 186.2 630.413 Tm [(unless)-244(the)-244(optional)-244(variab)1(le)]TJ/F131 9.9626 Tf 1 0 0 1 307.484 630.413 Tm [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 383.09 630.413 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 124.802 618.458 Tm [(i\002ed)]TJ 0 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(2)]TJ 0 g 0 G - [-525(info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [(.)]TJ 0 g 0 G - [-525([,global]\051)]TJ -14.944 -11.955 Td [(psb_normi\050x,)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +0 g 0 G + 0.98 0 0 1 124.493 496.913 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)18(es)-200(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 124.802 484.958 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-264(be)-265(necessary)-265(and/or)-265(advisable)-265(to)]TJ 0.98 0 0 1 124.802 473.003 Tm [(compute)-256(multiple)-256(dot)-256(pr)18(oducts)-256(at)-256(the)-256(same)-256(time;)-257(in)-256(this)-256(case,)-256(it)-256(is)-256(possible)]TJ 1 0 0 1 124.802 461.048 Tm [(to)-250(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(desc_a,)]TJ +/F131 9.9626 Tf 52.303 -19.925 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ +0 g 0 G + [(\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(info)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525([,global]\051)]TJ + [-525(psb_gedot\050x1,y1,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0 g 0 G -ET -q -1 0 0 1 179.304 566.399 cm -[]0 d 0 J 0.398 w 0 0 m 286.513 0 l S -Q -BT -/F60 9.9626 Tf 185.556 557.832 Td [(a)-25(m)-40(a)-42(x)-7779(x)]TJ/F59 9.9626 Tf 220.764 0 Td [(Function)]TJ -ET -q -1 0 0 1 179.304 554.046 cm -[]0 d 0 J 0.398 w 0 0 m 286.513 0 l S -Q -BT -/F62 9.9626 Tf 185.282 545.478 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ -ET -q -1 0 0 1 422.639 545.677 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 425.628 545.478 Td [(geamax)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ -ET -q -1 0 0 1 422.639 533.722 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 425.628 533.523 Td [(geamax)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ -ET -q -1 0 0 1 422.639 521.767 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 425.628 521.568 Td [(geamax)]TJ -240.346 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ -ET -q -1 0 0 1 422.639 509.812 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 425.628 509.612 Td [(geamax)]TJ -ET -q -1 0 0 1 179.304 505.827 cm -[]0 d 0 J 0.398 w 0 0 m 286.513 0 l S -Q -0 g 0 G -BT -/F62 9.9626 Tf 280.768 477.448 Td [(T)92(able)-250(4:)-310(Data)-250(types)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -130.063 -30.014 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -18.652 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -18.653 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ -ET -q -1 0 0 1 436.673 362.508 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 439.811 362.308 Td [(T)]TJ -ET -q -1 0 0 1 445.669 362.508 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 448.807 362.308 Td [(vect)]TJ -ET -q -1 0 0 1 470.356 362.508 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 473.495 362.308 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(4)]TJ -0 g 0 G - [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.906 -18.652 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 331.9 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 331.701 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ -ET -q -1 0 0 1 324.173 284.079 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 327.311 283.88 Td [(desc)]TJ -ET -q -1 0 0 1 348.86 284.079 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 351.998 283.88 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -222.214 -18.653 Td [(global)]TJ -0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(Speci\002es)-226(whether)-227(the)-226(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.955 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.319 0 Td [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.true.)]TJ -0 g 0 G -/F59 9.9626 Tf -190.225 -30.607 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -18.653 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(vector)]TJ/F60 9.9626 Tf 128.562 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -181.637 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ -0 g 0 G - 141.968 -29.888 Td [(36)]TJ -0 g 0 G -ET - -endstream -endobj -1177 0 obj -<< -/Length 3043 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(ove)1(r)18(head.)-514(It)-318(may)-318(be)-318(necessary)-317(and/or)-318(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-333(multiple)-333(norms)-332(at)-333(the)-333(same)-333(time;)-374(in)-333(this)-333(case,)-354(it)-332(is)-333(possible)-333(to)]TJ 0 -11.955 Td [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -/F67 9.9626 Tf 52.303 -19.926 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_geamax\050x1,desc_a,info,global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(.false.\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 0 -11.955 Td [(vres\050)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(2)]TJ + 0 -11.956 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(2)]TJ 0 g 0 G [(\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -11117,7 +10614,7 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_geamax\050x2,desc_a,info,global)]TJ + [-525(psb_gedot\050x2,y2,desc_a,info,global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -11136,7 +10633,7 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_geamax\050x3,desc_a,info,global)]TJ + [-525(psb_gedot\050x3,y3,desc_a,info,global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -11146,7 +10643,7 @@ BT 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 -11.955 Td [(call)]TJ 0 g 0 G - [-525(psb_amx\050ctxt,vres\050)]TJ + [-525(psb_sum\050ctxt,vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G @@ -11154,40 +10651,43 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(3)]TJ 0 g 0 G - [(\051\051)]TJ/F62 9.9626 Tf -52.303 -19.926 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communicati)1(on,)-254(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.955 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 124.802 385.332 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(laten)1(cy-)]TJ 1 0 0 1 124.802 373.377 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ 0 g 0 G - 141.968 -402.49 Td [(37)]TJ + 141.968 -282.939 Td [(33)]TJ 0 g 0 G ET endstream endobj -1186 0 obj +1171 0 obj << -/Length 6432 +/Length 8898 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.5)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(This)-256(subr)18(outine)-255(computes)-256(a)-256(series)-255(of)-256(in\002nity)-256(norms)-256(on)-255(the)-256(columns)-256(of)-255(a)-256(dense)]TJ 0 -11.955 Td [(matrix)]TJ/F60 9.9626 Tf 31.785 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(:)]TJ/F60 9.9626 Tf 88.539 -11.955 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.294 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.042 0 Td [(\040)]TJ/F62 9.9626 Tf 13.273 0 Td [(max)]TJ/F60 7.5716 Tf 7.759 -7.336 Td [(k)]TJ/F91 10.3811 Tf 12.944 7.336 Td [(j)]TJ/F60 9.9626 Tf 3.298 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(,)]TJ/F60 9.9626 Tf 4.206 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(gedots)-250(\227)-250(Generalized)-250(Dot)-250(Product)]TJ/F84 9.9626 Tf 1.014 0 0 1 150.396 687.165 Tm [(This)-246(subr)17(outine)-246(computes)-246(a)-247(se)1(ries)-247(of)-246(dot)-246(pr)17(oducts)-246(among)-246(the)-247(columns)-246(of)-246(two)]TJ 1 0 0 1 150.705 675.21 Tm [(dense)-250(matrices)]TJ/F78 9.9626 Tf 68.208 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(:)]TJ/F78 9.9626 Tf 24.807 -13.101 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-12(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F78 7.5716 Tf 4.343 4.114 Td [(T)]TJ/F78 9.9626 Tf 5.525 -4.114 Td [(y)]TJ/F181 10.3811 Tf 5.23 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.705 645.233 Tm [(If)-240(the)-240(matrices)-240(ar)19(e)-240(complex,)-243(then)-240(the)-240(usual)-239(convention)-240(applies,)-243(i.e.)-311(the)-240(conjugate)]TJ 1.007 0 0 1 150.705 633.278 Tm [(transpose)-249(of)]TJ/F78 9.9626 Tf 1 0 0 1 207.714 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 215.413 633.278 Tm [(is)-249(used.)-309(If)]TJ/F78 9.9626 Tf 1 0 0 1 261.437 633.278 Tm [(x)]TJ/F84 9.9626 Tf 1.007 0 0 1 269.136 633.278 Tm [(and)]TJ/F78 9.9626 Tf 1 0 0 1 288.74 633.278 Tm [(y)]TJ/F84 9.9626 Tf 1.007 0 0 1 296.34 633.278 Tm [(ar)18(e)-249(of)-248(rank)-249(one,)-249(then)]TJ/F78 9.9626 Tf 1 0 0 1 390.04 633.278 Tm [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf 1.007 0 0 1 404.704 633.278 Tm [(is)-249(a)-248(scalar)73(,)-248(else)-249(it)-249(is)-248(a)]TJ 1 0 0 1 150.705 621.323 Tm [(rank)-250(one)-250(array)111(.)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -195.028 -22.296 Td [(call)]TJ +/F131 9.9626 Tf 20.174 -11.955 Td [(call)]TJ 0 g 0 G - [-525(psb_geamaxs\050res,)]TJ + [-525(psb_gedots\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(desc_a,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -11198,159 +10698,211 @@ BT 0 g 0 G ET q -1 0 0 1 177.192 626.591 cm -[]0 d 0 J 0.398 w 0 0 m 290.737 0 l S +1 0 0 1 230.392 595.704 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 183.195 618.023 Td [(r)-17(e)-25(s)-8868(x)]TJ/F59 9.9626 Tf 221.013 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.394 587.136 Td [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf 12.17 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 93.135 0 Td [(Subroutine)]TJ ET q -1 0 0 1 177.192 614.237 cm -[]0 d 0 J 0.398 w 0 0 m 290.737 0 l S +1 0 0 1 230.392 583.351 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 183.17 605.669 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 574.783 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 420.527 605.868 cm +1 0 0 1 373.603 574.982 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 605.669 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 574.783 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 420.527 593.913 cm +1 0 0 1 373.603 563.027 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 593.714 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 562.828 Td [(gedots)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 420.527 581.958 cm +1 0 0 1 373.603 551.072 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 581.759 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 550.872 Td [(gedots)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 420.527 570.003 cm +1 0 0 1 373.603 539.116 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 423.516 569.804 Td [(geamaxs)]TJ +/F84 9.9626 Tf 376.592 538.917 Td [(gedots)]TJ ET q -1 0 0 1 177.192 566.018 cm -[]0 d 0 J 0.398 w 0 0 m 290.737 0 l S +1 0 0 1 230.392 535.131 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 280.768 537.639 Td [(T)92(able)-250(5:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 506.753 Td [(T)92(able)-250(3:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -32.002 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.22 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -19.926 Td [(x)]TJ + 0 -19.22 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 388.49 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 388.49 Tm [(psb)]TJ ET q -1 0 0 1 436.673 415.699 cm +1 0 0 1 436.673 388.689 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 415.5 Td [(T)]TJ +/F131 9.9626 Tf 439.811 388.49 Td [(T)]TJ ET q -1 0 0 1 445.669 415.699 cm +1 0 0 1 445.669 388.689 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 415.5 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 388.49 Td [(vect)]TJ ET q -1 0 0 1 470.356 415.699 cm +1 0 0 1 470.356 388.689 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 415.5 Td [(type)]TJ +/F131 9.9626 Tf 473.495 388.49 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 175.611 376.535 Tm [(containing)-270(numbers)-269(of)-270(type)-270(speci\002ed)-270(in)-269(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(5)]TJ + [-270(3)]TJ 0 g 0 G - [(.)]TJ + [(.)-378(The)-270(rank)-269(of)]TJ/F78 9.9626 Tf 1 0 0 1 450.52 376.535 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.466 376.535 Tm [(must)-270(be)]TJ 1 0 0 1 175.611 364.58 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -82.958 -19.221 Td [(y)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(desc)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 297.539 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 1 0 0 1 420.354 297.539 Tm [(psb)]TJ ET q -1 0 0 1 171.218 383.818 cm +1 0 0 1 436.673 297.738 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 439.811 297.539 Td [(T)]TJ +ET +q +1 0 0 1 445.669 297.738 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 448.807 297.539 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 297.738 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 473.495 297.539 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 175.611 285.583 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-247(T)94(able)]TJ +0 0 1 rg 0 0 1 RG + [-246(3)]TJ +0 g 0 G + [(.)-314(The)-246(rank)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 436.643 285.583 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 444.155 285.583 Tm [(must)-246(be)-247(the)]TJ 1 0 0 1 175.611 273.628 Tm [(same)-250(of)]TJ/F78 9.9626 Tf 36.807 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -66.919 -19.22 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 254.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 383.619 Td [(a)]TJ +/F75 9.9626 Tf 174.207 254.408 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 324.173 335.998 cm +1 0 0 1 324.173 206.786 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 335.798 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 206.587 Td [(desc)]TJ ET q -1 0 0 1 348.86 335.998 cm +1 0 0 1 348.86 206.786 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 335.798 Td [(type)]TJ +/F131 9.9626 Tf 351.998 206.587 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.214 -19.22 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19.925 Td [(res)]TJ + 0 -19.221 Td [(res)]TJ +0 g 0 G +/F84 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(dot)-250(pr)18(oduct)-250(of)-250(vectors)]TJ/F78 9.9626 Tf 126.33 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -151.968 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.431 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 1.02 0 0 1 175.611 132.281 Tm [(Speci\002ed)-244(as:)-304(a)-244(number)-245(or)-244(a)-244(rank-one)-245(array)-244(of)-244(the)-245(data)-244(type)-244(indicated)-245(in)]TJ 1 0 0 1 175.303 120.326 Tm [(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(2)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G + 142.276 -29.888 Td [(34)]TJ +0 g 0 G +ET + +endstream +endobj +1176 0 obj +<< +/Length 582 +>> +stream +0 g 0 G 0 g 0 G -/F62 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(the)-250(columns)-250(of)]TJ/F60 9.9626 Tf 166.26 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.82 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.956 Td [(Speci\002ed)-330(as:)-470(a)-330(number)-330(or)-330(a)-330(rank-one)-330(array)-329(of)-330(long)-330(pr)18(ecision)-330(r)18(eal)-330(num-)]TJ 0 -11.955 Td [(bers.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +BT +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -89.943 Td [(38)]TJ + 142.357 -567.87 Td [(35)]TJ 0 g 0 G ET endstream endobj -1194 0 obj +1183 0 obj << -/Length 7404 +/Length 7939 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.6)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.4)-1000(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 206.349 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -211.554 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.46 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 125.989 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F91 10.3811 Tf 25.352 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.007 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F62 9.9626 Tf -195.526 -21.269 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 71.974 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F91 10.3811 Tf 25.353 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F93 10.3811 Tf 8.17 0 Td [(\050)]TJ/F60 9.9626 Tf 4.443 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F93 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(k)]TJ/F60 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F93 10.3811 Tf 11.088 0 Td [(\050)]TJ/F60 9.9626 Tf 4.444 0 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F67 9.9626 Tf -216.928 -19.411 Td [(psb_geasum\050x,)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(normi)-250(\227)-250(In\002nity-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf -51.429 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 233.576 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -238.472 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.459 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(in\002nity)-250(norm)-250(as:)]TJ/F78 9.9626 Tf 117.807 -18.736 Td [(a)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 25.76 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 8.354 -7.21 Td [(i)]TJ/F179 10.3811 Tf 12.35 7.21 Td [(j)]TJ/F78 9.9626 Tf 3.298 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(j)]TJ/F84 9.9626 Tf -206.019 -23.313 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(the)-250(in\002nity-norm)-250(as:)]TJ/F78 9.9626 Tf 63.42 -18.737 Td [(a)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 25.761 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 8.354 -7.21 Td [(i)]TJ/F181 10.3811 Tf 12.35 7.21 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F78 9.9626 Tf 3.028 0 Td [(r)-17(e)]TJ/F181 10.3811 Tf 8.169 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F181 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F181 10.3811 Tf 5.066 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(j)]TJ/F78 9.9626 Tf 3.059 0 Td [(i)-32(m)]TJ/F181 10.3811 Tf 11.088 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F181 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F181 10.3811 Tf 3.128 0 Td [(\051)]TJ/F131 9.9626 Tf -225.616 -22.974 Td [(psb_geamax\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(desc_a,)]TJ @@ -11359,7 +10911,7 @@ BT [-525(info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525([,global]\051)-190(psb_norm1\050x,)]TJ + [-525([,global]\051)]TJ -14.944 -11.955 Td [(psb_normi\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(desc_a,)]TJ @@ -11374,170 +10926,170 @@ BT 0 g 0 G ET q -1 0 0 1 128.44 576.025 cm -[]0 d 0 J 0.398 w 0 0 m 286.622 0 l S +1 0 0 1 179.304 566.399 cm +[]0 d 0 J 0.398 w 0 0 m 286.513 0 l S Q BT -/F60 9.9626 Tf 134.691 567.457 Td [(a)-25(s)-25(u)-25(m)-7810(x)]TJ/F59 9.9626 Tf 220.765 0 Td [(Function)]TJ +/F78 9.9626 Tf 185.556 557.832 Td [(a)-25(m)-40(a)-42(x)-7779(x)]TJ/F75 9.9626 Tf 220.764 0 Td [(Function)]TJ ET q -1 0 0 1 128.44 563.671 cm -[]0 d 0 J 0.398 w 0 0 m 286.622 0 l S -Q +1 0 0 1 179.304 554.046 cm +[]0 d 0 J 0.398 w 0 0 m 286.513 0 l S +Q BT -/F62 9.9626 Tf 134.417 555.103 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 185.282 545.478 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 371.775 555.303 cm +1 0 0 1 422.639 545.677 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 555.103 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 425.628 545.478 Td [(geamax)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 371.775 543.347 cm +1 0 0 1 422.639 533.722 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 543.148 Td [(geasum)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 425.628 533.523 Td [(geamax)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 371.775 531.392 cm +1 0 0 1 422.639 521.767 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 531.193 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 425.628 521.568 Td [(geamax)]TJ -240.346 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 371.775 519.437 cm +1 0 0 1 422.639 509.812 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 374.763 519.238 Td [(geasum)]TJ +/F84 9.9626 Tf 425.628 509.612 Td [(geamax)]TJ ET q -1 0 0 1 128.44 515.452 cm -[]0 d 0 J 0.398 w 0 0 m 286.622 0 l S +1 0 0 1 179.304 505.827 cm +[]0 d 0 J 0.398 w 0 0 m 286.513 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 487.074 Td [(T)92(able)-250(6:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 477.448 Td [(T)92(able)-250(4:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -33.561 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -30.014 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.665 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -18.652 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -19.666 Td [(x)]TJ + 0 -18.653 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 362.308 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 362.308 Tm [(psb)]TJ ET q -1 0 0 1 385.864 366.56 cm +1 0 0 1 436.673 362.508 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 366.361 Td [(T)]TJ +/F131 9.9626 Tf 439.811 362.308 Td [(T)]TJ ET q -1 0 0 1 394.86 366.56 cm +1 0 0 1 445.669 362.508 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 366.361 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 362.308 Td [(vect)]TJ ET q -1 0 0 1 419.547 366.56 cm +1 0 0 1 470.356 362.508 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 366.361 Td [(type)]TJ +/F131 9.9626 Tf 473.495 362.308 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(6)]TJ + [-250(4)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.666 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -18.652 Td [(desc)]TJ ET q -1 0 0 1 120.408 334.939 cm +1 0 0 1 171.218 331.9 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 334.74 Td [(a)]TJ +/F75 9.9626 Tf 174.207 331.701 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 273.363 287.119 cm +1 0 0 1 324.173 284.079 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 286.919 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 283.88 Td [(desc)]TJ ET q -1 0 0 1 298.05 287.119 cm +1 0 0 1 348.86 284.079 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 286.919 Td [(type)]TJ +/F131 9.9626 Tf 351.998 283.88 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.665 Td [(global)]TJ +/F75 9.9626 Tf -222.214 -18.653 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.764 0 Td [(Speci\002es)-226(whether)-226(the)-227(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.955 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.318 0 Td [(global)]TJ +/F84 9.9626 Tf 0.994 0 0 1 184.468 265.227 Tm [(Speci\002es)-250(whether)-250(t)1(he)-250(computation)-250(should)-250(include)-250(the)-249(global)-250(r)18(eduction)]TJ 1 0 0 1 175.611 253.272 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.319 0 Td [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -190.225 -31.621 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -190.225 -30.607 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19.666 Td [(Function)-250(value)]TJ + 0 -18.653 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(vector)]TJ/F60 9.9626 Tf 102.161 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -155.236 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ +/F84 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(vector)]TJ/F78 9.9626 Tf 128.562 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0.98 0 0 1 175.611 144.236 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 206.422 144.236 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 237.009 144.236 Tm [(unless)-244(the)-244(optional)-244(variable)]TJ/F131 9.9626 Tf 1 0 0 1 358.293 144.236 Tm [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 433.899 144.236 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 175.611 132.281 Tm [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G - 141.968 -29.888 Td [(39)]TJ + 141.968 -29.888 Td [(36)]TJ 0 g 0 G ET endstream endobj -1199 0 obj +1188 0 obj << -/Length 3046 +/Length 3133 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(over)18(head.)-513(It)-318(may)-318(be)-318(necessary)-318(and/or)-317(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-333(multiple)-333(norms)-333(at)-332(the)-333(same)-333(time;)-374(in)-333(this)-333(case,)-354(it)-333(i)1(s)-333(possible)-333(to)]TJ 0 -11.955 Td [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ + 0.98 0 0 1 124.493 616.465 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)18(es)-200(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 124.802 604.51 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-264(be)-265(necessary)-265(and/or)-265(advisable)-265(to)]TJ 1.02 0 0 1 124.802 592.555 Tm [(compute)-287(multiple)-287(norms)-287(at)-287(the)-287(same)-287(time;)-308(in)-286(this)-287(case,)-298(it)-287(is)-287(possible)-287(to)]TJ 1 0 0 1 124.802 580.6 Tm [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F67 9.9626 Tf 20.922 -19.926 Td [(vres\050)]TJ +/F131 9.9626 Tf 52.303 -19.926 Td [(vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G @@ -11549,14 +11101,14 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_geasum\050x1,desc_a,info,global)]TJ + [-525(psb_geamax\050x1,desc_a,info,global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.false.\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 31.382 -11.955 Td [(vres\050)]TJ + 0 -11.955 Td [(vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(2)]TJ 0 g 0 G @@ -11568,7 +11120,7 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_geasum\050x2,desc_a,info,global)]TJ + [-525(psb_geamax\050x2,desc_a,info,global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -11587,7 +11139,7 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_geasum\050x3,desc_a,info,global)]TJ + [-525(psb_geamax\050x3,desc_a,info,global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -11597,7 +11149,7 @@ BT 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG 0 -11.955 Td [(call)]TJ 0 g 0 G - [-525(psb_sum\050ctxt,vres\050)]TJ + [-525(psb_amx\050ctxt,vres\050)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(1)]TJ 0 g 0 G @@ -11605,36 +11157,36 @@ BT 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG [(3)]TJ 0 g 0 G - [(\051\051)]TJ/F62 9.9626 Tf -52.304 -19.926 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communication,)-253(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.955 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 124.802 504.884 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(laten)1(cy-)]TJ 1 0 0 1 124.802 492.928 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ 0 g 0 G - 141.968 -402.49 Td [(40)]TJ + 141.968 -402.49 Td [(37)]TJ 0 g 0 G ET endstream endobj -1207 0 obj +1197 0 obj << -/Length 7502 +/Length 6489 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.7)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.5)-1000(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -20.192 Td [(This)-216(subr)18(outine)-217(computes)-216(a)-217(series)-216(of)-216(1-norms)-217(on)-216(the)-217(columns)-216(of)-216(a)-217(dense)-216(matrix)]TJ/F60 9.9626 Tf 0.294 -11.955 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(:)]TJ/F60 9.9626 Tf 120.031 -13.856 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)]TJ/F62 9.9626 Tf 13.273 0 Td [(max)]TJ/F60 7.5716 Tf 7.76 -7.335 Td [(k)]TJ/F91 10.3811 Tf 12.944 7.335 Td [(j)]TJ/F60 9.9626 Tf 3.298 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.273 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(,)]TJ/F60 9.9626 Tf 4.206 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(j)]TJ/F62 9.9626 Tf -215.202 -24.535 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 206.349 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -211.554 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.46 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 125.227 -23.185 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.293 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.007 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F62 9.9626 Tf -196.039 -23.185 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F60 9.9626 Tf 71.212 -23.185 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.294 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F93 10.3811 Tf 8.169 0 Td [(\050)]TJ/F60 9.9626 Tf 4.444 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F93 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(k)]TJ/F60 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F93 10.3811 Tf 11.088 0 Td [(\050)]TJ/F60 9.9626 Tf 4.443 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(geamaxs)-250(\227)-250(Generalized)-250(In\002nity)-250(Norm)]TJ/F84 9.9626 Tf 1.003 0 0 1 150.396 687.165 Tm [(This)-250(subr)18(outine)-250(computes)-250(a)-251(series)-250(of)-250(in\002nity)-250(norms)-250(on)-250(the)-250(columns)-251(of)-250(a)-250(dense)]TJ 1 0 0 1 150.705 675.21 Tm [(matrix)]TJ/F78 9.9626 Tf 31.785 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(:)]TJ/F78 9.9626 Tf 88.539 -11.955 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.294 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.042 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 7.759 -7.336 Td [(k)]TJ/F179 10.3811 Tf 12.944 7.336 Td [(j)]TJ/F78 9.9626 Tf 3.298 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(k)]TJ/F84 9.9626 Tf 4.598 0 Td [(,)]TJ/F78 9.9626 Tf 4.206 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -212.21 -21.96 Td [(call)]TJ +/F131 9.9626 Tf -195.028 -22.296 Td [(call)]TJ 0 g 0 G - [-525(psb_geasums\050res,)]TJ + [-525(psb_geamaxs\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(x,)]TJ @@ -11649,454 +11201,443 @@ BT 0 g 0 G ET q -1 0 0 1 126.328 514.627 cm -[]0 d 0 J 0.398 w 0 0 m 290.846 0 l S +1 0 0 1 177.192 626.591 cm +[]0 d 0 J 0.398 w 0 0 m 290.737 0 l S Q BT -/F60 9.9626 Tf 132.33 506.059 Td [(r)-17(e)-25(s)-8868(x)]TJ/F59 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 183.195 618.023 Td [(r)-17(e)-25(s)-8868(x)]TJ/F75 9.9626 Tf 221.013 0 Td [(Subroutine)]TJ ET q -1 0 0 1 126.328 502.274 cm -[]0 d 0 J 0.398 w 0 0 m 290.846 0 l S +1 0 0 1 177.192 614.237 cm +[]0 d 0 J 0.398 w 0 0 m 290.737 0 l S Q BT -/F62 9.9626 Tf 132.305 493.706 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 183.17 605.669 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 369.663 493.905 cm +1 0 0 1 420.527 605.868 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 493.706 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 423.516 605.669 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 369.663 481.95 cm +1 0 0 1 420.527 593.913 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 481.751 Td [(geasums)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 423.516 593.714 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 369.663 469.995 cm +1 0 0 1 420.527 581.958 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 469.795 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 423.516 581.759 Td [(geamaxs)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 369.663 458.04 cm +1 0 0 1 420.527 570.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.651 457.84 Td [(geasums)]TJ +/F84 9.9626 Tf 423.516 569.804 Td [(geamaxs)]TJ ET q -1 0 0 1 126.328 454.054 cm -[]0 d 0 J 0.398 w 0 0 m 290.846 0 l S +1 0 0 1 177.192 566.018 cm +[]0 d 0 J 0.398 w 0 0 m 290.737 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 425.676 Td [(T)92(able)-250(7:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 280.768 537.639 Td [(T)92(able)-250(5:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -37.636 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.46 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.459 Td [(x)]TJ + 0 -19.926 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 415.5 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 415.5 Tm [(psb)]TJ ET q -1 0 0 1 385.864 295.5 cm +1 0 0 1 436.673 415.699 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 295.3 Td [(T)]TJ +/F131 9.9626 Tf 439.811 415.5 Td [(T)]TJ ET q -1 0 0 1 394.86 295.5 cm +1 0 0 1 445.669 415.699 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 295.3 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 415.5 Td [(vect)]TJ ET q -1 0 0 1 419.547 295.5 cm +1 0 0 1 470.356 415.699 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 295.3 Td [(type)]TJ +/F131 9.9626 Tf 473.495 415.5 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(7)]TJ + [-250(5)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.459 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(desc)]TJ ET q -1 0 0 1 120.408 261.085 cm +1 0 0 1 171.218 383.818 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 260.886 Td [(a)]TJ +/F75 9.9626 Tf 174.207 383.619 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 273.363 213.264 cm +1 0 0 1 324.173 335.998 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 213.065 Td [(desc)]TJ +/F131 9.9626 Tf 327.311 335.798 Td [(desc)]TJ ET q -1 0 0 1 298.05 213.264 cm +1 0 0 1 348.86 335.998 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 213.065 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F131 9.9626 Tf 351.998 335.798 Td [(type)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -22.459 Td [(On)-250(Return)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G +/F75 9.9626 Tf -222.214 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G - 0 -22.46 Td [(res)]TJ -0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F60 9.9626 Tf 176.182 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Short)-255(as:)-320(a)-255(long)-254(pr)18(ecision)-255(r)18(eal)-255(number)74(.)-325(Speci\002ed)-255(as:)-320(a)-254(long)-255(pr)18(ecision)-255(r)18(eal)]TJ 0 -11.955 Td [(number)74(.)]TJ -0 g 0 G - 141.968 -29.888 Td [(41)]TJ -0 g 0 G -ET - -endstream -endobj -1212 0 obj -<< -/Length 583 ->> -stream 0 g 0 G + 0 -19.925 Td [(res)]TJ 0 g 0 G +/F84 9.9626 Tf 18.261 0 Td [(is)-250(the)-250(in\002nity)-250(norm)-250(of)-250(the)-250(columns)-250(of)]TJ/F78 9.9626 Tf 166.26 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.82 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.981 0 0 1 175.611 260.082 Tm [(Speci\002ed)-255(as:)-316(a)-255(number)-255(or)-254(a)-255(rank-one)-255(array)-255(of)-255(long)-254(pr)18(ecision)-255(r)18(eal)-254(numbers.)]TJ 0 g 0 G -BT -/F59 9.9626 Tf 150.705 706.129 Td [(info)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 240.157 Tm [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -567.87 Td [(42)]TJ + 142.356 -101.898 Td [(38)]TJ 0 g 0 G ET endstream endobj -1219 0 obj +1205 0 obj << -/Length 6687 +/Length 7563 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.8)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.6)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -20.076 Td [(This)-250(function)-250(computes)-250(the)-250(2-norm)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 206.349 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -211.554 -11.955 Td [(If)]TJ/F60 9.9626 Tf 9.46 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F60 9.9626 Tf 122.551 -25.46 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.788 0 Td [(2)]TJ/F91 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ -ET -q -1 0 0 1 287.432 658.569 cm -[]0 d 0 J 0.408 w 0 0 m 16.592 0 l S -Q -BT -/F60 9.9626 Tf 287.726 648.638 Td [(x)]TJ/F60 7.5716 Tf 5.399 2.88 Td [(T)]TJ/F60 9.9626 Tf 5.694 -2.88 Td [(x)]TJ/F62 9.9626 Tf -198.924 -23.065 Td [(else)-250(if)]TJ/F60 9.9626 Tf 28.159 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F60 9.9626 Tf 103.113 -25.46 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.789 0 Td [(2)]TJ/F91 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ -ET -q -1 0 0 1 286.694 610.044 cm -[]0 d 0 J 0.408 w 0 0 m 18.069 0 l S -Q -BT -/F60 9.9626 Tf 286.988 600.113 Td [(x)]TJ/F60 7.5716 Tf 5.588 2.88 Td [(H)]TJ/F60 9.9626 Tf 6.982 -2.88 Td [(x)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf -51.429 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 206.348 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -211.246 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.46 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 125.989 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F179 10.3811 Tf 25.352 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.007 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F84 9.9626 Tf -195.526 -21.269 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 71.974 -21.269 Td [(a)-25(s)-25(u)-25(m)]TJ/F179 10.3811 Tf 25.353 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F181 10.3811 Tf 8.17 0 Td [(\050)]TJ/F78 9.9626 Tf 4.443 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F181 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F181 10.3811 Tf 11.088 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F131 9.9626 Tf -216.928 -19.411 Td [(psb_geasum\050x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525([,global]\051)-190(psb_norm1\050x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525([,global]\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 128.689 575.464 cm -[]0 d 0 J 0.398 w 0 0 m 286.124 0 l S +1 0 0 1 128.44 576.025 cm +[]0 d 0 J 0.398 w 0 0 m 286.622 0 l S Q BT -/F60 9.9626 Tf 134.791 566.896 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.788 0 Td [(2)]TJ/F60 9.9626 Tf 82.505 0 Td [(x)]TJ/F59 9.9626 Tf 120.621 0 Td [(Function)]TJ +/F78 9.9626 Tf 134.691 567.457 Td [(a)-25(s)-25(u)-25(m)-7810(x)]TJ/F75 9.9626 Tf 220.765 0 Td [(Function)]TJ ET q -1 0 0 1 128.689 563.111 cm -[]0 d 0 J 0.398 w 0 0 m 286.124 0 l S +1 0 0 1 128.44 563.671 cm +[]0 d 0 J 0.398 w 0 0 m 286.622 0 l S Q BT -/F62 9.9626 Tf 134.667 554.543 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 134.417 555.103 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 372.024 554.742 cm +1 0 0 1 371.775 555.303 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 554.543 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 374.763 555.103 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 372.024 542.787 cm +1 0 0 1 371.775 543.347 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 542.588 Td [(genrm2)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 374.763 543.148 Td [(geasum)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 372.024 530.832 cm +1 0 0 1 371.775 531.392 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 530.632 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 374.763 531.193 Td [(geasum)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 372.024 518.876 cm +1 0 0 1 371.775 519.437 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.012 518.677 Td [(genrm2)]TJ +/F84 9.9626 Tf 374.763 519.238 Td [(geasum)]TJ ET q -1 0 0 1 128.689 514.891 cm -[]0 d 0 J 0.398 w 0 0 m 286.124 0 l S +1 0 0 1 128.44 515.452 cm +[]0 d 0 J 0.398 w 0 0 m 286.622 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 486.513 Td [(T)92(able)-250(8:)-310(Data)-250(types)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf -115.119 -27.631 Td [(psb_genrm2\050x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525([,global]\051)]TJ -14.944 -11.955 Td [(psb_norm2\050x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 229.958 487.074 Td [(T)92(able)-250(6:)-310(Data)-250(types)]TJ 0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525([,global]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -36.169 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -33.561 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.221 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.665 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.221 Td [(x)]TJ + 0 -19.666 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 366.361 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 366.361 Tm [(psb)]TJ ET q -1 0 0 1 385.864 318.695 cm +1 0 0 1 385.864 366.56 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 318.495 Td [(T)]TJ +/F131 9.9626 Tf 389.002 366.361 Td [(T)]TJ ET q -1 0 0 1 394.86 318.695 cm +1 0 0 1 394.86 366.56 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 318.495 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 366.361 Td [(vect)]TJ ET q -1 0 0 1 419.547 318.695 cm +1 0 0 1 419.547 366.56 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 318.495 Td [(type)]TJ +/F131 9.9626 Tf 422.685 366.361 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(8)]TJ + [-250(6)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.221 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.666 Td [(desc)]TJ ET q -1 0 0 1 120.408 284.518 cm +1 0 0 1 120.408 334.939 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 284.319 Td [(a)]TJ +/F75 9.9626 Tf 123.397 334.74 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 273.363 236.698 cm +1 0 0 1 273.363 287.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 236.499 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 286.919 Td [(desc)]TJ ET q -1 0 0 1 298.05 236.698 cm +1 0 0 1 298.05 287.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 236.499 Td [(type)]TJ +/F131 9.9626 Tf 301.189 286.919 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -22.221 Td [(global)]TJ +/F75 9.9626 Tf -222.215 -19.665 Td [(global)]TJ 0 g 0 G -/F62 9.9626 Tf 33.764 0 Td [(Speci\002es)-226(whether)-226(the)-227(computation)-226(should)-226(include)-227(the)-226(global)-226(r)18(eduction)]TJ -8.857 -11.956 Td [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F67 9.9626 Tf 165.318 0 Td [(global)]TJ +/F84 9.9626 Tf 0.994 0 0 1 133.659 267.254 Tm [(Speci\002es)-250(whether)-249(the)-250(computation)-250(should)-250(include)-249(the)-250(global)-250(r)18(eduction)]TJ 1 0 0 1 124.802 255.299 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -190.225 -34.176 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -190.225 -31.621 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.666 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(vector)]TJ/F78 9.9626 Tf 102.161 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0.98 0 0 1 124.802 144.236 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 155.612 144.236 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 186.2 144.236 Tm [(unless)-244(the)-244(optional)-244(variab)1(le)]TJ/F131 9.9626 Tf 1 0 0 1 307.484 144.236 Tm [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 383.09 144.236 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 124.802 132.281 Tm [(i\002ed)]TJ 0 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(43)]TJ + 141.968 -29.888 Td [(39)]TJ 0 g 0 G ET endstream endobj -1225 0 obj +1210 0 obj << -/Length 4322 +/Length 3137 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(Function)-250(V)111(alue)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 73.882 0 Td [(is)-250(the)-250(2-norm)-250(of)-250(vector)]TJ/F60 9.9626 Tf 102.161 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -156.342 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.133 0 Td [(global)]TJ/F62 9.9626 Tf 30.675 0 Td [(unless)-190(the)-190(optional)-190(variable)]TJ/F67 9.9626 Tf 121.612 0 Td [(global)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G - [(.false.)]TJ/F62 9.9626 Tf 75.118 0 Td [(has)-190(been)-190(spec-)]TJ -258.538 -11.955 Td [(i\002ed)]TJ 0 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ + 0.98 0 0 1 175.303 616.465 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)19(es)-201(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 175.611 604.51 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-265(be)-264(necessary)-265(and/or)-265(advisable)-265(to)]TJ 1.02 0 0 1 175.611 592.555 Tm [(compute)-287(multiple)-287(norms)-287(at)-287(the)-287(same)-287(time;)-308(in)-287(thi)1(s)-287(case,)-298(it)-287(is)-287(possible)-287(to)]TJ 1 0 0 1 175.611 580.6 Tm [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F131 9.9626 Tf 20.922 -19.926 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-500(The)-190(computation)-190(of)-190(a)-190(global)-190(r)18(esult)-190(r)18(equir)18(es)-190(a)-190(global)-190(communication,)-202(which)]TJ 12.453 -11.955 Td [(entails)-318(a)-318(signi\002cant)-318(over)18(head.)-513(It)-318(may)-318(be)-318(necessary)-318(and/or)-317(advisable)-318(to)]TJ 0 -11.955 Td [(compute)-333(multiple)-333(norms)-333(at)-332(the)-333(same)-333(time;)-374(in)-333(this)-333(case,)-354(it)-332(is)-333(possible)-333(to)]TJ 0 -11.955 Td [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 24.981 -17.933 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(1)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ -ET -q -1 0 0 1 278.034 495.12 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 281.627 494.921 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(1)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ -ET -q -1 0 0 1 367.96 495.12 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 371.922 494.921 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(2)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ -ET -q -1 0 0 1 278.034 483.165 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 281.627 482.966 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(2)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ -ET -q -1 0 0 1 367.96 483.165 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 371.922 482.966 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(3)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ -ET -q -1 0 0 1 278.034 471.21 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 281.627 471.011 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(3)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ -ET -q -1 0 0 1 367.96 471.21 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 371.922 471.011 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -170.658 -11.956 Td [(c)-175(a)-175(l)-174(l)-831(p)-56(s)-56(b)]TJ -ET -q -1 0 0 1 247.952 459.255 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 251.497 459.055 Td [(n)-56(r)-56(m)-55(2)-190(\050)-264(c)-132(t)-131(x)-131(t)-438(,)-283(v)-107(r)-107(e)-108(s)-300(\050)-193(1)-193(:)-193(3)-193(\051)-193(\051)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -75.886 -21.917 Td [(In)-253(this)-252(way)-253(the)-253(global)-253(communication,)-253(which)-253(for)-252(small)-253(sizes)-253(is)-252(a)-253(latency-)]TJ 0 -11.956 Td [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ + [-525(psb_geasum\050x1,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G - 141.968 -334.744 Td [(44)]TJ + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -ET - -endstream -endobj -1238 0 obj -<< -/Length 6244 + 31.382 -11.955 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(2)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_geasum\050x2,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 0 -11.955 Td [(vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(3)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_geasum\050x3,desc_a,info,global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(.false.\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -11.955 Td [(call)]TJ +0 g 0 G + [-525(psb_sum\050ctxt,vres\050)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ +0 g 0 G + [(:)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(3)]TJ +0 g 0 G + [(\051\051)]TJ/F84 9.9626 Tf 1.007 0 0 1 175.611 504.884 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(latency-)]TJ 1 0 0 1 175.611 492.928 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ +0 g 0 G + 141.968 -402.49 Td [(40)]TJ +0 g 0 G +ET + +endstream +endobj +1218 0 obj +<< +/Length 7600 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.9)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.7)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F62 9.9626 Tf -51.121 -18.964 Td [(This)-216(subr)18(outine)-217(computes)-216(a)-217(series)-216(of)-216(2-norms)-217(on)-216(the)-217(columns)-216(of)-216(a)-217(dense)-216(matrix)]TJ/F60 9.9626 Tf 0.294 -11.955 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(:)]TJ/F60 9.9626 Tf 126.858 -11.955 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 12.294 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F91 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.006 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F60 9.9626 Tf 6.821 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(geasums)-250(\227)-250(Generalized)-250(1-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf 0.988 0 0 1 99.587 685.937 Tm [(This)-253(subr)18(outine)-253(computes)-253(a)-253(series)-253(of)-253(1-norms)-253(on)-253(the)-253(columns)-254(of)-253(a)-253(dense)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 100.189 673.982 Tm [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(:)]TJ/F78 9.9626 Tf 120.031 -13.856 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)]TJ/F84 9.9626 Tf 13.273 0 Td [(max)]TJ/F78 7.5716 Tf 7.76 -7.335 Td [(k)]TJ/F179 10.3811 Tf 12.944 7.335 Td [(j)]TJ/F78 9.9626 Tf 3.298 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.273 0 Td [(k)]TJ/F84 9.9626 Tf 4.598 0 Td [(,)]TJ/F78 9.9626 Tf 4.206 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(j)]TJ/F84 9.9626 Tf -215.511 -24.535 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 206.349 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -211.245 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.46 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 125.227 -23.185 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.293 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.006 0 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F84 9.9626 Tf -196.039 -23.185 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(1-norm)-250(as:)]TJ/F78 9.9626 Tf 71.212 -23.185 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.294 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 18.737 0 Td [(r)-17(e)]TJ/F181 10.3811 Tf 8.169 0 Td [(\050)]TJ/F78 9.9626 Tf 4.444 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F181 10.3811 Tf 6.345 1.858 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.37 0 Td [(i)-32(m)]TJ/F181 10.3811 Tf 11.088 0 Td [(\050)]TJ/F78 9.9626 Tf 4.443 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -186.919 -16.189 Td [(call)]TJ +/F131 9.9626 Tf -212.21 -21.96 Td [(call)]TJ 0 g 0 G - [-525(psb_genrm2s\050res,)]TJ + [-525(psb_geasums\050res,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(x,)]TJ @@ -12111,701 +11652,987 @@ BT 0 g 0 G ET q -1 0 0 1 126.577 630.954 cm -[]0 d 0 J 0.398 w 0 0 m 290.348 0 l S +1 0 0 1 126.328 514.627 cm +[]0 d 0 J 0.398 w 0 0 m 290.846 0 l S Q BT -/F60 9.9626 Tf 132.579 622.386 Td [(r)-17(e)-25(s)-8868(x)]TJ/F59 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 132.33 506.059 Td [(r)-17(e)-25(s)-8868(x)]TJ/F75 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ ET q -1 0 0 1 126.577 618.6 cm -[]0 d 0 J 0.398 w 0 0 m 290.348 0 l S +1 0 0 1 126.328 502.274 cm +[]0 d 0 J 0.398 w 0 0 m 290.846 0 l S Q BT -/F62 9.9626 Tf 132.554 610.032 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 132.305 493.706 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 369.912 610.231 cm +1 0 0 1 369.663 493.905 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 610.032 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 372.651 493.706 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 369.912 598.276 cm +1 0 0 1 369.663 481.95 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 598.077 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 372.651 481.751 Td [(geasums)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 369.912 586.321 cm +1 0 0 1 369.663 469.995 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 586.122 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 372.651 469.795 Td [(geasums)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 369.912 574.366 cm +1 0 0 1 369.663 458.04 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 372.9 574.167 Td [(genrm2s)]TJ +/F84 9.9626 Tf 372.651 457.84 Td [(geasums)]TJ ET q -1 0 0 1 126.577 570.381 cm -[]0 d 0 J 0.398 w 0 0 m 290.348 0 l S +1 0 0 1 126.328 454.054 cm +[]0 d 0 J 0.398 w 0 0 m 290.846 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 229.958 542.002 Td [(T)92(able)-250(9:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 229.958 425.676 Td [(T)92(able)-250(7:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -130.063 -37.636 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.46 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -19.926 Td [(x)]TJ + 0 -22.459 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 295.3 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 295.3 Tm [(psb)]TJ ET q -1 0 0 1 385.864 420.062 cm +1 0 0 1 385.864 295.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 419.863 Td [(T)]TJ +/F131 9.9626 Tf 389.002 295.3 Td [(T)]TJ ET q -1 0 0 1 394.86 420.062 cm +1 0 0 1 394.86 295.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 419.863 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 295.3 Td [(vect)]TJ ET q -1 0 0 1 419.547 420.062 cm +1 0 0 1 419.547 295.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 419.863 Td [(type)]TJ +/F131 9.9626 Tf 422.685 295.3 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG - [-250(9)]TJ + [-250(7)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -22.459 Td [(desc)]TJ ET q -1 0 0 1 120.408 388.181 cm +1 0 0 1 120.408 261.085 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 387.982 Td [(a)]TJ +/F75 9.9626 Tf 123.397 260.886 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 273.363 340.361 cm +1 0 0 1 273.363 213.264 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 340.161 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 213.065 Td [(desc)]TJ ET q -1 0 0 1 298.05 340.361 cm +1 0 0 1 298.05 213.264 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 340.161 Td [(type)]TJ +/F131 9.9626 Tf 301.189 213.065 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -22.459 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19.925 Td [(res)]TJ + 0 -22.46 Td [(res)]TJ +0 g 0 G +/F84 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F78 9.9626 Tf 176.182 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 1.003 0 0 1 124.802 132.281 Tm [(Short)-248(as:)-309(a)-249(long)-248(pr)18(ecision)-248(r)18(eal)-249(number)74(.)-309(Speci\002ed)-248(as:)-309(a)-248(long)-249(pr)18(ecision)-248(r)18(eal)]TJ 1 0 0 1 124.802 120.326 Tm [(number)74(.)]TJ +0 g 0 G + 141.968 -29.888 Td [(41)]TJ +0 g 0 G +ET + +endstream +endobj +1223 0 obj +<< +/Length 581 +>> +stream 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F60 9.9626 Tf 176.182 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +BT +/F75 9.9626 Tf 150.705 706.129 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -106.261 Td [(45)]TJ + 142.356 -567.87 Td [(42)]TJ 0 g 0 G ET endstream endobj -1245 0 obj +1230 0 obj << -/Length 5385 +/Length 6751 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.10)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.8)-1000(psb)]TJ ET q -1 0 0 1 204.216 706.328 cm +1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(matrix)]TJ/F60 9.9626 Tf 208.231 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(:)]TJ/F60 9.9626 Tf -74.65 -33.873 Td [(n)-15(r)-35(m)]TJ/F62 9.9626 Tf 17.788 0 Td [(1)]TJ/F91 10.3811 Tf 7.873 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.335 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F62 9.9626 Tf -198.652 -20.06 Td [(wher)18(e:)]TJ -0 g 0 G -/F60 9.9626 Tf 0.622 -19.925 Td [(A)]TJ -0 g 0 G -/F62 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F60 9.9626 Tf 125.981 0 Td [(A)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(norm2)-250(\227)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf -51.429 -20.076 Td [(This)-250(function)-250(computes)-250(the)-250(2-norm)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 206.348 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -211.246 -11.955 Td [(If)]TJ/F78 9.9626 Tf 9.46 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(r)18(eal)-250(vector)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F78 9.9626 Tf 122.551 -25.46 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.788 0 Td [(2)]TJ/F179 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ +ET +q +1 0 0 1 287.432 658.569 cm +[]0 d 0 J 0.408 w 0 0 m 16.592 0 l S +Q +BT +/F78 9.9626 Tf 287.726 648.638 Td [(x)]TJ/F78 7.5716 Tf 5.399 2.88 Td [(T)]TJ/F78 9.9626 Tf 5.694 -2.88 Td [(x)]TJ/F84 9.9626 Tf -198.924 -23.065 Td [(else)-250(if)]TJ/F78 9.9626 Tf 28.159 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(a)-250(complex)-250(vector)-250(then)-250(it)-250(computes)-250(2-norm)-250(as:)]TJ/F78 9.9626 Tf 103.113 -25.46 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.789 0 Td [(2)]TJ/F179 10.3811 Tf 7.873 0 Td [(\040)]TJ 13.397 9.727 Td [(p)]TJ +ET +q +1 0 0 1 286.694 610.044 cm +[]0 d 0 J 0.408 w 0 0 m 18.069 0 l S +Q +BT +/F78 9.9626 Tf 286.988 600.113 Td [(x)]TJ/F78 7.5716 Tf 5.588 2.88 Td [(H)]TJ/F78 9.9626 Tf 6.982 -2.88 Td [(x)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 229.61 588.515 cm -[]0 d 0 J 0.398 w 0 0 m 185.901 0 l S +1 0 0 1 128.689 575.464 cm +[]0 d 0 J 0.398 w 0 0 m 286.124 0 l S Q BT -/F60 9.9626 Tf 236.21 579.947 Td [(A)]TJ/F59 9.9626 Tf 120.293 0 Td [(Function)]TJ +/F78 9.9626 Tf 134.791 566.896 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.788 0 Td [(2)]TJ/F78 9.9626 Tf 82.505 0 Td [(x)]TJ/F75 9.9626 Tf 120.621 0 Td [(Function)]TJ ET q -1 0 0 1 229.61 576.161 cm -[]0 d 0 J 0.398 w 0 0 m 185.901 0 l S +1 0 0 1 128.689 563.111 cm +[]0 d 0 J 0.398 w 0 0 m 286.124 0 l S Q BT -/F62 9.9626 Tf 235.587 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 134.667 554.543 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 372.821 567.793 cm +1 0 0 1 372.024 554.742 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 567.594 Td [(spnrm1)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 375.012 554.543 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 372.821 555.838 cm +1 0 0 1 372.024 542.787 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 555.638 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 375.012 542.588 Td [(genrm2)]TJ -240.346 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 372.821 543.882 cm +1 0 0 1 372.024 530.832 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 543.683 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 375.012 530.632 Td [(genrm2)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 372.821 531.927 cm +1 0 0 1 372.024 518.876 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 375.81 531.728 Td [(spnrm1)]TJ +/F84 9.9626 Tf 375.012 518.677 Td [(genrm2)]TJ ET q -1 0 0 1 229.61 527.942 cm -[]0 d 0 J 0.398 w 0 0 m 185.901 0 l S +1 0 0 1 128.689 514.891 cm +[]0 d 0 J 0.398 w 0 0 m 286.124 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 499.564 Td [(T)92(able)-250(10:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 229.958 486.513 Td [(T)92(able)-250(8:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G +/F131 9.9626 Tf -115.119 -27.631 Td [(psb_genrm2\050x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(info)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F67 9.9626 Tf -127.572 -33.873 Td [(psb_spnrm1\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_norm1\050A,)-525(desc_a,)-525(info\051)]TJ + [-525([,global]\051)]TJ -14.944 -11.955 Td [(psb_norm2\050x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + [-525(info)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ + [-525([,global]\051)]TJ 0 g 0 G +/F75 9.9626 Tf 0 -36.169 Td [(T)90(ype:)]TJ 0 g 0 G - 0 -19.926 Td [(a)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 194.722 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -187.095 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F75 9.9626 Tf -29.828 -22.221 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.221 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 318.495 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.242 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 318.495 Tm [(psb)]TJ ET q -1 0 0 1 324.173 344.346 cm +1 0 0 1 385.864 318.695 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 344.147 Td [(Tspmat)]TJ +/F131 9.9626 Tf 389.002 318.495 Td [(T)]TJ ET q -1 0 0 1 359.321 344.346 cm +1 0 0 1 394.86 318.695 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 362.459 344.147 Td [(type)]TJ +/F131 9.9626 Tf 397.998 318.495 Td [(vect)]TJ +ET +q +1 0 0 1 419.547 318.695 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.685 318.495 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(8)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ + [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -232.675 -19.926 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -22.221 Td [(desc)]TJ ET q -1 0 0 1 171.218 324.421 cm +1 0 0 1 120.408 284.518 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 324.221 Td [(a)]TJ +/F75 9.9626 Tf 123.397 284.319 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 324.173 276.6 cm +1 0 0 1 273.363 236.698 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 327.311 276.401 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 236.499 Td [(desc)]TJ ET q -1 0 0 1 348.86 276.6 cm +1 0 0 1 298.05 236.698 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.998 276.401 Td [(type)]TJ +/F131 9.9626 Tf 301.189 236.499 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.214 -19.926 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -22.221 Td [(global)]TJ 0 g 0 G +/F84 9.9626 Tf 0.994 0 0 1 133.659 214.278 Tm [(Speci\002es)-250(whether)-249(the)-250(computation)-250(should)-250(include)-249(the)-250(global)-250(r)18(eduction)]TJ 1 0 0 1 124.802 202.322 Tm [(acr)18(oss)-250(all)-250(pr)18(ocesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(scalar)74(.)-310(Default:)]TJ/F131 9.9626 Tf 165.318 0 Td [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G - 0 -19.925 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F60 9.9626 Tf 150.4 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -205.587 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ + [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -190.225 -34.176 Td [(On)-250(Return)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -54.456 Td [(46)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(43)]TJ 0 g 0 G ET endstream endobj -1252 0 obj +1236 0 obj << -/Length 5404 +/Length 4508 >> stream 0 g 0 G 0 g 0 G +0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.11)-1000(psb)]TJ -ET -q -1 0 0 1 153.407 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 156.993 706.129 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(matrix)]TJ/F60 9.9626 Tf 235.459 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(:)]TJ/F60 9.9626 Tf -102.327 -33.873 Td [(n)-15(r)-35(m)-18(i)]TJ/F91 10.3811 Tf 23.698 0 Td [(\040)-291(k)]TJ/F60 9.9626 Tf 19.336 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)]TJ/F104 7.5716 Tf 5.409 -1.494 Td [(\245)]TJ/F62 9.9626 Tf -196.335 -20.424 Td [(wher)18(e:)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(Function)-250(V)111(alue)]TJ 0 g 0 G -/F60 9.9626 Tf 0.623 -19.925 Td [(A)]TJ +/F84 9.9626 Tf 73.882 0 Td [(is)-250(the)-250(2-norm)-250(of)-250(vector)]TJ/F78 9.9626 Tf 102.161 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0.98 0 0 1 175.611 694.174 Tm [(Scope:)]TJ/F75 9.9626 Tf 0.98 0 0 1 206.422 694.174 Tm [(global)]TJ/F84 9.9626 Tf 0.98 0 0 1 237.009 694.174 Tm [(unless)-244(the)-244(optional)-244(variable)]TJ/F131 9.9626 Tf 1 0 0 1 358.293 694.174 Tm [(global)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G -/F62 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F60 9.9626 Tf 125.981 0 Td [(A)]TJ + [(.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 433.899 694.174 Tm [(has)-244(been)-244(spec-)]TJ 1 0 0 1 175.611 682.219 Tm [(i\002ed)]TJ -0.308 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G +/F75 9.9626 Tf -24.906 -19.925 Td [(info)]TJ 0 g 0 G +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +0 g 0 G + 0.98 0 0 1 175.303 548.719 Tm [(The)-201(computation)-200(of)-201(a)-200(global)-201(r)18(esult)-200(r)18(equir)19(es)-201(a)-201(global)-200(communication,)-212(which)]TJ 1.02 0 0 1 175.611 536.764 Tm [(entails)-265(a)-265(signi\002cant)-264(over)17(head.)-363(It)-265(may)-265(be)-264(necessary)-265(and/or)-265(advisable)-265(to)]TJ 1.02 0 0 1 175.611 524.809 Tm [(compute)-287(multiple)-287(norms)-287(at)-287(the)-287(same)-287(time;)-308(in)-287(thi)1(s)-287(case,)-298(it)-287(is)-287(possible)-287(to)]TJ 1 0 0 1 175.611 512.854 Tm [(impr)18(ove)-250(the)-250(r)8(untime)-250(ef)18(\002ciency)-250(by)-250(using)-250(the)-250(following)-250(scheme:)]TJ 24.981 -17.933 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(1)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ ET q -1 0 0 1 179.842 588.515 cm -[]0 d 0 J 0.398 w 0 0 m 183.819 0 l S +1 0 0 1 278.034 495.12 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 186.442 579.947 Td [(A)]TJ/F59 9.9626 Tf 120.292 0 Td [(Function)]TJ +/F84 9.9626 Tf 281.627 494.921 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(1)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ ET q -1 0 0 1 179.842 576.161 cm -[]0 d 0 J 0.398 w 0 0 m 183.819 0 l S +1 0 0 1 367.96 495.12 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 185.819 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 371.922 494.921 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(2)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ ET q -1 0 0 1 323.053 567.793 cm +1 0 0 1 278.034 483.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 567.594 Td [(spnrmi)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 281.627 482.966 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(2)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ ET q -1 0 0 1 323.053 555.838 cm +1 0 0 1 367.96 483.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 555.638 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 371.922 482.966 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -171.33 -11.955 Td [(v)-107(r)-108(e)-107(s)-266(\050)-159(3)-158(\051)-756(=)-657(p)-61(s)-61(b)]TJ ET q -1 0 0 1 323.053 543.882 cm +1 0 0 1 278.034 471.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 543.683 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 281.627 471.011 Td [(g)-61(e)-60(n)-61(r)-61(m)-60(2)-194(\050)-180(x)-46(3)-267(,)-273(d)-97(e)-98(s)-98(c)]TJ ET q -1 0 0 1 323.053 531.927 cm +1 0 0 1 367.96 471.21 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 326.042 531.728 Td [(spnrmi)]TJ +/F84 9.9626 Tf 371.922 471.011 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-391(,)-298(g)-123(l)-123(o)-124(b)-123(a)-123(l)-238(=)-115(.)-277(f)-162(a)-162(l)-162(s)-163(e)-367(.)-206(\051)]TJ -170.658 -11.956 Td [(c)-175(a)-175(l)-174(l)-831(p)-56(s)-56(b)]TJ ET q -1 0 0 1 179.842 527.942 cm -[]0 d 0 J 0.398 w 0 0 m 183.819 0 l S +1 0 0 1 247.952 459.255 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q -0 g 0 G BT -/F62 9.9626 Tf 227.467 499.564 Td [(T)92(able)-250(11:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 251.497 459.055 Td [(n)-56(r)-56(m)-55(2)-190(\050)-264(c)-132(t)-131(x)-131(t)-438(,)-283(v)-107(r)-107(e)-108(s)-300(\050)-193(1)-193(:)-193(3)-193(\051)-193(\051)]TJ +0 g 0 G +0 g 0 G + 1.007 0 0 1 175.611 437.138 Tm [(In)-248(this)-248(way)-248(the)-248(global)-248(communication,)-248(which)-248(for)-248(small)-248(sizes)-248(is)-248(a)-248(latency-)]TJ 1 0 0 1 175.611 425.182 Tm [(bound)-250(operation,)-250(is)-250(invoked)-250(only)-250(once.)]TJ +0 g 0 G + 141.968 -334.744 Td [(44)]TJ +0 g 0 G +ET + +endstream +endobj +1249 0 obj +<< +/Length 6303 +>> +stream 0 g 0 G 0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(4.9)-1000(psb)]TJ +ET +q +1 0 0 1 147.429 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 151.016 706.129 Td [(genrm2s)-250(\227)-250(Generalized)-250(2-Norm)-250(of)-250(V)111(ector)]TJ/F84 9.9626 Tf 0.988 0 0 1 99.587 687.165 Tm [(This)-253(subr)18(outine)-253(computes)-253(a)-253(series)-253(of)-253(2-norms)-253(on)-253(the)-253(columns)-254(of)-253(a)-253(dense)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 100.189 675.21 Tm [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(:)]TJ/F78 9.9626 Tf 126.858 -11.955 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 12.294 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F179 10.3811 Tf 7.041 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.006 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)-13(,)]TJ/F78 9.9626 Tf 6.821 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -186.919 -16.189 Td [(call)]TJ 0 g 0 G -/F67 9.9626 Tf -127.572 -33.873 Td [(psb_spnrmi\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_normi\050A,)-525(desc_a,)-525(info\051)]TJ + [-525(psb_genrm2s\050res,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ + [-525(info\051)]TJ 0 g 0 G 0 g 0 G - 0 -19.926 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 194.722 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -187.096 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 273.363 344.346 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 126.577 630.954 cm +[]0 d 0 J 0.398 w 0 0 m 290.348 0 l S Q BT -/F67 9.9626 Tf 276.501 344.147 Td [(Tspmat)]TJ +/F78 9.9626 Tf 132.579 622.386 Td [(r)-17(e)-25(s)-8868(x)]TJ/F75 9.9626 Tf 221.014 0 Td [(Subroutine)]TJ ET q -1 0 0 1 308.511 344.346 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 126.577 618.6 cm +[]0 d 0 J 0.398 w 0 0 m 290.348 0 l S +Q +BT +/F84 9.9626 Tf 132.554 610.032 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +ET +q +1 0 0 1 369.912 610.231 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 372.9 610.032 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +ET +q +1 0 0 1 369.912 598.276 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 372.9 598.077 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-1200(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +ET +q +1 0 0 1 369.912 586.321 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 372.9 586.122 Td [(genrm2s)]TJ -240.346 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-1279(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +ET +q +1 0 0 1 369.912 574.366 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 372.9 574.167 Td [(genrm2s)]TJ +ET +q +1 0 0 1 126.577 570.381 cm +[]0 d 0 J 0.398 w 0 0 m 290.348 0 l S Q +0 g 0 G BT -/F67 9.9626 Tf 311.649 344.147 Td [(type)]TJ +/F84 9.9626 Tf 229.958 542.002 Td [(T)92(able)-250(9:)-310(Data)-250(types)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +/F75 9.9626 Tf -130.063 -34.468 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.926 Td [(x)]TJ 0 g 0 G -/F59 9.9626 Tf -232.676 -19.926 Td [(desc)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 419.863 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 1 0 0 1 369.545 419.863 Tm [(psb)]TJ ET q -1 0 0 1 120.408 324.421 cm +1 0 0 1 385.864 420.062 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 389.002 419.863 Td [(T)]TJ +ET +q +1 0 0 1 394.86 420.062 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 397.998 419.863 Td [(vect)]TJ +ET +q +1 0 0 1 419.547 420.062 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.685 419.863 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf -297.883 -11.956 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(9)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 388.181 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 324.221 Td [(a)]TJ +/F75 9.9626 Tf 123.397 387.982 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 273.363 276.6 cm +1 0 0 1 273.363 340.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 276.401 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 340.161 Td [(desc)]TJ ET q -1 0 0 1 298.05 276.6 cm +1 0 0 1 298.05 340.361 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 276.401 Td [(type)]TJ +/F131 9.9626 Tf 301.189 340.161 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.926 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -19.925 Td [(Function)-250(value)]TJ + 0 -19.925 Td [(res)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(in\002nity-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F60 9.9626 Tf 177.627 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -232.814 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ +/F84 9.9626 Tf 18.262 0 Td [(contains)-250(the)-250(1-norm)-250(of)-250(\050the)-250(columns)-250(of\051)]TJ/F78 9.9626 Tf 176.182 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -174.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -54.456 Td [(47)]TJ + 142.357 -106.261 Td [(45)]TJ 0 g 0 G ET endstream endobj -1263 0 obj +1256 0 obj << -/Length 7972 +/Length 5390 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.12)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.10)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Product)]TJ/F62 9.9626 Tf -57.098 -19.303 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct:)]TJ/F60 9.9626 Tf 140.147 -24.611 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.397 0 Td [(a)]TJ/F60 9.9626 Tf 6.008 0 Td [(A)-42(x)]TJ/F93 10.3811 Tf 14.878 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -0 g 0 G -/F62 9.9626 Tf 133.513 0 Td [(\0501\051)]TJ -0 g 0 G -/F60 9.9626 Tf -194.745 -20.13 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.398 0 Td [(a)]TJ/F60 9.9626 Tf 6.007 0 Td [(A)]TJ/F60 7.5716 Tf 7.511 4.115 Td [(T)]TJ/F60 9.9626 Tf 5.694 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -0 g 0 G -/F62 9.9626 Tf 130.715 0 Td [(\0502\051)]TJ -0 g 0 G -/F60 9.9626 Tf -195.482 -20.129 Td [(y)]TJ/F91 10.3811 Tf 7.998 0 Td [(\040)]TJ/F68 9.9626 Tf 13.397 0 Td [(a)]TJ/F60 9.9626 Tf 6.008 0 Td [(A)]TJ/F60 7.5716 Tf 7.7 4.114 Td [(H)]TJ/F60 9.9626 Tf 6.981 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -0 g 0 G -/F62 9.9626 Tf 129.977 0 Td [(\0503\051)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(norm1)-250(\227)-250(1-Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F84 9.9626 Tf -57.407 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(1-norm)-250(of)-250(a)-250(matrix)]TJ/F78 9.9626 Tf 208.232 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(:)]TJ/F78 9.9626 Tf -74.341 -33.873 Td [(n)-15(r)-35(m)]TJ/F84 9.9626 Tf 17.788 0 Td [(1)]TJ/F179 10.3811 Tf 7.873 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.335 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.858 Td [(1)]TJ/F84 9.9626 Tf -199.071 -20.06 Td [(wher)18(e:)]TJ 0 g 0 G - -317.15 -18.633 Td [(wher)18(e:)]TJ +/F78 9.9626 Tf 1.041 -19.925 Td [(A)]TJ 0 g 0 G -/F60 9.9626 Tf -14.65 -20.451 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.61 0 Td [(x)]TJ/F62 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ -0 g 0 G -/F60 9.9626 Tf -131.167 -19.132 Td [(y)]TJ -0 g 0 G -/F62 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.441 0 Td [(y)]TJ/F62 7.5716 Tf 5.2 -1.494 Td [(:)-13(,)-12(:)]TJ -0 g 0 G -/F60 9.9626 Tf -130.23 -19.131 Td [(A)]TJ -0 g 0 G -/F62 9.9626 Tf 12.299 0 Td [(is)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 118.41 0 Td [(A)]TJ +/F84 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F78 9.9626 Tf 125.981 0 Td [(A)]TJ 0 g 0 G 0 g 0 G 0 g 0 G ET q -1 0 0 1 230.392 517.986 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +1 0 0 1 229.61 588.515 cm +[]0 d 0 J 0.398 w 0 0 m 185.901 0 l S Q BT -/F60 9.9626 Tf 236.992 509.418 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(,)]TJ/F68 9.9626 Tf 5.106 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(,)]TJ/F68 9.9626 Tf 5.355 0 Td [(b)]TJ/F59 9.9626 Tf 76.437 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.21 579.947 Td [(A)]TJ/F75 9.9626 Tf 120.293 0 Td [(Function)]TJ ET q -1 0 0 1 230.392 505.633 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +1 0 0 1 229.61 576.161 cm +[]0 d 0 J 0.398 w 0 0 m 185.901 0 l S Q BT -/F62 9.9626 Tf 236.369 497.065 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 235.587 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q -1 0 0 1 373.603 497.264 cm +1 0 0 1 372.821 567.793 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 497.065 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 375.81 567.594 Td [(spnrm1)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q -1 0 0 1 373.603 485.309 cm +1 0 0 1 372.821 555.838 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 485.11 Td [(spmm)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 375.81 555.638 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q -1 0 0 1 373.603 473.354 cm +1 0 0 1 372.821 543.882 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 473.154 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 375.81 543.683 Td [(spnrm1)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q -1 0 0 1 373.603 461.398 cm +1 0 0 1 372.821 531.927 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 461.199 Td [(spmm)]TJ +/F84 9.9626 Tf 375.81 531.728 Td [(spnrm1)]TJ ET q -1 0 0 1 230.392 457.413 cm -[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +1 0 0 1 229.61 527.942 cm +[]0 d 0 J 0.398 w 0 0 m 185.901 0 l S Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 429.035 Td [(T)92(able)-250(12:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 499.564 Td [(T)92(able)-250(10:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -107.398 -24.261 Td [(call)]TJ 0 g 0 G - [-525(psb_spmm\050alpha,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F131 9.9626 Tf -127.572 -33.873 Td [(psb_spnrm1\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_norm1\050A,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G - [-525(a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G - [-525(beta,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G - [-525(y,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 0 -19.926 Td [(a)]TJ 0 g 0 G - [-525(info\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 194.722 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -187.095 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 132.242 0 Td [(psb)]TJ +ET +q +1 0 0 1 324.173 344.346 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 327.311 344.147 Td [(Tspmat)]TJ +ET +q +1 0 0 1 359.321 344.346 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.459 344.147 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.944 -11.955 Td [(call)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - [-525(psb_spmm\050alpha,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -232.675 -19.926 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 324.421 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 324.221 Td [(a)]TJ 0 g 0 G - [-525(a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ +ET +q +1 0 0 1 324.173 276.6 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 327.311 276.401 Td [(desc)]TJ +ET +q +1 0 0 1 348.86 276.6 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 351.998 276.401 Td [(type)]TJ 0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - [-525(beta,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -222.214 -19.926 Td [(On)-250(Return)]TJ 0 g 0 G - [-525(y,desc_a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(info,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G - [-525(trans,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 72.776 0 Td [(is)-250(the)-250(1-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F78 9.9626 Tf 150.4 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -205.587 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G - [-525(work\051)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F59 9.9626 Tf -5.23 -22.618 Td [(T)90(ype:)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + 142.356 -54.456 Td [(46)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.626 Td [(On)-250(Entry)]TJ +ET + +endstream +endobj +1263 0 obj +<< +/Length 5413 +>> +stream 0 g 0 G 0 g 0 G - 0 -20.626 Td [(alpha)]TJ +BT +/F75 11.9552 Tf 99.895 706.129 Td [(4.11)-1000(psb)]TJ +ET +q +1 0 0 1 153.407 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 156.993 706.129 Td [(normi)-250(\227)-250(In\002nity)-250(Norm)-250(of)-250(Sparse)-250(Matrix)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(in\002nity-norm)-250(of)-250(a)-250(matrix)]TJ/F78 9.9626 Tf 235.458 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(:)]TJ/F78 9.9626 Tf -102.018 -33.873 Td [(n)-15(r)-35(m)-18(i)]TJ/F179 10.3811 Tf 23.698 0 Td [(\040)-291(k)]TJ/F78 9.9626 Tf 19.336 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)]TJ/F241 7.5716 Tf 5.409 -1.494 Td [(\245)]TJ/F84 9.9626 Tf -196.753 -20.424 Td [(wher)18(e:)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.368 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(12)]TJ +/F78 9.9626 Tf 1.041 -19.925 Td [(A)]TJ +0 g 0 G +/F84 9.9626 Tf 12.299 0 Td [(r)18(epr)18(esents)-250(the)-250(global)-250(matrix)]TJ/F78 9.9626 Tf 125.981 0 Td [(A)]TJ 0 g 0 G - [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.626 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 164.964 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -157.337 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.242 0 Td [(psb)]TJ ET q -1 0 0 1 324.173 212.882 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 179.842 588.515 cm +[]0 d 0 J 0.398 w 0 0 m 183.819 0 l S Q BT -/F67 9.9626 Tf 327.311 212.682 Td [(Tspmat)]TJ +/F78 9.9626 Tf 186.442 579.947 Td [(A)]TJ/F75 9.9626 Tf 120.292 0 Td [(Function)]TJ ET q -1 0 0 1 359.321 212.882 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 179.842 576.161 cm +[]0 d 0 J 0.398 w 0 0 m 183.819 0 l S +Q +BT +/F84 9.9626 Tf 185.819 567.594 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +ET +q +1 0 0 1 323.053 567.793 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 326.042 567.594 Td [(spnrmi)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +ET +q +1 0 0 1 323.053 555.838 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 326.042 555.638 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +ET +q +1 0 0 1 323.053 543.882 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 326.042 543.683 Td [(spnrmi)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +ET +q +1 0 0 1 323.053 531.927 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 326.042 531.728 Td [(spnrmi)]TJ +ET +q +1 0 0 1 179.842 527.942 cm +[]0 d 0 J 0.398 w 0 0 m 183.819 0 l S Q +0 g 0 G BT -/F67 9.9626 Tf 362.459 212.682 Td [(type)]TJ +/F84 9.9626 Tf 227.467 499.564 Td [(T)92(able)-250(11:)-310(Data)-250(types)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -232.675 -20.625 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +0 g 0 G +/F131 9.9626 Tf -127.572 -33.873 Td [(psb_spnrmi\050A,)-525(desc_a,)-525(info\051)]TJ 0 -11.955 Td [(psb_normi\050A,)-525(desc_a,)-525(info\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.926 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 194.722 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -187.096 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q -1 0 0 1 436.673 144.435 cm +1 0 0 1 273.363 344.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 144.236 Td [(T)]TJ +/F131 9.9626 Tf 276.501 344.147 Td [(Tspmat)]TJ ET q -1 0 0 1 445.669 144.435 cm +1 0 0 1 308.511 344.346 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 144.236 Td [(vect)]TJ +/F131 9.9626 Tf 311.649 344.147 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -232.676 -19.926 Td [(desc)]TJ ET q -1 0 0 1 470.356 144.435 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 120.408 324.421 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F67 9.9626 Tf 473.495 144.236 Td [(type)]TJ +/F75 9.9626 Tf 123.397 324.221 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-278(numbers)-278(of)-279(type)-278(speci\002ed)-278(in)-278(T)92(able)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG - [-278(12)]TJ -0 g 0 G - [(.)-395(The)-278(rank)-279(of)]TJ/F60 9.9626 Tf 275.498 0 Td [(x)]TJ/F62 9.9626 Tf 7.978 0 Td [(must)-278(be)]TJ -283.476 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -0 g 0 G - 83.916 -29.888 Td [(48)]TJ -0 g 0 G +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET - -endstream +q +1 0 0 1 273.363 276.6 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 276.501 276.401 Td [(desc)]TJ +ET +q +1 0 0 1 298.05 276.6 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 301.189 276.401 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -222.215 -19.926 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 72.777 0 Td [(is)-250(the)-250(in\002nity-norm)-250(of)-250(sparse)-250(submatrix)]TJ/F78 9.9626 Tf 177.627 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -232.814 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(long)-250(pr)18(ecision)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 142.357 -54.456 Td [(47)]TJ +0 g 0 G +ET + +endstream endobj 1162 0 obj << /Type /ObjStm /N 100 /First 984 -/Length 11501 ->> -stream -1152 0 1153 146 1154 290 1155 435 1156 582 1160 726 232 785 1161 843 1157 901 1164 1034 -1166 1152 1163 1210 1171 1291 1167 1448 1168 1592 1169 1738 1173 1885 236 1944 1174 2002 1170 2061 -1176 2194 1178 2312 1179 2370 1175 2427 1185 2521 1181 2678 1182 2822 1183 2968 1187 3115 240 3174 -1188 3232 1184 3291 1193 3424 1189 3581 1190 3725 1191 3868 1195 4015 244 4073 1196 4130 1192 4187 -1198 4320 1200 4438 1201 4497 1197 4555 1206 4649 1202 4806 1203 4950 1204 5096 1208 5243 248 5301 -1209 5358 1205 5416 1211 5549 1213 5667 1210 5726 1218 5807 1214 5964 1215 6107 1216 6253 1220 6400 -252 6458 1221 6515 1217 6572 1224 6692 1226 6810 1227 6869 1228 6928 1229 6987 1230 7046 1231 7105 -1232 7164 1223 7223 1237 7330 1233 7487 1234 7631 1235 7777 1239 7924 256 7982 1240 8039 1236 8097 -1244 8230 1241 8378 1242 8523 1246 8670 260 8729 1247 8787 1243 8845 1251 8965 1248 9113 1249 9258 -1253 9405 264 9463 1255 9520 1250 9577 1262 9712 1256 9878 1257 10025 1258 10170 1259 10312 1264 10458 -% 1152 0 obj +/Length 11423 +>> +stream +1158 0 1156 139 1160 285 1161 343 1157 401 1170 509 1163 693 1164 837 1165 983 1166 1127 +1167 1272 1168 1419 1172 1563 232 1622 1173 1680 1169 1738 1175 1874 1177 1992 1174 2050 1182 2131 +1178 2288 1179 2432 1180 2578 1184 2725 236 2784 1185 2842 1181 2901 1187 3037 1189 3155 1190 3213 +1186 3270 1196 3365 1192 3522 1193 3666 1194 3812 1198 3959 240 4018 1199 4076 1195 4135 1204 4271 +1200 4428 1201 4572 1202 4715 1206 4862 244 4920 1207 4977 1203 5034 1209 5170 1211 5288 1212 5347 +1208 5405 1217 5500 1213 5657 1214 5801 1215 5947 1219 6094 248 6152 1220 6209 1216 6267 1222 6403 +1224 6521 1221 6580 1229 6661 1225 6818 1226 6961 1227 7107 1231 7254 252 7312 1232 7369 1228 7426 +1235 7548 1237 7666 1238 7725 1239 7784 1240 7843 1241 7902 1242 7961 1243 8020 1234 8079 1248 8187 +1244 8344 1245 8488 1246 8634 1250 8781 256 8839 1251 8896 1247 8954 1255 9090 1252 9238 1253 9383 +1257 9530 260 9589 1258 9647 1254 9705 1262 9827 1259 9975 1260 10120 1264 10267 264 10325 1266 10382 +% 1158 0 obj +<< +/Type /Page +/Contents 1159 0 R +/Resources 1157 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1145 0 R +/Annots [ 1156 0 R ] +>> +% 1156 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.159 602.697 385.133 614.756] +/A << /S /GoTo /D (table.2) >> +>> +% 1160 0 obj +<< +/D [1158 0 R /XYZ 98.895 753.953 null] +>> +% 1161 0 obj +<< +/D [1158 0 R /XYZ 99.895 512.639 null] +>> +% 1157 0 obj +<< +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1170 0 obj +<< +/Type /Page +/Contents 1171 0 R +/Resources 1169 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1145 0 R +/Annots [ 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R ] +>> +% 1163 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.358 384.684 495.412 396.744] +/A << /S /GoTo /D (vdata) >> +>> +% 1164 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.755 372.729 388.729 384.789] +/Rect [382.942 372.729 390.016 384.789] /A << /S /GoTo /D (table.3) >> >> -% 1153 0 obj +% 1165 0 obj << /Type /Annot /Subtype /Link @@ -12813,15 +12640,15 @@ stream /Rect [419.358 293.733 495.412 305.793] /A << /S /GoTo /D (vdata) >> >> -% 1154 0 obj +% 1166 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.88 281.778 388.854 293.837] +/Rect [373.146 281.778 380.02 293.837] /A << /S /GoTo /D (table.3) >> >> -% 1155 0 obj +% 1167 0 obj << /Type /Annot /Subtype /Link @@ -12829,58 +12656,58 @@ stream /Rect [306.858 202.781 373.916 214.841] /A << /S /GoTo /D (descdata) >> >> -% 1156 0 obj +% 1168 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.458 119.17 207.432 128.58] +/Rect [200.149 119.17 207.123 128.58] /A << /S /GoTo /D (table.2) >> >> -% 1160 0 obj +% 1172 0 obj << -/D [1158 0 R /XYZ 149.705 753.953 null] +/D [1170 0 R /XYZ 149.705 753.953 null] >> % 232 0 obj << -/D [1158 0 R /XYZ 150.705 716.092 null] +/D [1170 0 R /XYZ 150.705 716.092 null] >> -% 1161 0 obj +% 1173 0 obj << -/D [1158 0 R /XYZ 150.705 524.97 null] +/D [1170 0 R /XYZ 150.705 524.97 null] >> -% 1157 0 obj +% 1169 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1164 0 obj +% 1175 0 obj << /Type /Page -/Contents 1165 0 R -/Resources 1163 0 R +/Contents 1176 0 R +/Resources 1174 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R +/Parent 1145 0 R >> -% 1166 0 obj +% 1177 0 obj << -/D [1164 0 R /XYZ 98.895 753.953 null] +/D [1175 0 R /XYZ 98.895 753.953 null] >> -% 1163 0 obj +% 1174 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1171 0 obj +% 1182 0 obj << /Type /Page -/Contents 1172 0 R -/Resources 1170 0 R +/Contents 1183 0 R +/Resources 1181 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1134 0 R -/Annots [ 1167 0 R 1168 0 R 1169 0 R ] +/Parent 1145 0 R +/Annots [ 1178 0 R 1179 0 R 1180 0 R ] >> -% 1167 0 obj +% 1178 0 obj << /Type /Annot /Subtype /Link @@ -12888,7 +12715,7 @@ stream /Rect [419.358 358.503 495.412 370.562] /A << /S /GoTo /D (vdata) >> >> -% 1168 0 obj +% 1179 0 obj << /Type /Annot /Subtype /Link @@ -12896,7 +12723,7 @@ stream /Rect [377.462 346.547 384.436 358.607] /A << /S /GoTo /D (table.4) >> >> -% 1169 0 obj +% 1180 0 obj << /Type /Annot /Subtype /Link @@ -12904,54 +12731,54 @@ stream /Rect [306.858 280.074 373.916 292.134] /A << /S /GoTo /D (descdata) >> >> -% 1173 0 obj +% 1184 0 obj << -/D [1171 0 R /XYZ 149.705 753.953 null] +/D [1182 0 R /XYZ 149.705 753.953 null] >> % 236 0 obj << -/D [1171 0 R /XYZ 150.705 716.092 null] +/D [1182 0 R /XYZ 150.705 716.092 null] >> -% 1174 0 obj +% 1185 0 obj << -/D [1171 0 R /XYZ 150.705 495.665 null] +/D [1182 0 R /XYZ 150.705 495.665 null] >> -% 1170 0 obj +% 1181 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1176 0 obj +% 1187 0 obj << /Type /Page -/Contents 1177 0 R -/Resources 1175 0 R +/Contents 1188 0 R +/Resources 1186 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R +/Parent 1191 0 R >> -% 1178 0 obj +% 1189 0 obj << -/D [1176 0 R /XYZ 98.895 753.953 null] +/D [1187 0 R /XYZ 98.895 753.953 null] >> -% 1179 0 obj +% 1190 0 obj << -/D [1176 0 R /XYZ 99.895 632.19 null] +/D [1187 0 R /XYZ 99.895 632.19 null] >> -% 1175 0 obj +% 1186 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1185 0 obj +% 1196 0 obj << /Type /Page -/Contents 1186 0 R -/Resources 1184 0 R +/Contents 1197 0 R +/Resources 1195 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R -/Annots [ 1181 0 R 1182 0 R 1183 0 R ] +/Parent 1191 0 R +/Annots [ 1192 0 R 1193 0 R 1194 0 R ] >> -% 1181 0 obj +% 1192 0 obj << /Type /Annot /Subtype /Link @@ -12959,7 +12786,7 @@ stream /Rect [419.358 411.694 495.412 423.754] /A << /S /GoTo /D (vdata) >> >> -% 1182 0 obj +% 1193 0 obj << /Type /Annot /Subtype /Link @@ -12967,7 +12794,7 @@ stream /Rect [377.462 399.739 384.436 411.798] /A << /S /GoTo /D (table.5) >> >> -% 1183 0 obj +% 1194 0 obj << /Type /Annot /Subtype /Link @@ -12975,33 +12802,33 @@ stream /Rect [306.858 331.993 373.916 344.052] /A << /S /GoTo /D (descdata) >> >> -% 1187 0 obj +% 1198 0 obj << -/D [1185 0 R /XYZ 149.705 753.953 null] +/D [1196 0 R /XYZ 149.705 753.953 null] >> % 240 0 obj << -/D [1185 0 R /XYZ 150.705 716.092 null] +/D [1196 0 R /XYZ 150.705 716.092 null] >> -% 1188 0 obj +% 1199 0 obj << -/D [1185 0 R /XYZ 150.705 555.856 null] +/D [1196 0 R /XYZ 150.705 555.856 null] >> -% 1184 0 obj +% 1195 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1193 0 obj +% 1204 0 obj << /Type /Page -/Contents 1194 0 R -/Resources 1192 0 R +/Contents 1205 0 R +/Resources 1203 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R -/Annots [ 1189 0 R 1190 0 R 1191 0 R ] +/Parent 1191 0 R +/Annots [ 1200 0 R 1201 0 R 1202 0 R ] >> -% 1189 0 obj +% 1200 0 obj << /Type /Annot /Subtype /Link @@ -13009,7 +12836,7 @@ stream /Rect [368.549 362.555 444.603 374.615] /A << /S /GoTo /D (vdata) >> >> -% 1190 0 obj +% 1201 0 obj << /Type /Annot /Subtype /Link @@ -13017,7 +12844,7 @@ stream /Rect [326.652 350.6 333.626 362.66] /A << /S /GoTo /D (table.6) >> >> -% 1191 0 obj +% 1202 0 obj << /Type /Annot /Subtype /Link @@ -13025,54 +12852,54 @@ stream /Rect [256.048 283.114 323.106 295.173] /A << /S /GoTo /D (descdata) >> >> -% 1195 0 obj +% 1206 0 obj << -/D [1193 0 R /XYZ 98.895 753.953 null] +/D [1204 0 R /XYZ 98.895 753.953 null] >> % 244 0 obj << -/D [1193 0 R /XYZ 99.895 716.092 null] +/D [1204 0 R /XYZ 99.895 716.092 null] >> -% 1196 0 obj +% 1207 0 obj << -/D [1193 0 R /XYZ 99.895 505.29 null] +/D [1204 0 R /XYZ 99.895 505.29 null] >> -% 1192 0 obj +% 1203 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1198 0 obj +% 1209 0 obj << /Type /Page -/Contents 1199 0 R -/Resources 1197 0 R +/Contents 1210 0 R +/Resources 1208 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R +/Parent 1191 0 R >> -% 1200 0 obj +% 1211 0 obj << -/D [1198 0 R /XYZ 149.705 753.953 null] +/D [1209 0 R /XYZ 149.705 753.953 null] >> -% 1201 0 obj +% 1212 0 obj << -/D [1198 0 R /XYZ 150.705 632.19 null] +/D [1209 0 R /XYZ 150.705 632.19 null] >> -% 1197 0 obj +% 1208 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1206 0 obj +% 1217 0 obj << /Type /Page -/Contents 1207 0 R -/Resources 1205 0 R +/Contents 1218 0 R +/Resources 1216 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R -/Annots [ 1202 0 R 1203 0 R 1204 0 R ] +/Parent 1191 0 R +/Annots [ 1213 0 R 1214 0 R 1215 0 R ] >> -% 1202 0 obj +% 1213 0 obj << /Type /Annot /Subtype /Link @@ -13080,7 +12907,7 @@ stream /Rect [368.549 291.495 444.603 303.554] /A << /S /GoTo /D (vdata) >> >> -% 1203 0 obj +% 1214 0 obj << /Type /Annot /Subtype /Link @@ -13088,7 +12915,7 @@ stream /Rect [326.652 279.539 333.626 291.599] /A << /S /GoTo /D (table.7) >> >> -% 1204 0 obj +% 1215 0 obj << /Type /Annot /Subtype /Link @@ -13096,50 +12923,50 @@ stream /Rect [256.048 209.259 323.106 221.319] /A << /S /GoTo /D (descdata) >> >> -% 1208 0 obj +% 1219 0 obj << -/D [1206 0 R /XYZ 98.895 753.953 null] +/D [1217 0 R /XYZ 98.895 753.953 null] >> % 248 0 obj << -/D [1206 0 R /XYZ 99.895 716.092 null] +/D [1217 0 R /XYZ 99.895 716.092 null] >> -% 1209 0 obj +% 1220 0 obj << -/D [1206 0 R /XYZ 99.895 443.893 null] +/D [1217 0 R /XYZ 99.895 443.893 null] >> -% 1205 0 obj +% 1216 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1211 0 obj +% 1222 0 obj << /Type /Page -/Contents 1212 0 R -/Resources 1210 0 R +/Contents 1223 0 R +/Resources 1221 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1180 0 R +/Parent 1191 0 R >> -% 1213 0 obj +% 1224 0 obj << -/D [1211 0 R /XYZ 149.705 753.953 null] +/D [1222 0 R /XYZ 149.705 753.953 null] >> -% 1210 0 obj +% 1221 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1218 0 obj +% 1229 0 obj << /Type /Page -/Contents 1219 0 R -/Resources 1217 0 R +/Contents 1230 0 R +/Resources 1228 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1214 0 R 1215 0 R 1216 0 R ] +/Parent 1233 0 R +/Annots [ 1225 0 R 1226 0 R 1227 0 R ] >> -% 1214 0 obj +% 1225 0 obj << /Type /Annot /Subtype /Link @@ -13147,7 +12974,7 @@ stream /Rect [368.549 314.69 444.603 326.749] /A << /S /GoTo /D (vdata) >> >> -% 1215 0 obj +% 1226 0 obj << /Type /Annot /Subtype /Link @@ -13155,7 +12982,7 @@ stream /Rect [326.652 302.734 333.626 314.794] /A << /S /GoTo /D (table.8) >> >> -% 1216 0 obj +% 1227 0 obj << /Type /Annot /Subtype /Link @@ -13163,74 +12990,74 @@ stream /Rect [256.048 232.693 323.106 244.753] /A << /S /GoTo /D (descdata) >> >> -% 1220 0 obj +% 1231 0 obj << -/D [1218 0 R /XYZ 98.895 753.953 null] +/D [1229 0 R /XYZ 98.895 753.953 null] >> % 252 0 obj << -/D [1218 0 R /XYZ 99.895 716.092 null] +/D [1229 0 R /XYZ 99.895 716.092 null] >> -% 1221 0 obj +% 1232 0 obj << -/D [1218 0 R /XYZ 99.895 504.73 null] +/D [1229 0 R /XYZ 99.895 504.73 null] >> -% 1217 0 obj +% 1228 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1224 0 obj +% 1235 0 obj << /Type /Page -/Contents 1225 0 R -/Resources 1223 0 R +/Contents 1236 0 R +/Resources 1234 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R +/Parent 1233 0 R >> -% 1226 0 obj +% 1237 0 obj << -/D [1224 0 R /XYZ 149.705 753.953 null] +/D [1235 0 R /XYZ 149.705 753.953 null] >> -% 1227 0 obj +% 1238 0 obj << -/D [1224 0 R /XYZ 150.705 564.444 null] +/D [1235 0 R /XYZ 150.705 564.444 null] >> -% 1228 0 obj +% 1239 0 obj << -/D [1224 0 R /XYZ 150.705 504.067 null] +/D [1235 0 R /XYZ 150.705 504.067 null] >> -% 1229 0 obj +% 1240 0 obj << -/D [1224 0 R /XYZ 175.611 506.876 null] +/D [1235 0 R /XYZ 175.611 506.876 null] >> -% 1230 0 obj +% 1241 0 obj << -/D [1224 0 R /XYZ 175.611 494.921 null] +/D [1235 0 R /XYZ 175.611 494.921 null] >> -% 1231 0 obj +% 1242 0 obj << -/D [1224 0 R /XYZ 175.611 482.966 null] +/D [1235 0 R /XYZ 175.611 482.966 null] >> -% 1232 0 obj +% 1243 0 obj << -/D [1224 0 R /XYZ 175.611 471.011 null] +/D [1235 0 R /XYZ 175.611 471.011 null] >> -% 1223 0 obj +% 1234 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1237 0 obj +% 1248 0 obj << /Type /Page -/Contents 1238 0 R -/Resources 1236 0 R +/Contents 1249 0 R +/Resources 1247 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1233 0 R 1234 0 R 1235 0 R ] +/Parent 1233 0 R +/Annots [ 1244 0 R 1245 0 R 1246 0 R ] >> -% 1233 0 obj +% 1244 0 obj << /Type /Annot /Subtype /Link @@ -13238,7 +13065,7 @@ stream /Rect [368.549 416.057 444.603 428.117] /A << /S /GoTo /D (vdata) >> >> -% 1234 0 obj +% 1245 0 obj << /Type /Annot /Subtype /Link @@ -13246,7 +13073,7 @@ stream /Rect [326.652 404.102 333.626 416.161] /A << /S /GoTo /D (table.9) >> >> -% 1235 0 obj +% 1246 0 obj << /Type /Annot /Subtype /Link @@ -13254,33 +13081,33 @@ stream /Rect [256.048 336.356 323.106 348.415] /A << /S /GoTo /D (descdata) >> >> -% 1239 0 obj +% 1250 0 obj << -/D [1237 0 R /XYZ 98.895 753.953 null] +/D [1248 0 R /XYZ 98.895 753.953 null] >> % 256 0 obj << -/D [1237 0 R /XYZ 99.895 716.092 null] +/D [1248 0 R /XYZ 99.895 716.092 null] >> -% 1240 0 obj +% 1251 0 obj << -/D [1237 0 R /XYZ 99.895 560.219 null] +/D [1248 0 R /XYZ 99.895 560.219 null] >> -% 1236 0 obj +% 1247 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1244 0 obj +% 1255 0 obj << /Type /Page -/Contents 1245 0 R -/Resources 1243 0 R +/Contents 1256 0 R +/Resources 1254 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1241 0 R 1242 0 R ] +/Parent 1233 0 R +/Annots [ 1252 0 R 1253 0 R ] >> -% 1241 0 obj +% 1252 0 obj << /Type /Annot /Subtype /Link @@ -13288,7 +13115,7 @@ stream /Rect [306.858 340.341 384.376 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1242 0 obj +% 1253 0 obj << /Type /Annot /Subtype /Link @@ -13296,33 +13123,33 @@ stream /Rect [306.858 272.595 373.916 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1246 0 obj +% 1257 0 obj << -/D [1244 0 R /XYZ 149.705 753.953 null] +/D [1255 0 R /XYZ 149.705 753.953 null] >> % 260 0 obj << -/D [1244 0 R /XYZ 150.705 716.092 null] +/D [1255 0 R /XYZ 150.705 716.092 null] >> -% 1247 0 obj +% 1258 0 obj << -/D [1244 0 R /XYZ 150.705 517.78 null] +/D [1255 0 R /XYZ 150.705 517.78 null] >> -% 1243 0 obj +% 1254 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1251 0 obj +% 1262 0 obj << /Type /Page -/Contents 1252 0 R -/Resources 1250 0 R +/Contents 1263 0 R +/Resources 1261 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1248 0 R 1249 0 R ] +/Parent 1233 0 R +/Annots [ 1259 0 R 1260 0 R ] >> -% 1248 0 obj +% 1259 0 obj << /Type /Annot /Subtype /Link @@ -13330,7 +13157,7 @@ stream /Rect [256.048 340.341 333.567 352.401] /A << /S /GoTo /D (spdata) >> >> -% 1249 0 obj +% 1260 0 obj << /Type /Annot /Subtype /Link @@ -13338,237 +13165,410 @@ stream /Rect [256.048 272.595 323.106 284.655] /A << /S /GoTo /D (descdata) >> >> -% 1253 0 obj +% 1264 0 obj << -/D [1251 0 R /XYZ 98.895 753.953 null] +/D [1262 0 R /XYZ 98.895 753.953 null] >> % 264 0 obj << -/D [1251 0 R /XYZ 99.895 716.092 null] ->> -% 1255 0 obj -<< -/D [1251 0 R /XYZ 99.895 517.78 null] ->> -% 1250 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F104 1254 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1262 0 obj -<< -/Type /Page -/Contents 1263 0 R -/Resources 1261 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1222 0 R -/Annots [ 1256 0 R 1257 0 R 1258 0 R 1259 0 R ] ->> -% 1256 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [428.968 277.323 440.924 289.383] -/A << /S /GoTo /D (table.12) >> ->> -% 1257 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [306.858 208.877 384.376 220.936] -/A << /S /GoTo /D (spdata) >> ->> -% 1258 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.358 140.43 495.412 152.49] -/A << /S /GoTo /D (vdata) >> ->> -% 1259 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.43 128.475 391.385 140.535] -/A << /S /GoTo /D (table.12) >> +/D [1262 0 R /XYZ 99.895 716.092 null] >> -% 1264 0 obj +% 1266 0 obj << -/D [1262 0 R /XYZ 149.705 753.953 null] +/D [1262 0 R /XYZ 99.895 517.78 null] >> endstream endobj -1279 0 obj +1275 0 obj << -/Length 6532 +/Length 8070 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(beta)]TJ -0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.617 0 Td [(b)]TJ/F62 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(12)]TJ -0 g 0 G - [(.)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.12)-1000(psb)]TJ +ET +q +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 207.803 706.129 Td [(spmm)-250(\227)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Product)]TJ/F84 9.9626 Tf -57.407 -19.303 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(Sparse)-250(Matrix)-250(by)-250(Dense)-250(Matrix)-250(Pr)18(oduct:)]TJ/F78 9.9626 Tf 140.456 -24.611 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)-42(x)]TJ/F181 10.3811 Tf 14.878 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 134.509 0 Td [(\0501\051)]TJ +0 g 0 G +/F78 9.9626 Tf -195.741 -20.13 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.398 0 Td [(a)]TJ/F78 9.9626 Tf 6.007 0 Td [(A)]TJ/F78 7.5716 Tf 7.511 4.115 Td [(T)]TJ/F78 9.9626 Tf 5.694 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 131.712 0 Td [(\0502\051)]TJ +0 g 0 G +/F78 9.9626 Tf -196.479 -20.129 Td [(y)]TJ/F179 10.3811 Tf 7.998 0 Td [(\040)]TJ/F133 9.9626 Tf 13.397 0 Td [(a)]TJ/F78 9.9626 Tf 6.008 0 Td [(A)]TJ/F78 7.5716 Tf 7.7 4.114 Td [(H)]TJ/F78 9.9626 Tf 6.981 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 130.974 0 Td [(\0503\051)]TJ +0 g 0 G + -318.147 -18.633 Td [(wher)18(e:)]TJ +0 g 0 G +/F78 9.9626 Tf -14.65 -20.451 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.61 0 Td [(x)]TJ/F84 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ +0 g 0 G +/F78 9.9626 Tf -131.167 -19.132 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.441 0 Td [(y)]TJ/F84 7.5716 Tf 5.2 -1.494 Td [(:)-13(,)-12(:)]TJ +0 g 0 G +/F78 9.9626 Tf -130.23 -19.131 Td [(A)]TJ +0 g 0 G +/F84 9.9626 Tf 12.299 0 Td [(is)-250(the)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 118.41 0 Td [(A)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +ET +q +1 0 0 1 230.392 517.986 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +BT +/F78 9.9626 Tf 236.992 509.418 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(,)]TJ/F133 9.9626 Tf 5.106 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 76.437 0 Td [(Subroutine)]TJ +ET +q +1 0 0 1 230.392 505.633 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +BT +/F84 9.9626 Tf 236.369 497.065 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +ET +q +1 0 0 1 373.603 497.264 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 497.065 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +ET +q +1 0 0 1 373.603 485.309 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 485.11 Td [(spmm)]TJ -140.223 -11.956 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +ET +q +1 0 0 1 373.603 473.354 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 473.154 Td [(spmm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +ET +q +1 0 0 1 373.603 461.398 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 376.592 461.199 Td [(spmm)]TJ +ET +q +1 0 0 1 230.392 457.413 cm +[]0 d 0 J 0.398 w 0 0 m 184.337 0 l S +Q +0 g 0 G +BT +/F84 9.9626 Tf 278.277 429.035 Td [(T)92(able)-250(12:)-310(Data)-250(types)]TJ +0 g 0 G +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -107.398 -24.261 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050alpha,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(beta,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.944 -11.955 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050alpha,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(x,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(beta,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y,desc_a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(info,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(trans,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(work\051)]TJ +0 g 0 G +/F75 9.9626 Tf -5.23 -22.618 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.626 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.626 Td [(alpha)]TJ +0 g 0 G +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(12)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -20.626 Td [(a)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.597 Td [(y)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 164.964 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -157.337 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 132.242 0 Td [(psb)]TJ +ET +q +1 0 0 1 324.173 212.882 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 327.311 212.682 Td [(Tspmat)]TJ +ET +q +1 0 0 1 359.321 212.882 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.459 212.682 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -232.675 -20.625 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 175.611 144.236 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 1 0 0 1 420.354 144.236 Tm [(psb)]TJ +ET +q +1 0 0 1 436.673 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 439.811 144.236 Td [(T)]TJ +ET +q +1 0 0 1 445.669 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 448.807 144.236 Td [(vect)]TJ +ET +q +1 0 0 1 470.356 144.435 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 473.495 144.236 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 1.015 0 0 1 175.611 132.281 Tm [(containing)-247(numbers)-246(of)-247(type)-247(speci\002ed)-246(in)-247(T)90(able)]TJ +0 0 1 rg 0 0 1 RG + [-246(12)]TJ +0 g 0 G + [(.)-307(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 451.175 132.281 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 458.875 132.281 Tm [(must)-247(be)]TJ 1 0 0 1 175.611 120.326 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ +0 g 0 G + 83.916 -29.888 Td [(48)]TJ +0 g 0 G +ET + +endstream +endobj +1290 0 obj +<< +/Length 6714 +>> +stream 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 99.895 706.129 Td [(beta)]TJ +0 g 0 G +/F84 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.617 0 Td [(b)]TJ/F84 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(12)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -18.597 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 591.891 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 591.891 Tm [(psb)]TJ ET q 1 0 0 1 385.864 592.09 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 591.891 Td [(T)]TJ +/F131 9.9626 Tf 389.002 591.891 Td [(T)]TJ ET q 1 0 0 1 394.86 592.09 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 591.891 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 591.891 Td [(vect)]TJ ET q 1 0 0 1 419.547 592.09 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 591.891 Td [(type)]TJ +/F131 9.9626 Tf 422.685 591.891 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.956 Td [(containing)-280(numbers)-280(of)-280(type)-280(speci\002ed)-280(in)-280(T)92(able)]TJ +/F84 9.9626 Tf 1.016 0 0 1 124.802 579.935 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-246(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-280(12)]TJ + [-246(12)]TJ 0 g 0 G - [(.)-400(The)-280(rank)-280(of)]TJ/F60 9.9626 Tf 275.562 0 Td [(y)]TJ/F62 9.9626 Tf 7.895 0 Td [(must)-280(be)]TJ -283.457 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.115 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ + [(.)-306(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 400.434 579.935 Tm [(y)]TJ/F84 9.9626 Tf 1.016 0 0 1 408.034 579.935 Tm [(must)-246(be)]TJ 1 0 0 1 124.802 567.98 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 53.115 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.228 -18.597 Td [(desc)]TJ +/F75 9.9626 Tf -83.228 -18.597 Td [(desc)]TJ ET q 1 0 0 1 120.408 549.583 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 549.383 Td [(a)]TJ +/F75 9.9626 Tf 123.397 549.383 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 501.762 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 501.563 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 501.563 Td [(desc)]TJ ET q 1 0 0 1 298.05 501.762 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 501.563 Td [(type)]TJ +/F131 9.9626 Tf 301.189 501.563 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -18.597 Td [(trans)]TJ +/F75 9.9626 Tf -222.215 -18.597 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(indicates)-250(what)-250(kind)-250(of)-250(operation)-250(to)-250(perform.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(indicates)-250(what)-250(kind)-250(of)-250(operation)-250(to)-250(perform.)]TJ 0 g 0 G -/F59 9.9626 Tf -2.759 -18.597 Td [(trans)-250(=)-250(N)]TJ +/F75 9.9626 Tf -2.759 -18.597 Td [(trans)-250(=)-250(N)]TJ 0 g 0 G -/F62 9.9626 Tf 46.983 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ +/F84 9.9626 Tf 46.983 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ 0 0 1 rg 0 0 1 RG [-250(1)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -46.983 -14.612 Td [(trans)-250(=)-250(T)]TJ +/F75 9.9626 Tf -46.983 -14.612 Td [(trans)-250(=)-250(T)]TJ 0 g 0 G -/F62 9.9626 Tf 45.33 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ +/F84 9.9626 Tf 45.33 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -45.33 -14.612 Td [(trans)-250(=)-250(C)]TJ +/F75 9.9626 Tf -45.33 -14.612 Td [(trans)-250(=)-250(C)]TJ 0 g 0 G -/F62 9.9626 Tf 45.878 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ +/F84 9.9626 Tf 45.878 0 Td [(the)-250(operation)-250(is)-250(speci\002ed)-250(by)-250(equation)]TJ 0 0 1 rg 0 0 1 RG [-250(3)]TJ 0 g 0 G - -45.878 -18.597 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F93 10.3811 Tf 25.193 0 Td [(=)]TJ/F60 9.9626 Tf 11.434 0 Td [(N)]TJ/F62 9.9626 Tf -75.267 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ + -45.878 -18.597 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F181 10.3811 Tf 25.193 0 Td [(=)]TJ/F78 9.9626 Tf 11.434 0 Td [(N)]TJ/F84 9.9626 Tf -75.267 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.596 Td [(work)]TJ +/F75 9.9626 Tf -24.907 -18.596 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(work)-250(array)111(.)]TJ -3.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-270(as:)-351(a)-270(rank)-270(one)-270(array)-271(of)-270(the)-270(same)-270(type)-271(of)]TJ/F60 9.9626 Tf 220.875 0 Td [(x)]TJ/F62 9.9626 Tf 7.898 0 Td [(and)]TJ/F60 9.9626 Tf 19.684 0 Td [(y)]TJ/F62 9.9626 Tf 7.798 0 Td [(with)-270(the)-270(T)74(AR-)]TJ -256.255 -11.955 Td [(GET)-250(attribute.)]TJ +/F84 9.9626 Tf 28.364 0 Td [(work)-250(array)111(.)]TJ -3.457 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 302.31 Tm [(Speci\002ed)-208(as:)-293(a)-208(rank)-208(one)-208(array)-208(of)-208(the)-209(same)-208(type)-208(of)]TJ/F78 9.9626 Tf 1 0 0 1 334.636 302.31 Tm [(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 341.873 302.31 Tm [(and)]TJ/F78 9.9626 Tf 1 0 0 1 360.559 302.31 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 367.696 302.31 Tm [(with)-208(the)-208(T)75(ARGET)]TJ 1 0 0 1 124.802 290.355 Tm [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.597 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -18.597 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.597 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(matrix)]TJ/F60 9.9626 Tf 144.939 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -135.659 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-379(as:)-568(an)-379(array)-379(of)-379(rank)-379(one)-379(or)-379(two)-379(containing)-379(numbers)-379(of)-379(type)]TJ 0 -11.955 Td [(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(matrix)]TJ/F78 9.9626 Tf 144.939 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -135.659 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.02 0 0 1 124.802 205.34 Tm [(Speci\002ed)-330(as:)-475(an)-331(array)-330(of)-331(rank)-330(one)-330(or)-331(two)-330(containing)-331(numbers)-330(of)-331(type)]TJ 1 0 0 1 124.802 193.385 Tm [(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(12)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.597 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -18.597 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -36.529 Td [(49)]TJ + 142.357 -36.529 Td [(49)]TJ 0 g 0 G ET endstream endobj -1286 0 obj +1297 0 obj << -/Length 8092 +/Length 8140 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(4.13)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(4.13)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(spsm)-250(\227)-250(T)111(riangular)-250(System)-250(Solve)]TJ/F62 9.9626 Tf -57.098 -19.83 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(T)90(riangular)-250(System)-250(Solve:)]TJ/F60 9.9626 Tf 122.724 -35.213 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F62 7.5716 Tf 6.228 0 Td [(1)]TJ/F60 9.9626 Tf 4.577 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -82.196 -16.139 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F91 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F62 7.5716 Tf 6.227 0 Td [(1)]TJ/F60 9.9626 Tf 4.578 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.139 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F62 7.5716 Tf 6.228 0 Td [(1)]TJ/F60 9.9626 Tf 4.607 -4.114 Td [(D)-52(x)]TJ/F93 10.3811 Tf 15.536 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F60 7.5716 Tf 6.421 0 Td [(T)]TJ/F60 9.9626 Tf 5.694 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -83.506 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F91 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F60 7.5716 Tf 6.42 0 Td [(T)]TJ/F60 9.9626 Tf 5.695 -4.114 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F60 7.5716 Tf 6.421 0 Td [(T)]TJ/F60 9.9626 Tf 5.724 -4.114 Td [(D)-52(x)]TJ/F93 10.3811 Tf 15.536 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.091 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F60 7.5716 Tf 6.61 0 Td [(H)]TJ/F60 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.648 0 Td [(y)]TJ -84.982 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F91 7.8896 Tf 14.775 4.115 Td [(\000)]TJ/F60 7.5716 Tf 6.61 0 Td [(H)]TJ/F60 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F93 10.3811 Tf 7.267 0 Td [(+)]TJ/F68 9.9626 Tf 10.504 0 Td [(b)]TJ/F60 9.9626 Tf 5.649 0 Td [(y)]TJ -93.281 -16.09 Td [(y)]TJ/F91 10.3811 Tf 15.193 0 Td [(\040)]TJ/F68 9.9626 Tf 20.593 0 Td [(a)]TJ/F60 9.9626 Tf 5.639 0 Td [(T)]TJ/F91 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F60 7.5716 Tf 6.61 0 Td [(H)]TJ/F60 9.9626 Tf 7.012 -4.115 Td [(D)-52(x)]TJ/F93 10.3811 Tf 15.536 0 Td [(+)]TJ/F68 9.9626 Tf 10.505 0 Td [(b)]TJ/F60 9.9626 Tf 5.648 0 Td [(y)]TJ/F62 9.9626 Tf -201.061 -38.202 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(spsm)-250(\227)-250(T)111(riangular)-250(System)-250(Solve)]TJ/F84 9.9626 Tf -57.407 -19.83 Td [(This)-250(subr)18(outine)-250(computes)-250(the)-250(T)90(riangular)-250(System)-250(Solve:)]TJ/F78 9.9626 Tf 123.033 -35.213 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F84 7.5716 Tf 6.228 0 Td [(1)]TJ/F78 9.9626 Tf 4.577 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -82.196 -16.139 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F179 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F84 7.5716 Tf 6.227 0 Td [(1)]TJ/F78 9.9626 Tf 4.578 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.139 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F84 7.5716 Tf 6.228 0 Td [(1)]TJ/F78 9.9626 Tf 4.607 -4.114 Td [(D)-52(x)]TJ/F181 10.3811 Tf 15.536 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -90.495 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F78 7.5716 Tf 6.421 0 Td [(T)]TJ/F78 9.9626 Tf 5.694 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -83.506 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F179 7.8896 Tf 14.775 4.114 Td [(\000)]TJ/F78 7.5716 Tf 6.42 0 Td [(T)]TJ/F78 9.9626 Tf 5.695 -4.114 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.114 Td [(\000)]TJ/F78 7.5716 Tf 6.421 0 Td [(T)]TJ/F78 9.9626 Tf 5.724 -4.114 Td [(D)-52(x)]TJ/F181 10.3811 Tf 15.536 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -91.805 -16.091 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F78 7.5716 Tf 6.61 0 Td [(H)]TJ/F78 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.648 0 Td [(y)]TJ -84.982 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.708 0 Td [(D)-48(T)]TJ/F179 7.8896 Tf 14.775 4.115 Td [(\000)]TJ/F78 7.5716 Tf 6.61 0 Td [(H)]TJ/F78 9.9626 Tf 6.982 -4.115 Td [(x)]TJ/F181 10.3811 Tf 7.267 0 Td [(+)]TJ/F133 9.9626 Tf 10.504 0 Td [(b)]TJ/F78 9.9626 Tf 5.649 0 Td [(y)]TJ -93.281 -16.09 Td [(y)]TJ/F179 10.3811 Tf 15.193 0 Td [(\040)]TJ/F133 9.9626 Tf 20.593 0 Td [(a)]TJ/F78 9.9626 Tf 5.639 0 Td [(T)]TJ/F179 7.8896 Tf 6.545 4.115 Td [(\000)]TJ/F78 7.5716 Tf 6.61 0 Td [(H)]TJ/F78 9.9626 Tf 7.012 -4.115 Td [(D)-52(x)]TJ/F181 10.3811 Tf 15.536 0 Td [(+)]TJ/F133 9.9626 Tf 10.505 0 Td [(b)]TJ/F78 9.9626 Tf 5.648 0 Td [(y)]TJ/F84 9.9626 Tf -201.061 -38.202 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf -14.65 -21.265 Td [(x)]TJ +/F78 9.9626 Tf -14.65 -21.265 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.61 0 Td [(x)]TJ/F62 7.5716 Tf 5.201 -1.495 Td [(:)-12(,)-13(:)]TJ +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.61 0 Td [(x)]TJ/F84 7.5716 Tf 5.201 -1.495 Td [(:)-12(,)-13(:)]TJ 0 g 0 G -/F60 9.9626 Tf -131.167 -20.218 Td [(y)]TJ +/F78 9.9626 Tf -131.167 -20.218 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 115.441 0 Td [(y)]TJ/F62 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ +/F84 9.9626 Tf 10.087 0 Td [(is)-250(the)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 115.441 0 Td [(y)]TJ/F84 7.5716 Tf 5.201 -1.494 Td [(:)-12(,)-13(:)]TJ 0 g 0 G -/F60 9.9626 Tf -130.599 -20.218 Td [(T)]TJ +/F78 9.9626 Tf -130.599 -20.218 Td [(T)]TJ 0 g 0 G -/F62 9.9626 Tf 11.432 0 Td [(is)-250(the)-250(global)-250(sparse)-250(block)-250(triangular)-250(submatrix)]TJ/F60 9.9626 Tf 206.797 0 Td [(T)]TJ +/F84 9.9626 Tf 11.432 0 Td [(is)-250(the)-250(global)-250(sparse)-250(block)-250(triangular)-250(submatrix)]TJ/F78 9.9626 Tf 206.797 0 Td [(T)]TJ 0 g 0 G -218.159 -21.712 Td [(D)]TJ 0 g 0 G -/F62 9.9626 Tf 12.956 0 Td [(is)-250(the)-250(scaling)-250(diagonal)-250(matrix.)]TJ +/F84 9.9626 Tf 12.956 0 Td [(is)-250(the)-250(scaling)-250(diagonal)-250(matrix.)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 6.894 -21.266 Td [(call)]TJ +/F131 9.9626 Tf 6.894 -21.266 Td [(call)]TJ 0 g 0 G [-525(psb_spsm\050alpha,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -13637,42 +13637,42 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.623 330.871 Td [(T)]TJ/F62 9.9626 Tf 6.451 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(,)]TJ/F60 9.9626 Tf 5.306 0 Td [(D)]TJ/F62 9.9626 Tf 7.975 0 Td [(,)]TJ/F68 9.9626 Tf 5.105 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(,)]TJ/F68 9.9626 Tf 5.355 0 Td [(b)]TJ/F59 9.9626 Tf 64.393 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.623 330.871 Td [(T)]TJ/F84 9.9626 Tf 6.451 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(,)]TJ/F78 9.9626 Tf 5.306 0 Td [(D)]TJ/F84 9.9626 Tf 7.975 0 Td [(,)]TJ/F133 9.9626 Tf 5.105 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(,)]TJ/F133 9.9626 Tf 5.355 0 Td [(b)]TJ/F75 9.9626 Tf 64.393 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 327.085 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 318.517 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 318.517 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 318.716 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 318.517 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 318.517 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 306.761 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 306.562 Td [(spsm)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 306.562 Td [(spsm)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 294.806 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 294.607 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 294.607 Td [(spsm)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 282.851 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 282.652 Td [(spsm)]TJ +/F84 9.9626 Tf 376.592 282.652 Td [(spsm)]TJ ET q 1 0 0 1 230.392 278.866 cm @@ -13680,20 +13680,20 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 250.487 Td [(T)92(able)-250(13:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 250.487 Td [(T)92(able)-250(13:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -38.916 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -38.916 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.712 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -21.712 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.713 Td [(alpha)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.368 0 Td [(a)]TJ/F62 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 30.436 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.368 0 Td [(a)]TJ/F84 9.9626 Tf 5.385 0 Td [(.)]TJ -55.282 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G @@ -13705,157 +13705,157 @@ ET endstream endobj -1297 0 obj +1308 0 obj << -/Length 7295 +/Length 7462 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(t)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(t)]TJ 0 g 0 G -/F62 9.9626 Tf 8.299 0 Td [(the)-250(global)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 171.221 0 Td [(T)]TJ/F62 9.9626 Tf 6.451 0 Td [(.)]TJ -161.064 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(type)-250(speci\002ed)-250(in)-250(\247)]TJ +/F84 9.9626 Tf 8.299 0 Td [(the)-250(global)-250(portion)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 171.221 0 Td [(T)]TJ/F84 9.9626 Tf 6.451 0 Td [(.)]TJ -161.064 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(type)-250(speci\002ed)-250(in)-250(\247)]TJ 0 0 1 rg 0 0 1 RG [-250(3)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.65 Td [(x)]TJ +/F75 9.9626 Tf -24.907 -20.65 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.614 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.614 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -165.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 589.838 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 589.838 Tm [(psb)]TJ ET q 1 0 0 1 385.864 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 589.838 Td [(T)]TJ +/F131 9.9626 Tf 389.002 589.838 Td [(T)]TJ ET q 1 0 0 1 394.86 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 589.838 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 589.838 Td [(vect)]TJ ET q 1 0 0 1 419.547 590.037 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 589.838 Td [(type)]TJ +/F131 9.9626 Tf 422.685 589.838 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-278(numbers)-278(of)-279(type)-278(speci\002ed)-278(in)-278(T)92(able)]TJ +/F84 9.9626 Tf 1.015 0 0 1 124.802 577.883 Tm [(containing)-247(numbers)-246(of)-247(type)-247(speci\002ed)-246(in)-247(T)91(able)]TJ 0 0 1 rg 0 0 1 RG - [-278(13)]TJ + [-247(13)]TJ 0 g 0 G - [(.)-395(The)-278(rank)-278(of)]TJ/F60 9.9626 Tf 275.498 0 Td [(x)]TJ/F62 9.9626 Tf 7.977 0 Td [(must)-278(be)]TJ -283.475 -11.956 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 52.946 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ + [(.)-307(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 400.366 577.883 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 408.066 577.883 Tm [(must)-247(be)]TJ 1 0 0 1 124.802 565.927 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 52.946 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -82.959 -20.649 Td [(beta)]TJ +/F75 9.9626 Tf -82.959 -20.649 Td [(beta)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F68 9.9626 Tf 44.617 0 Td [(b)]TJ/F62 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(scalar)]TJ/F133 9.9626 Tf 44.617 0 Td [(b)]TJ/F84 9.9626 Tf 5.524 0 Td [(.)]TJ -49.583 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(number)-250(of)-250(the)-250(data)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.65 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -20.65 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.105 0 Td [(.)]TJ -166.164 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 428.986 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 428.986 Tm [(psb)]TJ ET q 1 0 0 1 385.864 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 428.986 Td [(T)]TJ +/F131 9.9626 Tf 389.002 428.986 Td [(T)]TJ ET q 1 0 0 1 394.86 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 428.986 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 428.986 Td [(vect)]TJ ET q 1 0 0 1 419.547 429.186 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 428.986 Td [(type)]TJ +/F131 9.9626 Tf 422.685 428.986 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-280(numbers)-280(of)-280(type)-280(speci\002ed)-280(in)-280(T)92(able)]TJ +/F84 9.9626 Tf 1.016 0 0 1 124.802 417.031 Tm [(containing)-246(numbers)-247(of)-246(type)-247(speci\002ed)-246(in)-246(T)90(able)]TJ 0 0 1 rg 0 0 1 RG - [-280(13)]TJ + [-246(13)]TJ 0 g 0 G - [(.)-400(The)-280(rank)-280(of)]TJ/F60 9.9626 Tf 275.562 0 Td [(y)]TJ/F62 9.9626 Tf 7.895 0 Td [(must)-280(be)]TJ -283.457 -11.955 Td [(the)-250(same)-250(of)]TJ/F60 9.9626 Tf 53.115 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ + [(.)-306(The)-247(rank)-246(of)]TJ/F78 9.9626 Tf 1 0 0 1 400.434 417.031 Tm [(y)]TJ/F84 9.9626 Tf 1.016 0 0 1 408.034 417.031 Tm [(must)-246(be)]TJ 1 0 0 1 124.802 405.076 Tm [(the)-250(same)-250(of)]TJ/F78 9.9626 Tf 53.115 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.228 -20.65 Td [(desc)]TJ +/F75 9.9626 Tf -83.228 -20.65 Td [(desc)]TJ ET q 1 0 0 1 120.408 384.625 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 384.426 Td [(a)]TJ +/F75 9.9626 Tf 123.397 384.426 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 336.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 336.605 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 336.605 Td [(desc)]TJ ET q 1 0 0 1 298.05 336.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 336.605 Td [(type)]TJ +/F131 9.9626 Tf 301.189 336.605 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -20.649 Td [(trans)]TJ +/F75 9.9626 Tf -222.215 -20.649 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(specify)-250(with)]TJ/F60 9.9626 Tf 56.398 0 Td [(unitd)]TJ/F62 9.9626 Tf 24.637 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(specify)-250(with)]TJ/F78 9.9626 Tf 56.398 0 Td [(unitd)]TJ/F84 9.9626 Tf 24.637 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ 0 g 0 G -/F59 9.9626 Tf -83.794 -20.65 Td [(trans)-250(=)-250('N')]TJ +/F75 9.9626 Tf -83.794 -20.65 Td [(trans)-250(=)-250('N')]TJ 0 g 0 G -/F62 9.9626 Tf 52.522 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(transposed)-250(matrix)]TJ +/F84 9.9626 Tf 52.522 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(transposed)-250(matrix)]TJ 0 g 0 G -/F59 9.9626 Tf -52.522 -16.303 Td [(trans)-250(=)-250('T')]TJ +/F75 9.9626 Tf -52.522 -16.303 Td [(trans)-250(=)-250('T')]TJ 0 g 0 G -/F62 9.9626 Tf 50.869 0 Td [(the)-250(operation)-250(is)-250(with)-250(transposed)-250(matrix.)]TJ +/F84 9.9626 Tf 50.869 0 Td [(the)-250(operation)-250(is)-250(with)-250(transposed)-250(matrix.)]TJ 0 g 0 G -/F59 9.9626 Tf -50.869 -16.302 Td [(trans)-250(=)-250('C')]TJ +/F75 9.9626 Tf -50.869 -16.302 Td [(trans)-250(=)-250('C')]TJ 0 g 0 G -/F62 9.9626 Tf 51.417 0 Td [(the)-250(operation)-250(is)-250(with)-250(conjugate)-250(transposed)-250(matrix.)]TJ -51.417 -20.65 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F93 10.3811 Tf 25.193 0 Td [(=)]TJ/F60 9.9626 Tf 11.434 0 Td [(N)]TJ/F62 9.9626 Tf -75.267 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ +/F84 9.9626 Tf 51.417 0 Td [(the)-250(operation)-250(is)-250(with)-250(conjugate)-250(transposed)-250(matrix.)]TJ -51.417 -20.65 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(t)-15(r)-50(a)-25(n)-25(s)]TJ/F181 10.3811 Tf 25.193 0 Td [(=)]TJ/F78 9.9626 Tf 11.434 0 Td [(N)]TJ/F84 9.9626 Tf -75.267 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.65 Td [(unitd)]TJ +/F75 9.9626 Tf -24.907 -20.65 Td [(unitd)]TJ 0 g 0 G -/F62 9.9626 Tf 29.878 0 Td [(specify)-250(with)]TJ/F60 9.9626 Tf 56.398 0 Td [(trans)]TJ/F62 9.9626 Tf 23.521 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ +/F84 9.9626 Tf 29.878 0 Td [(specify)-250(with)]TJ/F78 9.9626 Tf 56.398 0 Td [(trans)]TJ/F84 9.9626 Tf 23.521 0 Td [(the)-250(operation)-250(to)-250(perform.)]TJ 0 g 0 G -/F59 9.9626 Tf -84.89 -20.649 Td [(unitd)-250(=)-250('U')]TJ +/F75 9.9626 Tf -84.89 -20.649 Td [(unitd)-250(=)-250('U')]TJ 0 g 0 G -/F62 9.9626 Tf 54.186 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(scaling)]TJ +/F84 9.9626 Tf 54.186 0 Td [(the)-250(operation)-250(is)-250(with)-250(no)-250(scaling)]TJ 0 g 0 G -/F59 9.9626 Tf -54.186 -16.303 Td [(unitd)-250(=)-250('L)74(')]TJ +/F75 9.9626 Tf -54.186 -16.303 Td [(unitd)-250(=)-250('L)74(')]TJ 0 g 0 G -/F62 9.9626 Tf 51.785 0 Td [(the)-250(operation)-250(is)-250(with)-250(left)-250(scaling)]TJ +/F84 9.9626 Tf 51.785 0 Td [(the)-250(operation)-250(is)-250(with)-250(left)-250(scaling)]TJ 0 g 0 G -/F59 9.9626 Tf -51.785 -16.302 Td [(unitd)-250(=)-250('R')]TJ +/F75 9.9626 Tf -51.785 -16.302 Td [(unitd)-250(=)-250('R')]TJ 0 g 0 G -/F62 9.9626 Tf 53.628 0 Td [(the)-250(operation)-250(is)-250(with)-250(right)-250(scaling.)]TJ +/F84 9.9626 Tf 53.628 0 Td [(the)-250(operation)-250(is)-250(with)-250(right)-250(scaling.)]TJ 0 g 0 G 88.34 -29.888 Td [(51)]TJ 0 g 0 G @@ -13863,22 +13863,22 @@ ET endstream endobj -1303 0 obj +1314 0 obj << -/Length 4541 +/Length 4635 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 175.611 706.129 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(u)-25(n)-18(i)-32(t)-25(d)]TJ/F93 10.3811 Tf 26.159 0 Td [(=)]TJ/F60 9.9626 Tf 10.927 0 Td [(U)]TJ/F62 9.9626 Tf -75.726 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ +/F84 9.9626 Tf 175.611 706.129 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(u)-25(n)-18(i)-32(t)-25(d)]TJ/F181 10.3811 Tf 26.159 0 Td [(=)]TJ/F78 9.9626 Tf 10.927 0 Td [(U)]TJ/F84 9.9626 Tf -75.726 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(choice)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(choice)]TJ 0 g 0 G -/F62 9.9626 Tf 33.753 0 Td [(speci\002es)-250(the)-250(update)-250(of)-250(overlap)-250(elements)-250(to)-250(be)-250(performed)-250(on)-250(exit:)]TJ +/F84 9.9626 Tf 33.753 0 Td [(speci\002es)-250(the)-250(update)-250(of)-250(overlap)-250(elements)-250(to)-250(be)-250(performed)-250(on)-250(exit:)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -3.865 -19.925 Td [(psb_none_)]TJ +/F131 9.9626 Tf -3.865 -19.925 Td [(psb_none_)]TJ 0 g 0 G 0 g 0 G 0 -15.941 Td [(psb_sum_)]TJ @@ -13887,57 +13887,57 @@ BT 0 -15.94 Td [(psb_avg_)]TJ 0 g 0 G 0 g 0 G - 0 -15.94 Td [(psb_square_root_)]TJ/F62 9.9626 Tf -4.982 -19.925 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F67 9.9626 Tf 38.515 0 Td [(psb_avg_)]TJ/F62 9.9626 Tf -38.515 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ + 0 -15.94 Td [(psb_square_root_)]TJ/F84 9.9626 Tf -4.982 -19.925 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F131 9.9626 Tf 38.516 0 Td [(psb_avg_)]TJ/F84 9.9626 Tf -38.516 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(diag)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(diag)]TJ 0 g 0 G -/F62 9.9626 Tf 24.906 0 Td [(the)-250(diagonal)-250(scaling)-250(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(d)-18(i)-47(a)-47(g)]TJ/F93 10.3811 Tf 18.52 0 Td [(\050)]TJ/F62 9.9626 Tf 4.15 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)-289(=)]TJ/F62 9.9626 Tf 18.002 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)-25(o)-35(s)-25(c)-40(a)-25(l)-48(i)-32(n)-47(g)]TJ/F93 10.3811 Tf 41.384 0 Td [(\051)]TJ/F62 9.9626 Tf -135.182 -11.955 Td [(Speci\002ed)-293(as:)-395(a)-293(rank)-293(one)-293(array)-292(containing)-293(numbers)-293(of)-293(the)-292(type)-293(indicated)]TJ 0 -11.955 Td [(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 24.906 0 Td [(the)-250(diagonal)-250(scaling)-250(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(d)-18(i)-47(a)-47(g)]TJ/F181 10.3811 Tf 18.52 0 Td [(\050)]TJ/F84 9.9626 Tf 4.15 0 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\051)-289(=)]TJ/F84 9.9626 Tf 18.002 0 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)-25(o)-35(s)-25(c)-40(a)-25(l)-48(i)-32(n)-47(g)]TJ/F181 10.3811 Tf 41.384 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.611 423.19 Tm [(Speci\002ed)-253(as:)-316(a)-253(rank)-254(one)-253(array)-254(containing)-253(numbers)-254(of)-253(the)-253(type)-254(indicated)-253(in)]TJ 1 0 0 1 175.303 411.235 Tm [(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(work)]TJ +/F75 9.9626 Tf -24.598 -19.926 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(a)-250(work)-250(array)111(.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-344(as:)-498(a)-344(rank)-343(one)-344(array)-344(of)-344(the)-344(same)-344(type)-344(of)]TJ/F60 9.9626 Tf 229.679 0 Td [(x)]TJ/F62 9.9626 Tf 8.631 0 Td [(with)-344(the)-344(T)74(ARGET)]TJ -238.31 -11.955 Td [(attribute.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(a)-250(work)-250(array)111(.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 1.02 0 0 1 175.611 343.489 Tm [(Speci\002ed)-304(as:)-423(a)-305(rank)-304(one)-304(array)-305(of)-304(the)-305(same)-304(type)-305(of)]TJ/F78 9.9626 Tf 1 0 0 1 405.107 343.489 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 413.407 343.489 Tm [(with)-304(the)-305(T)73(ARGET)]TJ 1 0 0 1 175.611 331.534 Tm [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.445 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-379(as:)-568(an)-379(array)-379(of)-379(rank)-379(one)-379(or)-379(two)-379(containing)-379(numbers)-379(of)-379(type)]TJ 0 -11.955 Td [(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.445 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -166.165 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 1.02 0 0 1 175.611 243.862 Tm [(Speci\002ed)-330(as:)-475(an)-331(array)-330(of)-331(rank)-330(one)-330(or)-331(two)-330(containing)-331(numbers)-330(of)-331(type)]TJ 1 0 0 1 175.611 231.907 Tm [(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(13)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.943 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -73.723 Td [(52)]TJ + 142.356 -73.723 Td [(52)]TJ 0 g 0 G ET endstream endobj -1314 0 obj +1325 0 obj << -/Length 7550 +/Length 7722 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.14)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.14)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(gemlt)-250(\227)-250(Entrywise)-250(Product)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F60 9.9626 Tf 299.677 0 Td [(x)]TJ/F62 9.9626 Tf 7.697 0 Td [(and)]TJ/F60 9.9626 Tf 19.481 0 Td [(y)]TJ -187.918 -21.112 Td [(d)-25(o)-35(t)]TJ/F91 10.3811 Tf 16.336 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F60 9.9626 Tf 4.274 0 Td [(y)]TJ/F93 10.3811 Tf 5.231 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ/F67 9.9626 Tf -187.465 -21.111 Td [(psb_gemlt\050x,)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(gemlt)-250(\227)-250(Entrywise)-250(Product)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(pr)18(oduct)-250(between)-250(two)-250(vectors)]TJ/F78 9.9626 Tf 299.677 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ -187.61 -21.112 Td [(d)-25(o)-35(t)]TJ/F179 10.3811 Tf 16.336 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F78 9.9626 Tf 4.274 0 Td [(y)]TJ/F181 10.3811 Tf 5.231 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ/F131 9.9626 Tf -187.465 -21.111 Td [(psb_gemlt\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -13956,42 +13956,42 @@ q []0 d 0 J 0.398 w 0 0 m 177.433 0 l S Q BT -/F60 9.9626 Tf 189.137 622.328 Td [(d)-25(o)-35(t)]TJ/F62 9.9626 Tf 13.444 0 Td [(,)]TJ/F60 9.9626 Tf 5.275 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 91.759 0 Td [(Function)]TJ +/F78 9.9626 Tf 189.137 622.328 Td [(d)-25(o)-35(t)]TJ/F84 9.9626 Tf 13.444 0 Td [(,)]TJ/F78 9.9626 Tf 5.275 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 91.759 0 Td [(Function)]TJ ET q 1 0 0 1 183.035 618.542 cm []0 d 0 J 0.398 w 0 0 m 177.433 0 l S Q BT -/F62 9.9626 Tf 189.012 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 189.012 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 326.246 610.173 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 609.974 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 329.235 609.974 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 326.246 598.218 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 598.019 Td [(gemlt)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 329.235 598.019 Td [(gemlt)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 326.246 586.263 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 586.064 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 329.235 586.064 Td [(gemlt)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 326.246 574.308 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.235 574.109 Td [(gemlt)]TJ +/F84 9.9626 Tf 329.235 574.109 Td [(gemlt)]TJ ET q 1 0 0 1 183.035 570.323 cm @@ -13999,159 +13999,159 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(14:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(14:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 174.06 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 174.06 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 421.578 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 421.578 Tm [(psb)]TJ ET q -1 0 0 1 280.646 421.777 cm +1 0 0 1 280.022 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 421.578 Td [(T)]TJ +/F131 9.9626 Tf 283.16 421.578 Td [(T)]TJ ET q -1 0 0 1 289.642 421.777 cm +1 0 0 1 289.018 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 421.578 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 421.578 Td [(vect)]TJ ET q -1 0 0 1 314.33 421.777 cm +1 0 0 1 313.705 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 421.578 Td [(type)]TJ +/F131 9.9626 Tf 316.843 421.578 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 421.578 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 409.623 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 173.89 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 173.89 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 342.199 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 342.199 Tm [(psb)]TJ ET q -1 0 0 1 280.646 342.398 cm +1 0 0 1 280.022 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 342.199 Td [(T)]TJ +/F131 9.9626 Tf 283.16 342.199 Td [(T)]TJ ET q -1 0 0 1 289.642 342.398 cm +1 0 0 1 289.018 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 342.199 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 342.199 Td [(vect)]TJ ET q -1 0 0 1 314.33 342.398 cm +1 0 0 1 313.705 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 342.199 Td [(type)]TJ +/F131 9.9626 Tf 316.843 342.199 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 342.199 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 330.244 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ ET q 1 0 0 1 120.408 310.84 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 310.641 Td [(a)]TJ +/F75 9.9626 Tf 123.397 310.641 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 262.82 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 262.82 Td [(desc)]TJ ET q 1 0 0 1 298.05 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 262.82 Td [(type)]TJ +/F131 9.9626 Tf 301.189 262.82 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.602 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -222.215 -19.602 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.68 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.68 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -151.4 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 175.794 Tm [(Speci\002ed)-240(as:)-309(an)-240(object)-240(of)-240(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 253.899 175.794 Tm [(psb)]TJ ET q -1 0 0 1 280.646 175.993 cm +1 0 0 1 270.218 175.993 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 175.794 Td [(T)]TJ +/F131 9.9626 Tf 273.356 175.794 Td [(T)]TJ ET q -1 0 0 1 289.642 175.993 cm +1 0 0 1 279.214 175.993 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 175.794 Td [(vect)]TJ +/F131 9.9626 Tf 282.352 175.794 Td [(vect)]TJ ET q -1 0 0 1 314.33 175.993 cm +1 0 0 1 303.901 175.993 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 175.794 Td [(type)]TJ +/F131 9.9626 Tf 307.039 175.794 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 330.304 175.794 Tm [(containing)-240(numbers)-240(of)-240(the)]TJ 1 0 0 1 124.802 163.839 Tm [(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ 0 g 0 G -/F62 9.9626 Tf 114.88 -29.888 Td [(53)]TJ +/F84 9.9626 Tf 115.189 -29.888 Td [(53)]TJ 0 g 0 G ET endstream endobj -1319 0 obj +1330 0 obj << /Length 314 >> @@ -14159,30 +14159,30 @@ stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 175.611 706.129 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 175.611 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -603.736 Td [(54)]TJ + 142.356 -603.736 Td [(54)]TJ 0 g 0 G ET endstream endobj -1330 0 obj +1341 0 obj << -/Length 7518 +/Length 7699 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.15)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.15)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(division)-250(between)-250(two)-250(vectors)]TJ/F60 9.9626 Tf 300.604 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)]TJ/F60 9.9626 Tf 19.482 0 Td [(y)]TJ/F62 9.9626 Tf -188.347 -21.112 Td [(/)]TJ/F91 10.3811 Tf 9.054 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.274 0 Td [(/)]TJ/F60 9.9626 Tf 6.286 0 Td [(y)]TJ/F93 10.3811 Tf 5.231 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ/F67 9.9626 Tf -186.967 -21.111 Td [(psb_gediv\050x,)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(gediv)-250(\227)-250(Entrywise)-250(Division)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(division)-250(between)-250(two)-250(vectors)]TJ/F78 9.9626 Tf 300.603 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)]TJ/F78 9.9626 Tf 19.482 0 Td [(y)]TJ/F84 9.9626 Tf -188.038 -21.112 Td [(/)]TJ/F179 10.3811 Tf 9.054 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 4.274 0 Td [(/)]TJ/F78 9.9626 Tf 6.286 0 Td [(y)]TJ/F181 10.3811 Tf 5.231 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ/F131 9.9626 Tf -186.967 -21.111 Td [(psb_gediv\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -14204,42 +14204,42 @@ q []0 d 0 J 0.398 w 0 0 m 177.104 0 l S Q BT -/F62 9.9626 Tf 189.301 622.328 Td [(/)-13(,)]TJ/F60 9.9626 Tf 11.437 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(,)]TJ/F60 9.9626 Tf 5.105 0 Td [(y)]TJ/F59 9.9626 Tf 99.043 0 Td [(Function)]TJ +/F84 9.9626 Tf 189.301 622.328 Td [(/)-13(,)]TJ/F78 9.9626 Tf 11.437 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(,)]TJ/F78 9.9626 Tf 5.105 0 Td [(y)]TJ/F75 9.9626 Tf 99.043 0 Td [(Function)]TJ ET q 1 0 0 1 183.199 618.542 cm []0 d 0 J 0.398 w 0 0 m 177.104 0 l S Q BT -/F62 9.9626 Tf 189.177 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 189.177 609.974 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 326.41 610.173 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 609.974 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 329.399 609.974 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 326.41 598.218 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 598.019 Td [(gediv)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 329.399 598.019 Td [(gediv)]TJ -140.222 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 326.41 586.263 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 586.064 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 329.399 586.064 Td [(gediv)]TJ -140.222 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 326.41 574.308 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.399 574.109 Td [(gediv)]TJ +/F84 9.9626 Tf 329.399 574.109 Td [(gediv)]TJ ET q 1 0 0 1 183.199 570.323 cm @@ -14247,126 +14247,126 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(15:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 541.944 Td [(T)92(able)-250(15:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -33.34 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.603 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 174.06 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 174.06 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 421.578 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 421.578 Tm [(psb)]TJ ET q -1 0 0 1 280.646 421.777 cm +1 0 0 1 280.022 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 421.578 Td [(T)]TJ +/F131 9.9626 Tf 283.16 421.578 Td [(T)]TJ ET q -1 0 0 1 289.642 421.777 cm +1 0 0 1 289.018 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 421.578 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 421.578 Td [(vect)]TJ ET q -1 0 0 1 314.33 421.777 cm +1 0 0 1 313.705 421.777 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 421.578 Td [(type)]TJ +/F131 9.9626 Tf 316.843 421.578 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 421.578 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 409.623 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 173.89 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 173.89 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -164.61 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 342.199 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 342.199 Tm [(psb)]TJ ET q -1 0 0 1 280.646 342.398 cm +1 0 0 1 280.022 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 342.199 Td [(T)]TJ +/F131 9.9626 Tf 283.16 342.199 Td [(T)]TJ ET q -1 0 0 1 289.642 342.398 cm +1 0 0 1 289.018 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 342.199 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 342.199 Td [(vect)]TJ ET q -1 0 0 1 314.33 342.398 cm +1 0 0 1 313.705 342.398 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 342.199 Td [(type)]TJ +/F131 9.9626 Tf 316.843 342.199 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 342.199 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 330.244 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.603 Td [(desc)]TJ ET q 1 0 0 1 120.408 310.84 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 310.641 Td [(a)]TJ +/F75 9.9626 Tf 123.397 310.641 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 262.82 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 262.82 Td [(desc)]TJ ET q 1 0 0 1 298.05 263.02 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 262.82 Td [(type)]TJ +/F131 9.9626 Tf 301.189 262.82 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -19.602 Td [(\003ag)]TJ +/F75 9.9626 Tf -222.215 -19.602 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(check)-280(if)-280(any)-280(of)-280(the)]TJ/F60 9.9626 Tf 84.137 0 Td [(y)]TJ/F93 10.3811 Tf 5.23 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)-343(=)]TJ/F62 9.9626 Tf 19.108 0 Td [(0,)-287(and)-280(in)-280(case)-280(r)18(eturns)-280(err)18(or)-280(halting)-280(the)-280(compu-)]TJ -112.449 -11.956 Td [(tation.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -108.97 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F67 9.9626 Tf 132.133 0 Td [(flag)]TJ +/F84 9.9626 Tf 0.994 0 0 1 121.484 243.218 Tm [(check)-252(if)-252(any)-252(of)-251(the)]TJ/F78 9.9626 Tf 1 0 0 1 203.726 243.218 Tm [(y)]TJ/F181 10.3811 Tf 5.23 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)-290(=)]TJ/F84 9.9626 Tf 0.994 0 0 1 234.264 243.218 Tm [(0,)-252(and)-252(in)-252(case)-252(r)19(eturns)-252(err)18(or)-252(halting)-252(the)-252(computa-)]TJ 1 0 0 1 124.802 231.262 Tm [(tion.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -108.661 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F131 9.9626 Tf 132.133 0 Td [(flag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -157.04 -19.603 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -157.04 -19.603 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.603 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.849 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -151.111 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.849 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -151.111 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0 g 0 G 85.819 -29.888 Td [(55)]TJ 0 g 0 G @@ -14374,71 +14374,71 @@ ET endstream endobj -1336 0 obj +1347 0 obj << -/Length 1288 +/Length 1341 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 175.611 706.129 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 0.98 0 0 1 175.611 706.129 Tm [(Speci\002ed)-240(as:)-309(an)-240(object)-240(of)-240(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 304.709 706.129 Tm [(psb)]TJ ET q -1 0 0 1 331.456 706.328 cm +1 0 0 1 321.027 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 334.594 706.129 Td [(T)]TJ +/F131 9.9626 Tf 324.166 706.129 Td [(T)]TJ ET q -1 0 0 1 340.452 706.328 cm +1 0 0 1 330.023 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 343.59 706.129 Td [(vect)]TJ +/F131 9.9626 Tf 333.162 706.129 Td [(vect)]TJ ET q -1 0 0 1 365.139 706.328 cm +1 0 0 1 354.711 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 368.277 706.129 Td [(type)]TJ +/F131 9.9626 Tf 357.849 706.129 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.453 0 Td [(containing)-354(numbers)-355(of)]TJ -217.119 -11.955 Td [(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 381.113 706.129 Tm [(containing)-240(numbers)-240(of)-240(the)]TJ 1 0 0 1 175.611 694.174 Tm [(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(14)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -535.99 Td [(56)]TJ + 142.356 -535.99 Td [(56)]TJ 0 g 0 G ET endstream endobj -1345 0 obj +1356 0 obj << -/Length 7434 +/Length 7613 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(4.16)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(4.16)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(inverse)-250(of)-250(a)-250(vector)]TJ/F60 9.9626 Tf 252.097 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(and)-250(puts)-250(it)-250(into)]TJ/F60 9.9626 Tf 69.951 0 Td [(y)]TJ/F62 9.9626 Tf -184.401 -18.334 Td [(/)]TJ/F91 10.3811 Tf 9.054 0 Td [(\040)]TJ/F62 9.9626 Tf 13.272 0 Td [(1)-13(/)]TJ/F60 9.9626 Tf 11.562 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)]TJ/F67 9.9626 Tf -181.059 -18.334 Td [(psb_geinv\050x,)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(geinv)-250(\227)-250(Entrywise)-250(Inversion)]TJ/F84 9.9626 Tf -57.406 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(entrywise)-250(inverse)-250(of)-250(a)-250(vector)]TJ/F78 9.9626 Tf 252.096 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(and)-250(puts)-250(it)-250(into)]TJ/F78 9.9626 Tf 69.951 0 Td [(y)]TJ/F84 9.9626 Tf -184.092 -18.334 Td [(/)]TJ/F179 10.3811 Tf 9.054 0 Td [(\040)]TJ/F84 9.9626 Tf 13.272 0 Td [(1)-13(/)]TJ/F78 9.9626 Tf 11.562 0 Td [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 4.149 0 Td [(.)]TJ/F131 9.9626 Tf -181.059 -18.334 Td [(psb_geinv\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(y,)]TJ @@ -14460,42 +14460,42 @@ q []0 d 0 J 0.398 w 0 0 m 176.815 0 l S Q BT -/F62 9.9626 Tf 189.446 628.995 Td [(/)-12(,)]TJ/F60 9.9626 Tf 11.437 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(,)]TJ/F60 9.9626 Tf 5.106 0 Td [(y)]TJ/F59 9.9626 Tf 99.042 0 Td [(Function)]TJ +/F84 9.9626 Tf 189.446 628.995 Td [(/)-12(,)]TJ/F78 9.9626 Tf 11.437 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(,)]TJ/F78 9.9626 Tf 5.106 0 Td [(y)]TJ/F75 9.9626 Tf 99.042 0 Td [(Function)]TJ ET q 1 0 0 1 183.343 625.209 cm []0 d 0 J 0.398 w 0 0 m 176.815 0 l S Q BT -/F62 9.9626 Tf 189.321 616.641 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 189.321 616.641 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 326.555 616.84 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 616.641 Td [(geinv)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 329.544 616.641 Td [(geinv)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 326.555 604.885 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 604.686 Td [(geinv)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 329.544 604.686 Td [(geinv)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 326.555 592.93 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 592.731 Td [(geinv)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 329.544 592.731 Td [(geinv)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 326.555 580.975 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 329.544 580.775 Td [(geinv)]TJ +/F84 9.9626 Tf 329.544 580.775 Td [(geinv)]TJ ET q 1 0 0 1 183.343 576.99 cm @@ -14503,142 +14503,142 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 548.611 Td [(T)92(able)-250(16:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 548.611 Td [(T)92(able)-250(16:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -127.572 -29.451 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -127.572 -29.451 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -18.492 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -18.492 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -18.491 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F60 9.9626 Tf 174.06 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(vector)]TJ/F78 9.9626 Tf 174.06 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -164.321 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 434.356 Tm [(Speci\002ed)-306(as:)-425(an)-306(object)-306(of)-306(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 263.703 434.356 Tm [(psb)]TJ ET q -1 0 0 1 280.646 434.555 cm +1 0 0 1 280.022 434.555 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 434.356 Td [(T)]TJ +/F131 9.9626 Tf 283.16 434.356 Td [(T)]TJ ET q -1 0 0 1 289.642 434.555 cm +1 0 0 1 289.018 434.555 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 434.356 Td [(vect)]TJ +/F131 9.9626 Tf 292.156 434.356 Td [(vect)]TJ ET q -1 0 0 1 314.33 434.555 cm +1 0 0 1 313.705 434.555 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 434.356 Td [(type)]TJ +/F131 9.9626 Tf 316.843 434.356 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 1.02 0 0 1 340.873 434.356 Tm [(containing)-306(numbers)-306(of)]TJ 1 0 0 1 124.802 422.401 Tm [(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(2)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.492 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -18.492 Td [(desc)]TJ ET q 1 0 0 1 120.408 404.108 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 403.909 Td [(a)]TJ +/F75 9.9626 Tf 123.397 403.909 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 132.243 0 Td [(psb)]TJ +/F131 9.9626 Tf 132.243 0 Td [(psb)]TJ ET q 1 0 0 1 273.363 356.288 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 276.501 356.088 Td [(desc)]TJ +/F131 9.9626 Tf 276.501 356.088 Td [(desc)]TJ ET q 1 0 0 1 298.05 356.288 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 301.189 356.088 Td [(type)]TJ +/F131 9.9626 Tf 301.189 356.088 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -222.215 -18.491 Td [(\003ag)]TJ +/F75 9.9626 Tf -222.215 -18.491 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(check)-278(if)-279(any)-278(of)-278(the)]TJ/F60 9.9626 Tf 84.227 0 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)-340(=)]TJ/F62 9.9626 Tf 19.049 0 Td [(0,)-285(and)-279(in)-278(case)-279(r)18(eturns)-278(err)18(or)-278(halting)-279(the)-278(compu-)]TJ -112.58 -11.955 Td [(tation.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -108.97 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F67 9.9626 Tf 132.133 0 Td [(flag)]TJ +/F84 9.9626 Tf 0.993 0 0 1 121.484 337.597 Tm [(check)-252(if)-252(any)-252(of)-252(the)]TJ/F78 9.9626 Tf 1 0 0 1 203.823 337.597 Tm [(x)]TJ/F181 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)-290(=)]TJ/F84 9.9626 Tf 0.993 0 0 1 234.46 337.597 Tm [(0,)-252(and)-252(in)-252(case)-252(r)18(eturns)-252(err)18(or)-252(halting)-252(the)-252(computa-)]TJ 1 0 0 1 124.802 325.642 Tm [(tion.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 40.677 0 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -108.661 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F131 9.9626 Tf 132.133 0 Td [(flag)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -157.04 -18.492 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -157.04 -18.492 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -18.491 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.849 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -151.669 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-354(as:)-519(an)-355(object)-354(of)-355(type)]TJ +/F84 9.9626 Tf 10.521 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.849 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -151.669 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.98 0 0 1 124.802 204.972 Tm [(Speci\002ed)-240(as:)-309(an)-240(object)-240(of)-240(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 139.526 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 253.899 204.972 Tm [(psb)]TJ ET q -1 0 0 1 280.646 205.171 cm +1 0 0 1 270.218 205.171 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 283.785 204.972 Td [(T)]TJ +/F131 9.9626 Tf 273.356 204.972 Td [(T)]TJ ET q -1 0 0 1 289.642 205.171 cm +1 0 0 1 279.214 205.171 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 292.781 204.972 Td [(vect)]TJ +/F131 9.9626 Tf 282.352 204.972 Td [(vect)]TJ ET q -1 0 0 1 314.33 205.171 cm +1 0 0 1 303.901 205.171 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 317.468 204.972 Td [(type)]TJ +/F131 9.9626 Tf 307.039 204.972 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 24.452 0 Td [(containing)-354(numbers)-355(of)]TJ -217.118 -11.955 Td [(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 0.98 0 0 1 330.304 204.972 Tm [(containing)-240(numbers)-240(of)-240(the)]TJ 1 0 0 1 124.802 193.017 Tm [(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(16)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -18.492 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -18.492 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -36.266 Td [(57)]TJ + 142.357 -36.266 Td [(57)]TJ 0 g 0 G ET endstream endobj -1351 0 obj +1362 0 obj << -/Length 623 +/Length 659 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 706.042 Td [(5)-1000(Communication)-250(routines)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-303(r)18(outines)-302(in)-303(this)-303(chapter)-302(implement)-303(various)-303(global)-302(communication)-303(opera-)]TJ 0 -11.955 Td [(tors)-271(on)-271(vectors)-271(associated)-271(with)-271(a)-272(discr)18(etization)-271(mesh.)-373(For)-271(auxiliary)-271(communi-)]TJ 0 -11.955 Td [(cation)-250(r)18(outines)-250(not)-250(tied)-250(to)-250(a)-250(discr)18(etization)-250(space)-250(see)]TJ +/F75 14.3462 Tf 150.705 706.042 Td [(5)-1000(Communication)-250(routines)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.396 683.34 Tm [(The)-234(r)19(outines)-234(in)-233(this)-234(chapter)-234(implement)-233(various)-234(global)-233(communication)-234(operators)]TJ 0.995 0 0 1 150.705 671.385 Tm [(on)-251(vectors)-251(associated)-252(with)-251(a)-251(discr)18(etization)-251(mesh.)-312(For)-251(auxiliary)-252(commu)1(nication)]TJ 1 0 0 1 150.705 659.43 Tm [(r)18(outines)-250(not)-250(tied)-250(to)-250(a)-250(discr)18(etization)-250(space)-250(see)]TJ 0 0 1 rg 0 0 1 RG [-250(6)]TJ 0 g 0 G @@ -14650,26 +14650,26 @@ ET endstream endobj -1359 0 obj +1370 0 obj << -/Length 6634 +/Length 6830 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(5.1)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(5.1)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ/F62 9.9626 Tf -51.121 -19.15 Td [(These)-250(subr)18(outines)-250(gathers)-250(the)-250(values)-250(of)-250(the)-250(halo)-250(elements:)]TJ/F60 9.9626 Tf 158.568 -25.014 Td [(x)]TJ/F91 10.3811 Tf 8.097 0 Td [(\040)]TJ/F60 9.9626 Tf 13.567 0 Td [(x)]TJ/F62 9.9626 Tf -180.232 -22.11 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(halo)-250(\227)-250(Halo)-250(Data)-250(Communication)]TJ/F84 9.9626 Tf -51.429 -19.15 Td [(These)-250(subr)18(outines)-250(gathers)-250(the)-250(values)-250(of)-250(the)-250(halo)-250(elements:)]TJ/F78 9.9626 Tf 158.876 -25.014 Td [(x)]TJ/F179 10.3811 Tf 8.097 0 Td [(\040)]TJ/F78 9.9626 Tf 13.567 0 Td [(x)]TJ/F84 9.9626 Tf -180.65 -22.11 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.294 -20.212 Td [(x)]TJ +/F78 9.9626 Tf 0.712 -20.212 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.187 0 Td [(is)-250(a)-250(global)-250(dense)-250(submatrix.)]TJ +/F84 9.9626 Tf 10.187 0 Td [(is)-250(a)-250(global)-250(dense)-250(submatrix.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -14679,49 +14679,49 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F68 9.9626 Tf 185.685 587.758 Td [(a)]TJ/F62 9.9626 Tf 5.384 0 Td [(,)]TJ/F60 9.9626 Tf 5.276 0 Td [(x)]TJ/F59 9.9626 Tf 110.13 0 Td [(Subroutine)]TJ +/F133 9.9626 Tf 185.685 587.758 Td [(a)]TJ/F84 9.9626 Tf 5.384 0 Td [(,)]TJ/F78 9.9626 Tf 5.276 0 Td [(x)]TJ/F75 9.9626 Tf 110.13 0 Td [(Subroutine)]TJ ET q 1 0 0 1 179.582 583.972 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 185.56 575.404 Td [(Integer)-8983(psb)]TJ +/F84 9.9626 Tf 185.56 575.404 Td [(Integer)-8983(psb)]TJ ET q 1 0 0 1 322.794 575.603 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 575.404 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 325.783 575.404 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 322.794 563.648 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 563.449 Td [(halo)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 325.783 563.449 Td [(halo)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 322.794 551.693 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 551.494 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 325.783 551.494 Td [(halo)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 322.794 539.738 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 539.539 Td [(halo)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 325.783 539.539 Td [(halo)]TJ -140.223 -11.956 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 322.794 527.783 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 325.783 527.583 Td [(halo)]TJ +/F84 9.9626 Tf 325.783 527.583 Td [(halo)]TJ ET q 1 0 0 1 179.582 523.798 cm @@ -14729,11 +14729,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 227.467 495.419 Td [(T)92(able)-250(17:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 227.467 495.419 Td [(T)92(able)-250(17:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -127.572 -24.102 Td [(call)]TJ +/F131 9.9626 Tf -127.572 -24.102 Td [(call)]TJ 0 g 0 G [-525(psb_halo\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -14762,82 +14762,82 @@ BT 0 g 0 G [(\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.301 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.301 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.308 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.308 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.309 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 89.688 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -79.949 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 89.688 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -79.949 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 348.623 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-247(an)-248(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 369.545 348.623 Tm [(psb)]TJ ET q 1 0 0 1 385.864 348.823 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 389.002 348.623 Td [(T)]TJ +/F131 9.9626 Tf 389.002 348.623 Td [(T)]TJ ET q 1 0 0 1 394.86 348.823 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 397.998 348.623 Td [(vect)]TJ +/F131 9.9626 Tf 397.998 348.623 Td [(vect)]TJ ET q 1 0 0 1 419.547 348.823 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.685 348.623 Td [(type)]TJ +/F131 9.9626 Tf 422.685 348.623 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.883 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(17)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.308 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -20.308 Td [(desc)]TJ ET q 1 0 0 1 120.408 316.559 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 316.36 Td [(a)]TJ +/F75 9.9626 Tf 123.397 316.36 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 268.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 268.539 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 268.539 Td [(desc)]TJ ET q 1 0 0 1 333.945 268.738 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 268.539 Td [(type)]TJ +/F131 9.9626 Tf 337.084 268.539 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.308 Td [(work)]TJ +/F75 9.9626 Tf -258.11 -20.308 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F60 9.9626 Tf 218.454 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F78 9.9626 Tf 218.454 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -248.566 -20.309 Td [(data)]TJ +/F75 9.9626 Tf -248.566 -20.309 Td [(data)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(index)-250(list)-250(selector)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)74(.)-290(V)92(alues:)]TJ/F67 9.9626 Tf 136.507 0 Td [(psb_comm_halo_)]TJ/F62 9.9626 Tf 73.224 0 Td [(,)]TJ/F67 9.9626 Tf 2.491 0 Td [(psb_comm_mov_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_comm_ext_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ -352.714 -11.955 Td [(default:)]TJ/F67 9.9626 Tf 39.042 0 Td [(psb_comm_halo_)]TJ/F62 9.9626 Tf 73.225 0 Td [(.)-634(Chooses)-358(the)-358(index)-358(list)-358(on)-357(which)-358(to)-358(base)-358(the)]TJ -112.267 -11.955 Td [(data)-250(exchange.)]TJ +/F84 9.9626 Tf 24.349 0 Td [(index)-250(list)-250(selector)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 0.98 0 0 1 124.802 144.236 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)75(.)-296(V)94(alues:)]TJ/F131 9.9626 Tf 1 0 0 1 258.735 144.236 Tm [(psb_comm_halo_)]TJ/F84 9.9626 Tf 0.98 0 0 1 331.96 144.236 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 334.4 144.236 Tm [(psb_comm_mov_)]TJ/F84 9.9626 Tf 0.98 0 0 1 402.395 144.236 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 406.848 144.236 Tm [(psb_comm_ext_)]TJ/F84 9.9626 Tf 0.98 0 0 1 474.843 144.236 Tm [(,)]TJ 0.98 0 0 1 124.802 132.281 Tm [(default:)]TJ/F131 9.9626 Tf 1 0 0 1 160.849 132.281 Tm [(psb_comm_halo_)]TJ/F84 9.9626 Tf 0.98 0 0 1 234.074 132.281 Tm [(.)-305(Chooses)-220(the)-221(index)-221(list)-220(on)-221(which)-220(to)-221(base)-221(the)-220(data)]TJ 1 0 0 1 124.802 120.326 Tm [(exchange.)]TJ 0 g 0 G 141.968 -29.888 Td [(59)]TJ 0 g 0 G @@ -14845,29 +14845,29 @@ ET endstream endobj -1366 0 obj +1377 0 obj << -/Length 3039 +/Length 3213 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F60 9.9626 Tf 117.085 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Returned)-285(as:)-381(a)-285(rank)-285(one)-286(or)-285(two)-285(array)-285(containing)-285(numbers)-286(of)-285(type)-285(speci-)]TJ 0 -11.955 Td [(\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 9.962 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F78 9.9626 Tf 117.085 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 638.383 Tm [(Returned)-228(as:)-303(a)-227(rank)-228(one)-228(or)-228(two)-228(array)-228(containing)-228(numbers)-228(of)-227(type)-228(speci\002ed)]TJ 1 0 0 1 175.611 626.428 Tm [(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(17)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F60 9.9626 Tf 160.68 0 Td [(y)]TJ/F62 9.9626 Tf 5.106 0 Td [(.)]TJ -164.68 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value)-250(that)-250(contains)-250(an)-250(err)18(or)-250(code.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(the)-250(local)-250(portion)-250(of)-250(r)18(esult)-250(submatrix)]TJ/F78 9.9626 Tf 160.68 0 Td [(y)]TJ/F84 9.9626 Tf 5.106 0 Td [(.)]TJ -164.68 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value)-250(that)-250(contains)-250(an)-250(err)18(or)-250(code.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -14883,14 +14883,14 @@ Q 0 g 0 G 1 0 0 1 -210.511 -336.406 cm BT -/F62 9.9626 Tf 240.086 304.526 Td [(Figur)18(e)-250(3:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ +/F84 9.9626 Tf 240.086 304.526 Td [(Figur)18(e)-250(3:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ 0 g 0 G 0 g 0 G -/F59 11.9552 Tf -89.381 -23.91 Td [(Usage)-325(Example)]TJ/F62 9.9626 Tf 87.482 0 Td [(Consider)-325(the)-325(discr)18(etization)-324(mesh)-325(depicted)-325(in)-325(\002g.)]TJ +/F75 11.9552 Tf 1.02 0 0 1 150.705 280.616 Tm [(Usage)-275(Example)]TJ/F84 9.9626 Tf 1.02 0 0 1 238.834 280.616 Tm [(Consider)-275(the)-276(discr)18(etization)-276(mesh)-275(depicted)-276(in)-275(\002g.)]TJ 0 0 1 rg 0 0 1 RG - [-325(3)]TJ + [-276(3)]TJ 0 g 0 G - [(,)-343(parti-)]TJ -87.482 -11.956 Td [(tioned)-219(among)-220(two)-219(pr)18(ocesses)-220(as)-219(shown)-220(b)1(y)-220(the)-219(dashed)-220(line;)-229(the)-220(data)-219(distribution)]TJ 0 -11.955 Td [(is)-343(such)-342(that)-343(each)-343(pr)18(ocess)-343(will)-342(own)-343(32)-343(entries)-343(in)-342(the)-343(index)-343(space,)-366(with)-342(a)-343(halo)]TJ 0 -11.955 Td [(made)-355(of)-355(8)-355(entries)-355(place)1(d)-355(at)-355(local)-355(indices)-355(33)-355(thr)18(ough)-355(40.)-624(If)-355(pr)18(ocess)-355(0)-355(assigns)]TJ 0 -11.955 Td [(an)-280(initial)-280(value)-280(of)-281(1)-280(to)-280(its)-280(entries)-280(in)-280(the)]TJ/F60 9.9626 Tf 173.857 0 Td [(x)]TJ/F62 9.9626 Tf 7.997 0 Td [(vector)74(,)-288(and)-280(pr)18(ocess)-280(1)-280(assigns)-280(a)-280(value)]TJ -181.854 -11.955 Td [(of)-314(2,)-329(then)-313(after)-314(a)-314(c)1(a)-1(l)1(l)-314(to)]TJ/F67 9.9626 Tf 106.994 0 Td [(psb_halo)]TJ/F62 9.9626 Tf 44.966 0 Td [(the)-314(conten)1(ts)-314(of)-314(the)-313(local)-314(vectors)-313(will)-314(be)-313(the)]TJ -151.96 -11.955 Td [(following:)]TJ + [(,)-283(parti-)]TJ 0.989 0 0 1 150.705 268.66 Tm [(tioned)-252(among)-252(two)-253(pr)18(oc)1(esses)-253(as)-252(shown)-252(by)-253(t)1(he)-253(dashed)-252(line;)-252(the)-253(data)-252(distribution)]TJ 1.02 0 0 1 150.705 256.705 Tm [(is)-298(such)-299(that)-298(each)-298(pr)18(ocess)-299(will)-298(own)-298(32)-298(entries)-299(in)-298(the)-298(index)-299(space,)-311(with)-298(a)-299(halo)]TJ 1.02 0 0 1 150.705 244.75 Tm [(made)-312(of)-312(8)-312(entries)-312(placed)-312(at)-312(local)-312(indices)-312(33)-312(thr)18(ough)-312(40.)-505(If)-312(pr)17(ocess)-312(0)-312(assigns)]TJ 1.018 0 0 1 150.705 232.795 Tm [(an)-245(initial)-245(value)-246(of)-245(1)-245(to)-245(its)-245(entries)-245(in)-246(the)]TJ/F78 9.9626 Tf 1 0 0 1 324.14 232.795 Tm [(x)]TJ/F84 9.9626 Tf 1.018 0 0 1 331.832 232.795 Tm [(vector)73(,)-246(and)-245(pr)18(ocess)-245(1)-245(assigns)-246(a)-245(value)]TJ 1.02 0 0 1 150.705 220.84 Tm [(of)-277(2,)-285(then)-277(after)-276(a)-277(call)-277(to)]TJ/F131 9.9626 Tf 1 0 0 1 257.152 220.84 Tm [(psb_halo)]TJ/F84 9.9626 Tf 1.02 0 0 1 301.808 220.84 Tm [(the)-277(contents)-277(of)-277(the)-277(local)-276(vectors)-277(will)-277(be)-277(the)]TJ 1 0 0 1 150.705 208.885 Tm [(following:)]TJ 0 g 0 G 166.874 -118.447 Td [(60)]TJ 0 g 0 G @@ -14898,20 +14898,20 @@ ET endstream endobj -1362 0 obj +1373 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1369 0 R +/PTEX.InfoDict 1380 0 R /BBox [0 0 498 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1370 0 R ->>/Font << /R8 1371 0 R/R10 1372 0 R>> +/R7 1381 0 R +>>/Font << /R8 1382 0 R/R10 1383 0 R>> >> /Length 3349 /Filter /FlateDecode @@ -14923,191 +14923,109 @@ U1 6ɖOWbzSE 0ˮΨxܳ>PU|h>^yԎX<Af\dy׎X<v4U3ڱz?Tjm~/[}:~<ωק/ߟvvݾkeo]{??~Cޟ#aYaX)'Wk3{ο*{ endstream endobj -1375 0 obj +1267 0 obj << -/Filter /FlateDecode -/Subtype /Type1C -/Length 13073 ->> -stream -xwxW?laό rG5hB'ZBL1`pø˶$KeK%Yr-˽w L% $$$m{Ȗ<<~4ss>s -o%!)&c攤}7#-VyR/<1cNc~G8fA>~<ެ5onݼ &.II'KO:mh4&#!.yIV̡Ԥď/<~sL\}Dsݧ<*wjM}~___;bd,`|< -) 'G;?̷с'7ɏ=, c|?1;nkc]4vƍ-p+ -|ApQg ͿؿĿɿӿI0`I@x2 0$TՀ d_ |#p]`Z`f5.b? ~򠸠 ڠ栎A烾 67P('|S8[ppp0Gh -&aGxE ! O^*8|=q?wʇRSsJjOTUBPT'uI=L&%"E0KDSEDEDEE[D"HdEuI% m}WE#!CD!lĐi!C, Y1$2$>Db ) q4t9r!Ð!C~- -S+F~*hb8PoJ)R2dV8ܪ&\YR)z%-V p;qFߦldz3n'-ڵVZX箷mF;k(5:'[2 4i<o ?3[pP ?ϦP8^AQ:̮4 AF%ɖGkgN'vuLB@Q8t{`;'Pp',\8.0O5 -C -bc}{C}¡F΁3bt񪝻O[w -v2RcpmIjk4Ϸ@wؗ/:/>ڱ##*z#Z<{)2mbи߀A0gvN)' £V.<x8M9sc_À%dM$ p`iɩnp}E}*]E|%<$v*'PN¢݇kV0y,!o2LAXpTE&¸1/wg@7jKvYr7%Ptw⣹}im`̬4j -M|B_k6u.$.a>H Z8 /흴3k_ٝ`B(HG4f[Jm{/ e{ ֓]qH'1e_LZ٭ -rĀifeŦruɈah~F/%-&O-yn-7>m|f]5 tySs9Pa:bϝn>y9rc1$bLNg3-%%"AۛK(U3ya1!9b<ᵈ|yzaK#_ޛBJ|b{ʇV>p$x Ka]hc*IfTYt|JQJ у|pz (E g1ǣݨ.$v8O$:@IU*+X0W"ђ8%ף{MNe'!F0K?y ӾwO>Y췋2N{F?Qp [`8&-h3& oysø߈Adl3JR@y{HwE҅ĽjU!wߚ[a8GS#U\cx@?7Rgkf2.'"B>*=K=Ŝ# D6Z55A‡iȪbJU.%Z5 ' 7K 9#kziΒ?JVP@Q*ldžΟ:5%P=Iqq1m}m,`6ˍ}ap-ǣ VEo) -sh,:8?_fdJX;&mm-0T09^1`,/r"g6Qh>N߬ K*rSe.͍`G㶢y|?S-vVpv3ՠ5RU_c9~ K{]5([OSS _ erG-S?fV( -Cs]e tFqM3ߝ+U^WqzE";ՙh5[>#!-&%."W;'3P7`°$W@"A YhDM}].NTv.FC?ӠЋê}lNcnšz~mky1giE{:I^R_HÉkwNy&PPrX_ -;ӸFd4L퓋=w%1l(/Ϸbgz '}`g(ď w -GCv nJH{/p#'n2#FBgE*iuJVeYtb<5Sz6\B>nP8YjقL$B 9R\*g*]8(|Wyjܳ .=IMG+Ih ifqZPχ=72Ǒn$ 3D>bDFϚ$ؤAWveY BoI[a+.J5,JtƤ!Y ̀'5qCPZZd+4rwsÑX"XJEѵaDgH̃\q{O?߾Y#W+wk`Um-OƱ* c8n8G$蠟-\T#oiutXX]憚tcmslbڙqd,$#$ح@AK25,*YYk|,e[e9D?c%TbZZbbsZgGssggZ!?Rö6Z[/Pؒ8Q,_40|b>?G} Spk\ojXZM|8;X 2 `a+^3xSD.Bj= ?5xXVLZpjU!A4>:DWEC ;vQI8Q$p8A$Тz<8`k'hGhvnsK)D㐆+!μ|.*4 -Wb]r$H,kV:SSyLJgˣ9YKhGMCDduRW3Mrl]Kɒb2IYA{$؟_Yg՚909R+y:b>MZ -m~ޙ>y&nڙel}4+*}&|$z#( -fr1.wrl8 ;h+(EvDb7]FqCf(nH#"Kn)(ͨ5Xi{T{'Z/:dWY1칛Yt}džO\E~)h@)ʣ4Elyy!{ ȯŀj R%ߐ I5h2Ujdb@͗T;U̎CҦeiJZf(3<+TJJe^ljmsV72]qlRt^n<%H<B.֞憓Ȃg?"!pQ kp=e , O)1ŵYׁej{h4#܁FZ$rso;#V$dr&e;yf( $AJHP/`䵛UE,q. J$Z5gŞ8voua ~rk22reఄ pR|}R)%rv7BM7'&Q#qbw@?{0@=7HQgHۮwQk:!ym' - F)[+ncіG>?)NCi -!:+V`OLۣ߰L@'LG?wze;HhGFxpv(Hu"(r3(OI.Iw8&(|f|N_CZO%R -;ʪaN{0<8\|Q_ei۶̓ X/2R PQMyTPk?9nWHBՂƸ߮/L1/)%9limo#SYTLZ@b[N,E@wQu`_v+j_1p};DN่Ūq||-ogRiJ2pVCqbB1|A9v8__n{CByCw8}ǃ|+͹yn@H(,^?'AQ4ō}[5 -xⒹg7z±⏮gDŽt0̡yd=Q"G3:֪^ɜWaVAA`)h{aqm_鋂O^8۠tf'1ǒW~Z=~a|/c\@y5|$I5@p }| <3 k<8]M? p .<<o;*£߮`-2v]w>?H;Y5߇LشU3 @1}$$s*7,u/|IxeLb2QN=9Zn x=`g}8 [Edkcֲ-p>pZ3E꫓KP u`wvlu]Gi-=w<[9O15V^0$_J5e`G[ \-㥗_BSW&?"8ooqQQ䃺ÌKq//~bZ9k{9~ko~*b8g*DLHpg.9z,f!hb^ϩ|FD|+uͬL˽`f^㏰G_h>ڲ/'.4ZFu!pfOK5=NJᾩ%Q_CA1{ϜoL8G=az<ê'6'>_Q>ld9:P`F+b*9h/JN°VZ` TUme0 -'+d,kj3fY:f,O5>Gx8,M;77ڷc~~R?E~Ncq|4._⅄& -¿0z?运D6|J `&X*1pCY}#EDBCƅzȄ^sGJ@6G -]"H]sh!tWTVީ.wOJ>&zeģ?M-ly` UYyg||[-eєCf8:0^^WDdpW-]VaUh : XE=M%NWl322 Fr9 - zԊ8Z7y yodVޯ4\ëxN~oHyB t1wfBO\>GNw]6̨dV_AO(50RYl+KKѓ-9ÃlZFV:0,+SgflO;+`Ϗr_\deUm5gV]=-`;[:خVg)qA 툘v?ԝʍ۴¦onj(ufm{rkfER5S__{]?2% u8q87(x|'rQ`^GRYop oN2'^oE_8%gۓӚe:ynɱ3*Esa+ 6oG_,CW\'ų ȕxgu~NQWeFm%Lrڏ'Vͅ5yđ1"di;cz!&]%SѺ|o.[s ,`G[γpgbegyY% dJ&sv*fr\.GM+-6%[k#3Жuu1S(1 8GI [xelzm/o.:pLtԮI_eӖzK()[0%0a -SXEJ°(_'%UU{PH?xl蔌R_1K yTjYD\fzO!۟VjbؒL,Ru kGv\4sOʊybD= }eZj[/aױi$hw@Ray!F( C dѪ:Rb/ZbUYgGjJsN2fGN5Y5]Y})Kvqqlxf*\CXJMt aXvnm\+g%|?RMH=1zgw!MɭI*0D?E\*5328y Sz` 9񵖼2м#'6o",0Wtg*I#[Uu>X=. -4r5Д)d\۫+H쳦; 2g1M ˵kPN |*G~PV-E5b_#>6f;,\;/[|o0W8|I59);HJOOLnJohnlHkNbvV^yFނ_8a,g؇ @|Phb̥&B3$p\Uo`D9_Cn$zQ)gBN;n[F]bTF_gj,֕6uu zWmz^-R0ƢCIiZ]6xr6ls7ĽڴT,.ˤ -g$$_N—zDUVŽqiɺ⫳LDlIc׎ޢ6.}  +Q{Pݫ+çh4 -]{b/C%PZ ?\b@q=U3B>6{cM|&}ZnStBl1^e:!!G"eFYɧ|>DYq.z̵bސ+`tΨlJcQ;ZZ*a5(\QAԕiBZâhgDZ S "ÔF x)2 C)Tk ',&LuMpQ!Δ&meh&OJ?+ᔬOF<З͋ɼyќRnLJ溿=vyXK62bKvlOH-p3xj-[X-r# N"`>ސvm!;OU&2g˙ځ@ 82ē㤶Ə0x}n}v3"ī 䄥([%QG^v$0,ld+(7p?ǏO6-c.°4?oOxxCۯ¯"Q/,QWa4;HFbmC6ddY- KRS^7`^5&=+5*DkͣSI}=-lc!-we2Sh$W/W0sQ,O⺊#A;ح/.>$a@Fj{d.&;.?@wpj~~-aHڔYQt9BOsk͑~񅸳;ƽmoӻQRSÕnPl?[cE zc;mk'TfE9,`Vk&[:"RMGRzW+*ԟz~Vn¼e:XU\E -GP2}Z\*c\o06dY^<6NMZj" "\ث7$[9*ZPpc4SU@hW6A"PI?ْzY6IJ7J|oOPCzkyAK) l)Np,z+a+cV;|# r &%JVĬdQaj Nxsg ޜqDJ)jJ ,~V n&ڕmFA&>:(_trd?JSMZGSFfJS &]>W@փOJ x֏j< ʚGvn޼ ( &i:=+A|3+m(zФ.3iPvAs[_˞ S"$_"A7>h9L:5xd1 fm&}Ʃ2WKKe.iL.UTMs̀m6W ™=x3_xޢ0AH\(6Ψ6FIxELU6T^ΩSc*PZzVoY2ߜOgd5(:|pљZѐÂTR%]G1X*0ph"(*lۿXG~Aygҳh @ gPPu=,Iy,P=G޴<ǧ{H!A -= -B]9n6Ym1,PK8K;o76OCӿJ~ݑ&nkό=8'?U\gAK|cK\CA" -\mIU Vi[)Huܪb'aE5q9ӽ%ݕ}[! W~`dw U-mOY#d'@5t;,<-זQO8ykP,nTd+_1yoI*!Q070 8JMv(R*s/Ϧv&Rp!HHFɃ]W$g]Q y%Nԭ UOC\un_~C *%4vܢ%‰كl0^2F~ 996=/ `/v pć0e4:G*,-%| 4Ttuu$5ۇ+J\fo[qC +E'l>h,@[hZBAMr eJ}xsi@B`_)y`mqGz۽bM| tZ) ŽuNcpMSWo3r#]a5Ϳ+Wy{?q*>;^Z9 yƇŒp'\h"ղkpxتTR)oǤp!UK͝Q,K -endstream -endobj -1376 0 obj +/Type /ObjStm +/N 100 +/First 1002 +/Length 13063 +>> +stream +1261 0 1274 137 1268 303 1269 450 1270 595 1271 737 1276 884 268 943 1277 1001 1278 1059 +1279 1118 1280 1177 1273 1236 1289 1387 1272 1589 1281 1736 1282 1880 1283 2026 1284 2173 1285 2324 +1286 2475 1287 2626 1291 2772 1288 2830 1296 2967 1293 3106 1298 3251 272 3310 1299 3368 1295 3427 +1307 3578 1294 3771 1300 3919 1301 4063 1302 4210 1303 4357 1304 4500 1305 4647 1309 4792 1306 4850 +1313 4987 1310 5135 1311 5282 1315 5429 1312 5488 1324 5610 1316 5803 1317 5947 1318 6092 1319 6236 +1320 6381 1321 6528 1322 6672 1326 6819 276 6877 1327 6934 1323 6992 1329 7128 1331 7246 1328 7305 +1340 7386 1332 7561 1333 7705 1334 7850 1335 7994 1336 8139 1342 8286 280 8344 1343 8401 1339 8459 +1346 8595 1337 8743 1338 8887 1348 9034 1345 9093 1355 9188 1349 9363 1350 9505 1351 9650 1352 9797 +1353 9941 1357 10088 284 10146 1358 10203 1354 10261 1361 10397 1359 10536 1363 10683 288 10742 1360 10800 +1369 10881 1364 11038 1365 11182 1366 11329 1371 11476 292 11534 1372 11591 1368 11649 1376 11786 1380 11934 +% 1261 0 obj << -/Filter /FlateDecode -/Subtype /Type1C -/Length 11578 +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F241 1265 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] >> -stream -xzwxT/C؅IfF&X* -dLI&d&I2BHB Б*"ǂ~krV< Ͻ̓{wWwI&MqxØtttt4I*͑vJ9Nv9.s\x11ɱƱG:N38-rZ:NNNeN>!N8}r,u~Yty^gogssssMϝs ¹個K%%%եĥe.w\|Df/s͒-mԲYTfʮnޗ}"RDW?TTW7˽Apy<^"7ȫ->o?fv1clj465El9[625c"{'>wKNYER}Џ C7#i׹ "̦b3|E&!/M20,+=? s6Th8<p*NRpXAb8AԒG]5#W@V1 6ZX*|@D&<4?|!%HtP -b˛ Buc*+`ha49ȌVU&=A(+-B0h)((=_?Gg%U!\zFI!h E[)P<rAhh2u= N=UV֞Gn<Mvg(ZeBr@F6 u >3D'_0#m4՛co1336Ӣo|KďdW+jˊ[ TTsvAV8f&33A4%~ pN,ҍ<$ {yˎ[=~B~aQ=N'DW-dcyQQ)WX)SFR۸7r`)qS[SjiiNk ^40B3'i_L_+B+J}n98.]c+Y"ɮW!QC;=L-uӓr**%@XЗ*So -PkKuhx6}mآ"}=k[_HVOZ"?X:-^N9MawU -(l.*)Js3ijݙϡ}[OhĪXS=>R 7m0u2x(5.7x`f -= -M f| 4:G%čњ"0=/GqPÝj6^|f 1Y  ś;2{ss8sK2~yx^U*XPz?APg:HSm3x8߭nȠu%\Fa @ez:o8rl3|DKK(xk cٵ9tAn~V"--!5U@r$'Ѯhꄾ:7Љ0SGs4$&wHAԩR2)Yz!jTjv~E`mQ< -SyEPjB1j#8mIT=- ?)9!.,)Ca^A>U=7i - xk\_O -Ou/1I`<O`O('[[O ߨ6ѰWwyDy]tJ~a|Ӯ%a(| -C"tFI""od'iWd>&SEq෺7+^P/ gB.Mŀ1~weHAH,"+}% -\ېZ:_RhV"*;^WXk#DE6$n0% o`z+(c݀Swѫ9yE)ƚҼrо}T`leib=BgznzšIٯO.ZAmSIog\~ʜp&/VSYq!N|K|G᧊RjRLqBXsFAx>+{a/դV -rxtc2Ful]$B[{y -Gdo z_Ag!%6bz.zΓ87QV >dƜL. 6s]zD 125V˵m"°~6HS {GHx:%<8+۲k4\ ?O - ~n\ef -YL4"G^~U^i#UuH%<W'1Y4US8]ZuFsK}~y.*n8r&7=\f29mVQqd>ǢDR1h/K`v`Α}_`A߲Qmb}<;;;:Ei!` KQ}Ikmv%zW -{X!*X^1Ǝ?1L&8+@#(xt6U'M(V;(F漮/4i)Z9#62 sRh45U4r]08ᡞ!pGx'r;P?/Ql5 0Q)&CGj{ߛ4(nzMQ) -4vE`K.,bmspFjMFU]o[#h֗dF)Eʠ&ڀ:x(OVo9*ԟ(鹪^b\`Ʊe -|p ?25,)ͭO񅍌hiiijjiiABz qtwi`?3% 뛹J@' - i:~B,)8'@y>'"*p1QVkS-BҖ+4 S"H0 ՝ܩ(/-S3NiDtQ]4I42&ǁV*/ϱI@Ep)8汣 a@ 6-El%;!ARyyZ _d/ -݈}:kx ݢγ\_Shǃ$R>upB| -(i|էzU I1m+(,,,((/.~Rb(+-(wx7<;lI2,+gO79rM[n.NmєWlR5n}b1L\ ?!WkTUHQЛP::y Sӧ~,f01Ig s H L:5p^jO/n}}}_8Lr f99R>vw;K'II*Z^F*͕JWwHpwtr|U}3O;sxs_^rdp:4tOӿ9s^fg/`XTR&=?tхp2ez.]]]]]Z]κuw-fȞ=/[#-E2dYZ 땝ݐ#'J?#V%+u=C Z&ϒeZyM%ߒ$$^>Nb3Lv}]ƾbAl沥l-{gϰ٫m=dWu닮]_wuWo`XWkkkEkc{,I?n{sj9[uʼn '2:rҰ,i8 9j!\4Ӆ铳Onײ>,7\bkyHu<4<|h>ހ>o"䇎 -F,` Hé"d҈\}6YR+*H1G;+5BzYnQdVy!:-TMI="R;s+|hvtKEL] !쭓Z]qt@au*,0 qZ+ wZ(G?V56tOIc[B򲻳ٷO0]&#@Dl .pR+iaikƲrCWR] ȁ -ˏ.U ApٽwbDSR|Y4Zӑ"J2(b[: u:783G*{BF#^_OnKx*\ 'רCChcp;m:kD~n*vnݓS7d*} -l3Y]\>e'yŌ<M8JPbN> єhʏ>b )ES%4;#+k,3{2dp֗豳fKx]\w<{^yVp~}o~Ux‡o,~Cߏp?\o>-B^zZM;Vxm!ՇMbilAJ?{ё Iуe/ЍpxN jk+yz*2m؇h%附IW2NZ:q~qk"aryEݙZA=h@GIi\No溛[{:RFm:*~DSS&:6iޙ8p0`L -(:8F5 T:FgxU: ݆q?i -H/ ,"tETBRËt2ژYBe֟Egtְ`?t5Tbzsi~eILg?CZLle#,J; t5^E+, -QU_;8Vp3F,^E~SfGϢnS?,x]ۆ,BlUNș\9uFwz<ҹ'UKBo" ݢ<4op*CH~S"\lGh_, _Oh#*7fxh^Cm -Z;Uő5{`A~.L6 55-B RW9qm;4 _¶h -s|h S &+Qͺ+B)(}@Ý '>R@zmz]NvUq]ߑCt"[?bj+:uxISQ1::8sƖKD*MQ`@3<pMֶ5@kh&ԙG=[" N/ -}JU'3Ss҄T7kTe[ӑu rB$q}"`_)d\xAeVUs{֮b|us8 ###G$:]yr(J]CӽVp@>jYhtQ"$ - ű - q𙞓gl{SK$S'N#h!| ݧ#kh-V`xXNr tEƶQ`|́1!q]Yb_A_#<s=ZV (Ĵ(CyVh:b7GtI?\c@@`i{jeqBR=H@G -m_&K - yn߇Ē1"@[EbK9Z{Y?j&:hZf% S5ݡ҉Pݡt]&c}eMg/pHBד'ugD>&FW0Q2z=KWL=Ksn߾mجKTW-WtG+D`s21;{x@^(q?HC_j;|BO:6# r{ByGq.6 Ck -ʄlGUWZmL:`"2?5.,_2:dzj̸<,Vz;m\ҋ +5@;L p63I+LK| y`3XC[*?zmĹYy,Aq}GESl(cx[3a_b)q!vSSPP?GD)D٥o)pCJ# 8x!A?ޜ4oJs[BxLt]U p6|ɧmy&`a6 tpz'פ|Q 1oYb ZWDjcQea)r|?nMĆh9ZQ \VC{?[d y[K0yEGV+߄C|3H42ju#?K=cў p>db HnMl%:HQûz!F\DB,hjŔ5) h Pvܥ>' [ -e@<щP.8+r9|Lh02+cb=]s:ַߜ={\{x}sV='фna;/?d9qt]QfыC -,xC; N 2kܶjPңdֱC~ M\THr`AM} esXnS?=tG[G>w=0aK6nogm7ڣxo[|=:w≯gCXUtrf47jH2 )=-KO.({(BA")Jah y4/p6@S ;`#ёjn:0={aәx P]Q9:7gw:@I> -stream -268 0 1265 58 1266 116 1267 175 1268 234 1261 293 1278 440 1260 642 1270 789 1271 933 -1272 1079 1273 1226 1274 1377 1275 1528 1276 1679 1280 1825 1277 1883 1285 2017 1282 2156 1287 2301 -272 2360 1288 2418 1284 2477 1296 2624 1283 2817 1289 2965 1290 3109 1291 3256 1292 3403 1293 3546 -1294 3693 1298 3838 1295 3896 1302 4030 1299 4178 1300 4325 1304 4472 1301 4531 1313 4651 1305 4844 -1306 4988 1307 5133 1308 5277 1309 5422 1310 5569 1311 5713 1315 5860 276 5918 1316 5975 1312 6033 -1318 6166 1320 6284 1317 6343 1329 6424 1321 6599 1322 6743 1323 6888 1324 7032 1325 7177 1331 7324 -280 7382 1332 7439 1328 7497 1335 7630 1326 7778 1327 7922 1337 8069 1334 8128 1344 8222 1338 8397 -1339 8539 1340 8684 1341 8831 1342 8975 1346 9122 284 9180 1347 9237 1343 9295 1350 9428 1348 9567 -1352 9715 288 9774 1349 9832 1358 9913 1353 10070 1354 10214 1355 10361 1360 10508 292 10566 1361 10623 -1357 10681 1365 10815 1369 10963 1370 11090 1371 11133 1372 11340 1373 11578 1374 11854 1356 12090 1363 12237 +/Type /Page +/Contents 1275 0 R +/Resources 1273 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1233 0 R +/Annots [ 1268 0 R 1269 0 R 1270 0 R 1271 0 R ] +>> +% 1268 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.968 277.323 440.924 289.383] +/A << /S /GoTo /D (table.12) >> +>> +% 1269 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.858 208.877 384.376 220.936] +/A << /S /GoTo /D (spdata) >> +>> +% 1270 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.358 140.43 495.412 152.49] +/A << /S /GoTo /D (vdata) >> +>> +% 1271 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.286 128.475 392.391 140.535] +/A << /S /GoTo /D (table.12) >> +>> +% 1276 0 obj +<< +/D [1274 0 R /XYZ 149.705 753.953 null] +>> % 268 0 obj << -/D [1262 0 R /XYZ 150.705 716.092 null] +/D [1274 0 R /XYZ 150.705 716.092 null] >> -% 1265 0 obj +% 1277 0 obj << -/D [1262 0 R /XYZ 290.728 674.17 null] +/D [1274 0 R /XYZ 290.728 674.17 null] >> -% 1266 0 obj +% 1278 0 obj << -/D [1262 0 R /XYZ 287.931 654.041 null] +/D [1274 0 R /XYZ 287.931 654.041 null] >> -% 1267 0 obj +% 1279 0 obj << -/D [1262 0 R /XYZ 287.193 633.911 null] +/D [1274 0 R /XYZ 287.193 633.911 null] >> -% 1268 0 obj +% 1280 0 obj << -/D [1262 0 R /XYZ 150.705 447.252 null] +/D [1274 0 R /XYZ 150.705 447.252 null] >> -% 1261 0 obj +% 1273 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1278 0 obj +% 1289 0 obj << /Type /Page -/Contents 1279 0 R -/Resources 1277 0 R +/Contents 1290 0 R +/Resources 1288 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1260 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R ] +/Parent 1292 0 R +/Annots [ 1272 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R ] >> -% 1260 0 obj +% 1272 0 obj << /Type /Annot /Subtype /Link @@ -15115,7 +15033,7 @@ stream /Rect [378.159 654.503 390.114 666.562] /A << /S /GoTo /D (table.12) >> >> -% 1270 0 obj +% 1281 0 obj << /Type /Annot /Subtype /Link @@ -15123,15 +15041,15 @@ stream /Rect [368.549 588.085 444.603 600.145] /A << /S /GoTo /D (vdata) >> >> -% 1271 0 obj +% 1282 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.746 576.13 340.701 588.189] +/Rect [329.659 576.13 341.774 588.189] /A << /S /GoTo /D (table.12) >> >> -% 1272 0 obj +% 1283 0 obj << /Type /Annot /Subtype /Link @@ -15139,7 +15057,7 @@ stream /Rect [256.048 497.757 323.106 509.817] /A << /S /GoTo /D (descdata) >> >> -% 1273 0 obj +% 1284 0 obj << /Type /Annot /Subtype /Link @@ -15147,7 +15065,7 @@ stream /Rect [338.139 460.563 345.113 472.623] /A << /S /GoTo /D (equation.4.1) >> >> -% 1274 0 obj +% 1285 0 obj << /Type /Annot /Subtype /Link @@ -15155,7 +15073,7 @@ stream /Rect [336.486 445.951 343.459 458.011] /A << /S /GoTo /D (equation.4.2) >> >> -% 1275 0 obj +% 1286 0 obj << /Type /Annot /Subtype /Link @@ -15163,7 +15081,7 @@ stream /Rect [337.034 431.339 344.007 443.399] /A << /S /GoTo /D (equation.4.3) >> >> -% 1276 0 obj +% 1287 0 obj << /Type /Annot /Subtype /Link @@ -15171,25 +15089,25 @@ stream /Rect [202.52 189.579 214.475 201.639] /A << /S /GoTo /D (table.12) >> >> -% 1280 0 obj +% 1291 0 obj << -/D [1278 0 R /XYZ 98.895 753.953 null] +/D [1289 0 R /XYZ 98.895 753.953 null] >> -% 1277 0 obj +% 1288 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F68 1127 0 R /F60 666 0 R /F67 913 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F133 1138 0 R /F78 674 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1285 0 obj +% 1296 0 obj << /Type /Page -/Contents 1286 0 R -/Resources 1284 0 R +/Contents 1297 0 R +/Resources 1295 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1282 0 R ] +/Parent 1292 0 R +/Annots [ 1293 0 R ] >> -% 1282 0 obj +% 1293 0 obj << /Type /Annot /Subtype /Link @@ -15197,33 +15115,33 @@ stream /Rect [428.968 116.52 440.924 128.58] /A << /S /GoTo /D (table.13) >> >> -% 1287 0 obj +% 1298 0 obj << -/D [1285 0 R /XYZ 149.705 753.953 null] +/D [1296 0 R /XYZ 149.705 753.953 null] >> % 272 0 obj << -/D [1285 0 R /XYZ 150.705 716.092 null] +/D [1296 0 R /XYZ 150.705 716.092 null] >> -% 1288 0 obj +% 1299 0 obj << -/D [1285 0 R /XYZ 150.705 268.704 null] +/D [1296 0 R /XYZ 150.705 268.704 null] >> -% 1284 0 obj +% 1295 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1296 0 obj +% 1307 0 obj << /Type /Page -/Contents 1297 0 R -/Resources 1295 0 R +/Contents 1308 0 R +/Resources 1306 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1283 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R ] +/Parent 1292 0 R +/Annots [ 1294 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R ] >> -% 1283 0 obj +% 1294 0 obj << /Type /Annot /Subtype /Link @@ -15231,7 +15149,7 @@ stream /Rect [305.144 654.503 312.117 666.562] /A << /S /GoTo /D (section.3) >> >> -% 1289 0 obj +% 1300 0 obj << /Type /Annot /Subtype /Link @@ -15239,15 +15157,15 @@ stream /Rect [368.549 586.032 444.603 598.092] /A << /S /GoTo /D (vdata) >> >> -% 1290 0 obj +% 1301 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.621 574.077 340.576 586.136] +/Rect [329.477 574.077 341.581 586.136] /A << /S /GoTo /D (table.13) >> >> -% 1291 0 obj +% 1302 0 obj << /Type /Annot /Subtype /Link @@ -15255,7 +15173,7 @@ stream /Rect [378.159 493.651 390.114 505.711] /A << /S /GoTo /D (table.13) >> >> -% 1292 0 obj +% 1303 0 obj << /Type /Annot /Subtype /Link @@ -15263,15 +15181,15 @@ stream /Rect [368.549 425.181 444.603 437.24] /A << /S /GoTo /D (vdata) >> >> -% 1293 0 obj +% 1304 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.746 413.225 340.701 425.285] +/Rect [329.659 413.225 341.774 425.285] /A << /S /GoTo /D (table.13) >> >> -% 1294 0 obj +% 1305 0 obj << /Type /Annot /Subtype /Link @@ -15279,33 +15197,33 @@ stream /Rect [256.048 332.8 323.106 344.859] /A << /S /GoTo /D (descdata) >> >> -% 1298 0 obj +% 1309 0 obj << -/D [1296 0 R /XYZ 98.895 753.953 null] +/D [1307 0 R /XYZ 98.895 753.953 null] >> -% 1295 0 obj +% 1306 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R /F68 1127 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R /F133 1138 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1302 0 obj +% 1313 0 obj << /Type /Page -/Contents 1303 0 R -/Resources 1301 0 R +/Contents 1314 0 R +/Resources 1312 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1299 0 R 1300 0 R ] +/Parent 1292 0 R +/Annots [ 1310 0 R 1311 0 R ] >> -% 1299 0 obj +% 1310 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [211.646 410.079 223.601 419.489] +/Rect [200.149 410.079 212.104 419.489] /A << /S /GoTo /D (table.13) >> >> -% 1300 0 obj +% 1311 0 obj << /Type /Annot /Subtype /Link @@ -15313,33 +15231,33 @@ stream /Rect [253.329 228.102 265.284 240.161] /A << /S /GoTo /D (table.13) >> >> -% 1304 0 obj +% 1315 0 obj << -/D [1302 0 R /XYZ 149.705 753.953 null] +/D [1313 0 R /XYZ 149.705 753.953 null] >> -% 1301 0 obj +% 1312 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1313 0 obj +% 1324 0 obj << /Type /Page -/Contents 1314 0 R -/Resources 1312 0 R +/Contents 1325 0 R +/Resources 1323 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R -/Annots [ 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R ] +/Parent 1292 0 R +/Annots [ 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R ] >> -% 1305 0 obj +% 1316 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 417.772 339.385 429.832] +/Rect [262.707 417.772 338.761 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1306 0 obj +% 1317 0 obj << /Type /Annot /Subtype /Link @@ -15347,15 +15265,15 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1307 0 obj +% 1318 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 338.393 339.385 350.453] +/Rect [262.707 338.393 338.761 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1308 0 obj +% 1319 0 obj << /Type /Annot /Subtype /Link @@ -15363,7 +15281,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1309 0 obj +% 1320 0 obj << /Type /Annot /Subtype /Link @@ -15371,74 +15289,74 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1310 0 obj +% 1321 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 171.988 339.385 184.048] +/Rect [252.903 171.988 328.957 184.048] /A << /S /GoTo /D (vdata) >> >> -% 1311 0 obj +% 1322 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.868 160.033 254.823 172.093] +/Rect [226.559 160.033 238.514 172.093] /A << /S /GoTo /D (table.14) >> >> -% 1315 0 obj +% 1326 0 obj << -/D [1313 0 R /XYZ 98.895 753.953 null] +/D [1324 0 R /XYZ 98.895 753.953 null] >> % 276 0 obj << -/D [1313 0 R /XYZ 99.895 716.092 null] +/D [1324 0 R /XYZ 99.895 716.092 null] >> -% 1316 0 obj +% 1327 0 obj << -/D [1313 0 R /XYZ 99.895 560.161 null] +/D [1324 0 R /XYZ 99.895 560.161 null] >> -% 1312 0 obj +% 1323 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1318 0 obj +% 1329 0 obj << /Type /Page -/Contents 1319 0 R -/Resources 1317 0 R +/Contents 1330 0 R +/Resources 1328 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1281 0 R +/Parent 1292 0 R >> -% 1320 0 obj +% 1331 0 obj << -/D [1318 0 R /XYZ 149.705 753.953 null] +/D [1329 0 R /XYZ 149.705 753.953 null] >> -% 1317 0 obj +% 1328 0 obj << -/Font << /F62 667 0 R /F59 665 0 R >> +/Font << /F84 675 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1329 0 obj +% 1340 0 obj << /Type /Page -/Contents 1330 0 R -/Resources 1328 0 R +/Contents 1341 0 R +/Resources 1339 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R ] +/Parent 1344 0 R +/Annots [ 1332 0 R 1333 0 R 1334 0 R 1335 0 R 1336 0 R ] >> -% 1321 0 obj +% 1332 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 417.772 339.385 429.832] +/Rect [262.707 417.772 338.761 429.832] /A << /S /GoTo /D (vdata) >> >> -% 1322 0 obj +% 1333 0 obj << /Type /Annot /Subtype /Link @@ -15446,15 +15364,15 @@ stream /Rect [224.557 405.817 231.53 417.877] /A << /S /GoTo /D (table.2) >> >> -% 1323 0 obj +% 1334 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 338.393 339.385 350.453] +/Rect [262.707 338.393 338.761 350.453] /A << /S /GoTo /D (vdata) >> >> -% 1324 0 obj +% 1335 0 obj << /Type /Annot /Subtype /Link @@ -15462,7 +15380,7 @@ stream /Rect [224.557 326.438 231.53 338.498] /A << /S /GoTo /D (table.2) >> >> -% 1325 0 obj +% 1336 0 obj << /Type /Annot /Subtype /Link @@ -15470,75 +15388,75 @@ stream /Rect [256.048 259.015 323.106 271.074] /A << /S /GoTo /D (descdata) >> >> -% 1331 0 obj +% 1342 0 obj << -/D [1329 0 R /XYZ 98.895 753.953 null] +/D [1340 0 R /XYZ 98.895 753.953 null] >> % 280 0 obj << -/D [1329 0 R /XYZ 99.895 716.092 null] +/D [1340 0 R /XYZ 99.895 716.092 null] >> -% 1332 0 obj +% 1343 0 obj << -/D [1329 0 R /XYZ 99.895 560.161 null] +/D [1340 0 R /XYZ 99.895 560.161 null] >> -% 1328 0 obj +% 1339 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1335 0 obj +% 1346 0 obj << /Type /Page -/Contents 1336 0 R -/Resources 1334 0 R +/Contents 1347 0 R +/Resources 1345 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1326 0 R 1327 0 R ] +/Parent 1344 0 R +/Annots [ 1337 0 R 1338 0 R ] >> -% 1326 0 obj +% 1337 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [314.141 702.323 390.195 714.383] +/Rect [303.712 702.323 379.767 714.383] /A << /S /GoTo /D (vdata) >> >> -% 1327 0 obj +% 1338 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [293.677 690.368 305.632 702.428] +/Rect [277.368 690.368 289.324 702.428] /A << /S /GoTo /D (table.14) >> >> -% 1337 0 obj +% 1348 0 obj << -/D [1335 0 R /XYZ 149.705 753.953 null] +/D [1346 0 R /XYZ 149.705 753.953 null] >> -% 1334 0 obj +% 1345 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F59 665 0 R >> +/Font << /F84 675 0 R /F131 921 0 R /F75 673 0 R >> /ProcSet [ /PDF /Text ] >> -% 1344 0 obj +% 1355 0 obj << /Type /Page -/Contents 1345 0 R -/Resources 1343 0 R +/Contents 1356 0 R +/Resources 1354 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1338 0 R 1339 0 R 1340 0 R 1341 0 R 1342 0 R ] +/Parent 1344 0 R +/Annots [ 1349 0 R 1350 0 R 1351 0 R 1352 0 R 1353 0 R ] >> -% 1338 0 obj +% 1349 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 430.55 339.385 442.61] +/Rect [262.707 430.55 338.761 442.61] /A << /S /GoTo /D (vdata) >> >> -% 1339 0 obj +% 1350 0 obj << /Type /Annot /Subtype /Link @@ -15546,7 +15464,7 @@ stream /Rect [224.557 418.595 231.53 430.655] /A << /S /GoTo /D (table.2) >> >> -% 1340 0 obj +% 1351 0 obj << /Type /Annot /Subtype /Link @@ -15554,79 +15472,79 @@ stream /Rect [256.048 352.283 323.106 364.342] /A << /S /GoTo /D (descdata) >> >> -% 1341 0 obj +% 1352 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [263.331 201.166 339.385 213.226] +/Rect [252.903 201.166 328.957 213.226] /A << /S /GoTo /D (vdata) >> >> -% 1342 0 obj +% 1353 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.868 189.211 254.823 201.271] +/Rect [226.559 189.211 238.514 201.271] /A << /S /GoTo /D (table.16) >> >> -% 1346 0 obj +% 1357 0 obj << -/D [1344 0 R /XYZ 98.895 753.953 null] +/D [1355 0 R /XYZ 98.895 753.953 null] >> % 284 0 obj << -/D [1344 0 R /XYZ 99.895 716.092 null] +/D [1355 0 R /XYZ 99.895 716.092 null] >> -% 1347 0 obj +% 1358 0 obj << -/D [1344 0 R /XYZ 99.895 566.828 null] +/D [1355 0 R /XYZ 99.895 566.828 null] >> -% 1343 0 obj +% 1354 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1350 0 obj +% 1361 0 obj << /Type /Page -/Contents 1351 0 R -/Resources 1349 0 R +/Contents 1362 0 R +/Resources 1360 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1348 0 R ] +/Parent 1344 0 R +/Annots [ 1359 0 R ] >> -% 1348 0 obj +% 1359 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.029 655.624 385.003 667.684] +/Rect [348.75 655.624 355.724 667.684] /A << /S /GoTo /D (section.6) >> >> -% 1352 0 obj +% 1363 0 obj << -/D [1350 0 R /XYZ 149.705 753.953 null] +/D [1361 0 R /XYZ 149.705 753.953 null] >> % 288 0 obj << -/D [1350 0 R /XYZ 150.705 716.092 null] +/D [1361 0 R /XYZ 150.705 716.092 null] >> -% 1349 0 obj +% 1360 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1358 0 obj +% 1369 0 obj << /Type /Page -/Contents 1359 0 R -/Resources 1357 0 R +/Contents 1370 0 R +/Resources 1368 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1353 0 R 1354 0 R 1355 0 R ] +/Parent 1344 0 R +/Annots [ 1364 0 R 1365 0 R 1366 0 R ] >> -% 1353 0 obj +% 1364 0 obj << /Type /Annot /Subtype /Link @@ -15634,7 +15552,7 @@ stream /Rect [368.549 344.818 444.603 356.877] /A << /S /GoTo /D (vdata) >> >> -% 1354 0 obj +% 1365 0 obj << /Type /Annot /Subtype /Link @@ -15642,7 +15560,7 @@ stream /Rect [326.652 332.863 338.608 344.922] /A << /S /GoTo /D (table.17) >> >> -% 1355 0 obj +% 1366 0 obj << /Type /Annot /Subtype /Link @@ -15650,115 +15568,174 @@ stream /Rect [291.943 264.733 359.001 276.793] /A << /S /GoTo /D (descdata) >> >> -% 1360 0 obj +% 1371 0 obj << -/D [1358 0 R /XYZ 98.895 753.953 null] +/D [1369 0 R /XYZ 98.895 753.953 null] >> % 292 0 obj << -/D [1358 0 R /XYZ 99.895 716.092 null] +/D [1369 0 R /XYZ 99.895 716.092 null] >> -% 1361 0 obj +% 1372 0 obj << -/D [1358 0 R /XYZ 99.895 513.636 null] +/D [1369 0 R /XYZ 99.895 513.636 null] >> -% 1357 0 obj +% 1368 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F68 1127 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F133 1138 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1365 0 obj +% 1376 0 obj << /Type /Page -/Contents 1366 0 R -/Resources 1364 0 R +/Contents 1377 0 R +/Resources 1375 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1333 0 R -/Annots [ 1356 0 R 1363 0 R ] +/Parent 1344 0 R +/Annots [ 1367 0 R 1374 0 R ] >> -% 1369 0 obj +% 1380 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100645Z00'00') /ModDate (D:20180323100645Z00'00') >> -% 1370 0 obj -<< -/Type /ExtGState -/OPM 1 ->> -% 1371 0 obj -<< -/BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1373 0 R -/Type /Font -/FirstChar 48 -/LastChar 57 -/Widths [ 500 500 500 500 500 500 500 500 500 500] -/Encoding /WinAnsiEncoding -/Subtype /Type1 ->> -% 1372 0 obj -<< -/BaseFont /XISTAL+Times-Bold -/FontDescriptor 1374 0 R -/Type /Font -/FirstChar 48 -/LastChar 80 -/Widths [ 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611] -/Encoding /WinAnsiEncoding -/Subtype /Type1 ->> -% 1373 0 obj -<< -/Type /FontDescriptor -/FontName /XYUGDR+Times-Roman -/FontBBox [ 0 -14 476 688] -/Flags 65568 -/Ascent 688 -/CapHeight 688 -/Descent -14 -/ItalicAngle 0 -/StemV 71 -/MissingWidth 250 -/CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1375 0 R ->> -% 1374 0 obj -<< -/Type /FontDescriptor -/FontName /XISTAL+Times-Bold -/FontBBox [ 0 -13 600 688] -/Flags 65568 -/Ascent 688 -/CapHeight 676 -/Descent -13 -/ItalicAngle 0 -/StemV 90 -/MissingWidth 250 -/CharSet (/P/one/zero) -/FontFile3 1376 0 R ->> -% 1356 0 obj + +endstream +endobj +1387 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.023 625.272 242.978 634.682] -/A << /S /GoTo /D (table.17) >> +/Filter /FlateDecode +/Subtype /Type1C +/Length 13073 >> -% 1363 0 obj +stream +xwxW?laό rG5hB'ZBL1`pø˶$KeK%Yr-˽w L% $$$m{Ȗ<<~4ss>s +o%!)&c攤}7#-VyR/<1cNc~G8fA>~<ެ5onݼ &.II'KO:mh4&#!.yIV̡Ԥď/<~sL\}Dsݧ<*wjM}~___;bd,`|< +) 'G;?̷с'7ɏ=, c|?1;nkc]4vƍ-p+ +|ApQg ͿؿĿɿӿI0`I@x2 0$TՀ d_ |#p]`Z`f5.b? ~򠸠 ڠ栎A烾 67P('|S8[ppp0Gh +&aGxE ! O^*8|=q?wʇRSsJjOTUBPT'uI=L&%"E0KDSEDEDEE[D"HdEuI% m}WE#!CD!lĐi!C, Y1$2$>Db ) q4t9r!Ð!C~- +S+F~*hb8PoJ)R2dV8ܪ&\YR)z%-V p;qFߦldz3n'-ڵVZX箷mF;k(5:'[2 4i<o ?3[pP ?ϦP8^AQ:̮4 AF%ɖGkgN'vuLB@Q8t{`;'Pp',\8.0O5 +C +bc}{C}¡F΁3bt񪝻O[w +v2RcpmIjk4Ϸ@wؗ/:/>ڱ##*z#Z<{)2mbи߀A0gvN)' £V.<x8M9sc_À%dM$ p`iɩnp}E}*]E|%<$v*'PN¢݇kV0y,!o2LAXpTE&¸1/wg@7jKvYr7%Ptw⣹}im`̬4j +M|B_k6u.$.a>H Z8 /흴3k_ٝ`B(HG4f[Jm{/ e{ ֓]qH'1e_LZ٭ +rĀifeŦruɈah~F/%-&O-yn-7>m|f]5 tySs9Pa:bϝn>y9rc1$bLNg3-%%"AۛK(U3ya1!9b<ᵈ|yzaK#_ޛBJ|b{ʇV>p$x Ka]hc*IfTYt|JQJ у|pz (E g1ǣݨ.$v8O$:@IU*+X0W"ђ8%ף{MNe'!F0K?y ӾwO>Y췋2N{F?Qp [`8&-h3& oysø߈Adl3JR@y{HwE҅ĽjU!wߚ[a8GS#U\cx@?7Rgkf2.'"B>*=K=Ŝ# D6Z55A‡iȪbJU.%Z5 ' 7K 9#kziΒ?JVP@Q*ldžΟ:5%P=Iqq1m}m,`6ˍ}ap-ǣ VEo) +sh,:8?_fdJX;&mm-0T09^1`,/r"g6Qh>N߬ K*rSe.͍`G㶢y|?S-vVpv3ՠ5RU_c9~ K{]5([OSS _ erG-S?fV( +Cs]e tFqM3ߝ+U^WqzE";ՙh5[>#!-&%."W;'3P7`°$W@"A YhDM}].NTv.FC?ӠЋê}lNcnšz~mky1giE{:I^R_HÉkwNy&PPrX_ +;ӸFd4L퓋=w%1l(/Ϸbgz '}`g(ď w +GCv nJH{/p#'n2#FBgE*iuJVeYtb<5Sz6\B>nP8YjقL$B 9R\*g*]8(|Wyjܳ .=IMG+Ih ifqZPχ=72Ǒn$ 3D>bDFϚ$ؤAWveY BoI[a+.J5,JtƤ!Y ̀'5qCPZZd+4rwsÑX"XJEѵaDgH̃\q{O?߾Y#W+wk`Um-OƱ* c8n8G$蠟-\T#oiutXX]憚tcmslbڙqd,$#$ح@AK25,*YYk|,e[e9D?c%TbZZbbsZgGssggZ!?Rö6Z[/Pؒ8Q,_40|b>?G} Spk\ojXZM|8;X 2 `a+^3xSD.Bj= ?5xXVLZpjU!A4>:DWEC ;vQI8Q$p8A$Тz<8`k'hGhvnsK)D㐆+!μ|.*4 +Wb]r$H,kV:SSyLJgˣ9YKhGMCDduRW3Mrl]Kɒb2IYA{$؟_Yg՚909R+y:b>MZ +m~ޙ>y&nڙel}4+*}&|$z#( +fr1.wrl8 ;h+(EvDb7]FqCf(nH#"Kn)(ͨ5Xi{T{'Z/:dWY1칛Yt}džO\E~)h@)ʣ4Elyy!{ ȯŀj R%ߐ I5h2Ujdb@͗T;U̎CҦeiJZf(3<+TJJe^ljmsV72]qlRt^n<%H<B.֞憓Ȃg?"!pQ kp=e , O)1ŵYׁej{h4#܁FZ$rso;#V$dr&e;yf( $AJHP/`䵛UE,q. J$Z5gŞ8voua ~rk22reఄ pR|}R)%rv7BM7'&Q#qbw@?{0@=7HQgHۮwQk:!ym' + F)[+ncіG>?)NCi +!:+V`OLۣ߰L@'LG?wze;HhGFxpv(Hu"(r3(OI.Iw8&(|f|N_CZO%R +;ʪaN{0<8\|Q_ei۶̓ X/2R PQMyTPk?9nWHBՂƸ߮/L1/)%9limo#SYTLZ@b[N,E@wQu`_v+j_1p};DN่Ūq||-ogRiJ2pVCqbB1|A9v8__n{CByCw8}ǃ|+͹yn@H(,^?'AQ4ō}[5 +xⒹg7z±⏮gDŽt0̡yd=Q"G3:֪^ɜWaVAA`)h{aqm_鋂O^8۠tf'1ǒW~Z=~a|/c\@y5|$I5@p }| <3 k<8]M? p .<<o;*£߮`-2v]w>?H;Y5߇LشU3 @1}$$s*7,u/|IxeLb2QN=9Zn x=`g}8 [Edkcֲ-p>pZ3E꫓KP u`wvlu]Gi-=w<[9O15V^0$_J5e`G[ \-㥗_BSW&?"8ooqQQ䃺ÌKq//~bZ9k{9~ko~*b8g*DLHpg.9z,f!hb^ϩ|FD|+uͬL˽`f^㏰G_h>ڲ/'.4ZFu!pfOK5=NJᾩ%Q_CA1{ϜoL8G=az<ê'6'>_Q>ld9:P`F+b*9h/JN°VZ` TUme0 +'+d,kj3fY:f,O5>Gx8,M;77ڷc~~R?E~Ncq|4._⅄& +¿0z?运D6|J `&X*1pCY}#EDBCƅzȄ^sGJ@6G +]"H]sh!tWTVީ.wOJ>&zeģ?M-ly` UYyg||[-eєCf8:0^^WDdpW-]VaUh : XE=M%NWl322 Fr9 + zԊ8Z7y yodVޯ4\ëxN~oHyB t1wfBO\>GNw]6̨dV_AO(50RYl+KKѓ-9ÃlZFV:0,+SgflO;+`Ϗr_\deUm5gV]=-`;[:خVg)qA 툘v?ԝʍ۴¦onj(ufm{rkfER5S__{]?2% u8q87(x|'rQ`^GRYop oN2'^oE_8%gۓӚe:ynɱ3*Esa+ 6oG_,CW\'ų ȕxgu~NQWeFm%Lrڏ'Vͅ5yđ1"di;cz!&]%SѺ|o.[s ,`G[γpgbegyY% dJ&sv*fr\.GM+-6%[k#3Жuu1S(1 8GI [xelzm/o.:pLtԮI_eӖzK()[0%0a +SXEJ°(_'%UU{PH?xl蔌R_1K yTjYD\fzO!۟VjbؒL,Ru kGv\4sOʊybD= }eZj[/aױi$hw@Ray!F( C dѪ:Rb/ZbUYgGjJsN2fGN5Y5]Y})Kvqqlxf*\CXJMt aXvnm\+g%|?RMH=1zgw!MɭI*0D?E\*5328y Sz` 9񵖼2м#'6o",0Wtg*I#[Uu>X=. +4r5Д)d\۫+H쳦; 2g1M ˵kPN |*G~PV-E5b_#>6f;,\;/[|o0W8|I59);HJOOLnJohnlHkNbvV^yFނ_8a,g؇ @|Phb̥&B3$p\Uo`D9_Cn$zQ)gBN;n[F]bTF_gj,֕6uu zWmz^-R0ƢCIiZ]6xr6ls7ĽڴT,.ˤ +g$$_N—zDUVŽqiɺ⫳LDlIc׎ޢ6.}  +Q{Pݫ+çh4 +]{b/C%PZ ?\b@q=U3B>6{cM|&}ZnStBl1^e:!!G"eFYɧ|>DYq.z̵bސ+`tΨlJcQ;ZZ*a5(\QAԕiBZâhgDZ S "ÔF x)2 C)Tk ',&LuMpQ!Δ&meh&OJ?+ᔬOF<З͋ɼyќRnLJ溿=vyXK62bKvlOH-p3xj-[X-r# N"`>ސvm!;OU&2g˙ځ@ 82ē㤶Ə0x}n}v3"ī 䄥([%QG^v$0,ld+(7p?ǏO6-c.°4?oOxxCۯ¯"Q/,QWa4;HFbmC6ddY- KRS^7`^5&=+5*DkͣSI}=-lc!-we2Sh$W/W0sQ,O⺊#A;ح/.>$a@Fj{d.&;.?@wpj~~-aHڔYQt9BOsk͑~񅸳;ƽmoӻQRSÕnPl?[cE zc;mk'TfE9,`Vk&[:"RMGRzW+*ԟz~Vn¼e:XU\E +GP2}Z\*c\o06dY^<6NMZj" "\ث7$[9*ZPpc4SU@hW6A"PI?ْzY6IJ7J|oOPCzkyAK) l)Np,z+a+cV;|# r &%JVĬdQaj Nxsg ޜqDJ)jJ ,~V n&ڕmFA&>:(_trd?JSMZGSFfJS &]>W@փOJ x֏j< ʚGvn޼ ( &i:=+A|3+m(zФ.3iPvAs[_˞ S"$_"A7>h9L:5xd1 fm&}Ʃ2WKKe.iL.UTMs̀m6W ™=x3_xޢ0AH\(6Ψ6FIxELU6T^ΩSc*PZzVoY2ߜOgd5(:|pљZѐÂTR%]G1X*0ph"(*lۿXG~Aygҳh @ gPPu=,Iy,P=G޴<ǧ{H!A += +B]9n6Ym1,PK8K;o76OCӿJ~ݑ&nkό=8'?U\gAK|cK\CA" +\mIU Vi[)Huܪb'aE5q9ӽ%ݕ}[! W~`dw U-mOY#d'@5t;,<-זQO8ykP,nTd+_1yoI*!Q070 8JMv(R*s/Ϧv&Rp!HHFɃ]W$g]Q y%Nԭ UOC\un_~C *%4vܢ%‰كl0^2F~ 996=/ `/v pć0e4:G*,-%| 4Ttuu$5ۇ+J\fo[qC +E'l>h,@[hZBAMr eJ}xsi@B`_)y`mqGz۽bM| tZ) ŽuNcpMSWo3r#]a5Ϳ+Wy{?q*>;^Z9 yƇŒp'\h"ղkpxتTR)oǤp!UK͝Q,K +endstream +endobj +1388 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.157 276.439 465.131 290.202] -/A << /S /GoTo /D (figure.3) >> +/Filter /FlateDecode +/Subtype /Type1C +/Length 11578 >> - +stream +xzwxT/C؅IfF&X* -dLI&d&I2BHB Б*"ǂ~krV< Ͻ̓{wWwI&MqxØtttt4I*͑vJ9Nv9.s\x11ɱƱG:N38-rZ:NNNeN>!N8}r,u~Yty^gogssssMϝs ¹個K%%%եĥe.w\|Df/s͒-mԲYTfʮnޗ}"RDW?TTW7˽Apy<^"7ȫ->o?fv1clj465El9[625c"{'>wKNYER}Џ C7#i׹ "̦b3|E&!/M20,+=? s6Th8<p*NRpXAb8AԒG]5#W@V1 6ZX*|@D&<4?|!%HtP +b˛ Buc*+`ha49ȌVU&=A(+-B0h)((=_?Gg%U!\zFI!h E[)P<rAhh2u= N=UV֞Gn<Mvg(ZeBr@F6 u >3D'_0#m4՛co1336Ӣo|KďdW+jˊ[ TTsvAV8f&33A4%~ pN,ҍ<$ {yˎ[=~B~aQ=N'DW-dcyQQ)WX)SFR۸7r`)qS[SjiiNk ^40B3'i_L_+B+J}n98.]c+Y"ɮW!QC;=L-uӓr**%@XЗ*So +PkKuhx6}mآ"}=k[_HVOZ"?X:-^N9MawU +(l.*)Js3ijݙϡ}[OhĪXS=>R 7m0u2x(5.7x`f += +M f| 4:G%čњ"0=/GqPÝj6^|f 1Y  ś;2{ss8sK2~yx^U*XPz?APg:HSm3x8߭nȠu%\Fa @ez:o8rl3|DKK(xk cٵ9tAn~V"--!5U@r$'Ѯhꄾ:7Љ0SGs4$&wHAԩR2)Yz!jTjv~E`mQ< +SyEPjB1j#8mIT=- ?)9!.,)Ca^A>U=7i + xk\_O +Ou/1I`<O`O('[[O ߨ6ѰWwyDy]tJ~a|Ӯ%a(| +C"tFI""od'iWd>&SEq෺7+^P/ gB.Mŀ1~weHAH,"+}% +\ېZ:_RhV"*;^WXk#DE6$n0% o`z+(c݀Swѫ9yE)ƚҼrо}T`leib=BgznzšIٯO.ZAmSIog\~ʜp&/VSYq!N|K|G᧊RjRLqBXsFAx>+{a/դV +rxtc2Ful]$B[{y +Gdo z_Ag!%6bz.zΓ87QV >dƜL. 6s]zD 125V˵m"°~6HS {GHx:%<8+۲k4\ ?O + ~n\ef +YL4"G^~U^i#UuH%<W'1Y4US8]ZuFsK}~y.*n8r&7=\f29mVQqd>ǢDR1h/K`v`Α}_`A߲Qmb}<;;;:Ei!` KQ}Ikmv%zW +{X!*X^1Ǝ?1L&8+@#(xt6U'M(V;(F漮/4i)Z9#62 sRh45U4r]08ᡞ!pGx'r;P?/Ql5 0Q)&CGj{ߛ4(nzMQ) +4vE`K.,bmspFjMFU]o[#h֗dF)Eʠ&ڀ:x(OVo9*ԟ(鹪^b\`Ʊe +|p ?25,)ͭO񅍌hiiijjiiABz qtwi`?3% 뛹J@' + i:~B,)8'@y>'"*p1QVkS-BҖ+4 S"H0 ՝ܩ(/-S3NiDtQ]4I42&ǁV*/ϱI@Ep)8汣 a@ 6-El%;!ARyyZ _d/ +݈}:kx ݢγ\_Shǃ$R>upB| +(i|էzU I1m+(,,,((/.~Rb(+-(wx7<;lI2,+gO79rM[n.NmєWlR5n}b1L\ ?!WkTUHQЛP::y Sӧ~,f01Ig s H L:5p^jO/n}}}_8Lr f99R>vw;K'II*Z^F*͕JWwHpwtr|U}3O;sxs_^rdp:4tOӿ9s^fg/`XTR&=?tхp2ez.]]]]]Z]κuw-fȞ=/[#-E2dYZ 땝ݐ#'J?#V%+u=C Z&ϒeZyM%ߒ$$^>Nb3Lv}]ƾbAl沥l-{gϰ٫m=dWu닮]_wuWo`XWkkkEkc{,I?n{sj9[uʼn '2:rҰ,i8 9j!\4Ӆ铳Onײ>,7\bkyHu<4<|h>ހ>o"䇎 +F,` Hé"d҈\}6YR+*H1G;+5BzYnQdVy!:-TMI="R;s+|hvtKEL] !쭓Z]qt@au*,0 qZ+ wZ(G?V56tOIc[B򲻳ٷO0]&#@Dl .pR+iaikƲrCWR] ȁ +ˏ.U ApٽwbDSR|Y4Zӑ"J2(b[: u:783G*{BF#^_OnKx*\ 'רCChcp;m:kD~n*vnݓS7d*} +l3Y]\>e'yŌ<M8JPbN> єhʏ>b )ES%4;#+k,3{2dp֗豳fKx]\w<{^yVp~}o~Ux‡o,~Cߏp?\o>-B^zZM;Vxm!ՇMbilAJ?{ё Iуe/ЍpxN jk+yz*2m؇h%附IW2NZ:q~qk"aryEݙZA=h@GIi\No溛[{:RFm:*~DSS&:6iޙ8p0`L +(:8F5 T:FgxU: ݆q?i +H/ ,"tETBRËt2ژYBe֟Egtְ`?t5Tbzsi~eILg?CZLle#,J; t5^E+, +QU_;8Vp3F,^E~SfGϢnS?,x]ۆ,BlUNș\9uFwz<ҹ'UKBo" ݢ<4op*CH~S"\lGh_, _Oh#*7fxh^Cm +Z;Uő5{`A~.L6 55-B RW9qm;4 _¶h +s|h S &+Qͺ+B)(}@Ý '>R@zmz]NvUq]ߑCt"[?bj+:uxISQ1::8sƖKD*MQ`@3<pMֶ5@kh&ԙG=[" N/ -}JU'3Ss҄T7kTe[ӑu rB$q}"`_)d\xAeVUs{֮b|us8 ###G$:]yr(J]CӽVp@>jYhtQ"$ + ű + q𙞓gl{SK$S'N#h!| ݧ#kh-V`xXNr tEƶQ`|́1!q]Yb_A_#<s=ZV (Ĵ(CyVh:b7GtI?\c@@`i{jeqBR=H@G +m_&K + yn߇Ē1"@[EbK9Z{Y?j&:hZf% S5ݡ҉Pݡt]&c}eMg/pHBד'ugD>&FW0Q2z=KWL=Ksn߾mجKTW-WtG+D`s21;{x@^(q?HC_j;|BO:6# r{ByGq.6 Ck +ʄlGUWZmL:`"2?5.,_2:dzj̸<,Vz;m\ҋ +5@;L p63I+LK| y`3XC[*?zmĹYy,Aq}GESl(cx[3a_b)q!vSSPP?GD)D٥o)pCJ# 8x!A?ޜ4oJs[BxLt]U p6|ɧmy&`a6 tpz'פ|Q 1oYb ZWDjcQea)r|?nMĆh9ZQ \VC{?[d y[K0yEGV+߄C|3H42ju#?K=cў p>db HnMl%:HQûz!F\DB,hjŔ5) h Pvܥ>' [ +e@<щP.8+r9|Lh02+cb=]s:ַߜ={\{x}sV='фna;/?d9qt]QfыC +,xC; N 2kܶjPңdֱC~ M\THr`AM} esXnS?=tG[G>w=0aK6nogm7ڣxo[|=:w≯gCXUtrf47jH2 )=-KO.({(BA")Jah y4/p6@S ;`#ёjn:0={aәx P]Q9:7gw:@I> @@ -15769,39 +15746,39 @@ stream 0 g 0 G 0 g 0 G BT -/F62 8.9664 Tf 209.77 645.656 Td [(Pr)18(ocess)-250(0)-7729(Pr)18(ocess)-250(1)]TJ -31.696 -10.959 Td [(I)-1333(GLOB\050I\051)-1334(X\050I\051)-4663(I)-1333(GLOB\050I\051)-1333(X\050I\051)]TJ -1.462 -10.959 Td [(1)-4607(1)-1754(1.0)-4500(1)-4107(33)-1753(2.0)]TJ 0 -10.959 Td [(2)-4607(2)-1754(1.0)-4500(2)-4107(34)-1753(2.0)]TJ 0 -10.959 Td [(3)-4607(3)-1754(1.0)-4500(3)-4107(35)-1753(2.0)]TJ 0 -10.959 Td [(4)-4607(4)-1754(1.0)-4500(4)-4107(36)-1753(2.0)]TJ 0 -10.959 Td [(5)-4607(5)-1754(1.0)-4500(5)-4107(37)-1753(2.0)]TJ 0 -10.959 Td [(6)-4607(6)-1754(1.0)-4500(6)-4107(38)-1753(2.0)]TJ 0 -10.959 Td [(7)-4607(7)-1754(1.0)-4500(7)-4107(39)-1753(2.0)]TJ 0 -10.958 Td [(8)-4607(8)-1754(1.0)-4500(8)-4107(40)-1753(2.0)]TJ 0 -10.959 Td [(9)-4607(9)-1754(1.0)-4500(9)-4107(41)-1753(2.0)]TJ -4.483 -10.959 Td [(10)-4107(10)-1754(1.0)-4000(10)-4107(42)-1753(2.0)]TJ 0 -10.959 Td [(11)-4107(11)-1754(1.0)-4000(11)-4107(43)-1753(2.0)]TJ 0 -10.959 Td [(12)-4107(12)-1754(1.0)-4000(12)-4107(44)-1753(2.0)]TJ 0 -10.959 Td [(13)-4107(13)-1754(1.0)-4000(13)-4107(45)-1753(2.0)]TJ 0 -10.959 Td [(14)-4107(14)-1754(1.0)-4000(14)-4107(46)-1753(2.0)]TJ 0 -10.959 Td [(15)-4107(15)-1754(1.0)-4000(15)-4107(47)-1753(2.0)]TJ 0 -10.959 Td [(16)-4107(16)-1754(1.0)-4000(16)-4107(48)-1753(2.0)]TJ 0 -10.959 Td [(17)-4107(17)-1754(1.0)-4000(17)-4107(49)-1753(2.0)]TJ 0 -10.958 Td [(18)-4107(18)-1754(1.0)-4000(18)-4107(50)-1753(2.0)]TJ 0 -10.959 Td [(19)-4107(19)-1754(1.0)-4000(19)-4107(51)-1753(2.0)]TJ 0 -10.959 Td [(20)-4107(20)-1754(1.0)-4000(20)-4107(52)-1753(2.0)]TJ 0 -10.959 Td [(21)-4107(21)-1754(1.0)-4000(21)-4107(53)-1753(2.0)]TJ 0 -10.959 Td [(22)-4107(22)-1754(1.0)-4000(22)-4107(54)-1753(2.0)]TJ 0 -10.959 Td [(23)-4107(23)-1754(1.0)-4000(23)-4107(55)-1753(2.0)]TJ 0 -10.959 Td [(24)-4107(24)-1754(1.0)-4000(24)-4107(56)-1753(2.0)]TJ 0 -10.959 Td [(25)-4107(25)-1754(1.0)-4000(25)-4107(57)-1753(2.0)]TJ 0 -10.959 Td [(26)-4107(26)-1754(1.0)-4000(26)-4107(58)-1753(2.0)]TJ 0 -10.959 Td [(27)-4107(27)-1754(1.0)-4000(27)-4107(59)-1753(2.0)]TJ 0 -10.958 Td [(28)-4107(28)-1754(1.0)-4000(28)-4107(60)-1753(2.0)]TJ 0 -10.959 Td [(29)-4107(29)-1754(1.0)-4000(29)-4107(61)-1753(2.0)]TJ 0 -10.959 Td [(30)-4107(30)-1754(1.0)-4000(30)-4107(62)-1753(2.0)]TJ 0 -10.959 Td [(31)-4107(31)-1754(1.0)-4000(31)-4107(63)-1753(2.0)]TJ 0 -10.959 Td [(32)-4107(32)-1754(1.0)-4000(32)-4107(64)-1753(2.0)]TJ 0 -10.959 Td [(33)-4107(33)-1754(2.0)-4000(33)-4107(25)-1753(1.0)]TJ 0 -10.959 Td [(34)-4107(34)-1754(2.0)-4000(34)-4107(26)-1753(1.0)]TJ 0 -10.959 Td [(35)-4107(35)-1754(2.0)-4000(35)-4107(27)-1753(1.0)]TJ 0 -10.959 Td [(36)-4107(36)-1754(2.0)-4000(36)-4107(28)-1753(1.0)]TJ 0 -10.959 Td [(37)-4107(37)-1754(2.0)-4000(37)-4107(29)-1753(1.0)]TJ 0 -10.958 Td [(38)-4107(38)-1754(2.0)-4000(38)-4107(30)-1753(1.0)]TJ 0 -10.959 Td [(39)-4107(39)-1754(2.0)-4000(39)-4107(31)-1753(1.0)]TJ 0 -10.959 Td [(40)-4107(40)-1754(2.0)-4000(40)-4107(32)-1753(1.0)]TJ +/F84 8.9664 Tf 209.77 645.656 Td [(Pr)18(ocess)-250(0)-7729(Pr)18(ocess)-250(1)]TJ -31.696 -10.959 Td [(I)-1333(GLOB\050I\051)-1334(X\050I\051)-4663(I)-1333(GLOB\050I\051)-1333(X\050I\051)]TJ -1.462 -10.959 Td [(1)-4607(1)-1754(1.0)-4500(1)-4107(33)-1753(2.0)]TJ 0 -10.959 Td [(2)-4607(2)-1754(1.0)-4500(2)-4107(34)-1753(2.0)]TJ 0 -10.959 Td [(3)-4607(3)-1754(1.0)-4500(3)-4107(35)-1753(2.0)]TJ 0 -10.959 Td [(4)-4607(4)-1754(1.0)-4500(4)-4107(36)-1753(2.0)]TJ 0 -10.959 Td [(5)-4607(5)-1754(1.0)-4500(5)-4107(37)-1753(2.0)]TJ 0 -10.959 Td [(6)-4607(6)-1754(1.0)-4500(6)-4107(38)-1753(2.0)]TJ 0 -10.959 Td [(7)-4607(7)-1754(1.0)-4500(7)-4107(39)-1753(2.0)]TJ 0 -10.958 Td [(8)-4607(8)-1754(1.0)-4500(8)-4107(40)-1753(2.0)]TJ 0 -10.959 Td [(9)-4607(9)-1754(1.0)-4500(9)-4107(41)-1753(2.0)]TJ -4.483 -10.959 Td [(10)-4107(10)-1754(1.0)-4000(10)-4107(42)-1753(2.0)]TJ 0 -10.959 Td [(11)-4107(11)-1754(1.0)-4000(11)-4107(43)-1753(2.0)]TJ 0 -10.959 Td [(12)-4107(12)-1754(1.0)-4000(12)-4107(44)-1753(2.0)]TJ 0 -10.959 Td [(13)-4107(13)-1754(1.0)-4000(13)-4107(45)-1753(2.0)]TJ 0 -10.959 Td [(14)-4107(14)-1754(1.0)-4000(14)-4107(46)-1753(2.0)]TJ 0 -10.959 Td [(15)-4107(15)-1754(1.0)-4000(15)-4107(47)-1753(2.0)]TJ 0 -10.959 Td [(16)-4107(16)-1754(1.0)-4000(16)-4107(48)-1753(2.0)]TJ 0 -10.959 Td [(17)-4107(17)-1754(1.0)-4000(17)-4107(49)-1753(2.0)]TJ 0 -10.958 Td [(18)-4107(18)-1754(1.0)-4000(18)-4107(50)-1753(2.0)]TJ 0 -10.959 Td [(19)-4107(19)-1754(1.0)-4000(19)-4107(51)-1753(2.0)]TJ 0 -10.959 Td [(20)-4107(20)-1754(1.0)-4000(20)-4107(52)-1753(2.0)]TJ 0 -10.959 Td [(21)-4107(21)-1754(1.0)-4000(21)-4107(53)-1753(2.0)]TJ 0 -10.959 Td [(22)-4107(22)-1754(1.0)-4000(22)-4107(54)-1753(2.0)]TJ 0 -10.959 Td [(23)-4107(23)-1754(1.0)-4000(23)-4107(55)-1753(2.0)]TJ 0 -10.959 Td [(24)-4107(24)-1754(1.0)-4000(24)-4107(56)-1753(2.0)]TJ 0 -10.959 Td [(25)-4107(25)-1754(1.0)-4000(25)-4107(57)-1753(2.0)]TJ 0 -10.959 Td [(26)-4107(26)-1754(1.0)-4000(26)-4107(58)-1753(2.0)]TJ 0 -10.959 Td [(27)-4107(27)-1754(1.0)-4000(27)-4107(59)-1753(2.0)]TJ 0 -10.958 Td [(28)-4107(28)-1754(1.0)-4000(28)-4107(60)-1753(2.0)]TJ 0 -10.959 Td [(29)-4107(29)-1754(1.0)-4000(29)-4107(61)-1753(2.0)]TJ 0 -10.959 Td [(30)-4107(30)-1754(1.0)-4000(30)-4107(62)-1753(2.0)]TJ 0 -10.959 Td [(31)-4107(31)-1754(1.0)-4000(31)-4107(63)-1753(2.0)]TJ 0 -10.959 Td [(32)-4107(32)-1754(1.0)-4000(32)-4107(64)-1753(2.0)]TJ 0 -10.959 Td [(33)-4107(33)-1754(2.0)-4000(33)-4107(25)-1753(1.0)]TJ 0 -10.959 Td [(34)-4107(34)-1754(2.0)-4000(34)-4107(26)-1753(1.0)]TJ 0 -10.959 Td [(35)-4107(35)-1754(2.0)-4000(35)-4107(27)-1753(1.0)]TJ 0 -10.959 Td [(36)-4107(36)-1754(2.0)-4000(36)-4107(28)-1753(1.0)]TJ 0 -10.959 Td [(37)-4107(37)-1754(2.0)-4000(37)-4107(29)-1753(1.0)]TJ 0 -10.958 Td [(38)-4107(38)-1754(2.0)-4000(38)-4107(30)-1753(1.0)]TJ 0 -10.959 Td [(39)-4107(39)-1754(2.0)-4000(39)-4107(31)-1753(1.0)]TJ 0 -10.959 Td [(40)-4107(40)-1754(2.0)-4000(40)-4107(32)-1753(1.0)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 94.641 -105.903 Td [(61)]TJ +/F84 9.9626 Tf 94.641 -105.903 Td [(61)]TJ 0 g 0 G ET endstream endobj -1388 0 obj +1399 0 obj << -/Length 7819 +/Length 7852 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(5.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(5.2)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ/F62 9.9626 Tf -51.12 -18.964 Td [(These)-250(subr)18(outines)-250(applies)-250(an)-250(overlap)-250(operator)-250(to)-250(the)-250(input)-250(vector:)]TJ/F60 9.9626 Tf 154.518 -23.824 Td [(x)]TJ/F91 10.3811 Tf 8.097 0 Td [(\040)]TJ/F60 9.9626 Tf 13.497 0 Td [(Q)-42(x)]TJ/F62 9.9626 Tf -176.112 -21.014 Td [(wher)18(e:)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(ovrl)-250(\227)-250(Overlap)-250(Update)]TJ/F84 9.9626 Tf -51.429 -18.964 Td [(These)-250(subr)18(outines)-250(applies)-250(an)-250(overlap)-250(operator)-250(to)-250(the)-250(input)-250(vector:)]TJ/F78 9.9626 Tf 154.827 -23.824 Td [(x)]TJ/F179 10.3811 Tf 8.097 0 Td [(\040)]TJ/F78 9.9626 Tf 13.497 0 Td [(Q)-42(x)]TJ/F84 9.9626 Tf -176.531 -21.014 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.294 -19.203 Td [(x)]TJ +/F78 9.9626 Tf 0.713 -19.203 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(submatrix)]TJ/F60 9.9626 Tf 131.351 0 Td [(x)]TJ +/F84 9.9626 Tf 10.186 0 Td [(is)-250(the)-250(global)-250(dense)-250(submatrix)]TJ/F78 9.9626 Tf 131.351 0 Td [(x)]TJ 0 g 0 G -141.607 -19.564 Td [(Q)]TJ 0 g 0 G -/F62 9.9626 Tf 12.857 0 Td [(is)-250(the)-250(overlap)-250(operator;)-250(it)-250(is)-250(the)-250(composition)-250(of)-250(two)-250(operators)]TJ/F60 9.9626 Tf 271.931 0 Td [(P)]TJ/F60 7.5716 Tf 5.424 -1.494 Td [(a)]TJ/F62 9.9626 Tf 6.445 1.494 Td [(and)]TJ/F60 9.9626 Tf 19.681 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.616 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.616 Td [(.)]TJ +/F84 9.9626 Tf 12.857 0 Td [(is)-250(the)-250(overlap)-250(operator;)-250(it)-250(is)-250(the)-250(composition)-250(of)-250(two)-250(operators)]TJ/F78 9.9626 Tf 271.931 0 Td [(P)]TJ/F78 7.5716 Tf 5.424 -1.494 Td [(a)]TJ/F84 9.9626 Tf 6.445 1.494 Td [(and)]TJ/F78 9.9626 Tf 19.681 0 Td [(P)]TJ/F78 7.5716 Tf 6.405 3.616 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.616 Td [(.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -15811,42 +15788,42 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.663 573.142 Td [(x)]TJ/F59 9.9626 Tf 120.622 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.663 573.142 Td [(x)]TJ/F75 9.9626 Tf 120.622 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 569.356 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 560.788 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 236.369 560.788 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 560.988 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 560.788 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 560.788 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 549.032 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 548.833 Td [(ovrl)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 548.833 Td [(ovrl)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 537.077 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 536.878 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 536.878 Td [(ovrl)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 525.122 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 524.923 Td [(ovrl)]TJ +/F84 9.9626 Tf 376.592 524.923 Td [(ovrl)]TJ ET q 1 0 0 1 230.392 521.137 cm @@ -15854,11 +15831,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 492.758 Td [(T)92(able)-250(18:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 492.758 Td [(T)92(able)-250(18:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -127.572 -23.549 Td [(call)]TJ +/F131 9.9626 Tf -127.572 -23.549 Td [(call)]TJ 0 g 0 G [-525(psb_ovrl\050x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -15892,87 +15869,87 @@ BT 0 g 0 G [(work\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.014 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.014 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.564 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.564 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.564 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 89.687 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -79.948 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-207(or)-208(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 89.687 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -79.948 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 349.291 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.742 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 349.291 Tm [(psb)]TJ ET q 1 0 0 1 436.673 349.49 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 349.291 Td [(T)]TJ +/F131 9.9626 Tf 439.811 349.291 Td [(T)]TJ ET q 1 0 0 1 445.669 349.49 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 349.291 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 349.291 Td [(vect)]TJ ET q 1 0 0 1 470.356 349.49 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 349.291 Td [(type)]TJ +/F131 9.9626 Tf 473.495 349.291 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.955 Td [(containing)-250(numbers)-250(of)-250(type)-250(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(18)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.564 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -19.564 Td [(desc)]TJ ET q 1 0 0 1 171.218 317.971 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 317.772 Td [(a)]TJ +/F75 9.9626 Tf 174.207 317.772 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 270.151 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 269.951 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 269.951 Td [(desc)]TJ ET q 1 0 0 1 384.755 270.151 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 269.951 Td [(type)]TJ +/F131 9.9626 Tf 387.893 269.951 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.564 Td [(update)]TJ +/F75 9.9626 Tf -258.11 -19.564 Td [(update)]TJ 0 g 0 G -/F62 9.9626 Tf 36.523 0 Td [(Update)-250(operator)74(.)]TJ +/F84 9.9626 Tf 36.523 0 Td [(Update)-250(operator)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -11.617 -31.519 Td [(update)-250(=)-250(psb)]TJ +/F75 9.9626 Tf -11.617 -31.519 Td [(update)-250(=)-250(psb)]TJ ET q 1 0 0 1 235.367 219.067 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 238.356 218.868 Td [(none)]TJ +/F75 9.9626 Tf 238.356 218.868 Td [(none)]TJ ET q 1 0 0 1 261.648 219.067 cm @@ -15980,16 +15957,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 269.619 218.868 Td [(Do)-250(nothing;)]TJ +/F84 9.9626 Tf 269.619 218.868 Td [(Do)-250(nothing;)]TJ 0 g 0 G -/F59 9.9626 Tf -94.008 -15.579 Td [(update)-250(=)-250(psb)]TJ +/F75 9.9626 Tf -94.008 -15.579 Td [(update)-250(=)-250(psb)]TJ ET q 1 0 0 1 235.367 203.488 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 238.356 203.289 Td [(add)]TJ +/F75 9.9626 Tf 238.356 203.289 Td [(add)]TJ ET q 1 0 0 1 256.109 203.488 cm @@ -15997,16 +15974,16 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 264.079 203.289 Td [(Sum)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F60 9.9626 Tf 137.239 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F62 9.9626 Tf 5.4 -3.617 Td [(;)]TJ +/F84 9.9626 Tf 264.079 203.289 Td [(Sum)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F78 9.9626 Tf 137.239 0 Td [(P)]TJ/F78 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F84 9.9626 Tf 5.4 -3.617 Td [(;)]TJ 0 g 0 G -/F59 9.9626 Tf -237.512 -15.579 Td [(update)-250(=)-250(psb)]TJ +/F75 9.9626 Tf -237.512 -15.579 Td [(update)-250(=)-250(psb)]TJ ET q 1 0 0 1 235.367 187.91 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 238.356 187.71 Td [(avg)]TJ +/F75 9.9626 Tf 238.356 187.71 Td [(avg)]TJ ET q 1 0 0 1 255.013 187.91 cm @@ -16014,28 +15991,28 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 262.983 187.71 Td [(A)92(verage)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F60 9.9626 Tf 153.667 0 Td [(P)]TJ/F60 7.5716 Tf 5.424 -1.494 Td [(a)]TJ/F60 9.9626 Tf 4.278 1.494 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.617 Td [(;)]TJ -262.547 -19.564 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.64 0 Td [(u)-80(p)-25(d)-40(a)-25(t)-25(e)]TJ +/F84 9.9626 Tf 262.595 187.71 Td [(A)92(verage)-250(overlap)-250(entries,)-250(i.e.)-310(apply)]TJ/F78 9.9626 Tf 153.667 0 Td [(P)]TJ/F78 7.5716 Tf 5.423 -1.494 Td [(a)]TJ/F78 9.9626 Tf 4.279 1.494 Td [(P)]TJ/F78 7.5716 Tf 6.404 3.617 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.617 Td [(;)]TJ -262.158 -19.564 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.64 0 Td [(u)-80(p)-25(d)-40(a)-25(t)-25(e)]TJ ET q 1 0 0 1 244.034 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 247.147 144.236 Td [(t)-25(y)-80(p)-25(e)]TJ/F93 10.3811 Tf 21.467 0 Td [(=)]TJ/F60 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ +/F78 9.9626 Tf 247.147 144.236 Td [(t)-25(y)-80(p)-25(e)]TJ/F181 10.3811 Tf 21.467 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ ET q 1 0 0 1 294.938 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 298.201 144.236 Td [(a)-25(v)-47(g)]TJ +/F78 9.9626 Tf 298.201 144.236 Td [(a)-25(v)-47(g)]TJ ET q 1 0 0 1 314.026 144.435 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 175.611 132.281 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 175.611 132.281 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(integer)-250(variable.)]TJ 0 g 0 G 141.968 -29.888 Td [(62)]TJ 0 g 0 G @@ -16043,53 +16020,53 @@ ET endstream endobj -1397 0 obj +1408 0 obj << -/Length 5447 +/Length 5930 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(work)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(dimensional)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F60 9.9626 Tf 252.794 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(the)-250(work)-250(array)111(.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(dimensional)-250(array)-250(of)-250(the)-250(same)-250(type)-250(of)]TJ/F78 9.9626 Tf 252.794 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -282.907 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -282.907 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F60 9.9626 Tf 117.084 0 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-379(as:)-568(an)-379(array)-379(of)-379(rank)-379(one)-379(or)-379(two)-379(containing)-379(numbers)-379(of)-379(type)]TJ 0 -11.955 Td [(speci\002ed)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 9.963 0 Td [(global)-250(dense)-250(r)18(esult)-250(matrix)]TJ/F78 9.9626 Tf 117.084 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -107.346 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.02 0 0 1 124.802 570.637 Tm [(Speci\002ed)-330(as:)-475(an)-331(array)-330(of)-331(rank)-330(one)-330(or)-331(two)-330(containing)-331(numbers)-330(of)-331(type)]TJ 1 0 0 1 124.802 558.682 Tm [(speci\002ed)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(18)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(If)-241(ther)18(e)-240(is)-241(no)-241(overlap)-240(in)-241(the)-241(data)-240(distribution)-241(associated)-241(with)-240(the)-241(descrip-)]TJ 12.453 -11.955 Td [(tor)74(,)-250(no)-250(operations)-250(ar)18(e)-250(performed;)]TJ + 0.98 0 0 1 124.802 449.093 Tm [(If)-213(ther)18(e)-213(is)-214(no)-213(overlap)-214(in)-213(the)-213(data)-214(distribution)-213(associated)-213(with)-214(the)-213(descriptor)75(,)]TJ 1 0 0 1 124.802 437.138 Tm [(no)-250(operations)-250(ar)18(e)-250(performed;)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-284(operator)]TJ/F60 9.9626 Tf 72.855 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F62 9.9626 Tf 8.232 -3.617 Td [(performs)-284(the)-284(r)18(eduction)-285(sum)-284(of)-284(overlap)-284(elements;)-302(it)-284(is)-284(a)]TJ -75.039 -11.955 Td [(\223pr)18(olongation\224)-265(operator)]TJ/F60 9.9626 Tf 110.535 0 Td [(P)]TJ/F60 7.5716 Tf 6.405 3.616 Td [(T)]TJ/F62 9.9626 Tf 8.044 -3.616 Td [(that)-265(r)18(eplicates)-266(ov)1(erlap)-266(elements,)-269(accounting)]TJ -124.984 -11.955 Td [(for)-250(the)-250(physical)-250(r)18(eplication)-250(of)-250(data;)]TJ + 1.017 0 0 1 124.493 417.212 Tm [(The)-245(operator)]TJ/F78 9.9626 Tf 1 0 0 1 185.127 417.212 Tm [(P)]TJ/F78 7.5716 Tf 6.405 3.617 Td [(T)]TJ/F84 9.9626 Tf 1.017 0 0 1 199.418 417.212 Tm [(performs)-245(the)-246(r)18(eduction)-245(sum)-245(of)-246(overlap)-245(elements;)-245(it)-246(i)1(s)-246(a)]TJ 1.009 0 0 1 123.308 405.257 Tm [(\223pr)18(olongation\224)-248(operator)]TJ/F78 9.9626 Tf 1 0 0 1 234.485 405.257 Tm [(P)]TJ/F78 7.5716 Tf 6.404 3.617 Td [(T)]TJ/F84 9.9626 Tf 1.009 0 0 1 248.781 405.257 Tm [(that)-248(r)18(eplicates)-248(overlap)-248(el)1(ements,)-248(accounting)]TJ 1 0 0 1 124.802 393.302 Tm [(for)-250(the)-250(physical)-250(r)18(eplication)-250(of)-250(data;)]TJ 0 g 0 G -12.453 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-190(operator)]TJ/F60 9.9626 Tf 70.978 0 Td [(P)]TJ/F60 7.5716 Tf 5.423 -1.495 Td [(a)]TJ/F62 9.9626 Tf 5.848 1.495 Td [(performs)-190(a)-190(scaling)-190(on)-190(the)-190(overlap)-190(elements)-190(by)-190(the)-190(amount)]TJ -69.796 -11.956 Td [(of)-325(r)18(eplication;)-363(thus,)-343(when)-325(combined)-325(with)-325(the)-325(r)18(eduction)-325(operator)74(,)-344(it)-325(im-)]TJ 0 -11.955 Td [(plements)-250(the)-250(average)-250(of)-250(r)18(eplicated)-250(elements)-250(over)-250(all)-250(of)-250(their)-250(instances.)]TJ/F59 11.9552 Tf -24.907 -19.925 Td [(Example)-320(of)-320(use)]TJ/F62 9.9626 Tf 87.879 0 Td [(Consider)-320(the)-320(discr)18(etization)-320(mesh)-320(depicted)-320(in)-320(\002g.)]TJ + 0.98 0 0 1 124.493 373.377 Tm [(The)-235(operat)1(or)]TJ/F78 9.9626 Tf 1 0 0 1 182.723 373.377 Tm [(P)]TJ/F78 7.5716 Tf 5.424 -1.495 Td [(a)]TJ/F84 9.9626 Tf 0.98 0 0 1 194.391 373.377 Tm [(performs)-235(a)-234(scaling)-235(on)-234(the)-235(overlap)-234(elements)-235(by)-234(the)-235(amount)]TJ 0.987 0 0 1 124.802 361.422 Tm [(of)-254(r)18(eplication;)-255(thus,)-255(when)-254(combined)-255(with)-254(the)-255(r)19(eduction)-255(operator)75(,)-254(it)-255(imple-)]TJ 1 0 0 1 124.802 349.466 Tm [(ments)-250(the)-250(average)-250(of)-250(r)18(eplicated)-250(elements)-250(over)-250(all)-250(of)-250(their)-250(instances.)]TJ/F75 11.9552 Tf 1.02 0 0 1 99.895 329.541 Tm [(Example)-276(of)-276(use)]TJ/F84 9.9626 Tf 1.02 0 0 1 188.003 329.541 Tm [(Consider)-276(the)-275(discr)17(etization)-276(mesh)-275(depicted)-276(in)-276(\002g.)]TJ 0 0 1 rg 0 0 1 RG - [-320(4)]TJ + [-276(4)]TJ 0 g 0 G - [(,)-337(parti-)]TJ -87.879 -11.955 Td [(tioned)-262(among)-262(two)-263(pr)18(ocesse)1(s)-263(as)-262(shown)-262(by)-262(the)-262(dashed)-263(li)1(nes,)-266(with)-262(an)-262(overlap)-262(of)]TJ 0 -11.955 Td [(1)-261(extr)1(a)-261(layer)-260(with)-261(r)18(espect)-260(to)-261(the)-260(partition)-261(of)-260(\002g.)]TJ + [(,)-283(parti-)]TJ 0.983 0 0 1 99.895 317.586 Tm [(tioned)-254(among)-254(two)-255(pr)19(ocesses)-255(as)-254(shown)-254(by)-254(the)-254(dashed)-255(lines,)-254(with)-254(an)-254(overlap)-254(of)-255(1)]TJ 1.02 0 0 1 99.895 305.631 Tm [(extra)-266(layer)-266(with)-266(r)17(espect)-266(to)-266(the)-266(partition)-266(of)-266(\002g.)]TJ 0 0 1 rg 0 0 1 RG - [-261(3)]TJ + [-266(3)]TJ 0 g 0 G - [(;)-265(the)-261(data)-260(distribution)-261(is)-260(such)]TJ 0 -11.956 Td [(that)-267(each)-268(pr)18(ocess)-267(will)-267(own)-267(40)-268(entries)-267(in)-267(the)-267(index)-268(space,)-271(with)-267(an)-268(overlap)-267(of)-267(16)]TJ 0 -11.955 Td [(entries)-249(placed)-248(at)-249(local)-249(i)1(ndices)-249(25)-249(thr)18(ough)-248(40;)-249(the)-249(halo)-249(will)-248(r)8(un)-249(fr)18(om)-249(local)-248(index)]TJ 0 -11.955 Td [(41)-236(thr)18(ough)-237(local)-236(index)-237(48..)-305(If)-236(pr)18(ocess)-237(0)-236(assigns)-237(an)-236(initial)-236(value)-237(of)-236(1)-236(to)-237(its)-236(entries)]TJ 0 -11.955 Td [(in)-259(the)]TJ/F60 9.9626 Tf 27.963 0 Td [(x)]TJ/F62 9.9626 Tf 7.782 0 Td [(vector)74(,)-261(and)-258(pr)18(ocess)-259(1)-259(assigns)-258(a)-259(value)-259(of)-258(2,)-261(then)-259(after)-258(a)-259(call)-259(to)]TJ/F67 9.9626 Tf 266.124 0 Td [(psb_ovrl)]TJ/F62 9.9626 Tf -301.869 -11.955 Td [(with)]TJ/F67 9.9626 Tf 22.816 0 Td [(psb_avg_)]TJ/F62 9.9626 Tf 44.404 0 Td [(and)-257(a)-257(call)-257(to)]TJ/F67 9.9626 Tf 55.983 0 Td [(psb_halo_)]TJ/F62 9.9626 Tf 49.635 0 Td [(the)-257(contents)-257(of)-257(the)-257(local)-257(vectors)-257(will)-258(b)1(e)]TJ -172.838 -11.955 Td [(the)-250(following)-250(\050showing)-250(a)-250(transition)-250(among)-250(the)-250(two)-250(subdomains\051)]TJ + [(;)-276(the)-267(data)-266(distribution)-266(is)-266(such)]TJ 1.009 0 0 1 99.895 293.676 Tm [(that)-247(each)-247(pr)18(ocess)-247(will)-247(own)-247(40)-247(entries)-247(in)-247(the)-247(index)-247(space,)-247(with)-247(an)-247(overlap)-247(of)-247(16)]TJ 1 0 0 1 99.895 281.72 Tm [(entries)-251(pl)1(aced)-251(at)-251(l)1(ocal)-251(indices)-250(25)-251(thr)18(ough)-250(40;)-251(the)-251(halo)-250(will)-251(r)8(un)-250(fr)18(om)-251(local)-250(index)]TJ 0.993 0 0 1 99.895 269.765 Tm [(41)-252(thr)18(ough)-252(local)-252(index)-252(48..)-313(If)-253(pr)19(ocess)-253(0)-252(assigns)-252(an)-252(initial)-252(value)-252(of)-252(1)-252(to)-252(its)-252(entries)]TJ 1.006 0 0 1 99.895 257.81 Tm [(in)-248(the)]TJ/F78 9.9626 Tf 1 0 0 1 127.819 257.81 Tm [(x)]TJ/F84 9.9626 Tf 1.006 0 0 1 135.515 257.81 Tm [(vector)74(,)-249(and)-248(pr)18(ocess)-249(1)-248(assigns)-249(a)-248(value)-248(of)-249(2,)-248(then)-249(after)-248(a)-249(call)-248(to)]TJ/F131 9.9626 Tf 1 0 0 1 401.764 257.81 Tm [(psb_ovrl)]TJ/F84 9.9626 Tf 1.006 0 0 1 99.477 245.855 Tm [(with)]TJ/F131 9.9626 Tf 1 0 0 1 122.35 245.855 Tm [(psb_avg_)]TJ/F84 9.9626 Tf 1.006 0 0 1 166.69 245.855 Tm [(and)-249(a)-249(call)-250(to)]TJ/F131 9.9626 Tf 1 0 0 1 222.692 245.855 Tm [(psb_halo_)]TJ/F84 9.9626 Tf 1.006 0 0 1 272.263 245.855 Tm [(the)-249(contents)-249(of)-249(the)-250(local)-249(vectors)-249(will)-249(be)]TJ 1 0 0 1 99.895 233.9 Tm [(the)-250(following)-250(\050showing)-250(a)-250(transition)-250(among)-250(the)-250(two)-250(subdomains\051)]TJ 0 g 0 G 166.875 -143.462 Td [(63)]TJ 0 g 0 G @@ -16097,7 +16074,7 @@ ET endstream endobj -1405 0 obj +1416 0 obj << /Length 3551 >> @@ -16108,16 +16085,16 @@ stream 0 g 0 G 0 g 0 G BT -/F62 7.9701 Tf 265.805 653.177 Td [(Pr)18(ocess)-250(0)-8396(Pr)18(ocess)-250(1)]TJ -31.163 -9.464 Td [(I)-1500(GLOB\050I\051)-1500(X\050I\051)-5163(I)-1500(GLOB\050I\051)-1500(X\050I\051)]TJ -1.299 -9.465 Td [(1)-4774(1)-1920(1.0)-5000(1)-4274(33)-1920(1.5)]TJ 0 -9.464 Td [(2)-4774(2)-1920(1.0)-5000(2)-4274(34)-1920(1.5)]TJ 0 -9.465 Td [(3)-4774(3)-1920(1.0)-5000(3)-4274(35)-1920(1.5)]TJ 0 -9.464 Td [(4)-4774(4)-1920(1.0)-5000(4)-4274(36)-1920(1.5)]TJ 0 -9.465 Td [(5)-4774(5)-1920(1.0)-5000(5)-4274(37)-1920(1.5)]TJ 0 -9.464 Td [(6)-4774(6)-1920(1.0)-5000(6)-4274(38)-1920(1.5)]TJ 0 -9.465 Td [(7)-4774(7)-1920(1.0)-5000(7)-4274(39)-1920(1.5)]TJ 0 -9.464 Td [(8)-4774(8)-1920(1.0)-5000(8)-4274(40)-1920(1.5)]TJ 0 -9.465 Td [(9)-4774(9)-1920(1.0)-5000(9)-4274(41)-1920(2.0)]TJ -3.985 -9.464 Td [(10)-4274(10)-1920(1.0)-4500(10)-4274(42)-1920(2.0)]TJ 0 -9.465 Td [(11)-4274(11)-1920(1.0)-4500(11)-4274(43)-1920(2.0)]TJ 0 -9.464 Td [(12)-4274(12)-1920(1.0)-4500(12)-4274(44)-1920(2.0)]TJ 0 -9.465 Td [(13)-4274(13)-1920(1.0)-4500(13)-4274(45)-1920(2.0)]TJ 0 -9.464 Td [(14)-4274(14)-1920(1.0)-4500(14)-4274(46)-1920(2.0)]TJ 0 -9.465 Td [(15)-4274(15)-1920(1.0)-4500(15)-4274(47)-1920(2.0)]TJ 0 -9.464 Td [(16)-4274(16)-1920(1.0)-4500(16)-4274(48)-1920(2.0)]TJ 0 -9.465 Td [(17)-4274(17)-1920(1.0)-4500(17)-4274(49)-1920(2.0)]TJ 0 -9.464 Td [(18)-4274(18)-1920(1.0)-4500(18)-4274(50)-1920(2.0)]TJ 0 -9.465 Td [(19)-4274(19)-1920(1.0)-4500(19)-4274(51)-1920(2.0)]TJ 0 -9.464 Td [(20)-4274(20)-1920(1.0)-4500(20)-4274(52)-1920(2.0)]TJ 0 -9.465 Td [(21)-4274(21)-1920(1.0)-4500(21)-4274(53)-1920(2.0)]TJ 0 -9.464 Td [(22)-4274(22)-1920(1.0)-4500(22)-4274(54)-1920(2.0)]TJ 0 -9.465 Td [(23)-4274(23)-1920(1.0)-4500(23)-4274(55)-1920(2.0)]TJ 0 -9.464 Td [(24)-4274(24)-1920(1.0)-4500(24)-4274(56)-1920(2.0)]TJ 0 -9.465 Td [(25)-4274(25)-1920(1.5)-4500(25)-4274(57)-1920(2.0)]TJ 0 -9.464 Td [(26)-4274(26)-1920(1.5)-4500(26)-4274(58)-1920(2.0)]TJ 0 -9.465 Td [(27)-4274(27)-1920(1.5)-4500(27)-4274(59)-1920(2.0)]TJ 0 -9.464 Td [(28)-4274(28)-1920(1.5)-4500(28)-4274(60)-1920(2.0)]TJ 0 -9.465 Td [(29)-4274(29)-1920(1.5)-4500(29)-4274(61)-1920(2.0)]TJ 0 -9.464 Td [(30)-4274(30)-1920(1.5)-4500(30)-4274(62)-1920(2.0)]TJ 0 -9.465 Td [(31)-4274(31)-1920(1.5)-4500(31)-4274(63)-1920(2.0)]TJ 0 -9.464 Td [(32)-4274(32)-1920(1.5)-4500(32)-4274(64)-1920(2.0)]TJ 0 -9.465 Td [(33)-4274(33)-1920(1.5)-4500(33)-4274(25)-1920(1.5)]TJ 0 -9.464 Td [(34)-4274(34)-1920(1.5)-4500(34)-4274(26)-1920(1.5)]TJ 0 -9.465 Td [(35)-4274(35)-1920(1.5)-4500(35)-4274(27)-1920(1.5)]TJ 0 -9.464 Td [(36)-4274(36)-1920(1.5)-4500(36)-4274(28)-1920(1.5)]TJ 0 -9.465 Td [(37)-4274(37)-1920(1.5)-4500(37)-4274(29)-1920(1.5)]TJ 0 -9.464 Td [(38)-4274(38)-1920(1.5)-4500(38)-4274(30)-1920(1.5)]TJ 0 -9.465 Td [(39)-4274(39)-1920(1.5)-4500(39)-4274(31)-1920(1.5)]TJ 0 -9.464 Td [(40)-4274(40)-1920(1.5)-4500(40)-4274(32)-1920(1.5)]TJ 0 -9.465 Td [(41)-4274(41)-1920(2.0)-4500(41)-4274(17)-1920(1.0)]TJ 0 -9.464 Td [(42)-4274(42)-1920(2.0)-4500(42)-4274(18)-1920(1.0)]TJ 0 -9.465 Td [(43)-4274(43)-1920(2.0)-4500(43)-4274(19)-1920(1.0)]TJ 0 -9.464 Td [(44)-4274(44)-1920(2.0)-4500(44)-4274(20)-1920(1.0)]TJ 0 -9.465 Td [(45)-4274(45)-1920(2.0)-4500(45)-4274(21)-1920(1.0)]TJ 0 -9.464 Td [(46)-4274(46)-1920(2.0)-4500(46)-4274(22)-1920(1.0)]TJ 0 -9.465 Td [(47)-4274(47)-1920(2.0)-4500(47)-4274(23)-1920(1.0)]TJ 0 -9.464 Td [(48)-4274(48)-1920(2.0)-4500(48)-4274(24)-1920(1.0)]TJ +/F84 7.9701 Tf 265.805 653.177 Td [(Pr)18(ocess)-250(0)-8396(Pr)18(ocess)-250(1)]TJ -31.163 -9.464 Td [(I)-1500(GLOB\050I\051)-1500(X\050I\051)-5163(I)-1500(GLOB\050I\051)-1500(X\050I\051)]TJ -1.299 -9.465 Td [(1)-4774(1)-1920(1.0)-5000(1)-4274(33)-1920(1.5)]TJ 0 -9.464 Td [(2)-4774(2)-1920(1.0)-5000(2)-4274(34)-1920(1.5)]TJ 0 -9.465 Td [(3)-4774(3)-1920(1.0)-5000(3)-4274(35)-1920(1.5)]TJ 0 -9.464 Td [(4)-4774(4)-1920(1.0)-5000(4)-4274(36)-1920(1.5)]TJ 0 -9.465 Td [(5)-4774(5)-1920(1.0)-5000(5)-4274(37)-1920(1.5)]TJ 0 -9.464 Td [(6)-4774(6)-1920(1.0)-5000(6)-4274(38)-1920(1.5)]TJ 0 -9.465 Td [(7)-4774(7)-1920(1.0)-5000(7)-4274(39)-1920(1.5)]TJ 0 -9.464 Td [(8)-4774(8)-1920(1.0)-5000(8)-4274(40)-1920(1.5)]TJ 0 -9.465 Td [(9)-4774(9)-1920(1.0)-5000(9)-4274(41)-1920(2.0)]TJ -3.985 -9.464 Td [(10)-4274(10)-1920(1.0)-4500(10)-4274(42)-1920(2.0)]TJ 0 -9.465 Td [(11)-4274(11)-1920(1.0)-4500(11)-4274(43)-1920(2.0)]TJ 0 -9.464 Td [(12)-4274(12)-1920(1.0)-4500(12)-4274(44)-1920(2.0)]TJ 0 -9.465 Td [(13)-4274(13)-1920(1.0)-4500(13)-4274(45)-1920(2.0)]TJ 0 -9.464 Td [(14)-4274(14)-1920(1.0)-4500(14)-4274(46)-1920(2.0)]TJ 0 -9.465 Td [(15)-4274(15)-1920(1.0)-4500(15)-4274(47)-1920(2.0)]TJ 0 -9.464 Td [(16)-4274(16)-1920(1.0)-4500(16)-4274(48)-1920(2.0)]TJ 0 -9.465 Td [(17)-4274(17)-1920(1.0)-4500(17)-4274(49)-1920(2.0)]TJ 0 -9.464 Td [(18)-4274(18)-1920(1.0)-4500(18)-4274(50)-1920(2.0)]TJ 0 -9.465 Td [(19)-4274(19)-1920(1.0)-4500(19)-4274(51)-1920(2.0)]TJ 0 -9.464 Td [(20)-4274(20)-1920(1.0)-4500(20)-4274(52)-1920(2.0)]TJ 0 -9.465 Td [(21)-4274(21)-1920(1.0)-4500(21)-4274(53)-1920(2.0)]TJ 0 -9.464 Td [(22)-4274(22)-1920(1.0)-4500(22)-4274(54)-1920(2.0)]TJ 0 -9.465 Td [(23)-4274(23)-1920(1.0)-4500(23)-4274(55)-1920(2.0)]TJ 0 -9.464 Td [(24)-4274(24)-1920(1.0)-4500(24)-4274(56)-1920(2.0)]TJ 0 -9.465 Td [(25)-4274(25)-1920(1.5)-4500(25)-4274(57)-1920(2.0)]TJ 0 -9.464 Td [(26)-4274(26)-1920(1.5)-4500(26)-4274(58)-1920(2.0)]TJ 0 -9.465 Td [(27)-4274(27)-1920(1.5)-4500(27)-4274(59)-1920(2.0)]TJ 0 -9.464 Td [(28)-4274(28)-1920(1.5)-4500(28)-4274(60)-1920(2.0)]TJ 0 -9.465 Td [(29)-4274(29)-1920(1.5)-4500(29)-4274(61)-1920(2.0)]TJ 0 -9.464 Td [(30)-4274(30)-1920(1.5)-4500(30)-4274(62)-1920(2.0)]TJ 0 -9.465 Td [(31)-4274(31)-1920(1.5)-4500(31)-4274(63)-1920(2.0)]TJ 0 -9.464 Td [(32)-4274(32)-1920(1.5)-4500(32)-4274(64)-1920(2.0)]TJ 0 -9.465 Td [(33)-4274(33)-1920(1.5)-4500(33)-4274(25)-1920(1.5)]TJ 0 -9.464 Td [(34)-4274(34)-1920(1.5)-4500(34)-4274(26)-1920(1.5)]TJ 0 -9.465 Td [(35)-4274(35)-1920(1.5)-4500(35)-4274(27)-1920(1.5)]TJ 0 -9.464 Td [(36)-4274(36)-1920(1.5)-4500(36)-4274(28)-1920(1.5)]TJ 0 -9.465 Td [(37)-4274(37)-1920(1.5)-4500(37)-4274(29)-1920(1.5)]TJ 0 -9.464 Td [(38)-4274(38)-1920(1.5)-4500(38)-4274(30)-1920(1.5)]TJ 0 -9.465 Td [(39)-4274(39)-1920(1.5)-4500(39)-4274(31)-1920(1.5)]TJ 0 -9.464 Td [(40)-4274(40)-1920(1.5)-4500(40)-4274(32)-1920(1.5)]TJ 0 -9.465 Td [(41)-4274(41)-1920(2.0)-4500(41)-4274(17)-1920(1.0)]TJ 0 -9.464 Td [(42)-4274(42)-1920(2.0)-4500(42)-4274(18)-1920(1.0)]TJ 0 -9.465 Td [(43)-4274(43)-1920(2.0)-4500(43)-4274(19)-1920(1.0)]TJ 0 -9.464 Td [(44)-4274(44)-1920(2.0)-4500(44)-4274(20)-1920(1.0)]TJ 0 -9.465 Td [(45)-4274(45)-1920(2.0)-4500(45)-4274(21)-1920(1.0)]TJ 0 -9.464 Td [(46)-4274(46)-1920(2.0)-4500(46)-4274(22)-1920(1.0)]TJ 0 -9.465 Td [(47)-4274(47)-1920(2.0)-4500(47)-4274(23)-1920(1.0)]TJ 0 -9.464 Td [(48)-4274(48)-1920(2.0)-4500(48)-4274(24)-1920(1.0)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 88.221 -98.979 Td [(64)]TJ +/F84 9.9626 Tf 88.221 -98.979 Td [(64)]TJ 0 g 0 G ET endstream endobj -1409 0 obj +1420 0 obj << /Length 321 >> @@ -16138,7 +16115,7 @@ Q 0 g 0 G 1 0 0 1 -104.053 -292.88 cm BT -/F62 9.9626 Tf 189.276 261 Td [(Figur)18(e)-250(4:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ +/F84 9.9626 Tf 189.276 261 Td [(Figur)18(e)-250(4:)-310(Sample)-250(discr)18(etization)-250(mesh.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -16148,20 +16125,20 @@ ET endstream endobj -1392 0 obj +1403 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1411 0 R +/PTEX.InfoDict 1422 0 R /BBox [0 0 516 439] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1412 0 R ->>/Font << /R8 1413 0 R/R10 1414 0 R>> +/R7 1423 0 R +>>/Font << /R8 1424 0 R/R10 1425 0 R>> >> /Length 3413 /Filter /FlateDecode @@ -16175,7 +16152,7 @@ x > 7z3mW=򙿪Ok*#_e}0h;ׇĂUmxPyPp}gZz43cL̵1Y][Vέ5x]Oh5E_ZSYdUZR6Tl4^l]M׵6Nɋ&%ě)?'Q:V\ֆU n|œzC+wum_kC*\b[=?' G_ߙ8"*1L̵1Y=Ƣzځm,uZMuTYaU&[:ZGv_P=-F5louY*oX<M+7uys6cn:|oœԱzS7>Zj?|b+T|oœ}Ա2/P=P[1`z:b$>6uMWֆ}qwf-G>7u|M#_e^z䫬Zaꦓ9X?񶎏x0z~DDE]ׅaX!>do֫\̕w-/Iv!o'ȟ`[G. endstream endobj -1417 0 obj +1428 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16234,7 +16211,7 @@ r ^Ƀ]W$g]Q y%Nԭ UOC\un_~C *%4vܢ%‰كl0^2F~ 996=/ `/v pć0e4:G*,-%| 4Ttuu$5ۇ+J\fo[qC +E'l>h,@[hZBAMr eJ}xsi@B`_)y`mqGz۽bM| tZ) ŽuNcpMSWo3r#]a5Ϳ+Wy{?q*>;^Z9 yƇŒp'\h"ղkpxتTR)oǤp!UK͝Q,K endstream endobj -1418 0 obj +1429 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -16307,69 +16284,69 @@ k OWk'T_Pi줮$1R(l?弣 endstream endobj -1424 0 obj +1435 0 obj << -/Length 8493 +/Length 8614 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(5.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(5.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ/F62 9.9626 Tf -51.12 -19.441 Td [(These)-280(subr)18(outines)-280(collect)-280(the)-280(portions)-280(of)-280(g)1(lobal)-280(dense)-280(matrix)-280(distributed)-280(over)]TJ 0 -11.955 Td [(all)-250(pr)18(ocess)-250(into)-250(one)-250(single)-250(array)-250(stor)18(ed)-250(on)-250(one)-250(pr)18(ocess.)]TJ/F60 9.9626 Tf 120.161 -25.465 Td [(g)-25(l)-55(o)-35(b)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(gather)-250(\227)-250(Gather)-250(Global)-250(Dense)-250(Matrix)]TJ/F84 9.9626 Tf 1.011 0 0 1 150.396 686.688 Tm [(These)-247(subr)17(outines)-247(collect)-247(the)-248(portions)-247(of)-248(global)-247(dense)-247(matrix)-248(distributed)-247(over)]TJ 1 0 0 1 150.705 674.733 Tm [(all)-250(pr)18(ocess)-250(into)-250(one)-250(single)-250(array)-250(stor)18(ed)-250(on)-250(one)-250(pr)18(ocess.)]TJ/F78 9.9626 Tf 120.161 -25.465 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 289.521 649.467 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 292.803 649.268 Td [(x)]TJ/F91 10.3811 Tf 8.097 0 Td [(\040)]TJ/F60 9.9626 Tf 13.398 0 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ/F93 10.3811 Tf 27.705 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(l)-55(o)-35(c)]TJ +/F78 9.9626 Tf 292.803 649.268 Td [(x)]TJ/F179 10.3811 Tf 8.097 0 Td [(\040)]TJ/F78 9.9626 Tf 13.398 0 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ/F181 10.3811 Tf 27.705 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 359.144 649.467 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 362.427 649.268 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F93 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F62 9.9626 Tf -219.744 -22.41 Td [(wher)18(e:)]TJ +/F78 9.9626 Tf 362.427 649.268 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F181 10.3811 Tf 2.875 1.96 Td [(\051)]TJ/F84 9.9626 Tf -220.163 -22.41 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.344 -20.664 Td [(g)-25(l)-55(o)-35(b)]TJ +/F78 9.9626 Tf 0.763 -20.664 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 169.703 606.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 172.986 606.194 Td [(x)]TJ +/F78 9.9626 Tf 172.986 606.194 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(submatrix)]TJ/F60 9.9626 Tf 103.256 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(submatrix)]TJ/F78 9.9626 Tf 103.256 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 305.084 606.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 308.366 606.194 Td [(x)]TJ/F62 7.5716 Tf 5.106 -1.858 Td [(1)-13(:)]TJ/F60 7.5716 Tf 5.963 0 Td [(m)]TJ/F62 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F60 7.5716 Tf 7.856 0 Td [(n)]TJ +/F78 9.9626 Tf 308.366 606.194 Td [(x)]TJ/F84 7.5716 Tf 5.106 -1.858 Td [(1)-13(:)]TJ/F78 7.5716 Tf 5.963 0 Td [(m)]TJ/F84 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F78 7.5716 Tf 7.856 0 Td [(n)]TJ 0 g 0 G -/F60 9.9626 Tf -182.447 -19.051 Td [(l)-55(o)-35(c)]TJ +/F78 9.9626 Tf -182.447 -19.051 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 163.696 585.484 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 166.979 585.285 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ +/F78 9.9626 Tf 166.979 585.285 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ 0 g 0 G -/F62 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 234.034 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(.)]TJ +/F84 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 234.034 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(.)]TJ 0 g 0 G -/F60 9.9626 Tf -266.027 -20.91 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ +/F78 9.9626 Tf -266.027 -20.91 Td [(c)-25(o)-35(l)-55(l)-55(e)-25(c)-25(t)]TJ 0 g 0 G -/F62 9.9626 Tf 32.563 0 Td [(is)-250(the)-250(collect)-250(function.)]TJ +/F84 9.9626 Tf 32.563 0 Td [(is)-250(the)-250(collect)-250(function.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -16379,49 +16356,49 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.663 534.539 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F62 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(y)]TJ/F59 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.663 534.539 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F78 9.9626 Tf 4.276 0 Td [(y)]TJ/F75 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 530.753 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 522.185 Td [(Integer)-8983(psb)]TJ +/F84 9.9626 Tf 236.369 522.185 Td [(Integer)-8983(psb)]TJ ET q 1 0 0 1 373.603 522.385 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 522.185 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 376.592 522.185 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 510.429 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 510.23 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 510.23 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 498.474 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 498.275 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 498.275 Td [(gather)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 486.519 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 486.32 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 486.32 Td [(gather)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 474.564 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 474.365 Td [(gather)]TJ +/F84 9.9626 Tf 376.592 474.365 Td [(gather)]TJ ET q 1 0 0 1 230.392 470.579 cm @@ -16429,11 +16406,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 442.2 Td [(T)92(able)-250(19:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 442.2 Td [(T)92(able)-250(19:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -127.572 -27.052 Td [(call)]TJ +/F131 9.9626 Tf -127.572 -27.052 Td [(call)]TJ 0 g 0 G [-525(psb_gather\050glob_x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -16465,11 +16442,11 @@ BT 0 g 0 G [-525(root\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.902 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.902 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.91 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.91 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.909 Td [(loc)]TJ @@ -16479,185 +16456,185 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 167.571 350.427 Td [(x)]TJ +/F75 9.9626 Tf 167.571 350.427 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 371.853 350.626 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 375.135 350.427 Td [(x)]TJ/F62 9.9626 Tf 5.206 0 Td [(.)]TJ -204.73 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-207(as:)-289(a)-208(rank)-207(one)-208(or)-207(two)-207(array)-208(or)-207(an)-208(object)-207(of)-208(type)]TJ +/F78 9.9626 Tf 375.135 350.427 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ -204.73 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 302.606 Tm [(Speci\002ed)-247(as:)-313(a)-247(rank)-247(one)-247(or)-248(two)-247(array)-247(or)-248(an)-247(object)-247(of)-247(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 244.743 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 420.354 302.606 Tm [(psb)]TJ ET q 1 0 0 1 436.673 302.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 439.811 302.606 Td [(T)]TJ +/F131 9.9626 Tf 439.811 302.606 Td [(T)]TJ ET q 1 0 0 1 445.669 302.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 448.807 302.606 Td [(vect)]TJ +/F131 9.9626 Tf 448.807 302.606 Td [(vect)]TJ ET q 1 0 0 1 470.356 302.805 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 473.495 302.606 Td [(type)]TJ +/F131 9.9626 Tf 473.495 302.606 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf -297.884 -11.955 Td [(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf -297.884 -11.955 Td [(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(19)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.91 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -20.91 Td [(desc)]TJ ET q 1 0 0 1 171.218 269.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 269.741 Td [(a)]TJ +/F75 9.9626 Tf 174.207 269.741 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 222.12 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 221.921 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 221.921 Td [(desc)]TJ ET q 1 0 0 1 384.755 222.12 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 221.921 Td [(type)]TJ +/F131 9.9626 Tf 387.893 221.921 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.91 Td [(root)]TJ +/F75 9.9626 Tf -258.11 -20.91 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.252 0 Td [(The)-253(pr)18(ocess)-254(that)-253(holds)-253(the)-253(global)-254(copy)111(.)-319(If)]TJ/F60 9.9626 Tf 182.635 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F93 10.3811 Tf 19.983 0 Td [(=)]TJ/F91 10.3811 Tf 11.147 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-253(all)-254(t)1(he)-254(pr)18(ocesses)-253(will)]TJ -220.305 -11.955 Td [(have)-250(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F91 10.3811 Tf 142.42 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)]TJ/F91 10.3811 Tf 7.873 0 Td [(\024)]TJ/F60 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F91 10.3811 Tf 19.923 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)]TJ/F91 10.3811 Tf 43.89 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1.)]TJ +/F84 9.9626 Tf 1.004 0 0 1 173.649 201.011 Tm [(The)-248(pr)18(ocess)-248(that)-248(holds)-248(the)-248(global)-248(cop)1(y)110(.)-308(If)]TJ/F78 9.9626 Tf 1 0 0 1 356.532 201.011 Tm [(r)-17(o)-35(o)-35(t)]TJ/F181 10.3811 Tf 19.922 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 1.004 0 0 1 395.734 201.011 Tm [(1)-248(all)-248(the)-248(pr)18(ocesses)-248(will)]TJ 1 0 0 1 175.611 189.056 Tm [(have)-250(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F179 10.3811 Tf 142.42 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F179 10.3811 Tf 7.873 0 Td [(\024)]TJ/F78 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F179 10.3811 Tf 19.923 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)]TJ/F179 10.3811 Tf 43.89 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -301.107 -20.909 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -301.107 -20.909 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 166.874 -29.888 Td [(66)]TJ +/F84 9.9626 Tf 166.874 -29.888 Td [(66)]TJ 0 g 0 G ET endstream endobj -1429 0 obj +1440 0 obj << -/Length 1417 +/Length 1418 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(glob)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(glob)]TJ ET q 1 0 0 1 120.976 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.965 706.129 Td [(x)]TJ +/F75 9.9626 Tf 123.965 706.129 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(array)-250(wher)18(e)-250(the)-250(local)-250(parts)-250(must)-250(be)-250(gather)18(ed.)]TJ -9.126 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)-250(with)-250(the)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(array)-250(wher)18(e)-250(the)-250(local)-250(parts)-250(must)-250(be)-250(gather)18(ed.)]TJ -8.817 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)-250(with)-250(the)]TJ 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 202.459 0 Td [(ALLOCATABLE)]TJ +/F131 9.9626 Tf 202.459 0 Td [(ALLOCATABLE)]TJ 0 g 0 G -/F62 9.9626 Tf 60.024 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 60.024 0 Td [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -287.39 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -287.39 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -500.124 Td [(67)]TJ + 142.357 -500.124 Td [(67)]TJ 0 g 0 G ET endstream endobj -1436 0 obj +1447 0 obj << -/Length 7428 +/Length 7631 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(5.4)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(5.4)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ/F62 9.9626 Tf -51.12 -20.363 Td [(These)-223(subr)18(outines)-223(scatters)-224(the)-223(portions)-223(of)-224(global)-223(dense)-223(matrix)-223(owned)-224(by)-223(a)-223(pr)18(o-)]TJ 0 -11.955 Td [(cess)-250(to)-250(all)-250(the)-250(pr)18(ocesses)-250(in)-250(the)-250(pr)18(ocesses)-250(grid.)]TJ/F60 9.9626 Tf 119.478 -26.893 Td [(l)-55(o)-35(c)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(scatter)-250(\227)-250(Scatter)-250(Global)-250(Dense)-250(Matrix)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 685.766 Tm [(These)-354(subr)18(outines)-354(scatters)-353(the)-354(portions)-353(of)-354(global)-354(dense)-353(matrix)-354(owned)-353(by)-354(a)]TJ 1 0 0 1 150.406 673.811 Tm [(pr)18(ocess)-250(to)-250(all)-250(the)-250(pr)18(ocesses)-250(in)-250(the)-250(pr)18(ocesses)-250(grid.)]TJ/F78 9.9626 Tf 119.777 -26.893 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 283.05 647.117 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 286.333 646.918 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 5.642 1.96 Td [(\040)]TJ/F60 9.9626 Tf 13.398 0 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ/F93 10.3811 Tf 28.632 0 Td [(\050)]TJ/F60 9.9626 Tf 4.493 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F78 9.9626 Tf 286.333 646.918 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 5.642 1.96 Td [(\040)]TJ/F78 9.9626 Tf 13.398 0 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ/F181 10.3811 Tf 28.632 0 Td [(\050)]TJ/F78 9.9626 Tf 4.493 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 362.3 647.117 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 365.583 646.918 Td [(x)]TJ/F93 10.3811 Tf 5.329 0 Td [(\051)]TJ/F62 9.9626 Tf -220.207 -23.362 Td [(wher)18(e:)]TJ +/F78 9.9626 Tf 365.583 646.918 Td [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\051)]TJ/F84 9.9626 Tf -220.626 -23.362 Td [(wher)18(e:)]TJ 0 g 0 G -/F60 9.9626 Tf 0.344 -22.091 Td [(g)-25(l)-55(o)-35(b)]TJ +/F78 9.9626 Tf 0.763 -22.091 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 169.703 601.664 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 172.986 601.465 Td [(x)]TJ +/F78 9.9626 Tf 172.986 601.465 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(matrix)]TJ/F60 9.9626 Tf 87.515 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 10.187 0 Td [(is)-250(the)-250(global)-250(matrix)]TJ/F78 9.9626 Tf 87.515 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 289.343 601.664 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 292.626 601.465 Td [(x)]TJ/F62 7.5716 Tf 5.105 -1.858 Td [(1)-13(:)]TJ/F60 7.5716 Tf 5.963 0 Td [(m)]TJ/F62 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F60 7.5716 Tf 7.856 0 Td [(n)]TJ +/F78 9.9626 Tf 292.626 601.465 Td [(x)]TJ/F84 7.5716 Tf 5.105 -1.858 Td [(1)-13(:)]TJ/F78 7.5716 Tf 5.963 0 Td [(m)]TJ/F84 7.5716 Tf 5.985 0 Td [(,1)-13(:)]TJ/F78 7.5716 Tf 7.856 0 Td [(n)]TJ 0 g 0 G -/F60 9.9626 Tf -166.706 -20.955 Td [(l)-55(o)-35(c)]TJ +/F78 9.9626 Tf -166.706 -20.955 Td [(l)-55(o)-35(c)]TJ ET q 1 0 0 1 163.696 578.851 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 166.979 578.652 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ +/F78 9.9626 Tf 166.979 578.652 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ 0 g 0 G -/F62 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 234.034 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(.)]TJ +/F84 9.9626 Tf 7.732 1.96 Td [(is)-250(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)-250(on)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 234.034 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(.)]TJ 0 g 0 G -/F60 9.9626 Tf -266.027 -22.813 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ +/F78 9.9626 Tf -266.027 -22.813 Td [(s)-25(c)-40(a)-25(t)-25(t)-25(e)-15(r)]TJ 0 g 0 G -/F62 9.9626 Tf 33.489 0 Td [(is)-250(the)-250(scatter)-250(function.)]TJ +/F84 9.9626 Tf 33.489 0 Td [(is)-250(the)-250(scatter)-250(function.)]TJ 0 g 0 G 0 g 0 G 0 g 0 G @@ -16667,49 +16644,49 @@ q []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F60 9.9626 Tf 236.663 524.099 Td [(x)]TJ/F60 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F62 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(y)]TJ/F59 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ +/F78 9.9626 Tf 236.663 524.099 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 2.75 1.96 Td [(,)]TJ/F78 9.9626 Tf 4.276 0 Td [(y)]TJ/F75 9.9626 Tf 108.448 0 Td [(Subroutine)]TJ ET q 1 0 0 1 230.392 520.313 cm []0 d 0 J 0.398 w 0 0 m 184.337 0 l S Q BT -/F62 9.9626 Tf 236.369 511.745 Td [(Integer)-8983(psb)]TJ +/F84 9.9626 Tf 236.369 511.745 Td [(Integer)-8983(psb)]TJ ET q 1 0 0 1 373.603 511.945 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 511.745 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ +/F84 9.9626 Tf 376.592 511.745 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Real)-3287(psb)]TJ ET q 1 0 0 1 373.603 499.989 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 499.79 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ +/F84 9.9626 Tf 376.592 499.79 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Real)-3366(psb)]TJ ET q 1 0 0 1 373.603 488.034 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 487.835 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ +/F84 9.9626 Tf 376.592 487.835 Td [(scatter)]TJ -140.223 -11.955 Td [(Short)-250(Pr)18(ecision)-250(Complex)-1200(psb)]TJ ET q 1 0 0 1 373.603 476.079 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 475.88 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ +/F84 9.9626 Tf 376.592 475.88 Td [(scatter)]TJ -140.223 -11.955 Td [(Long)-250(Pr)18(ecision)-250(Complex)-1279(psb)]TJ ET q 1 0 0 1 373.603 464.124 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 376.592 463.925 Td [(scatter)]TJ +/F84 9.9626 Tf 376.592 463.925 Td [(scatter)]TJ ET q 1 0 0 1 230.392 460.139 cm @@ -16717,11 +16694,11 @@ q Q 0 g 0 G BT -/F62 9.9626 Tf 278.277 431.76 Td [(T)92(able)-250(20:)-310(Data)-250(types)]TJ +/F84 9.9626 Tf 278.277 431.76 Td [(T)92(able)-250(20:)-310(Data)-250(types)]TJ 0 g 0 G 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -112.628 -28.004 Td [(call)]TJ +/F131 9.9626 Tf -112.628 -28.004 Td [(call)]TJ 0 g 0 G [-525(psb_scatter\050glob_x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -16740,11 +16717,11 @@ BT 0 g 0 G [-525(mold\051)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -24.806 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -24.806 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.813 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.813 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.813 Td [(glob)]TJ @@ -16754,42 +16731,42 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.774 333.324 Td [(x)]TJ +/F75 9.9626 Tf 174.774 333.324 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(array)-250(that)-250(must)-250(be)-250(scatter)18(ed)-250(into)-250(local)-250(pieces.)]TJ -9.126 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(array)-250(that)-250(must)-250(be)-250(scatter)18(ed)-250(into)-250(local)-250(pieces.)]TJ -8.817 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(or)-250(two)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -22.814 Td [(desc)]TJ +/F75 9.9626 Tf -24.906 -22.814 Td [(desc)]TJ ET q 1 0 0 1 171.218 262.89 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 262.69 Td [(a)]TJ +/F75 9.9626 Tf 174.207 262.69 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 215.069 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 214.87 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 214.87 Td [(desc)]TJ ET q 1 0 0 1 384.755 215.069 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 214.87 Td [(type)]TJ +/F131 9.9626 Tf 387.893 214.87 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -22.813 Td [(root)]TJ +/F75 9.9626 Tf -258.11 -22.813 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.252 0 Td [(The)-218(pr)18(ocess)-218(that)-218(holds)-219(t)1(he)-219(global)-218(copy)111(.)-299(If)]TJ/F60 9.9626 Tf 179.982 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F93 10.3811 Tf 19.922 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-218(all)-218(the)-218(pr)18(ocesses)-219(have)]TJ -217.53 -11.956 Td [(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-258(as:)-327(an)-258(integer)-259(variable)]TJ/F91 10.3811 Tf 142.917 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)]TJ/F91 10.3811 Tf 8.027 0 Td [(\024)]TJ/F60 9.9626 Tf 11.139 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F91 10.3811 Tf 20.077 0 Td [(\024)]TJ/F60 9.9626 Tf 11.239 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.534 0 Td [(\000)]TJ/F62 9.9626 Tf 10.162 0 Td [(1,)-260(default)]TJ/F67 9.9626 Tf 43.952 0 Td [(psb_root_)]TJ/F62 9.9626 Tf 47.073 0 Td [(,)]TJ -316.314 -11.955 Td [(i.e.)-310(pr)18(ocess)-250(0.)]TJ +/F84 9.9626 Tf 0.987 0 0 1 173.649 192.057 Tm [(The)-253(pr)18(ocess)-254(that)-253(holds)-254(the)-253(global)-254(copy)113(.)-315(If)]TJ/F78 9.9626 Tf 1 0 0 1 353.859 192.057 Tm [(r)-17(o)-35(o)-35(t)]TJ/F181 10.3811 Tf 19.926 0 Td [(=)]TJ/F179 10.3811 Tf 11.09 0 Td [(\000)]TJ/F84 9.9626 Tf 0.987 0 0 1 393.069 192.057 Tm [(1)-254(all)-253(the)-253(pr)18(ocesses)-254(have)]TJ 1 0 0 1 175.611 180.101 Tm [(a)-250(copy)-250(of)-250(the)-250(global)-250(vector)74(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.015 0 0 1 175.611 132.281 Tm [(Speci\002ed)-246(as:)-305(an)-246(integer)-246(variable)]TJ/F179 10.3811 Tf 1 0 0 1 319.954 132.281 Tm [(\000)]TJ/F84 9.9626 Tf 1.015 0 0 1 328.148 132.281 Tm [(1)]TJ/F179 10.3811 Tf 1 0 0 1 336.096 132.281 Tm [(\024)]TJ/F78 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F179 10.3811 Tf 19.923 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.5 0 Td [(\000)]TJ/F84 9.9626 Tf 1.015 0 0 1 401.719 132.281 Tm [(1,)-246(default)]TJ/F131 9.9626 Tf 1 0 0 1 446.06 132.281 Tm [(psb_root_)]TJ/F84 9.9626 Tf 1.015 0 0 1 493.133 132.281 Tm [(,)]TJ 1 0 0 1 175.611 120.326 Tm [(i.e.)-310(pr)18(ocess)-250(0.)]TJ 0 g 0 G 141.968 -29.888 Td [(68)]TJ 0 g 0 G @@ -16797,80 +16774,80 @@ ET endstream endobj -1443 0 obj +1454 0 obj << -/Length 3984 +/Length 4073 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(mold)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-223(as:)-296(an)-223(object)-223(of)-222(a)-223(class)-223(derived)-223(fr)18(om)]TJ/F67 9.9626 Tf 199.086 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.566 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.987 0 0 1 124.802 658.308 Tm [(Speci\002ed)-254(as:)-315(an)-254(object)-254(of)-254(a)-254(class)-254(derived)-254(fr)18(om)]TJ/F131 9.9626 Tf 1 0 0 1 323.94 658.308 Tm [(psb)]TJ ET q -1 0 0 1 340.207 658.507 cm +1 0 0 1 340.259 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 343.345 658.308 Td [(T)]TJ +/F131 9.9626 Tf 343.397 658.308 Td [(T)]TJ ET q -1 0 0 1 349.203 658.507 cm +1 0 0 1 349.255 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 352.341 658.308 Td [(base)]TJ +/F131 9.9626 Tf 352.393 658.308 Td [(base)]TJ ET q -1 0 0 1 373.89 658.507 cm +1 0 0 1 373.942 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 377.028 658.308 Td [(vect)]TJ +/F131 9.9626 Tf 377.08 658.308 Td [(vect)]TJ ET q -1 0 0 1 398.577 658.507 cm +1 0 0 1 398.629 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 401.716 658.308 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(;)-232(this)]TJ -297.835 -11.955 Td [(is)-250(only)-250(allowed)-250(when)-250(loc)]TJ +/F131 9.9626 Tf 401.767 658.308 Td [(type)]TJ/F84 9.9626 Tf 0.987 0 0 1 422.689 658.308 Tm [(;)-254(this)]TJ 1 0 0 1 124.802 646.353 Tm [(is)-250(only)-250(allowed)-250(when)-250(loc)]TJ ET q 1 0 0 1 234.988 646.552 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 237.976 646.353 Td [(x)-250(is)-250(of)-250(type)]TJ +/F84 9.9626 Tf 237.976 646.353 Td [(x)-250(is)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 50.53 0 Td [(psb)]TJ +/F131 9.9626 Tf 50.53 0 Td [(psb)]TJ ET q 1 0 0 1 304.825 646.552 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 307.963 646.353 Td [(T)]TJ +/F131 9.9626 Tf 307.963 646.353 Td [(T)]TJ ET q 1 0 0 1 313.821 646.552 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 316.959 646.353 Td [(vect)]TJ +/F131 9.9626 Tf 316.959 646.353 Td [(vect)]TJ ET q 1 0 0 1 338.508 646.552 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 341.646 646.353 Td [(type)]TJ +/F131 9.9626 Tf 341.646 646.353 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -262.673 -19.925 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -262.673 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(loc)]TJ @@ -16880,139 +16857,139 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 116.762 606.502 Td [(x)]TJ +/F75 9.9626 Tf 116.762 606.502 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F60 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(dense)-250(matrix)]TJ/F78 9.9626 Tf 175.664 0 Td [(g)-25(l)-55(o)-35(b)]TJ ET q 1 0 0 1 321.043 606.702 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 324.326 606.502 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ -204.729 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-214(as:)-292(a)-215(rank)-214(one)-214(or)-214(two)-215(ALLOCA)74(T)74(ABLE)-214(array)-214(or)-214(an)-215(object)-214(of)-214(type)]TJ +/F78 9.9626 Tf 324.326 606.502 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ -204.729 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.985 0 0 1 124.802 558.682 Tm [(Speci\002ed)-253(as:)-315(a)-253(rank)-253(one)-253(or)-253(two)-254(ALLOCA)76(T)75(ABLE)-253(array)-254(or)-253(an)-253(object)-253(of)-253(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 0 -11.955 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 124.802 546.727 Tm [(psb)]TJ ET q 1 0 0 1 141.121 546.926 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 144.259 546.727 Td [(T)]TJ +/F131 9.9626 Tf 144.259 546.727 Td [(T)]TJ ET q 1 0 0 1 150.117 546.926 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 153.255 546.727 Td [(vect)]TJ +/F131 9.9626 Tf 153.255 546.727 Td [(vect)]TJ ET q 1 0 0 1 174.804 546.926 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 177.942 546.727 Td [(type)]TJ +/F131 9.9626 Tf 177.942 546.727 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 23.412 0 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ +/F84 9.9626 Tf 23.412 0 Td [(containing)-250(numbers)-250(of)-250(the)-250(type)-250(indicated)-250(in)-250(T)92(able)]TJ 0 0 1 rg 0 0 1 RG [-250(20)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -101.459 -19.926 Td [(info)]TJ +/F75 9.9626 Tf -101.459 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -388.543 Td [(69)]TJ + 142.357 -388.543 Td [(69)]TJ 0 g 0 G ET endstream endobj -1447 0 obj +1458 0 obj << -/Length 6319 +/Length 6713 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 706.042 Td [(6)-1000(Data)-250(management)-250(routines)]TJ/F59 11.9552 Tf 0 -24.694 Td [(6.1)-1000(psb)]TJ +/F75 14.3462 Tf 150.705 706.042 Td [(6)-1000(Data)-250(management)-250(routines)]TJ/F75 11.9552 Tf 0 -24.694 Td [(6.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 681.547 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 681.348 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 201.825 681.348 Td [(cdall)-250(\227)-250(Allocates)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,parts=parts\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vg=vg,[mg=mg,flag=flag]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,nl=nl\051)]TJ 0 -11.956 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,repl=.true.\051)]TJ/F62 9.9626 Tf 14.944 -19.771 Td [(This)-377(subr)18(outine)-378(initializes)-377(the)-378(communication)-377(descriptor)-378(associated)-377(with)]TJ -14.944 -11.956 Td [(an)-271(index)-271(space.)-373(One)-272(o)1(f)-272(the)-271(optional)-271(ar)18(guments)]TJ/F67 9.9626 Tf 209.77 0 Td [(parts)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)]TJ/F67 9.9626 Tf 5.244 0 Td [(vg)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)]TJ/F67 9.9626 Tf 5.244 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)]TJ/F67 9.9626 Tf 5.244 0 Td [(nl)]TJ/F62 9.9626 Tf 13.161 0 Td [(or)]TJ/F67 9.9626 Tf 12.076 0 Td [(repl)]TJ/F62 9.9626 Tf 23.622 0 Td [(must)]TJ -321.435 -11.955 Td [(be)-250(speci\002ed,)-250(ther)18(eby)-250(choosing)-250(the)-250(speci\002c)-250(initialization)-250(strategy)111(.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,parts=parts\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vg=vg,[mg=mg,flag=flag]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,nl=nl\051)]TJ 0 -11.956 Td [(call)-525(psb_cdall\050icontxt,)-525(desc_a,)-525(info,mg=mg,repl=.true.\051)]TJ/F84 9.9626 Tf 0.986 0 0 1 165.649 594.792 Tm [(This)-254(subr)19(outine)-254(initializes)-254(the)-253(communication)-254(descriptor)-253(associated)-254(with)-254(an)]TJ 1.018 0 0 1 150.705 582.836 Tm [(index)-245(space.)-305(One)-245(of)-245(the)-245(optional)-245(ar)17(guments)]TJ/F131 9.9626 Tf 1 0 0 1 348.257 582.836 Tm [(parts)]TJ/F84 9.9626 Tf 1.018 0 0 1 374.409 582.836 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 379.432 582.836 Tm [(vg)]TJ/F84 9.9626 Tf 1.018 0 0 1 389.893 582.836 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 394.916 582.836 Tm [(vl)]TJ/F84 9.9626 Tf 1.018 0 0 1 405.377 582.836 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 410.4 582.836 Tm [(nl)]TJ/F84 9.9626 Tf 1.018 0 0 1 423.347 582.836 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 435.377 582.836 Tm [(repl)]TJ/F84 9.9626 Tf 1.018 0 0 1 458.786 582.836 Tm [(must)-245(be)]TJ 1 0 0 1 150.705 570.881 Tm [(speci\002ed,)-250(ther)18(eby)-250(choosing)-250(the)-250(speci\002c)-250(initialization)-250(strategy)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -18.208 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf 0 -18.208 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.067 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.067 Td [(icontxt)]TJ +/F75 9.9626 Tf -29.828 -19.067 Td [(icontxt)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.066 Td [(vg)]TJ +/F75 9.9626 Tf -24.907 -19.066 Td [(vg)]TJ 0 g 0 G -/F62 9.9626 Tf 16.06 0 Td [(Data)-250(allocation:)-310(each)-250(index)]TJ/F60 9.9626 Tf 121.707 0 Td [(i)]TJ/F91 10.3811 Tf 5.856 0 Td [(2)-290(f)]TJ/F62 9.9626 Tf 15.245 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F91 10.3811 Tf 13.449 0 Td [(g)]TJ/F62 9.9626 Tf 7.806 0 Td [(is)-250(allocated)-250(to)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 98.454 0 Td [(v)-47(g)]TJ/F93 10.3811 Tf 10.68 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)]TJ -295.759 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 16.06 0 Td [(Data)-250(allocation:)-310(each)-250(index)]TJ/F78 9.9626 Tf 121.707 0 Td [(i)]TJ/F179 10.3811 Tf 5.856 0 Td [(2)-290(f)]TJ/F84 9.9626 Tf 15.245 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F179 10.3811 Tf 13.449 0 Td [(g)]TJ/F84 9.9626 Tf 7.806 0 Td [(is)-250(allocated)-250(to)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 98.454 0 Td [(v)-47(g)]TJ/F181 10.3811 Tf 10.68 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 4.149 0 Td [(.)]TJ -295.759 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.067 Td [(\003ag)]TJ +/F75 9.9626 Tf -24.907 -19.067 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(Speci\002es)-250(whether)-250(entries)-250(in)]TJ/F60 9.9626 Tf 123.401 0 Td [(v)-47(g)]TJ/F62 9.9626 Tf 13.046 0 Td [(ar)18(e)-250(zer)18(o-)-250(or)-250(one-based.)]TJ -133.129 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0,)-167(1,)-250(default)-250(0.)]TJ +/F84 9.9626 Tf 21.589 0 Td [(Speci\002es)-250(whether)-250(entries)-250(in)]TJ/F78 9.9626 Tf 123.4 0 Td [(v)-47(g)]TJ/F84 9.9626 Tf 13.046 0 Td [(ar)18(e)-250(zer)18(o-)-250(or)-250(one-based.)]TJ -133.128 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0,)-167(1,)-250(default)-249(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.067 Td [(mg)]TJ +/F75 9.9626 Tf -24.907 -19.067 Td [(mg)]TJ 0 g 0 G -/F62 9.9626 Tf 19.377 0 Td [(the)-250(\050global\051)-250(number)-250(of)-250(r)18(ows)-250(of)-250(the)-250(pr)18(oblem.)]TJ 5.53 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-262(as:)-335(an)-263(integer)-262(value.)-348(It)-262(is)-262(r)18(equir)18(ed)-263(if)]TJ/F67 9.9626 Tf 203.091 0 Td [(parts)]TJ/F62 9.9626 Tf 28.766 0 Td [(or)]TJ/F67 9.9626 Tf 11.99 0 Td [(repl)]TJ/F62 9.9626 Tf 23.536 0 Td [(is)-262(speci\002ed,)]TJ -267.383 -11.955 Td [(it)-250(is)-250(optional)-250(if)]TJ/F67 9.9626 Tf 66.141 0 Td [(vg)]TJ/F62 9.9626 Tf 12.951 0 Td [(is)-250(speci\002ed.)]TJ +/F84 9.9626 Tf 19.377 0 Td [(the)-250(\050global\051)-250(number)-250(of)-250(r)18(ows)-250(of)-250(the)-250(pr)18(oblem.)]TJ 5.53 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.014 0 0 1 175.611 266.056 Tm [(Speci\002ed)-246(as:)-305(an)-246(integer)-246(value.)-305(It)-246(is)-246(r)18(equir)17(ed)-246(if)]TJ/F131 9.9626 Tf 1 0 0 1 379.657 266.056 Tm [(parts)]TJ/F84 9.9626 Tf 1.014 0 0 1 408.293 266.056 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 420.282 266.056 Tm [(repl)]TJ/F84 9.9626 Tf 1.014 0 0 1 443.688 266.056 Tm [(is)-246(speci\002ed,)]TJ 1 0 0 1 175.611 254.101 Tm [(it)-250(is)-250(optional)-250(if)]TJ/F131 9.9626 Tf 66.141 0 Td [(vg)]TJ/F84 9.9626 Tf 12.952 0 Td [(is)-250(speci\002ed.)]TJ 0 g 0 G -/F59 9.9626 Tf -103.999 -19.067 Td [(parts)]TJ +/F75 9.9626 Tf -103.999 -19.067 Td [(parts)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(the)-250(subr)18(outine)-250(that)-250(de\002nes)-250(the)-250(partitioning)-250(scheme.)]TJ -2.759 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(subr)18(outine.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(the)-250(subr)18(outine)-250(that)-250(de\002nes)-250(the)-250(partitioning)-250(scheme.)]TJ -2.76 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(subr)18(outine.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.067 Td [(vl)]TJ +/F75 9.9626 Tf -24.906 -19.067 Td [(vl)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Data)-293(allocation:)-395(the)-293(set)-292(of)-293(global)-293(i)1(ndices)]TJ/F60 9.9626 Tf 181.166 0 Td [(v)-25(l)]TJ/F93 10.3811 Tf 8.548 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-369(:)]TJ/F60 9.9626 Tf 14.955 0 Td [(n)-25(l)]TJ/F93 10.3811 Tf 9.105 0 Td [(\051)]TJ/F62 9.9626 Tf 7.065 0 Td [(belonging)-293(to)-292(the)-293(calling)]TJ -213.919 -11.955 Td [(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 164.543 180.101 Tm [(Data)-254(allocation:)-322(the)-255(set)-254(of)-254(global)-254(indices)]TJ/F78 9.9626 Tf 1 0 0 1 346.245 180.101 Tm [(v)-25(l)]TJ/F181 10.3811 Tf 8.547 0 Td [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 358.942 180.101 Tm [(1)]TJ 1 0 0 1 367.087 180.101 Tm [(:)]TJ/F78 9.9626 Tf 5.679 0 Td [(n)-25(l)]TJ/F181 10.3811 Tf 9.106 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 388.605 180.101 Tm [(belonging)-254(to)-254(the)-255(calling)]TJ 1 0 0 1 175.313 168.146 Tm [(pr)18(ocess.)]TJ 0.298 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G - 141.967 -29.887 Td [(70)]TJ + 141.968 -29.888 Td [(70)]TJ 0 g 0 G ET endstream endobj -1452 0 obj +1463 0 obj << -/Length 6337 +/Length 6793 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(nl)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(nl)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(Data)-305(allocation:)-421(in)-305(a)-305(generalized)-305(block-r)18(ow)-305(distribution)-306(the)-305(number)-305(of)-305(in-)]TJ 10.521 -11.955 Td [(dices)-250(belonging)-250(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(May)-250(be)-250(speci\002ed)-250(together)-250(with)]TJ/F67 9.9626 Tf 272.943 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 114.281 706.129 Tm [(Data)-391(allocation:)-596(in)-391(a)-391(generalized)-391(block-r)17(ow)-391(distribution)-391(the)-391(number)-391(of)]TJ 1 0 0 1 124.802 694.174 Tm [(indices)-250(belonging)-250(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(May)-250(be)-250(speci\002ed)-250(together)-250(with)]TJ/F131 9.9626 Tf 272.943 0 Td [(vl)]TJ/F84 9.9626 Tf 10.461 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -308.311 -20.135 Td [(repl)]TJ +/F75 9.9626 Tf -308.311 -20.135 Td [(repl)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(Data)-288(allocation:)-385(build)-288(a)-288(r)18(eplicated)-287(index)-288(space)-288(\050i.e.)-423(all)-288(pr)18(ocesses)-287(own)-288(all)]TJ 1.664 -11.955 Td [(indices\051.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F67 9.9626 Tf 132.133 0 Td [(.true.)]TJ +/F84 9.9626 Tf 1.018 0 0 1 123.138 626.218 Tm [(Data)-246(allocation:)-306(build)-246(a)-247(r)18(eplicated)-246(index)-246(space)-247(\050i.e.)-306(all)-247(pr)18(ocesses)-246(own)-246(all)]TJ 1 0 0 1 124.802 614.263 Tm [(indices\051.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(the)-250(logical)-250(value)]TJ/F131 9.9626 Tf 132.133 0 Td [(.true.)]TJ 0 g 0 G -/F59 9.9626 Tf -157.04 -20.135 Td [(globalcheck)]TJ +/F75 9.9626 Tf -157.04 -20.135 Td [(globalcheck)]TJ 0 g 0 G -/F62 9.9626 Tf 59.766 0 Td [(Data)-250(allocation:)-310(do)-250(global)-250(checks)-250(on)-250(the)-250(local)-250(index)-250(lists)]TJ/F67 9.9626 Tf 247.788 0 Td [(vl)]TJ/F62 9.9626 Tf -282.647 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value,)-250(default:)]TJ/F67 9.9626 Tf 162.678 0 Td [(.false.)]TJ +/F84 9.9626 Tf 59.766 0 Td [(Data)-250(allocation:)-310(do)-250(global)-250(checks)-250(on)-250(the)-250(local)-250(index)-250(lists)]TJ/F131 9.9626 Tf 247.788 0 Td [(vl)]TJ/F84 9.9626 Tf -282.647 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value,)-250(default:)]TJ/F131 9.9626 Tf 162.678 0 Td [(.false.)]TJ 0 g 0 G -/F59 9.9626 Tf -187.585 -20.135 Td [(lidx)]TJ +/F75 9.9626 Tf -187.585 -20.135 Td [(lidx)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(Data)-308(allocation:)-425(the)-307(set)-308(of)-307(local)-308(indices)]TJ/F60 9.9626 Tf 175.731 0 Td [(l)-48(i)-32(d)-42(x)]TJ/F93 10.3811 Tf 17.065 0 Td [(\050)]TJ/F62 9.9626 Tf 4.15 0 Td [(1)-397(:)]TJ/F60 9.9626 Tf 15.505 0 Td [(n)-25(l)]TJ/F93 10.3811 Tf 9.105 0 Td [(\051)]TJ/F62 9.9626 Tf 7.214 0 Td [(to)-308(be)-307(assigned)-308(to)-307(the)]TJ -226.548 -11.955 Td [(global)-250(indices)]TJ/F60 9.9626 Tf 63.476 0 Td [(v)-25(l)]TJ/F62 9.9626 Tf 8.423 0 Td [(.)]TJ -71.899 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 122.58 478.351 Tm [(Data)-274(allocat)1(ion:)-361(the)-274(set)-273(of)-274(local)-273(indices)]TJ/F78 9.9626 Tf 1 0 0 1 299.091 478.351 Tm [(l)-48(i)-32(d)-42(x)]TJ/F181 10.3811 Tf 17.066 0 Td [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 320.306 478.351 Tm [(1)]TJ 1 0 0 1 328.814 478.351 Tm [(:)]TJ/F78 9.9626 Tf 6.041 0 Td [(n)-25(l)]TJ/F181 10.3811 Tf 9.106 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 350.89 478.351 Tm [(to)-273(be)-274(assigned)-273(to)-274(the)]TJ 1 0 0 1 124.802 466.396 Tm [(global)-250(indices)]TJ/F78 9.9626 Tf 63.476 0 Td [(v)-25(l)]TJ/F84 9.9626 Tf 8.423 0 Td [(.)]TJ -71.899 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.127 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -22.128 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.135 Td [(desc)]TJ @@ -17022,111 +16999,111 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 376.313 Td [(a)]TJ +/F75 9.9626 Tf 123.397 376.313 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 328.692 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 328.492 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 328.492 Td [(desc)]TJ ET q 1 0 0 1 333.945 328.692 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 328.492 Td [(type)]TJ +/F131 9.9626 Tf 337.084 328.492 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.135 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -20.135 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -22.128 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -22.128 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -20.082 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -20.082 Td [(1.)]TJ 0 g 0 G - [-500(One)-309(of)-310(the)-309(optional)-310(ar)18(guments)]TJ/F67 9.9626 Tf 152.661 0 Td [(parts)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)]TJ/F67 9.9626 Tf 5.723 0 Td [(vg)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf 5.723 0 Td [(vl)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf 5.723 0 Td [(nl)]TJ/F62 9.9626 Tf 13.544 0 Td [(or)]TJ/F67 9.9626 Tf 12.458 0 Td [(repl)]TJ/F62 9.9626 Tf 24.005 0 Td [(must)-310(be)-309(speci-)]TJ -254.456 -11.956 Td [(\002ed,)-250(ther)18(eby)-250(choosing)-250(the)-250(initialization)-250(strategy)-250(as)-250(follows:)]TJ + 0.98 0 0 1 124.802 218.327 Tm [(One)-236(of)-236(the)-235(optional)-236(ar)18(guments)]TJ/F131 9.9626 Tf 1 0 0 1 258.603 218.327 Tm [(parts)]TJ/F84 9.9626 Tf 0.98 0 0 1 284.754 218.327 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 289.535 218.327 Tm [(vg)]TJ/F84 9.9626 Tf 0.98 0 0 1 299.996 218.327 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 304.776 218.327 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 315.237 218.327 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 320.017 218.327 Tm [(nl)]TJ/F84 9.9626 Tf 0.98 0 0 1 332.78 218.327 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 344.269 218.327 Tm [(repl)]TJ/F84 9.9626 Tf 0.98 0 0 1 367.492 218.327 Tm [(must)-236(be)-236(speci)1(\002ed,)]TJ 1 0 0 1 124.802 206.371 Tm [(ther)18(eby)-250(choosing)-250(the)-250(initialization)-250(strategy)-250(as)-250(follows:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.135 Td [(parts)]TJ +/F75 9.9626 Tf 0 -20.135 Td [(parts)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(In)-242(this)-242(case)-242(we)-243(have)-242(a)-242(subr)18(outine)-242(specifying)-242(the)-242(mapping)-242(between)]TJ -5.748 -11.955 Td [(global)-312(indices)-312(and)-311(pr)18(ocess/local)-312(index)-312(pairs.)-496(If)-311(this)-312(optional)-312(ar)18(gu-)]TJ 0 -11.955 Td [(ment)-230(is)-230(speci\002ed,)-234(then)-230(it)-230(is)-230(mandatory)-230(to)-230(specify)-230(the)-230(ar)18(gument)]TJ/F67 9.9626 Tf 274.929 0 Td [(mg)]TJ/F62 9.9626 Tf 12.752 0 Td [(as)]TJ -287.681 -11.955 Td [(well.)-310(The)-250(subr)18(outine)-250(must)-250(conform)-250(to)-250(the)-250(following)-250(interface:)]TJ +/F84 9.9626 Tf 0.997 0 0 1 152.468 186.236 Tm [(In)-251(this)-251(case)-251(we)-251(have)-251(a)-251(subr)19(outine)-251(specifying)-251(the)-251(mapping)-251(between)]TJ 1.02 0 0 1 146.72 174.281 Tm [(global)-273(indices)-272(and)-273(pr)18(ocess/local)-273(index)-273(pairs.)-386(If)-273(this)-273(optional)-272(ar)17(gu-)]TJ 0.991 0 0 1 146.72 162.326 Tm [(ment)-252(is)-252(speci\002ed,)-252(then)-252(it)-253(is)-252(mandatory)-252(to)-252(specify)-252(the)-252(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 421.534 162.326 Tm [(mg)]TJ/F84 9.9626 Tf 0.991 0 0 1 434.484 162.326 Tm [(as)]TJ 1 0 0 1 146.301 150.371 Tm [(well.)-310(The)-250(subr)18(outine)-250(must)-250(conform)-250(to)-250(the)-250(following)-250(interface:)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 10.46 -18.09 Td [(interface)]TJ 15.691 -11.955 Td [(subroutine)-525(psb_parts\050glob_index,mg,np,pv,nv\051)]TJ +/F131 9.9626 Tf 10.879 -18.09 Td [(interface)]TJ 15.692 -11.955 Td [(subroutine)-525(psb_parts\050glob_index,mg,np,pv,nv\051)]TJ 0 g 0 G -/F62 9.9626 Tf 93.899 -29.888 Td [(71)]TJ +/F84 9.9626 Tf 93.898 -29.888 Td [(71)]TJ 0 g 0 G ET endstream endobj -1458 0 obj +1469 0 obj << -/Length 9985 +/Length 11640 >> stream 0 g 0 G 0 g 0 G BT -/F67 9.9626 Tf 234.142 706.129 Td [(integer,)-525(intent)-525(\050in\051)-1050(::)-525(glob_index,np,mg)]TJ 0 -11.955 Td [(integer,)-525(intent)-525(\050out\051)-525(::)-525(nv,)-525(pv\050*\051)]TJ -10.461 -11.955 Td [(end)-525(subroutine)-525(psb_parts)]TJ -15.691 -11.956 Td [(end)-525(interface)]TJ/F62 9.9626 Tf -10.461 -17.586 Td [(The)-250(input)-250(ar)18(guments)-250(ar)18(e:)]TJ +/F131 9.9626 Tf 234.142 706.129 Td [(integer,)-525(intent)-525(\050in\051)-1050(::)-525(glob_index,np,mg)]TJ 0 -11.955 Td [(integer,)-525(intent)-525(\050out\051)-525(::)-525(nv,)-525(pv\050*\051)]TJ -10.461 -11.955 Td [(end)-525(subroutine)-525(psb_parts)]TJ -15.691 -11.956 Td [(end)-525(interface)]TJ/F84 9.9626 Tf -10.77 -17.586 Td [(The)-250(input)-250(ar)18(guments)-250(ar)18(e:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -15.594 Td [(glob)]TJ +/F75 9.9626 Tf 0.309 -15.594 Td [(glob)]TJ ET q 1 0 0 1 218.61 637.283 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 221.599 637.083 Td [(index)]TJ +/F75 9.9626 Tf 221.599 637.083 Td [(index)]TJ 0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(The)-250(global)-250(index)-250(to)-250(be)-250(mapped;)]TJ +/F84 9.9626 Tf 30.127 0 Td [(The)-250(global)-250(index)-250(to)-250(be)-250(mapped;)]TJ 0 g 0 G -/F59 9.9626 Tf -54.506 -13.774 Td [(np)]TJ +/F75 9.9626 Tf -54.197 -13.774 Td [(np)]TJ 0 g 0 G -/F62 9.9626 Tf 17.156 0 Td [(The)-250(number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(mapping;)]TJ +/F84 9.9626 Tf 16.847 0 Td [(The)-250(number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(mapping;)]TJ 0 g 0 G -/F59 9.9626 Tf -17.156 -13.774 Td [(mg)]TJ +/F75 9.9626 Tf -16.847 -13.774 Td [(mg)]TJ 0 g 0 G -/F62 9.9626 Tf 19.377 0 Td [(The)-250(total)-250(number)-250(of)-250(global)-250(r)18(ows)-250(in)-250(the)-250(mapping;)]TJ -19.377 -15.594 Td [(The)-250(output)-250(ar)18(guments)-250(ar)18(e:)]TJ +/F84 9.9626 Tf 19.069 0 Td [(The)-250(total)-250(number)-250(of)-250(global)-250(r)18(ows)-250(in)-250(the)-250(mapping;)]TJ -19.378 -15.594 Td [(The)-250(output)-250(ar)18(guments)-250(ar)18(e:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -15.594 Td [(nv)]TJ +/F75 9.9626 Tf 0.309 -15.594 Td [(nv)]TJ 0 g 0 G -/F62 9.9626 Tf 16.608 0 Td [(The)-250(number)-250(of)-250(entries)-250(in)]TJ/F67 9.9626 Tf 111.052 0 Td [(pv)]TJ/F62 9.9626 Tf 10.461 0 Td [(;)]TJ +/F84 9.9626 Tf 16.299 0 Td [(The)-250(number)-250(of)-250(entries)-250(in)]TJ/F131 9.9626 Tf 111.052 0 Td [(pv)]TJ/F84 9.9626 Tf 10.461 0 Td [(;)]TJ 0 g 0 G -/F59 9.9626 Tf -138.121 -13.774 Td [(pv)]TJ +/F75 9.9626 Tf -137.812 -13.774 Td [(pv)]TJ 0 g 0 G -/F62 9.9626 Tf 16.608 0 Td [(A)-393(vector)-394(containing)-393(the)-394(indices)-393(of)-394(the)-394(pr)18(ocesses)-393(to)-394(which)-393(the)]TJ 2.022 -11.955 Td [(global)-357(index)-357(should)-356(be)-357(assigend;)-410(each)-357(entry)-357(must)-357(satisfy)-357(0)]TJ/F91 10.3811 Tf 270.063 0 Td [(\024)]TJ/F60 9.9626 Tf -269.39 -11.956 Td [(p)-25(v)]TJ/F93 10.3811 Tf 10.461 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F69 10.3811 Tf 8.665 0 Td [(<)]TJ/F60 9.9626 Tf 12.71 0 Td [(n)-80(p)]TJ/F62 9.9626 Tf 11.442 0 Td [(;)-382(if)]TJ/F60 9.9626 Tf 16.006 0 Td [(n)-25(v)]TJ/F69 10.3811 Tf 15.409 0 Td [(>)]TJ/F62 9.9626 Tf 12.586 0 Td [(1)-338(we)-338(have)-338(an)-338(index)-338(assigned)-338(to)-338(multiple)]TJ -95.244 -11.955 Td [(pr)18(ocesses,)-250(i.e.)-310(we)-250(have)-250(an)-250(overlap)-250(among)-250(the)-250(subdomains.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 213.748 564.573 Tm [(A)-342(vector)-342(containing)-342(the)-343(in)1(dices)-343(of)-342(the)-342(pr)18(ocesses)-342(to)-343(which)-342(the)]TJ 1.02 0 0 1 216.159 552.618 Tm [(global)-309(index)-310(should)-309(be)-310(assigend;)-341(each)-310(entry)-309(must)-310(satisfy)-309(0)]TJ/F179 10.3811 Tf 1 0 0 1 486.222 552.618 Tm [(\024)]TJ/F78 9.9626 Tf -269.39 -11.956 Td [(p)-25(v)]TJ/F181 10.3811 Tf 10.461 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F134 10.3811 Tf 8.297 0 Td [(<)]TJ/F78 9.9626 Tf 12.342 0 Td [(n)-80(p)]TJ/F84 9.9626 Tf 1.02 0 0 1 266.666 540.662 Tm [(;)-345(if)]TJ/F78 9.9626 Tf 1 0 0 1 282.348 540.662 Tm [(n)-25(v)]TJ/F134 10.3811 Tf 15.041 0 Td [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 309.606 540.662 Tm [(1)-312(we)-312(have)-311(an)-312(index)-312(assigned)-312(to)-312(multiple)]TJ 1 0 0 1 215.861 528.707 Tm [(pr)18(ocesses,)-250(i.e.)-310(we)-250(have)-250(an)-250(overlap)-250(among)-250(the)-250(subdomains.)]TJ 0 g 0 G -/F59 9.9626 Tf -40.548 -15.594 Td [(vg)]TJ +/F75 9.9626 Tf -40.25 -15.593 Td [(vg)]TJ 0 g 0 G -/F62 9.9626 Tf 16.06 0 Td [(In)-330(this)-330(case)-330(the)-330(association)-330(between)-331(an)-330(index)-330(and)-330(a)-330(pr)18(ocess)-330(is)-330(spec-)]TJ 5.858 -11.955 Td [(i\002ed)-371(via)-372(an)-371(integer)-372(vector)]TJ/F67 9.9626 Tf 120.986 0 Td [(vg\0501:mg\051)]TJ/F62 9.9626 Tf 41.842 0 Td [(;)-432(each)-372(index)]TJ/F60 9.9626 Tf 58.923 0 Td [(i)]TJ/F91 10.3811 Tf 8.096 0 Td [(2)-506(f)]TJ/F62 9.9626 Tf 17.485 0 Td [(1)-179(.)-192(.)-192(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F91 10.3811 Tf 13.449 0 Td [(g)]TJ/F62 9.9626 Tf 9.016 0 Td [(is)]TJ -289.764 -11.955 Td [(assigned)-381(to)-381(pr)18(ocess)]TJ/F60 9.9626 Tf 91.547 0 Td [(v)-47(g)]TJ/F93 10.3811 Tf 10.68 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.089 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)-703(The)-380(vector)]TJ/F67 9.9626 Tf 61.203 0 Td [(vg)]TJ/F62 9.9626 Tf 14.255 0 Td [(must)-381(be)-381(identical)-381(on)-380(all)]TJ -189.127 -11.955 Td [(calling)-354(pr)18(ocesses;)-406(its)-355(entri)1(es)-355(may)-354(have)-354(the)-354(ranges)]TJ/F93 10.3811 Tf 226.209 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(0)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.888 0 Td [(\000)]TJ/F62 9.9626 Tf 10.515 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 7.678 0 Td [(or)]TJ/F93 10.3811 Tf -287.387 -11.955 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(n)-80(p)]TJ/F93 10.3811 Tf 11.566 0 Td [(\051)]TJ/F62 9.9626 Tf 6.984 0 Td [(accor)18(ding)-284(to)-285(the)-284(value)-285(of)]TJ/F67 9.9626 Tf 113.068 0 Td [(flag)]TJ/F62 9.9626 Tf 20.922 0 Td [(.)-413(The)-285(size)]TJ/F60 9.9626 Tf 45.955 0 Td [(m)-47(g)]TJ/F62 9.9626 Tf 16.159 0 Td [(may)-285(be)-284(spec-)]TJ -238.895 -11.955 Td [(i\002ed)-349(via)-349(the)-349(optional)-349(ar)18(gument)]TJ/F67 9.9626 Tf 144.092 0 Td [(mg)]TJ/F62 9.9626 Tf 10.46 0 Td [(;)-399(the)-349(default)-349(is)-349(to)-349(use)-349(the)-349(entir)18(e)]TJ -154.552 -11.956 Td [(vector)]TJ/F67 9.9626 Tf 29.937 0 Td [(vg)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)-250(thus)-250(having)]TJ/F67 9.9626 Tf 59.885 0 Td [(mg=size\050vg\051)]TJ/F62 9.9626 Tf 57.534 0 Td [(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 191.671 513.114 Tm [(In)-244(this)-244(case)-244(the)-244(association)-244(between)-244(an)-244(index)-244(and)-244(a)-245(pr)19(ocess)-244(is)-244(speci\002ed)]TJ 0.986 0 0 1 197.25 501.158 Tm [(via)-254(an)-254(integer)-253(vector)]TJ/F131 9.9626 Tf 1 0 0 1 288.765 501.158 Tm [(vg\0501:mg\051)]TJ/F84 9.9626 Tf 0.986 0 0 1 330.608 501.158 Tm [(;)-254(each)-254(index)]TJ/F78 9.9626 Tf 1 0 0 1 384.647 501.158 Tm [(i)]TJ/F179 10.3811 Tf 5.861 0 Td [(2)-290(f)]TJ/F84 9.9626 Tf 0.986 0 0 1 405.758 501.158 Tm [(1)]TJ 1 0 0 1 412.455 501.158 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(m)-47(g)]TJ/F179 10.3811 Tf 13.45 0 Td [(g)]TJ/F84 9.9626 Tf 0.986 0 0 1 446.913 501.158 Tm [(is)-254(assigned)]TJ 1.02 0 0 1 197.529 489.203 Tm [(to)-260(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 245.285 489.203 Tm [(v)-47(g)]TJ/F181 10.3811 Tf 10.68 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 267.407 489.203 Tm [(.)-349(The)-260(vector)]TJ/F131 9.9626 Tf 1 0 0 1 323.78 489.203 Tm [(vg)]TJ/F84 9.9626 Tf 1.02 0 0 1 336.883 489.203 Tm [(must)-260(be)-260(identical)-260(on)-260(all)-260(calling)-260(pr)18(o-)]TJ 1.02 0 0 1 197.529 477.248 Tm [(cesses;)-427(its)-366(entries)-366(may)-367(have)-366(the)-366(ranges)]TJ/F181 10.3811 Tf 1 0 0 1 380.093 477.248 Tm [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.242 477.248 Tm [(0)]TJ 1 0 0 1 391.108 477.248 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.2 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.96 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.856 477.248 Tm [(1)]TJ/F181 10.3811 Tf 1 0 0 1 434.061 477.248 Tm [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 441.932 477.248 Tm [(or)]TJ/F181 10.3811 Tf 1 0 0 1 455.341 477.248 Tm [(\050)]TJ/F84 9.9626 Tf 1.02 0 0 1 459.491 477.248 Tm [(1)]TJ 1 0 0 1 466.356 477.248 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(n)-80(p)]TJ/F181 10.3811 Tf 11.566 0 Td [(\051)]TJ/F84 9.9626 Tf 0.993 0 0 1 197.529 465.293 Tm [(accor)18(ding)-252(to)-253(the)-252(value)-252(of)]TJ/F131 9.9626 Tf 1 0 0 1 308.219 465.293 Tm [(flag)]TJ/F84 9.9626 Tf 0.993 0 0 1 329.141 465.293 Tm [(.)-314(The)-253(size)]TJ/F78 9.9626 Tf 1 0 0 1 373.16 465.293 Tm [(m)-47(g)]TJ/F84 9.9626 Tf 0.993 0 0 1 388.982 465.293 Tm [(may)-252(be)-253(speci\002ed)-252(via)-253(the)]TJ 0.999 0 0 1 197.529 453.338 Tm [(optional)-250(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 282.025 453.338 Tm [(mg)]TJ/F84 9.9626 Tf 0.999 0 0 1 292.485 453.338 Tm [(;)-251(the)-250(default)-250(is)-251(to)-250(use)-251(the)-250(entir)18(e)-250(vector)]TJ/F131 9.9626 Tf 1 0 0 1 459.716 453.338 Tm [(vg)]TJ/F84 9.9626 Tf 0.999 0 0 1 470.177 453.338 Tm [(,)-250(thus)]TJ 1 0 0 1 197.529 441.383 Tm [(having)]TJ/F131 9.9626 Tf 33.136 0 Td [(mg=size\050vg\051)]TJ/F84 9.9626 Tf 57.533 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -179.735 -15.593 Td [(vl)]TJ +/F75 9.9626 Tf -112.587 -15.594 Td [(vl)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(In)-383(this)-382(case)-383(we)-383(ar)18(e)-382(specifying)-383(the)-383(list)-382(of)-383(indices)]TJ/F67 9.9626 Tf 220.787 0 Td [(vl\0501:nl\051)]TJ/F62 9.9626 Tf 45.655 0 Td [(assigned)]TJ -258.362 -11.955 Td [(to)-401(the)-400(curr)18(ent)-401(pr)18(ocess;)-476(thus,)-438(the)-400(global)-401(pr)18(oblem)-400(size)]TJ/F60 9.9626 Tf 243.82 0 Td [(m)-47(g)]TJ/F62 9.9626 Tf 17.316 0 Td [(is)-401(given)]TJ -261.136 -11.956 Td [(by)-435(the)-435(range)-435(of)-435(the)-435(aggr)18(egate)-435(of)-435(the)-435(individual)-435(vectors)]TJ/F67 9.9626 Tf 259.368 0 Td [(vl)]TJ/F62 9.9626 Tf 14.794 0 Td [(spec-)]TJ -274.162 -11.955 Td [(i\002ed)-429(in)-429(the)-429(calling)-428(pr)18(ocesses.)-847(The)-429(size)-429(may)-429(be)-428(speci\002ed)-429(via)-429(the)]TJ 0 -11.955 Td [(optional)-438(ar)18(gument)]TJ/F67 9.9626 Tf 88.319 0 Td [(nl)]TJ/F62 9.9626 Tf 10.46 0 Td [(;)-532(the)-438(default)-438(is)-438(to)-438(use)-438(the)-438(entir)18(e)-438(vector)]TJ/F67 9.9626 Tf 185.156 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)]TJ -294.396 -11.955 Td [(thus)-364(having)]TJ/F67 9.9626 Tf 57.178 0 Td [(nl=size\050vl\051)]TJ/F62 9.9626 Tf 57.534 0 Td [(.)-652(If)]TJ/F67 9.9626 Tf 19.294 0 Td [(globalcheck=.true.)]TJ/F62 9.9626 Tf 97.774 0 Td [(the)-364(subr)18(outine)]TJ -231.78 -11.955 Td [(will)-403(check)-403(how)-404(many)-403(times)-403(each)-403(entry)-403(in)-404(the)-403(global)-403(index)-403(space)]TJ/F93 10.3811 Tf 0.125 -11.955 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.967 0 Td [(m)-47(g)]TJ/F93 10.3811 Tf 13.449 0 Td [(\051)]TJ/F62 9.9626 Tf 6.245 0 Td [(is)-210(speci\002ed)-211(in)-210(the)-210(input)-210(lists)]TJ/F67 9.9626 Tf 122.836 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)-218(thus)-211(allowin)1(g)-211(for)-210(the)-210(pr)18(es-)]TJ -177.232 -11.956 Td [(ence)-302(of)-302(overlap)-302(in)-302(the)-302(input,)-315(and)-302(checki)1(ng)-302(for)-302(\223orphan\224)-302(indices.)-466(If)]TJ/F67 9.9626 Tf 0 -11.955 Td [(globalcheck=.false.)]TJ/F62 9.9626 Tf 99.377 0 Td [(,)-437(the)-400(subr)18(outine)-400(will)-400(not)-400(check)-400(for)-400(overlap,)]TJ -99.377 -11.955 Td [(and)-255(may)-255(be)-255(signi\002cantly)-255(faster)74(,)-257(but)-255(the)-255(user)-255(is)-255(implicitly)-255(guarantee-)]TJ 0 -11.955 Td [(ing)-250(that)-250(ther)18(e)-250(ar)18(e)-250(neither)-250(orphan)-250(nor)-250(overlap)-250(indices.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 189.449 425.789 Tm [(In)-336(this)-335(case)-336(we)-335(ar)17(e)-335(specifying)-336(the)-335(list)-336(of)-335(indices)]TJ/F131 9.9626 Tf 1 0 0 1 409.868 425.789 Tm [(vl\0501:nl\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 455.12 425.789 Tm [(assigned)]TJ 1.018 0 0 1 197.529 413.834 Tm [(to)-245(the)-246(curr)18(ent)-245(pr)17(ocess;)-245(thus,)-246(the)-245(global)-245(pr)17(oblem)-245(size)]TJ/F78 9.9626 Tf 1 0 0 1 430.434 413.834 Tm [(m)-47(g)]TJ/F84 9.9626 Tf 1.018 0 0 1 446.248 413.834 Tm [(is)-245(given)-246(by)]TJ 1.02 0 0 1 197.529 401.878 Tm [(the)-255(range)-255(of)-255(the)-255(aggr)18(egate)-255(of)-255(the)-255(individual)-255(vectors)]TJ/F131 9.9626 Tf 1 0 0 1 429.927 401.878 Tm [(vl)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.978 401.878 Tm [(speci\002ed)-255(in)]TJ 1.02 0 0 1 197.529 389.923 Tm [(the)-347(call)1(ing)-347(pr)18(ocesses.)-608(The)-347(size)-346(may)-347(be)-346(speci\002ed)-347(via)-346(the)-347(optional)]TJ 1.02 0 0 1 197.529 377.968 Tm [(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 243.859 377.968 Tm [(nl)]TJ/F84 9.9626 Tf 1.02 0 0 1 254.32 377.968 Tm [(;)-257(the)-253(default)-253(is)-252(to)-253(use)-253(the)-253(entir)18(e)-253(vector)]TJ/F131 9.9626 Tf 1 0 0 1 425.335 377.968 Tm [(vl)]TJ/F84 9.9626 Tf 1.02 0 0 1 435.795 377.968 Tm [(,)-255(thus)-253(having)]TJ/F131 9.9626 Tf 1 0 0 1 197.529 366.013 Tm [(nl=size\050vl\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 255.063 366.013 Tm [(.)-306(If)]TJ/F131 9.9626 Tf 1 0 0 1 269.222 366.013 Tm [(globalcheck=.true.)]TJ/F84 9.9626 Tf 0.98 0 0 1 365.556 366.013 Tm [(the)-224(subr)18(outine)-224(will)-224(check)-224(how)]TJ 0.98 0 0 1 197.529 354.058 Tm [(many)-209(t)1(imes)-209(each)-208(entry)-209(in)-208(the)-209(global)-208(index)-209(space)]TJ/F181 10.3811 Tf 1 0 0 1 403.34 354.058 Tm [(\050)]TJ/F84 9.9626 Tf 0.98 0 0 1 407.49 354.058 Tm [(1)]TJ 1 0 0 1 414.156 354.058 Tm [(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 13.201 0 Td [(m)-47(g)]TJ/F181 10.3811 Tf 13.449 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 446.991 354.058 Tm [(is)-208(speci\002ed)]TJ 0.999 0 0 1 197.529 342.103 Tm [(in)-249(the)-250(input)-249(lists)]TJ/F131 9.9626 Tf 1 0 0 1 271.343 342.103 Tm [(vl)]TJ/F84 9.9626 Tf 0.999 0 0 1 281.803 342.103 Tm [(,)-250(thus)-249(allowing)-249(for)-250(the)-249(pr)18(esence)-249(of)-250(overlap)-249(in)-249(the)]TJ 1.005 0 0 1 197.529 330.147 Tm [(input,)-248(and)-249(checking)-248(for)-249(\223orphan\224)-248(indices.)-308(If)]TJ/F131 9.9626 Tf 1 0 0 1 393.782 330.147 Tm [(globalcheck=.false.)]TJ/F84 9.9626 Tf 1.005 0 0 1 493.158 330.147 Tm [(,)]TJ 1.018 0 0 1 197.529 318.192 Tm [(the)-246(subr)18(outine)-247(will)-246(not)-246(check)-246(for)-246(overlap,)-246(and)-246(may)-246(be)-247(signi\002cantly)]TJ 1.02 0 0 1 197.529 306.237 Tm [(faster)73(,)-256(but)-253(the)-253(user)-253(is)-254(implicitly)-253(guaranteeing)-253(that)-253(ther)17(e)-253(ar)18(e)-253(neither)]TJ 1 0 0 1 197.529 294.282 Tm [(orphan)-250(nor)-250(overlap)-250(indices.)]TJ 0 g 0 G -/F59 9.9626 Tf -21.918 -15.594 Td [(lidx)]TJ +/F75 9.9626 Tf -21.918 -15.594 Td [(lidx)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(The)-377(optional)-376(ar)18(gument)]TJ/F67 9.9626 Tf 107.528 0 Td [(lidx)]TJ/F62 9.9626 Tf 24.674 0 Td [(is)-377(available)-376(for)-377(those)-377(cases)-377(in)-376(which)]TJ -132.969 -11.955 Td [(the)-361(user)-361(has)-361(alr)18(eady)-361(established)-361(a)-361(global-to-local)-361(mapping;)-416(if)-361(it)-361(is)]TJ 0 -11.955 Td [(speci\002ed,)-253(each)-253(index)-253(in)]TJ/F67 9.9626 Tf 105.128 0 Td [(vl\050i\051)]TJ/F62 9.9626 Tf 28.669 0 Td [(will)-253(be)-252(mapped)-253(to)-253(the)-252(corr)18(esponding)]TJ -133.797 -11.955 Td [(local)-317(index)]TJ/F67 9.9626 Tf 51.649 0 Td [(lidx\050i\051)]TJ/F62 9.9626 Tf 36.612 0 Td [(.)-510(When)-317(specifying)-316(the)-317(ar)18(gument)]TJ/F67 9.9626 Tf 148.638 0 Td [(lidx)]TJ/F62 9.9626 Tf 24.076 0 Td [(the)-317(user)]TJ -260.975 -11.956 Td [(would)-329(also)-330(likely)-329(employ)]TJ/F67 9.9626 Tf 117.394 0 Td [(lidx)]TJ/F62 9.9626 Tf 24.203 0 Td [(in)-329(calls)-330(to)]TJ/F67 9.9626 Tf 46.656 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf 50.355 0 Td [(and)]TJ/F67 9.9626 Tf 20.148 0 Td [(local)]TJ/F62 9.9626 Tf 29.433 0 Td [(in)]TJ -288.189 -11.955 Td [(calls)-250(to)]TJ/F67 9.9626 Tf 33.095 0 Td [(psb_spins)]TJ/F62 9.9626 Tf 49.564 0 Td [(and)]TJ/F67 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ/F62 9.9626 Tf 47.073 0 Td [(;)-250(see)-250(also)-250(sec.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 197.987 278.688 Tm [(The)-326(optional)-325(ar)18(gument)]TJ/F131 9.9626 Tf 1 0 0 1 306.11 278.688 Tm [(lidx)]TJ/F84 9.9626 Tf 1.02 0 0 1 330.339 278.688 Tm [(is)-326(available)-325(for)-326(those)-325(cases)-326(in)-325(which)]TJ 1.02 0 0 1 197.529 266.733 Tm [(the)-305(user)-305(has)-305(alr)17(eady)-305(established)-305(a)-305(global-to-local)-305(mapping;)-335(if)-305(it)-305(is)]TJ 1.001 0 0 1 197.529 254.778 Tm [(speci\002ed,)-250(each)-250(index)-250(in)]TJ/F131 9.9626 Tf 1 0 0 1 302.65 254.778 Tm [(vl\050i\051)]TJ/F84 9.9626 Tf 1.001 0 0 1 331.295 254.778 Tm [(will)-250(be)-250(mapped)-250(to)-250(the)-250(corr)18(esponding)]TJ 1.02 0 0 1 197.529 242.823 Tm [(local)-275(index)]TJ/F131 9.9626 Tf 1 0 0 1 249.36 242.823 Tm [(lidx\050i\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 285.973 242.823 Tm [(.)-393(When)-275(specifying)-275(the)-274(ar)17(gument)]TJ/F131 9.9626 Tf 1 0 0 1 434.697 242.823 Tm [(lidx)]TJ/F84 9.9626 Tf 1.02 0 0 1 458.411 242.823 Tm [(the)-275(user)]TJ 1.02 0 0 1 197.111 230.868 Tm [(would)-297(also)-297(likely)-296(employ)]TJ/F131 9.9626 Tf 1 0 0 1 315.53 230.868 Tm [(lidx)]TJ/F84 9.9626 Tf 1.02 0 0 1 339.468 230.868 Tm [(in)-297(calls)-297(to)]TJ/F131 9.9626 Tf 1 0 0 1 386.066 230.868 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 1.02 0 0 1 436.156 230.868 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 456.376 230.868 Tm [(local)]TJ/F84 9.9626 Tf 1.02 0 0 1 485.545 230.868 Tm [(in)]TJ 1 0 0 1 197.529 218.912 Tm [(calls)-250(to)]TJ/F131 9.9626 Tf 33.096 0 Td [(psb_spins)]TJ/F84 9.9626 Tf 49.563 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(psb_geins)]TJ/F84 9.9626 Tf 47.073 0 Td [(;)-250(see)-250(also)-250(sec.)]TJ 0 0 1 rg 0 0 1 RG [-250(2.3.1)]TJ 0 g 0 G [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -171.008 -15.593 Td [(nl)]TJ +/F75 9.9626 Tf -171.008 -15.593 Td [(nl)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(If)-411(this)-411(ar)18(gument)-411(is)-411(speci\002ed)-411(alone)-411(\050i.e.)-793(without)]TJ/F67 9.9626 Tf 223.432 0 Td [(vl)]TJ/F62 9.9626 Tf 10.461 0 Td [(\051)-411(the)-411(r)18(esult)-411(is)-411(a)]TJ -226.361 -11.956 Td [(generalized)-280(r)18(ow-block)-280(distribution)-280(in)-280(which)-281(each)-280(pr)18(ocess)]TJ/F60 9.9626 Tf 257.148 0 Td [(I)]TJ/F62 9.9626 Tf 6.642 0 Td [(gets)-280(as-)]TJ -263.79 -11.955 Td [(signed)-250(a)-250(consecutive)-250(chunk)-250(of)]TJ/F60 9.9626 Tf 135.186 0 Td [(N)]TJ/F60 7.5716 Tf 7.851 -1.808 Td [(I)]TJ/F93 10.3811 Tf 6.316 1.808 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-25(l)]TJ/F62 9.9626 Tf 11.472 0 Td [(global)-250(indices.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 189.997 203.319 Tm [(If)-247(this)-248(ar)19(gument)-247(is)-248(speci\002ed)-247(alone)-247(\050i.e.)-314(without)]TJ/F131 9.9626 Tf 1 0 0 1 393.086 203.319 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 403.547 203.319 Tm [(\051)-247(the)-247(r)18(esult)-247(is)-248(a)-247(gener)18(-)]TJ 0.98 0 0 1 197.529 191.364 Tm [(alized)-250(r)18(ow-block)-250(distribution)-250(in)-250(which)-251(each)-250(pr)19(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 423.173 191.364 Tm [(I)]TJ/F84 9.9626 Tf 0.98 0 0 1 429.466 191.364 Tm [(gets)-250(assigned)-250(a)]TJ 1 0 0 1 197.529 179.408 Tm [(consecutive)-250(chunk)-250(of)]TJ/F78 9.9626 Tf 95.904 0 Td [(N)]TJ/F78 7.5716 Tf 7.851 -1.808 Td [(I)]TJ/F181 10.3811 Tf 6.316 1.808 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-25(l)]TJ/F84 9.9626 Tf 11.472 0 Td [(global)-250(indices.)]TJ 0 g 0 G -/F59 9.9626 Tf -193.829 -15.593 Td [(repl)]TJ +/F75 9.9626 Tf -154.547 -15.593 Td [(repl)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(This)-418(ar)18(guments)-417(speci\002es)-418(to)-417(r)18(eplicate)-418(all)-417(indices)-418(on)-418(all)-417(pr)18(ocesses.)]TJ -1.325 -11.956 Td [(This)-366(is)-367(a)-366(special)-366(purpose)-366(data)-367(allocation)-366(that)-366(is)-366(useful)-367(in)-366(the)-366(con-)]TJ 0 -11.955 Td [(str)8(uction)-250(of)-250(some)-250(multilevel)-250(pr)18(econditioners.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 198.545 163.815 Tm [(This)-242(ar)19(guments)-242(speci\002es)-241(to)-242(r)18(eplicate)-241(all)-242(indices)-242(on)-241(all)-242(pr)19(ocesses.)-312(This)]TJ 0.998 0 0 1 197.529 151.86 Tm [(is)-252(a)-251(special)-252(purpose)-252(data)-252(allocation)-251(that)-252(is)-252(useful)-251(in)-252(the)-252(constr)8(uction)]TJ 1 0 0 1 197.529 139.904 Tm [(of)-250(some)-250(multilevel)-250(pr)18(econditioners.)]TJ 0 g 0 G - -34.371 -19.579 Td [(2.)]TJ + -34.371 -19.578 Td [(2.)]TJ 0 g 0 G [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(build)-250(state.)]TJ 0 g 0 G @@ -17136,34 +17113,34 @@ ET endstream endobj -1464 0 obj +1475 0 obj << -/Length 2555 +/Length 2973 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 112.349 706.129 Td [(3.)]TJ +/F84 9.9626 Tf 112.349 706.129 Td [(3.)]TJ 0 g 0 G - [-500(Calling)-260(the)-260(r)18(outine)-260(with)]TJ/F67 9.9626 Tf 120.886 0 Td [(vg)]TJ/F62 9.9626 Tf 13.052 0 Td [(or)]TJ/F67 9.9626 Tf 11.965 0 Td [(parts)]TJ/F62 9.9626 Tf 28.742 0 Td [(implies)-260(that)-260(every)-260(pr)18(ocess)-260(will)-260(scan)]TJ -162.192 -11.955 Td [(the)-250(entir)18(e)-250(index)-250(space)-250(to)-250(\002gur)18(e)-250(out)-250(the)-250(local)-250(indices.)]TJ + 1.005 0 0 1 124.802 706.129 Tm [(Calling)-248(the)-248(r)17(outine)-248(with)]TJ/F131 9.9626 Tf 1 0 0 1 233.307 706.129 Tm [(vg)]TJ/F84 9.9626 Tf 1.005 0 0 1 246.254 706.129 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 258.161 706.129 Tm [(parts)]TJ/F84 9.9626 Tf 1.005 0 0 1 286.799 706.129 Tm [(implies)-248(that)-248(every)-249(pr)18(ocess)-248(will)-248(scan)]TJ 1 0 0 1 124.802 694.174 Tm [(the)-250(entir)18(e)-250(index)-250(space)-250(to)-250(\002gur)18(e)-250(out)-250(the)-250(local)-250(indices.)]TJ 0 g 0 G -12.453 -19.926 Td [(4.)]TJ 0 g 0 G - [-500(Overlapped)-250(indices)-250(ar)18(e)-250(possible)-250(with)-250(both)]TJ/F67 9.9626 Tf 201.093 0 Td [(parts)]TJ/F62 9.9626 Tf 28.643 0 Td [(and)]TJ/F67 9.9626 Tf 19.357 0 Td [(vl)]TJ/F62 9.9626 Tf 12.951 0 Td [(invocations.)]TJ + [-500(Overlapped)-250(indices)-250(ar)18(e)-250(possible)-250(with)-250(both)]TJ/F131 9.9626 Tf 201.093 0 Td [(parts)]TJ/F84 9.9626 Tf 28.642 0 Td [(and)]TJ/F131 9.9626 Tf 19.358 0 Td [(vl)]TJ/F84 9.9626 Tf 12.951 0 Td [(invocations.)]TJ 0 g 0 G -262.044 -19.925 Td [(5.)]TJ 0 g 0 G - [-500(When)-190(the)-190(subr)18(outine)-190(is)-190(invoked)-190(with)]TJ/F67 9.9626 Tf 175.161 0 Td [(vl)]TJ/F62 9.9626 Tf 12.354 0 Td [(in)-190(conjunction)-190(with)]TJ/F67 9.9626 Tf 86.235 0 Td [(globalcheck=.true.)]TJ/F62 9.9626 Tf 94.146 0 Td [(,)]TJ -355.443 -11.955 Td [(it)-280(will)-281(perform)-280(a)-280(scan)-281(of)-280(the)-281(index)-280(space)-280(to)-281(sear)18(ch)-280(for)-280(overlap)-281(or)-280(orphan)]TJ 0 -11.955 Td [(indices.)]TJ + 0.98 0 0 1 124.304 654.323 Tm [(When)-194(the)-194(subr)19(outine)-194(is)-194(invoked)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 283.981 654.323 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 296.335 654.323 Tm [(in)-194(conjunction)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 380.959 654.323 Tm [(globalcheck=.true.)]TJ/F84 9.9626 Tf 0.98 0 0 1 475.105 654.323 Tm [(,)]TJ 1.015 0 0 1 124.802 642.368 Tm [(it)-247(will)-246(perform)-247(a)-246(scan)-247(of)-246(the)-247(index)-247(space)-246(to)-247(sear)18(ch)-247(for)-246(overlap)-247(or)-246(orphan)]TJ 1 0 0 1 124.802 630.413 Tm [(indices.)]TJ 0 g 0 G -12.453 -19.925 Td [(6.)]TJ 0 g 0 G - [-500(When)-190(the)-190(subr)18(outine)-190(is)-190(invoked)-190(with)]TJ/F67 9.9626 Tf 175.161 0 Td [(vl)]TJ/F62 9.9626 Tf 12.354 0 Td [(in)-190(conjunction)-190(with)]TJ/F67 9.9626 Tf 86.235 0 Td [(globalcheck=.false.)]TJ/F62 9.9626 Tf 99.377 0 Td [(,)]TJ -360.674 -11.956 Td [(no)-338(index)-337(space)-338(scan)-337(will)-338(take)-337(place.)-573(Thus)-337(it)-338(is)-338(the)-337(r)18(esponsibility)-338(of)-337(the)]TJ 0 -11.955 Td [(user)-328(to)-328(make)-328(sur)18(e)-328(that)-328(the)-328(indices)-328(speci\002ed)-328(in)]TJ/F67 9.9626 Tf 209.973 0 Td [(vl)]TJ/F62 9.9626 Tf 13.729 0 Td [(have)-328(neither)-328(orphans)]TJ -223.702 -11.955 Td [(nor)-250(overlaps;)-250(if)-250(this)-250(assumption)-250(fails,)-250(r)18(esults)-250(will)-250(be)-250(unpr)18(edictable.)]TJ + 0.98 0 0 1 124.304 610.488 Tm [(When)-194(the)-194(subr)19(outine)-194(is)-194(invoked)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 283.981 610.488 Tm [(vl)]TJ/F84 9.9626 Tf 0.98 0 0 1 296.335 610.488 Tm [(in)-194(conjunction)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 380.959 610.488 Tm [(globalcheck=.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 480.336 610.488 Tm [(,)]TJ 1.02 0 0 1 124.802 598.532 Tm [(no)-295(index)-295(space)-295(scan)-295(will)-296(take)-295(place.)-454(Thus)-295(it)-295(is)-295(the)-295(r)18(esponsibility)-296(of)-295(the)]TJ 1.02 0 0 1 124.802 586.577 Tm [(user)-277(to)-278(make)-277(sur)17(e)-277(that)-277(the)-278(indices)-277(speci\002ed)-278(in)]TJ/F131 9.9626 Tf 1 0 0 1 334.35 586.577 Tm [(vl)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.63 586.577 Tm [(have)-277(neither)-278(orphans)]TJ 1 0 0 1 124.802 574.622 Tm [(nor)-250(overlaps;)-250(if)-250(this)-250(assumption)-250(fails,)-250(r)18(esults)-250(will)-250(be)-250(unpr)18(edictable.)]TJ 0 g 0 G -12.453 -19.925 Td [(7.)]TJ 0 g 0 G - [-500(Orphan)-417(and)-416(overlap)-417(indices)-416(ar)18(e)-417(impossible)-416(by)-417(constr)8(uction)-417(when)-416(the)]TJ 12.453 -11.955 Td [(subr)18(outine)-250(is)-250(invoked)-250(with)]TJ/F67 9.9626 Tf 121.164 0 Td [(nl)]TJ/F62 9.9626 Tf 12.951 0 Td [(\050alone\051,)-250(or)]TJ/F67 9.9626 Tf 47.372 0 Td [(vg)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)]TJ + 1.02 0 0 1 124.802 554.697 Tm [(Orphan)-347(and)-347(overlap)-346(indices)-347(ar)17(e)-346(impossible)-347(by)-347(constr)8(uction)-347(when)-347(the)]TJ 1 0 0 1 124.802 542.742 Tm [(subr)18(outine)-250(is)-250(invoked)-250(with)]TJ/F131 9.9626 Tf 121.164 0 Td [(nl)]TJ/F84 9.9626 Tf 12.951 0 Td [(\050alone\051,)-250(or)]TJ/F131 9.9626 Tf 47.372 0 Td [(vg)]TJ/F84 9.9626 Tf 10.461 0 Td [(.)]TJ 0 g 0 G -49.98 -452.304 Td [(73)]TJ 0 g 0 G @@ -17171,54 +17148,54 @@ ET endstream endobj -1475 0 obj +1486 0 obj << -/Length 7006 +/Length 7200 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.2)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.2)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(routine)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(cdins)-250(\227)-250(Communication)-250(descriptor)-250(insert)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdins\050nz,)-525(ia,)-525(ja,)-525(desc_a,)-525(info)-525([,ila,jla]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdins\050nz,ja,desc,info[,jla,mask,lidx]\051)]TJ/F62 9.9626 Tf 14.944 -20.366 Td [(This)-336(subr)18(outine)-335(examines)-336(the)-336(edges)-335(of)-336(the)-336(graph)-335(associated)-336(with)-335(the)-336(dis-)]TJ -14.944 -11.955 Td [(cr)18(etization)-260(mesh)-261(\050and)-260(isomorphic)-260(to)-261(the)-260(sparsity)-260(pattern)-261(of)-260(a)-260(linear)-261(system)-260(co-)]TJ 0 -11.955 Td [(ef)18(\002cient)-238(matrix\051,)-241(storing)-238(them)-239(as)-238(necessary)-238(into)-239(the)-238(communication)-238(descriptor)74(.)]TJ 0 -11.955 Td [(In)-259(the)-260(\002rst)-259(form)-260(the)-259(edges)-259(ar)18(e)-260(speci\002ed)-259(as)-260(pairs)-259(of)-260(indices)]TJ/F60 9.9626 Tf 255.974 0 Td [(i)-47(a)]TJ/F93 10.3811 Tf 7.91 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)]TJ/F60 9.9626 Tf 4.624 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.841 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-264(the)-260(start)1(-)]TJ -299.233 -11.956 Td [(ing)-299(index)]TJ/F60 9.9626 Tf 44.948 0 Td [(i)-47(a)]TJ/F93 10.3811 Tf 7.91 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 7.13 0 Td [(should)-299(belong)-299(to)-299(the)-299(curr)18(ent)-299(pr)18(ocess.)-458(In)-299(the)-299(second)-299(form)-299(only)]TJ -67.28 -11.955 Td [(the)-250(r)18(emote)-250(indices)]TJ/F60 9.9626 Tf 83.65 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.841 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 6.64 0 Td [(ar)18(e)-250(speci\002ed.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdins\050nz,)-525(ia,)-525(ja,)-525(desc_a,)-525(info)-525([,ila,jla]\051)]TJ 0 -11.955 Td [(call)-525(psb_cdins\050nz,ja,desc,info[,jla,mask,lidx]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 654.844 Tm [(This)-292(subr)18(outine)-291(examines)-292(the)-292(edges)-291(of)-292(the)-291(graph)-292(associated)-292(with)-291(the)-292(dis-)]TJ 1.02 0 0 1 150.705 642.889 Tm [(cr)18(etization)-343(mesh)-343(\050and)-343(isomorphic)-342(to)-343(the)-343(sparsity)-343(pattern)-342(of)-343(a)-343(linear)-343(system)]TJ 0.98 0 0 1 150.705 630.934 Tm [(coef)18(\002cient)-226(matrix\051,)-232(storing)-226(them)-226(as)-227(necessary)-226(into)-226(the)-226(communication)-226(descriptor)75(.)]TJ 0.98 0 0 1 150.705 618.979 Tm [(In)-225(the)-225(\002rst)-225(form)-225(the)-225(edges)-226(ar)19(e)-225(speci\002ed)-225(as)-225(pairs)-226(of)-225(indices)]TJ/F78 9.9626 Tf 1 0 0 1 397.536 618.979 Tm [(i)-47(a)]TJ/F181 10.3811 Tf 7.91 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 416.888 618.979 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 421.463 618.979 Tm [(j)-40(a)]TJ/F181 10.3811 Tf 7.84 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 440.745 618.979 Tm [(;)-235(the)-225(starting)]TJ 1.02 0 0 1 150.705 607.023 Tm [(index)]TJ/F78 9.9626 Tf 1 0 0 1 178.58 607.023 Tm [(i)-47(a)]TJ/F181 10.3811 Tf 7.91 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 200.561 607.023 Tm [(should)-259(belong)-258(to)-259(the)-259(curr)18(ent)-259(pr)18(ocess.)-345(In)-259(the)-258(second)-259(form)-259(only)-258(the)]TJ 1 0 0 1 150.705 595.068 Tm [(r)18(emote)-250(indices)]TJ/F78 9.9626 Tf 67.341 0 Td [(j)-40(a)]TJ/F181 10.3811 Tf 7.841 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(ar)18(e)-250(speci\002ed.)]TJ 0 g 0 G -/F59 9.9626 Tf -105.423 -20.366 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -89.115 -20.366 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.304 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.304 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.305 Td [(nz)]TJ 0 g 0 G -/F62 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(points)-250(being)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(points)-250(being)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.305 Td [(ia)]TJ +/F75 9.9626 Tf -24.907 -19.305 Td [(ia)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -19.304 Td [(ja)]TJ +/F75 9.9626 Tf -207.221 -19.304 Td [(ja)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -19.304 Td [(mask)]TJ +/F75 9.9626 Tf -207.221 -19.304 Td [(mask)]TJ 0 g 0 G -/F62 9.9626 Tf 29.33 0 Td [(Mask)-247(entries)-248(in)]TJ/F67 9.9626 Tf 69.91 0 Td [(ja)]TJ/F62 9.9626 Tf 10.461 0 Td [(,)-248(they)-247(ar)18(e)-248(inserted)-247(only)-248(when)-247(the)-247(corr)18(esponding)]TJ/F67 9.9626 Tf 213.089 0 Td [(mask)]TJ/F62 9.9626 Tf -297.883 -11.956 Td [(entries)-250(ar)18(e)]TJ/F67 9.9626 Tf 48.139 0 Td [(.true.)]TJ/F62 9.9626 Tf -48.139 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 164.297 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(,)-250(default)]TJ/F67 9.9626 Tf 38.784 0 Td [(.true.)]TJ/F62 9.9626 Tf 31.382 0 Td [(.)]TJ +/F84 9.9626 Tf 29.33 0 Td [(Mask)-250(entries)-250(in)]TJ/F131 9.9626 Tf 69.983 0 Td [(ja)]TJ/F84 9.9626 Tf 10.46 0 Td [(,)-250(they)-250(ar)18(e)-250(inserted)-250(on)1(ly)-250(when)-250(the)-250(corr)18(esponding)]TJ/F131 9.9626 Tf 213.278 0 Td [(mask)]TJ/F84 9.9626 Tf -298.144 -11.955 Td [(entries)-250(ar)18(e)]TJ/F131 9.9626 Tf 48.139 0 Td [(.true.)]TJ/F84 9.9626 Tf -48.139 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.965 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 164.297 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(,)-250(default)]TJ/F131 9.9626 Tf 38.784 0 Td [(.true.)]TJ/F84 9.9626 Tf 31.382 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -269.706 -19.305 Td [(lidx)]TJ +/F75 9.9626 Tf -269.706 -19.305 Td [(lidx)]TJ 0 g 0 G -/F62 9.9626 Tf 22.685 0 Td [(User)-250(de\002ned)-250(local)-250(indices)-250(for)]TJ/F67 9.9626 Tf 131.117 0 Td [(ja)]TJ/F62 9.9626 Tf 10.46 0 Td [(.)]TJ -139.355 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 22.685 0 Td [(User)-250(de\002ned)-250(local)-250(indices)-250(for)]TJ/F131 9.9626 Tf 131.117 0 Td [(ja)]TJ/F84 9.9626 Tf 10.46 0 Td [(.)]TJ -139.355 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.965 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -20.366 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -207.221 -20.366 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.305 Td [(desc)]TJ @@ -17228,27 +17205,27 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 168.146 Td [(a)]TJ +/F75 9.9626 Tf 174.207 168.146 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(updated)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(updated)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 120.326 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 120.326 Td [(desc)]TJ ET q 1 0 0 1 384.755 120.525 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 120.326 Td [(type)]TJ +/F131 9.9626 Tf 387.893 120.326 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -91.236 -29.888 Td [(74)]TJ 0 g 0 G @@ -17256,38 +17233,38 @@ ET endstream endobj -1480 0 obj +1491 0 obj << -/Length 3007 +/Length 3082 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(ila)]TJ +/F75 9.9626 Tf -24.518 -19.925 Td [(ila)]TJ 0 g 0 G -/F62 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(starting)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.221 -19.925 Td [(jla)]TJ +/F75 9.9626 Tf -207.221 -19.925 Td [(jla)]TJ 0 g 0 G -/F62 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F60 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ/F59 11.9552 Tf -207.221 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 16.598 0 Td [(the)-250(local)-250(indices)-250(of)-250(the)-250(end)-250(vertex)-250(of)-250(the)-250(edges)-250(being)-250(inserted.)]TJ 8.309 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(length)]TJ/F78 9.9626 Tf 171.978 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ/F75 11.9552 Tf -207.221 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-250(r)18(outine)-250(may)-250(only)-250(be)-250(called)-250(if)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(build)-250(state;)]TJ + [-469(This)-250(r)18(outine)-250(may)-250(only)-250(be)-250(called)-250(if)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(build)-250(state;)]TJ 0 g 0 G 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(This)-370(r)18(outine)-370(automatically)-370(ignor)18(es)-370(edges)-370(that)-370(do)-370(not)-370(insist)-370(on)-370(the)-370(cur)18(-)]TJ 12.453 -11.955 Td [(r)18(ent)-288(pr)18(ocess,)-298(i.e.)-424(edges)-288(for)-288(which)-288(neither)-288(the)-288(starting)-288(nor)-288(the)-288(end)-288(vertex)]TJ 0 -11.955 Td [(belong)-250(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ + 0.997 0 0 1 124.493 461.048 Tm [(This)-250(r)18(outine)-250(automatically)-250(ignor)19(es)-250(edges)-250(that)-250(do)-250(not)-250(insist)-250(on)-250(the)-250(curr)18(ent)]TJ 0.98 0 0 1 124.503 449.093 Tm [(pr)18(ocess,)-249(i.e.)-314(edges)-248(for)-248(which)-248(neither)-248(the)-248(starting)-248(nor)-248(the)-248(end)-248(vertex)-248(belong)]TJ 1 0 0 1 124.802 437.138 Tm [(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess.)]TJ 0 g 0 G -12.453 -19.926 Td [(3.)]TJ 0 g 0 G - [-500(The)-322(second)-323(form)-322(of)-323(this)-322(r)18(outine)-323(will)-322(be)-322(useful)-323(when)-322(dealing)-323(with)-322(user)18(-)]TJ 12.453 -11.955 Td [(speci\002ed)-250(index)-250(mappings;)-250(see)-250(also)]TJ + 1.02 0 0 1 124.493 417.212 Tm [(The)-286(second)-286(form)-287(of)-286(this)-286(r)18(outine)-286(will)-287(be)-286(useful)-286(when)-286(dealing)-286(with)-286(user)17(-)]TJ 1 0 0 1 124.802 405.257 Tm [(speci\002ed)-250(index)-250(mappings;)-250(see)-250(also)]TJ 0 0 1 rg 0 0 1 RG [-250(2.3.1)]TJ 0 g 0 G @@ -17299,199 +17276,138 @@ ET endstream endobj -1489 0 obj +1384 0 obj +<< +/Type /ObjStm +/N 100 +/First 996 +/Length 11978 +>> +stream +1381 0 1382 43 1383 250 1385 488 1386 764 1367 1000 1374 1147 1378 1294 1379 1353 1375 1412 +1390 1549 1392 1667 1389 1725 1398 1793 1394 1950 1395 2094 1396 2239 1400 2386 296 2445 1401 2503 +1397 2562 1407 2698 1402 2855 1404 3001 1405 3146 1409 3292 1410 3350 1411 3408 1412 3466 1406 3524 +1415 3632 1417 3750 1414 3809 1419 3877 1422 3995 1423 4122 1424 4165 1425 4372 1426 4610 1427 4886 +1421 5122 1413 5180 1418 5238 1434 5335 1430 5492 1431 5633 1432 5780 1436 5927 300 5986 1437 6044 +1433 6103 1439 6239 1441 6357 1438 6415 1446 6510 1443 6649 1448 6796 304 6855 1449 6913 1445 6972 +1453 7108 1444 7265 1450 7408 1451 7551 1455 7698 1452 7756 1457 7864 1459 7982 308 8041 312 8099 +1456 8156 1462 8292 1460 8431 1464 8578 1465 8636 1461 8694 1468 8816 1466 8955 1470 9113 1472 9172 +1467 9231 1474 9382 1476 9500 1477 9558 1478 9616 1479 9674 1480 9732 1481 9790 1473 9848 1485 9930 +1483 10069 1487 10214 316 10273 1484 10331 1490 10453 1488 10592 1492 10750 1493 10808 1494 10866 1495 10924 +% 1381 0 obj << -/Length 5969 +/Type /ExtGState +/OPM 1 >> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.3)-1000(psb)]TJ -ET -q -1 0 0 1 198.238 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 201.825 706.129 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(routine)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdasb\050desc_a,)-525(info)-525([,)-525(mold]\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 625.596 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 625.397 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 577.576 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 387.893 577.576 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(mold)]TJ -0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(index)-250(storage.)]TJ -3.875 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(object)-190(of)-190(type)-190(derived)-190(fr)18(om)-190(\050integer\051)]TJ/F67 9.9626 Tf 221.926 0 Td [(psb)]TJ -ET -q -1 0 0 1 413.855 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 416.994 509.83 Td [(T)]TJ -ET -q -1 0 0 1 422.851 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 425.99 509.83 Td [(base)]TJ -ET -q -1 0 0 1 447.539 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 450.677 509.83 Td [(vect)]TJ -ET -q -1 0 0 1 472.226 510.029 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 475.364 509.83 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -345.58 -21.918 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 468.186 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 467.987 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 420.366 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 420.166 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 420.366 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 387.893 420.166 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.917 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.453 -19.926 Td [(1.)]TJ -0 g 0 G - [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(assembled)-250(state.)]TJ -12.453 -19.925 Td [(This)-274(call)-275(will)-274(set)-275(up)-274(all)-275(the)-274(necessary)-275(information)-274(for)-275(the)-274(halo)-275(data)-274(exchanges.)]TJ 0 -11.955 Td [(In)-337(doing)-337(so,)-358(the)-337(library)-337(will)-337(need)-336(to)-337(identify)-337(the)-337(set)-337(of)-337(pr)18(ocesse)1(s)-337(owning)-337(the)]TJ 0 -11.955 Td [(halo)-381(indices)-381(thr)18(ough)-380(the)-381(use)-381(of)-381(the)]TJ/F67 9.9626 Tf 163.76 0 Td [(desc%fnd_owner\050\051)]TJ/F62 9.9626 Tf 87.479 0 Td [(method;)-446(the)-381(owning)]TJ -251.239 -11.956 Td [(pr)18(ocesses)-273(ar)18(e)-273(the)-273(topological)-272(neighbours)-273(of)-273(the)-273(calling)-273(pr)18(ocess.)-379(If)-272(the)-273(user)-273(has)]TJ 0 -11.955 Td [(some)-248(backgr)18(ound)-248(information)-248(on)-248(the)-248(pr)18(ocesses)-248(that)-248(ar)18(e)-248(neighbours)-248(of)-248(the)-248(cur)18(-)]TJ 0 -11.955 Td [(r)18(ent)-274(one,)-281(it)-274(is)-275(possible)-274(to)-274(specify)-275(explicitly)-274(the)-274(list)-275(of)-274(adjacent)-274(pr)18(ocesses)-275(with)-274(a)]TJ 0 -11.955 Td [(call)-327(to)]TJ/F67 9.9626 Tf 30.401 0 Td [(desc%set_p_adjcncy\050list\051)]TJ/F62 9.9626 Tf 125.529 0 Td [(;)-365(this)-327(will)-327(speed)-327(u)1(p)-327(the)-327(subsequent)-327(call)-327(to)]TJ/F67 9.9626 Tf -155.93 -11.955 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 47.073 0 Td [(.)]TJ -0 g 0 G - 119.801 -116.528 Td [(76)]TJ -0 g 0 G -ET - -endstream -endobj -1377 0 obj +% 1382 0 obj << -/Type /ObjStm -/N 100 -/First 984 -/Length 11356 ->> -stream -1367 0 1368 59 1364 118 1379 254 1381 372 1378 430 1387 498 1383 655 1384 799 1385 944 -1389 1091 296 1150 1390 1208 1386 1267 1396 1400 1391 1557 1393 1703 1394 1849 1398 1994 1399 2052 -1400 2110 1401 2168 1395 2226 1404 2333 1406 2451 1403 2510 1408 2578 1411 2696 1412 2823 1413 2866 -1414 3073 1415 3311 1416 3587 1410 3823 1402 3881 1407 3939 1423 4036 1419 4193 1420 4334 1421 4481 -1425 4628 300 4687 1426 4745 1422 4804 1428 4937 1430 5055 1427 5113 1435 5207 1432 5346 1437 5493 -304 5552 1438 5610 1434 5669 1442 5802 1433 5959 1439 6102 1440 6245 1444 6392 1441 6450 1446 6557 -1448 6675 308 6734 312 6792 1445 6849 1451 6982 1449 7121 1453 7268 1454 7326 1450 7384 1457 7504 -1455 7643 1459 7801 1461 7860 1456 7919 1463 8066 1465 8184 1466 8242 1467 8300 1468 8358 1469 8416 -1470 8474 1462 8532 1474 8613 1472 8752 1476 8897 316 8956 1473 9014 1479 9134 1477 9273 1481 9431 -1482 9489 1483 9547 1484 9605 1478 9663 1488 9757 1485 9905 1486 10050 1490 10196 320 10255 1491 10313 +/BaseFont /XYUGDR+Times-Roman +/FontDescriptor 1385 0 R +/Type /Font +/FirstChar 48 +/LastChar 57 +/Widths [ 500 500 500 500 500 500 500 500 500 500] +/Encoding /WinAnsiEncoding +/Subtype /Type1 +>> +% 1383 0 obj +<< +/BaseFont /XISTAL+Times-Bold +/FontDescriptor 1386 0 R +/Type /Font +/FirstChar 48 +/LastChar 80 +/Widths [ 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611] +/Encoding /WinAnsiEncoding +/Subtype /Type1 +>> +% 1385 0 obj +<< +/Type /FontDescriptor +/FontName /XYUGDR+Times-Roman +/FontBBox [ 0 -14 476 688] +/Flags 65568 +/Ascent 688 +/CapHeight 688 +/Descent -14 +/ItalicAngle 0 +/StemV 71 +/MissingWidth 250 +/CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) +/FontFile3 1387 0 R +>> +% 1386 0 obj +<< +/Type /FontDescriptor +/FontName /XISTAL+Times-Bold +/FontBBox [ 0 -13 600 688] +/Flags 65568 +/Ascent 688 +/CapHeight 676 +/Descent -13 +/ItalicAngle 0 +/StemV 90 +/MissingWidth 250 +/CharSet (/P/one/zero) +/FontFile3 1388 0 R +>> % 1367 0 obj << -/D [1365 0 R /XYZ 149.705 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.646 625.272 223.601 634.682] +/A << /S /GoTo /D (table.17) >> >> -% 1368 0 obj +% 1374 0 obj << -/D [1365 0 R /XYZ 150.705 326.444 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.719 276.439 466.793 290.202] +/A << /S /GoTo /D (figure.3) >> >> -% 1364 0 obj +% 1378 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R >> -/XObject << /Im4 1362 0 R >> -/ProcSet [ /PDF /Text ] +/D [1376 0 R /XYZ 149.705 753.953 null] >> % 1379 0 obj << +/D [1376 0 R /XYZ 150.705 326.444 null] +>> +% 1375 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> +/XObject << /Im4 1373 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1390 0 obj +<< /Type /Page -/Contents 1380 0 R -/Resources 1378 0 R +/Contents 1391 0 R +/Resources 1389 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R +/Parent 1393 0 R >> -% 1381 0 obj +% 1392 0 obj << -/D [1379 0 R /XYZ 98.895 753.953 null] +/D [1390 0 R /XYZ 98.895 753.953 null] >> -% 1378 0 obj +% 1389 0 obj << -/Font << /F62 667 0 R >> +/Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1387 0 obj +% 1398 0 obj << /Type /Page -/Contents 1388 0 R -/Resources 1386 0 R +/Contents 1399 0 R +/Resources 1397 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R -/Annots [ 1383 0 R 1384 0 R 1385 0 R ] +/Parent 1393 0 R +/Annots [ 1394 0 R 1395 0 R 1396 0 R ] >> -% 1383 0 obj +% 1394 0 obj << /Type /Annot /Subtype /Link @@ -17499,7 +17415,7 @@ stream /Rect [419.358 345.485 495.412 357.545] /A << /S /GoTo /D (vdata) >> >> -% 1384 0 obj +% 1395 0 obj << /Type /Annot /Subtype /Link @@ -17507,7 +17423,7 @@ stream /Rect [377.462 333.53 389.417 345.59] /A << /S /GoTo /D (table.18) >> >> -% 1385 0 obj +% 1396 0 obj << /Type /Annot /Subtype /Link @@ -17515,33 +17431,33 @@ stream /Rect [342.753 266.146 409.811 278.205] /A << /S /GoTo /D (descdata) >> >> -% 1389 0 obj +% 1400 0 obj << -/D [1387 0 R /XYZ 149.705 753.953 null] +/D [1398 0 R /XYZ 149.705 753.953 null] >> % 296 0 obj << -/D [1387 0 R /XYZ 150.705 716.092 null] +/D [1398 0 R /XYZ 150.705 716.092 null] >> -% 1390 0 obj +% 1401 0 obj << -/D [1387 0 R /XYZ 150.705 510.975 null] +/D [1398 0 R /XYZ 150.705 510.975 null] >> -% 1386 0 obj +% 1397 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F67 913 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F131 921 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1396 0 obj +% 1407 0 obj << /Type /Page -/Contents 1397 0 R -/Resources 1395 0 R +/Contents 1408 0 R +/Resources 1406 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R -/Annots [ 1391 0 R 1393 0 R 1394 0 R ] +/Parent 1393 0 R +/Annots [ 1402 0 R 1404 0 R 1405 0 R ] >> -% 1391 0 obj +% 1402 0 obj << /Type /Annot /Subtype /Link @@ -17549,83 +17465,83 @@ stream /Rect [202.52 554.876 214.475 566.936] /A << /S /GoTo /D (table.18) >> >> -% 1393 0 obj +% 1404 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [407.408 325.46 414.381 339.127] +/Rect [408.907 325.46 415.98 339.127] /A << /S /GoTo /D (figure.4) >> >> -% 1394 0 obj +% 1405 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [309.226 301.825 316.2 313.885] +/Rect [306.22 301.825 313.294 313.885] /A << /S /GoTo /D (figure.3) >> >> -% 1398 0 obj +% 1409 0 obj << -/D [1396 0 R /XYZ 98.895 753.953 null] +/D [1407 0 R /XYZ 98.895 753.953 null] >> -% 1399 0 obj +% 1410 0 obj << -/D [1396 0 R /XYZ 99.895 464.818 null] +/D [1407 0 R /XYZ 99.895 464.818 null] >> -% 1400 0 obj +% 1411 0 obj << -/D [1396 0 R /XYZ 99.895 430.343 null] +/D [1407 0 R /XYZ 99.895 430.343 null] >> -% 1401 0 obj +% 1412 0 obj << -/D [1396 0 R /XYZ 99.895 386.508 null] +/D [1407 0 R /XYZ 99.895 386.508 null] >> -% 1395 0 obj +% 1406 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1404 0 obj +% 1415 0 obj << /Type /Page -/Contents 1405 0 R -/Resources 1403 0 R +/Contents 1416 0 R +/Resources 1414 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R +/Parent 1393 0 R >> -% 1406 0 obj +% 1417 0 obj << -/D [1404 0 R /XYZ 149.705 753.953 null] +/D [1415 0 R /XYZ 149.705 753.953 null] >> -% 1403 0 obj +% 1414 0 obj << -/Font << /F62 667 0 R >> +/Font << /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1408 0 obj +% 1419 0 obj << /Type /Page -/Contents 1409 0 R -/Resources 1407 0 R +/Contents 1420 0 R +/Resources 1418 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R +/Parent 1393 0 R >> -% 1411 0 obj +% 1422 0 obj << /Producer (GPL Ghostscript 9.22) /CreationDate (D:20180323100658Z00'00') /ModDate (D:20180323100658Z00'00') >> -% 1412 0 obj +% 1423 0 obj << /Type /ExtGState /OPM 1 >> -% 1413 0 obj +% 1424 0 obj << /BaseFont /XYUGDR+Times-Roman -/FontDescriptor 1415 0 R +/FontDescriptor 1426 0 R /Type /Font /FirstChar 48 /LastChar 57 @@ -17633,10 +17549,10 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1414 0 obj +% 1425 0 obj << /BaseFont /XISTAL+Times-Bold -/FontDescriptor 1416 0 R +/FontDescriptor 1427 0 R /Type /Font /FirstChar 48 /LastChar 80 @@ -17644,7 +17560,7 @@ stream /Encoding /WinAnsiEncoding /Subtype /Type1 >> -% 1415 0 obj +% 1426 0 obj << /Type /FontDescriptor /FontName /XYUGDR+Times-Roman @@ -17657,9 +17573,9 @@ stream /StemV 71 /MissingWidth 250 /CharSet (/eight/five/four/nine/one/seven/six/three/two/zero) -/FontFile3 1417 0 R +/FontFile3 1428 0 R >> -% 1416 0 obj +% 1427 0 obj << /Type /FontDescriptor /FontName /XISTAL+Times-Bold @@ -17672,32 +17588,32 @@ stream /StemV 90 /MissingWidth 250 /CharSet (/P/one/zero) -/FontFile3 1418 0 R +/FontFile3 1429 0 R >> -% 1410 0 obj +% 1421 0 obj << -/D [1408 0 R /XYZ 98.895 753.953 null] +/D [1419 0 R /XYZ 98.895 753.953 null] >> -% 1402 0 obj +% 1413 0 obj << -/D [1408 0 R /XYZ 99.895 282.918 null] +/D [1419 0 R /XYZ 99.895 282.918 null] >> -% 1407 0 obj +% 1418 0 obj << -/Font << /F62 667 0 R >> -/XObject << /Im5 1392 0 R >> +/Font << /F84 675 0 R >> +/XObject << /Im5 1403 0 R >> /ProcSet [ /PDF /Text ] >> -% 1423 0 obj +% 1434 0 obj << /Type /Page -/Contents 1424 0 R -/Resources 1422 0 R +/Contents 1435 0 R +/Resources 1433 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1382 0 R -/Annots [ 1419 0 R 1420 0 R 1421 0 R ] +/Parent 1393 0 R +/Annots [ 1430 0 R 1431 0 R 1432 0 R ] >> -% 1419 0 obj +% 1430 0 obj << /Type /Annot /Subtype /Link @@ -17705,7 +17621,7 @@ stream /Rect [419.358 298.8 495.412 310.86] /A << /S /GoTo /D (vdata) >> >> -% 1420 0 obj +% 1431 0 obj << /Type /Annot /Subtype /Link @@ -17713,7 +17629,7 @@ stream /Rect [255.331 289.495 267.287 298.905] /A << /S /GoTo /D (table.19) >> >> -% 1421 0 obj +% 1432 0 obj << /Type /Annot /Subtype /Link @@ -17721,50 +17637,50 @@ stream /Rect [342.753 218.115 409.811 230.175] /A << /S /GoTo /D (descdata) >> >> -% 1425 0 obj +% 1436 0 obj << -/D [1423 0 R /XYZ 149.705 753.953 null] +/D [1434 0 R /XYZ 149.705 753.953 null] >> % 300 0 obj << -/D [1423 0 R /XYZ 150.705 716.092 null] +/D [1434 0 R /XYZ 150.705 716.092 null] >> -% 1426 0 obj +% 1437 0 obj << -/D [1423 0 R /XYZ 150.705 460.417 null] +/D [1434 0 R /XYZ 150.705 460.417 null] >> -% 1422 0 obj +% 1433 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1428 0 obj +% 1439 0 obj << /Type /Page -/Contents 1429 0 R -/Resources 1427 0 R +/Contents 1440 0 R +/Resources 1438 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R +/Parent 1442 0 R >> -% 1430 0 obj +% 1441 0 obj << -/D [1428 0 R /XYZ 98.895 753.953 null] +/D [1439 0 R /XYZ 98.895 753.953 null] >> -% 1427 0 obj +% 1438 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1435 0 obj +% 1446 0 obj << /Type /Page -/Contents 1436 0 R -/Resources 1434 0 R +/Contents 1447 0 R +/Resources 1445 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1432 0 R ] +/Parent 1442 0 R +/Annots [ 1443 0 R ] >> -% 1432 0 obj +% 1443 0 obj << /Type /Annot /Subtype /Link @@ -17772,33 +17688,33 @@ stream /Rect [342.753 211.064 409.811 223.124] /A << /S /GoTo /D (descdata) >> >> -% 1437 0 obj +% 1448 0 obj << -/D [1435 0 R /XYZ 149.705 753.953 null] +/D [1446 0 R /XYZ 149.705 753.953 null] >> % 304 0 obj << -/D [1435 0 R /XYZ 150.705 716.092 null] +/D [1446 0 R /XYZ 150.705 716.092 null] >> -% 1438 0 obj +% 1449 0 obj << -/D [1435 0 R /XYZ 150.705 449.977 null] +/D [1446 0 R /XYZ 150.705 449.977 null] >> -% 1434 0 obj +% 1445 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1442 0 obj +% 1453 0 obj << /Type /Page -/Contents 1443 0 R -/Resources 1441 0 R +/Contents 1454 0 R +/Resources 1452 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1433 0 R 1439 0 R 1440 0 R ] +/Parent 1442 0 R +/Annots [ 1444 0 R 1450 0 R 1451 0 R ] >> -% 1433 0 obj +% 1444 0 obj << /Type /Annot /Subtype /Link @@ -17806,7 +17722,7 @@ stream /Rect [287.51 642.547 363.564 654.607] /A << /S /GoTo /D (vdata) >> >> -% 1439 0 obj +% 1450 0 obj << /Type /Annot /Subtype /Link @@ -17814,7 +17730,7 @@ stream /Rect [123.806 542.921 199.86 554.981] /A << /S /GoTo /D (vdata) >> >> -% 1440 0 obj +% 1451 0 obj << /Type /Annot /Subtype /Link @@ -17822,50 +17738,50 @@ stream /Rect [421.516 542.921 433.471 554.981] /A << /S /GoTo /D (table.20) >> >> -% 1444 0 obj +% 1455 0 obj << -/D [1442 0 R /XYZ 98.895 753.953 null] +/D [1453 0 R /XYZ 98.895 753.953 null] >> -% 1441 0 obj +% 1452 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1446 0 obj +% 1457 0 obj << /Type /Page -/Contents 1447 0 R -/Resources 1445 0 R +/Contents 1458 0 R +/Resources 1456 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R +/Parent 1442 0 R >> -% 1448 0 obj +% 1459 0 obj << -/D [1446 0 R /XYZ 149.705 753.953 null] +/D [1457 0 R /XYZ 149.705 753.953 null] >> % 308 0 obj << -/D [1446 0 R /XYZ 150.705 716.092 null] +/D [1457 0 R /XYZ 150.705 716.092 null] >> % 312 0 obj << -/D [1446 0 R /XYZ 150.705 691.48 null] +/D [1457 0 R /XYZ 150.705 691.48 null] >> -% 1445 0 obj +% 1456 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1451 0 obj +% 1462 0 obj << /Type /Page -/Contents 1452 0 R -/Resources 1450 0 R +/Contents 1463 0 R +/Resources 1461 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1449 0 R ] +/Parent 1442 0 R +/Annots [ 1460 0 R ] >> -% 1449 0 obj +% 1460 0 obj << /Type /Annot /Subtype /Link @@ -17873,29 +17789,29 @@ stream /Rect [291.943 324.687 359.001 336.746] /A << /S /GoTo /D (descdata) >> >> -% 1453 0 obj +% 1464 0 obj << -/D [1451 0 R /XYZ 98.895 753.953 null] +/D [1462 0 R /XYZ 98.895 753.953 null] >> -% 1454 0 obj +% 1465 0 obj << -/D [1451 0 R /XYZ 99.895 234.157 null] +/D [1462 0 R /XYZ 99.895 234.157 null] >> -% 1450 0 obj +% 1461 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1457 0 obj +% 1468 0 obj << /Type /Page -/Contents 1458 0 R -/Resources 1456 0 R +/Contents 1469 0 R +/Resources 1467 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1431 0 R -/Annots [ 1455 0 R ] +/Parent 1442 0 R +/Annots [ 1466 0 R ] >> -% 1455 0 obj +% 1466 0 obj << /Type /Annot /Subtype /Link @@ -17903,66 +17819,66 @@ stream /Rect [405.298 215.702 427.216 227.166] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1459 0 obj +% 1470 0 obj << -/D [1457 0 R /XYZ 149.705 753.953 null] +/D [1468 0 R /XYZ 149.705 753.953 null] >> -% 1461 0 obj +% 1472 0 obj << -/D [1457 0 R /XYZ 150.705 133.283 null] +/D [1468 0 R /XYZ 150.705 133.283 null] >> -% 1456 0 obj +% 1467 0 obj << -/Font << /F67 913 0 R /F62 667 0 R /F59 665 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R /F69 1460 0 R >> +/Font << /F131 921 0 R /F84 675 0 R /F75 673 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R /F134 1471 0 R >> /ProcSet [ /PDF /Text ] >> -% 1463 0 obj +% 1474 0 obj << /Type /Page -/Contents 1464 0 R -/Resources 1462 0 R +/Contents 1475 0 R +/Resources 1473 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R +/Parent 1482 0 R >> -% 1465 0 obj +% 1476 0 obj << -/D [1463 0 R /XYZ 98.895 753.953 null] +/D [1474 0 R /XYZ 98.895 753.953 null] >> -% 1466 0 obj +% 1477 0 obj << -/D [1463 0 R /XYZ 99.895 716.092 null] +/D [1474 0 R /XYZ 99.895 716.092 null] >> -% 1467 0 obj +% 1478 0 obj << -/D [1463 0 R /XYZ 99.895 687.379 null] +/D [1474 0 R /XYZ 99.895 687.379 null] >> -% 1468 0 obj +% 1479 0 obj << -/D [1463 0 R /XYZ 99.895 667.454 null] +/D [1474 0 R /XYZ 99.895 667.454 null] >> -% 1469 0 obj +% 1480 0 obj << -/D [1463 0 R /XYZ 99.895 626.268 null] +/D [1474 0 R /XYZ 99.895 626.268 null] >> -% 1470 0 obj +% 1481 0 obj << -/D [1463 0 R /XYZ 99.895 567.828 null] +/D [1474 0 R /XYZ 99.895 567.828 null] >> -% 1462 0 obj +% 1473 0 obj << -/Font << /F62 667 0 R /F67 913 0 R >> +/Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1474 0 obj +% 1485 0 obj << /Type /Page -/Contents 1475 0 R -/Resources 1473 0 R +/Contents 1486 0 R +/Resources 1484 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1472 0 R ] +/Parent 1482 0 R +/Annots [ 1483 0 R ] >> -% 1472 0 obj +% 1483 0 obj << /Type /Annot /Subtype /Link @@ -17970,29 +17886,29 @@ stream /Rect [342.753 116.52 409.811 128.58] /A << /S /GoTo /D (descdata) >> >> -% 1476 0 obj +% 1487 0 obj << -/D [1474 0 R /XYZ 149.705 753.953 null] +/D [1485 0 R /XYZ 149.705 753.953 null] >> % 316 0 obj << -/D [1474 0 R /XYZ 150.705 716.092 null] +/D [1485 0 R /XYZ 150.705 716.092 null] >> -% 1473 0 obj +% 1484 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1479 0 obj +% 1490 0 obj << /Type /Page -/Contents 1480 0 R -/Resources 1478 0 R +/Contents 1491 0 R +/Resources 1489 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1477 0 R ] +/Parent 1482 0 R +/Annots [ 1488 0 R ] >> -% 1477 0 obj +% 1488 0 obj << /Type /Annot /Subtype /Link @@ -18000,92 +17916,184 @@ stream /Rect [278.165 401.451 300.083 413.511] /A << /S /GoTo /D (subsubsection.2.3.1) >> >> -% 1481 0 obj -<< -/D [1479 0 R /XYZ 98.895 753.953 null] ->> -% 1482 0 obj -<< -/D [1479 0 R /XYZ 99.895 496.698 null] ->> -% 1483 0 obj -<< -/D [1479 0 R /XYZ 99.895 474.179 null] ->> -% 1484 0 obj -<< -/D [1479 0 R /XYZ 99.895 430.343 null] ->> -% 1478 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1488 0 obj -<< -/Type /Page -/Contents 1489 0 R -/Resources 1487 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1485 0 R 1486 0 R ] ->> -% 1485 0 obj +% 1492 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 573.77 409.811 585.83] -/A << /S /GoTo /D (descdata) >> +/D [1490 0 R /XYZ 98.895 753.953 null] >> -% 1486 0 obj +% 1493 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 416.361 409.811 428.42] -/A << /S /GoTo /D (descdata) >> +/D [1490 0 R /XYZ 99.895 496.698 null] >> -% 1490 0 obj +% 1494 0 obj << -/D [1488 0 R /XYZ 149.705 753.953 null] +/D [1490 0 R /XYZ 99.895 474.179 null] >> -% 320 0 obj +% 1495 0 obj << -/D [1488 0 R /XYZ 150.705 716.092 null] +/D [1490 0 R /XYZ 99.895 430.343 null] >> -% 1491 0 obj + +endstream +endobj +1501 0 obj << -/D [1488 0 R /XYZ 150.705 326.302 null] +/Length 6209 >> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 150.705 706.129 Td [(6.3)-1000(psb)]TJ +ET +q +1 0 0 1 198.238 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 201.825 706.129 Td [(cdasb)-250(\227)-250(Communication)-250(descriptor)-250(assembly)-250(routine)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdasb\050desc_a,)-525(info)-525([,)-525(mold]\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 625.596 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ +ET +q +1 0 0 1 384.755 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(mold)]TJ +0 g 0 G +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(index)-250(storage.)]TJ -3.567 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 509.83 Tm [(Speci\002ed)-212(as:)-295(a)-212(object)-212(of)-212(type)-213(derived)-212(fr)19(om)-212(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 394.97 509.83 Tm [(psb)]TJ +ET +q +1 0 0 1 411.288 510.029 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 414.427 509.83 Td [(T)]TJ +ET +q +1 0 0 1 420.285 510.029 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 423.423 509.83 Td [(base)]TJ +ET +q +1 0 0 1 444.972 510.029 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 448.11 509.83 Td [(vect)]TJ +ET +q +1 0 0 1 469.659 510.029 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 472.797 509.83 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 493.719 509.83 Tm [(.)]TJ +0 g 0 G +/F75 9.9626 Tf 1 0 0 1 150.705 487.912 Tm [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 468.186 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 467.987 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 420.366 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 420.166 Td [(desc)]TJ +ET +q +1 0 0 1 384.755 420.366 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 387.893 420.166 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.453 -19.926 Td [(1.)]TJ +0 g 0 G + [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-250(is)-250(in)-250(the)-250(assembled)-250(state.)]TJ 1.017 0 0 1 150.396 290.652 Tm [(This)-246(call)-245(will)-246(set)-246(up)-245(all)-246(the)-246(necessary)-246(informat)1(ion)-246(for)-246(the)-246(halo)-245(data)-246(exchanges.)]TJ 1.02 0 0 1 150.705 278.697 Tm [(In)-289(doing)-289(so,)-301(the)-289(library)-289(will)-289(need)-290(to)-289(identify)-289(the)-289(set)-290(of)-289(pr)18(ocesses)-289(owning)-290(the)]TJ 1.02 0 0 1 150.705 266.742 Tm [(halo)-332(indices)-332(thr)18(ough)-332(the)-331(use)-332(of)-332(the)]TJ/F131 9.9626 Tf 1 0 0 1 314.257 266.742 Tm [(desc%fnd_owner\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 401.314 266.742 Tm [(method;)-375(the)-332(owning)]TJ 1.02 0 0 1 150.406 254.786 Tm [(pr)18(ocesses)-361(ar)18(e)-361(the)-361(topological)-360(neighbours)-361(of)-361(the)-361(cal)1(ling)-361(pr)17(ocess.)-650(If)-361(the)-361(user)]TJ 1.007 0 0 1 150.705 242.831 Tm [(has)-249(some)-249(backgr)18(ound)-249(information)-249(on)-249(the)-249(pr)18(ocesses)-249(that)-249(ar)18(e)-249(neighbours)-249(of)-249(the)]TJ 0.989 0 0 1 150.705 230.876 Tm [(curr)18(ent)-253(one,)-253(it)-253(is)-253(possible)-253(to)-253(specify)-253(explicitly)-253(the)-253(list)-253(of)-253(adjacent)-253(pr)18(ocesses)-253(with)]TJ 1.003 0 0 1 150.705 218.921 Tm [(a)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 187.132 218.921 Tm [(desc%set_p_adjcncy\050list\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 312.66 218.921 Tm [(;)-249(this)-249(will)-250(speed)-249(up)-249(the)-249(subsequent)-249(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 206.966 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ +0 g 0 G + 119.801 -116.528 Td [(76)]TJ +0 g 0 G +ET endstream endobj -1497 0 obj +1508 0 obj << -/Length 3168 +/Length 3173 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.4)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.4)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(cdcpy)-250(\227)-250(Copies)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ +/F131 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_cdcpy\050desc_in,)-525(desc_out,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -18095,29 +18103,29 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 625.397 Td [(in)]TJ +/F75 9.9626 Tf 123.397 625.397 Td [(in)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -12.981 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 14.386 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -12.981 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 577.576 Td [(desc)]TJ ET q 1 0 0 1 333.945 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 577.576 Td [(type)]TJ +/F131 9.9626 Tf 337.084 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -18127,63 +18135,63 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 535.733 Td [(out)]TJ +/F75 9.9626 Tf 123.397 535.733 Td [(out)]TJ 0 g 0 G -/F62 9.9626 Tf 19.925 0 Td [(the)-250(communication)-250(descriptor)-250(copy)111(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 19.925 0 Td [(the)-250(communication)-250(descriptor)-250(copy)111(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 488.112 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 487.912 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 487.912 Td [(desc)]TJ ET q 1 0 0 1 333.945 488.112 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 487.912 Td [(type)]TJ +/F131 9.9626 Tf 337.084 487.912 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -329.728 Td [(77)]TJ + 142.357 -329.728 Td [(77)]TJ 0 g 0 G ET endstream endobj -1502 0 obj +1513 0 obj << -/Length 2167 +/Length 2173 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.5)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.5)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(cdfree)-250(\227)-250(Frees)-250(a)-250(communication)-250(descriptor)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(cdfree)-250(\227)-250(Frees)-250(a)-250(communication)-250(descriptor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdfree\050desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_cdfree\050desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -18193,110 +18201,110 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 625.397 Td [(a)]TJ +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)-250(to)-250(be)-250(fr)18(eed.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)-250(to)-250(be)-250(fr)18(eed.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ ET q 1 0 0 1 384.755 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 577.576 Td [(type)]TJ +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -397.474 Td [(78)]TJ + 142.356 -397.474 Td [(78)]TJ 0 g 0 G ET endstream endobj -1508 0 obj +1519 0 obj << -/Length 5710 +/Length 5921 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.6)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.6)]TJ 0.984 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.11 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(cdbldext)-190(\227)-190(Build)-190(an)-190(extended)-190(communication)-190(descrip-)]TJ -24.221 -13.948 Td [(tor)]TJ +/F75 11.9552 Tf 0.984 0 0 1 150.697 706.129 Tm [(cdbldext)-253(\227)-253(Build)-253(an)-253(extended)-253(communication)-253(descrip-)]TJ 1 0 0 1 126.795 692.181 Tm [(tor)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -26.9 -19.693 Td [(call)-525(psb_cdbldext\050a,desc_a,nl,desc_out,)-525(info,)-525(extype\051)]TJ/F62 9.9626 Tf 14.944 -23.422 Td [(This)-379(subr)18(outine)-379(builds)-379(an)-379(extended)-379(communication)-379(descriptor)74(,)-411(based)-379(on)]TJ -14.944 -11.955 Td [(the)-428(input)-428(descriptor)]TJ/F67 9.9626 Tf 95.499 0 Td [(desc_a)]TJ/F62 9.9626 Tf 35.646 0 Td [(and)-428(on)-428(the)-428(stencil)-428(speci\002ed)-428(thr)18(ough)-428(the)-427(input)]TJ -131.145 -11.955 Td [(sparse)-250(matrix)]TJ/F67 9.9626 Tf 62.107 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F131 9.9626 Tf -26.9 -19.693 Td [(call)-525(psb_cdbldext\050a,desc_a,nl,desc_out,)-525(info,)-525(extype\051)]TJ/F84 9.9626 Tf 0.982 0 0 1 114.839 649.066 Tm [(This)-254(subr)19(outine)-254(builds)-254(an)-254(extended)-253(communication)-254(descriptor)75(,)-254(based)-253(on)-254(the)]TJ 1.019 0 0 1 99.895 637.111 Tm [(input)-244(descriptor)]TJ/F131 9.9626 Tf 1 0 0 1 175.054 637.111 Tm [(desc_a)]TJ/F84 9.9626 Tf 1.019 0 0 1 208.915 637.111 Tm [(and)-244(on)-244(the)-245(stencil)-244(speci\002ed)-244(thr)18(ough)-245(the)-244(input)-244(sparse)]TJ 1 0 0 1 99.895 625.156 Tm [(matrix)]TJ/F131 9.9626 Tf 31.492 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -67.337 -21.054 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -36.722 -21.054 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -21.429 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -21.429 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -21.43 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(A)-250(sparse)-250(matrix)-250(Scope:)]TJ/F59 9.9626 Tf 100.691 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -107.326 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(type.)]TJ +/F84 9.9626 Tf 9.574 0 Td [(A)-250(sparse)-250(matrix)-250(Scope:)]TJ/F75 9.9626 Tf 100.692 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -107.247 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(type.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.429 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -21.429 Td [(desc)]TJ ET q 1 0 0 1 120.408 504.147 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 503.948 Td [(a)]TJ +/F75 9.9626 Tf 123.397 503.948 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 456.326 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 456.127 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 456.127 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 456.326 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 456.127 Td [(type)]TJ +/F131 9.9626 Tf 347.544 456.127 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -21.43 Td [(nl)]TJ +/F75 9.9626 Tf -268.571 -21.43 Td [(nl)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(the)-250(number)-250(of)-250(additional)-250(layers)-250(desir)18(ed.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F60 9.9626 Tf 131.102 0 Td [(n)-25(l)]TJ/F91 10.3811 Tf 11.873 0 Td [(\025)]TJ/F62 9.9626 Tf 10.961 0 Td [(0.)]TJ +/F84 9.9626 Tf 14.386 0 Td [(the)-250(number)-250(of)-250(additional)-250(layers)-250(desir)18(ed.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F78 9.9626 Tf 131.102 0 Td [(n)-25(l)]TJ/F179 10.3811 Tf 11.873 0 Td [(\025)]TJ/F84 9.9626 Tf 10.961 0 Td [(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -178.843 -21.43 Td [(extype)]TJ +/F75 9.9626 Tf -178.843 -21.43 Td [(extype)]TJ 0 g 0 G -/F62 9.9626 Tf 34.869 0 Td [(the)-250(kind)-250(of)-250(estension)-250(r)18(equir)18(ed.)]TJ -9.962 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 40.677 0 Td [(.)]TJ -64.677 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-345(as:)-501(an)-345(integer)-346(value)]TJ/F67 9.9626 Tf 136.676 0 Td [(psb_ovt_xhal_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ/F67 9.9626 Tf 6.169 0 Td [(psb_ovt_asov_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)-369(default:)]TJ/F67 9.9626 Tf -278.833 -11.955 Td [(psb_ovt_xhal_)]TJ +/F84 9.9626 Tf 34.869 0 Td [(the)-250(kind)-250(of)-250(estension)-250(r)18(equir)18(ed.)]TJ -9.962 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 40.677 0 Td [(.)]TJ -64.368 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 317.626 Tm [(Speci\002ed)-317(as:)-447(an)-316(integer)-317(value)]TJ/F131 9.9626 Tf 1 0 0 1 262.503 317.626 Tm [(psb_ovt_xhal_)]TJ/F84 9.9626 Tf 1.02 0 0 1 330.497 317.626 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 336.438 317.626 Tm [(psb_ovt_asov_)]TJ/F84 9.9626 Tf 1.02 0 0 1 404.432 317.626 Tm [(,)-335(default:)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 305.671 Tm [(psb_ovt_xhal_)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -23.422 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -23.422 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.43 Td [(desc)]TJ @@ -18306,54 +18314,54 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 260.819 Td [(out)]TJ +/F75 9.9626 Tf 123.397 260.819 Td [(out)]TJ 0 g 0 G -/F62 9.9626 Tf 19.925 0 Td [(the)-250(extended)-250(communication)-250(descriptor)74(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 19.925 0 Td [(the)-250(extended)-250(communication)-250(descriptor)74(.)]TJ -18.52 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 213.198 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 212.998 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 212.998 Td [(desc)]TJ ET q 1 0 0 1 333.945 213.198 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 212.998 Td [(type)]TJ +/F131 9.9626 Tf 337.084 212.998 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.429 Td [(info)]TJ +/F75 9.9626 Tf -258.11 -21.429 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -23.422 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -23.422 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(79)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(79)]TJ 0 g 0 G ET endstream endobj -1513 0 obj +1524 0 obj << -/Length 1484 +/Length 1751 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 163.158 706.129 Td [(1.)]TJ +/F84 9.9626 Tf 163.158 706.129 Td [(1.)]TJ 0 g 0 G - [-500(Specifying)]TJ/F67 9.9626 Tf 61.745 0 Td [(psb_ovt_xhal_)]TJ/F62 9.9626 Tf 70.881 0 Td [(for)-290(the)]TJ/F67 9.9626 Tf 32.282 0 Td [(extype)]TJ/F62 9.9626 Tf 34.269 0 Td [(ar)18(gument)-290(the)-289(user)-290(will)-290(obtain)]TJ -186.724 -11.955 Td [(a)-400(descriptor)-400(for)-400(a)-400(domain)-400(partition)-400(in)-400(which)-400(the)-400(additional)-400(layers)-400(ar)18(e)]TJ 0 -11.955 Td [(fetched)-222(as)-221(part)-222(of)-221(an)-222(\050extended\051)-221(halo;)-232(however)-221(the)-222(index-to-pr)18(ocess)-221(map-)]TJ 0 -11.956 Td [(ping)-250(is)-250(identical)-250(to)-250(that)-250(of)-250(the)-250(base)-250(descriptor;)]TJ + 0.98 0 0 1 175.611 706.129 Tm [(Specifying)]TJ/F131 9.9626 Tf 1 0 0 1 223.585 706.129 Tm [(psb_ovt_xhal_)]TJ/F84 9.9626 Tf 0.98 0 0 1 294.077 706.129 Tm [(for)-256(the)]TJ/F131 9.9626 Tf 1 0 0 1 325.05 706.129 Tm [(extype)]TJ/F84 9.9626 Tf 0.98 0 0 1 358.929 706.129 Tm [(ar)18(gument)-255(the)-256(user)-256(will)-255(obtain)-256(a)]TJ 0.98 0 0 1 175.611 694.174 Tm [(descriptor)-209(for)-209(a)-209(domain)-209(partition)-209(in)-209(which)-209(the)-209(additional)-209(layers)-210(ar)19(e)-209(fetched)]TJ 1.02 0 0 1 175.611 682.219 Tm [(as)-244(part)-244(of)-244(an)-244(\050extended\051)-244(halo;)-244(however)-244(the)-244(index-to-pr)18(ocess)-244(mapping)-244(is)]TJ 1 0 0 1 175.611 670.263 Tm [(identical)-250(to)-250(that)-250(of)-250(the)-250(base)-250(descriptor;)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Specifying)]TJ/F67 9.9626 Tf 61.745 0 Td [(psb_ovt_asov_)]TJ/F62 9.9626 Tf 70.881 0 Td [(for)-290(the)]TJ/F67 9.9626 Tf 32.282 0 Td [(extype)]TJ/F62 9.9626 Tf 34.269 0 Td [(ar)18(gument)-290(the)-289(user)-290(will)-290(obtain)]TJ -186.724 -11.955 Td [(a)-330(descriptor)-331(with)-330(an)-330(overlapped)-331(decomposition:)-470(the)-331(additional)-330(layer)-330(is)]TJ 0 -11.955 Td [(aggr)18(egated)-326(to)-326(the)-326(local)-326(subdomain)-326(\050and)-326(thus)-326(is)-325(an)-326(overlap\051,)-345(and)-326(a)-326(new)]TJ 0 -11.955 Td [(halo)-250(extending)-250(beyond)-250(the)-250(last)-250(additional)-250(layer)-250(is)-250(formed.)]TJ + 1.018 0 0 1 175.611 650.338 Tm [(Specifying)]TJ/F131 9.9626 Tf 1 0 0 1 225.351 650.338 Tm [(psb_ovt_asov_)]TJ/F84 9.9626 Tf 1.018 0 0 1 295.844 650.338 Tm [(for)-246(the)]TJ/F131 9.9626 Tf 1 0 0 1 327.83 650.338 Tm [(extype)]TJ/F84 9.9626 Tf 1.018 0 0 1 361.711 650.338 Tm [(ar)18(gument)-247(the)-246(user)-246(will)-247(obtain)]TJ 1.02 0 0 1 175.611 638.383 Tm [(a)-267(descriptor)-267(with)-268(an)-267(overlapped)-267(decomposition:)-348(the)-267(additional)-268(lay)1(er)-268(is)]TJ 1.02 0 0 1 175.611 626.428 Tm [(aggr)18(egated)-278(to)-278(the)-278(local)-278(subdomain)-278(\050and)-278(thus)-278(is)-278(an)-278(overlap\051,)-286(and)-278(a)-278(new)]TJ 1 0 0 1 175.611 614.473 Tm [(halo)-250(extending)-250(beyond)-250(the)-250(last)-250(additional)-250(layer)-250(is)-250(formed.)]TJ 0 g 0 G 141.968 -524.035 Td [(80)]TJ 0 g 0 G @@ -18361,31 +18369,31 @@ ET endstream endobj -1521 0 obj +1532 0 obj << -/Length 5699 +/Length 5941 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.7)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.7)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(spall)-250(\227)-250(Allocates)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -19.277 Td [(call)-525(psb_spall\050a,)-525(desc_a,)-525(info)-525([,)-525(nnz,)-525(dupl,)-525(bldmode]\051)]TJ +/F131 9.9626 Tf -51.121 -19.277 Td [(call)-525(psb_spall\050a,)-525(desc_a,)-525(info)-525([,)-525(nnz,)-525(dupl,)-525(bldmode]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.403 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.403 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.571 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.571 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.572 Td [(desc)]TJ @@ -18395,70 +18403,70 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 623.306 Td [(a)]TJ +/F75 9.9626 Tf 123.397 623.306 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 575.684 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 575.485 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 575.485 Td [(desc)]TJ ET q 1 0 0 1 333.945 575.684 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 575.485 Td [(type)]TJ +/F131 9.9626 Tf 337.084 575.485 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.572 Td [(nnz)]TJ +/F75 9.9626 Tf -258.11 -20.572 Td [(nnz)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(An)-230(estimate)-230(of)-230(the)-230(number)-230(of)-231(nonzer)18(oes)-230(in)-230(the)-230(local)-230(part)-230(of)-230(the)-230(assembled)]TJ 2.77 -11.955 Td [(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 0.992 0 0 1 121.644 554.913 Tm [(An)-253(estimate)-253(of)-253(the)-254(number)-253(of)-253(nonzer)18(oes)-253(in)-253(the)-253(local)-253(part)-253(of)-254(the)-253(assembled)]TJ 1 0 0 1 124.802 542.958 Tm [(matrix.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.572 Td [(dupl)]TJ +/F75 9.9626 Tf -24.907 -20.572 Td [(dupl)]TJ 0 g 0 G -/F62 9.9626 Tf 26.561 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-243(as:)-306(integer)74(,)-244(possible)-243(values:)]TJ/F67 9.9626 Tf 164.941 0 Td [(psb_dupl_ovwrt_)]TJ/F62 9.9626 Tf 78.455 0 Td [(,)]TJ/F67 9.9626 Tf 4.923 0 Td [(psb_dupl_add_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf -316.314 -11.955 Td [(psb_dupl_err_)]TJ/F62 9.9626 Tf 67.994 0 Td [(.)]TJ +/F84 9.9626 Tf 26.561 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.006 0 0 1 124.802 426.745 Tm [(Speci\002ed)-248(as:)-308(inte)1(ger)73(,)-248(possible)-248(values:)]TJ/F131 9.9626 Tf 1 0 0 1 290.906 426.745 Tm [(psb_dupl_ovwrt_)]TJ/F84 9.9626 Tf 1.006 0 0 1 369.361 426.745 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 374.352 426.745 Tm [(psb_dupl_add_)]TJ/F84 9.9626 Tf 1.006 0 0 1 442.346 426.745 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 414.79 Tm [(psb_dupl_err_)]TJ/F84 9.9626 Tf 67.994 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -92.901 -20.572 Td [(bldmode)]TJ +/F75 9.9626 Tf -92.901 -20.572 Td [(bldmode)]TJ 0 g 0 G -/F62 9.9626 Tf 45.938 0 Td [(Whether)-372(to)-372(kee)1(p)-372(track)-372(of)-372(matrix)-372(entries)-371(that)-372(do)-372(not)-372(belong)-371(to)-372(the)]TJ -21.031 -11.955 Td [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)-190(value)]TJ/F67 9.9626 Tf 128.287 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 94.146 0 Td [(.)]TJ -331.543 -11.955 Td [(Default:)]TJ/F67 9.9626 Tf 38.515 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 145.335 394.218 Tm [(Whether)-327(to)-327(keep)-327(track)-327(of)-327(matrix)-327(entries)-327(that)-327(do)-327(not)-327(belong)-327(to)-327(the)]TJ 1 0 0 1 124.802 382.263 Tm [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.98 0 0 1 124.802 334.443 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F131 9.9626 Tf 1 0 0 1 250.731 334.443 Tm [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 355.338 334.443 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 359.791 334.443 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 453.937 334.443 Tm [(.)]TJ 1 0 0 1 124.802 322.487 Tm [(Default:)]TJ/F131 9.9626 Tf 38.515 0 Td [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 104.607 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -168.029 -22.402 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -168.029 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.572 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 231.892 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 231.692 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 231.692 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 231.892 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 231.692 Td [(type)]TJ +/F131 9.9626 Tf 347.544 231.692 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -20.571 Td [(info)]TJ +/F75 9.9626 Tf -268.571 -20.571 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -22.564 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -22.564 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -20.41 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -20.41 Td [(1.)]TJ 0 g 0 G [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(sparse)-250(matrix)-250(is)-250(in)-250(the)-250(build)-250(state.)]TJ 0 g 0 G @@ -18468,26 +18476,26 @@ ET endstream endobj -1526 0 obj +1537 0 obj << -/Length 1141 +/Length 1308 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 163.158 706.129 Td [(2.)]TJ +/F84 9.9626 Tf 163.158 706.129 Td [(2.)]TJ 0 g 0 G - [-500(The)-250(descriptor)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(assembled)-250(state.)]TJ + [-469(The)-250(descriptor)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(assembled)-250(state.)]TJ 0 g 0 G 0 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Pr)18(oviding)-219(a)-219(good)-219(estimate)-218(for)-219(the)-219(number)-219(of)-219(nonzer)18(oes)]TJ/F60 9.9626 Tf 255.761 0 Td [(n)-25(n)-25(z)]TJ/F62 9.9626 Tf 18.305 0 Td [(in)-219(the)-219(assem-)]TJ -261.613 -11.956 Td [(bled)-295(matri)1(x)-295(may)-294(substantially)-295(impr)18(ove)-294(performance)-295(in)-294(the)-295(matrix)-294(build)]TJ 0 -11.955 Td [(phase,)-370(as)-346(it)-346(will)-345(r)18(educe)-346(or)-346(eliminate)-346(the)-346(need)-346(for)-345(\050potentially)-346(multiple\051)]TJ 0 -11.955 Td [(data)-250(r)18(eallocations;)]TJ + 0.993 0 0 1 175.611 686.204 Tm [(Pr)18(oviding)-251(a)-250(good)-251(estimate)-250(for)-251(the)-251(number)-250(of)-251(nonzer)18(oes)]TJ/F78 9.9626 Tf 1 0 0 1 420.045 686.204 Tm [(n)-25(n)-25(z)]TJ/F84 9.9626 Tf 0.993 0 0 1 438.649 686.204 Tm [(in)-251(the)-250(assem-)]TJ 1.014 0 0 1 175.611 674.248 Tm [(bled)-245(matrix)-246(may)-245(substantially)-245(impr)17(ove)-245(performance)-245(in)-246(the)-245(matrix)-245(build)]TJ 1.02 0 0 1 175.313 662.293 Tm [(phase,)-315(as)-302(it)-301(will)-301(r)18(educe)-302(or)-301(eliminate)-301(the)-301(need)-302(for)-301(\050potentially)-301(multiple\051)]TJ 1 0 0 1 175.611 650.338 Tm [(data)-250(r)18(eallocations;)]TJ 0 g 0 G -12.453 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(Using)]TJ/F67 9.9626 Tf 41.798 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.28 0 Td [(is)-315(likel)1(y)-315(to)-315(cause)-314(a)-315(r)8(untime)-314(over)18(head)-315(at)-314(as-)]TJ -126.625 -11.955 Td [(sembly)-250(time;)]TJ + 1.02 0 0 1 175.611 630.413 Tm [(Using)]TJ/F131 9.9626 Tf 1 0 0 1 205.259 630.413 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 302.317 630.413 Tm [(is)-287(li)1(kely)-287(to)-287(cause)-286(a)-287(r)8(untime)-286(over)17(head)-286(at)-287(as-)]TJ 1 0 0 1 175.611 618.458 Tm [(sembly)-250(time;)]TJ 0 g 0 G 141.968 -528.02 Td [(82)]TJ 0 g 0 G @@ -18495,257 +18503,257 @@ ET endstream endobj -1534 0 obj +1545 0 obj << -/Length 5375 +/Length 5477 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.8)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.8)]TJ 0.994 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.309 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(spins)-233(\227)-233(Insert)-233(a)-233(set)-233(of)-234(coef)18(\002cients)-233(into)-233(a)-233(sparse)-233(matrix)]TJ +/F75 11.9552 Tf 0.994 0 0 1 150.896 706.129 Tm [(spins)-251(\227)-252(Insert)-251(a)-252(set)-251(of)-251(coef)18(\002cients)-252(into)-251(a)-252(sparse)-251(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -20.373 Td [(call)-525(psb_spins\050nz,)-525(ia,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 -11.956 Td [(call)-525(psb_spins\050nr,)-525(irw,)-525(irp,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ +/F131 9.9626 Tf 1 0 0 1 99.895 685.756 Tm [(call)-525(psb_spins\050nz,)-525(ia,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 -11.956 Td [(call)-525(psb_spins\050nr,)-525(irw,)-525(irp,)-525(ja,)-525(val,)-525(a,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.099 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -24.099 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.835 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -22.835 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.834 Td [(nz)]TJ 0 g 0 G -/F62 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 8.857 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.834 Td [(nr)]TJ +/F75 9.9626 Tf -24.907 -22.834 Td [(nr)]TJ 0 g 0 G -/F62 9.9626 Tf 14.944 0 Td [(the)-250(number)-250(of)-250(r)18(ows)-250(to)-250(be)-250(inserted.)]TJ 9.963 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 14.944 0 Td [(the)-250(number)-250(of)-250(r)18(ows)-250(to)-250(be)-250(inserted.)]TJ 9.963 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.834 Td [(irw)]TJ +/F75 9.9626 Tf -24.907 -22.834 Td [(irw)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(the)-250(\002rst)-250(r)18(ow)-250(to)-250(be)-250(inserted.)]TJ 4.434 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(the)-250(\002rst)-250(r)18(ow)-250(to)-250(be)-250(inserted.)]TJ 4.434 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.834 Td [(ia)]TJ +/F75 9.9626 Tf -24.907 -22.834 Td [(ia)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(the)-250(r)18(ow)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F60 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.281 0 Td [(the)-250(r)18(ow)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F78 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -196.043 -22.834 Td [(irp)]TJ +/F75 9.9626 Tf -196.043 -22.834 Td [(irp)]TJ 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(the)-250(r)18(ow)-250(pointers)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.645 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F60 9.9626 Tf 160.8 0 Td [(n)-15(r)]TJ/F93 10.3811 Tf 11.85 0 Td [(+)]TJ/F62 9.9626 Tf 10.131 0 Td [(1.)]TJ +/F84 9.9626 Tf 18.262 0 Td [(the)-250(r)18(ow)-250(pointers)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.645 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F78 9.9626 Tf 160.8 0 Td [(n)-15(r)]TJ/F181 10.3811 Tf 11.85 0 Td [(+)]TJ/F84 9.9626 Tf 10.131 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -207.688 -22.835 Td [(ja)]TJ +/F75 9.9626 Tf -207.688 -22.835 Td [(ja)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F60 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.336 0 Td [(.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 11.627 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(size)]TJ/F78 9.9626 Tf 160.8 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 10.336 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -196.043 -22.835 Td [(val)]TJ +/F75 9.9626 Tf -196.043 -22.835 Td [(val)]TJ 0 g 0 G -/F62 9.9626 Tf 18.82 0 Td [(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-315(as:)-439(an)-314(array)-315(of)-315(size)]TJ/F60 9.9626 Tf 131.853 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.337 0 Td [(.)-504(Must)-314(be)-315(of)-315(the)-314(same)-315(type)-315(and)-314(kind)-315(of)]TJ -142.19 -11.956 Td [(the)-250(coef)18(\002cients)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 157.901 0 Td [(a)]TJ/F62 9.9626 Tf 4.548 0 Td [(.)]TJ +/F84 9.9626 Tf 18.82 0 Td [(the)-250(coef)18(\002cients)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 132.281 Tm [(Speci\002ed)-254(as:)-315(an)-253(array)-254(of)-254(size)]TJ/F78 9.9626 Tf 1 0 0 1 250.215 132.281 Tm [(n)-25(z)]TJ/F84 9.9626 Tf 0.983 0 0 1 260.551 132.281 Tm [(.)-315(Must)-254(be)-253(of)-254(the)-254(same)-253(type)-254(and)-254(kind)-253(of)-254(the)]TJ 1 0 0 1 124.802 120.326 Tm [(coef)18(\002cients)-250(of)-250(the)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 141.592 0 Td [(a)]TJ/F84 9.9626 Tf 4.548 0 Td [(.)]TJ 0 g 0 G - -20.481 -29.887 Td [(83)]TJ + -4.172 -29.888 Td [(83)]TJ 0 g 0 G ET endstream endobj -1540 0 obj +1551 0 obj << -/Length 6861 +/Length 7399 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 150.705 706.129 Td [(desc)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(desc)]TJ ET q 1 0 0 1 171.218 706.328 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 706.129 Td [(a)]TJ +/F75 9.9626 Tf 174.207 706.129 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.381 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 658.308 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 658.308 Td [(desc)]TJ ET q 1 0 0 1 352.944 658.507 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 658.308 Td [(type)]TJ +/F131 9.9626 Tf 356.083 658.308 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -33.398 Td [(local)]TJ +/F75 9.9626 Tf -226.299 -33.398 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(Whether)-207(the)-207(entries)-207(in)-207(the)-208(indices)-207(vectors)]TJ/F67 9.9626 Tf 181.487 0 Td [(ia)]TJ/F62 9.9626 Tf 10.46 0 Td [(,)]TJ/F67 9.9626 Tf 4.64 0 Td [(ja)]TJ/F62 9.9626 Tf 12.524 0 Td [(ar)18(e)-207(alr)18(eady)-207(in)-207(local)-208(num-)]TJ -210.765 -11.956 Td [(bering.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F67 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F62 9.9626 Tf 36.613 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 176.767 624.91 Tm [(Whether)-378(the)-378(entries)-378(in)-377(the)-378(indices)-378(vectors)]TJ/F131 9.9626 Tf 1 0 0 1 374.028 624.91 Tm [(ia)]TJ/F84 9.9626 Tf 1.02 0 0 1 384.489 624.91 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 391.206 624.91 Tm [(ja)]TJ/F84 9.9626 Tf 1.02 0 0 1 405.507 624.91 Tm [(ar)18(e)-378(alr)17(eady)-377(in)-378(local)]TJ 1 0 0 1 175.611 612.954 Tm [(numbering.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F131 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F84 9.9626 Tf 36.613 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -224.197 -23.056 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -224.197 -23.056 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -21.444 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(into)-250(which)-250(coef)18(\002cients)-250(will)-250(be)-250(inserted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(into)-250(which)-250(coef)18(\002cients)-250(will)-250(be)-250(inserted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 484.968 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 484.768 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 484.768 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 484.968 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 484.768 Td [(type)]TJ +/F131 9.9626 Tf 398.354 484.768 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -21.443 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -21.443 Td [(desc)]TJ ET q 1 0 0 1 171.218 463.524 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 463.325 Td [(a)]TJ +/F75 9.9626 Tf 174.207 463.325 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.381 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 415.704 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 415.504 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 415.504 Td [(desc)]TJ ET q 1 0 0 1 352.944 415.704 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 415.504 Td [(type)]TJ +/F131 9.9626 Tf 356.083 415.504 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -33.398 Td [(info)]TJ +/F75 9.9626 Tf -226.299 -33.398 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -23.436 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -23.436 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -21.064 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -21.064 Td [(1.)]TJ 0 g 0 G - [-500(On)-312(entry)-312(to)-312(this)-312(r)18(out)1(ine)-312(the)-312(descriptor)-312(may)-312(be)-312(in)-312(either)-312(the)-311(build)-312(or)-312(as-)]TJ 12.453 -11.955 Td [(sembled)-250(state.)]TJ + 1.02 0 0 1 175.611 289.785 Tm [(On)-386(entry)-386(to)-385(this)-386(r)18(outine)-386(the)-386(descriptor)-386(may)-386(be)-385(in)-386(either)-386(the)-386(build)-385(or)]TJ 1 0 0 1 175.611 277.83 Tm [(assembled)-250(state.)]TJ 0 g 0 G -12.453 -21.443 Td [(2.)]TJ 0 g 0 G - [-500(On)-314(entry)-315(to)-314(this)-315(r)18(ou)1(tine)-315(the)-314(sparse)-315(matrix)-314(may)-314(be)-315(in)-314(either)-314(the)-315(build)-314(or)]TJ 12.453 -11.955 Td [(update)-250(state.)]TJ + 1.02 0 0 1 175.611 256.387 Tm [(On)-271(entry)-271(to)-271(this)-271(r)18(outine)-271(the)-271(sparse)-271(matrix)-271(may)-271(be)-271(in)-271(either)-270(the)-271(build)-271(or)]TJ 1 0 0 1 175.611 244.432 Tm [(update)-250(state.)]TJ 0 g 0 G -12.453 -21.444 Td [(3.)]TJ 0 g 0 G - [-500(If)-263(the)-263(descriptor)-263(is)-262(in)-263(the)-263(build)-263(state,)-266(then)-263(the)-263(sparse)-263(matrix)-262(must)-263(also)-263(be)]TJ 12.453 -11.955 Td [(in)-212(the)-212(build)-213(state;)-224(the)-213(action)-212(of)-212(the)-212(r)18(outine)-212(is)-213(to)-212(\050implicitly\051)-212(call)]TJ/F67 9.9626 Tf 271.732 0 Td [(psb_cdins)]TJ/F62 9.9626 Tf -271.732 -11.955 Td [(to)-259(add)-259(entries)-259(to)-259(the)-259(sparsity)-259(pattern;)-263(each)-259(sparse)-259(matrix)-259(entry)-259(implicitly)]TJ 0 -11.955 Td [(de\002nes)-288(a)-288(graph)-288(edge,)-297(that)-288(is)-288(passed)-288(to)-288(the)-288(descriptor)-288(r)18(outine)-288(for)-288(the)-288(ap-)]TJ 0 -11.955 Td [(pr)18(opriate)-250(pr)18(ocessing;)]TJ + 1.006 0 0 1 175.611 222.988 Tm [(If)-249(the)-250(descriptor)-249(is)-250(in)-249(the)-250(build)-249(state,)-250(then)-249(the)-250(sparse)-249(matrix)-249(must)-250(also)-249(be)]TJ 0.98 0 0 1 175.611 211.033 Tm [(in)-256(the)-256(build)-256(state;)-256(the)-256(action)-256(of)-256(the)-256(r)18(outine)-256(is)-256(to)-256(\050implicitly\051)-256(call)]TJ/F131 9.9626 Tf 1 0 0 1 447.343 211.033 Tm [(psb_cdins)]TJ/F84 9.9626 Tf 1.005 0 0 1 175.611 199.078 Tm [(to)-248(add)-249(entries)-248(to)-249(the)-248(sparsity)-249(pattern;)-248(each)-249(sparse)-248(matrix)-248(entry)-249(implicitly)]TJ 1.02 0 0 1 175.611 187.123 Tm [(de\002nes)-377(a)-377(graph)-378(edge,)-410(that)-377(is)-377(passed)-377(to)-378(the)-377(descriptor)-377(r)18(outine)-378(for)-377(the)]TJ 1 0 0 1 175.611 175.168 Tm [(appr)18(opriate)-250(pr)18(ocessing;)]TJ 0 g 0 G -12.453 -21.444 Td [(4.)]TJ 0 g 0 G - [-500(The)-250(input)-250(data)-250(can)-250(be)-250(passed)-250(in)-250(either)-250(COO)-250(or)-250(CSR)-250(formats;)]TJ + [-469(The)-250(input)-250(data)-250(can)-250(be)-250(passed)-250(in)-250(either)-250(COO)-250(or)-250(CSR)-250(formats;)]TJ 0 g 0 G 0 -21.443 Td [(5.)]TJ 0 g 0 G - [-500(In)-307(COO)-307(format)-307(the)-306(coef)18(\002cients)-307(to)-307(be)-307(inserted)-307(ar)18(e)-307(r)18(epr)18(esented)-306(by)-307(the)-307(or)18(-)]TJ 12.453 -11.955 Td [(der)18(ed)-194(triples)]TJ/F60 9.9626 Tf 57.352 0 Td [(i)-47(a)]TJ/F93 10.3811 Tf 7.911 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)]TJ/F60 9.9626 Tf 4.624 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.84 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(v)-40(a)-25(l)]TJ/F93 10.3811 Tf 13.37 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)-205(for)]TJ/F60 9.9626 Tf 19.208 0 Td [(i)]TJ/F93 10.3811 Tf 5.856 0 Td [(=)]TJ/F62 9.9626 Tf 10.961 0 Td [(1,)-179(.)-192(.)-191(.)-180(,)]TJ/F60 9.9626 Tf 26.608 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.337 0 Td [(;)-212(these)-194(triples)-194(ar)18(e)-193(arbitrary;)]TJ + 1.02 0 0 1 175.611 132.281 Tm [(In)-268(COO)-268(format)-268(the)-268(coef)18(\002cients)-268(to)-268(be)-268(inserted)-268(ar)18(e)-268(r)17(epr)18(esented)-268(by)-268(the)-268(or)18(-)]TJ 0.985 0 0 1 175.611 120.326 Tm [(der)18(ed)-253(triples)]TJ/F78 9.9626 Tf 1 0 0 1 233.265 120.326 Tm [(i)-47(a)]TJ/F181 10.3811 Tf 7.91 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.985 0 0 1 252.617 120.326 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 257.204 120.326 Tm [(j)-40(a)]TJ/F181 10.3811 Tf 7.84 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 0.985 0 0 1 276.486 120.326 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 280.725 120.326 Tm [(v)-40(a)-25(l)]TJ/F181 10.3811 Tf 13.369 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 0.985 0 0 1 305.536 120.326 Tm [(,)-253(for)]TJ/F78 9.9626 Tf 1 0 0 1 325.512 120.326 Tm [(i)]TJ/F181 10.3811 Tf 5.856 0 Td [(=)]TJ/F84 9.9626 Tf 0.985 0 0 1 342.329 120.326 Tm [(1,)]TJ 1 0 0 1 351.474 120.326 Tm [(.)-192(.)-191(.)]TJ 0.985 0 0 1 364.55 120.326 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 368.788 120.326 Tm [(n)-25(z)]TJ/F84 9.9626 Tf 0.985 0 0 1 379.124 120.326 Tm [(;)-253(these)-253(triples)-253(ar)18(e)-253(arbitrary;)]TJ 0 g 0 G - -60.701 -29.888 Td [(84)]TJ + 1 0 0 1 317.579 90.438 Tm [(84)]TJ 0 g 0 G ET endstream endobj -1549 0 obj +1560 0 obj << -/Length 4535 +/Length 5282 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 112.349 706.129 Td [(6.)]TJ +/F84 9.9626 Tf 112.349 706.129 Td [(6.)]TJ 0 g 0 G - [-500(In)-272(CSR)-271(format)-272(the)-271(coef)18(\002cients)-272(to)-271(be)-272(inserted)-272(for)-271(each)-272(input)-271(r)18(ow)]TJ/F60 9.9626 Tf 294.598 0 Td [(i)]TJ/F93 10.3811 Tf 6.254 0 Td [(=)]TJ/F62 9.9626 Tf 11.36 0 Td [(1,)]TJ/F60 9.9626 Tf 9.257 0 Td [(n)-15(r)]TJ/F62 9.9626 Tf -309.016 -11.955 Td [(ar)18(e)-311(r)18(epr)18(esented)-312(by)-311(the)-311(or)18(der)18(ed)-312(triples)]TJ/F93 10.3811 Tf 171.689 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 5.251 0 Td [(+)]TJ/F60 9.9626 Tf 10.413 0 Td [(i)-22(r)-35(w)]TJ/F91 10.3811 Tf 16.818 0 Td [(\000)]TJ/F62 9.9626 Tf 10.358 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)]TJ/F60 9.9626 Tf 4.624 0 Td [(j)-40(a)]TJ/F93 10.3811 Tf 7.841 0 Td [(\050)]TJ/F60 9.9626 Tf 4.622 0 Td [(j)]TJ/F93 10.3811 Tf 3.019 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)]TJ/F60 9.9626 Tf 4.276 0 Td [(v)-40(a)-25(l)]TJ/F93 10.3811 Tf 13.37 0 Td [(\050)]TJ/F60 9.9626 Tf 4.622 0 Td [(j)]TJ/F93 10.3811 Tf 3.019 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(,)-327(for)]TJ/F60 9.9626 Tf 22.013 0 Td [(j)]TJ/F93 10.3811 Tf 6.917 0 Td [(=)]TJ/F60 9.9626 Tf -310.555 -11.955 Td [(i)-22(r)-90(p)]TJ/F93 10.3811 Tf 12.991 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(,)-179(.)-192(.)-191(.)-180(,)]TJ/F60 9.9626 Tf 21.557 0 Td [(i)-22(r)-90(p)]TJ/F93 10.3811 Tf 12.991 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 5.301 0 Td [(+)]TJ/F62 9.9626 Tf 10.407 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F91 10.3811 Tf 6.486 0 Td [(\000)]TJ/F62 9.9626 Tf 10.407 0 Td [(1;)-362(these)-325(triples)-324(should)-325(belong)-325(to)-324(the)-325(curr)18(ent)-325(pr)18(o-)]TJ -100.947 -11.956 Td [(cess,)-276(i.e.)]TJ/F60 9.9626 Tf 39.307 0 Td [(i)]TJ/F93 10.3811 Tf 5.103 0 Td [(+)]TJ/F60 9.9626 Tf 10.263 0 Td [(i)-22(r)-35(w)]TJ/F91 10.3811 Tf 16.669 0 Td [(\000)]TJ/F62 9.9626 Tf 10.209 0 Td [(1)-271(should)-271(be)-271(one)-271(of)-271(the)-271(local)-270(indices,)-277(but)-271(ar)18(e)-270(otherwise)]TJ -81.551 -11.955 Td [(arbitrary;)]TJ + 1.02 0 0 1 124.802 706.129 Tm [(In)-389(CSR)-388(format)-389(the)-388(coef)18(\002cients)-389(to)-388(be)-389(inserted)-388(for)-389(each)-388(input)-389(r)18(ow)]TJ/F78 9.9626 Tf 1 0 0 1 426.857 706.129 Tm [(i)]TJ/F181 10.3811 Tf 8.555 0 Td [(=)]TJ/F84 9.9626 Tf 1.017 0 0 1 124.304 694.174 Tm [(1,)]TJ/F78 9.9626 Tf 1 0 0 1 133.688 694.174 Tm [(n)-15(r)]TJ/F84 9.9626 Tf 1.017 0 0 1 145.968 694.174 Tm [(ar)18(e)-246(r)17(epr)18(esented)-246(by)-246(the)-246(or)18(der)18(ed)-246(triples)]TJ/F181 10.3811 Tf 1 0 0 1 316.615 694.174 Tm [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 5.026 0 Td [(+)]TJ/F78 9.9626 Tf 10.187 0 Td [(i)-22(r)-35(w)]TJ/F179 10.3811 Tf 16.592 0 Td [(\000)]TJ/F84 9.9626 Tf 1.017 0 0 1 362.756 694.174 Tm [(1)]TJ/F181 10.3811 Tf 1 0 0 1 367.947 694.174 Tm [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 372.096 694.174 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 376.763 694.174 Tm [(j)-40(a)]TJ/F181 10.3811 Tf 7.84 0 Td [(\050)]TJ/F78 9.9626 Tf 4.623 0 Td [(j)]TJ/F181 10.3811 Tf 3.018 0 Td [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 396.394 694.174 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 400.712 694.174 Tm [(v)-40(a)-25(l)]TJ/F181 10.3811 Tf 13.37 0 Td [(\050)]TJ/F78 9.9626 Tf 4.622 0 Td [(j)]TJ/F181 10.3811 Tf 3.019 0 Td [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 425.872 694.174 Tm [(,)-246(for)]TJ/F78 9.9626 Tf 1 0 0 1 125.275 682.219 Tm [(j)]TJ/F181 10.3811 Tf 6.886 0 Td [(=)]TJ/F78 9.9626 Tf 12.115 0 Td [(i)-22(r)-90(p)]TJ/F181 10.3811 Tf 12.991 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 168.709 682.219 Tm [(,)]TJ 1 0 0 1 173.035 682.219 Tm [(.)-192(.)-191(.)]TJ 1.02 0 0 1 186.11 682.219 Tm [(,)]TJ/F78 9.9626 Tf 1 0 0 1 190.366 682.219 Tm [(i)-22(r)-90(p)]TJ/F181 10.3811 Tf 12.991 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 5.246 0 Td [(+)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.158 682.219 Tm [(1)]TJ/F181 10.3811 Tf 1 0 0 1 228.363 682.219 Tm [(\051)]TJ/F179 10.3811 Tf 6.431 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 245.145 682.219 Tm [(1;)-333(these)-303(triples)-304(should)-303(belong)-304(to)-303(the)-304(curr)18(ent)]TJ 0.98 0 0 1 124.503 670.263 Tm [(pr)18(ocess,)-219(i.e.)]TJ/F78 9.9626 Tf 1 0 0 1 176.65 670.263 Tm [(i)]TJ/F181 10.3811 Tf 4.622 0 Td [(+)]TJ/F78 9.9626 Tf 9.782 0 Td [(i)-22(r)-35(w)]TJ/F179 10.3811 Tf 16.188 0 Td [(\000)]TJ/F84 9.9626 Tf 0.98 0 0 1 216.97 670.263 Tm [(1)-210(should)-211(be)-210(one)-211(of)-210(the)-211(local)-210(indices,)-219(but)-211(ar)18(e)-210(otherwise)]TJ 1 0 0 1 124.802 658.308 Tm [(arbitrary;)]TJ 0 g 0 G -12.453 -19.925 Td [(7.)]TJ 0 g 0 G - [-500(Ther)18(e)-315(is)-314(no)-315(r)18(equir)18(ement)-314(that)-315(a)-315(given)-314(r)18(ow)-315(must)-315(be)-314(passed)-315(in)-315(its)-314(entir)18(ety)]TJ 12.453 -11.955 Td [(to)-298(a)-299(single)-298(call)-298(to)-299(thi)1(s)-299(r)18(outine:)-406(the)-299(buildup)-298(of)-298(a)-299(r)18(ow)-298(may)-298(be)-299(split)-298(into)-298(as)]TJ 0 -11.955 Td [(many)-250(calls)-250(as)-250(desir)18(ed)-250(\050even)-250(in)-250(the)-250(CSR)-250(format\051;)]TJ + 0.991 0 0 1 124.493 638.383 Tm [(Ther)18(e)-253(is)-253(no)-253(r)19(equir)18(ement)-253(that)-253(a)-253(given)-253(r)18(ow)-253(must)-253(be)-253(passed)-252(in)-253(its)-253(entir)18(ety)-253(to)]TJ 0.98 0 0 1 124.802 626.428 Tm [(a)-241(single)-241(call)-241(to)-241(this)-241(r)18(outine:)-309(the)-241(buildup)-242(of)-241(a)-241(r)19(ow)-241(may)-242(be)-241(split)-241(into)-241(as)-241(many)]TJ 1 0 0 1 124.802 614.473 Tm [(calls)-250(as)-250(desir)18(ed)-250(\050even)-250(in)-250(the)-250(CSR)-250(format\051;)]TJ 0 g 0 G -12.453 -19.926 Td [(8.)]TJ 0 g 0 G - [-500(Coef)18(\002cients)-288(fr)18(om)-289(dif)18(fer)18(ent)-288(r)18(ows)-288(may)-289(also)-288(be)-288(mixed)-289(up)-288(fr)18(eely)-288(in)-289(a)-288(single)]TJ 12.453 -11.955 Td [(call,)-250(accor)18(ding)-250(to)-250(the)-250(application)-250(needs;)]TJ + 1.016 0 0 1 124.802 594.547 Tm [(Coef)18(\002cients)-246(fr)17(om)-246(dif)18(fer)18(ent)-246(r)17(ows)-246(may)-246(also)-246(be)-247(mixed)-246(up)-246(fr)18(eely)-247(in)-246(a)-246(single)]TJ 1 0 0 1 124.802 582.592 Tm [(call,)-250(accor)18(ding)-250(to)-250(the)-250(application)-250(needs;)]TJ 0 g 0 G -12.453 -19.925 Td [(9.)]TJ 0 g 0 G - [-500(Coef)18(\002cients)-190(fr)18(om)-190(matrix)-190(r)18(ows)-190(not)-190(owned)-190(by)-190(the)-190(calling)-190(pr)18(ocess)-190(ar)18(e)-190(tr)18(eated)]TJ 12.453 -11.955 Td [(accor)18(ding)-254(to)-254(the)-253(value)-254(of)]TJ/F67 9.9626 Tf 111.539 0 Td [(bldmode)]TJ/F62 9.9626 Tf 39.141 0 Td [(speci\002ed)-254(at)-253(allocation)-254(time;)-256(if)]TJ/F67 9.9626 Tf 131.512 0 Td [(bldmode)]TJ/F62 9.9626 Tf -282.192 -11.956 Td [(was)-300(chosen)-300(as)]TJ/F67 9.9626 Tf 66.146 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.136 0 Td [(the)-300(library)-300(will)-300(keep)-300(track)-301(of)-300(them,)]TJ -163.282 -11.955 Td [(otherwise)-250(they)-250(ar)18(e)-250(silently)-250(ignor)18(ed;)]TJ + 0.98 0 0 1 124.802 562.667 Tm [(Coef)18(\002cients)-229(fr)18(om)-228(matrix)-229(r)18(ows)-229(not)-229(owned)-229(by)-229(the)-229(calling)-228(pr)18(ocess)-229(ar)18(e)-229(tr)19(eated)]TJ 1.002 0 0 1 124.802 550.712 Tm [(accor)18(ding)-249(to)-250(the)-249(value)-250(of)]TJ/F131 9.9626 Tf 1 0 0 1 236.35 550.712 Tm [(bldmode)]TJ/F84 9.9626 Tf 1.002 0 0 1 275.452 550.712 Tm [(speci\002ed)-249(at)-250(allocation)-249(time;)-250(if)]TJ/F131 9.9626 Tf 1 0 0 1 406.994 550.712 Tm [(bldmode)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.384 538.757 Tm [(was)-272(chosen)-273(as)]TJ/F131 9.9626 Tf 1 0 0 1 191.003 538.757 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 287.916 538.757 Tm [(the)-272(library)-273(will)-272(keep)-272(track)-272(of)-273(them,)]TJ 1 0 0 1 124.802 526.801 Tm [(otherwise)-250(they)-250(ar)18(e)-250(silently)-250(ignor)18(ed;)]TJ 0 g 0 G -17.435 -19.925 Td [(10.)]TJ 0 g 0 G - [-500(If)-295(the)-294(descriptor)-295(is)-295(i)1(n)-295(the)-295(assembled)-294(state,)-306(then)-295(any)-294(entries)-295(in)-295(the)-294(sparse)]TJ 17.435 -11.955 Td [(matrix)-284(that)-284(would)-284(generate)-284(additional)-284(communication)-284(r)18(equir)18(ements)-284(ar)18(e)]TJ 0 -11.955 Td [(ignor)18(ed;)]TJ + 1.02 0 0 1 124.802 506.876 Tm [(If)-247(the)-247(descriptor)-247(is)-248(in)-247(the)-247(assembled)-247(state,)-248(then)-247(any)-247(entries)-247(in)-248(the)-247(sparse)]TJ 1.008 0 0 1 124.802 494.921 Tm [(matrix)-248(that)-247(would)-248(generate)-248(additional)-247(communication)-248(r)18(equir)18(ements)-248(ar)18(e)]TJ 1 0 0 1 124.802 482.966 Tm [(ignor)18(ed;)]TJ 0 g 0 G -17.435 -19.926 Td [(11.)]TJ 0 g 0 G - [-500(If)-268(the)-268(matrix)-268(is)-268(in)-268(the)-268(update)-268(state,)-273(any)-268(entries)-268(in)-268(positions)-268(that)-268(wer)18(e)-268(not)]TJ 17.435 -11.955 Td [(pr)18(esent)-250(in)-250(the)-250(original)-250(matrix)-250(ar)18(e)-250(ignor)18(ed.)]TJ + 1.009 0 0 1 124.802 463.04 Tm [(If)-248(the)-248(matrix)-248(is)-248(in)-248(the)-248(update)-248(state,)-248(any)-248(entries)-248(in)-248(positions)-248(that)-248(wer)18(e)-248(not)]TJ 1 0 0 1 124.503 451.085 Tm [(pr)18(esent)-250(in)-250(the)-250(original)-250(matrix)-250(ar)18(e)-250(ignor)18(ed.)]TJ 0 g 0 G - 141.968 -360.647 Td [(85)]TJ + 142.267 -360.647 Td [(85)]TJ 0 g 0 G ET endstream endobj -1563 0 obj +1574 0 obj << -/Length 6789 +/Length 6916 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.9)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.9)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(routine)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(spasb)-250(\227)-250(Sparse)-250(matrix)-250(assembly)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -19.204 Td [(call)-525(psb_spasb\050a,)-525(desc_a,)-525(info)-525([,)-525(afmt,)-525(upd,)-1050(mold]\051)]TJ +/F131 9.9626 Tf -51.12 -19.204 Td [(call)-525(psb_spasb\050a,)-525(desc_a,)-525(info)-525([,)-525(afmt,)-525(upd,)-1050(mold]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.289 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -22.289 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.421 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.421 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.421 Td [(desc)]TJ @@ -18755,161 +18763,161 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 623.794 Td [(a)]TJ +/F75 9.9626 Tf 174.207 623.794 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F62 9.9626 Tf 27.297 0 Td [(.)]TJ -59.098 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F84 9.9626 Tf 27.297 0 Td [(.)]TJ -59.098 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 576.173 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 575.974 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 575.974 Td [(desc)]TJ ET q 1 0 0 1 384.755 576.173 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 575.974 Td [(type)]TJ +/F131 9.9626 Tf 387.893 575.974 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -20.421 Td [(afmt)]TJ +/F75 9.9626 Tf -258.11 -20.421 Td [(afmt)]TJ 0 g 0 G -/F62 9.9626 Tf 26.012 0 Td [(the)-250(storage)-250(format)-250(for)-250(the)-250(sparse)-250(matrix.)]TJ -1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(array)-250(of)-250(characters.)-310(Defalt:)-310('CSR'.)]TJ +/F84 9.9626 Tf 26.012 0 Td [(the)-250(storage)-250(format)-250(for)-250(the)-250(sparse)-250(matrix.)]TJ -1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(array)-250(of)-250(characters.)-310(Defalt:)-310('CSR'.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.42 Td [(upd)]TJ +/F75 9.9626 Tf -24.906 -20.42 Td [(upd)]TJ 0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(Pr)18(ovide)-250(for)-250(updates)-250(to)-250(the)-250(matrix)-250(coef)18(\002cients.)]TJ 1.663 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integer)74(,)-250(possible)-250(values:)]TJ/F67 9.9626 Tf 165.219 0 Td [(psb_upd_srch_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_upd_perm_)]TJ +/F84 9.9626 Tf 23.243 0 Td [(Pr)18(ovide)-250(for)-250(updates)-250(to)-250(the)-250(matrix)-250(coef)18(\002cients.)]TJ 1.663 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(integer)74(,)-250(possible)-250(values:)]TJ/F131 9.9626 Tf 165.219 0 Td [(psb_upd_srch_)]TJ/F84 9.9626 Tf 67.994 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_upd_perm_)]TJ 0 g 0 G -/F59 9.9626 Tf -263.1 -20.421 Td [(mold)]TJ +/F75 9.9626 Tf -263.1 -20.421 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -3.876 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F67 9.9626 Tf 201.393 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -3.567 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ ET q 1 0 0 1 393.323 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 396.461 371.249 Td [(T)]TJ +/F131 9.9626 Tf 396.461 371.249 Td [(T)]TJ ET q 1 0 0 1 402.319 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 405.457 371.249 Td [(base)]TJ +/F131 9.9626 Tf 405.457 371.249 Td [(base)]TJ ET q 1 0 0 1 427.006 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 430.144 371.249 Td [(sparse)]TJ +/F131 9.9626 Tf 430.144 371.249 Td [(sparse)]TJ ET q 1 0 0 1 462.154 371.449 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 465.292 371.249 Td [(mat)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ +/F131 9.9626 Tf 465.292 371.249 Td [(mat)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -330.278 -22.289 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -330.278 -22.289 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.421 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 280.918 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 280.719 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 280.719 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 280.918 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 280.719 Td [(type)]TJ +/F131 9.9626 Tf 398.354 280.719 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -20.421 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -20.421 Td [(desc)]TJ ET q 1 0 0 1 171.218 260.497 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 260.298 Td [(a)]TJ +/F75 9.9626 Tf 174.207 260.298 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F62 9.9626 Tf 27.297 0 Td [(.)]TJ -59.098 -11.956 Td [(Speci\002ed)-290(as:)-389(a)-290(str)8(uctur)18(ed)-290(data)-289(of)-290(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in/out)]TJ/F84 9.9626 Tf 27.297 0 Td [(.)]TJ 1.02 0 0 1 175.611 212.477 Tm [(Speci\002ed)-253(as:)-320(a)-253(str)8(uctur)17(ed)-253(data)-253(of)-253(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 171.305 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 347.411 212.477 Tm [(psb)]TJ ET q -1 0 0 1 363.235 212.677 cm +1 0 0 1 363.729 212.677 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 366.373 212.477 Td [(desc)]TJ +/F131 9.9626 Tf 366.868 212.477 Td [(desc)]TJ ET q -1 0 0 1 387.922 212.677 cm +1 0 0 1 388.417 212.677 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 391.06 212.477 Td [(type)]TJ +/F131 9.9626 Tf 391.555 212.477 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)-429(If)-290(the)-290(matrix)-289(was)]TJ -236.371 -11.955 Td [(allocated)-209(with)]TJ/F67 9.9626 Tf 64.153 0 Td [(bldmode=psb_matbld_remote_)]TJ/F62 9.9626 Tf 135.988 0 Td [(,)-217(then)-210(the)-209(descriptor)-209(will)-209(be)]TJ -200.141 -11.955 Td [(r)18(eassembled.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 412.476 212.477 Tm [(.)-328(If)-253(the)-253(matrix)-253(was)]TJ 0.984 0 0 1 175.611 200.522 Tm [(allocated)-253(with)]TJ/F131 9.9626 Tf 1 0 0 1 239.595 200.522 Tm [(bldmode=psb_matbld_remote_)]TJ/F84 9.9626 Tf 0.984 0 0 1 375.584 200.522 Tm [(,)-253(then)-253(the)-253(descriptor)-253(will)-253(be)]TJ 1 0 0 1 175.611 188.567 Tm [(r)18(eassembled.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -29.888 Td [(86)]TJ + 142.356 -29.888 Td [(86)]TJ 0 g 0 G ET endstream endobj -1567 0 obj +1578 0 obj << -/Length 3146 +/Length 3492 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(On)-226(entry)-227(to)-226(this)-227(r)18(outine)-226(the)-227(descriptor)-226(must)-227(be)-226(in)-227(the)-226(assembled)-227(state,)-231(i.e.)]TJ/F67 9.9626 Tf 12.453 -11.956 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ + 0.996 0 0 1 124.802 686.204 Tm [(On)-250(entry)-251(to)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-251(must)-250(be)-250(in)-250(the)-251(assembled)-250(state,)-250(i.e.)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 674.248 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ 0 g 0 G -62.017 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)-250(sparse)-250(matrix)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(update)-250(state;)]TJ + [-469(The)-250(sparse)-250(matrix)-250(may)-250(be)-250(in)-250(either)-250(the)-250(build)-250(or)-250(update)-250(state;)]TJ 0 g 0 G 0 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(Duplicate)-421(entries)-422(ar)18(e)-421(detected)-421(and)-422(handled)-421(in)-421(both)-421(build)-422(and)-421(update)]TJ 12.453 -11.955 Td [(state,)-244(wit)1(h)-242(the)-242(exception)-242(of)-242(the)-242(err)18(or)-242(action)-242(that)-242(is)-242(only)-241(taken)-242(in)-242(the)-242(build)]TJ 0 -11.955 Td [(state,)-250(i.e.)-310(on)-250(the)-250(\002rst)-250(assembly;)]TJ + 0.98 0 0 1 124.802 634.398 Tm [(Duplicate)-244(entries)-245(ar)18(e)-244(detected)-244(and)-245(handled)-244(in)-245(both)-244(build)-245(and)-244(update)-245(state,)]TJ 1.002 0 0 1 124.384 622.443 Tm [(with)-249(the)-250(exception)-249(of)-249(the)-250(err)18(or)-249(action)-249(that)-250(is)-249(only)-249(taken)-250(in)-249(the)-250(build)-249(state,)]TJ 1 0 0 1 124.802 610.488 Tm [(i.e.)-310(on)-250(the)-250(\002rst)-250(assembly;)]TJ 0 g 0 G -12.453 -19.926 Td [(4.)]TJ 0 g 0 G - [-500(If)-190(the)-190(update)-190(choice)-190(is)]TJ/F67 9.9626 Tf 108.372 0 Td [(psb_upd_perm_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)-202(then)-190(subsequent)-190(calls)-190(to)]TJ/F67 9.9626 Tf 109.946 0 Td [(psb_spins)]TJ/F62 9.9626 Tf -273.86 -11.955 Td [(to)-309(update)-309(the)-308(matrix)-309(must)-309(be)-309(arranged)-309(in)-308(such)-309(a)-309(way)-309(as)-309(to)-308(pr)18(oduce)-309(ex-)]TJ 0 -11.955 Td [(actly)-319(the)-320(same)-319(sequence)-320(of)-319(coef)18(\002cient)-319(values)-320(as)-319(encounter)18(ed)-319(at)-320(the)-319(\002rst)]TJ 0 -11.955 Td [(assembly;)]TJ + 0.98 0 0 1 124.802 590.562 Tm [(If)-211(the)-210(update)-211(choice)-211(is)]TJ/F131 9.9626 Tf 1 0 0 1 219.812 590.562 Tm [(psb_upd_perm_)]TJ/F84 9.9626 Tf 0.98 0 0 1 287.807 590.562 Tm [(,)-220(then)-210(subsequent)-211(calls)-210(to)]TJ/F131 9.9626 Tf 1 0 0 1 396.533 590.562 Tm [(psb_spins)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.802 578.607 Tm [(to)-386(update)-387(the)-386(matrix)-387(must)-386(be)-386(arranged)-387(in)-386(such)-387(a)-386(way)-386(as)-387(to)-386(pr)17(oduce)]TJ 0.992 0 0 1 124.802 566.652 Tm [(exactly)-252(the)-253(same)-252(sequence)-253(of)-252(coef)18(\002cient)-252(values)-253(as)-252(encounter)18(ed)-252(at)-253(the)-252(\002rst)]TJ 1 0 0 1 124.802 554.697 Tm [(assembly;)]TJ 0 g 0 G -12.453 -19.926 Td [(5.)]TJ 0 g 0 G - [-500(The)-250(output)-250(storage)-250(format)-250(need)-250(not)-250(be)-250(the)-250(same)-250(on)-250(all)-250(pr)18(ocesses;)]TJ + [-469(The)-250(output)-250(storage)-250(format)-250(need)-250(not)-250(be)-250(the)-250(same)-250(on)-250(all)-250(pr)18(ocesses;)]TJ 0 g 0 G 0 -19.925 Td [(6.)]TJ 0 g 0 G @@ -18917,7 +18925,7 @@ BT 0 g 0 G -12.453 -19.925 Td [(7.)]TJ 0 g 0 G - [-500(If)-431(the)]TJ/F67 9.9626 Tf 41.543 0 Td [(bldmode=psb_matbld_remote_)]TJ/F62 9.9626 Tf 140.288 0 Td [(value)-431(was)-432(speci\002ed)-431(at)-432(allocation)]TJ -169.378 -11.955 Td [(time,)-278(contributions)-272(de\002ned)-272(on)-272(the)-273(curr)18(ent)-272(pr)18(ocess)-272(but)-272(belonging)-273(to)-272(a)-272(r)18(e-)]TJ 0 -11.956 Td [(mote)-267(pr)18(ocess)-266(will)-267(be)-267(handled)-267(accor)18(dingly)111(.)-360(This)-267(is)-266(most)-267(likely)-267(to)-266(occur)-267(in)]TJ 0 -11.955 Td [(\002nite)-288(element)-288(applications,)-297(with)]TJ/F67 9.9626 Tf 145.88 0 Td [(dupl=psb_dupl_add_)]TJ/F62 9.9626 Tf 94.147 0 Td [(;)-307(it)-288(is)-287(necessary)-288(to)]TJ -240.027 -11.955 Td [(check)-236(for)-235(possible)-236(updates)-236(needed)-235(in)-236(the)-236(descriptor)74(,)-238(hence)-236(ther)18(e)-236(will)-235(be)-236(a)]TJ 0 -11.955 Td [(r)8(untime)-250(over)18(head.)]TJ + 1.02 0 0 1 124.802 482.966 Tm [(If)-380(the)]TJ/F131 9.9626 Tf 1 0 0 1 153.429 482.966 Tm [(bldmode=psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 293.28 482.966 Tm [(value)-380(was)-380(speci\002ed)-380(at)-380(allocation)]TJ 1.02 0 0 1 124.802 471.011 Tm [(time,)-380(contributions)-354(de\002ned)-353(on)-354(the)-353(curr)18(ent)-354(pr)18(ocess)-353(but)-354(belonging)-353(to)-354(a)]TJ 0.98 0 0 1 124.802 459.055 Tm [(r)18(emote)-252(pr)18(ocess)-253(will)-252(be)-253(handled)-252(accor)18(dingly)113(.)-315(This)-253(is)-253(most)-252(likely)-253(to)-253(occur)-252(in)]TJ 1.016 0 0 1 124.802 447.1 Tm [(\002nite)-247(element)-247(applications,)-247(with)]TJ/F131 9.9626 Tf 1 0 0 1 271.266 447.1 Tm [(dupl=psb_dupl_add_)]TJ/F84 9.9626 Tf 1.016 0 0 1 365.412 447.1 Tm [(;)-247(it)-247(is)-247(necessary)-247(to)]TJ 0.994 0 0 1 124.802 435.145 Tm [(check)-252(for)-252(possible)-252(updates)-252(needed)-252(in)-252(the)-252(descriptor)74(,)-252(hence)-252(ther)18(e)-252(will)-252(be)-252(a)]TJ 1 0 0 1 124.802 423.19 Tm [(r)8(untime)-250(over)18(head.)]TJ 0 g 0 G 141.968 -332.752 Td [(87)]TJ 0 g 0 G @@ -18925,187 +18933,187 @@ ET endstream endobj -1580 0 obj +1591 0 obj << -/Length 2987 +/Length 2995 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.10)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.10)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(spfree)-250(\227)-250(Frees)-250(a)-250(sparse)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(spfree)-250(\227)-250(Frees)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_spfree\050a,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_spfree\050a,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf -23.999 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.69 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.137 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 577.576 Td [(type)]TJ +/F131 9.9626 Tf 398.354 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ ET q 1 0 0 1 171.218 557.85 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 557.651 Td [(a)]TJ +/F75 9.9626 Tf 174.207 557.651 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 509.83 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 509.83 Td [(desc)]TJ ET q 1 0 0 1 384.755 510.029 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 509.83 Td [(type)]TJ +/F131 9.9626 Tf 387.893 509.83 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -329.728 Td [(88)]TJ + 142.356 -329.728 Td [(88)]TJ 0 g 0 G ET endstream endobj -1586 0 obj +1597 0 obj << -/Length 3858 +/Length 3920 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.11)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.11)]TJ 1.009 0 0 1 132.772 706.129 Tm [(psb)]TJ ET q -1 0 0 1 153.407 706.328 cm +1 0 0 1 153.586 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(sprn)-254(\227)-255(Reinit)-254(sparse)-255(matrix)-254(structure)-254(for)-255(psblas)-254(rou-)]TJ -24.221 -13.948 Td [(tines.)]TJ +/F75 11.9552 Tf 1.009 0 0 1 157.172 706.129 Tm [(sprn)-246(\227)-247(Reinit)-246(sparse)-246(matrix)-247(structure)-246(for)-246(psblas)-247(rou-)]TJ 1 0 0 1 132.772 692.181 Tm [(tines.)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -32.877 -18.964 Td [(call)-525(psb_sprn\050a,)-525(decsc_a,)-525(info,)-525(clear\051)]TJ +/F131 9.9626 Tf -32.877 -18.964 Td [(call)-525(psb_sprn\050a,)-525(decsc_a,)-525(info,)-525(clear\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.917 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.917 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.926 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.926 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(r)18(einitialized.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf -24 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(to)-250(be)-250(r)18(einitialized.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf -23.691 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 563.828 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 563.628 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 563.628 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 563.828 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 563.628 Td [(type)]TJ +/F131 9.9626 Tf 347.544 563.628 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -19.925 Td [(desc)]TJ +/F75 9.9626 Tf -268.571 -19.925 Td [(desc)]TJ ET q 1 0 0 1 120.408 543.902 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 543.703 Td [(a)]TJ +/F75 9.9626 Tf 123.397 543.703 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 496.082 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 495.882 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 495.882 Td [(desc)]TJ ET q 1 0 0 1 333.945 496.082 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 495.882 Td [(type)]TJ +/F131 9.9626 Tf 337.084 495.882 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(clear)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(clear)]TJ 0 g 0 G -/F62 9.9626 Tf 26.561 0 Td [(Choose)-250(whether)-250(to)-250(zer)18(o)-250(out)-250(matrix)-250(coef)18(\002cients)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)-310(tr)8(ue.)]TJ +/F84 9.9626 Tf 26.561 0 Td [(Choose)-250(whether)-250(to)-250(zer)18(o)-250(out)-250(matrix)-250(coef)18(\002cients)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Default:)-310(tr)8(ue.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.917 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.917 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G [-500(On)-250(exit)-250(fr)18(om)-250(this)-250(r)18(outine)-250(the)-250(sparse)-250(matrix)-250(is)-250(in)-250(the)-250(update)-250(state.)]TJ 0 g 0 G @@ -19115,31 +19123,31 @@ ET endstream endobj -1593 0 obj +1604 0 obj << -/Length 6166 +/Length 6526 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.12)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.12)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(geall)-250(\227)-250(Allocates)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geall\050x,)-525(desc_a,)-525(info[,)-525(dupl,)-525(bldmode,)-525(n,)-525(lb]\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geall\050x,)-525(desc_a,)-525(info[,)-525(dupl,)-525(bldmode,)-525(n,)-525(lb]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.627 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.627 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.01 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.01 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.009 Td [(desc)]TJ @@ -19149,75 +19157,75 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 629.519 Td [(a)]TJ +/F75 9.9626 Tf 174.207 629.519 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 581.898 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 581.699 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 581.699 Td [(desc)]TJ ET q 1 0 0 1 352.944 581.898 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 581.699 Td [(type)]TJ +/F131 9.9626 Tf 356.083 581.699 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -30.965 Td [(n)]TJ +/F75 9.9626 Tf -226.299 -30.965 Td [(n)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(the)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-297(as:)-404(Integer)-297(scalar)74(,)-309(default)-297(1.)-450(It)-297(is)-297(not)-297(a)-297(valid)-297(ar)18(gument)-297(if)]TJ/F60 9.9626 Tf 295.578 0 Td [(x)]TJ/F62 9.9626 Tf 8.164 0 Td [(is)-297(a)]TJ -303.742 -11.956 Td [(rank-1)-250(array)111(.)]TJ +/F84 9.9626 Tf 10.759 0 Td [(The)-250(number)-250(of)-250(columns)-250(of)-250(the)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 502.914 Tm [(Speci\002ed)-262(as:)-339(Integer)-262(scalar)72(,)-266(default)-262(1.)-356(It)-262(is)-263(not)-262(a)-263(val)1(id)-263(ar)18(gument)-263(i)1(f)]TJ/F78 9.9626 Tf 1 0 0 1 471.532 502.914 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.403 502.914 Tm [(is)-262(a)]TJ 1 0 0 1 175.611 490.959 Tm [(rank-1)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.009 Td [(lb)]TJ +/F75 9.9626 Tf -24.906 -19.01 Td [(lb)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(The)-237(lower)-238(bound)-237(for)-238(the)-237(column)-238(index)-237(range)-237(of)-238(the)-237(dense)-238(matrix)-237(to)-238(be)-237(allo-)]TJ 10.52 -11.955 Td [(cated.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-297(as:)-404(Integer)-297(scalar)74(,)-309(default)-297(1.)-450(It)-297(is)-297(not)-297(a)-297(valid)-297(ar)18(gument)-297(if)]TJ/F60 9.9626 Tf 295.578 0 Td [(x)]TJ/F62 9.9626 Tf 8.164 0 Td [(is)-297(a)]TJ -303.742 -11.955 Td [(rank-1)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 164.782 471.949 Tm [(The)-359(lower)-359(bound)-359(for)-359(the)-359(column)-359(index)-359(range)-359(of)-359(the)-359(dense)-359(matrix)-359(to)-359(be)]TJ 1 0 0 1 175.611 459.994 Tm [(allocated.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 412.174 Tm [(Speci\002ed)-262(as:)-339(Integer)-262(scalar)72(,)-266(default)-262(1.)-356(It)-262(is)-263(not)-262(a)-263(val)1(id)-263(ar)18(gument)-263(i)1(f)]TJ/F78 9.9626 Tf 1 0 0 1 471.532 412.174 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.403 412.174 Tm [(is)-262(a)]TJ 1 0 0 1 175.611 400.218 Tm [(rank-1)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.009 Td [(dupl)]TJ +/F75 9.9626 Tf -24.906 -19.009 Td [(dupl)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-243(as:)-306(integer)74(,)-244(possible)-243(values:)]TJ/F67 9.9626 Tf 164.942 0 Td [(psb_dupl_ovwrt_)]TJ/F62 9.9626 Tf 78.455 0 Td [(,)]TJ/F67 9.9626 Tf 4.923 0 Td [(psb_dupl_add_)]TJ/F62 9.9626 Tf 67.994 0 Td [(;)]TJ/F67 9.9626 Tf -316.314 -11.955 Td [(psb_dupl_err_)]TJ/F62 9.9626 Tf 70.485 0 Td [(has)-250(no)-250(ef)18(fect.)]TJ +/F84 9.9626 Tf 26.56 0 Td [(How)-250(to)-250(handle)-250(duplicate)-250(coef)18(\002cients.)]TJ -1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.006 0 0 1 175.611 333.389 Tm [(Speci\002ed)-248(as:)-308(integer)74(,)-248(possible)-248(values:)]TJ/F131 9.9626 Tf 1 0 0 1 341.716 333.389 Tm [(psb_dupl_ovwrt_)]TJ/F84 9.9626 Tf 1.006 0 0 1 420.171 333.389 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 425.161 333.389 Tm [(psb_dupl_add_)]TJ/F84 9.9626 Tf 1.006 0 0 1 493.156 333.389 Tm [(;)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 321.433 Tm [(psb_dupl_err_)]TJ/F84 9.9626 Tf 70.486 0 Td [(has)-250(no)-250(ef)18(fect.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.391 -19.009 Td [(bldmode)]TJ +/F75 9.9626 Tf -95.392 -19.009 Td [(bldmode)]TJ 0 g 0 G -/F62 9.9626 Tf 45.937 0 Td [(Whether)-372(to)-372(keep)-371(track)-372(of)-372(matrix)-372(entries)-371(that)-372(do)-372(not)-372(belong)-371(to)-372(the)]TJ -21.031 -11.955 Td [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)-190(value)]TJ/F67 9.9626 Tf 128.288 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 94.146 0 Td [(.)]TJ -331.544 -11.955 Td [(Default:)]TJ/F67 9.9626 Tf 38.515 0 Td [(psb_matbld_noremote_)]TJ/F62 9.9626 Tf 104.607 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 196.144 302.424 Tm [(Whether)-327(to)-327(keep)-327(track)-327(of)-327(matrix)-327(entries)-327(that)-327(do)-327(not)-327(belong)-327(to)-327(the)]TJ 1 0 0 1 175.611 290.469 Tm [(curr)18(ent)-250(pr)18(ocess.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 242.648 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F131 9.9626 Tf 1 0 0 1 301.54 242.648 Tm [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 406.147 242.648 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 410.601 242.648 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 0.98 0 0 1 504.747 242.648 Tm [(.)]TJ 1 0 0 1 175.611 230.693 Tm [(Default:)]TJ/F131 9.9626 Tf 38.516 0 Td [(psb_matbld_noremote_)]TJ/F84 9.9626 Tf 104.606 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -168.028 -19.627 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -168.028 -19.627 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.009 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.943 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-273(as:)-357(a)-273(rank)-274(one)-273(or)-274(two)-273(array)-273(with)-274(the)-273(ALLOCA)74(T)74(ABLE)-273(attribute)]TJ 0 -11.955 Td [(or)-250(an)-250(object)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(allocated.)]TJ 15.252 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 1.01 0 0 1 175.611 144.236 Tm [(Speci\002ed)-247(as:)-306(a)-247(rank)-246(one)-247(or)-246(two)-247(array)-246(with)-247(the)-246(ALLOCA)73(T)73(ABLE)-246(attribute)]TJ 1 0 0 1 175.611 132.281 Tm [(or)-250(an)-250(object)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 86.634 0 Td [(psb)]TJ +/F131 9.9626 Tf 86.635 0 Td [(psb)]TJ ET q 1 0 0 1 278.564 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 281.702 132.281 Td [(T)]TJ +/F131 9.9626 Tf 281.702 132.281 Td [(T)]TJ ET q 1 0 0 1 287.56 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 290.699 132.281 Td [(vect)]TJ +/F131 9.9626 Tf 290.699 132.281 Td [(vect)]TJ ET q 1 0 0 1 312.247 132.48 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 315.386 132.281 Td [(type)]TJ +/F131 9.9626 Tf 315.386 132.281 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -18.728 -41.843 Td [(90)]TJ 0 g 0 G @@ -19225,118 +19233,69 @@ ET endstream endobj -1597 0 obj -<< -/Length 925 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(Using)]TJ/F67 9.9626 Tf 41.798 0 Td [(psb_matbld_remote_)]TJ/F62 9.9626 Tf 97.28 0 Td [(is)-314(likely)-315(to)-315(cau)1(se)-315(a)-315(r)8(untime)-314(over)18(head)-315(at)-314(as-)]TJ -126.625 -11.955 Td [(sembly)-250(time;)]TJ -0 g 0 G - 141.968 -514.072 Td [(91)]TJ -0 g 0 G -ET - -endstream -endobj -1492 0 obj +1496 0 obj << /Type /ObjStm /N 100 -/First 979 -/Length 10305 ->> -stream -1487 0 1496 94 1493 242 1494 387 1498 534 324 592 1495 649 1501 743 1499 882 1503 1027 -328 1086 1500 1144 1507 1238 1504 1386 1505 1531 1509 1678 332 1736 1506 1793 1512 1913 1514 2031 -1515 2090 1516 2149 1511 2208 1520 2289 1517 2437 1518 2584 1522 2729 336 2787 1523 2844 1519 2902 -1525 2996 1527 3114 1528 3173 1529 3232 1530 3291 1524 3350 1533 3444 1535 3562 340 3620 1532 3677 -1539 3797 1531 3954 1536 4097 1537 4242 1541 4385 1542 4444 1543 4502 1544 4561 1545 4620 1546 4679 -1538 4738 1548 4858 1550 4976 1551 5034 1552 5092 1553 5150 1554 5208 1555 5266 1556 5324 1547 5382 -1562 5502 1558 5659 1559 5806 1560 5951 1564 6097 344 6156 1561 6214 1566 6308 1568 6426 1569 6484 -1570 6542 1571 6600 1572 6658 1573 6716 1574 6774 1575 6832 1565 6890 1579 6984 1576 7132 1577 7275 -1581 7422 348 7481 1578 7539 1585 7633 1582 7781 1583 7926 1587 8073 352 8131 1588 8188 1584 8246 -1592 8340 1589 8488 1590 8631 1594 8775 356 8834 1591 8892 1596 8999 1598 9117 1599 9175 1595 9232 -% 1487 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/First 978 +/Length 10482 +>> +stream +1489 0 1500 94 1497 242 1498 387 1502 533 320 592 1503 650 1499 709 1507 804 1504 952 +1505 1097 1509 1244 324 1302 1506 1359 1512 1454 1510 1593 1514 1738 328 1797 1511 1855 1518 1950 +1515 2098 1516 2243 1520 2390 332 2448 1517 2505 1523 2627 1525 2745 1526 2804 1527 2863 1522 2922 +1531 3004 1528 3152 1529 3299 1533 3444 336 3502 1534 3559 1530 3617 1536 3712 1538 3830 1539 3889 +1540 3948 1541 4007 1535 4066 1544 4161 1546 4279 340 4337 1543 4394 1550 4516 1542 4673 1547 4816 +1548 4961 1552 5104 1553 5163 1554 5221 1555 5280 1556 5339 1557 5398 1549 5457 1559 5579 1561 5697 +1562 5755 1563 5813 1564 5871 1565 5929 1566 5987 1567 6045 1558 6103 1573 6226 1569 6383 1570 6530 +1571 6675 1575 6822 344 6881 1572 6939 1577 7034 1579 7152 1580 7210 1581 7268 1582 7326 1583 7384 +1584 7442 1585 7500 1586 7558 1576 7616 1590 7711 1587 7859 1588 8002 1592 8149 348 8208 1589 8266 +1596 8361 1593 8509 1594 8654 1598 8801 352 8859 1599 8916 1595 8974 1603 9069 1600 9217 1601 9360 +% 1489 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1496 0 obj +% 1500 0 obj << /Type /Page -/Contents 1497 0 R -/Resources 1495 0 R +/Contents 1501 0 R +/Resources 1499 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1493 0 R 1494 0 R ] +/Parent 1482 0 R +/Annots [ 1497 0 R 1498 0 R ] >> -% 1493 0 obj +% 1497 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 573.77 359.001 585.83] +/Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1494 0 obj +% 1498 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 484.107 359.001 496.166] +/Rect [342.753 416.361 409.811 428.42] /A << /S /GoTo /D (descdata) >> >> -% 1498 0 obj -<< -/D [1496 0 R /XYZ 98.895 753.953 null] ->> -% 324 0 obj -<< -/D [1496 0 R /XYZ 99.895 716.092 null] ->> -% 1495 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1501 0 obj +% 1502 0 obj << -/Type /Page -/Contents 1502 0 R -/Resources 1500 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1471 0 R -/Annots [ 1499 0 R ] +/D [1500 0 R /XYZ 149.705 753.953 null] >> -% 1499 0 obj +% 320 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 573.77 409.811 585.83] -/A << /S /GoTo /D (descdata) >> +/D [1500 0 R /XYZ 150.705 716.092 null] >> % 1503 0 obj << -/D [1501 0 R /XYZ 149.705 753.953 null] ->> -% 328 0 obj -<< -/D [1501 0 R /XYZ 150.705 716.092 null] +/D [1500 0 R /XYZ 150.705 326.302 null] >> -% 1500 0 obj +% 1499 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> % 1507 0 obj @@ -19345,7 +19304,7 @@ stream /Contents 1508 0 R /Resources 1506 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1482 0 R /Annots [ 1504 0 R 1505 0 R ] >> % 1504 0 obj @@ -19353,28 +19312,28 @@ stream /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 452.321 369.462 464.381] -/A << /S /GoTo /D (spdata) >> +/Rect [291.943 573.77 359.001 585.83] +/A << /S /GoTo /D (descdata) >> >> % 1505 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 209.193 359.001 221.252] +/Rect [291.943 484.107 359.001 496.166] /A << /S /GoTo /D (descdata) >> >> % 1509 0 obj << /D [1507 0 R /XYZ 98.895 753.953 null] >> -% 332 0 obj +% 324 0 obj << /D [1507 0 R /XYZ 99.895 716.092 null] >> % 1506 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> % 1512 0 obj @@ -19383,127 +19342,195 @@ stream /Contents 1513 0 R /Resources 1511 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1482 0 R +/Annots [ 1510 0 R ] +>> +% 1510 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 573.77 409.811 585.83] +/A << /S /GoTo /D (descdata) >> >> % 1514 0 obj << /D [1512 0 R /XYZ 149.705 753.953 null] >> -% 1515 0 obj +% 328 0 obj << /D [1512 0 R /XYZ 150.705 716.092 null] >> -% 1516 0 obj -<< -/D [1512 0 R /XYZ 150.705 663.469 null] ->> % 1511 0 obj << -/Font << /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1520 0 obj +% 1518 0 obj << /Type /Page -/Contents 1521 0 R -/Resources 1519 0 R +/Contents 1519 0 R +/Resources 1517 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R -/Annots [ 1517 0 R 1518 0 R ] +/Parent 1521 0 R +/Annots [ 1515 0 R 1516 0 R ] >> -% 1517 0 obj +% 1515 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 571.679 359.001 583.739] -/A << /S /GoTo /D (descdata) >> +/Rect [291.943 452.321 369.462 464.381] +/A << /S /GoTo /D (spdata) >> >> -% 1518 0 obj +% 1516 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 227.887 369.462 239.946] -/A << /S /GoTo /D (spdata) >> ->> -% 1522 0 obj -<< -/D [1520 0 R /XYZ 98.895 753.953 null] +/Rect [291.943 209.193 359.001 221.252] +/A << /S /GoTo /D (descdata) >> >> -% 336 0 obj +% 1520 0 obj << -/D [1520 0 R /XYZ 99.895 716.092 null] +/D [1518 0 R /XYZ 98.895 753.953 null] >> -% 1523 0 obj +% 332 0 obj << -/D [1520 0 R /XYZ 99.895 136.374 null] +/D [1518 0 R /XYZ 99.895 716.092 null] >> -% 1519 0 obj +% 1517 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1525 0 obj +% 1523 0 obj << /Type /Page -/Contents 1526 0 R -/Resources 1524 0 R +/Contents 1524 0 R +/Resources 1522 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1521 0 R +>> +% 1525 0 obj +<< +/D [1523 0 R /XYZ 149.705 753.953 null] +>> +% 1526 0 obj +<< +/D [1523 0 R /XYZ 150.705 716.092 null] >> % 1527 0 obj << -/D [1525 0 R /XYZ 149.705 753.953 null] +/D [1523 0 R /XYZ 150.705 663.469 null] +>> +% 1522 0 obj +<< +/Font << /F84 675 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1531 0 obj +<< +/Type /Page +/Contents 1532 0 R +/Resources 1530 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1521 0 R +/Annots [ 1528 0 R 1529 0 R ] >> % 1528 0 obj << -/D [1525 0 R /XYZ 150.705 716.092 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 571.679 359.001 583.739] +/A << /S /GoTo /D (descdata) >> >> % 1529 0 obj << -/D [1525 0 R /XYZ 150.705 699.334 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 227.887 369.462 239.946] +/A << /S /GoTo /D (spdata) >> >> -% 1530 0 obj +% 1533 0 obj +<< +/D [1531 0 R /XYZ 98.895 753.953 null] +>> +% 336 0 obj +<< +/D [1531 0 R /XYZ 99.895 716.092 null] +>> +% 1534 0 obj << -/D [1525 0 R /XYZ 150.705 644.819 null] +/D [1531 0 R /XYZ 99.895 136.374 null] >> -% 1524 0 obj +% 1530 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1533 0 obj +% 1536 0 obj << /Type /Page -/Contents 1534 0 R -/Resources 1532 0 R +/Contents 1537 0 R +/Resources 1535 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R +/Parent 1521 0 R +>> +% 1538 0 obj +<< +/D [1536 0 R /XYZ 149.705 753.953 null] +>> +% 1539 0 obj +<< +/D [1536 0 R /XYZ 150.705 716.092 null] +>> +% 1540 0 obj +<< +/D [1536 0 R /XYZ 150.705 699.334 null] +>> +% 1541 0 obj +<< +/D [1536 0 R /XYZ 150.705 644.819 null] >> % 1535 0 obj << -/D [1533 0 R /XYZ 98.895 753.953 null] +/Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1544 0 obj +<< +/Type /Page +/Contents 1545 0 R +/Resources 1543 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1521 0 R +>> +% 1546 0 obj +<< +/D [1544 0 R /XYZ 98.895 753.953 null] >> % 340 0 obj << -/D [1533 0 R /XYZ 99.895 716.092 null] +/D [1544 0 R /XYZ 99.895 716.092 null] >> -% 1532 0 obj +% 1543 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1539 0 obj +% 1550 0 obj << /Type /Page -/Contents 1540 0 R -/Resources 1538 0 R +/Contents 1551 0 R +/Resources 1549 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1510 0 R -/Annots [ 1531 0 R 1536 0 R 1537 0 R ] +/Parent 1521 0 R +/Annots [ 1542 0 R 1547 0 R 1548 0 R ] >> -% 1531 0 obj +% 1542 0 obj << /Type /Annot /Subtype /Link @@ -19511,7 +19538,7 @@ stream /Rect [310.942 654.503 378 666.562] /A << /S /GoTo /D (descdata) >> >> -% 1536 0 obj +% 1547 0 obj << /Type /Annot /Subtype /Link @@ -19519,7 +19546,7 @@ stream /Rect [342.753 480.963 420.271 493.022] /A << /S /GoTo /D (spdata) >> >> -% 1537 0 obj +% 1548 0 obj << /Type /Annot /Subtype /Link @@ -19527,86 +19554,86 @@ stream /Rect [310.942 411.699 378 423.758] /A << /S /GoTo /D (descdata) >> >> -% 1541 0 obj +% 1552 0 obj << -/D [1539 0 R /XYZ 149.705 753.953 null] +/D [1550 0 R /XYZ 149.705 753.953 null] >> -% 1542 0 obj +% 1553 0 obj << -/D [1539 0 R /XYZ 150.705 306.27 null] +/D [1550 0 R /XYZ 150.705 306.27 null] >> -% 1543 0 obj +% 1554 0 obj << -/D [1539 0 R /XYZ 150.705 272.927 null] +/D [1550 0 R /XYZ 150.705 272.927 null] >> -% 1544 0 obj +% 1555 0 obj << -/D [1539 0 R /XYZ 150.705 236.878 null] +/D [1550 0 R /XYZ 150.705 236.878 null] >> -% 1545 0 obj +% 1556 0 obj << -/D [1539 0 R /XYZ 150.705 167.614 null] +/D [1550 0 R /XYZ 150.705 167.614 null] >> -% 1546 0 obj +% 1557 0 obj << -/D [1539 0 R /XYZ 150.705 146.171 null] +/D [1550 0 R /XYZ 150.705 146.171 null] >> -% 1538 0 obj +% 1549 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1548 0 obj +% 1559 0 obj << /Type /Page -/Contents 1549 0 R -/Resources 1547 0 R +/Contents 1560 0 R +/Resources 1558 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R +/Parent 1568 0 R >> -% 1550 0 obj +% 1561 0 obj << -/D [1548 0 R /XYZ 98.895 753.953 null] +/D [1559 0 R /XYZ 98.895 753.953 null] >> -% 1551 0 obj +% 1562 0 obj << -/D [1548 0 R /XYZ 99.895 716.092 null] +/D [1559 0 R /XYZ 99.895 716.092 null] >> -% 1552 0 obj +% 1563 0 obj << -/D [1548 0 R /XYZ 99.895 651.514 null] +/D [1559 0 R /XYZ 99.895 651.514 null] >> -% 1553 0 obj +% 1564 0 obj << -/D [1548 0 R /XYZ 99.895 607.678 null] +/D [1559 0 R /XYZ 99.895 608.346 null] >> -% 1554 0 obj +% 1565 0 obj << -/D [1548 0 R /XYZ 99.895 575.798 null] +/D [1559 0 R /XYZ 99.895 575.798 null] >> -% 1555 0 obj +% 1566 0 obj << -/D [1548 0 R /XYZ 99.895 520.007 null] +/D [1559 0 R /XYZ 99.895 520.007 null] >> -% 1556 0 obj +% 1567 0 obj << -/D [1548 0 R /XYZ 99.895 476.171 null] +/D [1559 0 R /XYZ 99.895 476.171 null] >> -% 1547 0 obj +% 1558 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1562 0 obj +% 1573 0 obj << /Type /Page -/Contents 1563 0 R -/Resources 1561 0 R +/Contents 1574 0 R +/Resources 1572 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1558 0 R 1559 0 R 1560 0 R ] +/Parent 1568 0 R +/Annots [ 1569 0 R 1570 0 R 1571 0 R ] >> -% 1558 0 obj +% 1569 0 obj << /Type /Annot /Subtype /Link @@ -19614,7 +19641,7 @@ stream /Rect [342.753 572.168 409.811 584.228] /A << /S /GoTo /D (descdata) >> >> -% 1559 0 obj +% 1570 0 obj << /Type /Annot /Subtype /Link @@ -19622,82 +19649,82 @@ stream /Rect [342.753 276.913 420.271 288.973] /A << /S /GoTo /D (spdata) >> >> -% 1560 0 obj +% 1571 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.92 208.672 412.978 220.731] +/Rect [346.415 208.672 413.472 220.731] /A << /S /GoTo /D (descdata) >> >> -% 1564 0 obj +% 1575 0 obj << -/D [1562 0 R /XYZ 149.705 753.953 null] +/D [1573 0 R /XYZ 149.705 753.953 null] >> % 344 0 obj << -/D [1562 0 R /XYZ 150.705 716.092 null] +/D [1573 0 R /XYZ 150.705 716.092 null] >> -% 1561 0 obj +% 1572 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1566 0 obj +% 1577 0 obj << /Type /Page -/Contents 1567 0 R -/Resources 1565 0 R +/Contents 1578 0 R +/Resources 1576 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R +/Parent 1568 0 R >> -% 1568 0 obj +% 1579 0 obj << -/D [1566 0 R /XYZ 98.895 753.953 null] +/D [1577 0 R /XYZ 98.895 753.953 null] >> -% 1569 0 obj +% 1580 0 obj << -/D [1566 0 R /XYZ 99.895 701.929 null] +/D [1577 0 R /XYZ 99.895 701.929 null] >> -% 1570 0 obj +% 1581 0 obj << -/D [1566 0 R /XYZ 99.895 667.454 null] +/D [1577 0 R /XYZ 99.895 667.454 null] >> -% 1571 0 obj +% 1582 0 obj << -/D [1566 0 R /XYZ 99.895 647.529 null] +/D [1577 0 R /XYZ 99.895 647.529 null] >> -% 1572 0 obj +% 1583 0 obj << -/D [1566 0 R /XYZ 99.895 603.693 null] +/D [1577 0 R /XYZ 99.895 603.693 null] >> -% 1573 0 obj +% 1584 0 obj << -/D [1566 0 R /XYZ 99.895 547.902 null] +/D [1577 0 R /XYZ 99.895 547.902 null] >> -% 1574 0 obj +% 1585 0 obj << -/D [1566 0 R /XYZ 99.895 527.977 null] +/D [1577 0 R /XYZ 99.895 527.977 null] >> -% 1575 0 obj +% 1586 0 obj << -/D [1566 0 R /XYZ 99.895 496.097 null] +/D [1577 0 R /XYZ 99.895 496.097 null] >> -% 1565 0 obj +% 1576 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1579 0 obj +% 1590 0 obj << /Type /Page -/Contents 1580 0 R -/Resources 1578 0 R +/Contents 1591 0 R +/Resources 1589 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1576 0 R 1577 0 R ] +/Parent 1568 0 R +/Annots [ 1587 0 R 1588 0 R ] >> -% 1576 0 obj +% 1587 0 obj << /Type /Annot /Subtype /Link @@ -19705,7 +19732,7 @@ stream /Rect [342.753 573.77 420.271 585.83] /A << /S /GoTo /D (spdata) >> >> -% 1577 0 obj +% 1588 0 obj << /Type /Annot /Subtype /Link @@ -19713,29 +19740,29 @@ stream /Rect [342.753 506.024 409.811 518.084] /A << /S /GoTo /D (descdata) >> >> -% 1581 0 obj +% 1592 0 obj << -/D [1579 0 R /XYZ 149.705 753.953 null] +/D [1590 0 R /XYZ 149.705 753.953 null] >> % 348 0 obj << -/D [1579 0 R /XYZ 150.705 716.092 null] +/D [1590 0 R /XYZ 150.705 716.092 null] >> -% 1578 0 obj +% 1589 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1585 0 obj +% 1596 0 obj << /Type /Page -/Contents 1586 0 R -/Resources 1584 0 R +/Contents 1597 0 R +/Resources 1595 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1582 0 R 1583 0 R ] +/Parent 1568 0 R +/Annots [ 1593 0 R 1594 0 R ] >> -% 1582 0 obj +% 1593 0 obj << /Type /Annot /Subtype /Link @@ -19743,7 +19770,7 @@ stream /Rect [291.943 559.823 369.462 571.882] /A << /S /GoTo /D (spdata) >> >> -% 1583 0 obj +% 1594 0 obj << /Type /Annot /Subtype /Link @@ -19751,33 +19778,33 @@ stream /Rect [291.943 492.077 359.001 504.136] /A << /S /GoTo /D (descdata) >> >> -% 1587 0 obj +% 1598 0 obj << -/D [1585 0 R /XYZ 98.895 753.953 null] +/D [1596 0 R /XYZ 98.895 753.953 null] >> % 352 0 obj << -/D [1585 0 R /XYZ 99.895 716.092 null] +/D [1596 0 R /XYZ 99.895 716.092 null] >> -% 1588 0 obj +% 1599 0 obj << -/D [1585 0 R /XYZ 99.895 312.355 null] +/D [1596 0 R /XYZ 99.895 312.355 null] >> -% 1584 0 obj +% 1595 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1592 0 obj +% 1603 0 obj << /Type /Page -/Contents 1593 0 R -/Resources 1591 0 R +/Contents 1604 0 R +/Resources 1602 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1557 0 R -/Annots [ 1589 0 R 1590 0 R ] +/Parent 1568 0 R +/Annots [ 1600 0 R 1601 0 R ] >> -% 1589 0 obj +% 1600 0 obj << /Type /Annot /Subtype /Link @@ -19785,7 +19812,7 @@ stream /Rect [310.942 577.893 378 589.953] /A << /S /GoTo /D (descdata) >> >> -% 1590 0 obj +% 1601 0 obj << /Type /Annot /Subtype /Link @@ -19793,174 +19820,163 @@ stream /Rect [261.249 128.475 337.303 140.535] /A << /S /GoTo /D (vdata) >> >> -% 1594 0 obj -<< -/D [1592 0 R /XYZ 149.705 753.953 null] ->> -% 356 0 obj -<< -/D [1592 0 R /XYZ 150.705 716.092 null] ->> -% 1591 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1596 0 obj -<< -/Type /Page -/Contents 1597 0 R -/Resources 1595 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R ->> -% 1598 0 obj -<< -/D [1596 0 R /XYZ 98.895 753.953 null] ->> -% 1599 0 obj -<< -/D [1596 0 R /XYZ 99.895 632.19 null] ->> -% 1595 0 obj + +endstream +endobj +1609 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] +/Length 989 >> +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +0 g 0 G + 1.02 0 0 1 124.802 616.465 Tm [(Using)]TJ/F131 9.9626 Tf 1 0 0 1 154.449 616.465 Tm [(psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 251.507 616.465 Tm [(is)-287(likely)-286(to)-287(cause)-286(a)-287(r)8(untime)-286(over)17(head)-286(at)-287(as-)]TJ 1 0 0 1 124.802 604.51 Tm [(sembly)-250(time;)]TJ +0 g 0 G + 141.968 -514.072 Td [(91)]TJ +0 g 0 G +ET endstream endobj -1605 0 obj +1617 0 obj << -/Length 6336 +/Length 6604 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.13)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.13)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(routine)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(geins)-250(\227)-250(Dense)-250(matrix)-250(insertion)-250(routine)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geins\050m,)-525(irw,)-525(val,)-525(x,)-525(desc_a,)-525(info)-525([,local]\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geins\050m,)-525(irw,)-525(val,)-525(x,)-525(desc_a,)-525(info)-525([,local]\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.57 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.57 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.386 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.386 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.386 Td [(m)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows)-250(in)]TJ/F60 9.9626 Tf 86.569 0 Td [(v)-40(a)-25(l)]TJ/F62 9.9626 Tf 15.736 0 Td [(to)-250(be)-250(inserted.)]TJ -91.237 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows)-250(in)]TJ/F78 9.9626 Tf 86.569 0 Td [(v)-40(a)-25(l)]TJ/F84 9.9626 Tf 15.736 0 Td [(to)-250(be)-250(inserted.)]TJ -91.237 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.386 Td [(irw)]TJ +/F75 9.9626 Tf -24.906 -19.386 Td [(irw)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Indices)-381(of)-382(the)-382(r)18(ows)-381(to)-382(be)-381(inserted.)-705(Speci\002cally)111(,)-414(r)18(ow)]TJ/F60 9.9626 Tf 239.84 0 Td [(i)]TJ/F62 9.9626 Tf 6.765 0 Td [(of)]TJ/F60 9.9626 Tf 12.683 0 Td [(v)-40(a)-25(l)]TJ/F62 9.9626 Tf 17.046 0 Td [(will)-381(be)-382(in-)]TJ -271.901 -11.955 Td [(serted)-344(into)-344(the)-344(local)-344(r)18(ow)-344(corr)18(esponding)-344(to)-344(the)-344(global)-344(r)18(ow)-344(index)]TJ/F60 9.9626 Tf 290.218 0 Td [(i)-22(r)-35(w)]TJ/F93 10.3811 Tf 14.654 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 4.149 0 Td [(.)]TJ -316.314 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 171.178 560.616 Tm [(Indices)-354(of)-353(the)-354(r)18(ows)-354(to)-353(be)-354(inserted.)-629(Speci\002cally)109(,)-381(r)18(ow)]TJ/F78 9.9626 Tf 1 0 0 1 412.75 560.616 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 419.307 560.616 Tm [(of)]TJ/F78 9.9626 Tf 1 0 0 1 431.957 560.616 Tm [(v)-40(a)-25(l)]TJ/F84 9.9626 Tf 1.02 0 0 1 448.795 560.616 Tm [(will)-354(be)-353(in-)]TJ 1.02 0 0 1 175.611 548.661 Tm [(serted)-307(into)-307(the)-307(local)-308(r)18(ow)-307(corr)17(esp)1(onding)-308(to)-307(the)-307(global)-307(r)18(ow)-308(index)]TJ/F78 9.9626 Tf 1 0 0 1 467.522 548.661 Tm [(i)-22(r)-35(w)]TJ/F181 10.3811 Tf 14.655 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.619 548.661 Tm [(.)]TJ 1 0 0 1 175.611 536.706 Tm [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.386 Td [(val)]TJ +/F75 9.9626 Tf -24.906 -19.386 Td [(val)]TJ 0 g 0 G -/F62 9.9626 Tf 18.819 0 Td [(the)-250(dense)-250(submatrix)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)-310(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 18.819 0 Td [(the)-250(dense)-250(submatrix)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)-310(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.386 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -19.386 Td [(desc)]TJ ET q 1 0 0 1 171.218 414.446 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 414.247 Td [(a)]TJ +/F75 9.9626 Tf 174.207 414.247 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 366.626 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 366.426 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 366.426 Td [(desc)]TJ ET q 1 0 0 1 384.755 366.626 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 366.426 Td [(type)]TJ +/F131 9.9626 Tf 387.893 366.426 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.386 Td [(local)]TJ +/F75 9.9626 Tf -258.11 -19.386 Td [(local)]TJ 0 g 0 G -/F62 9.9626 Tf 26.56 0 Td [(Whether)-240(the)-240(entries)-241(in)-240(the)-240(index)-240(vector)]TJ/F67 9.9626 Tf 173.162 0 Td [(irw)]TJ/F62 9.9626 Tf 15.692 0 Td [(,)-242(ar)18(e)-240(alr)18(eady)-241(i)1(n)-241(local)-240(number)18(-)]TJ -190.508 -11.955 Td [(ing.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F67 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F62 9.9626 Tf 36.613 0 Td [(.)]TJ +/F84 9.9626 Tf 1.004 0 0 1 176.767 347.04 Tm [(Whether)-248(the)-248(entries)-249(in)-248(the)-248(index)-248(vector)]TJ/F131 9.9626 Tf 1 0 0 1 351.183 347.04 Tm [(irw)]TJ/F84 9.9626 Tf 1.004 0 0 1 366.874 347.04 Tm [(,)-248(ar)18(e)-249(alr)18(eady)-248(in)-248(local)-248(number)18(-)]TJ 1 0 0 1 175.611 335.085 Tm [(ing.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value;)-250(default:)]TJ/F131 9.9626 Tf 162.678 0 Td [(.false.)]TJ/F84 9.9626 Tf 36.613 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -224.197 -20.57 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -224.197 -20.57 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.387 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(output)-250(dense)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(rank)-190(one)-190(or)-190(two)-190(array)-190(or)-190(an)-190(object)-190(of)-190(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(output)-250(dense)-250(matrix.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 211.443 Tm [(Speci\002ed)-237(as:)-308(a)-237(rank)-238(one)-237(or)-238(two)-237(array)-238(or)-237(an)-238(object)-237(of)-238(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 242.569 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 419.159 211.443 Tm [(psb)]TJ ET q -1 0 0 1 434.498 211.642 cm +1 0 0 1 435.477 211.642 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 437.636 211.443 Td [(T)]TJ +/F131 9.9626 Tf 438.616 211.443 Td [(T)]TJ ET q -1 0 0 1 443.494 211.642 cm +1 0 0 1 444.474 211.642 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 446.633 211.443 Td [(vect)]TJ +/F131 9.9626 Tf 447.612 211.443 Td [(vect)]TJ ET q -1 0 0 1 468.182 211.642 cm +1 0 0 1 469.161 211.642 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 471.32 211.443 Td [(type)]TJ +/F131 9.9626 Tf 472.299 211.443 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)]TJ -316.63 -11.955 Td [(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 493.22 211.443 Tm [(,)]TJ 1 0 0 1 175.611 199.488 Tm [(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.342 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -31.342 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -29.888 Td [(92)]TJ + 142.356 -29.888 Td [(92)]TJ 0 g 0 G ET endstream endobj -1610 0 obj +1621 0 obj << -/Length 539 +/Length 574 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G [-500(Dense)-250(vectors/matrices)-250(do)-250(not)-250(have)-250(an)-250(associated)-250(state;)]TJ 0 g 0 G 0 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(Duplicate)-326(entries)-326(ar)18(e)-325(either)-326(overwritten)-326(or)-326(added,)-345(ther)18(e)-325(is)-326(no)-326(pr)18(ovision)]TJ 12.453 -11.955 Td [(for)-250(raising)-250(an)-250(err)18(or)-250(condition.)]TJ + 1.02 0 0 1 124.802 666.278 Tm [(Duplicate)-264(entries)-265(ar)18(e)-264(either)-265(overwritten)-264(or)-265(added,)-269(ther)18(e)-265(is)-264(no)-264(pr)17(ovision)]TJ 1 0 0 1 124.802 654.323 Tm [(for)-250(raising)-250(an)-250(err)18(or)-250(condition.)]TJ 0 g 0 G 141.968 -563.885 Td [(93)]TJ 0 g 0 G @@ -19968,31 +19984,31 @@ ET endstream endobj -1619 0 obj +1630 0 obj << -/Length 6120 +/Length 6333 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.14)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.14)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(geasb)-250(\227)-250(Assembly)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geasb\050x,)-525(desc_a,)-525(info,)-525(mold\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_geasb\050x,)-525(desc_a,)-525(info,)-525(mold\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ @@ -20002,128 +20018,128 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 625.397 Td [(a)]TJ +/F75 9.9626 Tf 174.207 625.397 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.653 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.328 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.328 0 Td [(psb)]TJ ET q 1 0 0 1 328.257 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 331.395 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 331.395 577.576 Td [(desc)]TJ ET q 1 0 0 1 352.944 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 356.083 577.576 Td [(type)]TJ +/F131 9.9626 Tf 356.083 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.299 -31.88 Td [(mold)]TJ +/F75 9.9626 Tf -226.299 -31.88 Td [(mold)]TJ 0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.876 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-223(as:)-296(an)-223(object)-223(of)-222(a)-223(class)-223(derived)-223(fr)18(om)]TJ/F67 9.9626 Tf 199.087 0 Td [(psb)]TJ +/F84 9.9626 Tf 28.473 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -3.567 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.987 0 0 1 175.611 497.875 Tm [(Speci\002ed)-254(as:)-315(an)-254(object)-254(of)-254(a)-254(class)-254(derived)-254(fr)18(om)]TJ/F131 9.9626 Tf 1 0 0 1 374.749 497.875 Tm [(psb)]TJ ET q -1 0 0 1 391.016 498.074 cm +1 0 0 1 391.068 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 394.155 497.875 Td [(T)]TJ +/F131 9.9626 Tf 394.206 497.875 Td [(T)]TJ ET q -1 0 0 1 400.012 498.074 cm +1 0 0 1 400.064 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 403.151 497.875 Td [(base)]TJ +/F131 9.9626 Tf 403.202 497.875 Td [(base)]TJ ET q -1 0 0 1 424.7 498.074 cm +1 0 0 1 424.751 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 427.838 497.875 Td [(vect)]TJ +/F131 9.9626 Tf 427.89 497.875 Td [(vect)]TJ ET q -1 0 0 1 449.387 498.074 cm +1 0 0 1 449.439 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 452.525 497.875 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(;)-232(this)]TJ -297.835 -11.955 Td [(is)-250(only)-250(allowed)-250(when)]TJ/F60 9.9626 Tf 97.12 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(of)-250(type)]TJ +/F131 9.9626 Tf 452.577 497.875 Td [(type)]TJ/F84 9.9626 Tf 0.987 0 0 1 473.498 497.875 Tm [(;)-254(this)]TJ 1 0 0 1 175.611 485.92 Tm [(is)-250(only)-250(allowed)-250(when)]TJ/F78 9.9626 Tf 97.12 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 42.899 0 Td [(psb)]TJ +/F131 9.9626 Tf 42.899 0 Td [(psb)]TJ ET q 1 0 0 1 339.644 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 342.783 485.92 Td [(T)]TJ +/F131 9.9626 Tf 342.783 485.92 Td [(T)]TJ ET q 1 0 0 1 348.641 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 351.779 485.92 Td [(vect)]TJ +/F131 9.9626 Tf 351.779 485.92 Td [(vect)]TJ ET q 1 0 0 1 373.328 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 376.466 485.92 Td [(type)]TJ +/F131 9.9626 Tf 376.466 485.92 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -246.682 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -246.682 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-259(as:)-328(a)-259(rank)-258(one)-259(or)-259(two)-259(array)-259(with)-259(the)-259(ALLOCA)74(T)74(ABLE)-258(or)-259(an)-259(ob-)]TJ 0 -11.955 Td [(ject)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(assembled.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 396.256 Tm [(Speci\002ed)-220(as:)-299(a)-220(rank)-220(one)-220(or)-220(two)-221(array)-220(with)-220(the)-220(ALLOCA)76(T)75(ABLE)-220(or)-220(an)-220(object)]TJ 1 0 0 1 175.611 384.301 Tm [(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 50.55 0 Td [(psb)]TJ +/F131 9.9626 Tf 33.285 0 Td [(psb)]TJ ET q -1 0 0 1 242.48 384.5 cm +1 0 0 1 225.215 384.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 245.618 384.301 Td [(T)]TJ +/F131 9.9626 Tf 228.353 384.301 Td [(T)]TJ ET q -1 0 0 1 251.476 384.5 cm +1 0 0 1 234.211 384.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 254.614 384.301 Td [(vect)]TJ +/F131 9.9626 Tf 237.349 384.301 Td [(vect)]TJ ET q -1 0 0 1 276.163 384.5 cm +1 0 0 1 258.898 384.5 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 279.301 384.301 Td [(type)]TJ +/F131 9.9626 Tf 262.036 384.301 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -149.518 -31.881 Td [(info)]TJ +/F75 9.9626 Tf -132.253 -31.881 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(On)-227(entry)-226(to)-227(this)-226(r)18(outine)-227(th)1(e)-227(descriptor)-226(must)-227(be)-226(in)-227(the)-226(assembled)-227(state,)-231(i.e.)]TJ/F67 9.9626 Tf 12.453 -11.956 Td [(psb_cdasb)]TJ/F62 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ + 0.996 0 0 1 175.611 262.757 Tm [(On)-250(entry)-251(to)-250(this)-250(r)18(outine)-250(the)-250(descriptor)-251(must)-250(be)-250(in)-250(the)-251(assembled)-250(state,)-250(i.e.)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 250.801 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 49.564 0 Td [(must)-250(alr)18(eady)-250(have)-250(been)-250(called.)]TJ 0 g 0 G -62.017 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(If)-431(the)]TJ/F67 9.9626 Tf 41.544 0 Td [(bldmode=psb_matbld_remote_)]TJ/F62 9.9626 Tf 140.287 0 Td [(value)-431(was)-432(speci\002ed)-431(at)-432(allocation)]TJ -169.378 -11.955 Td [(time,)-278(contributions)-272(de\002ned)-272(on)-273(the)-272(curr)18(ent)-272(pr)18(ocess)-272(but)-272(belonging)-273(to)-272(a)-272(r)18(e-)]TJ 0 -11.955 Td [(mote)-267(pr)18(ocess)-266(will)-267(be)-267(handled)-267(accor)18(dingly)111(.)-360(This)-267(is)-266(most)-267(likely)-267(to)-266(occur)-267(in)]TJ 0 -11.955 Td [(\002nite)-250(element)-250(applications,)-250(with)]TJ/F67 9.9626 Tf 144.277 0 Td [(dupl=psb_dupl_add_)]TJ/F62 9.9626 Tf 94.146 0 Td [(.)]TJ + 1.02 0 0 1 175.611 230.876 Tm [(If)-380(the)]TJ/F131 9.9626 Tf 1 0 0 1 204.239 230.876 Tm [(bldmode=psb_matbld_remote_)]TJ/F84 9.9626 Tf 1.02 0 0 1 344.09 230.876 Tm [(value)-380(was)-380(speci\002ed)-380(at)-380(allocation)]TJ 1.02 0 0 1 175.611 218.921 Tm [(time,)-381(cont)1(ributions)-354(de\002ned)-353(on)-354(the)-353(curr)18(ent)-354(pr)18(ocess)-354(but)-353(belonging)-353(to)-354(a)]TJ 0.98 0 0 1 175.611 206.966 Tm [(r)18(emote)-252(pr)18(ocess)-253(will)-252(be)-253(handled)-253(accor)19(dingly)113(.)-315(This)-253(is)-253(most)-252(likely)-253(to)-253(occur)-252(in)]TJ 1 0 0 1 175.611 195.011 Tm [(\002nite)-250(element)-250(applications,)-250(with)]TJ/F131 9.9626 Tf 144.277 0 Td [(dupl=psb_dupl_add_)]TJ/F84 9.9626 Tf 94.146 0 Td [(.)]TJ 0 g 0 G -96.455 -104.573 Td [(94)]TJ 0 g 0 G @@ -20131,275 +20147,275 @@ ET endstream endobj -1627 0 obj +1638 0 obj << -/Length 3224 +/Length 3251 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.15)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.15)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(gefree)-250(\227)-250(Frees)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(gefree)-250(\227)-250(Frees)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gefree\050x,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gefree\050x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-259(as:)-328(a)-258(rank)-259(one)-259(or)-259(two)-259(array)-259(with)-259(the)-259(ALLOCA)74(T)74(ABLE)-258(or)-259(an)-259(ob-)]TJ 0 -11.955 Td [(ject)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(fr)18(eed.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 577.576 Tm [(Speci\002ed)-220(as:)-299(a)-220(rank)-220(one)-220(or)-220(two)-221(array)-220(with)-220(the)-220(ALLOCA)76(T)75(ABLE)-220(or)-220(an)-220(object)]TJ 1 0 0 1 124.802 565.621 Tm [(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 50.55 0 Td [(psb)]TJ +/F131 9.9626 Tf 33.285 0 Td [(psb)]TJ ET q -1 0 0 1 191.67 565.82 cm +1 0 0 1 174.405 565.82 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 194.809 565.621 Td [(T)]TJ +/F131 9.9626 Tf 177.544 565.621 Td [(T)]TJ ET q -1 0 0 1 200.666 565.82 cm +1 0 0 1 183.402 565.82 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 203.805 565.621 Td [(vect)]TJ +/F131 9.9626 Tf 186.54 565.621 Td [(vect)]TJ ET q -1 0 0 1 225.354 565.82 cm +1 0 0 1 208.089 565.82 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 228.492 565.621 Td [(type)]TJ +/F131 9.9626 Tf 211.227 565.621 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(,)-250(of)-250(type)-250(r)18(eal,)-250(complex)-250(or)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -149.518 -31.881 Td [(desc)]TJ +/F75 9.9626 Tf -132.253 -31.881 Td [(desc)]TJ ET q 1 0 0 1 120.408 533.94 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 533.74 Td [(a)]TJ +/F75 9.9626 Tf 123.397 533.74 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(communication)-250(descriptor)74(.)]TJ -8.249 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(variable)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 136.327 0 Td [(psb)]TJ +/F131 9.9626 Tf 136.327 0 Td [(psb)]TJ ET q 1 0 0 1 277.448 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 280.586 485.92 Td [(desc)]TJ +/F131 9.9626 Tf 280.586 485.92 Td [(desc)]TJ ET q 1 0 0 1 302.135 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 305.273 485.92 Td [(type)]TJ +/F131 9.9626 Tf 305.273 485.92 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -226.3 -33.873 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -226.3 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -293.863 Td [(95)]TJ + 142.357 -293.863 Td [(95)]TJ 0 g 0 G ET endstream endobj -1631 0 obj +1642 0 obj << -/Length 3218 +/Length 3210 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.16)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.16)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(gelp)-250(\227)-250(Applies)-250(a)-250(left)-250(permutation)-250(to)-250(a)-250(dense)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gelp\050trans,)-525(iperm,)-525(x,)-525(info\051)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_gelp\050trans,)-525(iperm,)-525(x,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(A)-250(character)-250(that)-250(speci\002es)-250(whether)-250(to)-250(permute)]TJ/F60 9.9626 Tf 203.748 0 Td [(A)]TJ/F62 9.9626 Tf 9.808 0 Td [(or)]TJ/F60 9.9626 Tf 12.488 0 Td [(A)]TJ/F60 7.5716 Tf 7.511 3.616 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.616 Td [(.)]TJ -241.716 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(single)-250(character)-250(with)-250(value)-250('N')-250(for)]TJ/F60 9.9626 Tf 218.195 0 Td [(A)]TJ/F62 9.9626 Tf 9.808 0 Td [(or)-250('T')-250(for)]TJ/F60 9.9626 Tf 41.807 0 Td [(A)]TJ/F60 7.5716 Tf 7.511 3.616 Td [(T)]TJ/F62 9.9626 Tf 5.401 -3.616 Td [(.)]TJ +/F84 9.9626 Tf 27.277 0 Td [(A)-250(character)-250(that)-250(speci\002es)-250(whether)-250(to)-250(permute)]TJ/F78 9.9626 Tf 203.749 0 Td [(A)]TJ/F84 9.9626 Tf 9.808 0 Td [(or)]TJ/F78 9.9626 Tf 12.488 0 Td [(A)]TJ/F78 7.5716 Tf 7.51 3.616 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.616 Td [(.)]TJ -241.327 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(single)-250(character)-250(with)-250(value)-250('N')-250(for)]TJ/F78 9.9626 Tf 218.195 0 Td [(A)]TJ/F84 9.9626 Tf 9.808 0 Td [(or)-250('T')-250(for)]TJ/F78 9.9626 Tf 41.807 0 Td [(A)]TJ/F78 7.5716 Tf 7.511 3.616 Td [(T)]TJ/F84 9.9626 Tf 5.401 -3.616 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -307.628 -31.88 Td [(iperm)]TJ +/F75 9.9626 Tf -307.628 -31.88 Td [(iperm)]TJ 0 g 0 G -/F62 9.9626 Tf 32.099 0 Td [(An)-250(integer)-250(array)-250(containing)-250(permutation)-250(information.)]TJ -7.193 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(one-dimensional)-250(array)111(.)]TJ +/F84 9.9626 Tf 31.711 0 Td [(An)-250(integer)-250(array)-250(containing)-250(permutation)-250(information.)]TJ -6.805 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(one-dimensional)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(x)]TJ +/F75 9.9626 Tf -24.906 -31.881 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(permuted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(or)-250(two)-250(dimensional)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(dense)-250(matrix)-250(to)-250(be)-250(permuted.)]TJ 15.252 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one)-250(or)-250(two)-250(dimensional)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -33.873 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -226.117 Td [(96)]TJ + 142.356 -226.117 Td [(96)]TJ 0 g 0 G ET endstream endobj -1636 0 obj +1647 0 obj << -/Length 6238 +/Length 6618 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.17)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.17)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(glob)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(glob)]TJ ET q 1 0 0 1 182.29 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 185.877 706.129 Td [(to)]TJ +/F75 11.9552 Tf 185.877 706.129 Td [(to)]TJ ET q 1 0 0 1 197.222 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 200.809 706.129 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ +/F75 11.9552 Tf 200.809 706.129 Td [(loc)-250(\227)-250(Global)-250(to)-250(local)-250(indices)-250(convertion)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -100.914 -18.964 Td [(call)-525(psb_glob_to_loc\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 -11.955 Td [(call)-525(psb_glob_to_loc\050x,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ +/F131 9.9626 Tf -100.914 -18.964 Td [(call)-525(psb_glob_to_loc\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 -11.955 Td [(call)-525(psb_glob_to_loc\050x,)-525(desc_a,)-525(info,)-525(iact,owned\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.109 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.109 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.602 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.602 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.601 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.574 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 15.333 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.557 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.557 Td [(desc)]TJ ET q 1 0 0 1 120.408 535.72 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 535.52 Td [(a)]TJ +/F75 9.9626 Tf 123.397 535.52 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 487.899 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 487.7 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 487.7 Td [(desc)]TJ ET q 1 0 0 1 333.945 487.899 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 487.7 Td [(type)]TJ +/F131 9.9626 Tf 337.084 487.7 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.602 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.602 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 432.232 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 432.232 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 432.232 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 432.232 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 432.232 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 432.232 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 432.232 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 432.232 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 432.232 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -19.601 Td [(owned)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 412.631 Tm [(owned)]TJ 0 g 0 G -/F62 9.9626 Tf 35.975 0 Td [(Spec\002es)-250(valid)-250(range)-250(of)-250(input)-250(Scope:)]TJ/F59 9.9626 Tf 159.54 0 Td [(global)]TJ/F62 9.9626 Tf -170.608 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(If)-320(tr)8(ue,)-337(then)-320(only)-320(indices)-320(strictly)-320(owned)-320(by)-320(the)-319(curr)18(ent)-320(pr)18(ocess)-320(ar)18(e)-320(con-)]TJ 0 -11.955 Td [(sider)18(ed)-250(valid,)-250(if)-250(false)-250(then)-250(halo)-250(indices)-250(ar)18(e)-250(also)-250(accepted.)-310(Default:)-310(false.)]TJ +/F84 9.9626 Tf 35.975 0 Td [(Spec\002es)-250(valid)-250(range)-250(of)-250(input)-250(Scope:)]TJ/F75 9.9626 Tf 159.54 0 Td [(global)]TJ/F84 9.9626 Tf -170.917 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.99 0 0 1 124.802 376.765 Tm [(If)-252(tr)8(ue,)-252(then)-251(only)-252(indices)-252(strictly)-252(owned)-252(by)-251(the)-252(curr)18(ent)-252(pr)18(ocess)-251(ar)18(e)-252(consid-)]TJ 1 0 0 1 124.802 364.81 Tm [(er)18(ed)-250(valid,)-250(if)-250(false)-250(then)-250(halo)-250(indices)-250(ar)18(e)-250(also)-250(accepted.)-310(Default:)-310(false.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.109 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.109 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.601 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(If)]TJ/F60 9.9626 Tf 9.727 0 Td [(y)]TJ/F62 9.9626 Tf 8.032 0 Td [(is)-294(not)-294(pr)18(esent,)-304(then)]TJ/F60 9.9626 Tf 88.385 0 Td [(x)]TJ/F62 9.9626 Tf 8.132 0 Td [(is)-294(overwritten)-294(with)-293(the)-294(translated)-294(integer)-294(indices.)]TJ -99.332 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 109.858 324.1 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.419 324.1 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 127.154 324.1 Tm [(is)-259(not)-258(pr)17(esent,)-262(then)]TJ/F78 9.9626 Tf 1 0 0 1 215.798 324.1 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.631 324.1 Tm [(is)-259(overwritten)-258(with)-259(the)-259(translated)-258(integer)-259(indices.)]TJ 1 0 0 1 124.802 312.145 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.602 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.602 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(If)]TJ/F60 9.9626 Tf 9.521 0 Td [(y)]TJ/F62 9.9626 Tf 7.827 0 Td [(is)-273(pr)18(esent,)-279(then)]TJ/F60 9.9626 Tf 70.133 0 Td [(y)]TJ/F62 9.9626 Tf 7.827 0 Td [(is)-273(overwritten)-273(with)-273(the)-273(translated)-274(integer)-273(indices,)-279(and)]TJ/F60 9.9626 Tf -80.628 -11.955 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F59 9.9626 Tf 112.557 0 Td [(global)]TJ/F62 9.9626 Tf -120.547 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 110.416 256.677 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.593 256.677 Tm [(y)]TJ/F84 9.9626 Tf 0.983 0 0 1 127.19 256.677 Tm [(is)-254(pr)18(esent,)-254(then)]TJ/F78 9.9626 Tf 1 0 0 1 195.523 256.677 Tm [(y)]TJ/F84 9.9626 Tf 0.983 0 0 1 203.12 256.677 Tm [(is)-254(overwritten)-255(with)-254(the)-254(translated)-255(integer)-254(indices,)-254(and)]TJ/F78 9.9626 Tf 1 0 0 1 438.401 256.677 Tm [(x)]TJ/F84 9.9626 Tf -313.599 -11.955 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F75 9.9626 Tf 112.557 0 Td [(global)]TJ/F84 9.9626 Tf -112.866 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.602 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.602 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.108 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.108 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 166.875 -29.888 Td [(97)]TJ +/F84 9.9626 Tf 166.875 -29.888 Td [(97)]TJ 0 g 0 G ET endstream endobj -1641 0 obj +1652 0 obj << -/Length 672 +/Length 775 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 163.158 706.129 Td [(1.)]TJ +/F84 9.9626 Tf 163.158 706.129 Td [(1.)]TJ 0 g 0 G - [-500(If)-272(an)-273(input)-272(index)-272(is)-273(out)-272(of)-273(range)1(,)-278(then)-273(the)-272(corr)18(esponding)-272(output)-273(index)-272(is)]TJ 12.453 -11.955 Td [(set)-250(to)-250(a)-250(negative)-250(number;)]TJ + 1.01 0 0 1 175.611 706.129 Tm [(If)-248(an)-249(input)-248(index)-249(is)-248(out)-248(of)-249(range,)-248(then)-249(the)-248(corr)18(esponding)-249(output)-248(index)-248(is)]TJ 1 0 0 1 175.611 694.174 Tm [(set)-250(to)-250(a)-250(negative)-250(number;)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)-416(default)]TJ/F67 9.9626 Tf 68.74 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e)-416(means)-417(that)-416(the)-417(negative)-416(output)-416(is)-417(the)-416(only)-416(action)]TJ -61.517 -11.955 Td [(taken)-250(on)-250(an)-250(out-of-range)-250(input.)]TJ + 0.98 0 0 1 175.303 674.248 Tm [(The)-234(default)]TJ/F131 9.9626 Tf 1 0 0 1 226.908 674.248 Tm [(I)]TJ/F84 9.9626 Tf 0.98 0 0 1 232.138 674.248 Tm [(gnor)18(e)-234(means)-234(that)-235(the)-234(negative)-234(output)-234(is)-235(the)-234(only)-234(action)-235(taken)]TJ 1 0 0 1 175.611 662.293 Tm [(on)-250(an)-250(out-of-range)-250(input.)]TJ 0 g 0 G 141.968 -571.855 Td [(98)]TJ 0 g 0 G @@ -20407,182 +20423,182 @@ ET endstream endobj -1648 0 obj +1659 0 obj << -/Length 5458 +/Length 5808 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.18)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.18)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(loc)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(loc)]TJ ET q 1 0 0 1 173.646 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 177.233 706.129 Td [(to)]TJ +/F75 11.9552 Tf 177.233 706.129 Td [(to)]TJ ET q 1 0 0 1 188.578 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 192.165 706.129 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ +/F75 11.9552 Tf 192.165 706.129 Td [(glob)-250(\227)-250(Local)-250(to)-250(global)-250(indices)-250(conversion)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -92.27 -18.964 Td [(call)-525(psb_loc_to_glob\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 -11.955 Td [(call)-525(psb_loc_to_glob\050x,)-525(desc_a,)-525(info,)-525(iact\051)]TJ +/F131 9.9626 Tf -92.27 -18.964 Td [(call)-525(psb_loc_to_glob\050x,)-525(y,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 -11.955 Td [(call)-525(psb_loc_to_glob\050x,)-525(desc_a,)-525(info,)-525(iact\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.574 0 Td [(An)-250(integer)-250(vector)-250(of)-250(indices)-250(to)-250(be)-250(converted.)]TJ 15.333 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.881 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.881 Td [(desc)]TJ ET q 1 0 0 1 120.408 533.94 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 533.74 Td [(a)]TJ +/F75 9.9626 Tf 123.397 533.74 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 485.92 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 485.92 Td [(desc)]TJ ET q 1 0 0 1 333.945 486.119 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 485.92 Td [(type)]TJ +/F131 9.9626 Tf 337.084 485.92 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.926 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.926 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 430.129 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 430.129 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 430.129 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 430.129 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 430.129 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 430.129 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 430.129 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 430.129 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 430.129 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 408.211 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(If)]TJ/F60 9.9626 Tf 9.727 0 Td [(y)]TJ/F62 9.9626 Tf 8.032 0 Td [(is)-294(not)-294(pr)18(esent,)-304(then)]TJ/F60 9.9626 Tf 88.385 0 Td [(x)]TJ/F62 9.9626 Tf 8.132 0 Td [(is)-294(overwritten)-294(with)-293(the)-294(translated)-294(integer)-294(indices.)]TJ -99.332 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 109.858 388.286 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.419 388.286 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 127.154 388.286 Tm [(is)-259(not)-258(pr)17(esent,)-262(then)]TJ/F78 9.9626 Tf 1 0 0 1 215.798 388.286 Tm [(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.631 388.286 Tm [(is)-259(overwritten)-258(with)-259(the)-259(translated)-258(integer)-259(indices.)]TJ 1 0 0 1 124.802 376.331 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(y)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(If)]TJ/F60 9.9626 Tf 9.705 0 Td [(y)]TJ/F62 9.9626 Tf 8.011 0 Td [(is)-292(not)-291(pr)18(esent,)-302(then)]TJ/F60 9.9626 Tf 88.122 0 Td [(y)]TJ/F62 9.9626 Tf 8.011 0 Td [(is)-292(overwritten)-291(with)-292(the)-291(translated)-292(integer)-292(indice)1(s,)]TJ -99.463 -11.955 Td [(and)]TJ/F60 9.9626 Tf 19.651 0 Td [(x)]TJ/F62 9.9626 Tf 7.696 0 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F59 9.9626 Tf 112.557 0 Td [(global)]TJ/F62 9.9626 Tf -139.904 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 110.416 320.54 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 119.918 320.54 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 127.593 320.54 Tm [(is)-253(not)-253(pr)18(esent,)-255(then)]TJ/F78 9.9626 Tf 1 0 0 1 215.815 320.54 Tm [(y)]TJ/F84 9.9626 Tf 1.02 0 0 1 223.49 320.54 Tm [(is)-253(overwritten)-253(wit)1(h)-253(the)-253(translated)-253(integer)-253(indices,)]TJ 1 0 0 1 124.802 308.585 Tm [(and)]TJ/F78 9.9626 Tf 19.651 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(is)-250(left)-250(unchanged.)-310(Scope:)]TJ/F75 9.9626 Tf 112.557 0 Td [(global)]TJ/F84 9.9626 Tf -140.213 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 141.968 -114.535 Td [(99)]TJ + 142.357 -114.535 Td [(99)]TJ 0 g 0 G ET endstream endobj -1653 0 obj +1664 0 obj << -/Length 3169 +/Length 3304 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.19)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.19)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(is)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(is)]TJ ET q 1 0 0 1 217.809 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 221.396 706.129 Td [(owned)-250(\227)]TJ +/F75 11.9552 Tf 221.396 706.129 Td [(owned)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_owned\050x,)-525(desc_a\051)]TJ +/F131 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_owned\050x,)-525(desc_a\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 171.218 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 545.696 Td [(a)]TJ +/F75 9.9626 Tf 174.207 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 497.875 Td [(desc)]TJ ET q 1 0 0 1 384.755 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 497.875 Td [(type)]TJ +/F131 9.9626 Tf 387.893 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-261(logical)-260(mask)-261(which)-261(is)-261(tr)8(ue)-261(if)]TJ/F60 9.9626 Tf 137.304 0 Td [(x)]TJ/F62 9.9626 Tf 7.803 0 Td [(is)-261(owned)-261(by)-260(the)-261(curr)18(ent)-261(pr)18(o-)]TJ -192.978 -11.955 Td [(cess)-250(Scope:)]TJ/F59 9.9626 Tf 51.567 0 Td [(local)]TJ/F62 9.9626 Tf -51.567 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ +/F84 9.9626 Tf 1.015 0 0 1 223.093 456.032 Tm [(A)-246(logical)-246(mask)-246(which)-246(is)-246(tr)8(ue)-246(if)]TJ/F78 9.9626 Tf 1 0 0 1 361.406 456.032 Tm [(x)]TJ/F84 9.9626 Tf 1.015 0 0 1 369.099 456.032 Tm [(is)-246(owned)-246(by)-246(the)-246(curr)18(ent)-246(pr)18(o-)]TJ 1 0 0 1 175.611 444.077 Tm [(cess)-250(Scope:)]TJ/F75 9.9626 Tf 51.567 0 Td [(local)]TJ/F84 9.9626 Tf -51.875 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-240(r)18(outine)-239(r)18(eturns)-240(a)]TJ/F67 9.9626 Tf 109.67 0 Td [(.true.)]TJ/F62 9.9626 Tf 33.769 0 Td [(value)-240(for)-239(an)-240(index)-239(that)-240(is)-239(strictly)-240(owned)-239(by)]TJ -130.986 -11.955 Td [(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ + 0.997 0 0 1 175.303 366.368 Tm [(This)-252(r)18(outine)-251(r)18(eturns)-252(a)]TJ/F131 9.9626 Tf 1 0 0 1 272.707 366.368 Tm [(.true.)]TJ/F84 9.9626 Tf 0.997 0 0 1 306.589 366.368 Tm [(value)-252(for)-251(an)-252(index)-252(that)-251(is)-252(strictly)-251(owned)-252(by)]TJ 1 0 0 1 175.611 354.413 Tm [(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ 0 g 0 G 139.477 -263.975 Td [(100)]TJ 0 g 0 G @@ -20590,91 +20606,91 @@ ET endstream endobj -1659 0 obj +1670 0 obj << -/Length 4795 +/Length 5089 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.20)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.20)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(owned)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(owned)]TJ ET q 1 0 0 1 194.903 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 198.489 706.129 Td [(index)-250(\227)]TJ +/F75 11.9552 Tf 198.489 706.129 Td [(index)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -98.594 -18.964 Td [(call)-525(psb_owned_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -98.594 -18.964 Td [(call)-525(psb_owned_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 120.408 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 545.696 Td [(a)]TJ +/F75 9.9626 Tf 123.397 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 497.875 Td [(desc)]TJ ET q 1 0 0 1 333.945 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 497.875 Td [(type)]TJ +/F131 9.9626 Tf 337.084 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 442.084 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 442.084 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 442.084 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 442.084 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 442.084 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 442.084 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 442.084 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 420.166 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(A)-200(logical)-200(mask)-200(which)-201(is)-200(tr)8(ue)-200(for)-200(all)-200(corr)18(esponding)-200(entries)-200(of)]TJ/F60 9.9626 Tf 260.812 0 Td [(x)]TJ/F62 9.9626 Tf 7.2 0 Td [(that)-200(ar)18(e)-200(owned)]TJ -253.626 -11.955 Td [(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F59 9.9626 Tf 131.027 0 Td [(local)]TJ/F62 9.9626 Tf -131.027 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 110.027 400.241 Tm [(A)-251(logical)-251(mask)-251(which)-251(is)-251(tr)8(ue)-251(for)-251(all)-251(corr)18(esponding)-251(entrie)1(s)-252(of)]TJ/F78 9.9626 Tf 1 0 0 1 371.086 400.241 Tm [(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 378.742 400.241 Tm [(that)-251(ar)18(e)-251(owned)]TJ 1 0 0 1 124.802 388.286 Tm [(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F75 9.9626 Tf 131.027 0 Td [(local)]TJ/F84 9.9626 Tf -131.336 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-429(r)18(outine)-428(r)18(eturns)-429(a)]TJ/F67 9.9626 Tf 117.209 0 Td [(.true.)]TJ/F62 9.9626 Tf 35.654 0 Td [(value)-429(for)-428(those)-429(indices)-429(that)-429(ar)18(e)-428(strictly)]TJ -140.41 -11.955 Td [(owned)-250(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ + 1.02 0 0 1 124.493 242.831 Tm [(This)-383(r)17(outine)-383(r)17(eturns)-383(a)]TJ/F131 9.9626 Tf 1 0 0 1 229.511 242.831 Tm [(.true.)]TJ/F84 9.9626 Tf 1.02 0 0 1 264.79 242.831 Tm [(value)-383(for)-384(those)-383(indices)-384(that)-383(ar)17(e)-383(strictly)]TJ 1 0 0 1 124.802 230.876 Tm [(owned)-250(by)-250(the)-250(curr)18(ent)-250(pr)18(ocess,)-250(excluding)-250(the)-250(halo)-250(indices)]TJ 0 g 0 G 139.477 -140.438 Td [(101)]TJ 0 g 0 G @@ -20682,175 +20698,175 @@ ET endstream endobj -1665 0 obj +1676 0 obj << -/Length 3147 +/Length 3283 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.21)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.21)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(is)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(is)]TJ ET q 1 0 0 1 217.809 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 221.396 706.129 Td [(local)-250(\227)]TJ +/F75 11.9552 Tf 221.396 706.129 Td [(local)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_local\050x,)-525(desc_a\051)]TJ +/F131 9.9626 Tf -70.691 -18.964 Td [(call)-525(psb_is_local\050x,)-525(desc_a\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(index.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 171.218 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 174.207 545.696 Td [(a)]TJ +/F75 9.9626 Tf 174.207 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 497.875 Td [(desc)]TJ ET q 1 0 0 1 384.755 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 497.875 Td [(type)]TJ +/F131 9.9626 Tf 387.893 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(A)-244(logical)-244(mask)-243(which)-244(is)-244(tr)8(ue)-244(if)]TJ/F60 9.9626 Tf 136.118 0 Td [(x)]TJ/F62 9.9626 Tf 7.635 0 Td [(is)-244(local)-244(to)-243(the)-244(curr)18(ent)-244(pr)18(ocess)]TJ -191.623 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ +/F84 9.9626 Tf 0.998 0 0 1 223.093 456.032 Tm [(A)-251(logical)-251(mask)-251(which)-251(is)-251(t)1(r)8(ue)-251(if)]TJ/F78 9.9626 Tf 1 0 0 1 359.436 456.032 Tm [(x)]TJ/F84 9.9626 Tf 0.998 0 0 1 367.136 456.032 Tm [(is)-251(local)-251(to)-251(the)-251(curr)18(ent)-250(pr)18(ocess)]TJ 1 0 0 1 175.611 444.077 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-199(r)18(outine)-200(r)18(eturns)-199(a)]TJ/F67 9.9626 Tf 108.069 0 Td [(.true.)]TJ/F62 9.9626 Tf 33.369 0 Td [(value)-199(for)-200(an)-199(index)-199(that)-200(is)-199(local)-200(to)-199(the)-199(curr)18(ent)]TJ -128.984 -11.955 Td [(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices)]TJ + 0.98 0 0 1 175.303 366.368 Tm [(This)-244(r)19(outine)-244(r)18(eturns)-243(a)]TJ/F131 9.9626 Tf 1 0 0 1 270.733 366.368 Tm [(.true.)]TJ/F84 9.9626 Tf 0.98 0 0 1 304.495 366.368 Tm [(value)-244(for)-243(an)-244(index)-244(that)-244(is)-244(local)-243(to)-244(the)-244(curr)19(ent)]TJ 1 0 0 1 175.313 354.413 Tm [(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices)]TJ 0 g 0 G - 139.476 -263.975 Td [(102)]TJ + 139.775 -263.975 Td [(102)]TJ 0 g 0 G ET endstream endobj -1671 0 obj +1682 0 obj << -/Length 4785 +/Length 5077 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.22)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.22)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(local)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(local)]TJ ET q 1 0 0 1 183.605 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 187.192 706.129 Td [(index)-250(\227)]TJ +/F75 11.9552 Tf 187.192 706.129 Td [(index)-250(\227)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -87.297 -18.964 Td [(call)-525(psb_local_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ +/F131 9.9626 Tf -87.297 -18.964 Td [(call)-525(psb_local_index\050y,)-525(x,)-525(desc_a,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F62 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ +/F84 9.9626 Tf 9.963 0 Td [(Integer)-250(indices.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in,)-250(inout)]TJ/F84 9.9626 Tf 38.735 0 Td [(.)]TJ -70.535 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(a)-250(rank)-250(one)-250(integer)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(desc)]TJ ET q 1 0 0 1 120.408 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 123.397 545.696 Td [(a)]TJ +/F75 9.9626 Tf 123.397 545.696 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 497.875 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 497.875 Td [(desc)]TJ ET q 1 0 0 1 333.945 498.074 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 497.875 Td [(type)]TJ +/F131 9.9626 Tf 337.084 497.875 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ +/F75 9.9626 Tf -258.11 -19.925 Td [(iact)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F59 9.9626 Tf 253.796 0 Td [(global)]TJ/F62 9.9626 Tf -249.91 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-190(as:)-280(a)-190(character)-190(variable)]TJ/F67 9.9626 Tf 143.341 0 Td [(I)]TJ/F62 9.9626 Tf 5.23 0 Td [(gnor)18(e,)]TJ/F67 9.9626 Tf 29.808 0 Td [(W)]TJ/F62 9.9626 Tf 5.231 0 Td [(arning)-190(or)]TJ/F67 9.9626 Tf 42.111 0 Td [(A)]TJ/F62 9.9626 Tf 5.231 0 Td [(bort,)-202(default)]TJ/F67 9.9626 Tf 55.839 0 Td [(I)]TJ/F62 9.9626 Tf 5.231 0 Td [(gnor)18(e.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(speci\002es)-250(action)-250(to)-250(be)-250(taken)-250(in)-250(case)-250(of)-250(range)-250(err)18(ors.)-310(Scope:)]TJ/F75 9.9626 Tf 253.796 0 Td [(global)]TJ/F84 9.9626 Tf -250.219 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 442.084 Tm [(Speci\002ed)-254(as:)-316(a)-254(character)-254(variable)]TJ/F131 9.9626 Tf 1 0 0 1 268.572 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 273.802 442.084 Tm [(gnor)18(e,)]TJ/F131 9.9626 Tf 1 0 0 1 303.613 442.084 Tm [(W)]TJ/F84 9.9626 Tf 0.983 0 0 1 308.843 442.084 Tm [(arning)-254(or)]TJ/F131 9.9626 Tf 1 0 0 1 351.499 442.084 Tm [(A)]TJ/F84 9.9626 Tf 0.983 0 0 1 356.729 442.084 Tm [(bort,)-254(default)]TJ/F131 9.9626 Tf 1 0 0 1 412.762 442.084 Tm [(I)]TJ/F84 9.9626 Tf 0.983 0 0 1 417.992 442.084 Tm [(gnor)18(e.)]TJ 0 g 0 G -/F59 9.9626 Tf -316.929 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 420.166 Tm [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(y)]TJ 0 g 0 G -/F62 9.9626 Tf 10.521 0 Td [(A)-270(logical)-270(mask)-270(which)-271(is)-270(tr)8(ue)-270(for)-270(all)-270(corr)18(esponding)-270(entries)-270(of)]TJ/F60 9.9626 Tf 268.484 0 Td [(x)]TJ/F62 9.9626 Tf 7.897 0 Td [(that)-270(ar)18(e)-270(local)]TJ -261.995 -11.955 Td [(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F59 9.9626 Tf 128.666 0 Td [(local)]TJ/F62 9.9626 Tf -128.666 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ +/F84 9.9626 Tf 1.011 0 0 1 110.027 400.241 Tm [(A)-247(logical)-248(mask)-247(which)-247(is)-248(tr)8(ue)-247(for)-247(all)-248(corr)18(esponding)-247(entries)-247(of)]TJ/F78 9.9626 Tf 1 0 0 1 378.933 400.241 Tm [(x)]TJ/F84 9.9626 Tf 1.011 0 0 1 386.63 400.241 Tm [(that)-247(ar)17(e)-247(local)]TJ 1 0 0 1 124.802 388.286 Tm [(to)-250(the)-250(curr)18(ent)-250(pr)18(ocess)-250(Scope:)]TJ/F75 9.9626 Tf 128.666 0 Td [(local)]TJ/F84 9.9626 Tf -128.975 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(scalar)-250(or)-250(rank)-250(one)-250(logical)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.917 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ 0 g 0 G - [-500(This)-264(r)18(outine)-265(r)18(eturns)-264(a)]TJ/F67 9.9626 Tf 110.663 0 Td [(.true.)]TJ/F62 9.9626 Tf 34.017 0 Td [(value)-264(for)-265(those)-264(indices)-265(that)-264(ar)18(e)-265(local)-264(to)-265(the)]TJ -132.227 -11.955 Td [(curr)18(ent)-250(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices.)]TJ + 1.009 0 0 1 124.493 242.831 Tm [(This)-247(r)18(outine)-247(r)18(eturns)-247(a)]TJ/F131 9.9626 Tf 1 0 0 1 222.888 242.831 Tm [(.true.)]TJ/F84 9.9626 Tf 1.009 0 0 1 256.753 242.831 Tm [(value)-247(for)-247(those)-247(indices)-247(that)-247(ar)18(e)-247(local)-247(to)-247(the)]TJ 1 0 0 1 124.802 230.876 Tm [(curr)18(ent)-250(pr)18(ocess,)-250(including)-250(the)-250(halo)-250(indices.)]TJ 0 g 0 G 139.477 -140.438 Td [(103)]TJ 0 g 0 G @@ -20858,161 +20874,161 @@ ET endstream endobj -1678 0 obj +1689 0 obj << -/Length 3647 +/Length 3772 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.23)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.23)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(get)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(get)]TJ ET q 1 0 0 1 225.126 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 228.712 706.129 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ +/F75 11.9552 Tf 228.712 706.129 Td [(boundary)-250(\227)-250(Extract)-250(list)-250(of)-250(boundary)-250(elements)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -78.007 -18.964 Td [(call)-525(psb_get_boundary\050bndel,)-525(desc,)-525(info\051)]TJ +/F131 9.9626 Tf -78.007 -18.964 Td [(call)-525(psb_get_boundary\050bndel,)-525(desc,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.896 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 363.206 577.576 Td [(desc)]TJ ET q 1 0 0 1 384.755 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 577.576 Td [(type)]TJ +/F131 9.9626 Tf 387.893 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(bndel)]TJ 0 g 0 G -/F62 9.9626 Tf 31.541 0 Td [(The)-307(list)-307(of)-307(boundary)-307(elements)-307(on)-306(the)-307(calling)-307(pr)18(ocess,)-321(in)-307(local)-307(number)18(-)]TJ -6.635 -11.955 Td [(ing.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Speci\002ed)-234(as:)-302(a)-234(rank)-234(one)-234(a)-1(r)1(ray)-235(with)-234(the)-234(ALLOCA)74(T)74(ABLE)-234(attribute,)-237(of)-234(type)]TJ 0 -11.955 Td [(integer)74(.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 181.938 535.733 Tm [(The)-245(list)-245(of)-245(boundary)-245(elements)-245(on)-245(the)-245(calling)-245(pr)18(ocess,)-247(in)-245(local)-245(numbering.)]TJ 1 0 0 1 175.611 523.778 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.994 0 0 1 175.611 487.912 Tm [(Speci\002ed)-253(as:)-314(a)-252(rank)-253(one)-252(array)-253(with)-253(the)-252(ALLOCA)74(T)75(ABLE)-253(attribute,)-253(of)-252(type)]TJ 1 0 0 1 175.611 475.957 Tm [(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(info)]TJ +/F75 9.9626 Tf -24.906 -31.88 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(If)-219(ther)18(e)-220(ar)18(e)-219(no)-220(boundary)-219(elements)-219(\050i.e.,)-226(if)-219(the)-220(local)-219(part)-219(of)-220(the)-219(connectivity)]TJ 12.453 -11.956 Td [(graph)-391(is)-392(self-contained\051)-391(the)-392(output)-391(vector)-391(is)-392(set)-391(to)-391(the)-392(\223not)-391(allocated\224)]TJ 0 -11.955 Td [(state.)]TJ + 0.988 0 0 1 175.611 354.413 Tm [(If)-253(ther)18(e)-252(ar)18(e)-253(no)-253(boundary)-253(elements)-253(\050i.e.,)-252(if)-253(the)-253(local)-253(part)-253(of)-253(the)-252(connectivity)]TJ 0.98 0 0 1 175.611 342.458 Tm [(graph)-236(is)-236(self-contained\051)-236(the)-236(output)-236(vector)-236(is)-236(set)-236(to)-236(the)-236(\223not)-236(allocated\224)-236(state.)]TJ 0 g 0 G - -12.453 -19.925 Td [(2.)]TJ + 1 0 0 1 163.158 322.532 Tm [(2.)]TJ 0 g 0 G - [-500(Otherwise)-206(the)-205(size)-206(of)]TJ/F67 9.9626 Tf 105.891 0 Td [(bndel)]TJ/F62 9.9626 Tf 28.201 0 Td [(will)-206(be)-205(exactly)-206(equal)-206(to)-206(the)-205(number)-206(of)-206(bound-)]TJ -121.639 -11.955 Td [(ary)-250(elements.)]TJ + 0.985 0 0 1 175.611 322.532 Tm [(Otherwise)-253(the)-253(size)-253(of)]TJ/F131 9.9626 Tf 1 0 0 1 269.507 322.532 Tm [(bndel)]TJ/F84 9.9626 Tf 0.985 0 0 1 298.142 322.532 Tm [(will)-253(be)-253(exactly)-253(equal)-253(to)-253(the)-253(number)-254(of)-253(bound-)]TJ 1 0 0 1 175.611 310.577 Tm [(ary)-250(elements.)]TJ 0 g 0 G - 139.477 -196.229 Td [(104)]TJ + 139.477 -220.139 Td [(104)]TJ 0 g 0 G ET endstream endobj -1685 0 obj +1696 0 obj << -/Length 3458 +/Length 3587 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.24)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(6.24)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(get)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(get)]TJ ET q 1 0 0 1 174.316 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 177.903 706.129 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ +/F75 11.9552 Tf 177.903 706.129 Td [(overlap)-250(\227)-250(Extract)-250(list)-250(of)-250(overlap)-250(elements)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -78.008 -18.964 Td [(call)-525(psb_get_overlap\050ovrel,)-525(desc,)-525(info\051)]TJ +/F131 9.9626 Tf -78.008 -18.964 Td [(call)-525(psb_get_overlap\050ovrel,)-525(desc,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(desc)]TJ 0 g 0 G -/F62 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 24.897 0 Td [(the)-250(communication)-250(descriptor)74(.)]TJ 0.01 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 577.576 Td [(desc)]TJ +/F131 9.9626 Tf 312.397 577.576 Td [(desc)]TJ ET q 1 0 0 1 333.945 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 337.084 577.576 Td [(type)]TJ +/F131 9.9626 Tf 337.084 577.576 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -258.11 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(ovrel)]TJ 0 g 0 G -/F62 9.9626 Tf 28.234 0 Td [(The)-250(list)-250(of)-250(overlap)-250(elements)-250(on)-250(the)-250(calling)-250(pr)18(ocess,)-250(in)-250(local)-250(numbering.)]TJ -3.327 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-234(as:)-302(a)-234(rank)-234(one)-234(array)-235(with)-234(the)-234(ALLOCA)74(T)74(ABLE)-234(attribute,)-237(of)-234(type)]TJ 0 -11.955 Td [(integer)74(.)]TJ +/F84 9.9626 Tf 27.925 0 Td [(The)-250(list)-250(of)-250(overlap)-250(elements)-250(on)-250(the)-250(calling)-250(pr)18(ocess,)-250(in)-250(local)-250(numbering.)]TJ -3.018 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ 0.994 0 0 1 124.802 487.912 Tm [(Speci\002ed)-253(as:)-314(a)-252(rank)-253(one)-252(array)-253(with)-253(the)-252(ALLOCA)74(T)75(ABLE)-253(attribute,)-253(of)-252(type)]TJ 1 0 0 1 124.802 475.957 Tm [(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -31.88 Td [(info)]TJ +/F75 9.9626 Tf -24.907 -31.88 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(If)-287(ther)18(e)-287(ar)18(e)-287(no)-287(overlap)-287(elements)-287(the)-287(output)-287(vector)-287(is)-287(set)-287(to)-287(the)-287(\223not)-287(allo-)]TJ 12.453 -11.955 Td [(cated\224)-250(state.)]TJ + 1.02 0 0 1 124.802 354.413 Tm [(If)-254(ther)18(e)-254(ar)18(e)-254(no)-254(overlap)-254(elements)-253(the)-254(output)-254(vector)-254(is)-253(set)-254(to)-254(the)-254(\223not)-253(allo-)]TJ 1 0 0 1 124.802 342.458 Tm [(cated\224)-250(state.)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(Otherwise)-194(the)-194(size)-195(of)]TJ/F67 9.9626 Tf 105.434 0 Td [(ovrel)]TJ/F62 9.9626 Tf 28.087 0 Td [(will)-194(be)-194(exactly)-195(equal)-194(to)-194(the)-194(number)-195(of)-194(overlap)]TJ -121.068 -11.955 Td [(elements.)]TJ + 0.98 0 0 1 124.802 322.532 Tm [(Otherwise)-243(the)-242(size)-243(of)]TJ/F131 9.9626 Tf 1 0 0 1 217.816 322.532 Tm [(ovrel)]TJ/F84 9.9626 Tf 0.98 0 0 1 246.338 322.532 Tm [(will)-243(be)-242(exactly)-243(equal)-243(to)-242(the)-243(number)-243(of)-243(overlap)]TJ 1 0 0 1 124.802 310.577 Tm [(elements.)]TJ 0 g 0 G 139.477 -220.139 Td [(105)]TJ 0 g 0 G @@ -21020,127 +21036,127 @@ ET endstream endobj -1692 0 obj +1703 0 obj << -/Length 5480 +/Length 5568 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.25)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.25)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(sp)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(sp)]TJ ET q 1 0 0 1 221.133 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 224.719 706.129 Td [(getrow)-250(\227)-250(Extract)-250(row\050s\051)-250(from)-250(a)-250(sparse)-250(matrix)]TJ +/F75 11.9552 Tf 224.719 706.129 Td [(getrow)-250(\227)-250(Extract)-250(row\050s\051)-250(from)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -74.014 -19.204 Td [(call)-525(psb_sp_getrow\050row,)-525(a,)-525(nz,)-525(ia,)-525(ja,)-525(val,)-525(info,)-525(&)]TJ 73.225 -11.955 Td [(&)-525(append,)-525(nzin,)-525(lrw\051)]TJ +/F131 9.9626 Tf -74.014 -19.204 Td [(call)-525(psb_sp_getrow\050row,)-525(a,)-525(nz,)-525(ia,)-525(ja,)-525(val,)-525(info,)-525(&)]TJ 73.225 -11.955 Td [(&)-525(append,)-525(nzin,)-525(lrw\051)]TJ 0 g 0 G -/F59 9.9626 Tf -73.225 -22.29 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -73.225 -22.29 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.42 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -20.42 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.421 Td [(row)]TJ 0 g 0 G -/F62 9.9626 Tf 22.695 0 Td [(The)-250(\050\002rst\051)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 2.212 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf -23.999 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F69 10.3811 Tf 104.322 0 Td [(>)]TJ/F62 9.9626 Tf 10.962 0 Td [(0.)]TJ +/F84 9.9626 Tf 22.386 0 Td [(The)-250(\050\002rst\051)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 2.521 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.69 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F134 10.3811 Tf 104.322 0 Td [(>)]TJ/F84 9.9626 Tf 10.962 0 Td [(0.)]TJ 0 g 0 G -/F59 9.9626 Tf -140.191 -20.42 Td [(a)]TJ +/F75 9.9626 Tf -140.191 -20.42 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(fr)18(om)-250(which)-250(to)-250(get)-250(r)18(ows.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf -28.343 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf -23.999 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(matrix)-250(fr)18(om)-250(which)-250(to)-250(get)-250(r)18(ows.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf -23.69 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.137 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 495.976 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 495.777 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 495.777 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 495.976 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 495.777 Td [(type)]TJ +/F131 9.9626 Tf 398.354 495.777 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -20.421 Td [(append)]TJ +/F75 9.9626 Tf -268.57 -20.421 Td [(append)]TJ 0 g 0 G -/F62 9.9626 Tf 39.292 0 Td [(Whether)-250(to)-250(append)-250(or)-250(overwrite)-250(existing)-250(output.)]TJ -14.386 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value)-250(default:)-310(false)-250(\050overwrite\051.)]TJ +/F84 9.9626 Tf 38.794 0 Td [(Whether)-250(to)-250(append)-250(or)-250(overwrite)-250(existing)-250(output.)]TJ -13.888 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(value)-250(default:)-310(false)-250(\050overwrite\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(nzin)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(nzin)]TJ 0 g 0 G -/F62 9.9626 Tf 25.454 0 Td [(Input)-250(size)-250(to)-250(be)-250(appended)-250(to.)]TJ -0.548 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf -24 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-304(as:)-417(an)-303(integer)]TJ/F69 10.3811 Tf 106.988 0 Td [(>)]TJ/F62 9.9626 Tf 11.949 0 Td [(0.)-471(When)-303(append)-303(is)-304(tr)8(ue,)-317(speci\002es)-303(how)-304(many)]TJ -118.937 -11.955 Td [(entries)-250(in)-250(the)-250(output)-250(vectors)-250(ar)18(e)-250(alr)18(eady)-250(\002lled.)]TJ +/F84 9.9626 Tf 25.454 0 Td [(Input)-250(size)-250(to)-250(be)-250(appended)-250(to.)]TJ -0.548 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf -23.691 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 359.294 Tm [(Speci\002ed)-267(as:)-347(an)-267(integer)]TJ/F134 10.3811 Tf 1 0 0 1 282.912 359.294 Tm [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 294.283 359.294 Tm [(0.)-369(When)-267(append)-267(is)-267(tr)8(ue,)-272(speci\002es)-267(how)-267(many)]TJ 1 0 0 1 175.611 347.339 Tm [(entries)-250(in)-250(the)-250(output)-250(vectors)-250(ar)18(e)-250(alr)18(eady)-250(\002lled.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(lrw)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(lrw)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(last)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 4.433 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf -28.344 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf -24 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F69 10.3811 Tf 104.323 0 Td [(>)]TJ/F62 9.9626 Tf 10.962 0 Td [(0,)-250(default:)]TJ/F60 9.9626 Tf 46.878 0 Td [(r)-17(o)-35(w)]TJ/F62 9.9626 Tf 16.134 0 Td [(.)]TJ +/F84 9.9626 Tf 20.164 0 Td [(The)-250(last)-250(r)18(ow)-250(to)-250(be)-250(extracted.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf -28.652 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf -23.691 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)]TJ/F134 10.3811 Tf 104.323 0 Td [(>)]TJ/F84 9.9626 Tf 10.962 0 Td [(0,)-250(default:)]TJ/F78 9.9626 Tf 46.878 0 Td [(r)-17(o)-35(w)]TJ/F84 9.9626 Tf 16.134 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -203.203 -22.29 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -203.203 -22.29 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.42 Td [(nz)]TJ 0 g 0 G -/F62 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(elements)-250(r)18(eturned)-250(by)-250(this)-250(call.)]TJ 8.856 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ +/F84 9.9626 Tf 16.05 0 Td [(the)-250(number)-250(of)-250(elements)-250(r)18(eturned)-250(by)-250(this)-250(call.)]TJ 8.856 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(scalar)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -20.421 Td [(ia)]TJ +/F75 9.9626 Tf -24.906 -20.421 Td [(ia)]TJ 0 g 0 G -/F62 9.9626 Tf 13.28 0 Td [(the)-250(r)18(ow)-250(indices.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.344 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.923 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.293 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F67 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F62 9.9626 Tf 60.025 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 13.28 0 Td [(the)-250(r)18(ow)-250(indices.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.344 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F131 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F84 9.9626 Tf 60.025 0 Td [(attribute.)]TJ 0 g 0 G - -89.662 -29.887 Td [(106)]TJ + -89.662 -29.888 Td [(106)]TJ 0 g 0 G ET endstream endobj -1696 0 obj +1707 0 obj << -/Length 3529 +/Length 3776 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(ja)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(ja)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F67 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F62 9.9626 Tf 60.024 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 13.281 0 Td [(the)-250(column)-250(indices)-250(of)-250(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 11.626 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(with)-250(the)]TJ/F131 9.9626 Tf 169.114 0 Td [(ALLOCATABLE)]TJ/F84 9.9626 Tf 60.024 0 Td [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.045 -19.925 Td [(val)]TJ +/F75 9.9626 Tf -254.045 -19.925 Td [(val)]TJ 0 g 0 G -/F62 9.9626 Tf 18.82 0 Td [(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -49.922 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(array)-250(with)-250(the)]TJ/F67 9.9626 Tf 148.761 0 Td [(ALLOCATABLE)]TJ/F62 9.9626 Tf 60.024 0 Td [(attribute.)]TJ +/F84 9.9626 Tf 18.82 0 Td [(the)-250(elements)-250(to)-250(be)-250(inserted.)]TJ 6.087 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -50.231 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(array)-250(with)-250(the)]TJ/F131 9.9626 Tf 148.761 0 Td [(ALLOCATABLE)]TJ/F84 9.9626 Tf 60.024 0 Td [(attribute.)]TJ 0 g 0 G -/F59 9.9626 Tf -233.692 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -233.692 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)-307(output)]TJ/F60 9.9626 Tf 65.308 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 13.394 0 Td [(is)-307(always)-307(the)-307(size)-307(of)-307(the)-307(output)-307(generated)-307(by)-306(the)-307(curr)18(ent)]TJ -66.249 -11.955 Td [(call;)-283(thus,)-277(if)]TJ/F67 9.9626 Tf 53.971 0 Td [(append=.true.)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)-278(the)-271(total)-272(output)-272(size)-272(will)-272(be)]TJ/F60 9.9626 Tf 129.372 0 Td [(n)-25(z)-18(i)-32(n)]TJ/F93 10.3811 Tf 21.286 0 Td [(+)]TJ/F60 9.9626 Tf 10.336 0 Td [(n)-25(z)]TJ/F62 9.9626 Tf 10.337 0 Td [(,)-277(with)]TJ -293.296 -11.955 Td [(the)-292(newly)-293(extracted)-292(coef)18(\002cients)-293(stor)18(ed)-292(in)-293(entries)]TJ/F67 9.9626 Tf 217.177 0 Td [(nzin+1:nzin+nz)]TJ/F62 9.9626 Tf 76.139 0 Td [(of)-292(the)]TJ -293.316 -11.955 Td [(array)-250(ar)18(guments;)]TJ + 1.02 0 0 1 124.493 480.973 Tm [(The)-263(output)]TJ/F78 9.9626 Tf 1 0 0 1 177.501 480.973 Tm [(n)-25(z)]TJ/F84 9.9626 Tf 1.02 0 0 1 190.506 480.973 Tm [(is)-263(always)-262(the)-263(size)-262(of)-263(the)-262(output)-263(generated)-262(by)-263(the)-263(curr)18(ent)]TJ 1.016 0 0 1 124.802 469.018 Tm [(call;)-246(thus,)-246(if)]TJ/F131 9.9626 Tf 1 0 0 1 178.68 469.018 Tm [(append=.true.)]TJ/F84 9.9626 Tf 1.016 0 0 1 246.674 469.018 Tm [(,)-246(the)-246(total)-246(output)-246(size)-246(will)-246(be)]TJ/F78 9.9626 Tf 1 0 0 1 376.214 469.018 Tm [(n)-25(z)-18(i)-32(n)]TJ/F181 10.3811 Tf 21.203 0 Td [(+)]TJ/F78 9.9626 Tf 10.255 0 Td [(n)-25(z)]TJ/F84 9.9626 Tf 1.016 0 0 1 418.008 469.018 Tm [(,)-246(with)]TJ 1.017 0 0 1 124.802 457.063 Tm [(the)-247(newly)-246(extracted)-247(coef)18(\002cients)-247(stor)18(ed)-246(in)-247(entries)]TJ/F131 9.9626 Tf 1 0 0 1 342.424 457.063 Tm [(nzin+1:nzin+nz)]TJ/F84 9.9626 Tf 1.017 0 0 1 418.148 457.063 Tm [(of)-247(the)]TJ 1 0 0 1 124.802 445.108 Tm [(array)-250(ar)18(guments;)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(When)]TJ/F67 9.9626 Tf 41.275 0 Td [(append=.true.)]TJ/F62 9.9626 Tf 70.485 0 Td [(the)-250(output)-250(arrays)-250(ar)18(e)-250(r)18(eallocated)-250(as)-250(necessary;)]TJ + [-450(When)]TJ/F131 9.9626 Tf 40.777 0 Td [(append=.true.)]TJ/F84 9.9626 Tf 70.485 0 Td [(the)-250(output)-250(arrays)-250(ar)18(e)-250(r)18(eallocated)-250(as)-250(necessary;)]TJ 0 g 0 G - -111.76 -19.925 Td [(3.)]TJ + -111.262 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-218(r)18(ow)-218(and)-219(column)-218(indices)-218(ar)18(e)-218(r)18(eturned)-218(in)-219(the)-218(local)-218(numbering)-218(scheme;)]TJ 12.453 -11.955 Td [(if)-190(the)-190(global)-190(numbering)-190(is)-190(desir)18(ed,)-202(the)-190(user)-190(may)-190(employ)-190(the)]TJ/F67 9.9626 Tf 258.836 0 Td [(psb_loc_to_glob)]TJ/F62 9.9626 Tf -258.836 -11.955 Td [(r)18(outine)-250(on)-250(the)-250(output.)]TJ + 0.98 0 0 1 124.493 405.257 Tm [(The)-204(r)19(ow)-204(and)-204(column)-204(indices)-203(ar)18(e)-204(r)19(eturned)-204(in)-204(the)-204(local)-203(numbering)-204(scheme;)-221(if)]TJ 0.98 0 0 1 124.802 393.302 Tm [(the)-194(global)-194(numbering)-194(is)-193(desir)18(ed,)-206(the)-194(user)-194(may)-194(employ)-194(the)]TJ/F131 9.9626 Tf 1 0 0 1 370.892 393.302 Tm [(psb_loc_to_glob)]TJ/F84 9.9626 Tf -246.09 -11.955 Td [(r)18(outine)-250(on)-250(the)-250(output.)]TJ 0 g 0 G 139.477 -290.909 Td [(107)]TJ 0 g 0 G @@ -21148,147 +21164,68 @@ ET endstream endobj -1706 0 obj +1606 0 obj << -/Length 3995 +/Type /ObjStm +/N 100 +/First 972 +/Length 10259 >> stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(6.26)-1000(psb)]TJ -ET -q -1 0 0 1 204.216 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 207.803 706.129 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(memory)-250(occupation)-250(of)-250(a)-250(PSBLAS)-250(object.)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf 0 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(A)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 72.97 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(.)]TJ -65.344 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 531.947 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 531.748 Td [(Tspmat)]TJ -ET -q -1 0 0 1 395.216 531.947 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 398.354 531.748 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ -ET -q -1 0 0 1 171.218 512.022 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F59 9.9626 Tf 174.207 511.823 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(Communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 360.068 464.201 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 363.206 464.002 Td [(desc)]TJ -ET -q -1 0 0 1 384.755 464.201 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 387.893 464.002 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -19.925 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -30.874 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ -ET -q -1 0 0 1 388.441 408.41 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 391.579 408.211 Td [(prec)]TJ -ET -q -1 0 0 1 413.128 408.41 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 416.266 408.211 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(Function)-250(value)]TJ -0 g 0 G -/F62 9.9626 Tf 72.776 0 Td [(The)-322(memory)-322(occupation)-322(of)-323(the)-322(object)-322(speci\002ed)-322(in)-322(the)-322(calling)]TJ -47.87 -11.956 Td [(sequence,)-250(in)-250(bytes.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(Returned)-250(as:)-310(an)]TJ/F67 9.9626 Tf 71.82 0 Td [(integer\050psb_long_int_k_\051)]TJ/F62 9.9626 Tf 128.019 0 Td [(number)74(.)]TJ -0 g 0 G - -60.362 -242.057 Td [(108)]TJ -0 g 0 G -ET - -endstream -endobj -1607 0 obj +1605 0 356 59 1602 117 1608 225 1610 343 1611 401 1607 458 1616 553 1613 701 1614 847 +1618 991 360 1050 1615 1108 1620 1230 1622 1348 1623 1406 1624 1464 1619 1522 1629 1603 1625 1760 +1626 1901 1627 2044 1631 2186 364 2245 1632 2303 1633 2362 1628 2421 1637 2529 1634 2677 1635 2820 +1639 2967 368 3025 1636 3082 1641 3177 1643 3295 372 3354 1640 3412 1646 3520 1644 3659 1648 3806 +376 3864 1645 3921 1651 4029 1653 4147 1654 4206 1655 4265 1650 4324 1658 4406 1656 4545 1660 4692 +380 4750 1657 4807 1663 4915 1661 5054 1665 5201 384 5260 1666 5318 1662 5377 1669 5485 1667 5624 +1671 5771 388 5829 1672 5886 1668 5944 1675 6052 1673 6191 1677 6338 392 6397 1678 6455 1674 6514 +1681 6622 1679 6761 1683 6908 396 6966 1684 7023 1680 7081 1688 7189 1686 7328 1690 7473 400 7532 +1691 7590 1692 7649 1687 7708 1695 7803 1693 7942 1697 8087 405 8145 1698 8202 1699 8260 1694 8318 +1702 8413 1700 8552 1704 8697 409 8756 1701 8814 1706 8937 1708 9055 1709 9113 1710 9171 1711 9229 +% 1605 0 obj << -/Type /ObjStm -/N 100 -/First 973 -/Length 10526 ->> -stream -1604 0 1601 148 1602 294 1606 438 360 497 1603 555 1609 675 1611 793 1612 851 1613 909 -1608 967 1618 1048 1614 1205 1615 1346 1616 1489 1620 1633 364 1692 1621 1750 1622 1809 1617 1868 -1626 1975 1623 2123 1624 2266 1628 2413 368 2471 1625 2528 1630 2622 1632 2740 372 2799 1629 2857 -1635 2964 1633 3103 1637 3250 376 3308 1634 3365 1640 3472 1642 3590 1643 3649 1644 3708 1639 3767 -1647 3848 1645 3987 1649 4134 380 4192 1646 4249 1652 4356 1650 4495 1654 4642 384 4701 1655 4759 -1651 4818 1658 4925 1656 5064 1660 5211 388 5269 1661 5326 1657 5384 1664 5491 1662 5630 1666 5777 -392 5836 1667 5894 1663 5953 1670 6060 1668 6199 1672 6346 396 6404 1673 6461 1669 6519 1677 6626 -1675 6765 1679 6910 400 6969 1680 7027 1681 7086 1676 7145 1684 7239 1682 7378 1686 7523 405 7581 -1687 7638 1688 7696 1683 7754 1691 7848 1689 7987 1693 8132 409 8191 1690 8249 1695 8370 1697 8488 -1698 8546 1699 8604 1700 8662 1694 8720 1705 8840 1701 8997 1702 9142 1703 9289 1707 9436 413 9495 -% 1604 0 obj +/D [1603 0 R /XYZ 149.705 753.953 null] +>> +% 356 0 obj +<< +/D [1603 0 R /XYZ 150.705 716.092 null] +>> +% 1602 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1608 0 obj << /Type /Page -/Contents 1605 0 R -/Resources 1603 0 R +/Contents 1609 0 R +/Resources 1607 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R -/Annots [ 1601 0 R 1602 0 R ] +/Parent 1612 0 R >> -% 1601 0 obj +% 1610 0 obj +<< +/D [1608 0 R /XYZ 98.895 753.953 null] +>> +% 1611 0 obj +<< +/D [1608 0 R /XYZ 99.895 632.19 null] +>> +% 1607 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1616 0 obj +<< +/Type /Page +/Contents 1617 0 R +/Resources 1615 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1612 0 R +/Annots [ 1613 0 R 1614 0 R ] +>> +% 1613 0 obj << /Type /Annot /Subtype /Link @@ -21296,62 +21233,62 @@ stream /Rect [342.753 362.621 409.811 374.68] /A << /S /GoTo /D (descdata) >> >> -% 1602 0 obj +% 1614 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [417.183 207.637 493.237 219.697] +/Rect [418.163 207.637 494.217 219.697] /A << /S /GoTo /D (vdata) >> >> -% 1606 0 obj +% 1618 0 obj << -/D [1604 0 R /XYZ 149.705 753.953 null] +/D [1616 0 R /XYZ 149.705 753.953 null] >> % 360 0 obj << -/D [1604 0 R /XYZ 150.705 716.092 null] +/D [1616 0 R /XYZ 150.705 716.092 null] >> -% 1603 0 obj +% 1615 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1609 0 obj +% 1620 0 obj << /Type /Page -/Contents 1610 0 R -/Resources 1608 0 R +/Contents 1621 0 R +/Resources 1619 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R +/Parent 1612 0 R >> -% 1611 0 obj +% 1622 0 obj << -/D [1609 0 R /XYZ 98.895 753.953 null] +/D [1620 0 R /XYZ 98.895 753.953 null] >> -% 1612 0 obj +% 1623 0 obj << -/D [1609 0 R /XYZ 99.895 701.929 null] +/D [1620 0 R /XYZ 99.895 701.929 null] >> -% 1613 0 obj +% 1624 0 obj << -/D [1609 0 R /XYZ 99.895 680.684 null] +/D [1620 0 R /XYZ 99.895 680.684 null] >> -% 1608 0 obj +% 1619 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1618 0 obj +% 1629 0 obj << /Type /Page -/Contents 1619 0 R -/Resources 1617 0 R +/Contents 1630 0 R +/Resources 1628 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R -/Annots [ 1614 0 R 1615 0 R 1616 0 R ] +/Parent 1612 0 R +/Annots [ 1625 0 R 1626 0 R 1627 0 R ] >> -% 1614 0 obj +% 1625 0 obj << /Type /Annot /Subtype /Link @@ -21359,7 +21296,7 @@ stream /Rect [310.942 573.77 378 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1615 0 obj +% 1626 0 obj << /Type /Annot /Subtype /Link @@ -21367,53 +21304,53 @@ stream /Rect [322.33 482.114 398.384 494.174] /A << /S /GoTo /D (vdata) >> >> -% 1616 0 obj +% 1627 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.165 380.495 301.219 392.555] +/Rect [207.9 380.495 283.954 392.555] /A << /S /GoTo /D (vdata) >> >> -% 1620 0 obj +% 1631 0 obj << -/D [1618 0 R /XYZ 149.705 753.953 null] +/D [1629 0 R /XYZ 149.705 753.953 null] >> % 364 0 obj << -/D [1618 0 R /XYZ 150.705 716.092 null] +/D [1629 0 R /XYZ 150.705 716.092 null] >> -% 1621 0 obj +% 1632 0 obj << -/D [1618 0 R /XYZ 150.705 278.482 null] +/D [1629 0 R /XYZ 150.705 278.482 null] >> -% 1622 0 obj +% 1633 0 obj << -/D [1618 0 R /XYZ 150.705 244.007 null] +/D [1629 0 R /XYZ 150.705 244.007 null] >> -% 1617 0 obj +% 1628 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1626 0 obj +% 1637 0 obj << /Type /Page -/Contents 1627 0 R -/Resources 1625 0 R +/Contents 1638 0 R +/Resources 1636 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R -/Annots [ 1623 0 R 1624 0 R ] +/Parent 1612 0 R +/Annots [ 1634 0 R 1635 0 R ] >> -% 1623 0 obj +% 1634 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.355 561.815 250.41 573.875] +/Rect [157.09 561.815 233.145 573.875] /A << /S /GoTo /D (vdata) >> >> -% 1624 0 obj +% 1635 0 obj << /Type /Annot /Subtype /Link @@ -21421,50 +21358,50 @@ stream /Rect [260.133 482.114 327.191 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1628 0 obj +% 1639 0 obj << -/D [1626 0 R /XYZ 98.895 753.953 null] +/D [1637 0 R /XYZ 98.895 753.953 null] >> % 368 0 obj << -/D [1626 0 R /XYZ 99.895 716.092 null] +/D [1637 0 R /XYZ 99.895 716.092 null] >> -% 1625 0 obj +% 1636 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1630 0 obj +% 1641 0 obj << /Type /Page -/Contents 1631 0 R -/Resources 1629 0 R +/Contents 1642 0 R +/Resources 1640 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1600 0 R +/Parent 1612 0 R >> -% 1632 0 obj +% 1643 0 obj << -/D [1630 0 R /XYZ 149.705 753.953 null] +/D [1641 0 R /XYZ 149.705 753.953 null] >> % 372 0 obj << -/D [1630 0 R /XYZ 150.705 716.092 null] +/D [1641 0 R /XYZ 150.705 716.092 null] >> -% 1629 0 obj +% 1640 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1635 0 obj +% 1646 0 obj << /Type /Page -/Contents 1636 0 R -/Resources 1634 0 R +/Contents 1647 0 R +/Resources 1645 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1633 0 R ] +/Parent 1649 0 R +/Annots [ 1644 0 R ] >> -% 1633 0 obj +% 1644 0 obj << /Type /Annot /Subtype /Link @@ -21472,54 +21409,54 @@ stream /Rect [291.943 483.894 359.001 495.954] /A << /S /GoTo /D (descdata) >> >> -% 1637 0 obj +% 1648 0 obj << -/D [1635 0 R /XYZ 98.895 753.953 null] +/D [1646 0 R /XYZ 98.895 753.953 null] >> % 376 0 obj << -/D [1635 0 R /XYZ 99.895 716.092 null] +/D [1646 0 R /XYZ 99.895 716.092 null] >> -% 1634 0 obj +% 1645 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1640 0 obj +% 1651 0 obj << /Type /Page -/Contents 1641 0 R -/Resources 1639 0 R +/Contents 1652 0 R +/Resources 1650 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R +/Parent 1649 0 R >> -% 1642 0 obj +% 1653 0 obj << -/D [1640 0 R /XYZ 149.705 753.953 null] +/D [1651 0 R /XYZ 149.705 753.953 null] >> -% 1643 0 obj +% 1654 0 obj << -/D [1640 0 R /XYZ 150.705 716.092 null] +/D [1651 0 R /XYZ 150.705 716.092 null] >> -% 1644 0 obj +% 1655 0 obj << -/D [1640 0 R /XYZ 150.705 687.379 null] +/D [1651 0 R /XYZ 150.705 687.379 null] >> -% 1639 0 obj +% 1650 0 obj << -/Font << /F62 667 0 R /F67 913 0 R >> +/Font << /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1647 0 obj +% 1658 0 obj << /Type /Page -/Contents 1648 0 R -/Resources 1646 0 R +/Contents 1659 0 R +/Resources 1657 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1645 0 R ] +/Parent 1649 0 R +/Annots [ 1656 0 R ] >> -% 1645 0 obj +% 1656 0 obj << /Type /Annot /Subtype /Link @@ -21527,29 +21464,29 @@ stream /Rect [291.943 482.114 359.001 494.174] /A << /S /GoTo /D (descdata) >> >> -% 1649 0 obj +% 1660 0 obj << -/D [1647 0 R /XYZ 98.895 753.953 null] +/D [1658 0 R /XYZ 98.895 753.953 null] >> % 380 0 obj << -/D [1647 0 R /XYZ 99.895 716.092 null] +/D [1658 0 R /XYZ 99.895 716.092 null] >> -% 1646 0 obj +% 1657 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1652 0 obj +% 1663 0 obj << /Type /Page -/Contents 1653 0 R -/Resources 1651 0 R +/Contents 1664 0 R +/Resources 1662 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1650 0 R ] +/Parent 1649 0 R +/Annots [ 1661 0 R ] >> -% 1650 0 obj +% 1661 0 obj << /Type /Annot /Subtype /Link @@ -21557,33 +21494,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1654 0 obj +% 1665 0 obj << -/D [1652 0 R /XYZ 149.705 753.953 null] +/D [1663 0 R /XYZ 149.705 753.953 null] >> % 384 0 obj << -/D [1652 0 R /XYZ 150.705 716.092 null] +/D [1663 0 R /XYZ 150.705 716.092 null] >> -% 1655 0 obj +% 1666 0 obj << -/D [1652 0 R /XYZ 150.705 382.093 null] +/D [1663 0 R /XYZ 150.705 382.093 null] >> -% 1651 0 obj +% 1662 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1658 0 obj +% 1669 0 obj << /Type /Page -/Contents 1659 0 R -/Resources 1657 0 R +/Contents 1670 0 R +/Resources 1668 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1656 0 R ] +/Parent 1649 0 R +/Annots [ 1667 0 R ] >> -% 1656 0 obj +% 1667 0 obj << /Type /Annot /Subtype /Link @@ -21591,33 +21528,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1660 0 obj +% 1671 0 obj << -/D [1658 0 R /XYZ 98.895 753.953 null] +/D [1669 0 R /XYZ 98.895 753.953 null] >> % 388 0 obj << -/D [1658 0 R /XYZ 99.895 716.092 null] +/D [1669 0 R /XYZ 99.895 716.092 null] >> -% 1661 0 obj +% 1672 0 obj << -/D [1658 0 R /XYZ 99.895 258.556 null] +/D [1669 0 R /XYZ 99.895 258.556 null] >> -% 1657 0 obj +% 1668 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1664 0 obj +% 1675 0 obj << /Type /Page -/Contents 1665 0 R -/Resources 1663 0 R +/Contents 1676 0 R +/Resources 1674 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1638 0 R -/Annots [ 1662 0 R ] +/Parent 1649 0 R +/Annots [ 1673 0 R ] >> -% 1662 0 obj +% 1673 0 obj << /Type /Annot /Subtype /Link @@ -21625,33 +21562,33 @@ stream /Rect [342.753 494.069 409.811 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1666 0 obj +% 1677 0 obj << -/D [1664 0 R /XYZ 149.705 753.953 null] +/D [1675 0 R /XYZ 149.705 753.953 null] >> % 392 0 obj << -/D [1664 0 R /XYZ 150.705 716.092 null] +/D [1675 0 R /XYZ 150.705 716.092 null] >> -% 1667 0 obj +% 1678 0 obj << -/D [1664 0 R /XYZ 150.705 382.093 null] +/D [1675 0 R /XYZ 150.705 382.093 null] >> -% 1663 0 obj +% 1674 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1670 0 obj +% 1681 0 obj << /Type /Page -/Contents 1671 0 R -/Resources 1669 0 R +/Contents 1682 0 R +/Resources 1680 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1668 0 R ] +/Parent 1685 0 R +/Annots [ 1679 0 R ] >> -% 1668 0 obj +% 1679 0 obj << /Type /Annot /Subtype /Link @@ -21659,33 +21596,33 @@ stream /Rect [291.943 494.069 359.001 506.129] /A << /S /GoTo /D (descdata) >> >> -% 1672 0 obj +% 1683 0 obj << -/D [1670 0 R /XYZ 98.895 753.953 null] +/D [1681 0 R /XYZ 98.895 753.953 null] >> % 396 0 obj << -/D [1670 0 R /XYZ 99.895 716.092 null] +/D [1681 0 R /XYZ 99.895 716.092 null] >> -% 1673 0 obj +% 1684 0 obj << -/D [1670 0 R /XYZ 99.895 258.556 null] +/D [1681 0 R /XYZ 99.895 258.556 null] >> -% 1669 0 obj +% 1680 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1677 0 obj +% 1688 0 obj << /Type /Page -/Contents 1678 0 R -/Resources 1676 0 R +/Contents 1689 0 R +/Resources 1687 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1675 0 R ] +/Parent 1685 0 R +/Annots [ 1686 0 R ] >> -% 1675 0 obj +% 1686 0 obj << /Type /Annot /Subtype /Link @@ -21693,37 +21630,37 @@ stream /Rect [342.753 573.77 409.811 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1679 0 obj +% 1690 0 obj << -/D [1677 0 R /XYZ 149.705 753.953 null] +/D [1688 0 R /XYZ 149.705 753.953 null] >> % 400 0 obj << -/D [1677 0 R /XYZ 150.705 716.092 null] +/D [1688 0 R /XYZ 150.705 716.092 null] >> -% 1680 0 obj +% 1691 0 obj << -/D [1677 0 R /XYZ 150.705 358.183 null] +/D [1688 0 R /XYZ 150.705 370.138 null] >> -% 1681 0 obj +% 1692 0 obj << -/D [1677 0 R /XYZ 150.705 314.403 null] +/D [1688 0 R /XYZ 150.705 335.663 null] >> -% 1676 0 obj +% 1687 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1684 0 obj +% 1695 0 obj << /Type /Page -/Contents 1685 0 R -/Resources 1683 0 R +/Contents 1696 0 R +/Resources 1694 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1682 0 R ] +/Parent 1685 0 R +/Annots [ 1693 0 R ] >> -% 1682 0 obj +% 1693 0 obj << /Type /Annot /Subtype /Link @@ -21731,37 +21668,37 @@ stream /Rect [291.943 573.77 359.001 585.83] /A << /S /GoTo /D (descdata) >> >> -% 1686 0 obj +% 1697 0 obj << -/D [1684 0 R /XYZ 98.895 753.953 null] +/D [1695 0 R /XYZ 98.895 753.953 null] >> % 405 0 obj << -/D [1684 0 R /XYZ 99.895 716.092 null] +/D [1695 0 R /XYZ 99.895 716.092 null] >> -% 1687 0 obj +% 1698 0 obj << -/D [1684 0 R /XYZ 99.895 370.138 null] +/D [1695 0 R /XYZ 99.895 370.138 null] >> -% 1688 0 obj +% 1699 0 obj << -/D [1684 0 R /XYZ 99.895 338.313 null] +/D [1695 0 R /XYZ 99.895 338.313 null] >> -% 1683 0 obj +% 1694 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1691 0 obj +% 1702 0 obj << /Type /Page -/Contents 1692 0 R -/Resources 1690 0 R +/Contents 1703 0 R +/Resources 1701 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1689 0 R ] +/Parent 1685 0 R +/Annots [ 1700 0 R ] >> -% 1689 0 obj +% 1700 0 obj << /Type /Annot /Subtype /Link @@ -21769,167 +21706,234 @@ stream /Rect [342.753 491.971 420.271 504.031] /A << /S /GoTo /D (spdata) >> >> -% 1693 0 obj +% 1704 0 obj << -/D [1691 0 R /XYZ 149.705 753.953 null] +/D [1702 0 R /XYZ 149.705 753.953 null] >> % 409 0 obj << -/D [1691 0 R /XYZ 150.705 716.092 null] +/D [1702 0 R /XYZ 150.705 716.092 null] >> -% 1690 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F69 1460 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1695 0 obj -<< -/Type /Page -/Contents 1696 0 R -/Resources 1694 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R ->> -% 1697 0 obj -<< -/D [1695 0 R /XYZ 98.895 753.953 null] ->> -% 1698 0 obj -<< -/D [1695 0 R /XYZ 99.895 496.698 null] ->> -% 1699 0 obj -<< -/D [1695 0 R /XYZ 99.895 438.313 null] ->> -% 1700 0 obj -<< -/D [1695 0 R /XYZ 99.895 418.388 null] ->> -% 1694 0 obj +% 1701 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1471 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1705 0 obj +% 1706 0 obj << /Type /Page -/Contents 1706 0 R -/Resources 1704 0 R +/Contents 1707 0 R +/Resources 1705 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1674 0 R -/Annots [ 1701 0 R 1702 0 R 1703 0 R ] ->> -% 1701 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 527.942 420.271 540.002] -/A << /S /GoTo /D (spdata) >> +/Parent 1685 0 R >> -% 1702 0 obj +% 1708 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 460.196 409.811 472.256] -/A << /S /GoTo /D (descdata) >> +/D [1706 0 R /XYZ 98.895 753.953 null] >> -% 1703 0 obj +% 1709 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 404.405 438.184 416.465] -/A << /S /GoTo /D (precdata) >> +/D [1706 0 R /XYZ 99.895 496.698 null] >> -% 1707 0 obj +% 1710 0 obj << -/D [1705 0 R /XYZ 149.705 753.953 null] +/D [1706 0 R /XYZ 99.895 438.313 null] >> -% 413 0 obj +% 1711 0 obj << -/D [1705 0 R /XYZ 150.705 716.092 null] +/D [1706 0 R /XYZ 99.895 418.388 null] >> endstream endobj -1711 0 obj +1718 0 obj << -/Length 5626 +/Length 4038 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(6.27)-1000(Sorting)-250(utilities)-250(\227)]TJ 0 -20.164 Td [(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(6.26)-1000(psb)]TJ ET q -1 0 0 1 120.53 686.164 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 685.965 Td [(msort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Merge-sort)-250(algorithm)]TJ -24.221 -12.574 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 673.59 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 673.391 Td [(qsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Quicksort)-250(algorithm)]TJ -24.221 -12.575 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 661.016 cm +1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 124.116 660.816 Td [(hsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Heapsort)-250(algorithm)]TJ -0 g 0 G +/F75 11.9552 Tf 207.803 706.129 Td [(sizeof)-250(\227)-250(Memory)-250(occupation)]TJ/F84 9.9626 Tf -57.407 -18.964 Td [(This)-250(function)-250(computes)-250(the)-250(memory)-250(occupation)-250(of)-250(a)-250(PSBLAS)-250(object.)]TJ 0 g 0 G -/F67 9.9626 Tf -24.221 -22.402 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F62 9.9626 Tf 14.944 -21.783 Td [(These)-236(serial)-235(r)18(outines)-236(sort)-236(a)-235(sequence)]TJ/F60 9.9626 Tf 162.066 0 Td [(X)]TJ/F62 9.9626 Tf 9.884 0 Td [(into)-236(ascending)-235(or)-236(descending)-236(or)18(der)74(.)]TJ -186.894 -11.955 Td [(The)-243(ar)18(gument)-243(meaning)-243(is)-242(identical)-243(for)-243(the)-243(thr)18(ee)-243(calls;)-245(the)-243(only)-243(dif)18(fer)18(ence)-242(is)-243(the)]TJ 0 -11.955 Td [(algorithm)-250(used)-250(to)-250(accomplish)-250(the)-250(task)-250(\050see)-250(Usage)-250(Notes)-250(below\051.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.783 Td [(T)90(ype:)]TJ +/F131 9.9626 Tf 0.309 -21.918 Td [(isz)-525(=)-525(psb_sizeof\050a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050desc_a\051)]TJ 0 -11.955 Td [(isz)-525(=)-525(psb_sizeof\050prec\051)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.402 Td [(On)-250(Entry)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G - 0 -22.402 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(sequence)-250(to)-250(be)-250(sorted.)]TJ 14.944 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ -0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.626 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(\050at)-250(least\051)-250(the)-250(same)-250(size)-250(as)]TJ/F60 9.9626 Tf 254.189 0 Td [(X)]TJ/F62 9.9626 Tf 7.537 0 Td [(.)]TJ + 0 -19.925 Td [(a)]TJ 0 g 0 G -/F59 9.9626 Tf -286.633 -22.402 Td [(dir)]TJ +/F84 9.9626 Tf 9.574 0 Td [(A)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 72.97 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -64.956 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 531.947 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 531.748 Td [(Tspmat)]TJ +ET +q +1 0 0 1 395.216 531.947 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 398.354 531.748 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -268.57 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 512.022 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 511.823 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(Communication)-250(descriptor)74(.)]TJ -8.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 464.201 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 464.002 Td [(desc)]TJ +ET +q +1 0 0 1 384.755 464.201 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 387.893 464.002 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.925 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.348 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.182 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ +ET +q +1 0 0 1 388.441 408.41 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 391.579 408.211 Td [(Tprec)]TJ +ET +q +1 0 0 1 418.358 408.41 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 421.497 408.211 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -291.713 -19.925 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(Function)-250(value)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 223.173 368.361 Tm [(The)-266(memory)-266(occupation)-267(of)-266(the)-266(object)-267(spe)1(ci\002ed)-267(in)-266(the)-266(calling)]TJ 1 0 0 1 175.611 356.405 Tm [(sequence,)-250(in)-250(bytes.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.432 -11.955 Td [(Returned)-250(as:)-310(an)]TJ/F131 9.9626 Tf 71.82 0 Td [(integer\050psb_long_int_k_\051)]TJ/F84 9.9626 Tf 128.019 0 Td [(number)74(.)]TJ +0 g 0 G + -60.362 -242.057 Td [(108)]TJ +0 g 0 G +ET + +endstream +endobj +1722 0 obj +<< +/Length 6042 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(6.27)-1000(Sorting)-250(utilities)-250(\227)]TJ -0.37 -20.164 Td [(psb)]TJ +ET +q +1 0 0 1 120.159 686.164 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 123.746 685.965 Td [(msort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Merge-sort)-250(algorithm)]TJ -24.221 -12.574 Td [(psb)]TJ +ET +q +1 0 0 1 120.159 673.59 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 123.746 673.391 Td [(qsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Quicksort)-250(algorithm)]TJ -24.221 -12.575 Td [(psb)]TJ +ET +q +1 0 0 1 120.159 661.016 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 123.746 660.816 Td [(hsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Heapsort)-250(algorithm)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf -23.851 -22.402 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F84 9.9626 Tf 1.001 0 0 1 114.839 592.721 Tm [(These)-249(serial)-248(r)18(outines)-249(sort)-248(a)-249(sequence)]TJ/F78 9.9626 Tf 1 0 0 1 277.842 592.721 Tm [(X)]TJ/F84 9.9626 Tf 1.001 0 0 1 287.858 592.721 Tm [(into)-249(ascending)-248(or)-249(descending)-248(or)18(der)73(.)]TJ 0.998 0 0 1 99.587 580.766 Tm [(The)-251(ar)18(gument)-250(meaning)-251(is)-251(identical)-250(for)-251(the)-251(thr)18(ee)-251(calls;)-250(the)-251(only)-251(dif)18(fer)18(ence)-251(is)-250(the)]TJ 1 0 0 1 99.895 568.811 Tm [(algorithm)-250(used)-250(to)-250(accomplish)-250(the)-250(task)-250(\050see)-250(Usage)-250(Notes)-250(below\051.)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -21.783 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -22.402 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -22.402 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(to)-250(be)-250(sorted.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ +0 g 0 G +/F84 9.9626 Tf 12.892 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.706 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(\050at)-250(least\051)-250(the)-250(same)-250(size)-250(as)]TJ/F78 9.9626 Tf 254.189 0 Td [(X)]TJ/F84 9.9626 Tf 7.537 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -286.633 -22.402 Td [(dir)]TJ 0 g 0 G -/F62 9.9626 Tf 18.262 0 Td [(The)-250(desir)18(ed)-250(or)18(dering.)]TJ 6.645 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value:)]TJ +/F84 9.9626 Tf 17.953 0 Td [(The)-250(desir)18(ed)-250(or)18(dering.)]TJ 6.645 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value:)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -22.402 Td [(Integer)-250(and)-250(real)-250(data:)]TJ +/F75 9.9626 Tf 0 -22.402 Td [(Integer)-250(and)-250(real)-250(data:)]TJ 0 g 0 G -/F67 9.9626 Tf 101.28 0 Td [(psb_sort_up_)]TJ/F62 9.9626 Tf 62.764 0 Td [(,)]TJ/F67 9.9626 Tf 5.525 0 Td [(psb_sort_down_)]TJ/F62 9.9626 Tf 73.225 0 Td [(,)]TJ/F67 9.9626 Tf 5.525 0 Td [(psb_asort_up_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf -294.396 -11.955 Td [(psb_asort_down_)]TJ/F62 9.9626 Tf 78.455 0 Td [(;)-250(default)]TJ/F67 9.9626 Tf 38.784 0 Td [(psb_sort_up_)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ +/F131 9.9626 Tf 101.28 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 288.846 363.286 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 294.969 363.286 Tm [(psb_sort_down_)]TJ/F84 9.9626 Tf 1.02 0 0 1 368.194 363.286 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 374.317 363.286 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.311 363.286 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 146.72 351.331 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 78.455 0 Td [(;)-250(default)]TJ/F131 9.9626 Tf 38.784 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 62.764 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -201.921 -17.178 Td [(Complex)-250(data:)]TJ +/F75 9.9626 Tf -201.921 -17.178 Td [(Complex)-250(data:)]TJ 0 g 0 G -/F67 9.9626 Tf 70.286 0 Td [(psb_lsort_up_)]TJ/F62 9.9626 Tf 67.995 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_lsort_down_)]TJ/F62 9.9626 Tf 78.455 0 Td [(,)]TJ/F67 9.9626 Tf 4.503 0 Td [(psb_asort_up_)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)]TJ/F67 9.9626 Tf 4.504 0 Td [(psb_asort_down_)]TJ/F62 9.9626 Tf 78.455 0 Td [(;)]TJ -354.777 -11.956 Td [(default)]TJ/F67 9.9626 Tf 33.803 0 Td [(psb_lsort_up_)]TJ/F62 9.9626 Tf 67.994 0 Td [(.)]TJ +/F131 9.9626 Tf 70.286 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 263.083 334.153 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 267.536 334.153 Tm [(psb_lsort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 345.991 334.153 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 350.444 334.153 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 418.439 334.153 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 422.892 334.153 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 501.347 334.153 Tm [(;)]TJ 1 0 0 1 146.72 322.197 Tm [(default)]TJ/F131 9.9626 Tf 33.803 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 67.994 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -148.622 -22.402 Td [(\003ag)]TJ +/F75 9.9626 Tf -148.622 -22.402 Td [(\003ag)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(Whether)-250(to)-250(keep)-250(the)-250(original)-250(values)-250(in)]TJ/F60 9.9626 Tf 171.52 0 Td [(I)-81(X)]TJ/F62 9.9626 Tf 11.661 0 Td [(.)]TJ -179.863 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(integer)-190(value)]TJ/F67 9.9626 Tf 128.287 0 Td [(psb_sort_ovw_idx_)]TJ/F62 9.9626 Tf 90.809 0 Td [(or)]TJ/F67 9.9626 Tf 11.268 0 Td [(psb_sort_keep_idx_)]TJ/F62 9.9626 Tf 94.146 0 Td [(;)]TJ -324.51 -11.955 Td [(default)]TJ/F67 9.9626 Tf 33.803 0 Td [(psb_sort_ovw_idx_)]TJ/F62 9.9626 Tf 88.916 0 Td [(.)]TJ +/F84 9.9626 Tf 21.091 0 Td [(Whether)-250(to)-250(keep)-250(the)-250(original)-250(values)-250(in)]TJ/F78 9.9626 Tf 171.52 0 Td [(I)-81(X)]TJ/F84 9.9626 Tf 11.661 0 Td [(.)]TJ -179.674 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 0.98 0 0 1 124.802 275.885 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F131 9.9626 Tf 1 0 0 1 250.731 275.885 Tm [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 341.54 275.885 Tm [(or)]TJ/F131 9.9626 Tf 1 0 0 1 352.62 275.885 Tm [(psb_sort_keep_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 446.766 275.885 Tm [(;)]TJ 1 0 0 1 124.802 263.93 Tm [(default)]TJ/F131 9.9626 Tf 33.803 0 Td [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 88.916 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -147.626 -24.395 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -147.626 -24.395 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -22.402 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(sequence)-250(of)-250(values,)-250(in)-250(the)-250(chosen)-250(or)18(dering.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ +/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(of)-250(values,)-250(in)-250(the)-250(chosen)-250(or)18(dering.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ +/F75 9.9626 Tf -24.907 -22.402 Td [(ix)]TJ 0 g 0 G -/F62 9.9626 Tf 13.281 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.626 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-238(integer)-237(array)-238(of)-237(rank)-238(1,)-240(whose)-238(entries)-237(ar)18(e)-238(moved)-237(to)-238(the)-238(same)-237(position)]TJ 0 -11.955 Td [(as)-250(the)-250(corr)18(esponding)-250(entries)-250(in)]TJ/F60 9.9626 Tf 138.215 0 Td [(x)]TJ/F62 9.9626 Tf 5.205 0 Td [(.)]TJ +/F84 9.9626 Tf 12.892 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.706 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.996 0 0 1 124.413 146.91 Tm [(An)-251(integer)-250(array)-251(of)-251(rank)-250(1,)-251(whose)-251(entries)-251(ar)19(e)-251(moved)-251(to)-251(th)1(e)-251(same)-251(position)]TJ 1 0 0 1 124.802 134.955 Tm [(as)-250(the)-250(corr)18(esponding)-250(entries)-250(in)]TJ/F78 9.9626 Tf 138.215 0 Td [(x)]TJ/F84 9.9626 Tf 5.205 0 Td [(.)]TJ 0 g 0 G -3.943 -44.517 Td [(109)]TJ 0 g 0 G @@ -21937,107 +21941,107 @@ ET endstream endobj -1716 0 obj +1727 0 obj << -/Length 7300 +/Length 8197 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(Notes)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(For)-370(integer)-370(or)-370(r)18(eal)-370(data)-370(the)-370(sorting)-370(can)-370(be)-370(performed)-370(in)-370(the)-370(up/down)]TJ 12.453 -11.956 Td [(dir)18(ection,)-250(on)-250(the)-250(natural)-250(or)-250(absolute)-250(values;)]TJ + 1.02 0 0 1 175.611 686.204 Tm [(For)-318(integer)-317(or)-318(r)18(eal)-318(data)-318(the)-318(sorting)-317(can)-318(be)-318(performed)-317(in)-318(the)-318(up/down)]TJ 1 0 0 1 175.611 674.248 Tm [(dir)18(ection,)-250(on)-250(the)-250(natural)-250(or)-250(absolute)-250(values;)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(For)-329(complex)-330(data)-329(the)-330(sorting)-329(can)-330(be)-329(done)-329(in)-330(a)-329(lexicographic)-330(or)18(der)-329(\050i.e.:)]TJ 12.453 -11.955 Td [(sort)-263(on)-263(the)-263(r)18(eal)-263(part)-263(with)-263(ties)-263(br)18(oken)-263(accor)18(ding)-263(to)-263(the)-263(imaginary)-263(part\051)-263(or)]TJ 0 -11.955 Td [(on)-250(the)-250(absolute)-250(values;)]TJ + 1.02 0 0 1 175.611 654.323 Tm [(For)-287(complex)-288(data)-287(the)-287(sorting)-288(can)-287(be)-287(done)-288(in)-287(a)-287(lexicographic)-288(or)18(der)-287(\050i.e.:)]TJ 1.007 0 0 1 175.611 642.368 Tm [(sort)-247(on)-248(the)-247(r)18(eal)-248(part)-247(with)-248(ties)-247(br)18(oken)-247(accor)17(ding)-247(to)-247(the)-248(imaginary)-247(part\051)-248(or)]TJ 1 0 0 1 175.611 630.413 Tm [(on)-250(the)-250(absolute)-250(values;)]TJ 0 g 0 G -12.453 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(The)-325(r)18(outines)-325(r)18(eturn)-325(the)-325(items)-324(in)-325(the)-325(chosen)-325(or)18(dering;)-362(the)-325(output)-325(dif)18(fer)18(-)]TJ 12.453 -11.956 Td [(ence)-244(is)-245(the)-244(handling)-244(of)-244(ties)-244(\050i.e.)-309(items)-244(with)-244(an)-244(equal)-245(v)1(alue\051)-245(in)-244(the)-244(original)]TJ 0 -11.955 Td [(input.)-316(W)55(ith)-252(the)-252(mer)18(ge-sort)-252(algorithm)-252(ties)-252(ar)18(e)-252(pr)18(eserved)-252(in)-252(the)-252(same)-252(r)18(ela-)]TJ 0 -11.955 Td [(tive)-278(or)18(der)-278(as)-278(they)-278(had)-278(in)-278(the)-278(original)-278(sequence,)-285(while)-278(this)-278(is)-278(not)-278(guaran-)]TJ 0 -11.955 Td [(teed)-250(for)-250(quicksort)-250(or)-250(heapsort;)]TJ + 0.98 0 0 1 175.303 610.488 Tm [(The)-240(r)18(outines)-240(r)19(eturn)-241(the)-240(items)-240(in)-240(the)-240(chosen)-240(or)18(dering;)-245(the)-240(output)-240(dif)18(fer)18(ence)]TJ 0.98 0 0 1 175.611 598.532 Tm [(is)-256(the)-256(handling)-256(of)-256(ties)-256(\050i.e.)-318(items)-256(with)-256(an)-256(equal)-256(value\051)-256(in)-256(the)-256(original)-256(input.)]TJ 0.98 0 0 1 175.113 586.577 Tm [(W)56(ith)-225(the)-226(mer)18(ge-sort)-225(algorithm)-226(ties)-225(ar)18(e)-225(pr)18(eserved)-225(in)-226(the)-225(same)-226(r)18(el)1(ative)-226(or)18(der)]TJ 1.02 0 0 1 175.611 574.622 Tm [(as)-352(they)-351(had)-352(in)-352(the)-351(original)-352(sequence,)-378(while)-352(this)-351(is)-352(not)-352(guaranteed)-351(for)]TJ 1 0 0 1 175.333 562.667 Tm [(quicksort)-250(or)-250(heapsort;)]TJ 0 g 0 G - -12.453 -19.925 Td [(4.)]TJ + -12.175 -19.925 Td [(4.)]TJ 0 g 0 G - [-500(If)]TJ/F60 9.9626 Tf 22.66 0 Td [(f)-160(l)-70(a)-47(g)]TJ/F93 10.3811 Tf 20.72 0 Td [(=)]TJ/F60 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ + 0.98 0 0 1 175.611 542.742 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 185.955 542.742 Tm [(f)-160(l)-70(a)-47(g)]TJ/F181 10.3811 Tf 20.72 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ ET q -1 0 0 1 232.862 542.941 cm +1 0 0 1 232.999 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 235.975 542.742 Td [(s)-25(o)-25(r)-35(t)]TJ +/F78 9.9626 Tf 236.112 542.742 Td [(s)-25(o)-25(r)-35(t)]TJ ET q -1 0 0 1 253.036 542.941 cm +1 0 0 1 253.173 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 256.149 542.742 Td [(o)-35(v)-25(w)]TJ +/F78 9.9626 Tf 256.286 542.742 Td [(o)-35(v)-25(w)]TJ ET q -1 0 0 1 274.067 542.941 cm +1 0 0 1 274.204 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 277.11 542.742 Td [(i)-32(d)-42(x)]TJ +/F78 9.9626 Tf 277.248 542.742 Td [(i)-32(d)-42(x)]TJ ET q -1 0 0 1 291.402 542.941 cm +1 0 0 1 291.539 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 296.503 542.742 Td [(then)-212(the)-212(entries)-212(in)]TJ/F60 9.9626 Tf 80.283 0 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.588 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(1)-290(:)]TJ/F60 9.9626 Tf 13.381 0 Td [(n)]TJ/F93 10.3811 Tf 5.788 0 Td [(\051)]TJ/F62 9.9626 Tf 6.262 0 Td [(wher)18(e)]TJ/F60 9.9626 Tf 29.644 0 Td [(n)]TJ/F62 9.9626 Tf 7.776 0 Td [(is)-212(the)-212(size)]TJ -276.762 -11.956 Td [(of)]TJ/F60 9.9626 Tf 12.255 0 Td [(x)]TJ/F62 9.9626 Tf 8.411 0 Td [(ar)18(e)-322(initialized)-321(to)]TJ/F60 9.9626 Tf 76.228 0 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.588 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F91 10.3811 Tf 8.364 0 Td [(\040)]TJ/F60 9.9626 Tf 14.651 0 Td [(i)]TJ/F62 9.9626 Tf 2.963 0 Td [(;)-358(thus,)-339(upon)-322(r)18(eturn)-321(fr)18(om)-322(the)-322(subr)18(outine,)]TJ -138.753 -11.955 Td [(for)-270(each)-271(index)]TJ/F60 9.9626 Tf 65.501 0 Td [(i)]TJ/F62 9.9626 Tf 5.657 0 Td [(we)-270(have)-271(in)]TJ/F60 9.9626 Tf 51.095 0 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.587 0 Td [(\050)]TJ/F60 9.9626 Tf 4.205 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 6.843 0 Td [(the)-270(position)-271(that)-270(the)-270(item)]TJ/F60 9.9626 Tf 114.324 0 Td [(x)]TJ/F93 10.3811 Tf 5.33 0 Td [(\050)]TJ/F60 9.9626 Tf 4.204 0 Td [(i)]TJ/F93 10.3811 Tf 3.088 0 Td [(\051)]TJ/F62 9.9626 Tf 6.844 0 Td [(occupied)]TJ -278.766 -11.955 Td [(in)-250(the)-250(original)-250(data)-250(sequence;)]TJ +/F84 9.9626 Tf 0.98 0 0 1 296.91 542.742 Tm [(then)-244(the)-244(entries)-244(in)]TJ/F78 9.9626 Tf 1 0 0 1 376.841 542.742 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.588 0 Td [(\050)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.578 542.742 Tm [(1)]TJ 1 0 0 1 397.352 542.742 Tm [(:)]TJ/F78 9.9626 Tf 5.507 0 Td [(n)]TJ/F181 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 415.179 542.742 Tm [(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 444.542 542.742 Tm [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 452.589 542.742 Tm [(is)-244(the)-244(size)]TJ 0.984 0 0 1 175.611 530.786 Tm [(of)]TJ/F78 9.9626 Tf 1 0 0 1 187.015 530.786 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 194.714 530.786 Tm [(ar)18(e)-254(initialized)-254(to)]TJ/F78 9.9626 Tf 1 0 0 1 267.739 530.786 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.587 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F181 10.3811 Tf 3.089 0 Td [(\051)]TJ/F179 10.3811 Tf 7.045 0 Td [(\040)]TJ/F78 9.9626 Tf 13.332 0 Td [(i)]TJ/F84 9.9626 Tf 0.984 0 0 1 306.96 530.786 Tm [(;)-254(thus,)-255(upon)-254(r)18(eturn)-254(fr)18(om)-254(the)-254(subr)18(outine,)-254(for)]TJ 1.02 0 0 1 175.611 518.831 Tm [(each)-260(index)]TJ/F78 9.9626 Tf 1 0 0 1 226.513 518.831 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 232.117 518.831 Tm [(we)-260(have)-260(in)]TJ/F78 9.9626 Tf 1 0 0 1 283.912 518.831 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.587 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 306.582 518.831 Tm [(the)-260(position)-260(that)-259(the)-260(item)]TJ/F78 9.9626 Tf 1 0 0 1 422.652 518.831 Tm [(x)]TJ/F181 10.3811 Tf 5.329 0 Td [(\050)]TJ/F78 9.9626 Tf 4.205 0 Td [(i)]TJ/F181 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.064 518.831 Tm [(occupied)-260(in)]TJ 1 0 0 1 175.611 506.876 Tm [(the)-250(original)-250(data)-250(sequence;)]TJ 0 g 0 G -12.453 -19.925 Td [(5.)]TJ 0 g 0 G - [-500(If)]TJ/F60 9.9626 Tf 24.08 0 Td [(f)-160(l)-70(a)-47(g)]TJ/F93 10.3811 Tf 22.648 0 Td [(=)]TJ/F60 9.9626 Tf 13.563 0 Td [(p)-25(s)-25(b)]TJ + 1.02 0 0 1 175.611 486.951 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 187.101 486.951 Tm [(f)-160(l)-70(a)-47(g)]TJ/F181 10.3811 Tf 22.146 0 Td [(=)]TJ/F78 9.9626 Tf 13.061 0 Td [(p)-25(s)-25(b)]TJ ET q -1 0 0 1 238.138 487.15 cm +1 0 0 1 236.998 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 241.252 486.951 Td [(s)-25(o)-25(r)-35(t)]TJ +/F78 9.9626 Tf 240.111 486.951 Td [(s)-25(o)-25(r)-35(t)]TJ ET q -1 0 0 1 258.312 487.15 cm +1 0 0 1 257.172 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 261.426 486.951 Td [(k)-30(e)-25(e)-80(p)]TJ +/F78 9.9626 Tf 260.285 486.951 Td [(k)-30(e)-25(e)-80(p)]TJ ET q -1 0 0 1 280.648 487.15 cm +1 0 0 1 279.508 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F60 9.9626 Tf 283.692 486.951 Td [(i)-32(d)-42(x)]TJ +/F78 9.9626 Tf 282.552 486.951 Td [(i)-32(d)-42(x)]TJ ET q -1 0 0 1 297.983 487.15 cm +1 0 0 1 296.843 487.15 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 304.504 486.951 Td [(the)-355(r)18(ou)1(tine)-355(will)-354(assume)-355(that)-355(th)1(e)-355(entries)-355(i)1(n)]TJ/F60 9.9626 Tf -128.838 -11.955 Td [(i)-49(x)]TJ/F93 10.3811 Tf 8.588 0 Td [(\050)]TJ/F62 9.9626 Tf 4.274 0 Td [(:)]TJ/F93 10.3811 Tf 2.74 0 Td [(\051)]TJ/F62 9.9626 Tf 6.64 0 Td [(have)-250(alr)18(eady)-250(been)-250(initialized)-250(by)-250(the)-250(user;)]TJ +/F84 9.9626 Tf 1.02 0 0 1 303.093 486.951 Tm [(the)-321(r)18(outine)-321(will)-321(assume)-321(that)-321(the)-321(entries)-321(in)]TJ/F78 9.9626 Tf 1 0 0 1 175.666 474.996 Tm [(i)-49(x)]TJ/F181 10.3811 Tf 8.588 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)]TJ/F181 10.3811 Tf 2.74 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(have)-250(alr)18(eady)-250(been)-250(initialized)-250(by)-250(the)-250(user;)]TJ 0 g 0 G -34.75 -19.926 Td [(6.)]TJ 0 g 0 G - [-500(The)-270(thr)18(ee)-269(sorting)-270(algorithms)-269(have)-270(a)-269(similar)]TJ/F60 9.9626 Tf 205.79 0 Td [(O)]TJ/F93 10.3811 Tf 8 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)]TJ/F62 9.9626 Tf 7.324 0 Td [(log)]TJ/F60 9.9626 Tf 15.663 0 Td [(n)]TJ/F93 10.3811 Tf 5.788 0 Td [(\051)]TJ/F62 9.9626 Tf 6.835 0 Td [(expected)-270(r)8(unning)]TJ -241.221 -11.955 Td [(time;)-278(in)-268(the)-268(average)-269(case)-268(quicksort)-268(will)-269(be)-268(the)-268(fastest)-269(and)-268(mer)18(ge-sort)-268(the)]TJ 0 -11.955 Td [(slowest.)-310(However)-250(note)-250(that:)]TJ + 1.008 0 0 1 175.303 455.07 Tm [(The)-249(thr)18(ee)-249(sorti)1(ng)-249(algorithms)-249(have)-249(a)-248(similar)]TJ/F78 9.9626 Tf 1 0 0 1 368.724 455.07 Tm [(O)]TJ/F181 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.663 0 Td [(n)]TJ/F181 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf 1.008 0 0 1 416.42 455.07 Tm [(expected)-249(r)8(unning)]TJ 1.008 0 0 1 175.611 443.115 Tm [(time;)-248(in)-248(the)-248(average)-248(case)-248(quicksort)-248(will)-247(be)-248(the)-248(fastest)-248(and)-248(mer)18(ge-sort)-248(the)]TJ 1 0 0 1 175.611 431.16 Tm [(slowest.)-310(However)-250(note)-250(that:)]TJ 0 g 0 G 5.321 -19.925 Td [(\050a\051)]TJ 0 g 0 G - [-500(The)-336(worst)-336(case)-336(r)8(unning)-336(time)-336(for)-337(quicksort)-336(is)]TJ/F60 9.9626 Tf 220.017 0 Td [(O)]TJ/F93 10.3811 Tf 8 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)]TJ/F62 7.5716 Tf 5.664 3.616 Td [(2)]TJ/F93 10.3811 Tf 4.408 -3.616 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-379(the)-336(algorithm)]TJ -229.916 -11.955 Td [(implemented)-293(her)18(e)-293(follows)-293(the)-292(well-known)-293(median-of-thr)18(ee)-293(heuris-)]TJ 0 -11.956 Td [(tics,)-250(but)-250(the)-250(worst)-250(case)-250(may)-250(still)-250(apply;)]TJ + 0.98 0 0 1 197.22 411.235 Tm [(The)-241(worst)-240(case)-241(r)8(unning)-241(time)-240(for)-241(quicksort)-241(is)]TJ/F78 9.9626 Tf 1 0 0 1 389.116 411.235 Tm [(O)]TJ/F181 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.663 3.616 Td [(2)]TJ/F181 10.3811 Tf 4.409 -3.616 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 415.611 411.235 Tm [(;)-246(the)-240(algorithm)-241(im-)]TJ 1.007 0 0 1 197.23 399.28 Tm [(plemented)-246(her)18(e)-246(follows)-246(the)-246(well-known)-246(median-of-thr)18(ee)-246(heuristics,)]TJ 1 0 0 1 197.529 387.324 Tm [(but)-250(the)-250(worst)-250(case)-250(may)-250(still)-250(apply;)]TJ 0 g 0 G -17.125 -15.94 Td [(\050b\051)]TJ 0 g 0 G - [-500(The)-190(worst)-190(case)-190(r)8(unning)-190(time)-190(for)-190(mer)18(ge-sort)-190(and)-190(heap-sort)-190(is)]TJ/F60 9.9626 Tf 277.76 0 Td [(O)]TJ/F93 10.3811 Tf 8 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(n)]TJ/F62 9.9626 Tf 7.324 0 Td [(log)]TJ/F60 9.9626 Tf 15.663 0 Td [(n)]TJ/F93 10.3811 Tf 5.788 0 Td [(\051)]TJ/F62 9.9626 Tf -301.684 -11.955 Td [(as)-250(the)-250(average)-250(case;)]TJ + 0.98 0 0 1 197.22 371.384 Tm [(The)-194(worst)-194(case)-194(r)9(unning)-194(time)-194(for)-194(mer)18(ge-sort)-194(and)-193(heap-sort)-194(is)]TJ/F78 9.9626 Tf 1 0 0 1 453.014 371.384 Tm [(O)]TJ/F181 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.662 0 Td [(n)]TJ/F181 10.3811 Tf 5.789 0 Td [(\051)]TJ/F84 9.9626 Tf -296.534 -11.955 Td [(as)-250(the)-250(average)-250(case;)]TJ 0 g 0 G - -16.04 -15.94 Td [(\050c\051)]TJ + -16.039 -15.94 Td [(\050c\051)]TJ 0 g 0 G - [-500(The)-244(mer)18(ge-sort)-244(algorithm)-243(is)-244(implemented)-244(to)-244(take)-244(advantage)-243(of)-244(sub-)]TJ 16.04 -11.955 Td [(sequences)-314(that)-313(may)-314(be)-314(alr)18(eady)-314(in)-313(the)-314(desir)18(ed)-314(or)18(dering)-314(prior)-313(to)-314(the)]TJ 0 -11.956 Td [(subr)18(outine)-390(call;)-459(this)-390(situation)-389(is)-390(r)18(elatively)-390(common)-389(when)-390(dealing)]TJ 0 -11.955 Td [(with)-335(gr)18(oups)-335(of)-335(indices)-335(of)-335(sparse)-336(matrix)-335(entries,)-356(thus)-335(mer)18(ge-sort)-335(is)]TJ 0 -11.955 Td [(the)-319(pr)18(eferr)18(ed)-318(choice)-319(when)-319(a)-318(sorting)-319(is)-319(needed)-318(by)-319(other)-319(r)18(outi)1(nes)-319(in)]TJ 0 -11.955 Td [(the)-250(library)111(.)]TJ + 1.005 0 0 1 197.22 343.489 Tm [(The)-249(mer)18(ge-sort)-249(algorithm)-249(is)-249(implemented)-250(to)-249(take)-249(advantage)-249(of)-249(sub-)]TJ 1.02 0 0 1 197.529 331.534 Tm [(sequences)-261(that)-260(may)-261(be)-260(alr)18(eady)-261(in)-261(the)-260(desir)18(ed)-261(or)18(dering)-261(prior)-260(to)-261(the)]TJ 1.02 0 0 1 197.529 319.578 Tm [(subr)18(outine)-321(call;)-358(this)-321(situation)-320(is)-321(r)18(elatively)-321(common)-320(when)-321(dealing)]TJ 0.98 0 0 1 197.111 307.623 Tm [(with)-239(gr)18(oups)-239(of)-240(indices)-239(of)-240(sparse)-239(matrix)-240(entries,)-242(thus)-240(mer)19(ge-sort)-240(is)-239(the)]TJ 1.02 0 0 1 197.23 295.668 Tm [(pr)18(eferr)17(ed)-268(choice)-268(when)-268(a)-268(sorting)-268(is)-268(needed)-268(by)-269(other)-268(r)18(outines)-268(in)-268(the)]TJ 1 0 0 1 197.529 283.713 Tm [(library)111(.)]TJ 0 g 0 G 117.559 -193.275 Td [(110)]TJ 0 g 0 G @@ -22045,7 +22049,7 @@ ET endstream endobj -1729 0 obj +1740 0 obj << /Length 171 >> @@ -22053,81 +22057,81 @@ stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 99.895 705.784 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(7)-1000(Parallel)-250(environment)-250(routines)]TJ 0 g 0 G -/F62 9.9626 Tf 164.384 -615.346 Td [(111)]TJ +/F84 9.9626 Tf 164.384 -615.346 Td [(111)]TJ 0 g 0 G ET endstream endobj -1733 0 obj +1744 0 obj << -/Length 5510 +/Length 5790 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(environment)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS)-250(parallel)-250(environment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_init\050ctxt,)-525(np,)-525(basectxt,)-525(ids\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-214(subr)18(outine)-215(initializes)-214(the)-215(PSBLAS)-214(parallel)-215(envir)18(onment,)-221(de\002ning)-215(a)-214(vir)18(-)]TJ -14.944 -11.955 Td [(tual)-250(parallel)-250(machine.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_init\050ctxt,)-525(np,)-525(basectxt,)-525(ids\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 665.247 Tm [(This)-354(subr)18(outine)-353(initializes)-354(the)-353(PSBLAS)-354(parallel)-353(envir)17(onment,)-380(de\002ning)-354(a)]TJ 1 0 0 1 150.426 653.292 Tm [(virtual)-250(parallel)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0.279 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(np)]TJ 0 g 0 G -/F62 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(all)-250(available)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(all)-250(available)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(basectxt)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(basectxt)]TJ 0 g 0 G -/F62 9.9626 Tf 41.494 0 Td [(the)-321(initial)-321(communication)-321(context.)-524(The)-321(new)-321(context)-321(will)-321(be)-321(de\002ned)]TJ -16.587 -11.955 Td [(fr)18(om)-250(the)-250(pr)18(ocesses)-250(participating)-250(in)-250(the)-250(initial)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(MPI)]TJ +/F84 9.9626 Tf 1.02 0 0 1 192.199 525.77 Tm [(the)-266(initial)-266(communication)-267(context.)-367(The)-266(new)-267(context)-266(will)-266(be)-266(de\002ned)]TJ 1 0 0 1 175.611 513.815 Tm [(fr)18(om)-250(the)-250(pr)18(ocesses)-250(participating)-250(in)-250(the)-250(initial)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-560(Default:)-310(use)-250(MPI)]TJ ET q 1 0 0 1 387.574 466.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 390.563 465.994 Td [(COMM)]TJ +/F84 9.9626 Tf 390.563 465.994 Td [(COMM)]TJ ET q 1 0 0 1 424.904 466.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 427.893 465.994 Td [(WORLD.)]TJ +/F84 9.9626 Tf 427.893 465.994 Td [(WORLD.)]TJ 0 g 0 G -/F59 9.9626 Tf -277.188 -19.925 Td [(ids)]TJ +/F75 9.9626 Tf -277.188 -19.925 Td [(ids)]TJ 0 g 0 G -/F62 9.9626 Tf 18.809 0 Td [(Identities)-306(of)-307(the)-306(pr)18(ocesses)-307(to)-306(use)-306(for)-307(the)-306(new)-306(context;)-335(the)-306(ar)18(gument)-307(is)-306(ig-)]TJ 6.097 -11.955 Td [(nor)18(ed)-388(when)]TJ/F67 9.9626 Tf 58.258 0 Td [(np)]TJ/F62 9.9626 Tf 14.324 0 Td [(is)-388(not)-388(speci\002ed.)-723(This)-388(allows)-388(the)-387(pr)18(ocesses)-388(in)-388(the)-388(new)]TJ -72.582 -11.955 Td [(envir)18(onment)-250(to)-250(be)-250(in)-250(an)-250(or)18(der)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(original)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)-560(Default:)-310(use)-250(the)-250(indices)]TJ/F93 10.3811 Tf 240.57 0 Td [(\050)]TJ/F62 9.9626 Tf 4.15 0 Td [(0)-179(.)-192(.)-191(.)]TJ/F60 9.9626 Tf 19.966 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 169.514 446.069 Tm [(Identities)-374(of)-374(the)-374(pr)18(ocesses)-374(to)-374(use)-374(for)-374(the)-373(new)-374(context;)-439(the)-373(ar)17(gument)-374(is)]TJ 1.02 0 0 1 175.611 434.114 Tm [(ignor)18(ed)-287(when)]TJ/F131 9.9626 Tf 1 0 0 1 241.58 434.114 Tm [(np)]TJ/F84 9.9626 Tf 1.02 0 0 1 254.95 434.114 Tm [(is)-286(not)-286(speci\002ed.)-428(This)-286(allows)-286(the)-286(pr)17(ocesses)-286(in)-286(the)-286(new)]TJ 1 0 0 1 175.611 422.159 Tm [(envir)18(onment)-250(to)-250(be)-250(in)-250(an)-250(or)18(der)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(original)-250(one.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)111(.)-560(Default:)-310(use)-250(the)-250(indices)]TJ/F181 10.3811 Tf 240.57 0 Td [(\050)]TJ/F84 9.9626 Tf 4.15 0 Td [(0)-179(.)-192(.)-191(.)]TJ/F78 9.9626 Tf 19.966 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -322.483 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -322.483 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-285(communication)-284(context)-285(identifying)-285(the)-284(virtual)-285(parallel)-285(machine,)-293(type)]TJ/F67 9.9626 Tf 3.885 -11.955 Td [(psb_ctxt_type)]TJ/F62 9.9626 Tf 67.995 0 Td [(.)-327(Note)-256(that)-256(this)-256(is)-256(always)-256(a)-255(duplicate)-256(of)]TJ/F67 9.9626 Tf 174.426 0 Td [(basectxt)]TJ/F62 9.9626 Tf 41.842 0 Td [(,)-257(so)-256(that)]TJ -284.263 -11.955 Td [(library)-296(communications)-297(ar)18(e)-296(completely)-297(separated)-296(fr)18(om)-297(other)-296(communi-)]TJ 0 -11.955 Td [(cation)-250(operations.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -66.381 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F59 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 1.01 0 0 1 171.726 332.495 Tm [(the)-246(communication)-245(context)-246(identifying)-246(th)1(e)-246(virtual)-246(parallel)-245(machine,)-246(type)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 320.54 Tm [(psb_ctxt_type)]TJ/F84 9.9626 Tf 1.004 0 0 1 243.606 320.54 Tm [(.)-310(Note)-249(that)-250(this)-249(is)-249(always)-250(a)-249(duplicate)-249(of)]TJ/F131 9.9626 Tf 1 0 0 1 418.036 320.54 Tm [(basectxt)]TJ/F84 9.9626 Tf 1.004 0 0 1 459.879 320.54 Tm [(,)-249(so)-250(that)]TJ 0.985 0 0 1 175.611 308.585 Tm [(library)-255(communications)-256(ar)19(e)-256(completely)-255(separated)-256(fr)19(om)-256(other)-255(communica-)]TJ 1 0 0 1 175.611 296.63 Tm [(tion)-250(operations.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F75 11.9552 Tf -24.906 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS)-250(call.)]TJ + [-461(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS)-250(call.)]TJ 0 g 0 G - 0 -19.926 Td [(2.)]TJ + 0 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(It)-194(is)-195(an)-194(err)18(or)-194(to)-194(specify)-195(a)-194(value)-194(for)]TJ/F60 9.9626 Tf 158.156 0 Td [(n)-80(p)]TJ/F62 9.9626 Tf 13.378 0 Td [(gr)18(eater)-194(than)-195(the)-194(number)-194(of)-194(pr)18(ocesses)]TJ -159.081 -11.955 Td [(available)-250(in)-250(the)-250(underlying)-250(base)-250(parallel)-250(envir)18(onment.)]TJ + 0.98 0 0 1 175.611 187.041 Tm [(It)-236(is)-237(an)-236(err)18(or)-236(to)-236(specify)-237(a)-236(value)-236(for)]TJ/F78 9.9626 Tf 1 0 0 1 322.093 187.041 Tm [(n)-80(p)]TJ/F84 9.9626 Tf 0.98 0 0 1 335.842 187.041 Tm [(gr)18(eater)-236(than)-236(the)-237(number)-236(of)-236(pr)18(ocesses)]TJ 1 0 0 1 175.611 175.085 Tm [(available)-250(in)-250(the)-250(underlying)-250(base)-250(parallel)-250(envir)18(onment.)]TJ 0 g 0 G 139.477 -84.647 Td [(112)]TJ 0 g 0 G @@ -22135,55 +22139,55 @@ ET endstream endobj -1739 0 obj +1750 0 obj << -/Length 4457 +/Length 4724 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.2)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.2)]TJ 0.996 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.349 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(info)-211(\227)-211(Return)-211(information)-210(about)-211(PSBLAS)-211(parallel)-211(en-)]TJ -24.221 -13.948 Td [(vironment)]TJ +/F75 11.9552 Tf 0.996 0 0 1 150.936 706.129 Tm [(info)-250(\227)-249(Return)-250(information)-250(about)-249(PSBLAS)-250(parallel)-250(en-)]TJ 1 0 0 1 126.46 692.181 Tm [(vironment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -26.9 -18.964 Td [(call)-525(psb_info\050ctxt,)-525(iam,)-525(np\051)]TJ/F62 9.9626 Tf 14.944 -21.917 Td [(This)-397(subr)18(outine)-396(r)18(eturns)-397(information)-397(about)-396(the)-397(PSBLAS)-397(parallel)-396(envir)18(on-)]TJ -14.944 -11.956 Td [(ment,)-250(de\002ning)-250(a)-250(virtual)-250(parallel)-250(machine.)]TJ +/F131 9.9626 Tf -26.565 -18.964 Td [(call)-525(psb_info\050ctxt,)-525(iam,)-525(np\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 651.3 Tm [(This)-224(subr)19(outine)-224(r)19(eturns)-224(information)-223(about)-224(the)-224(PSBLAS)-223(parallel)-224(envir)19(onment,)]TJ 1 0 0 1 99.895 639.344 Tm [(de\002ning)-250(a)-250(virtual)-250(parallel)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(iam)]TJ 0 g 0 G -/F62 9.9626 Tf 22.137 0 Td [(Identi\002er)-250(of)-250(curr)18(ent)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 2.77 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ/F91 10.3811 Tf 134.19 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)]TJ/F91 10.3811 Tf 7.873 0 Td [(\024)]TJ/F60 9.9626 Tf 11.017 0 Td [(i)-47(a)-25(m)]TJ/F91 10.3811 Tf 18.677 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1)]TJ +/F84 9.9626 Tf 22.137 0 Td [(Identi\002er)-250(of)-250(curr)18(ent)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 2.77 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ/F179 10.3811 Tf 134.19 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F179 10.3811 Tf 7.873 0 Td [(\024)]TJ/F78 9.9626 Tf 11.017 0 Td [(i)-47(a)-25(m)]TJ/F179 10.3811 Tf 18.677 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1)]TJ 0 g 0 G -/F59 9.9626 Tf -239.579 -19.925 Td [(np)]TJ +/F75 9.9626 Tf -239.579 -19.925 Td [(np)]TJ 0 g 0 G -/F62 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 17.156 0 Td [(Number)-250(of)-250(pr)18(ocesses)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 7.751 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(For)-396(pr)18(ocesses)-396(in)-395(the)-396(virtual)-396(parallel)-396(machine)-396(the)-396(ident)1(i\002er)-396(will)-396(satisfy)]TJ 12.453 -11.955 Td [(0)]TJ/F91 10.3811 Tf 7.873 0 Td [(\024)]TJ/F60 9.9626 Tf 11.016 0 Td [(i)-47(a)-25(m)]TJ/F91 10.3811 Tf 18.678 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1;)]TJ + 1.02 0 0 1 124.802 332.495 Tm [(For)-337(pr)18(ocesses)-337(in)-337(the)-337(virtual)-337(parallel)-337(mac)1(hine)-337(the)-337(identi\002er)-337(will)-337(satisfy)]TJ 1 0 0 1 124.802 320.54 Tm [(0)]TJ/F179 10.3811 Tf 7.873 0 Td [(\024)]TJ/F78 9.9626 Tf 11.016 0 Td [(i)-47(a)-25(m)]TJ/F179 10.3811 Tf 18.678 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1;)]TJ 0 g 0 G -84.741 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(If)-349(the)-349(user)-350(has)-349(r)18(equested)-349(on)]TJ/F67 9.9626 Tf 142.217 0 Td [(psb_init)]TJ/F62 9.9626 Tf 45.321 0 Td [(a)-349(number)-349(of)-350(pr)18(ocesses)-349(less)-349(than)]TJ -175.085 -11.956 Td [(the)-321(total)-322(available)-321(in)-321(the)-322(parallel)-321(execution)-322(envir)18(onment,)-339(the)-321(r)18(emaining)]TJ 0 -11.955 Td [(pr)18(ocesses)-229(will)-228(have)-229(on)-229(r)18(eturn)]TJ/F60 9.9626 Tf 130.21 0 Td [(i)-47(a)-25(m)]TJ/F93 10.3811 Tf 18.678 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1;)-236(the)-229(on)1(ly)-229(call)-229(involving)]TJ/F67 9.9626 Tf 110.162 0 Td [(ctxt)]TJ/F62 9.9626 Tf 23.2 0 Td [(that)]TJ -301.53 -11.955 Td [(any)-250(such)-250(pr)18(ocess)-250(may)-250(execute)-250(is)-250(to)]TJ/F67 9.9626 Tf 155.296 0 Td [(psb_exit)]TJ/F62 9.9626 Tf 41.843 0 Td [(.)]TJ + 1.02 0 0 1 124.802 300.615 Tm [(If)-304(the)-303(user)-304(has)-304(r)18(equested)-304(on)]TJ/F131 9.9626 Tf 1 0 0 1 254.391 300.615 Tm [(psb_init)]TJ/F84 9.9626 Tf 1.02 0 0 1 299.32 300.615 Tm [(a)-304(number)-303(of)-304(pr)18(ocesses)-304(less)-304(than)]TJ 1.02 0 0 1 124.802 288.659 Tm [(the)-253(total)-254(available)-253(in)-253(the)-254(parallel)-253(execution)-253(envir)17(onment,)-255(the)-253(r)17(emaining)]TJ 0.992 0 0 1 124.503 276.704 Tm [(pr)18(ocesses)-251(will)-251(have)-251(on)-252(r)18(eturn)]TJ/F78 9.9626 Tf 1 0 0 1 254.782 276.704 Tm [(i)-47(a)-25(m)]TJ/F181 10.3811 Tf 18.678 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 0.992 0 0 1 292.74 276.704 Tm [(1;)-251(the)-252(only)-251(call)-251(involving)]TJ/F131 9.9626 Tf 1 0 0 1 403.066 276.704 Tm [(ctxt)]TJ/F84 9.9626 Tf 0.992 0 0 1 426.47 276.704 Tm [(that)]TJ 1 0 0 1 124.802 264.749 Tm [(any)-250(such)-250(pr)18(ocess)-250(may)-250(execute)-250(is)-250(to)]TJ/F131 9.9626 Tf 155.296 0 Td [(psb_exit)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0 g 0 G -57.662 -174.311 Td [(113)]TJ 0 g 0 G @@ -22191,52 +22195,52 @@ ET endstream endobj -1745 0 obj +1756 0 obj << -/Length 4180 +/Length 4510 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.3)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS)-250(parallel)-250(environment)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS)-250(parallel)-250(environment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_exit\050ctxt\051)]TJ 0 -11.955 Td [(call)-525(psb_exit\050ctxt,close\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(parallel)-250(virtual)-250(machine.)]TJ +/F131 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_exit\050ctxt\051)]TJ 0 -11.955 Td [(call)-525(psb_exit\050ctxt,close\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(parallel)-250(virtual)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(close)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(close)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(Whether)-369(to)-368(close)-369(all)-369(data)-368(str)8(uctur)18(es)-369(r)18(elated)-369(to)-368(the)-369(virtual)-369(parall)1(el)-369(ma-)]TJ -2.759 -11.955 Td [(chine,)-250(besides)-250(those)-250(associated)-250(with)-250(ctxt.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(variable,)-250(default)-250(value:)-310(tr)8(ue.)]TJ/F59 11.9552 Tf -24.907 -19.925 Td [(Notes)]TJ +/F84 9.9626 Tf 0.98 0 0 1 177.873 525.77 Tm [(Whether)-235(to)-235(close)-236(all)-235(data)-235(str)8(uctur)19(es)-236(r)19(elated)-235(to)-236(the)-235(virtual)-235(parallel)-235(machine,)]TJ 1 0 0 1 175.611 513.815 Tm [(besides)-250(those)-250(associated)-250(with)-250(ctxt.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(logical)-250(variable,)-250(default)-250(value:)-310(tr)8(ue.)]TJ/F75 11.9552 Tf -24.906 -19.925 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-376(r)18(outine)-376(may)-377(be)-376(called)-376(even)-376(if)-377(a)-376(pr)18(evious)-376(call)-376(to)]TJ/F67 9.9626 Tf 255.069 0 Td [(psb_info)]TJ/F62 9.9626 Tf 45.591 0 Td [(has)-376(r)18(e-)]TJ -288.206 -11.955 Td [(turned)-251(with)]TJ/F60 9.9626 Tf 55.156 0 Td [(i)-47(a)-25(m)]TJ/F93 10.3811 Tf 18.696 0 Td [(=)]TJ/F91 10.3811 Tf 11.104 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1;)-251(indeed,)-252(it)-251(it)-251(i)1(s)-251(the)-251(only)-251(r)18(outine)-251(that)-251(may)-251(be)-251(called)]TJ -93.15 -11.955 Td [(with)-250(ar)18(gument)]TJ/F67 9.9626 Tf 68.133 0 Td [(ctxt)]TJ/F62 9.9626 Tf 23.412 0 Td [(in)-250(this)-250(situation.)]TJ + 0.98 0 0 1 175.303 426.144 Tm [(This)-218(r)19(outine)-218(may)-217(be)-218(called)-217(even)-218(if)-217(a)-218(pr)18(evious)-217(call)-218(to)]TJ/F131 9.9626 Tf 1 0 0 1 396.017 426.144 Tm [(psb_info)]TJ/F84 9.9626 Tf 0.98 0 0 1 439.984 426.144 Tm [(has)-218(r)19(eturned)]TJ 1.02 0 0 1 175.193 414.189 Tm [(with)]TJ/F78 9.9626 Tf 1 0 0 1 198.707 414.189 Tm [(i)-47(a)-25(m)]TJ/F181 10.3811 Tf 19.251 0 Td [(=)]TJ/F179 10.3811 Tf 11.659 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 237.811 414.189 Tm [(1;)-291(indeed,)-283(it)-276(it)-275(is)-276(the)-275(only)-276(r)18(outine)-276(that)-275(may)-276(be)-275(called)-276(with)]TJ 1 0 0 1 175.611 402.234 Tm [(ar)18(gument)]TJ/F131 9.9626 Tf 45.39 0 Td [(ctxt)]TJ/F84 9.9626 Tf 23.412 0 Td [(in)-250(this)-250(situation.)]TJ 0 g 0 G - -103.999 -19.926 Td [(2.)]TJ + -81.255 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(A)-269(call)-269(to)-268(this)-269(r)18(outine)-269(with)]TJ/F67 9.9626 Tf 128.502 0 Td [(close=.true.)]TJ/F62 9.9626 Tf 65.442 0 Td [(implies)-269(a)-268(call)-269(to)]TJ/F67 9.9626 Tf 72.059 0 Td [(MPI_Finalize)]TJ/F62 9.9626 Tf 62.764 0 Td [(,)]TJ -316.313 -11.955 Td [(after)-250(which)-250(no)-250(parallel)-250(r)18(outine)-250(may)-250(be)-250(called.)]TJ + 1.02 0 0 1 175.223 382.308 Tm [(A)-249(call)-248(to)-249(this)-249(r)18(outine)-249(with)]TJ/F131 9.9626 Tf 1 0 0 1 292.377 382.308 Tm [(close=.true.)]TJ/F84 9.9626 Tf 1.02 0 0 1 357.669 382.308 Tm [(implies)-249(a)-248(call)-249(to)]TJ/F131 9.9626 Tf 1 0 0 1 430.357 382.308 Tm [(MPI_Finalize)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 382.308 Tm [(,)]TJ 1 0 0 1 175.611 370.353 Tm [(after)-250(which)-250(no)-250(parallel)-250(r)18(outine)-250(may)-250(be)-250(called.)]TJ 0 g 0 G - -12.454 -19.925 Td [(3.)]TJ + -12.453 -19.925 Td [(3.)]TJ 0 g 0 G - [-500(If)-289(the)-288(user)-288(whishes)-289(to)-288(use)-289(multiple)-288(communication)-289(contexts)-288(in)-289(the)-288(same)]TJ 12.454 -11.955 Td [(pr)18(ogram,)-401(or)-371(to)-371(enter)-371(and)-371(exit)-371(multiple)-371(times)-370(into)-371(the)-371(parallel)-371(envir)18(on-)]TJ 0 -11.956 Td [(ment,)-425(this)-389(r)18(outine)-390(may)-390(be)-390(called)-389(to)-390(selectively)-390(close)-390(the)-389(contexts)-390(with)]TJ/F67 9.9626 Tf 0 -11.955 Td [(close=.false.)]TJ/F62 9.9626 Tf 67.994 0 Td [(,)-202(while)-190(on)-190(the)-190(last)-190(call)-190(it)-190(should)-190(be)-190(called)-190(with)]TJ/F67 9.9626 Tf 196.919 0 Td [(close=.true.)]TJ/F62 9.9626 Tf -264.913 -11.955 Td [(to)-250(shutdown)-250(in)-250(a)-250(clean)-250(way)-250(the)-250(entir)18(e)-250(parallel)-250(envir)18(onment.)]TJ + 1.015 0 0 1 175.611 350.428 Tm [(If)-246(the)-245(user)-246(wh)1(ishes)-246(to)-245(use)-246(multiple)-245(communication)-246(contexts)-245(in)-246(the)-245(same)]TJ 1.02 0 0 1 175.313 338.473 Tm [(pr)18(ogram,)-354(or)-332(to)-332(enter)-332(and)-332(exit)-332(multiple)-332(times)-332(into)-332(the)-332(parallel)-332(envir)17(on-)]TJ 1.02 0 0 1 175.611 326.518 Tm [(ment,)-356(this)-334(r)18(outine)-334(may)-334(be)-334(called)-334(to)-333(selectively)-334(close)-334(the)-334(contexts)-334(with)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 314.562 Tm [(close=.false.)]TJ/F84 9.9626 Tf 0.98 0 0 1 243.606 314.562 Tm [(,)-206(while)-194(on)-194(the)-194(last)-194(call)-193(it)-194(should)-194(be)-194(called)-194(with)]TJ/F131 9.9626 Tf 1 0 0 1 437.006 314.562 Tm [(close=.true.)]TJ/F84 9.9626 Tf -261.395 -11.955 Td [(to)-250(shutdown)-250(in)-250(a)-250(clean)-250(way)-250(the)-250(entir)18(e)-250(parallel)-250(envir)18(onment.)]TJ 0 g 0 G 139.477 -212.169 Td [(114)]TJ 0 g 0 G @@ -22244,57 +22248,57 @@ ET endstream endobj -1752 0 obj +1763 0 obj << -/Length 2476 +/Length 2599 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.4)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.4)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(get)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(get)]TJ ET q 1 0 0 1 168.338 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 171.925 706.129 Td [(mpi)]TJ +/F75 11.9552 Tf 171.925 706.129 Td [(mpi)]TJ ET q 1 0 0 1 194.556 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 198.143 706.129 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ +/F75 11.9552 Tf 198.143 706.129 Td [(comm)-250(\227)-250(Get)-250(the)-250(MPI)-250(communicator)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -98.248 -18.964 Td [(icomm)-525(=)-525(psb_get_mpi_comm\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-417(func)1(tion)-417(r)18(eturns)-416(the)-417(MPI)-416(communicator)-417(associated)-416(with)-417(a)-416(PSBLAS)]TJ -14.944 -11.955 Td [(context)]TJ +/F131 9.9626 Tf -98.248 -18.964 Td [(icomm)-525(=)-525(psb_get_mpi_comm\050ctxt\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 665.247 Tm [(This)-345(function)-344(r)18(eturns)-345(the)-345(MP)1(I)-345(communicator)-344(associated)-345(with)-345(a)-344(PSBLAS)]TJ 1 0 0 1 99.895 653.292 Tm [(context)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-372(MPI)-371(communicator)-372(associated)-371(with)-372(the)-372(PSBLAS)-371(virtual)]TJ -47.87 -11.955 Td [(parallel)-250(machine.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ/F62 9.9626 Tf 34.165 0 Td [(The)-230(subr)18(outine)-230(version)]TJ/F67 9.9626 Tf 103.913 0 Td [(psb_get_mpicomm)]TJ/F62 9.9626 Tf 80.748 0 Td [(is)-230(still)-230(available)-230(but)-230(is)-230(depr)18(e-)]TJ -218.826 -11.955 Td [(cated.)]TJ +/F84 9.9626 Tf 1.02 0 0 1 172.363 503.852 Tm [(The)-300(MPI)-300(communicat)1(or)-300(associated)-300(with)-300(the)-300(PSBLAS)-299(virtual)]TJ 1 0 0 1 124.503 491.897 Tm [(parallel)-250(machine.)]TJ 0.299 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf 0.999 0 0 1 99.895 422.159 Tm [(Notes)]TJ/F84 9.9626 Tf 0.999 0 0 1 134.218 422.159 Tm [(The)-249(subr)18(outine)-250(version)]TJ/F131 9.9626 Tf 1 0 0 1 238.602 422.159 Tm [(psb_get_mpicomm)]TJ/F84 9.9626 Tf 0.999 0 0 1 319.54 422.159 Tm [(is)-249(still)-250(available)-249(but)-249(is)-250(depr)18(e-)]TJ 1 0 0 1 99.895 410.204 Tm [(cated.)]TJ 0 g 0 G 164.384 -319.766 Td [(115)]TJ 0 g 0 G @@ -22302,98 +22306,98 @@ ET endstream endobj -1757 0 obj +1768 0 obj << -/Length 3337 +/Length 3392 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.5)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.5)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(get)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(get)]TJ ET q 1 0 0 1 219.148 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 222.735 706.129 Td [(mpi)]TJ +/F75 11.9552 Tf 222.735 706.129 Td [(mpi)]TJ ET q 1 0 0 1 245.365 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 248.952 706.129 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ +/F75 11.9552 Tf 248.952 706.129 Td [(rank)-250(\227)-250(Get)-250(the)-250(MPI)-250(rank)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -98.247 -18.964 Td [(rank)-525(=)-525(psb_get_mpi_rank\050ctxt,)-525(id\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(function)-250(r)18(eturns)-250(the)-250(MPI)-250(rank)-250(of)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 257.337 0 Td [(i)-32(d)]TJ +/F131 9.9626 Tf -98.247 -18.964 Td [(rank)-525(=)-525(psb_get_mpi_rank\050ctxt,)-525(id\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(function)-250(r)18(eturns)-250(the)-250(MPI)-250(rank)-250(of)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 257.337 0 Td [(i)-32(d)]TJ 0 g 0 G -/F59 9.9626 Tf -272.281 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -272.281 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(id)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(id)]TJ 0 g 0 G -/F62 9.9626 Tf 14.386 0 Td [(Identi\002er)-250(of)-250(a)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(0)]TJ/F91 10.3811 Tf 141.938 0 Td [(\024)]TJ/F60 9.9626 Tf 11.017 0 Td [(i)-32(d)]TJ/F91 10.3811 Tf 11.086 0 Td [(\024)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.503 0 Td [(\000)]TJ/F62 9.9626 Tf 10.132 0 Td [(1)]TJ +/F84 9.9626 Tf 14.386 0 Td [(Identi\002er)-250(of)-250(a)-250(pr)18(ocess)-250(in)-250(the)-250(PSBLAS)-250(virtual)-250(parallel)-250(machine.)]TJ 10.521 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(0)]TJ/F179 10.3811 Tf 141.938 0 Td [(\024)]TJ/F78 9.9626 Tf 11.017 0 Td [(i)-32(d)]TJ/F179 10.3811 Tf 11.086 0 Td [(\024)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.503 0 Td [(\000)]TJ/F84 9.9626 Tf 10.132 0 Td [(1)]TJ 0 g 0 G -/F59 9.9626 Tf -223.669 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -223.669 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(Funciton)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(The)-250(MPI)-250(rank)-250(associated)-250(with)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 224.291 0 Td [(i)-32(d)]TJ/F62 9.9626 Tf 8.195 0 Td [(.)]TJ -280.356 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ/F59 11.9552 Tf -71.651 -33.873 Td [(Notes)]TJ/F62 9.9626 Tf 35.734 0 Td [(The)-388(subr)18(outine)-387(version)]TJ/F67 9.9626 Tf 108.62 0 Td [(psb_get_rank)]TJ/F62 9.9626 Tf 66.626 0 Td [(is)-388(still)-387(available)-388(but)-387(is)-388(depr)18(e-)]TJ -210.98 -11.955 Td [(cated.)]TJ +/F84 9.9626 Tf 72.468 0 Td [(The)-250(MPI)-250(rank)-250(associated)-250(with)-250(the)-250(PSBLAS)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 224.292 0 Td [(i)-32(d)]TJ/F84 9.9626 Tf 8.194 0 Td [(.)]TJ -280.047 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ/F75 11.9552 Tf 0.98 0 0 1 150.705 378.323 Tm [(Notes)]TJ/F84 9.9626 Tf 0.98 0 0 1 184.238 378.323 Tm [(The)-235(subr)18(outine)-235(version)]TJ/F131 9.9626 Tf 1 0 0 1 286.223 378.323 Tm [(psb_get_rank)]TJ/F84 9.9626 Tf 0.98 0 0 1 351.286 378.323 Tm [(is)-235(still)-236(available)-235(but)-235(is)-236(depr)18(e)1(cated.)]TJ 0 g 0 G - 164.384 -275.93 Td [(116)]TJ + 1 0 0 1 315.088 90.438 Tm [(116)]TJ 0 g 0 G ET endstream endobj -1761 0 obj +1772 0 obj << -/Length 1155 +/Length 1167 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.6)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.6)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(wtime)-250(\227)-250(W)74(all)-250(clock)-250(timing)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(wtime)-250(\227)-250(W)74(all)-250(clock)-250(timing)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -18.964 Td [(time)-525(=)-525(psb_wtime\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-298(function)-298(r)18(eturns)-299(a)-298(wall)-298(clock)-298(timer)74(.)-455(The)-298(r)18(esolution)-298(of)-299(the)-298(timer)-298(is)-298(de-)]TJ -14.944 -11.955 Td [(pendent)-250(on)-250(the)-250(underlying)-250(parallel)-250(envir)18(onment)-250(implementation.)]TJ +/F131 9.9626 Tf -51.121 -18.964 Td [(time)-525(=)-525(psb_wtime\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 665.247 Tm [(This)-374(function)-374(r)17(eturns)-374(a)-374(wall)-374(clock)-374(timer)72(.)-691(The)-374(r)18(esolution)-375(of)-374(the)-374(timer)-374(is)]TJ 1 0 0 1 99.895 653.292 Tm [(dependent)-250(on)-250(the)-250(underlying)-250(parallel)-250(envir)18(onment)-250(implementation.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Exit)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(Function)-250(value)]TJ 0 g 0 G -/F62 9.9626 Tf 72.777 0 Td [(the)-250(elapsed)-250(time)-250(in)-250(seconds.)]TJ -47.87 -11.955 Td [(Returned)-250(as:)-310(a)]TJ/F67 9.9626 Tf 66.022 0 Td [(real\050psb_dpk_\051)]TJ/F62 9.9626 Tf 75.715 0 Td [(variable.)]TJ +/F84 9.9626 Tf 72.777 0 Td [(the)-250(elapsed)-250(time)-250(in)-250(seconds.)]TJ -47.87 -11.955 Td [(Returned)-250(as:)-310(a)]TJ/F131 9.9626 Tf 66.022 0 Td [(real\050psb_dpk_\051)]TJ/F84 9.9626 Tf 75.715 0 Td [(variable.)]TJ 0 g 0 G -2.26 -491.123 Td [(117)]TJ 0 g 0 G @@ -22401,44 +22405,44 @@ ET endstream endobj -1765 0 obj +1776 0 obj << -/Length 1388 +/Length 1466 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.7)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.7)]TJ 0.998 0 0 1 177.604 706.129 Tm [(psb)]TJ ET q -1 0 0 1 198.238 706.328 cm +1 0 0 1 198.199 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(barrier)-240(\227)-240(Sinchronization)-239(point)-240(parallel)-240(environment)]TJ +/F75 11.9552 Tf 0.998 0 0 1 201.785 706.129 Tm [(barrier)-250(\227)-251(Sinchronization)-250(point)-250(parallel)-250(environment)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -18.964 Td [(call)-525(psb_barrier\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-358(subr)18(outine)-357(acts)-358(as)-358(an)-358(explicit)-357(synchr)18(onization)-358(point)-358(for)-357(the)-358(PSBLAS)]TJ -14.944 -11.955 Td [(parallel)-250(virtual)-250(machine.)]TJ +/F131 9.9626 Tf 1 0 0 1 150.705 687.165 Tm [(call)-525(psb_barrier\050ctxt\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 665.247 Tm [(This)-293(subr)18(outine)-293(acts)-293(as)-293(an)-293(explicit)-293(synchr)18(onization)-293(point)-293(for)-293(the)-293(PSBLAS)]TJ 1 0 0 1 150.406 653.292 Tm [(parallel)-250(virtual)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0.299 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G - 139.477 -455.258 Td [(118)]TJ + 139.476 -455.258 Td [(118)]TJ 0 g 0 G ET endstream endobj -1769 0 obj +1780 0 obj << /Length 1283 >> @@ -22446,28 +22450,28 @@ stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.8)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.8)-1000(psb)]TJ ET q 1 0 0 1 147.429 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ +/F75 11.9552 Tf 151.016 706.129 Td [(abort)-250(\227)-250(Abort)-250(a)-250(computation)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_abort\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(aborts)-250(computation)-250(on)-250(the)-250(parallel)-250(virtual)-250(machine.)]TJ +/F131 9.9626 Tf -51.121 -18.964 Td [(call)-525(psb_abort\050ctxt\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(aborts)-250(computation)-250(on)-250(the)-250(parallel)-250(virtual)-250(machine.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G 139.477 -467.213 Td [(119)]TJ 0 g 0 G @@ -22475,91 +22479,92 @@ ET endstream endobj -1773 0 obj +1784 0 obj << -/Length 5526 +/Length 6066 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.9)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.9)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(bcast)-250(\227)-250(Broadcast)-250(data)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(bcast)-250(\227)-250(Broadcast)-250(data)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -51.12 -20.269 Td [(call)-525(psb_bcast\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-221(subr)18(outine)-222(implements)-221(a)-221(br)18(oadcast)-222(operation)-221(based)-221(on)-222(the)-221(underlying)]TJ -14.944 -11.955 Td [(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -51.12 -19.198 Td [(call)-525(psb_bcast\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.992 0 0 1 165.649 664.53 Tm [(This)-251(subr)18(outine)-251(implements)-251(a)-251(br)19(oadcast)-251(operation)-251(based)-251(on)-251(the)-251(underlying)]TJ 1 0 0 1 150.705 652.575 Tm [(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.619 Td [(ctxt)]TJ + 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(the)-250(r)18(oot)-250(pr)18(ocess,)-250(the)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-344(a)-344(rank)-344(1)-344(or)-344(2)-344(array)111(,)-367(or)-344(a)-344(character)-344(or)-344(logical)-344(variable,)-367(which)-344(may)-344(be)]TJ 0 -11.955 Td [(a)-377(scalar)-377(or)-377(rank)-377(1)-377(array)111(.)-1067(T)90(ype,)-409(kind,)-409(rank)-377(and)-376(size)-377(must)-377(agr)18(ee)-377(on)-377(all)]TJ 0 -11.955 Td [(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(the)-250(r)18(oot)-250(pr)18(ocess,)-250(the)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.98 0 0 1 175.611 463.465 Tm [(a)-235(rank)-235(1)-235(or)-235(2)-235(array)113(,)-239(or)-235(a)-235(character)-235(or)-235(logical)-235(variable,)-239(which)-235(may)-236(be)-235(a)-235(scalar)]TJ 1 0 0 1 175.611 451.509 Tm [(or)-250(rank)-250(1)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -20.408 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Root)-250(pr)18(ocess)-250(holding)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 1.654 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.503 0 Td [(\000)]TJ/F62 9.9626 Tf 10.132 0 Td [(1,)-250(default)-250(0)]TJ +/F84 9.9626 Tf 23.252 0 Td [(Root)-250(pr)18(ocess)-250(holding)-250(data)-250(to)-250(be)-250(br)18(oadcast.)]TJ 1.654 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.851 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 10.986 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.923 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(0)]TJ 0 g 0 G -/F59 9.9626 Tf -246.025 -22.618 Td [(mode)]TJ +/F75 9.9626 Tf -246.024 -20.409 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(120)]TJ + 0 -20.408 Td [(dat)]TJ +0 g 0 G +/F84 9.9626 Tf 19.367 0 Td [(On)-250(all)-250(pr)18(ocesses)-250(other)-250(than)-250(r)18(oot,)-250(the)-250(br)18(oadcasted)-250(data.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ +0 g 0 G + 79.263 -29.888 Td [(120)]TJ 0 g 0 G ET endstream endobj -1777 0 obj +1788 0 obj << -/Length 5329 +/Length 5433 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 682.219 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 0.98 0 0 1 124.802 670.263 Tm [(or)-245(a)-245(rank)-245(1)-245(or)-245(2)-245(array)114(,)-247(or)-245(a)-245(character)-245(or)-245(logical)-245(scalar)76(.)-558(T)92(ype,)-247(kind,)-247(rank)-245(and)]TJ 1 0 0 1 124.802 658.308 Tm [(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(all)-250(pr)18(ocesses)-250(other)-250(than)-250(r)18(oot,)-250(the)-250(br)18(oadcasted)-250(data.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-315(a)-314(rank)-315(1)-315(or)-314(2)-315(array)111(,)-331(or)-314(a)-315(character)-315(or)-314(logical)-315(scalar)74(.)-819(T)90(ype,)-330(kind,)-331(rank)]TJ 0 -11.955 Td [(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(request)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.956 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 417.212 cm +1 0 0 1 124.802 441.123 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22568,7 +22573,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 434.448 Td [(call)]TJ +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ 0 g 0 G [-525(psb_bcast\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -22587,14 +22592,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 302.642 cm +1 0 0 1 124.802 326.552 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22603,7 +22608,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 352.754 Td [(call)]TJ +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ 0 g 0 G [-525(psb_bcast\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22622,16 +22627,16 @@ BT [(bcast_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -23.537 -10.959 Td [(.......)]TJ + -23.537 -10.958 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_bcast\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22651,98 +22656,98 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -218.48 Td [(121)]TJ +/F84 9.9626 Tf 103.537 -242.391 Td [(121)]TJ 0 g 0 G ET endstream endobj -1786 0 obj +1797 0 obj << -/Length 5829 +/Length 6205 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.10)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.10)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(sum)-250(\227)-250(Global)-250(sum)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_sum\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -22.401 Td [(This)-353(subr)18(outine)-353(implements)-354(a)-353(sum)-353(r)18(eduction)-353(operation)-353(based)-354(on)-353(the)-353(un-)]TJ -14.944 -11.955 Td [(derlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_sum\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.991 0 0 1 165.649 664.53 Tm [(This)-253(subr)18(outine)-253(implements)-254(a)-253(sum)-253(r)18(eduction)-253(operation)-254(based)-253(on)-253(the)-253(under)18(-)]TJ 1 0 0 1 150.705 652.575 Tm [(lying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.409 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(sum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.956 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(sum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 175.611 463.465 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-253(all)-252(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.408 Td [(root)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 443.056 Tm [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-250(to)-250(hold)-250(the)-250(\002nal)-250(sum,)-250(or)]TJ/F91 10.3811 Tf 143.744 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-250(to)-250(make)-250(it)-250(available)-250(on)-250(all)-250(pr)18(ocesses.)]TJ -150.284 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 23.252 0 Td [(Pr)18(ocess)-250(to)-250(hold)-250(the)-250(\002nal)-250(sum,)-250(or)]TJ/F179 10.3811 Tf 143.745 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)-250(to)-250(make)-250(it)-250(available)-250(on)-250(all)-250(pr)18(ocesses.)]TJ -150.285 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -20.409 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -20.408 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.956 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.955 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 374.827 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 362.871 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 315.051 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 303.096 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 303.096 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 303.096 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 291.14 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 291.14 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 291.14 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 291.14 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 279.185 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -32.364 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.363 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.956 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 199.001 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 199.001 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 199.001 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 187.046 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.401 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.401 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G - 0 -20.408 Td [(dat)]TJ + 0 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(sum)-250(operation.)]TJ 5.54 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.781 0 Td [(.)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(sum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ 0 g 0 G - 79.264 -29.887 Td [(122)]TJ + 73.405 -29.888 Td [(122)]TJ 0 g 0 G ET endstream endobj -1790 0 obj +1801 0 obj << -/Length 4964 +/Length 5228 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.956 Td [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ 0 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.802 706.129 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 694.174 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 1 0 0 1 124.802 682.219 Tm [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ -0.309 -11.956 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 602.517 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 602.517 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 602.517 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 590.562 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 548.719 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 548.719 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 548.719 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 536.764 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G - -12.453 -19.926 Td [(2.)]TJ + -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 516.839 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 516.839 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 516.839 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 516.839 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 516.839 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 504.884 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 492.928 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 441.123 cm +1 0 0 1 124.802 453.078 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22751,7 +22756,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 458.358 Td [(call)]TJ +/F231 8.9664 Tf 137.205 470.313 Td [(call)]TJ 0 g 0 G [-525(psb_sum\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -22770,14 +22775,14 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 423.19 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 423.19 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 423.19 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 423.19 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 423.19 Tm [(be)]TJ 1 0 0 1 124.802 411.235 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 326.552 cm +1 0 0 1 124.802 338.507 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -22786,7 +22791,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 376.664 Td [(call)]TJ +/F231 8.9664 Tf 137.205 388.62 Td [(call)]TJ 0 g 0 G [-525(psb_sum\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22805,16 +22810,16 @@ BT [(sum_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -23.537 -10.958 Td [(.......)]TJ + -23.537 -10.959 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_sum\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22834,92 +22839,92 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -242.391 Td [(123)]TJ +/F84 9.9626 Tf 103.537 -254.346 Td [(123)]TJ 0 g 0 G ET endstream endobj -1797 0 obj +1808 0 obj << -/Length 5548 +/Length 5884 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.11)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.11)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(max)-250(\227)-250(Global)-250(maximum)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_max\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-354(subr)18(outine)-354(implements)-354(a)-354(maximum)-354(valuer)18(eduction)-354(operation)-354(based)]TJ -14.944 -11.955 Td [(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_max\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 165.649 661.249 Tm [(This)-253(subr)18(outine)-253(implements)-253(a)-253(maximum)-253(valuer)19(eduction)-253(operation)-253(based)-254(on)]TJ 1 0 0 1 150.705 649.294 Tm [(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -22.619 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -22.619 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.955 Td [(1)-250(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.983 0 0 1 175.611 463.851 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(which)-255(may)-255(be)-255(a)-255(scalar)76(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 175.611 451.896 Tm [(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -22.619 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-255(to)-255(hold)-255(the)-255(\002nal)-255(maximum,)-257(or)]TJ/F91 10.3811 Tf 170.502 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-255(to)-255(make)-255(it)-255(available)-255(on)-255(all)-255(pr)18(o-)]TJ -177.042 -11.955 Td [(cesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 1.009 0 0 1 173.957 429.277 Tm [(Pr)18(ocess)-247(to)-247(hold)-247(the)-247(\002nal)-247(maximum,)-247(or)]TJ/F179 10.3811 Tf 1 0 0 1 345.41 429.277 Tm [(\000)]TJ/F84 9.9626 Tf 1.009 0 0 1 353.604 429.277 Tm [(1)-247(to)-247(make)-247(it)-247(available)-247(on)-246(all)-247(pr)17(o-)]TJ 1 0 0 1 175.611 417.322 Tm [(cesses.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 334.928 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 322.973 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 275.152 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 263.197 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 263.197 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 263.197 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 251.242 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 251.242 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 251.242 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 251.242 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 239.286 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -34.573 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 156.892 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 156.892 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 156.892 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 144.937 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -24.611 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(124)]TJ +/F84 9.9626 Tf 164.383 -29.888 Td [(124)]TJ 0 g 0 G ET endstream endobj -1801 0 obj +1812 0 obj << -/Length 5227 +/Length 5603 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.955 Td [(1)-250(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 0.983 0 0 1 124.802 658.308 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(w)1(hich)-255(may)-255(be)-255(a)-256(s)1(calar)75(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 124.802 646.353 Tm [(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 578.607 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 578.607 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 578.607 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 566.652 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 524.809 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 524.809 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 524.809 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 512.854 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.926 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 492.928 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 492.928 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 492.928 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 492.928 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 492.928 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 480.973 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 469.018 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -22933,7 +22938,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 446.403 Td [(call)]TJ +/F231 8.9664 Tf 137.205 446.403 Td [(call)]TJ 0 g 0 G [-525(psb_max\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -22952,9 +22957,9 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.956 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 399.28 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 399.28 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 399.28 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 399.28 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 399.28 Tm [(be)]TJ 1 0 0 1 124.802 387.324 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -22968,7 +22973,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 364.709 Td [(call)]TJ +/F231 8.9664 Tf 137.205 364.709 Td [(call)]TJ 0 g 0 G [-525(psb_max\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -22991,12 +22996,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.958 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.958 Td [(call)]TJ 0 g 0 G [-525(psb_max\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -23016,607 +23021,480 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -230.436 Td [(125)]TJ +/F84 9.9626 Tf 103.537 -230.436 Td [(125)]TJ 0 g 0 G ET endstream endobj -1808 0 obj +1819 0 obj << -/Length 5813 +/Length 6144 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.12)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.12)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(min)-250(\227)-250(Global)-250(minimum)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_min\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -22.401 Td [(This)-328(subr)18(outine)-327(implements)-328(a)-328(minimum)-327(value)-328(r)18(eduction)-328(o)1(peration)-328(based)]TJ -14.944 -11.955 Td [(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_min\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 664.53 Tm [(This)-247(subr)18(outine)-247(implements)-246(a)-247(minimum)-247(value)-246(r)17(eduction)-246(operation)-247(based)]TJ 1 0 0 1 150.705 652.575 Tm [(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.409 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.956 Td [(1)-250(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.983 0 0 1 175.611 475.42 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(which)-255(may)-255(be)-255(a)-255(scalar)76(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 175.611 463.465 Tm [(or)-250(2)-250(array)111(.)-560(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.408 Td [(root)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.956 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.955 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -32.364 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.956 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.401 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.54 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.781 0 Td [(.)]TJ -0 g 0 G - 79.264 -29.887 Td [(126)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G -ET - -endstream -endobj -1812 0 obj -<< -/Length 4946 ->> -stream -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 124.802 706.129 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-264(as:)-339(an)-264(integer)-264(or)-265(r)18(eal)-264(variable,)-268(which)-264(may)-264(be)-264(a)-265(scalar)74(,)-268(or)-264(a)-264(rank)]TJ 0 -11.956 Td [(1)-250(or)-250(2)-250(array)111(.)]TJ 0 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ -0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ -0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ -0 g 0 G - -12.453 -19.926 Td [(2.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 124.802 441.123 cm -0 0 318.804 27.895 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 137.205 458.358 Td [(call)]TJ -0 g 0 G - [-525(psb_min\050ctxt,dat,&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 23.537 -10.959 Td [(&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(mode)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [(ior)]TJ -0 g 0 G - [(\050psb_collective_start_,psb_collective_end_\051\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -/F62 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ -0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 124.802 326.552 cm -0 0 318.804 60.772 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 137.205 376.664 Td [(call)]TJ -0 g 0 G - [-525(psb_min\050ctxt,dat,mode)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(psb_collective_start_,&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 23.537 -10.959 Td [(&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(request)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(min_request\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - -23.537 -10.958 Td [(.......)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ -0 g 0 G - [-525(psb_min\050ctxt,dat,mode)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(psb_collective_end_,&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 23.537 -10.959 Td [(&)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(request)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(min_request\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0 g 0 G -/F62 9.9626 Tf 103.537 -242.391 Td [(127)]TJ + 79.263 -29.888 Td [(126)]TJ 0 g 0 G ET endstream endobj -1708 0 obj +1712 0 obj << /Type /ObjStm /N 100 -/First 970 -/Length 9209 ->> -stream -1704 0 1710 107 1712 225 417 283 1709 340 1715 447 1717 565 1718 624 1719 683 1720 742 -1721 801 1722 860 1723 919 1724 978 1725 1037 1726 1096 1714 1155 1728 1275 1730 1393 421 1451 -1727 1508 1732 1589 1734 1707 425 1766 1735 1824 1736 1883 1731 1942 1738 2075 1740 2193 429 2251 -1741 2308 1742 2365 1737 2421 1744 2554 1746 2672 433 2731 1747 2789 1748 2848 1749 2907 1743 2966 -1751 3099 1753 3217 437 3275 1750 3332 1756 3426 1758 3544 441 3603 1755 3661 1760 3781 1762 3899 -445 3957 1759 4014 1764 4108 1766 4226 449 4285 1763 4343 1768 4437 1770 4555 453 4613 1767 4670 -1772 4764 1774 4882 457 4941 1771 4999 1776 5146 1778 5264 1779 5322 1780 5380 1781 5438 1775 5496 -1785 5633 1787 5751 461 5810 1784 5868 1789 6015 1791 6133 1792 6191 1793 6249 1794 6307 1788 6365 -1796 6502 1798 6620 465 6679 1795 6737 1800 6884 1802 7002 1803 7060 1804 7118 1805 7176 1799 7233 -1807 7370 1809 7488 469 7547 1806 7605 1811 7752 1813 7870 1814 7928 1815 7986 1816 8044 1810 8102 -% 1704 0 obj +/First 974 +/Length 9446 +>> +stream +1705 0 1717 122 1713 279 1714 424 1715 571 1719 718 413 777 1716 835 1721 943 1723 1061 +417 1119 1720 1176 1726 1284 1728 1402 1729 1461 1730 1520 1731 1579 1732 1638 1733 1697 1734 1756 +1735 1815 1736 1874 1737 1933 1725 1992 1739 2114 1741 2232 421 2290 1738 2347 1743 2428 1745 2546 +425 2605 1746 2663 1747 2722 1742 2781 1749 2917 1751 3035 429 3093 1752 3150 1753 3207 1748 3263 +1755 3399 1757 3517 433 3576 1758 3634 1759 3693 1760 3752 1754 3811 1762 3947 1764 4065 437 4123 +1761 4180 1767 4275 1769 4393 441 4452 1766 4510 1771 4632 1773 4750 445 4808 1770 4865 1775 4960 +1777 5078 449 5137 1774 5195 1779 5290 1781 5408 453 5466 1778 5523 1783 5618 1785 5736 457 5795 +1782 5853 1787 6004 1789 6122 1790 6180 1791 6238 1792 6296 1786 6354 1796 6492 1798 6610 461 6669 +1795 6727 1800 6878 1802 6996 1803 7054 1804 7112 1805 7169 1799 7226 1807 7364 1809 7482 465 7541 +1806 7599 1811 7750 1813 7868 1814 7926 1815 7984 1816 8042 1810 8099 1818 8237 1820 8355 469 8414 +% 1705 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1710 0 obj +% 1717 0 obj << /Type /Page -/Contents 1711 0 R -/Resources 1709 0 R +/Contents 1718 0 R +/Resources 1716 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1685 0 R +/Annots [ 1713 0 R 1714 0 R 1715 0 R ] >> -% 1712 0 obj +% 1713 0 obj << -/D [1710 0 R /XYZ 98.895 753.953 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 527.942 420.271 540.002] +/A << /S /GoTo /D (spdata) >> >> -% 417 0 obj +% 1714 0 obj << -/D [1710 0 R /XYZ 99.895 716.092 null] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 460.196 409.811 472.256] +/A << /S /GoTo /D (descdata) >> >> -% 1709 0 obj +% 1715 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.126 404.405 443.414 416.465] +/A << /S /GoTo /D (precdata) >> >> -% 1715 0 obj +% 1719 0 obj +<< +/D [1717 0 R /XYZ 149.705 753.953 null] +>> +% 413 0 obj +<< +/D [1717 0 R /XYZ 150.705 716.092 null] +>> +% 1716 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1721 0 obj << /Type /Page -/Contents 1716 0 R -/Resources 1714 0 R +/Contents 1722 0 R +/Resources 1720 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1724 0 R >> -% 1717 0 obj +% 1723 0 obj << -/D [1715 0 R /XYZ 149.705 753.953 null] +/D [1721 0 R /XYZ 98.895 753.953 null] >> -% 1718 0 obj +% 417 0 obj << -/D [1715 0 R /XYZ 150.705 701.929 null] +/D [1721 0 R /XYZ 99.895 716.092 null] >> -% 1719 0 obj +% 1720 0 obj << -/D [1715 0 R /XYZ 150.705 668.729 null] +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] >> -% 1720 0 obj +% 1726 0 obj << -/D [1715 0 R /XYZ 150.705 624.894 null] +/Type /Page +/Contents 1727 0 R +/Resources 1725 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1724 0 R >> -% 1721 0 obj +% 1728 0 obj << -/D [1715 0 R /XYZ 150.705 555.872 null] +/D [1726 0 R /XYZ 149.705 753.953 null] >> -% 1722 0 obj +% 1729 0 obj << -/D [1715 0 R /XYZ 150.705 500.082 null] +/D [1726 0 R /XYZ 150.705 701.929 null] >> -% 1723 0 obj +% 1730 0 obj << -/D [1715 0 R /XYZ 150.705 468.201 null] +/D [1726 0 R /XYZ 150.705 668.729 null] >> -% 1724 0 obj +% 1731 0 obj << -/D [1715 0 R /XYZ 150.705 425.023 null] +/D [1726 0 R /XYZ 150.705 624.894 null] >> -% 1725 0 obj +% 1732 0 obj << -/D [1715 0 R /XYZ 150.705 382.522 null] +/D [1726 0 R /XYZ 150.705 555.872 null] >> -% 1726 0 obj +% 1733 0 obj << -/D [1715 0 R /XYZ 150.705 354.627 null] +/D [1726 0 R /XYZ 150.705 500.082 null] >> -% 1714 0 obj +% 1734 0 obj +<< +/D [1726 0 R /XYZ 150.705 468.201 null] +>> +% 1735 0 obj +<< +/D [1726 0 R /XYZ 150.705 425.023 null] +>> +% 1736 0 obj +<< +/D [1726 0 R /XYZ 150.705 382.522 null] +>> +% 1737 0 obj +<< +/D [1726 0 R /XYZ 150.705 354.627 null] +>> +% 1725 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1728 0 obj +% 1739 0 obj << /Type /Page -/Contents 1729 0 R -/Resources 1727 0 R +/Contents 1740 0 R +/Resources 1738 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1724 0 R >> -% 1730 0 obj +% 1741 0 obj << -/D [1728 0 R /XYZ 98.895 753.953 null] +/D [1739 0 R /XYZ 98.895 753.953 null] >> % 421 0 obj << -/D [1728 0 R /XYZ 99.895 716.092 null] +/D [1739 0 R /XYZ 99.895 716.092 null] >> -% 1727 0 obj +% 1738 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1732 0 obj +% 1743 0 obj << /Type /Page -/Contents 1733 0 R -/Resources 1731 0 R +/Contents 1744 0 R +/Resources 1742 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1724 0 R >> -% 1734 0 obj +% 1745 0 obj << -/D [1732 0 R /XYZ 149.705 753.953 null] +/D [1743 0 R /XYZ 149.705 753.953 null] >> % 425 0 obj << -/D [1732 0 R /XYZ 150.705 716.092 null] +/D [1743 0 R /XYZ 150.705 716.092 null] >> -% 1735 0 obj +% 1746 0 obj << -/D [1732 0 R /XYZ 150.705 222.691 null] +/D [1743 0 R /XYZ 150.705 222.691 null] >> -% 1736 0 obj +% 1747 0 obj << -/D [1732 0 R /XYZ 150.705 200.171 null] +/D [1743 0 R /XYZ 150.705 200.171 null] >> -% 1731 0 obj +% 1742 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F93 915 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1738 0 obj +% 1749 0 obj << /Type /Page -/Contents 1739 0 R -/Resources 1737 0 R +/Contents 1750 0 R +/Resources 1748 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1724 0 R >> -% 1740 0 obj +% 1751 0 obj << -/D [1738 0 R /XYZ 98.895 753.953 null] +/D [1749 0 R /XYZ 98.895 753.953 null] >> % 429 0 obj << -/D [1738 0 R /XYZ 99.895 716.092 null] +/D [1749 0 R /XYZ 99.895 716.092 null] >> -% 1741 0 obj +% 1752 0 obj << -/D [1738 0 R /XYZ 99.895 348.22 null] +/D [1749 0 R /XYZ 99.895 348.22 null] >> -% 1742 0 obj +% 1753 0 obj << -/D [1738 0 R /XYZ 99.895 313.8 null] +/D [1749 0 R /XYZ 99.895 313.8 null] >> -% 1737 0 obj +% 1748 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F78 674 0 R /F181 923 0 R >> /ProcSet [ /PDF /Text ] >> -% 1744 0 obj +% 1755 0 obj << /Type /Page -/Contents 1745 0 R -/Resources 1743 0 R +/Contents 1756 0 R +/Resources 1754 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1713 0 R +/Parent 1724 0 R >> -% 1746 0 obj +% 1757 0 obj << -/D [1744 0 R /XYZ 149.705 753.953 null] +/D [1755 0 R /XYZ 149.705 753.953 null] >> % 433 0 obj << -/D [1744 0 R /XYZ 150.705 716.092 null] +/D [1755 0 R /XYZ 150.705 716.092 null] >> -% 1747 0 obj +% 1758 0 obj << -/D [1744 0 R /XYZ 150.705 441.869 null] +/D [1755 0 R /XYZ 150.705 441.869 null] >> -% 1748 0 obj +% 1759 0 obj << -/D [1744 0 R /XYZ 150.705 395.439 null] +/D [1755 0 R /XYZ 150.705 395.439 null] >> -% 1749 0 obj +% 1760 0 obj << -/D [1744 0 R /XYZ 150.705 363.559 null] +/D [1755 0 R /XYZ 150.705 363.559 null] >> -% 1743 0 obj +% 1754 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1751 0 obj +% 1762 0 obj << /Type /Page -/Contents 1752 0 R -/Resources 1750 0 R +/Contents 1763 0 R +/Resources 1761 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1765 0 R >> -% 1753 0 obj +% 1764 0 obj << -/D [1751 0 R /XYZ 98.895 753.953 null] +/D [1762 0 R /XYZ 98.895 753.953 null] >> % 437 0 obj << -/D [1751 0 R /XYZ 99.895 716.092 null] +/D [1762 0 R /XYZ 99.895 716.092 null] >> -% 1750 0 obj +% 1761 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1756 0 obj +% 1767 0 obj << /Type /Page -/Contents 1757 0 R -/Resources 1755 0 R +/Contents 1768 0 R +/Resources 1766 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1765 0 R >> -% 1758 0 obj +% 1769 0 obj << -/D [1756 0 R /XYZ 149.705 753.953 null] +/D [1767 0 R /XYZ 149.705 753.953 null] >> % 441 0 obj << -/D [1756 0 R /XYZ 150.705 716.092 null] +/D [1767 0 R /XYZ 150.705 716.092 null] >> -% 1755 0 obj +% 1766 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1760 0 obj +% 1771 0 obj << /Type /Page -/Contents 1761 0 R -/Resources 1759 0 R +/Contents 1772 0 R +/Resources 1770 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1765 0 R >> -% 1762 0 obj +% 1773 0 obj << -/D [1760 0 R /XYZ 98.895 753.953 null] +/D [1771 0 R /XYZ 98.895 753.953 null] >> % 445 0 obj << -/D [1760 0 R /XYZ 99.895 716.092 null] +/D [1771 0 R /XYZ 99.895 716.092 null] >> -% 1759 0 obj +% 1770 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1764 0 obj +% 1775 0 obj << /Type /Page -/Contents 1765 0 R -/Resources 1763 0 R +/Contents 1776 0 R +/Resources 1774 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1765 0 R >> -% 1766 0 obj +% 1777 0 obj << -/D [1764 0 R /XYZ 149.705 753.953 null] +/D [1775 0 R /XYZ 149.705 753.953 null] >> % 449 0 obj << -/D [1764 0 R /XYZ 150.705 716.092 null] +/D [1775 0 R /XYZ 150.705 716.092 null] >> -% 1763 0 obj +% 1774 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1768 0 obj +% 1779 0 obj << /Type /Page -/Contents 1769 0 R -/Resources 1767 0 R +/Contents 1780 0 R +/Resources 1778 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1765 0 R >> -% 1770 0 obj +% 1781 0 obj << -/D [1768 0 R /XYZ 98.895 753.953 null] +/D [1779 0 R /XYZ 98.895 753.953 null] >> % 453 0 obj << -/D [1768 0 R /XYZ 99.895 716.092 null] +/D [1779 0 R /XYZ 99.895 716.092 null] >> -% 1767 0 obj +% 1778 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1772 0 obj +% 1783 0 obj << /Type /Page -/Contents 1773 0 R -/Resources 1771 0 R +/Contents 1784 0 R +/Resources 1782 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1754 0 R +/Parent 1765 0 R >> -% 1774 0 obj +% 1785 0 obj << -/D [1772 0 R /XYZ 149.705 753.953 null] +/D [1783 0 R /XYZ 149.705 753.953 null] >> % 457 0 obj << -/D [1772 0 R /XYZ 150.705 716.092 null] ->> -% 1771 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R /F91 914 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1776 0 obj -<< -/Type /Page -/Contents 1777 0 R -/Resources 1775 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R ->> -% 1778 0 obj -<< -/D [1776 0 R /XYZ 98.895 753.953 null] ->> -% 1779 0 obj -<< -/D [1776 0 R /XYZ 99.895 528.579 null] ->> -% 1780 0 obj -<< -/D [1776 0 R /XYZ 99.895 494.104 null] +/D [1783 0 R /XYZ 150.705 716.092 null] >> -% 1781 0 obj -<< -/D [1776 0 R /XYZ 99.895 403.265 null] ->> -% 1775 0 obj +% 1782 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1785 0 obj +% 1787 0 obj << /Type /Page -/Contents 1786 0 R -/Resources 1784 0 R +/Contents 1788 0 R +/Resources 1786 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R ->> -% 1787 0 obj -<< -/D [1785 0 R /XYZ 149.705 753.953 null] ->> -% 461 0 obj -<< -/D [1785 0 R /XYZ 150.705 716.092 null] +/Parent 1794 0 R >> -% 1784 0 obj +% 1789 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] +/D [1787 0 R /XYZ 98.895 753.953 null] >> -% 1789 0 obj +% 1790 0 obj << -/Type /Page -/Contents 1790 0 R -/Resources 1788 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/D [1787 0 R /XYZ 99.895 552.489 null] >> % 1791 0 obj << -/D [1789 0 R /XYZ 98.895 753.953 null] +/D [1787 0 R /XYZ 99.895 518.014 null] >> % 1792 0 obj << -/D [1789 0 R /XYZ 99.895 552.489 null] ->> -% 1793 0 obj -<< -/D [1789 0 R /XYZ 99.895 518.014 null] ->> -% 1794 0 obj -<< -/D [1789 0 R /XYZ 99.895 427.175 null] +/D [1787 0 R /XYZ 99.895 427.175 null] >> -% 1788 0 obj +% 1786 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> % 1796 0 obj @@ -23625,19 +23503,19 @@ stream /Contents 1797 0 R /Resources 1795 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1794 0 R >> % 1798 0 obj << /D [1796 0 R /XYZ 149.705 753.953 null] >> -% 465 0 obj +% 461 0 obj << /D [1796 0 R /XYZ 150.705 716.092 null] >> % 1795 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> % 1800 0 obj @@ -23646,7 +23524,7 @@ stream /Contents 1801 0 R /Resources 1799 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1794 0 R >> % 1802 0 obj << @@ -23654,19 +23532,19 @@ stream >> % 1803 0 obj << -/D [1800 0 R /XYZ 99.895 540.534 null] +/D [1800 0 R /XYZ 99.895 564.444 null] >> % 1804 0 obj << -/D [1800 0 R /XYZ 99.895 506.059 null] +/D [1800 0 R /XYZ 99.895 529.97 null] >> % 1805 0 obj << -/D [1800 0 R /XYZ 99.895 415.22 null] +/D [1800 0 R /XYZ 99.895 439.13 null] >> % 1799 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> % 1807 0 obj @@ -23675,19 +23553,19 @@ stream /Contents 1808 0 R /Resources 1806 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1783 0 R +/Parent 1794 0 R >> % 1809 0 obj << /D [1807 0 R /XYZ 149.705 753.953 null] >> -% 469 0 obj +% 465 0 obj << /D [1807 0 R /XYZ 150.705 716.092 null] >> % 1806 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> % 1811 0 obj @@ -23696,7 +23574,7 @@ stream /Contents 1812 0 R /Resources 1810 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1794 0 R >> % 1813 0 obj << @@ -23704,109 +23582,66 @@ stream >> % 1814 0 obj << -/D [1811 0 R /XYZ 99.895 552.489 null] +/D [1811 0 R /XYZ 99.895 540.534 null] >> % 1815 0 obj << -/D [1811 0 R /XYZ 99.895 518.014 null] +/D [1811 0 R /XYZ 99.895 506.059 null] >> % 1816 0 obj << -/D [1811 0 R /XYZ 99.895 427.175 null] +/D [1811 0 R /XYZ 99.895 415.22 null] >> % 1810 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> - -endstream -endobj -1820 0 obj +% 1818 0 obj << -/Length 5616 +/Type /Page +/Contents 1819 0 R +/Resources 1817 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1794 0 R +>> +% 1820 0 obj +<< +/D [1818 0 R /XYZ 149.705 753.953 null] +>> +% 469 0 obj +<< +/D [1818 0 R /XYZ 150.705 716.092 null] >> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.13)-1000(psb)]TJ -ET -q -1 0 0 1 204.216 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 207.803 706.129 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_amx\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-342(subr)18(outine)-342(implements)-342(a)-342(maximum)-341(absolute)-342(value)-342(r)18(eduction)-342(opera-)]TJ -14.944 -11.955 Td [(tion)-250(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -22.619 Td [(ctxt)]TJ -0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ -0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ -0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ -0 g 0 G -/F59 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ -0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ -0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(128)]TJ -0 g 0 G -ET endstream endobj -1825 0 obj +1824 0 obj << -/Length 5225 +/Length 5331 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.983 0 0 1 124.802 682.219 Tm [(Speci\002ed)-255(as:)-317(an)-255(integer)-255(or)-255(r)19(eal)-255(variable,)-256(w)1(hich)-255(may)-255(be)-255(a)-256(s)1(calar)75(,)-255(or)-255(a)-255(rank)-255(1)]TJ 1 0 0 1 124.802 670.263 Tm [(or)-250(2)-250(array)111(.)]TJ -0.309 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.956 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 417.212 cm +1 0 0 1 124.802 441.123 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -23815,9 +23650,9 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 434.448 Td [(call)]TJ +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ 0 g 0 G - [-525(psb_amx\050ctxt,dat,&)]TJ + [-525(psb_min\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 23.537 -10.959 Td [(&)]TJ @@ -23834,51 +23669,53 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 302.642 cm +1 0 0 1 124.802 326.552 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 127.791 352.754 Td [(call)]TJ +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ 0 g 0 G - [-525(psb_amx\050ctxt,dat,mode)]TJ + [-525(psb_min\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(psb_collective_start_,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 23.536 -10.959 Td [(&)]TJ + 23.537 -10.959 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(request)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(amx_request\051)]TJ + [(min_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -14.122 -10.959 Td [(.......)]TJ + -23.537 -10.958 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G - [-525(psb_amx\050ctxt,dat,mode)]TJ + [-525(psb_min\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -23892,11 +23729,11 @@ BT 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(amx_request\051)]TJ + [(min_request\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -218.48 Td [(129)]TJ +/F84 9.9626 Tf 103.537 -242.391 Td [(127)]TJ 0 g 0 G ET @@ -23904,55 +23741,59 @@ endstream endobj 1832 0 obj << -/Length 5619 +/Length 6212 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.14)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.13)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(amx)-250(\227)-250(Global)-250(maximum)-250(absolute)-250(value)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -20.269 Td [(call)-525(psb_amn\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -24.611 Td [(This)-360(subr)18(outine)-360(impl)1(ements)-360(a)-360(minimum)-360(absolute)-360(value)-359(r)18(eduction)-360(opera-)]TJ -14.944 -11.955 Td [(tion)-250(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_amx\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 165.649 664.53 Tm [(This)-250(subr)19(outine)-250(implements)-250(a)-249(maximum)-250(absolute)-250(value)-249(r)18(eduction)-250(operation)]TJ 1 0 0 1 150.705 652.575 Tm [(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.945 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.619 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G - 0 -22.619 Td [(ctxt)]TJ + 0 -20.408 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(dat)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(maximum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 175.611 463.465 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-253(all)-252(pr)18(ocesses.)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-300(a)-300(rank)-300(1)-300(or)-301(2)-300(array)111(.)-760(T)90(ype,)-313(kind,)-312(rank)-300(and)-301(size)-300(must)-300(agr)18(ee)-300(on)-300(all)-300(pr)18(o-)]TJ 0 -11.955 Td [(cesses.)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 443.056 Tm [(root)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.619 Td [(root)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -34.574 Td [(mode)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.955 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.956 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -34.573 Td [(request)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -24.612 Td [(On)-250(Return)]TJ 0 g 0 G + 0 -20.408 Td [(dat)]TJ +0 g 0 G +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(maximum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 164.384 -29.887 Td [(130)]TJ + 79.263 -29.888 Td [(128)]TJ 0 g 0 G ET @@ -23960,33 +23801,30 @@ endstream endobj 1836 0 obj << -/Length 5262 +/Length 5285 >> stream 0 g 0 G 0 g 0 G -0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(dat)]TJ -0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ 0 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.98 0 0 1 124.802 682.219 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 124.802 670.263 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-252(all)-253(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 650.338 Tm [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 602.517 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 602.517 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 602.517 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 590.562 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.956 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ + 0.98 0 0 1 124.493 548.719 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 548.719 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 548.719 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 536.764 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 516.839 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 516.839 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 516.839 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 516.839 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 516.839 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 504.884 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 492.928 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 417.212 cm +1 0 0 1 124.802 453.078 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -23995,9 +23833,9 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 434.448 Td [(call)]TJ +/F231 8.9664 Tf 137.205 470.313 Td [(call)]TJ 0 g 0 G - [-525(psb_amn\050ctxt,dat,&)]TJ + [-525(psb_amx\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 23.537 -10.959 Td [(&)]TJ @@ -24014,53 +23852,51 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(3.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 423.19 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 423.19 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 423.19 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 423.19 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 423.19 Tm [(be)]TJ 1 0 0 1 124.802 411.235 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 302.642 cm +1 0 0 1 124.802 338.507 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 352.754 Td [(call)]TJ +/F231 8.9664 Tf 127.791 388.62 Td [(call)]TJ 0 g 0 G - [-525(psb_amn\050ctxt,dat,mode)]TJ + [-525(psb_amx\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G [(psb_collective_start_,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 23.537 -10.959 Td [(&)]TJ + 23.536 -10.959 Td [(&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(request)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(amn_request\051)]TJ + [(amx_request\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - -23.537 -10.959 Td [(.......)]TJ + -14.122 -10.959 Td [(.......)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G - [-525(psb_amn\050ctxt,dat,mode)]TJ + [-525(psb_amx\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -24074,11 +23910,11 @@ BT 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G - [(amn_request\051)]TJ + [(amx_request\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -218.48 Td [(131)]TJ +/F84 9.9626 Tf 103.537 -254.346 Td [(129)]TJ 0 g 0 G ET @@ -24086,59 +23922,59 @@ endstream endobj 1843 0 obj << -/Length 5776 +/Length 6213 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.15)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.14)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(reduction)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(amn)-250(\227)-250(Global)-250(minimum)-250(absolute)-250(value)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_nrm2\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F62 9.9626 Tf 14.944 -22.401 Td [(This)-297(subr)18(outine)-296(implements)-297(a)-297(2-norm)-296(value)-297(r)18(eduction)-297(operation)-296(based)-297(on)]TJ -14.944 -11.955 Td [(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_amn\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 0.983 0 0 1 165.649 664.53 Tm [(This)-255(subr)19(outine)-255(implements)-255(a)-254(minimum)-255(absolute)-255(value)-254(r)18(eduction)-255(operation)]TJ 1 0 0 1 150.705 652.575 Tm [(based)-250(on)-250(the)-250(underlying)-250(communication)-250(library)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.409 Td [(dat)]TJ +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-370(as:)-551(a)-371(r)18(eal)-370(variable,)-401(which)-370(may)-371(be)-370(a)-371(scalar)74(,)-400(or)-371(a)-370(rank)-371(1)-370(array)111(.)]TJ 0 -11.956 Td [(Kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-228(as:)-303(an)-228(integer)76(,)-234(r)19(eal)-228(or)-228(complex)-228(variable,)-234(which)-228(may)-228(be)-228(a)-228(scalar)76(,)-234(or)]TJ 0.991 0 0 1 175.611 463.465 Tm [(a)-252(rank)-253(1)-252(or)-252(2)-252(array)112(.)-565(T)90(ype,)-252(kind,)-252(rank)-252(and)-253(size)-252(must)-252(agr)18(ee)-252(on)-253(all)-252(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -20.408 Td [(root)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 443.056 Tm [(root)]TJ 0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-221(to)-221(hold)-221(the)-222(\002nal)-221(value,)-227(or)]TJ/F91 10.3811 Tf 147.052 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1)-221(to)-221(make)-222(it)-221(available)-221(on)-221(all)-221(pr)18(ocesses.)]TJ -153.592 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F91 10.3811 Tf 131.101 0 Td [(\000)]TJ/F62 9.9626 Tf 8.195 0 Td [(1)]TJ/F69 10.3811 Tf 7.873 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F69 10.3811 Tf 19.923 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ 0 g 0 G -/F59 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Whether)-314(the)-314(call)-313(is)-314(started)-314(in)-314(non-blocking)-314(mode)-314(and)-313(completed)-314(later)74(,)]TJ -5.539 -11.955 Td [(or)-250(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-325(as:)-460(an)-325(i)1(nteger)-325(value.)-535(The)-325(action)-325(to)-325(be)-325(t)1(aken)-325(is)-325(determined)-325(by)]TJ 0 -11.956 Td [(its)-375(bit)-374(\002elds,)-406(which)-375(can)-374(be)-375(set)-374(with)-375(bitwise)]TJ/F67 9.9626 Tf 199.497 0 Td [(OR)]TJ/F62 9.9626 Tf 10.461 0 Td [(.)-375(Basic)-374(action)-375(values)-374(ar)18(e)]TJ/F67 9.9626 Tf -209.958 -11.955 Td [(psb_collective_start_)]TJ/F62 9.9626 Tf 109.837 0 Td [(,)]TJ/F67 9.9626 Tf 4.545 0 Td [(psb_collective_end_)]TJ/F62 9.9626 Tf 99.377 0 Td [(.)-292(Default:)-282(both)-196(\002elds)-195(ar)18(e)]TJ -213.759 -11.955 Td [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -32.364 Td [(request)]TJ +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.578 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.956 Td [(be)-250(pr)18(esent.)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -22.401 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -20.408 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(2-norm)-250(r)18(eduction.)]TJ 5.54 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.781 0 Td [(.)]TJ +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(minimum)-250(operation.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ 0 g 0 G - 79.264 -29.887 Td [(132)]TJ + 79.263 -29.888 Td [(130)]TJ 0 g 0 G ET @@ -24146,45 +23982,30 @@ endstream endobj 1847 0 obj << -/Length 6252 +/Length 5343 >> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 124.802 706.129 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(variable,)-250(which)-250(may)-250(be)-250(a)-250(scalar)74(,)-250(or)-250(a)-250(rank)-250(1)-250(array)111(.)]TJ 0 -11.956 Td [(Kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 682.219 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 1 0 0 1 124.802 670.263 Tm [(or)-250(a)-250(rank)-250(1)-250(or)-250(2)-250(array)111(.)]TJ -0.309 -11.955 Td [(T)90(ype,)-250(kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +/F75 9.9626 Tf -24.598 -19.925 Td [(request)]TJ 0 g 0 G -/F62 9.9626 Tf 38.735 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.828 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(If)]TJ/F67 9.9626 Tf 8.943 0 Td [(mode)]TJ/F62 9.9626 Tf 23.19 0 Td [(does)-228(not)-227(specify)-228(synchr)18(onous)-228(completion,)-232(then)-227(this)-228(variable)-228(must)]TJ -32.133 -11.955 Td [(be)-250(pr)18(esent.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 590.562 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 590.562 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 590.562 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 578.607 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-345(r)18(eduction)-345(is)-346(appr)18(opriate)-345(to)-345(compute)-345(the)-345(r)18(esults)-346(of)-345(multiple)-345(\050local\051)]TJ 12.453 -11.955 Td [(NRM2)-250(operations)-250(at)-250(the)-250(same)-250(time.)]TJ + 0.98 0 0 1 124.493 536.764 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 536.764 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 536.764 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 524.809 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ 0 g 0 G -12.453 -19.925 Td [(2.)]TJ 0 g 0 G - [-500(Denoting)-249(by)]TJ/F60 9.9626 Tf 69.789 0 Td [(d)-40(a)-25(t)]TJ/F60 7.5716 Tf 13.536 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.23 1.96 Td [(the)-249(value)-249(of)-248(the)-249(variable)]TJ/F60 9.9626 Tf 108.808 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 15.973 0 Td [(on)-249(pr)18(ocess)]TJ/F60 9.9626 Tf 49.078 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(,)-249(the)-249(output)]TJ/F60 9.9626 Tf 53.71 0 Td [(r)-17(e)-25(s)]TJ/F62 9.9626 Tf -306.635 -11.955 Td [(is)-250(equivalent)-250(to)-250(the)-250(computation)-250(of)]TJ/F60 9.9626 Tf 124.796 -25.468 Td [(r)-17(e)-25(s)]TJ/F93 10.3811 Tf 15.061 0 Td [(=)]TJ/F17 9.9626 Tf 11.086 10.922 Td [(r)]TJ -ET -q -1 0 0 1 285.832 490.532 cm -[]0 d 0 J 0.389 w 0 0 m 30.512 0 l S -Q -BT -/F104 13.9477 Tf 285.957 477.344 Td [(\345)]TJ/F60 7.5716 Tf 4.245 -8.764 Td [(i)]TJ/F60 9.9626 Tf 8.364 10.836 Td [(d)-40(a)-25(t)]TJ/F62 7.5716 Tf 13.495 3.473 Td [(2)]TJ/F60 7.5716 Tf 0.041 -7.027 Td [(i)]TJ/F62 9.9626 Tf 4.243 3.554 Td [(,)]TJ -191.543 -30.806 Td [(with)-250(car)18(e)-250(taken)-250(to)-250(avoid)-250(unnecessary)-250(over\003ow)92(.)]TJ -0 g 0 G - -12.453 -19.926 Td [(3.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 31.023 0 Td [(dat)]TJ/F62 9.9626 Tf 17.584 0 Td [(ar)18(gument)-190(is)-190(both)-190(input)-190(and)-190(output,)-202(and)-190(its)-190(value)-190(may)-190(be)-190(changed)]TJ -36.154 -11.955 Td [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ -0 g 0 G - -12.453 -19.925 Td [(4.)]TJ -0 g 0 G - [-500(The)]TJ/F67 9.9626 Tf 32.225 0 Td [(mode)]TJ/F62 9.9626 Tf 24.015 0 Td [(ar)18(gument)-311(can)-310(be)-311(built)-310(with)-311(the)-310(bitwise)]TJ/F67 9.9626 Tf 176.537 0 Td [(IOR\050\051)]TJ/F62 9.9626 Tf 29.246 0 Td [(operator;)-341(in)-310(the)]TJ -249.57 -11.955 Td [(following)-203(example,)-213(the)-204(ar)18(gument)-203(is)-204(for)18(cing)-203(immediate)-203(completion,)-213(hence)]TJ 0 -11.955 Td [(the)]TJ/F67 9.9626 Tf 16.309 0 Td [(request)]TJ/F62 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ + 1.02 0 0 1 124.493 504.884 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 504.884 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 504.884 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 504.884 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 504.884 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 492.928 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 480.973 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 333.043 cm +1 0 0 1 124.802 441.123 cm 0 0 318.804 27.895 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG @@ -24193,9 +24014,9 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 137.205 350.279 Td [(call)]TJ +/F231 8.9664 Tf 137.205 458.358 Td [(call)]TJ 0 g 0 G - [-525(psb_nrm2\050ctxt,dat,&)]TJ + [-525(psb_amn\050ctxt,dat,&)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 23.537 -10.959 Td [(&)]TJ @@ -24212,23 +24033,221 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -48.393 -36.165 Td [(5.)]TJ +/F84 9.9626 Tf -48.393 -36.164 Td [(3.)]TJ 0 g 0 G - [-500(When)-295(splitting)-294(the)-295(operation)-295(in)-295(two)-294(calls,)-306(the)]TJ/F67 9.9626 Tf 216.877 0 Td [(dat)]TJ/F62 9.9626 Tf 18.628 0 Td [(ar)18(gument)]TJ/F60 9.9626 Tf 45.835 0 Td [(must)-295(not)]TJ/F62 9.9626 Tf 39.636 0 Td [(be)]TJ -308.523 -11.955 Td [(accessed)-250(between)-250(calls:)]TJ + 1.02 0 0 1 124.304 411.235 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 411.235 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 411.235 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 411.235 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 411.235 Tm [(be)]TJ 1 0 0 1 124.802 399.28 Tm [(accessed)-250(between)-250(calls:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 124.802 218.473 cm +1 0 0 1 124.802 326.552 cm 0 0 318.804 60.772 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 127.791 268.585 Td [(call)]TJ +/F231 8.9664 Tf 137.205 376.664 Td [(call)]TJ 0 g 0 G - [-525(psb_nrm2\050ctxt,dat,mode)]TJ + [-525(psb_amn\050ctxt,dat,mode)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(psb_collective_start_,&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 23.537 -10.959 Td [(&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(request)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(amn_request\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + -23.537 -10.958 Td [(.......)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +0 g 0 G + [-525(psb_amn\050ctxt,dat,mode)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(psb_collective_end_,&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 23.537 -10.959 Td [(&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(request)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(amn_request\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf 103.537 -242.391 Td [(131)]TJ +0 g 0 G +ET + +endstream +endobj +1854 0 obj +<< +/Length 6110 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 150.705 706.129 Td [(7.15)-1000(psb)]TJ +ET +q +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 207.803 706.129 Td [(nrm2)-250(\227)-250(Global)-250(2-norm)-250(reduction)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf -57.098 -19.198 Td [(call)-525(psb_nrm2\050ctxt,)-525(dat)-525([,)-525(root,)-525(mode,)-525(request]\051)]TJ/F84 9.9626 Tf 1.014 0 0 1 165.649 664.53 Tm [(This)-246(subr)18(outine)-246(implements)-246(a)-246(2-norm)-246(value)-246(r)18(eduction)-246(operation)-246(based)-246(on)]TJ 1 0 0 1 150.705 652.575 Tm [(the)-250(underlying)-250(communication)-250(library)111(.)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -20.288 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.409 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.408 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.885 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -20.409 Td [(dat)]TJ +0 g 0 G +/F84 9.9626 Tf 19.058 0 Td [(The)-250(local)-250(contribution)-250(to)-250(the)-250(global)-250(minimum.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 475.42 Tm [(Speci\002ed)-224(as:)-300(a)-224(r)18(eal)-224(variable,)-230(which)-223(may)-224(be)-224(a)-224(scalar)76(,)-230(or)-224(a)-224(rank)-224(1)-223(array)113(.)-530(Kind,)]TJ 1 0 0 1 175.611 463.465 Tm [(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -20.409 Td [(root)]TJ +0 g 0 G +/F84 9.9626 Tf 0.986 0 0 1 173.957 443.056 Tm [(Pr)18(ocess)-253(to)-254(hold)-253(the)-253(\002nal)-254(value,)-253(or)]TJ/F179 10.3811 Tf 1 0 0 1 321.11 443.056 Tm [(\000)]TJ/F84 9.9626 Tf 0.986 0 0 1 329.304 443.056 Tm [(1)-253(to)-254(make)-253(it)-254(available)-253(on)-253(all)-254(pr)18(oce)1(sses.)]TJ 1 0 0 1 175.611 431.101 Tm [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)]TJ/F179 10.3811 Tf 131.102 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1)]TJ/F134 10.3811 Tf 7.874 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 10.987 0 Td [(r)-17(o)-35(o)-35(t)]TJ/F134 10.3811 Tf 19.922 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1,)-250(default)-250(-1.)]TJ +0 g 0 G +/F75 9.9626 Tf -254.343 -32.364 Td [(mode)]TJ +0 g 0 G +/F84 9.9626 Tf 0.983 0 0 1 180.652 362.871 Tm [(Whether)-256(the)-256(c)1(all)-256(is)-256(started)-256(in)-255(non-blocking)-256(mode)-256(and)-256(completed)-255(later)75(,)-256(or)]TJ 1 0 0 1 175.611 350.916 Tm [(is)-250(executed)-250(synchr)18(onously)111(.)]TJ 0 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 303.096 Tm [(Speci\002ed)-285(as:)-383(an)-285(integer)-285(value.)-423(The)-284(action)-285(to)-285(be)-285(taken)-284(is)-285(determined)-285(by)]TJ 1.02 0 0 1 175.611 291.14 Tm [(its)-329(bit)-328(\002elds,)-350(which)-329(can)-328(be)-329(set)-329(with)-328(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 374.795 291.14 Tm [(OR)]TJ/F84 9.9626 Tf 1.02 0 0 1 385.256 291.14 Tm [(.)-329(Basic)-328(action)-329(values)-329(ar)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 279.185 Tm [(psb_collective_start_)]TJ/F84 9.9626 Tf 0.98 0 0 1 285.449 279.185 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 290.376 279.185 Tm [(psb_collective_end_)]TJ/F84 9.9626 Tf 0.98 0 0 1 389.753 279.185 Tm [(.)-316(Default:)-316(both)-255(\002elds)-254(ar)18(e)]TJ 1 0 0 1 175.611 267.23 Tm [(selected)-250(\050i.e.)-310(r)18(equir)18(e)-250(synchr)18(onous)-250(completion\051.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -32.364 Td [(request)]TJ +0 g 0 G +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.44 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.992 0 0 1 175.611 187.046 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 184.726 187.046 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 208.14 187.046 Tm [(does)-252(not)-253(specify)-252(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variable)-252(must)]TJ 1 0 0 1 175.611 175.091 Tm [(be)-250(pr)18(esent.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -22.402 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -20.408 Td [(dat)]TJ +0 g 0 G +/F84 9.9626 Tf 19.367 0 Td [(On)-250(destination)-250(pr)18(ocess\050es\051,)-250(the)-250(r)18(esult)-250(of)-250(the)-250(2-norm)-250(r)18(eduction.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ +0 g 0 G + 79.263 -29.888 Td [(132)]TJ +0 g 0 G +ET + +endstream +endobj +1858 0 obj +<< +/Length 6779 +>> +stream +0 g 0 G +0 g 0 G +BT +/F84 9.9626 Tf 124.493 706.129 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(variable,)-250(which)-250(may)-250(be)-250(a)-250(scalar)74(,)-250(or)-250(a)-250(rank)-250(1)-250(array)111(.)]TJ 0 -11.956 Td [(Kind,)-250(rank)-250(and)-250(size)-250(must)-250(agr)18(ee)-250(on)-250(all)-250(pr)18(ocesses.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.925 Td [(request)]TJ +0 g 0 G +/F84 9.9626 Tf 38.346 0 Td [(A)-250(r)18(equest)-250(variable)-250(to)-250(check)-250(for)-250(operation)-250(completion.)]TJ -13.439 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 0.992 0 0 1 124.802 602.517 Tm [(If)]TJ/F131 9.9626 Tf 1 0 0 1 133.917 602.517 Tm [(mode)]TJ/F84 9.9626 Tf 0.992 0 0 1 157.331 602.517 Tm [(does)-252(not)-252(specify)-253(synchr)18(onous)-252(completion,)-252(then)-252(this)-253(variabl)1(e)-253(must)]TJ 1 0 0 1 124.802 590.562 Tm [(be)-250(pr)18(esent.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +0 g 0 G + 1.02 0 0 1 124.493 548.719 Tm [(This)-295(r)17(eduction)-295(is)-295(appr)18(opriate)-296(to)-295(compute)-295(the)-295(r)17(esul)1(ts)-296(of)-295(multiple)-295(\050local\051)]TJ 1 0 0 1 124.802 536.764 Tm [(NRM2)-250(operations)-250(at)-250(the)-250(same)-250(time.)]TJ +0 g 0 G + -12.453 -19.925 Td [(2.)]TJ +0 g 0 G + 0.999 0 0 1 124.802 516.839 Tm [(Denoting)-251(by)]TJ/F78 9.9626 Tf 1 0 0 1 182.12 516.839 Tm [(d)-40(a)-25(t)]TJ/F78 7.5716 Tf 13.536 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.999 0 0 1 200.903 516.839 Tm [(the)-251(value)-251(of)-250(the)-251(variable)]TJ/F78 9.9626 Tf 1 0 0 1 309.7 516.839 Tm [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 0.999 0 0 1 325.691 516.839 Tm [(on)-251(pr)18(ocess)]TJ/F78 9.9626 Tf 1 0 0 1 374.759 516.839 Tm [(i)]TJ/F84 9.9626 Tf 0.999 0 0 1 377.722 516.839 Tm [(,)-251(the)-251(output)]TJ/F78 9.9626 Tf 1 0 0 1 431.437 516.839 Tm [(r)-17(e)-25(s)]TJ/F84 9.9626 Tf -306.635 -11.955 Td [(is)-250(equivalent)-250(to)-250(the)-250(computation)-250(of)]TJ/F78 9.9626 Tf 124.796 -25.468 Td [(r)-17(e)-25(s)]TJ/F181 10.3811 Tf 15.061 0 Td [(=)]TJ/F17 9.9626 Tf 11.086 10.922 Td [(r)]TJ +ET +q +1 0 0 1 285.832 490.532 cm +[]0 d 0 J 0.389 w 0 0 m 30.512 0 l S +Q +BT +/F241 13.9477 Tf 285.957 477.344 Td [(\345)]TJ/F78 7.5716 Tf 4.245 -8.764 Td [(i)]TJ/F78 9.9626 Tf 8.364 10.836 Td [(d)-40(a)-25(t)]TJ/F84 7.5716 Tf 13.495 3.473 Td [(2)]TJ/F78 7.5716 Tf 0.041 -7.027 Td [(i)]TJ/F84 9.9626 Tf 4.243 3.554 Td [(,)]TJ -191.961 -30.806 Td [(with)-250(car)18(e)-250(taken)-250(to)-250(avoid)-250(unnecessary)-250(over\003ow)92(.)]TJ +0 g 0 G + -12.035 -19.926 Td [(3.)]TJ +0 g 0 G + 0.98 0 0 1 124.493 428.684 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 143.184 428.684 Tm [(dat)]TJ/F84 9.9626 Tf 0.98 0 0 1 161.222 428.684 Tm [(ar)18(gument)-240(is)-240(both)-241(input)-240(and)-241(output,)-243(and)-240(its)-241(value)-240(may)-241(be)-240(changed)]TJ 1 0 0 1 124.802 416.729 Tm [(even)-250(on)-250(pr)18(ocesses)-250(dif)18(fer)18(ent)-250(fr)18(om)-250(the)-250(\002nal)-250(r)18(esult)-250(destination.)]TJ +0 g 0 G + -12.453 -19.925 Td [(4.)]TJ +0 g 0 G + 1.02 0 0 1 124.493 396.804 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 144.248 396.804 Tm [(mode)]TJ/F84 9.9626 Tf 1.02 0 0 1 167.913 396.804 Tm [(ar)18(gument)-270(can)-270(be)-270(built)-270(with)-270(the)-270(bitwise)]TJ/F131 9.9626 Tf 1 0 0 1 345.098 396.804 Tm [(IOR\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.994 396.804 Tm [(operator;)-282(in)-270(the)]TJ 0.988 0 0 1 124.802 384.849 Tm [(following)-254(example,)-255(the)-254(ar)18(gument)-254(is)-255(for)18(cing)-254(immediate)-254(completion,)-255(hence)]TJ 1 0 0 1 124.802 372.894 Tm [(the)]TJ/F131 9.9626 Tf 16.309 0 Td [(request)]TJ/F84 9.9626 Tf 39.103 0 Td [(ar)18(gument)-250(needs)-250(not)-250(be)-250(speci\002ed:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 124.802 333.043 cm +0 0 318.804 27.895 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 137.205 350.279 Td [(call)]TJ +0 g 0 G + [-525(psb_nrm2\050ctxt,dat,&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 23.537 -10.959 Td [(&)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(mode)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(ior)]TJ +0 g 0 G + [(\050psb_collective_start_,psb_collective_end_\051\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf -48.393 -36.165 Td [(5.)]TJ +0 g 0 G + 1.02 0 0 1 124.304 303.155 Tm [(When)-250(splitting)-250(the)-250(operation)-250(in)-250(two)-249(calls,)-252(the)]TJ/F131 9.9626 Tf 1 0 0 1 329.071 303.155 Tm [(dat)]TJ/F84 9.9626 Tf 1.02 0 0 1 347.302 303.155 Tm [(ar)18(gument)]TJ/F78 9.9626 Tf 1.02 0 0 1 393.602 303.155 Tm [(must)-250(not)]TJ/F84 9.9626 Tf 1.02 0 0 1 433.12 303.155 Tm [(be)]TJ 1 0 0 1 124.802 291.2 Tm [(accessed)-250(between)-250(calls:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 124.802 218.473 cm +0 0 318.804 60.772 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 127.791 268.585 Td [(call)]TJ +0 g 0 G + [-525(psb_nrm2\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G @@ -24249,12 +24268,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ +/F279 8.9664 Tf 37.659 0 Td [(!)-525(Do)-525(not)-525(access)-525(dat)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf -37.659 -10.959 Td [(call)]TJ +/F231 8.9664 Tf -37.659 -10.959 Td [(call)]TJ 0 g 0 G [-525(psb_nrm2\050ctxt,dat,mode)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG @@ -24274,152 +24293,152 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 103.537 -134.311 Td [(133)]TJ +/F84 9.9626 Tf 103.537 -134.311 Td [(133)]TJ 0 g 0 G ET endstream endobj -1858 0 obj +1869 0 obj << -/Length 5352 +/Length 5627 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(7.16)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(7.16)-1000(psb)]TJ ET q 1 0 0 1 204.216 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 207.803 706.129 Td [(snd)-250(\227)-250(Send)-250(data)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(snd)-250(\227)-250(Send)-250(data)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_snd\050ctxt,)-525(dat,)-525(dst,)-525(m\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(sends)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_snd\050ctxt,)-525(dat,)-525(dst,)-525(m\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(sends)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(dat)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.367 0 Td [(The)-250(data)-250(to)-250(be)-250(sent.)]TJ 5.54 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.01 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-269(may)-270(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-220(a)-220(rank)-219(1)-220(or)-220(2)-220(array)111(,)-226(or)-220(a)-219(character)-220(or)-220(logical)-220(scalar)74(.)-520(T)90(ype,)-225(kind)-220(and)-220(rank)]TJ 0 -11.956 Td [(must)-215(agr)18(ee)-216(on)-215(sender)-215(and)-216(r)18(eceiver)-215(pr)18(ocess;)-227(if)]TJ/F60 9.9626 Tf 197.687 0 Td [(m)]TJ/F62 9.9626 Tf 10.021 0 Td [(is)-215(not)-216(speci\002ed,)-222(size)-215(must)]TJ -207.708 -11.955 Td [(agr)18(ee)-250(as)-250(well.)]TJ +/F84 9.9626 Tf 19.058 0 Td [(The)-250(data)-250(to)-250(be)-250(sent.)]TJ 5.849 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.013 0 0 1 175.611 489.905 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 0.984 0 0 1 175.611 477.95 Tm [(or)-254(a)-254(rank)-255(1)-254(or)-254(2)-254(array)113(,)-255(or)-254(a)-254(character)-254(or)-254(logical)-254(scalar)75(.)-570(T)92(ype,)-255(kind)-254(and)-254(rank)]TJ 0.985 0 0 1 175.611 465.994 Tm [(must)-253(agr)18(ee)-254(on)-253(sender)-253(and)-254(r)19(eceiver)-254(pr)19(ocess;)-254(if)]TJ/F78 9.9626 Tf 1 0 0 1 373.199 465.994 Tm [(m)]TJ/F84 9.9626 Tf 0.985 0 0 1 383.561 465.994 Tm [(is)-253(not)-254(speci\002ed,)-253(size)-254(must)]TJ 1 0 0 1 175.611 454.039 Tm [(agr)18(ee)-250(as)-250(well.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(dst)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(dst)]TJ 0 g 0 G -/F62 9.9626 Tf 18.809 0 Td [(Destination)-250(pr)18(ocess.)]TJ 6.098 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(d)-25(s)-25(t)]TJ/F69 10.3811 Tf 15.689 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1.)]TJ +/F84 9.9626 Tf 18.809 0 Td [(Destination)-250(pr)18(ocess.)]TJ 6.097 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.851 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(d)-25(s)-25(t)]TJ/F134 10.3811 Tf 15.688 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -241.89 -31.88 Td [(m)]TJ +/F75 9.9626 Tf -241.89 -31.88 Td [(m)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.069 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.213 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf 40.946 0 Td [(.)]TJ -68.034 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(m)]TJ/F69 10.3811 Tf 10.767 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ -235.542 -11.955 Td [(When)]TJ/F60 9.9626 Tf 29.859 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 16.898 0 Td [(is)-342(a)-341(rank)-342(2)-341(array)111(,)-365(speci\002es)-342(the)-341(number)-342(of)-341(r)18(ows)-342(to)-342(be)-341(sent)-342(in-)]TJ -46.757 -11.955 Td [(dependently)-341(of)-340(the)-341(leading)-341(dimension)]TJ/F60 9.9626 Tf 175.121 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-386(must)-341(have)-340(the)-341(same)]TJ -222.236 -11.955 Td [(value)-250(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.068 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 40.946 0 Td [(.)]TJ -67.726 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.851 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(m)]TJ/F134 10.3811 Tf 10.767 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F181 10.3811 Tf 9.257 0 Td [(\051)]TJ/F84 9.9626 Tf 4.149 0 Td [(.)]TJ 1.02 0 0 1 175.113 294.637 Tm [(When)]TJ/F78 9.9626 Tf 1 0 0 1 204.579 294.637 Tm [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 1.02 0 0 1 220.557 294.637 Tm [(is)-244(a)-245(rank)-244(2)-244(array)108(,)-244(speci\002es)-245(the)-244(number)-244(of)-245(r)18(ows)-244(to)-245(be)-244(sent)-244(inde-)]TJ 0.98 0 0 1 175.313 282.682 Tm [(pendently)-236(of)-236(the)-236(leading)-236(dimension)]TJ/F78 9.9626 Tf 1 0 0 1 331.178 282.682 Tm [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 0.98 0 0 1 364.887 282.682 Tm [(,)-170(1)]TJ/F181 10.3811 Tf 1 0 0 1 373.994 282.682 Tm [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 378.144 282.682 Tm [(;)-242(must)-236(have)-236(the)-236(same)-236(value)]TJ 1 0 0 1 175.611 270.727 Tm [(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G -/F59 11.9552 Tf 0 -21.918 Td [(Notes)]TJ +/F75 11.9552 Tf 0 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.453 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-292(subr)18(outine)-292(impl)1(ies)-292(a)-292(synchr)18(onization,)-302(but)-292(only)-292(between)-291(the)-292(calling)]TJ 12.454 -11.955 Td [(pr)18(ocess)-250(and)-250(the)-250(destination)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 158.309 0 Td [(d)-25(s)-25(t)]TJ/F62 9.9626 Tf 12.797 0 Td [(.)]TJ + 1.014 0 0 1 175.303 206.966 Tm [(This)-247(subr)18(outine)-247(implies)-248(a)-247(synchr)18(onization,)-247(but)-247(only)-248(between)-247(the)-247(calling)]TJ 1 0 0 1 175.313 195.011 Tm [(pr)18(ocess)-250(and)-250(the)-250(destination)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 158.309 0 Td [(d)-25(s)-25(t)]TJ/F84 9.9626 Tf 12.797 0 Td [(.)]TJ 0 g 0 G - -31.629 -104.573 Td [(134)]TJ + -31.331 -104.573 Td [(134)]TJ 0 g 0 G ET endstream endobj -1863 0 obj +1874 0 obj << -/Length 5356 +/Length 5628 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(7.17)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(7.17)-1000(psb)]TJ ET q 1 0 0 1 153.407 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 156.993 706.129 Td [(rcv)-250(\227)-250(Receive)-250(data)]TJ +/F75 11.9552 Tf 156.993 706.129 Td [(rcv)-250(\227)-250(Receive)-250(data)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_rcv\050ctxt,)-525(dat,)-525(src,)-525(m\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(r)18(eceives)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ +/F131 9.9626 Tf -57.098 -18.964 Td [(call)-525(psb_rcv\050ctxt,)-525(dat,)-525(src,)-525(m\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(This)-250(subr)18(outine)-250(r)18(eceives)-250(a)-250(packet)-250(of)-250(data)-250(to)-250(a)-250(destination.)]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -14.944 -19.925 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous:)-310(see)-250(usage)-250(notes.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(ctxt)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.926 Td [(src)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(src)]TJ 0 g 0 G -/F62 9.9626 Tf 17.704 0 Td [(Sour)18(ce)-250(pr)18(ocess.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(s)-15(r)-17(c)]TJ/F69 10.3811 Tf 15.141 0 Td [(<)]TJ/F93 10.3811 Tf 8.318 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 13.504 0 Td [(\000)]TJ/F62 9.9626 Tf 10.131 0 Td [(1.)]TJ +/F84 9.9626 Tf 17.704 0 Td [(Sour)18(ce)-250(pr)18(ocess.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.85 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(s)-15(r)-17(c)]TJ/F134 10.3811 Tf 15.141 0 Td [(<)]TJ/F181 10.3811 Tf 8.318 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(n)-80(p)]TJ/F179 10.3811 Tf 13.504 0 Td [(\000)]TJ/F84 9.9626 Tf 10.131 0 Td [(1.)]TJ 0 g 0 G -/F59 9.9626 Tf -241.342 -31.881 Td [(m)]TJ +/F75 9.9626 Tf -241.342 -31.881 Td [(m)]TJ 0 g 0 G -/F62 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.069 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf 40.946 0 Td [(.)]TJ -68.034 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F69 10.3811 Tf 138.85 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(m)]TJ/F69 10.3811 Tf 10.767 0 Td [(<)]TJ/F93 10.3811 Tf 8.319 0 Td [(=)]TJ/F60 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(.)]TJ -235.542 -11.956 Td [(When)]TJ/F60 9.9626 Tf 29.859 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 16.898 0 Td [(is)-342(a)-341(rank)-342(2)-341(array)111(,)-365(speci\002es)-342(the)-341(number)-342(of)-341(r)18(ows)-342(to)-342(be)-341(sent)-342(in-)]TJ -46.757 -11.955 Td [(dependently)-341(of)-340(the)-341(leading)-341(dimension)]TJ/F60 9.9626 Tf 175.121 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 15.94 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F62 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F93 10.3811 Tf 9.257 0 Td [(\051)]TJ/F62 9.9626 Tf 4.15 0 Td [(;)-386(must)-341(have)-340(the)-341(same)]TJ -222.236 -11.955 Td [(value)-250(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ +/F84 9.9626 Tf 13.838 0 Td [(Number)-250(of)-250(r)18(ows.)]TJ 11.069 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 40.946 0 Td [(.)]TJ -67.725 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(0)]TJ/F134 10.3811 Tf 138.85 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(m)]TJ/F134 10.3811 Tf 10.767 0 Td [(<)]TJ/F181 10.3811 Tf 8.319 0 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 13.494 0 Td [(,)-167(1)]TJ/F181 10.3811 Tf 9.257 0 Td [(\051)]TJ/F84 9.9626 Tf 4.15 0 Td [(.)]TJ 1.02 0 0 1 124.304 398.249 Tm [(When)]TJ/F78 9.9626 Tf 1 0 0 1 153.769 398.249 Tm [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 1.02 0 0 1 169.747 398.249 Tm [(is)-244(a)-245(rank)-244(2)-245(array)109(,)-244(speci\002es)-245(the)-244(number)-244(of)-245(r)18(ows)-244(to)-245(be)-244(sent)-245(inde-)]TJ 0.98 0 0 1 124.503 386.293 Tm [(pendently)-236(of)-236(the)-236(leading)-236(dimension)]TJ/F78 9.9626 Tf 1 0 0 1 280.369 386.293 Tm [(s)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 15.94 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(d)-40(a)-25(t)]TJ/F84 9.9626 Tf 0.98 0 0 1 314.077 386.293 Tm [(,)-170(1)]TJ/F181 10.3811 Tf 1 0 0 1 323.185 386.293 Tm [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 327.334 386.293 Tm [(;)-242(must)-236(have)-236(the)-236(same)-236(value)]TJ 1 0 0 1 124.802 374.338 Tm [(on)-250(sending)-250(and)-250(r)18(eceiving)-250(pr)18(ocesses.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(dat)]TJ 0 g 0 G -/F62 9.9626 Tf 19.368 0 Td [(The)-250(data)-250(to)-250(be)-250(r)18(eceived.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-269(as:)-349(an)-269(integer)74(,)-274(r)18(eal)-269(or)-269(complex)-269(variable,)-274(which)-270(may)-269(be)-269(a)-269(scalar)74(,)]TJ 0 -11.955 Td [(or)-220(a)-220(rank)-219(1)-220(or)-220(2)-220(array)111(,)-226(or)-220(a)-219(character)-220(or)-220(logical)-220(scalar)74(.)-520(T)90(ype,)-225(kind)-220(and)-220(rank)]TJ 0 -11.955 Td [(must)-215(agr)18(ee)-216(on)-215(sender)-215(and)-216(r)18(eceiver)-215(pr)18(ocess;)-227(if)]TJ/F60 9.9626 Tf 197.687 0 Td [(m)]TJ/F62 9.9626 Tf 10.021 0 Td [(is)-215(not)-216(speci\002ed,)-222(size)-215(must)]TJ -207.708 -11.955 Td [(agr)18(ee)-250(as)-250(well.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ +/F84 9.9626 Tf 19.059 0 Td [(The)-250(data)-250(to)-250(be)-250(r)18(eceived.)]TJ 5.848 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ 1.013 0 0 1 124.802 284.674 Tm [(Speci\002ed)-247(as:)-308(an)-247(integer)73(,)-248(r)18(eal)-248(or)-247(complex)-247(variable,)-248(which)-248(may)-247(be)-247(a)-248(scalar)73(,)]TJ 0.984 0 0 1 124.802 272.719 Tm [(or)-254(a)-254(rank)-255(1)-254(or)-254(2)-254(array)113(,)-255(or)-254(a)-254(character)-254(or)-254(logical)-254(scalar)75(.)-570(T)92(ype,)-255(kind)-254(and)-254(rank)]TJ 0.985 0 0 1 124.802 260.764 Tm [(must)-253(agr)18(ee)-253(on)-254(sender)-253(and)-254(r)19(eceiver)-254(pr)19(ocess;)-254(if)]TJ/F78 9.9626 Tf 1 0 0 1 322.39 260.764 Tm [(m)]TJ/F84 9.9626 Tf 0.985 0 0 1 332.752 260.764 Tm [(is)-253(not)-254(speci\002ed,)-253(size)-254(must)]TJ 1 0 0 1 124.802 248.809 Tm [(agr)18(ee)-250(as)-250(well.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ +/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ 0 g 0 G - [-500(This)-292(subr)18(outine)-291(implies)-292(a)-292(synchr)18(onization,)-302(but)-292(only)-292(between)-291(the)-292(calling)]TJ 12.453 -11.955 Td [(pr)18(ocess)-250(and)-250(the)-250(sour)18(ce)-250(pr)18(ocess)]TJ/F60 9.9626 Tf 137.538 0 Td [(s)-15(r)-17(c)]TJ/F62 9.9626 Tf 12.249 0 Td [(.)]TJ + 1.014 0 0 1 124.493 206.966 Tm [(This)-247(subr)18(outine)-248(impl)1(ies)-248(a)-247(synchr)18(onization,)-247(but)-247(only)-248(between)-247(the)-247(calling)]TJ 1 0 0 1 124.503 195.011 Tm [(pr)18(ocess)-250(and)-250(the)-250(sour)18(ce)-250(pr)18(ocess)]TJ/F78 9.9626 Tf 137.538 0 Td [(s)-15(r)-17(c)]TJ/F84 9.9626 Tf 12.249 0 Td [(.)]TJ 0 g 0 G - -10.31 -104.573 Td [(135)]TJ + -10.011 -104.573 Td [(135)]TJ 0 g 0 G ET endstream endobj -1870 0 obj +1881 0 obj << -/Length 6241 +/Length 6891 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(8)-1000(Error)-250(handling)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-382(PSBLAS)-382(library)-381(err)18(or)-382(handling)-382(policy)-382(has)-382(been)-382(comple)1(tely)-382(r)18(ewritten)-382(in)]TJ 0 -11.955 Td [(version)-359(2.0.)-638(The)-359(idea)-359(behind)-360(the)-359(design)-359(of)-359(this)-359(new)-360(err)18(or)-359(handling)-359(strategy)]TJ 0 -11.955 Td [(is)-303(to)-303(keep)-303(err)18(or)-303(messages)-303(on)-303(a)-303(stack)-303(allowing)-303(the)-303(user)-303(to)-303(trace)-303(back)-303(up)-303(to)-303(the)]TJ 0 -11.955 Td [(point)-317(wher)18(e)-318(the)-317(\002rst)-317(err)18(or)-318(message)-317(has)-318(been)-317(generated.)-512(Every)-317(r)18(outine)-318(in)-317(the)]TJ 0 -11.956 Td [(PSBLAS-2.0)-336(library)-336(has,)-358(as)-336(last)-337(non-optional)-336(ar)18(gument,)-358(an)-336(integer)]TJ/F67 9.9626 Tf 298.678 0 Td [(info)]TJ/F62 9.9626 Tf 24.271 0 Td [(vari-)]TJ -322.949 -11.955 Td [(able;)-364(whenever)74(,)-344(inside)-326(the)-326(r)18(outine,)-345(an)-326(err)18(or)-325(is)-326(detected,)-345(this)-326(variable)-326(is)-325(set)-326(to)]TJ 0 -11.955 Td [(a)-384(value)-384(corr)18(esponding)-384(to)-384(a)-384(speci\002c)-384(err)18(or)-384(code.)-711(Then)-384(this)-384(err)18(or)-384(code)-384(is)-384(also)]TJ 0 -11.955 Td [(pushed)-274(on)-273(the)-274(err)18(or)-274(stack)-274(and)-273(then)-274(either)-274(contr)18(ol)-274(is)-273(r)18(eturned)-274(to)-274(the)-273(caller)-274(r)18(ou-)]TJ 0 -11.955 Td [(tine)-342(or)-342(the)-342(execution)-343(is)-342(aborted,)-365(depending)-342(on)-342(the)-342(users)-342(choice.)-587(At)-342(the)-342(time)]TJ 0 -11.955 Td [(when)-243(the)-242(execution)-243(is)-242(aborted,)-244(an)-243(err)18(or)-242(message)-243(is)-243(p)1(rinted)-243(on)-243(standar)18(d)-242(output)]TJ 0 -11.956 Td [(with)-257(a)-256(level)-257(of)-256(verbosity)-257(than)-256(can)-257(be)-256(chosen)-257(by)-257(the)-256(user)74(.)-330(If)-256(the)-257(execution)-257(is)-256(not)]TJ 0 -11.955 Td [(aborted,)-259(then,)-259(the)-257(caller)-257(r)18(outine)-258(checks)-257(the)-257(value)-257(r)18(eturned)-257(in)-258(the)]TJ/F67 9.9626 Tf 284.621 0 Td [(info)]TJ/F62 9.9626 Tf 23.484 0 Td [(variable)]TJ -308.105 -11.955 Td [(and,)-290(if)-282(not)-282(zer)18(o,)-291(an)-282(err)18(or)-282(condition)-282(is)-282(raised.)-407(This)-282(pr)18(ocess)-282(continues)-282(on)-282(all)-282(the)]TJ 0 -11.955 Td [(levels)-203(of)-203(nested)-203(calls)-203(until)-203(the)-203(level)-203(wher)18(e)-202(the)-203(user)-203(decides)-203(to)-203(abort)-203(the)-203(pr)18(ogram)]TJ 0 -11.955 Td [(execution.)]TJ 14.944 -11.955 Td [(Figur)18(e)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(8)-1000(Error)-250(handling)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 683.082 Tm [(The)-317(PSBLAS)-317(library)-317(err)17(or)-317(handling)-317(policy)-317(has)-317(been)-317(completely)-318(r)18(ewritten)-317(in)]TJ 1.02 0 0 1 150.426 671.127 Tm [(version)-315(2.0.)-513(The)-315(idea)-315(behind)-315(the)-315(design)-315(of)-315(this)-315(new)-315(err)18(or)-315(handling)-315(strategy)]TJ 1.02 0 0 1 150.705 659.172 Tm [(is)-261(to)-260(keep)-261(err)18(or)-261(messages)-261(on)-261(a)-260(stack)-261(allowing)-261(the)-260(user)-261(to)-261(trace)-261(back)-260(up)-261(to)-261(the)]TJ 1.02 0 0 1 150.406 647.217 Tm [(point)-270(wher)17(e)-270(the)-271(\002rst)-270(err)17(or)-270(message)-270(has)-271(been)-270(generated.)-380(Every)-271(r)18(outine)-271(in)-270(the)]TJ 0.98 0 0 1 150.705 635.261 Tm [(PSBLAS-2.0)-245(library)-245(has,)-247(as)-245(last)-245(non-optional)-245(ar)18(gument,)-247(an)-245(integer)]TJ/F131 9.9626 Tf 1 0 0 1 435.013 635.261 Tm [(info)]TJ/F84 9.9626 Tf 0.98 0 0 1 458.327 635.261 Tm [(variable;)]TJ 1 0 0 1 150.286 623.306 Tm [(whenever)74(,)-251(inside)-250(the)-251(r)18(outine,)-250(an)-251(err)18(or)-250(is)-251(detected,)-250(this)-251(variable)-250(is)-251(set)-250(to)-251(a)-250(value)]TJ 1.02 0 0 1 150.705 611.351 Tm [(corr)18(esponding)-337(to)-336(a)-337(speci\002c)-336(err)17(or)-336(code.)-578(Then)-337(this)-336(err)17(or)-336(code)-337(is)-336(also)-337(pushed)]TJ 1.02 0 0 1 150.705 599.396 Tm [(on)-299(the)-299(err)17(or)-299(stack)-299(and)-299(then)-299(either)-299(contr)17(ol)-299(is)-299(r)18(eturned)-299(to)-300(the)-299(caller)-299(r)18(outine)-299(or)]TJ 1.005 0 0 1 150.705 587.441 Tm [(the)-249(execution)-249(is)-249(aborted,)-249(depending)-249(on)-250(the)-249(users)-249(choice.)-309(At)-249(the)-249(time)-249(when)-249(the)]TJ 0.98 0 0 1 150.705 575.486 Tm [(execution)-218(is)-218(aborted,)-226(an)-218(err)19(or)-219(message)-218(is)-218(printed)-218(on)-218(standar)18(d)-218(output)-218(with)-218(a)-218(level)]TJ 0.98 0 0 1 150.705 563.53 Tm [(of)-247(verbosity)-247(than)-246(can)-247(be)-247(chosen)-247(by)-247(the)-246(user)75(.)-313(If)-247(the)-247(execution)-247(is)-247(not)-246(aborted,)-249(then,)]TJ 0.98 0 0 1 150.705 551.575 Tm [(the)-256(caller)-256(r)18(outine)-256(checks)-256(the)-256(value)-256(r)18(eturned)-256(in)-256(the)]TJ/F131 9.9626 Tf 1 0 0 1 367.074 551.575 Tm [(info)]TJ/F84 9.9626 Tf 0.98 0 0 1 390.496 551.575 Tm [(variable)-256(and,)-257(if)-256(not)-256(zer)19(o,)]TJ 1.02 0 0 1 150.705 539.62 Tm [(an)-247(err)17(or)-247(condition)-247(is)-247(raised.)-311(This)-247(pr)18(ocess)-247(continues)-248(on)-247(all)-247(the)-247(levels)-247(of)-248(nested)]TJ 1 0 0 1 150.705 527.665 Tm [(calls)-250(until)-250(the)-250(level)-250(wher)18(e)-250(the)-250(user)-250(decides)-250(to)-250(abort)-250(the)-250(pr)18(ogram)-250(execution.)]TJ 1.018 0 0 1 165.649 515.71 Tm [(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-286(5)]TJ + [-246(5)]TJ 0 g 0 G - [-285(shows)-286(the)-286(layou)1(t)-286(of)-286(a)-285(generic)]TJ/F67 9.9626 Tf 172.064 0 Td [(psb_foo)]TJ/F62 9.9626 Tf 39.458 0 Td [(r)18(outine)-286(with)-285(r)18(espect)-286(to)-286(the)]TJ -226.466 -11.956 Td [(PSBLAS-2.0)-258(err)18(or)-259(handling)-258(policy)111(.)-335(It)-258(is)-258(possible)-259(to)-258(see)-258(how)92(,)-261(whenever)-258(an)-258(err)18(or)]TJ 0 -11.955 Td [(condition)-298(is)-298(detected,)-311(the)]TJ/F67 9.9626 Tf 114.879 0 Td [(info)]TJ/F62 9.9626 Tf 23.893 0 Td [(variable)-298(is)-299(set)-298(to)-298(the)-298(corr)18(esponding)-299(err)18(or)-298(code)]TJ -138.772 -11.955 Td [(which)-309(is,)-324(then,)-324(pushed)-310(on)-309(top)-309(of)-310(the)-309(stack)-309(by)-309(means)-310(of)-309(the)]TJ/F67 9.9626 Tf 265.277 0 Td [(psb_errpush)]TJ/F62 9.9626 Tf 57.534 0 Td [(.)-488(An)]TJ -322.811 -11.955 Td [(err)18(or)-325(condition)-326(may)-325(be)-326(dir)18(ectl)1(y)-326(detected)-325(inside)-326(a)-325(r)18(outine)-325(or)-326(indir)18(ectly)-325(check-)]TJ 0 -11.955 Td [(ing)-331(the)-331(err)18(or)-331(code)-331(r)18(eturned)-331(r)18(eturned)-331(by)-331(a)-331(called)-331(r)18(outine.)-553(Whenever)-331(an)-331(err)18(or)]TJ 0 -11.956 Td [(is)-253(encounter)18(ed,)-255(after)-253(it)-254(has)-253(been)-254(pushed)-253(on)-254(st)1(ack,)-255(the)-253(pr)18(ogram)-254(execution)-253(skips)]TJ 0 -11.955 Td [(to)-264(a)-265(point)-264(wher)18(e)-264(the)-265(err)18(or)-264(condition)-264(is)-264(handled;)-272(the)-264(err)18(or)-265(condition)-264(is)-264(handled)]TJ 0 -11.955 Td [(either)-336(by)-336(r)18(eturning)-336(contr)18(ol)-336(to)-336(the)-336(caller)-335(r)17(o)1(utine)-336(or)-336(by)-336(calling)-336(the)]TJ/F67 9.9626 Tf 291.408 0 Td [(psb\134_error)]TJ/F62 9.9626 Tf -291.408 -11.955 Td [(r)18(outine)-273(which)-274(prints)-273(the)-274(content)-273(of)-273(the)-274(err)18(or)-273(stack)-274(and)-273(aborts)-273(the)-274(pr)18(ogram)-273(ex-)]TJ 0 -11.955 Td [(ecution,)-373(accor)18(ding)-348(to)-348(the)-348(choice)-348(made)-348(by)-348(the)-348(user)-348(with)]TJ/F67 9.9626 Tf 252.305 0 Td [(psb_set_erraction)]TJ/F62 9.9626 Tf 88.915 0 Td [(.)]TJ -341.22 -11.955 Td [(The)-297(default)-296(is)-297(to)-296(print)-297(the)-297(err)18(or)-296(and)-297(terminate)-296(the)-297(pr)18(ogram,)-308(but)-297(the)-297(user)-296(may)]TJ 0 -11.956 Td [(choose)-250(to)-250(handle)-250(the)-250(err)18(or)-250(explicitly)111(.)]TJ 14.944 -11.955 Td [(Figur)18(e)]TJ + [-246(shows)-245(the)-246(layout)-246(of)-245(a)-246(generic)]TJ/F131 9.9626 Tf 1 0 0 1 337.572 515.71 Tm [(psb_foo)]TJ/F84 9.9626 Tf 1.018 0 0 1 376.676 515.71 Tm [(r)18(outine)-246(with)-246(r)18(espect)-246(to)-245(the)]TJ 1.004 0 0 1 150.705 503.755 Tm [(PSBLAS-2.0)-250(err)18(or)-250(handling)-250(policy)111(.)-311(It)-250(is)-250(possible)-250(to)-250(see)-249(how)91(,)-250(whenever)-250(an)-250(err)18(or)]TJ 1.02 0 0 1 150.705 491.799 Tm [(condition)-246(is)-246(detected,)-247(the)]TJ/F131 9.9626 Tf 1 0 0 1 265.648 491.799 Tm [(info)]TJ/F84 9.9626 Tf 1.02 0 0 1 289.072 491.799 Tm [(variable)-246(is)-246(set)-247(to)-246(the)-246(corr)17(espondi)1(ng)-247(err)18(or)-246(code)]TJ 1.02 0 0 1 150.286 479.844 Tm [(which)-277(is,)-285(then,)-285(pushed)-277(on)-277(top)-277(of)-277(the)-277(stack)-277(by)-277(means)-277(of)-277(the)]TJ/F131 9.9626 Tf 1 0 0 1 416.461 479.844 Tm [(psb_errpush)]TJ/F84 9.9626 Tf 1.02 0 0 1 473.995 479.844 Tm [(.)-400(An)]TJ 0.992 0 0 1 150.705 467.889 Tm [(err)18(or)-251(condition)-251(may)-251(be)-251(dir)18(ectly)-251(detected)-251(inside)-251(a)-251(r)18(outine)-251(or)-251(indir)18(ectly)-251(checking)]TJ 1.02 0 0 1 150.705 455.934 Tm [(the)-333(err)18(or)-333(code)-333(r)17(eturned)-332(r)17(eturned)-333(by)-333(a)-333(called)-333(r)18(outine.)-567(Whenever)-333(an)-333(err)17(or)-333(is)]TJ 0.98 0 0 1 150.705 443.979 Tm [(encounter)18(ed,)-240(after)-238(it)-237(has)-237(been)-237(pushed)-237(on)-238(stack,)-240(the)-238(pr)19(ogram)-238(executi)1(on)-238(skips)-237(to)-237(a)]TJ 0.98 0 0 1 150.406 432.024 Tm [(point)-251(wher)18(e)-252(the)-251(err)18(or)-251(condition)-252(is)-251(handled;)-253(the)-252(err)19(or)-252(condition)-251(is)-252(handled)-251(either)]TJ 1.015 0 0 1 150.705 420.068 Tm [(by)-245(r)17(eturning)-245(contr)18(ol)-246(to)-245(the)-246(caller)-245(r)17(outine)-245(or)-246(by)-245(calling)-246(the)]TJ/F131 9.9626 Tf 1 0 0 1 407.229 420.068 Tm [(psb\134_error)]TJ/F84 9.9626 Tf 1.015 0 0 1 462.015 420.068 Tm [(r)18(outine)]TJ 1.02 0 0 1 150.286 408.113 Tm [(which)-255(prints)-254(the)-255(content)-255(of)-255(the)-254(err)17(or)-254(stack)-255(and)-255(aborts)-255(the)-254(pr)17(ogram)-254(execution,)]TJ 0.98 0 0 1 150.705 396.158 Tm [(accor)18(ding)-242(to)-242(the)-241(choice)-242(made)-242(by)-242(the)-242(user)-242(with)]TJ/F131 9.9626 Tf 1 0 0 1 350.622 396.158 Tm [(psb_set_erraction)]TJ/F84 9.9626 Tf 0.98 0 0 1 439.537 396.158 Tm [(.)-312(The)-242(default)]TJ 1.02 0 0 1 150.705 384.203 Tm [(is)-314(to)-314(print)-314(t)1(he)-314(err)17(or)-314(and)-313(terminate)-314(the)-314(pr)18(ogram,)-331(but)-314(the)-314(user)-314(may)-314(choose)-314(to)]TJ 1 0 0 1 150.705 372.248 Tm [(handle)-250(the)-250(err)18(or)-250(explicitly)111(.)]TJ 0.98 0 0 1 165.649 360.293 Tm [(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG - [-347(6)]TJ + [-224(6)]TJ 0 g 0 G - [-348(r)18(eports)-347(a)-347(sample)-347(err)18(or)-348(message)-347(generated)-347(by)-348(the)-347(PSBLAS-2.0)-347(li-)]TJ -14.944 -11.955 Td [(brary)111(.)-539(This)-327(err)18(or)-326(has)-327(been)-326(generated)-327(by)-326(the)-326(fact)-327(that)-326(the)-327(user)-326(has)-327(chosen)-326(the)]TJ 0 -11.955 Td [(invalid)-379(\223FOO\224)-380(stor)1(a)-1(g)1(e)-380(format)-379(to)-379(r)18(epr)18(esent)-380(the)-379(sparse)-379(matrix.)-698(Fr)18(om)-380(this)-379(er)18(-)]TJ 0 -11.955 Td [(r)18(or)-394(message)-393(it)-394(is)-393(possible)-394(to)-394(se)1(e)-394(that)-394(the)-393(err)18(or)-394(has)-393(been)-394(detected)-394(inside)-393(the)]TJ/F67 9.9626 Tf 0 -11.955 Td [(psb_cest)]TJ/F62 9.9626 Tf 45.361 0 Td [(subr)18(outine)-353(called)-353(by)]TJ/F67 9.9626 Tf 95.326 0 Td [(psb_spasb)]TJ/F62 9.9626 Tf 50.591 0 Td [(...)-619(by)-354(pr)18(ocess)-353(0)-353(\050i.e.)-619(the)-353(r)18(oot)-354(pr)18(o-)]TJ -191.278 -11.956 Td [(cess\051.)]TJ + [-225(r)19(eports)-225(a)-225(sample)-224(err)18(or)-224(message)-225(generated)-225(by)-224(the)-225(PSBLAS-2.0)-224(library)113(.)]TJ 1.02 0 0 1 150.396 348.337 Tm [(This)-253(err)18(or)-254(has)-253(been)-253(generated)-253(by)-253(the)-253(fact)-253(that)-253(the)-254(user)-253(has)-253(chosen)-253(the)-253(invalid)]TJ 0.98 0 0 1 149.21 336.382 Tm [(\223FOO\224)-255(storage)-254(format)-255(to)-254(r)18(epr)19(esent)-255(the)-254(sparse)-255(matrix.)-316(Fr)18(om)-254(this)-255(err)19(or)-255(message)-254(it)]TJ 0.98 0 0 1 150.705 324.427 Tm [(is)-217(possible)-218(to)-217(see)-217(that)-218(the)-217(err)18(or)-217(has)-217(been)-218(detected)-217(inside)-217(the)]TJ/F131 9.9626 Tf 1 0 0 1 403.747 324.427 Tm [(psb_cest)]TJ/F84 9.9626 Tf 0.98 0 0 1 447.712 324.427 Tm [(subr)18(outine)]TJ 1 0 0 1 150.705 312.472 Tm [(called)-250(by)]TJ/F131 9.9626 Tf 42.091 0 Td [(psb_spasb)]TJ/F84 9.9626 Tf 49.564 0 Td [(...)-310(by)-250(pr)18(ocess)-250(0)-250(\050i.e.)-310(the)-250(r)18(oot)-250(pr)18(ocess\051.)]TJ 0 g 0 G - 164.384 -198.123 Td [(136)]TJ + 72.728 -222.034 Td [(136)]TJ 0 g 0 G ET endstream endobj -1876 0 obj +1887 0 obj << -/Length 10302 +/Length 10390 >> stream 0 g 0 G @@ -24435,7 +24454,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F67 9.9626 Tf 102.884 698.757 Td [(subroutine)]TJ +/F131 9.9626 Tf 102.884 698.757 Td [(subroutine)]TJ 0 g 0 G [-525(psb_foo\050some)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24447,12 +24466,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 9.9626 Tf 15.691 -11.956 Td [(!...)]TJ +/F279 9.9626 Tf 15.691 -11.956 Td [(!...)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -11.955 Td [(if)]TJ +/F131 9.9626 Tf 0 -11.955 Td [(if)]TJ 0 g 0 G [(\050error)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24501,12 +24520,12 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 9.9626 Tf 0 -11.956 Td [(!...)]TJ +/F279 9.9626 Tf 0 -11.956 Td [(!...)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 0 -11.955 Td [(call)]TJ +/F131 9.9626 Tf 0 -11.955 Td [(call)]TJ 0 g 0 G [-525(psb_bar\050some)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24570,10 +24589,10 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 9.9626 Tf 0 -11.955 Td [(!...)]TJ +/F279 9.9626 Tf 0 -11.955 Td [(!...)]TJ 0 g 0 G 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG -/F67 9.9626 Tf -15.691 -11.955 Td [(9999)]TJ +/F131 9.9626 Tf -15.691 -11.955 Td [(9999)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -24622,17 +24641,17 @@ BT 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0 g 0 G -/F62 9.9626 Tf -2.989 -41.729 Td [(Listing)-289(5:)-387(The)-289(layout)-289(of)-289(a)-289(generic)]TJ/F67 9.9626 Tf 149.96 0 Td [(psb)]TJ +/F84 9.9626 Tf 1.018 0 0 1 99.895 382.059 Tm [(Listing)-246(5:)-306(The)-247(layout)-246(of)-246(a)-247(generic)]TJ/F131 9.9626 Tf 1 0 0 1 249.146 382.059 Tm [(psb)]TJ ET q -1 0 0 1 266.174 382.258 cm +1 0 0 1 265.464 382.258 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 269.312 382.059 Td [(foo)]TJ/F62 9.9626 Tf 18.568 0 Td [(r)18(outine)-289(with)-289(r)18(espect)-288(to)-289(PSBLAS-2.0)]TJ -187.985 -11.955 Td [(err)18(or)-250(handling)-250(policy)111(.)]TJ +/F131 9.9626 Tf 268.602 382.059 Td [(foo)]TJ/F84 9.9626 Tf 1.018 0 0 1 286.792 382.059 Tm [(r)18(outine)-247(with)-246(r)18(espect)-247(to)-246(PSBLAS-2.0)]TJ 1 0 0 1 99.895 370.104 Tm [(err)18(or)-250(handling)-250(policy)111(.)]TJ 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG -/F67 9.9626 Tf 0 -19.609 Td [(==========================================================)]TJ +/F131 9.9626 Tf 0 -19.609 Td [(==========================================================)]TJ 0 g 0 G 0 -11.955 Td [(Process:)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -24853,14 +24872,14 @@ BT 0 g 0 G 0 -11.955 Td [(Aborting...)]TJ 0 g 0 G -/F62 9.9626 Tf 0 -29.397 Td [(Listing)-364(6:)-537(A)-364(sample)-364(PSBLAS-3.0)-363(err)18(or)-364(message.)-651(Pr)18(ocess)-364(0)-364(detected)-363(an)-364(err)18(or)]TJ 0 -11.955 Td [(condition)-250(inside)-250(the)-250(psb)]TJ +/F84 9.9626 Tf 1.02 0 0 1 99.895 165.681 Tm [(Listing)-316(6:)-445(A)-316(sample)-316(PSBLAS-3.0)-316(err)18(or)-316(message.)-516(Pr)17(ocess)-315(0)-316(detected)-316(an)-316(err)18(or)]TJ 1 0 0 1 99.895 153.726 Tm [(condition)-250(inside)-250(the)-250(psb)]TJ ET q 1 0 0 1 206.215 153.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 209.204 153.726 Td [(cest)-250(subr)18(outine)]TJ +/F84 9.9626 Tf 209.204 153.726 Td [(cest)-250(subr)18(outine)]TJ 0 g 0 G 55.075 -63.288 Td [(137)]TJ 0 g 0 G @@ -24868,65 +24887,65 @@ ET endstream endobj -1880 0 obj +1891 0 obj << -/Length 3570 +/Length 3562 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(8.1)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(8.1)-1000(psb)]TJ ET q 1 0 0 1 198.238 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(error)-250(code)-250(onto)-250(the)-250(error)-250(stack)]TJ/F62 9.9626 Tf -49.379 -24.942 Td [(c)-175(a)-175(l)-174(l)-874(p)-98(s)-99(b)]TJ +/F75 11.9552 Tf 201.825 706.129 Td [(errpush)-250(\227)-250(Pushes)-250(an)-250(error)-250(code)-250(onto)-250(the)-250(error)-250(stack)]TJ/F84 9.9626 Tf -49.379 -24.942 Td [(c)-175(a)-175(l)-174(l)-874(p)-98(s)-99(b)]TJ ET q 1 0 0 1 200.841 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 204.812 681.187 Td [(e)-99(r)-98(r)-99(p)-98(u)-99(s)-99(h)-232(\050)-266(e)-132(r)-132(r)]TJ +/F84 9.9626 Tf 204.812 681.187 Td [(e)-99(r)-98(r)-99(p)-98(u)-99(s)-99(h)-232(\050)-266(e)-132(r)-132(r)]TJ ET q 1 0 0 1 270.843 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 275.151 681.187 Td [(c)-440(,)-825(r)]TJ +/F84 9.9626 Tf 275.151 681.187 Td [(c)-440(,)-825(r)]TJ ET q 1 0 0 1 299.7 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 303.188 681.187 Td [(n)-50(a)-50(m)-50(e)-276(,)-929(i)]TJ +/F84 9.9626 Tf 303.188 681.187 Td [(n)-50(a)-50(m)-50(e)-276(,)-929(i)]TJ ET q 1 0 0 1 348.561 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 353.087 681.187 Td [(e)-154(r)-155(r)-483(,)-920(a)]TJ +/F84 9.9626 Tf 353.087 681.187 Td [(e)-154(r)-155(r)-483(,)-920(a)]TJ ET q 1 0 0 1 392.305 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 396.74 681.187 Td [(e)-145(r)-145(r)-279(\051)]TJ +/F84 9.9626 Tf 396.74 681.187 Td [(e)-145(r)-145(r)-279(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -246.035 -27.895 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -246.035 -27.895 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(err)]TJ @@ -24936,42 +24955,42 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 167.023 613.442 Td [(c)]TJ +/F75 9.9626 Tf 167.023 613.442 Td [(c)]TJ 0 g 0 G -/F62 9.9626 Tf 9.405 0 Td [(the)-250(err)18(or)-250(code)]TJ -0.817 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ +/F84 9.9626 Tf 9.405 0 Td [(the)-250(err)18(or)-250(code)]TJ -0.817 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(r)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(r)]TJ ET q 1 0 0 1 155.178 545.895 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 158.167 545.696 Td [(name)]TJ +/F75 9.9626 Tf 158.167 545.696 Td [(name)]TJ 0 g 0 G -/F62 9.9626 Tf 29.888 0 Td [(the)-250(soutine)-250(wher)18(e)-250(the)-250(err)18(or)-250(has)-250(been)-250(caught.)]TJ -12.444 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ +/F84 9.9626 Tf 29.888 0 Td [(the)-250(soutine)-250(wher)18(e)-250(the)-250(err)18(or)-250(has)-250(been)-250(caught.)]TJ -12.444 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(i)]TJ +/F75 9.9626 Tf -24.906 -31.881 Td [(i)]TJ ET q 1 0 0 1 154.62 466.194 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 157.609 465.994 Td [(err)]TJ +/F75 9.9626 Tf 157.609 465.994 Td [(err)]TJ 0 g 0 G -/F62 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ 0.289 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)]TJ +/F84 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ 0.289 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.881 Td [(a)]TJ +/F75 9.9626 Tf -24.906 -31.881 Td [(a)]TJ ET q 1 0 0 1 156.284 398.448 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 159.273 398.249 Td [(err)]TJ +/F75 9.9626 Tf 159.273 398.249 Td [(err)]TJ 0 g 0 G -/F62 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ -1.375 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ +/F84 9.9626 Tf 17.713 0 Td [(addional)-250(info)-250(for)-250(err)18(or)-250(code)]TJ -1.375 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(string.)]TJ 0 g 0 G 139.477 -271.945 Td [(138)]TJ 0 g 0 G @@ -24979,42 +24998,42 @@ ET endstream endobj -1886 0 obj +1897 0 obj << -/Length 1332 +/Length 1377 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(8.2)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(8.2)]TJ 0.984 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.11 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(error)-306(\227)-306(Prints)-306(the)-306(error)-307(s)1(tack)-307(content)-306(and)-306(aborts)-306(exe-)]TJ -24.221 -13.948 Td [(cution)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-900(p)-126(s)-125(b)]TJ +/F75 11.9552 Tf 0.984 0 0 1 150.697 706.129 Tm [(error)-255(\227)-255(Prints)-255(the)-254(error)-255(stack)-255(content)-255(and)-255(aborts)-255(execu-)]TJ 1 0 0 1 126.795 692.181 Tm [(tion)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-900(p)-126(s)-125(b)]TJ ET q 1 0 0 1 151.092 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 155.328 667.24 Td [(e)-125(r)-125(r)-126(o)-125(r)-259(\050)-279(i)-146(c)-146(o)-147(n)-146(t)-146(x)-146(t)-280(\051)]TJ +/F84 9.9626 Tf 155.328 667.24 Td [(e)-125(r)-125(r)-126(o)-125(r)-259(\050)-279(i)-146(c)-146(o)-147(n)-146(t)-146(x)-146(t)-280(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -55.433 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -55.433 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icontxt)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ 0 g 0 G 139.477 -461.235 Td [(139)]TJ 0 g 0 G @@ -25022,56 +25041,56 @@ ET endstream endobj -1893 0 obj +1904 0 obj << -/Length 1526 +/Length 1584 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(8.3)-1000(psb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(8.3)]TJ 0.98 0 0 1 177.604 706.129 Tm [(psb)]TJ ET q -1 0 0 1 198.238 706.328 cm +1 0 0 1 197.84 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 201.825 706.129 Td [(set)]TJ +/F75 11.9552 Tf 0.98 0 0 1 201.427 706.129 Tm [(set)]TJ ET q -1 0 0 1 217.809 706.328 cm +1 0 0 1 217.105 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 221.396 706.129 Td [(errverbosity)-190(\227)-190(Sets)-190(the)-190(verbosity)-190(of)-190(error)-190(messages)]TJ/F62 9.9626 Tf -68.95 -24.942 Td [(c)-175(a)-175(l)-174(l)-921(p)-147(s)-146(b)]TJ +/F75 11.9552 Tf 0.98 0 0 1 220.692 706.129 Tm [(errverbosity)-250(\227)-251(Sets)-250(the)-250(verbosity)-250(of)-251(error)-250(messages)]TJ/F84 9.9626 Tf 1 0 0 1 152.446 681.187 Tm [(c)-175(a)-175(l)-174(l)-921(p)-147(s)-146(b)]TJ ET q 1 0 0 1 202.736 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 207.181 681.187 Td [(s)-146(e)-146(t)]TJ +/F84 9.9626 Tf 207.181 681.187 Td [(s)-146(e)-146(t)]TJ ET q 1 0 0 1 224.391 681.387 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 228.836 681.187 Td [(e)-146(r)-146(r)-146(v)-147(e)-146(r)-146(b)-146(o)-146(s)-146(i)-146(t)-147(y)-279(\050)-151(v)-151(\051)]TJ +/F84 9.9626 Tf 228.836 681.187 Td [(e)-146(r)-146(r)-146(v)-147(e)-146(r)-146(b)-146(o)-146(s)-146(i)-146(t)-147(y)-279(\050)-151(v)-151(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -78.131 -27.895 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -78.131 -27.895 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(v)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(verbosity)-250(level)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ +/F84 9.9626 Tf 10.52 0 Td [(the)-250(verbosity)-250(level)]TJ 14.386 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)]TJ 0 g 0 G 139.477 -475.183 Td [(140)]TJ 0 g 0 G @@ -25079,58 +25098,58 @@ ET endstream endobj -1899 0 obj +1910 0 obj << -/Length 2016 +/Length 2078 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(8.4)-1000(psb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(8.4)]TJ 0.988 0 0 1 126.795 706.129 Tm [(psb)]TJ ET q -1 0 0 1 147.429 706.328 cm +1 0 0 1 147.19 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 151.016 706.129 Td [(set)]TJ +/F75 11.9552 Tf 0.988 0 0 1 150.777 706.129 Tm [(set)]TJ ET q -1 0 0 1 166.999 706.328 cm +1 0 0 1 166.577 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 170.586 706.129 Td [(erraction)-223(\227)-223(Set)-222(the)-223(type)-223(of)-223(action)-223(to)-222(be)-223(taken)-223(upon)]TJ -43.792 -13.948 Td [(error)-250(condition)]TJ/F62 9.9626 Tf -25.157 -24.941 Td [(c)-175(a)-175(l)-174(l)-926(p)-151(s)-151(b)]TJ +/F75 11.9552 Tf 0.988 0 0 1 170.164 706.129 Tm [(erraction)-254(\227)-254(Set)-254(the)-254(type)-255(of)-254(action)-254(to)-254(be)-254(taken)-254(upon)]TJ 1 0 0 1 126.795 692.181 Tm [(error)-250(condition)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-926(p)-151(s)-151(b)]TJ ET q 1 0 0 1 152.113 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 156.605 667.24 Td [(s)-151(e)-151(t)]TJ +/F84 9.9626 Tf 156.605 667.24 Td [(s)-151(e)-151(t)]TJ ET q 1 0 0 1 173.955 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 178.447 667.24 Td [(e)-151(r)-151(r)-150(a)-151(c)-151(t)-151(i)-151(o)-151(n)-284(\050)-296(e)-163(r)-162(r)]TJ +/F84 9.9626 Tf 178.447 667.24 Td [(e)-151(r)-151(r)-150(a)-151(c)-151(t)-151(i)-151(o)-151(n)-284(\050)-296(e)-163(r)-162(r)]TJ ET q 1 0 0 1 257.102 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 261.712 667.24 Td [(a)-163(c)-162(t)-296(\051)]TJ +/F84 9.9626 Tf 261.712 667.24 Td [(a)-163(c)-162(t)-296(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -161.817 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -161.817 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(err)]TJ @@ -25140,9 +25159,9 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F59 9.9626 Tf 116.214 599.494 Td [(act)]TJ +/F75 9.9626 Tf 116.214 599.494 Td [(act)]TJ 0 g 0 G -/F62 9.9626 Tf 17.703 0 Td [(the)-250(type)-250(of)-250(action.)]TJ -9.115 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)-310(Possible)-250(values:)]TJ/F67 9.9626 Tf 179.116 0 Td [(psb_act_ret)]TJ/F62 9.9626 Tf 57.534 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_act_abort)]TJ/F62 9.9626 Tf 67.995 0 Td [(.)]TJ +/F84 9.9626 Tf 17.703 0 Td [(the)-250(type)-250(of)-250(action.)]TJ -9.115 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(.)-310(Possible)-250(values:)]TJ/F131 9.9626 Tf 179.116 0 Td [(psb_act_ret)]TJ/F84 9.9626 Tf 57.534 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_act_abort)]TJ/F84 9.9626 Tf 67.995 0 Td [(.)]TJ 0 g 0 G -170.149 -461.235 Td [(141)]TJ 0 g 0 G @@ -25150,15 +25169,15 @@ ET endstream endobj -1905 0 obj +1916 0 obj << -/Length 507 +/Length 539 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(9)-1000(Utilities)]TJ/F62 9.9626 Tf 0 -22.702 Td [(W)92(e)-323(have)-322(some)-323(utilities)-322(available)-323(for)-322(input)-323(and)-323(output)-322(of)-323(sparse)-322(matrices;)-359(the)]TJ 0 -11.955 Td [(interfaces)-250(to)-250(these)-250(r)18(outines)-250(ar)18(e)-250(available)-250(in)-250(the)-250(module)]TJ/F67 9.9626 Tf 242.009 0 Td [(psb_util_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(9)-1000(Utilities)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.207 683.082 Tm [(W)90(e)-272(have)-272(some)-272(utilities)-272(available)-272(for)-272(input)-272(and)-272(output)-272(of)-272(sparse)-272(matrices;)-286(the)]TJ 1 0 0 1 150.705 671.127 Tm [(interfaces)-250(to)-250(these)-250(r)18(outines)-250(ar)18(e)-250(available)-250(in)-250(the)-250(module)]TJ/F131 9.9626 Tf 242.009 0 Td [(psb_util_mod)]TJ/F84 9.9626 Tf 62.764 0 Td [(.)]TJ 0 g 0 G -140.39 -580.689 Td [(142)]TJ 0 g 0 G @@ -25166,334 +25185,228 @@ ET endstream endobj -1910 0 obj +1921 0 obj << -/Length 4553 +/Length 4735 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(9.1)-1206(hb)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(9.1)]TJ 0.984 0 0 1 129.789 706.129 Tm [(hb)]TJ ET q -1 0 0 1 144.589 706.328 cm +1 0 0 1 144.882 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 148.175 706.129 Td [(read)-206(\227)-207(Read)-206(a)-207(sparse)-206(matrix)-207(fr)1(om)-207(a)-206(\002le)-207(in)-206(the)-207(Harwell\226)]TJ -21.381 -13.948 Td [(Boeing)-250(format)]TJ/F62 9.9626 Tf -25.157 -24.941 Td [(c)-175(a)-175(l)-174(l)-865(h)-90(b)]TJ +/F75 11.9552 Tf 0.984 0 0 1 148.468 706.129 Tm [(read)-255(\227)-254(Read)-255(a)-254(sparse)-255(matrix)-254(from)-255(a)-254(\002le)-255(in)-254(the)-255(Harwell\226)]TJ 1 0 0 1 126.795 692.181 Tm [(Boeing)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-865(h)-90(b)]TJ ET q 1 0 0 1 144.379 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 148.265 667.24 Td [(r)-90(e)-90(a)-90(d)-223(\050)-167(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-871(f)-97(i)-96(l)-96(e)-96(n)-96(a)-97(m)-96(e)-367(,)-791(b)-206(,)-919(m)-143(t)-144(i)-143(t)-143(l)-144(e)-277(\051)]TJ +/F84 9.9626 Tf 148.265 667.24 Td [(r)-90(e)-90(a)-90(d)-223(\050)-167(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-871(f)-97(i)-96(l)-96(e)-96(n)-96(a)-97(m)-96(e)-367(,)-791(b)-206(,)-919(m)-143(t)-144(i)-143(t)-143(l)-144(e)-277(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -48.37 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -48.37 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.185 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 124.802 575.584 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 423.609 575.584 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.839 575.584 Tm [(,)-330(in)]TJ 1.003 0 0 1 124.384 563.628 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 124.802 551.673 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ +/F75 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.109 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 26.8 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.757 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 442.283 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 442.283 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 442.084 Td [(type)]TJ +/F131 9.9626 Tf 347.544 442.084 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -19.925 Td [(b)]TJ +/F75 9.9626 Tf -268.571 -19.925 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.069 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.838 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-235(array)-234(of)-235(type)-234(r)18(eal)-235(or)-234(complex,)-238(rank)-234(2)-235(and)-234(having)-235(the)-234(ALLOCA)74(T)74(ABLE)]TJ 0 -11.956 Td [(attribute;)-361(will)-324(be)-324(al)1(located)-324(and)-324(\002lled)-324(in)-324(if)-324(the)-324(input)-324(\002le)-323(contains)-324(a)-324(right)]TJ 0 -11.955 Td [(hand)-250(side,)-250(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ +/F84 9.9626 Tf 11.069 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.529 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.995 0 0 1 124.413 398.249 Tm [(An)-252(array)-251(of)-252(type)-251(r)18(eal)-251(or)-252(complex,)-251(rank)-252(2)-251(and)-252(having)-251(the)-252(ALLOCA)74(T)75(ABLE)]TJ 1.02 0 0 1 124.802 386.293 Tm [(attribute;)-293(will)-277(be)-278(allocated)-277(and)-277(\002lled)-277(in)-277(if)-278(the)-277(input)-277(\002le)-277(contains)-277(a)-278(right)]TJ 1 0 0 1 124.802 374.338 Tm [(hand)-250(side,)-250(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(mtitle)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(mtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(A)-337(charachter)-338(variable)-337(of)-338(l)1(ength)-338(72)-337(holding)-338(a)-337(copy)-338(of)-337(the)-337(matrix)-338(title)-337(as)]TJ 0 -11.956 Td [(speci\002ed)-250(by)-250(the)-250(Harwell-Boeing)-250(format)-250(and)-250(contained)-250(in)-250(the)-250(input)-250(\002le.)]TJ +/F84 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.413 330.503 Tm [(A)-292(charachter)-292(variable)-292(of)-292(length)-292(72)-292(holding)-292(a)-293(copy)-292(of)-292(the)-292(matrix)-292(title)-292(as)]TJ 1 0 0 1 124.802 318.547 Tm [(speci\002ed)-250(by)-250(the)-250(Harwell-Boeing)-250(format)-250(and)-250(contained)-250(in)-250(the)-250(input)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(iret)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -184.274 Td [(143)]TJ + 139.866 -184.274 Td [(143)]TJ 0 g 0 G ET endstream endobj -1917 0 obj +1928 0 obj << -/Length 4948 +/Length 5172 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(9.2)-1000(hb)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(9.2)]TJ 1.02 0 0 1 177.604 706.129 Tm [(hb)]TJ ET q -1 0 0 1 192.93 706.328 cm +1 0 0 1 193.223 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 196.517 706.129 Td [(write)-298(\227)-297(W)74(rite)-298(a)-298(sparse)-298(matrix)-297(to)-298(a)-298(\002le)-298(in)-297(the)-298(Harwell\226)]TJ -18.913 -13.948 Td [(Boeing)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-884(h)-109(b)]TJ +/F75 11.9552 Tf 1.02 0 0 1 196.809 706.129 Tm [(write)-264(\227)-265(W)73(rite)-265(a)-264(sparse)-264(matrix)-265(to)-264(a)-264(\002le)-265(in)-264(the)-264(Harwell\226)]TJ 1 0 0 1 177.604 692.181 Tm [(Boeing)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-884(h)-109(b)]TJ ET q 1 0 0 1 195.753 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 199.827 667.24 Td [(w)-109(r)-109(i)-109(t)-109(e)-242(\050)-167(a)-241(,)-927(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-129(t)-435(,)-871(f)-96(i)-96(l)-96(e)-97(n)-96(a)-96(m)-96(e)-368(,)-816(k)-42(e)-42(y)-259(,)-855(r)-79(h)-80(s)-335(,)-918(m)-144(t)-143(i)-144(t)-143(l)-143(e)-277(\051)]TJ +/F84 9.9626 Tf 199.827 667.24 Td [(w)-109(r)-109(i)-109(t)-109(e)-242(\050)-167(a)-241(,)-927(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-129(t)-435(,)-871(f)-96(i)-96(l)-96(e)-97(n)-96(a)-96(m)-96(e)-368(,)-816(k)-42(e)-42(y)-259(,)-855(r)-79(h)-80(s)-335(,)-918(m)-144(t)-143(i)-144(t)-143(l)-143(e)-277(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -49.122 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -49.122 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(required)]TJ/F62 9.9626 Tf 39.293 0 Td [(.)]TJ -63.292 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.983 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.137 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.137 0 Td [(psb)]TJ ET q 1 0 0 1 360.068 575.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 575.584 Td [(Tspmat)]TJ +/F131 9.9626 Tf 363.206 575.584 Td [(Tspmat)]TJ ET q 1 0 0 1 395.216 575.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 398.354 575.584 Td [(type)]TJ +/F131 9.9626 Tf 398.354 575.584 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.57 -19.926 Td [(b)]TJ +/F75 9.9626 Tf -268.57 -19.926 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side.)]TJ 13.838 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(An)-235(array)-234(of)-235(type)-234(r)18(eal)-235(or)-234(complex,)-238(rank)-234(1)-235(and)-234(having)-235(the)-234(ALLOCA)74(T)74(ABLE)]TJ 0 -11.955 Td [(attribute;)-361(will)-324(be)-324(allocated)-323(and)-324(\002lled)-324(in)-324(if)-324(the)-324(input)-324(\002le)-323(contains)-324(a)-324(right)]TJ 0 -11.955 Td [(hand)-250(side.)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side.)]TJ 13.53 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.995 0 0 1 175.223 531.748 Tm [(An)-251(array)-252(of)-251(type)-252(r)18(eal)-251(or)-252(complex,)-251(rank)-252(1)-251(and)-252(having)-251(the)-252(ALLOCA)75(T)74(ABLE)]TJ 1.02 0 0 1 175.611 519.793 Tm [(attribute;)-293(will)-277(be)-278(allocated)-277(and)-277(\002lled)-277(in)-277(if)-278(the)-277(input)-277(\002le)-277(contains)-278(a)-277(right)]TJ 1 0 0 1 175.611 507.838 Tm [(hand)-250(side.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(\002lename)]TJ +/F75 9.9626 Tf -24.906 -19.926 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.368 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)-387(in)]TJ -303.765 -11.955 Td [(which)-234(case)-234(the)-233(default)-234(output)-234(unit)-234(6)-234(\050i)1(.e.)-305(standar)18(d)-234(output)-234(in)-233(Unix)-234(jar)18(gon\051)]TJ 0 -11.955 Td [(is)-250(used.)-310(Default:)]TJ/F67 9.9626 Tf 74.799 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 1.02 0 0 1 175.611 464.002 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 474.418 464.002 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.649 464.002 Tm [(,)-330(in)]TJ 0.999 0 0 1 175.193 452.047 Tm [(which)-249(case)-249(the)-249(default)-250(outp)1(ut)-250(unit)-249(6)-249(\050i.e.)-310(standar)18(d)-249(output)-249(in)-249(Unix)-249(jar)18(gon\051)]TJ 1 0 0 1 175.611 440.092 Tm [(is)-250(used.)-310(Default:)]TJ/F131 9.9626 Tf 74.799 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -104.935 -19.926 Td [(iunit)]TJ +/F75 9.9626 Tf -104.935 -19.926 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.108 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.187 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.758 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 26.799 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.758 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.894 -19.925 Td [(key)]TJ +/F75 9.9626 Tf -317.894 -19.925 Td [(key)]TJ 0 g 0 G -/F62 9.9626 Tf 21.589 0 Td [(Matrix)-250(key)111(.)]TJ 3.317 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(A)-291(charachter)-291(variable)-291(of)-291(length)-291(8)-291(holding)-291(the)-290(matrix)-291(key)-291(as)-291(speci\002ed)-291(by)]TJ 0 -11.955 Td [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ +/F84 9.9626 Tf 21.589 0 Td [(Matrix)-250(key)111(.)]TJ 3.009 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 1.02 0 0 1 175.223 352.42 Tm [(A)-245(charachter)-245(variable)-245(of)-245(length)-245(8)-245(holding)-245(the)-245(matrix)-245(key)-245(as)-245(speci\002ed)-245(by)]TJ 1 0 0 1 175.611 340.465 Tm [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.925 Td [(mtitle)]TJ +/F75 9.9626 Tf -24.906 -19.925 Td [(mtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 32.089 0 Td [(Matrix)-250(title.)]TJ -7.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(Optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(A)-239(charachter)-239(variable)-239(of)-239(length)-240(72)-239(holding)-239(the)-239(matrix)-239(title)-239(as)-239(speci\002ed)-239(by)]TJ 0 -11.956 Td [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ +/F84 9.9626 Tf 32.089 0 Td [(Matrix)-250(title.)]TJ -7.491 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.998 0 0 1 175.223 296.63 Tm [(A)-251(charachter)-251(variable)-251(of)-251(length)-251(72)-251(holding)-251(the)-251(matrix)-251(title)-250(as)-251(speci\002ed)-251(by)]TJ 1 0 0 1 175.611 284.674 Tm [(the)-250(Harwell-Boeing)-250(format)-250(and)-250(to)-250(be)-250(written)-250(to)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -21.917 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -24.906 -21.917 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.433 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -0 g 0 G - 139.477 -128.483 Td [(144)]TJ -0 g 0 G -ET - -endstream -endobj -1924 0 obj -<< -/Length 3542 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 99.895 706.129 Td [(9.3)-1000(mm)]TJ -ET -q -1 0 0 1 148.768 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 152.354 706.129 Td [(mat)]TJ -ET -q -1 0 0 1 173.658 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 177.245 706.129 Td [(read)-202(\227)-203(Read)-202(a)-203(sparse)-202(matrix)-203(from)-202(a)-203(\002le)-202(in)-203(the)-202(Ma-)]TJ -50.45 -13.948 Td [(trixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-810(m)-35(m)]TJ -ET -q -1 0 0 1 149.022 667.439 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 152.359 667.24 Td [(m)-35(a)-35(t)]TJ -ET -q -1 0 0 1 171.029 667.439 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F62 9.9626 Tf 174.367 667.24 Td [(r)-35(e)-35(a)-35(d)-169(\050)-166(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-107(a)-106(m)-107(e)-241(\051)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -74.472 -27.896 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(\002lename)]TJ -0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.185 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ -0 g 0 G -/F62 9.9626 Tf 27.109 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.926 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ -ET -q -1 0 0 1 309.258 442.283 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ -ET -q -1 0 0 1 344.406 442.283 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 347.544 442.084 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -268.571 -19.925 Td [(iret)]TJ -0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -307.811 Td [(145)]TJ + 139.865 -128.483 Td [(144)]TJ 0 g 0 G ET endstream endobj -1822 0 obj +1821 0 obj << /Type /ObjStm /N 100 -/First 972 -/Length 9404 ->> -stream -1819 0 1821 118 473 177 1818 235 1824 382 1826 500 1827 558 1828 616 1829 674 1823 732 -1831 869 1833 987 477 1046 1830 1104 1835 1251 1837 1369 1838 1427 1839 1485 1840 1543 1834 1601 -1842 1738 1844 1856 481 1915 1841 1973 1846 2120 1848 2238 1849 2296 1850 2354 1852 2411 1853 2469 -1854 2527 1845 2585 1857 2764 1859 2882 485 2941 1860 2999 1856 3058 1862 3205 1864 3323 489 3381 -1865 3438 1861 3496 1869 3643 1866 3791 1867 3939 1871 4087 493 4146 1868 4204 1875 4298 1877 4416 -1872 4474 1873 4532 1874 4590 1879 4686 1881 4804 497 4863 1882 4921 1883 4980 1878 5039 1885 5120 -1887 5238 501 5296 1888 5353 1889 5410 1884 5468 1892 5549 1894 5667 505 5726 1895 5784 1896 5843 -1891 5902 1898 5983 1900 6101 509 6159 1901 6216 1902 6273 1897 6331 1904 6425 1906 6543 513 6602 -1903 6660 1909 6754 1907 6893 1911 7038 517 7096 1912 7153 1913 7211 1908 7269 1916 7363 1914 7502 -1918 7647 521 7706 1919 7764 1920 7823 1915 7882 1923 7976 1921 8115 1925 8260 525 8318 1926 8375 -% 1819 0 obj -<< -/Type /Page -/Contents 1820 0 R -/Resources 1818 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R ->> -% 1821 0 obj -<< -/D [1819 0 R /XYZ 149.705 753.953 null] ->> -% 473 0 obj -<< -/D [1819 0 R /XYZ 150.705 716.092 null] ->> -% 1818 0 obj +/First 974 +/Length 9463 +>> +stream +1817 0 1823 151 1825 269 1826 327 1827 385 1828 443 1822 501 1831 639 1833 757 473 816 +1830 874 1835 1025 1837 1143 1838 1201 1839 1259 1840 1316 1834 1373 1842 1511 1844 1629 477 1688 +1841 1746 1846 1897 1848 2015 1849 2073 1850 2131 1851 2189 1845 2247 1853 2385 1855 2503 481 2562 +1852 2620 1857 2771 1859 2889 1860 2947 1861 3005 1863 3062 1864 3120 1865 3178 1856 3236 1868 3417 +1870 3535 485 3594 1871 3652 1867 3711 1873 3862 1875 3980 489 4038 1876 4095 1872 4153 1880 4304 +1877 4452 1878 4600 1882 4748 493 4807 1879 4865 1886 4960 1888 5078 1883 5136 1884 5194 1885 5252 +1890 5349 1892 5467 497 5526 1893 5584 1894 5643 1889 5702 1896 5783 1898 5901 501 5959 1899 6016 +1900 6073 1895 6131 1903 6212 1905 6330 505 6389 1906 6447 1907 6506 1902 6565 1909 6646 1911 6764 +509 6822 1912 6879 1913 6936 1908 6994 1915 7089 1917 7207 513 7266 1914 7324 1920 7419 1918 7558 +1922 7703 517 7761 1923 7818 1924 7876 1919 7934 1927 8029 1925 8168 1929 8313 521 8372 1930 8430 +% 1817 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1824 0 obj +% 1823 0 obj << /Type /Page -/Contents 1825 0 R -/Resources 1823 0 R +/Contents 1824 0 R +/Resources 1822 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1829 0 R +>> +% 1825 0 obj +<< +/D [1823 0 R /XYZ 98.895 753.953 null] >> % 1826 0 obj << -/D [1824 0 R /XYZ 98.895 753.953 null] +/D [1823 0 R /XYZ 99.895 552.489 null] >> % 1827 0 obj << -/D [1824 0 R /XYZ 99.895 528.579 null] +/D [1823 0 R /XYZ 99.895 518.014 null] >> % 1828 0 obj << -/D [1824 0 R /XYZ 99.895 494.104 null] ->> -% 1829 0 obj -<< -/D [1824 0 R /XYZ 99.895 403.265 null] +/D [1823 0 R /XYZ 99.895 427.175 null] >> -% 1823 0 obj +% 1822 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> % 1831 0 obj @@ -25502,19 +25415,19 @@ stream /Contents 1832 0 R /Resources 1830 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1829 0 R >> % 1833 0 obj << /D [1831 0 R /XYZ 149.705 753.953 null] >> -% 477 0 obj +% 473 0 obj << /D [1831 0 R /XYZ 150.705 716.092 null] >> % 1830 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> % 1835 0 obj @@ -25523,7 +25436,7 @@ stream /Contents 1836 0 R /Resources 1834 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1829 0 R >> % 1837 0 obj << @@ -25531,19 +25444,19 @@ stream >> % 1838 0 obj << -/D [1835 0 R /XYZ 99.895 528.579 null] +/D [1835 0 R /XYZ 99.895 564.444 null] >> % 1839 0 obj << -/D [1835 0 R /XYZ 99.895 494.104 null] +/D [1835 0 R /XYZ 99.895 529.97 null] >> % 1840 0 obj << -/D [1835 0 R /XYZ 99.895 403.265 null] +/D [1835 0 R /XYZ 99.895 439.13 null] >> % 1834 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F60 666 0 R /F120 1782 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> % 1842 0 obj @@ -25552,19 +25465,19 @@ stream /Contents 1843 0 R /Resources 1841 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1817 0 R +/Parent 1829 0 R >> % 1844 0 obj << /D [1842 0 R /XYZ 149.705 753.953 null] >> -% 481 0 obj +% 477 0 obj << /D [1842 0 R /XYZ 150.705 716.092 null] >> % 1841 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F91 914 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> % 1846 0 obj @@ -25573,7 +25486,7 @@ stream /Contents 1847 0 R /Resources 1845 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1829 0 R >> % 1848 0 obj << @@ -25581,27 +25494,40 @@ stream >> % 1849 0 obj << -/D [1846 0 R /XYZ 99.895 564.444 null] +/D [1846 0 R /XYZ 99.895 552.489 null] >> % 1850 0 obj << -/D [1846 0 R /XYZ 99.895 529.97 null] +/D [1846 0 R /XYZ 99.895 518.014 null] >> -% 1852 0 obj +% 1851 0 obj +<< +/D [1846 0 R /XYZ 99.895 427.175 null] +>> +% 1845 0 obj << -/D [1846 0 R /XYZ 99.895 441.815 null] +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F231 1025 0 R /F78 674 0 R /F279 1793 0 R >> +/ProcSet [ /PDF /Text ] >> % 1853 0 obj << -/D [1846 0 R /XYZ 99.895 409.935 null] +/Type /Page +/Contents 1854 0 R +/Resources 1852 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1829 0 R +>> +% 1855 0 obj +<< +/D [1853 0 R /XYZ 149.705 753.953 null] >> -% 1854 0 obj +% 481 0 obj << -/D [1846 0 R /XYZ 99.895 319.095 null] +/D [1853 0 R /XYZ 150.705 716.092 null] >> -% 1845 0 obj +% 1852 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R /F17 1851 0 R /F104 1254 0 R /F102 1016 0 R /F120 1782 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F179 922 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> % 1857 0 obj @@ -25610,260 +25536,297 @@ stream /Contents 1858 0 R /Resources 1856 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1866 0 R >> % 1859 0 obj << -/D [1857 0 R /XYZ 149.705 753.953 null] +/D [1857 0 R /XYZ 98.895 753.953 null] >> -% 485 0 obj +% 1860 0 obj << -/D [1857 0 R /XYZ 150.705 716.092 null] +/D [1857 0 R /XYZ 99.895 564.444 null] >> -% 1860 0 obj +% 1861 0 obj +<< +/D [1857 0 R /XYZ 99.895 529.97 null] +>> +% 1863 0 obj +<< +/D [1857 0 R /XYZ 99.895 441.815 null] +>> +% 1864 0 obj << -/D [1857 0 R /XYZ 150.705 222.691 null] +/D [1857 0 R /XYZ 99.895 409.935 null] +>> +% 1865 0 obj +<< +/D [1857 0 R /XYZ 99.895 319.095 null] >> % 1856 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F69 1460 0 R /F93 915 0 R /F91 914 0 R >> +/Font << /F84 675 0 R /F75 673 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F17 1862 0 R /F241 1265 0 R /F231 1025 0 R /F279 1793 0 R >> /ProcSet [ /PDF /Text ] >> -% 1862 0 obj +% 1868 0 obj << /Type /Page -/Contents 1863 0 R -/Resources 1861 0 R +/Contents 1869 0 R +/Resources 1867 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1866 0 R >> -% 1864 0 obj +% 1870 0 obj +<< +/D [1868 0 R /XYZ 149.705 753.953 null] +>> +% 485 0 obj +<< +/D [1868 0 R /XYZ 150.705 716.092 null] +>> +% 1871 0 obj +<< +/D [1868 0 R /XYZ 150.705 222.691 null] +>> +% 1867 0 obj +<< +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F134 1471 0 R /F181 923 0 R /F179 922 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1873 0 obj +<< +/Type /Page +/Contents 1874 0 R +/Resources 1872 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1866 0 R +>> +% 1875 0 obj << -/D [1862 0 R /XYZ 98.895 753.953 null] +/D [1873 0 R /XYZ 98.895 753.953 null] >> % 489 0 obj << -/D [1862 0 R /XYZ 99.895 716.092 null] +/D [1873 0 R /XYZ 99.895 716.092 null] >> -% 1865 0 obj +% 1876 0 obj << -/D [1862 0 R /XYZ 99.895 222.691 null] +/D [1873 0 R /XYZ 99.895 222.691 null] >> -% 1861 0 obj +% 1872 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F69 1460 0 R /F93 915 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F134 1471 0 R /F181 923 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1869 0 obj +% 1880 0 obj << /Type /Page -/Contents 1870 0 R -/Resources 1868 0 R +/Contents 1881 0 R +/Resources 1879 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R -/Annots [ 1866 0 R 1867 0 R ] +/Parent 1866 0 R +/Annots [ 1877 0 R 1878 0 R ] >> -% 1866 0 obj +% 1877 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.011 499.949 202.985 512.009] +/Rect [196.173 511.904 203.237 523.964] /A << /S /GoTo /D (listing.5) >> >> -% 1867 0 obj +% 1878 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.625 344.532 203.599 356.591] +/Rect [194.784 356.487 201.659 368.547] /A << /S /GoTo /D (listing.6) >> >> -% 1871 0 obj +% 1882 0 obj << -/D [1869 0 R /XYZ 149.705 753.953 null] +/D [1880 0 R /XYZ 149.705 753.953 null] >> % 493 0 obj << -/D [1869 0 R /XYZ 150.705 716.092 null] +/D [1880 0 R /XYZ 150.705 716.092 null] >> -% 1868 0 obj +% 1879 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1875 0 obj +% 1886 0 obj << /Type /Page -/Contents 1876 0 R -/Resources 1874 0 R +/Contents 1887 0 R +/Resources 1885 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1866 0 R >> -% 1877 0 obj +% 1888 0 obj << -/D [1875 0 R /XYZ 98.895 753.953 null] +/D [1886 0 R /XYZ 98.895 753.953 null] >> -% 1872 0 obj +% 1883 0 obj << -/D [1875 0 R /XYZ 99.895 411.235 null] +/D [1886 0 R /XYZ 99.895 411.235 null] >> -% 1873 0 obj +% 1884 0 obj << -/D [1875 0 R /XYZ 99.895 182.902 null] +/D [1886 0 R /XYZ 99.895 182.902 null] >> -% 1874 0 obj +% 1885 0 obj << -/Font << /F67 913 0 R /F120 1782 0 R /F62 667 0 R >> +/Font << /F131 921 0 R /F279 1793 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1879 0 obj +% 1890 0 obj << /Type /Page -/Contents 1880 0 R -/Resources 1878 0 R +/Contents 1891 0 R +/Resources 1889 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1855 0 R +/Parent 1866 0 R >> -% 1881 0 obj +% 1892 0 obj << -/D [1879 0 R /XYZ 149.705 753.953 null] +/D [1890 0 R /XYZ 149.705 753.953 null] >> % 497 0 obj << -/D [1879 0 R /XYZ 150.705 716.092 null] +/D [1890 0 R /XYZ 150.705 716.092 null] >> -% 1882 0 obj +% 1893 0 obj << -/D [1879 0 R /XYZ 150.705 690.058 null] +/D [1890 0 R /XYZ 150.705 690.058 null] >> -% 1883 0 obj +% 1894 0 obj << -/D [1879 0 R /XYZ 150.705 693.143 null] +/D [1890 0 R /XYZ 150.705 693.143 null] >> -% 1878 0 obj +% 1889 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1885 0 obj +% 1896 0 obj << /Type /Page -/Contents 1886 0 R -/Resources 1884 0 R +/Contents 1897 0 R +/Resources 1895 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1901 0 R >> -% 1887 0 obj +% 1898 0 obj << -/D [1885 0 R /XYZ 98.895 753.953 null] +/D [1896 0 R /XYZ 98.895 753.953 null] >> % 501 0 obj << -/D [1885 0 R /XYZ 99.895 716.092 null] +/D [1896 0 R /XYZ 99.895 716.092 null] >> -% 1888 0 obj +% 1899 0 obj << -/D [1885 0 R /XYZ 99.895 678.98 null] +/D [1896 0 R /XYZ 99.895 678.98 null] >> -% 1889 0 obj +% 1900 0 obj << -/D [1885 0 R /XYZ 99.895 679.195 null] +/D [1896 0 R /XYZ 99.895 679.195 null] >> -% 1884 0 obj +% 1895 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1892 0 obj +% 1903 0 obj << /Type /Page -/Contents 1893 0 R -/Resources 1891 0 R +/Contents 1904 0 R +/Resources 1902 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1901 0 R >> -% 1894 0 obj +% 1905 0 obj << -/D [1892 0 R /XYZ 149.705 753.953 null] +/D [1903 0 R /XYZ 149.705 753.953 null] >> % 505 0 obj << -/D [1892 0 R /XYZ 150.705 716.092 null] +/D [1903 0 R /XYZ 150.705 716.092 null] >> -% 1895 0 obj +% 1906 0 obj << -/D [1892 0 R /XYZ 150.705 689.963 null] +/D [1903 0 R /XYZ 150.705 689.963 null] >> -% 1896 0 obj +% 1907 0 obj << -/D [1892 0 R /XYZ 150.705 693.143 null] +/D [1903 0 R /XYZ 150.705 693.143 null] >> -% 1891 0 obj +% 1902 0 obj << -/Font << /F59 665 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1898 0 obj +% 1909 0 obj << /Type /Page -/Contents 1899 0 R -/Resources 1897 0 R +/Contents 1910 0 R +/Resources 1908 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1901 0 R >> -% 1900 0 obj +% 1911 0 obj << -/D [1898 0 R /XYZ 98.895 753.953 null] +/D [1909 0 R /XYZ 98.895 753.953 null] >> % 509 0 obj << -/D [1898 0 R /XYZ 99.895 716.092 null] +/D [1909 0 R /XYZ 99.895 716.092 null] >> -% 1901 0 obj +% 1912 0 obj << -/D [1898 0 R /XYZ 99.895 678.98 null] +/D [1909 0 R /XYZ 99.895 678.98 null] >> -% 1902 0 obj +% 1913 0 obj << -/D [1898 0 R /XYZ 99.895 679.195 null] +/D [1909 0 R /XYZ 99.895 679.195 null] >> -% 1897 0 obj +% 1908 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1904 0 obj +% 1915 0 obj << /Type /Page -/Contents 1905 0 R -/Resources 1903 0 R +/Contents 1916 0 R +/Resources 1914 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R +/Parent 1901 0 R >> -% 1906 0 obj +% 1917 0 obj << -/D [1904 0 R /XYZ 149.705 753.953 null] +/D [1915 0 R /XYZ 149.705 753.953 null] >> % 513 0 obj << -/D [1904 0 R /XYZ 150.705 716.092 null] +/D [1915 0 R /XYZ 150.705 716.092 null] >> -% 1903 0 obj +% 1914 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1909 0 obj +% 1920 0 obj << /Type /Page -/Contents 1910 0 R -/Resources 1908 0 R +/Contents 1921 0 R +/Resources 1919 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R -/Annots [ 1907 0 R ] +/Parent 1901 0 R +/Annots [ 1918 0 R ] >> -% 1907 0 obj +% 1918 0 obj << /Type /Annot /Subtype /Link @@ -25871,37 +25834,37 @@ stream /Rect [291.943 438.278 369.462 450.338] /A << /S /GoTo /D (spdata) >> >> -% 1911 0 obj +% 1922 0 obj << -/D [1909 0 R /XYZ 98.895 753.953 null] +/D [1920 0 R /XYZ 98.895 753.953 null] >> % 517 0 obj << -/D [1909 0 R /XYZ 99.895 716.092 null] +/D [1920 0 R /XYZ 99.895 716.092 null] >> -% 1912 0 obj +% 1923 0 obj << -/D [1909 0 R /XYZ 99.895 676.015 null] +/D [1920 0 R /XYZ 99.895 676.015 null] >> -% 1913 0 obj +% 1924 0 obj << -/D [1909 0 R /XYZ 99.895 679.195 null] +/D [1920 0 R /XYZ 99.895 679.195 null] >> -% 1908 0 obj +% 1919 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1916 0 obj +% 1927 0 obj << /Type /Page -/Contents 1917 0 R -/Resources 1915 0 R +/Contents 1928 0 R +/Resources 1926 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1890 0 R -/Annots [ 1914 0 R ] +/Parent 1901 0 R +/Annots [ 1925 0 R ] >> -% 1914 0 obj +% 1925 0 obj << /Type /Annot /Subtype /Link @@ -25909,246 +25872,298 @@ stream /Rect [342.753 571.778 420.271 583.837] /A << /S /GoTo /D (spdata) >> >> -% 1918 0 obj +% 1929 0 obj << -/D [1916 0 R /XYZ 149.705 753.953 null] +/D [1927 0 R /XYZ 149.705 753.953 null] >> % 521 0 obj << -/D [1916 0 R /XYZ 150.705 716.092 null] ->> -% 1919 0 obj -<< -/D [1916 0 R /XYZ 150.705 676.015 null] ->> -% 1920 0 obj -<< -/D [1916 0 R /XYZ 150.705 679.195 null] ->> -% 1915 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1923 0 obj -<< -/Type /Page -/Contents 1924 0 R -/Resources 1922 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1921 0 R ] ->> -% 1921 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 438.278 369.462 450.338] -/A << /S /GoTo /D (spdata) >> ->> -% 1925 0 obj -<< -/D [1923 0 R /XYZ 98.895 753.953 null] +/D [1927 0 R /XYZ 150.705 716.092 null] >> -% 525 0 obj +% 1930 0 obj << -/D [1923 0 R /XYZ 99.895 716.092 null] +/D [1927 0 R /XYZ 150.705 676.015 null] >> -% 1926 0 obj + +endstream +endobj +1936 0 obj << -/D [1923 0 R /XYZ 99.895 678.98 null] +/Length 3667 >> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(9.3)]TJ 1.02 0 0 1 126.795 706.129 Tm [(mm)]TJ +ET +q +1 0 0 1 149.193 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 1.02 0 0 1 152.78 706.129 Tm [(mat)]TJ +ET +q +1 0 0 1 174.495 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 1.02 0 0 1 178.082 706.129 Tm [(read)-355(\227)-356(Read)-355(a)-356(sparse)-355(matrix)-356(from)-355(a)-356(\002le)-355(in)-355(the)]TJ 1 0 0 1 126.795 692.181 Tm [(MatrixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-810(m)-35(m)]TJ +ET +q +1 0 0 1 149.022 667.439 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 152.359 667.24 Td [(m)-35(a)-35(t)]TJ +ET +q +1 0 0 1 171.029 667.439 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 174.367 667.24 Td [(r)-35(e)-35(a)-35(d)-169(\050)-166(a)-242(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-107(a)-106(m)-107(e)-241(\051)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +/F75 9.9626 Tf -74.472 -27.896 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(\002lename)]TJ +0 g 0 G +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 124.802 575.584 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 423.609 575.584 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.839 575.584 Tm [(,)-330(in)]TJ 1.003 0 0 1 124.384 563.628 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 124.802 551.673 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ +0 g 0 G +/F84 9.9626 Tf 26.8 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.757 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.895 -21.918 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.926 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(r)18(ead)-250(fr)18(om)-250(\002le.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 442.283 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 442.084 Td [(Tspmat)]TJ +ET +q +1 0 0 1 344.406 442.283 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 347.544 442.084 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -268.571 -19.925 Td [(iret)]TJ +0 g 0 G +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 139.866 -307.811 Td [(145)]TJ +0 g 0 G +ET endstream endobj -1933 0 obj +1944 0 obj << -/Length 4155 +/Length 4378 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(9.4)-1000(mm)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(9.4)]TJ 1.02 0 0 1 177.604 706.129 Tm [(mm)]TJ ET q -1 0 0 1 199.577 706.328 cm +1 0 0 1 200.002 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 203.164 706.129 Td [(array)]TJ +/F75 11.9552 Tf 1.02 0 0 1 203.589 706.129 Tm [(array)]TJ ET q -1 0 0 1 231.784 706.328 cm +1 0 0 1 232.767 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 235.371 706.129 Td [(read)-222(\227)-223(Read)-222(a)-223(dense)-222(array)-223(from)-222(a)-223(\002le)-222(in)-223(the)-222(Ma-)]TJ -57.767 -13.948 Td [(trixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-845(m)-71(m)]TJ +/F75 11.9552 Tf 1.02 0 0 1 236.354 706.129 Tm [(read)-377(\227)-378(Read)-377(a)-378(dense)-377(array)-378(from)-377(a)-378(\002le)-377(in)-378(the)]TJ 1 0 0 1 177.604 692.181 Tm [(MatrixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.941 Td [(c)-175(a)-175(l)-174(l)-845(m)-71(m)]TJ ET q 1 0 0 1 200.884 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 204.572 667.24 Td [(a)-70(r)-70(r)-71(a)-70(y)]TJ +/F84 9.9626 Tf 204.572 667.24 Td [(a)-70(r)-70(r)-71(a)-70(y)]TJ ET q 1 0 0 1 232.04 667.439 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 235.728 667.24 Td [(r)-70(e)-70(a)-71(d)-203(\050)-150(b)-206(,)-926(i)-152(r)-151(e)-152(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-106(a)-107(m)-107(e)-241(\051)]TJ +/F84 9.9626 Tf 235.728 667.24 Td [(r)-70(e)-70(a)-71(d)-203(\050)-150(b)-206(,)-926(i)-152(r)-151(e)-152(t)-478(,)-905(i)-129(u)-130(n)-129(i)-130(t)-434(,)-882(f)-107(i)-107(l)-107(e)-107(n)-106(a)-107(m)-107(e)-241(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -85.023 -27.896 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -85.023 -27.896 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.533 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.184 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(r)18(ead.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 1.02 0 0 1 175.611 575.584 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 474.418 575.584 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.649 575.584 Tm [(,)-330(in)]TJ 1.003 0 0 1 175.193 563.628 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 175.611 551.673 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ +/F75 9.9626 Tf -95.322 -19.925 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.108 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 26.799 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.758 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.894 -21.918 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.894 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.926 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.839 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-398(array)-398(of)-397(type)-398(r)18(eal)-398(or)-398(complex,)-434(rank)-398(1)-398(or)-398(2)-398(and)-398(h)1(a)-1(v)1(ing)-398(the)-398(ALLO-)]TJ 0 -11.955 Td [(CA)74(T)74(ABLE)-257(attribute,)-258(or)-257(an)-257(object)-257(of)-257(type)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.53 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 1.02 0 0 1 175.223 442.084 Tm [(An)-368(array)-368(of)-367(type)-368(r)18(eal)-368(or)-368(complex,)-398(rank)-368(1)-368(or)-368(2)-367(and)-368(having)-368(the)-368(ALLO-)]TJ 1.005 0 0 1 175.611 430.129 Tm [(CA)74(T)73(ABLE)-248(attribut)1(e,)-248(or)-248(an)-248(object)-248(of)-248(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 177.91 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 353.766 430.129 Tm [(psb)]TJ ET q -1 0 0 1 369.841 430.328 cm +1 0 0 1 370.085 430.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 372.979 430.129 Td [(T)]TJ +/F131 9.9626 Tf 373.223 430.129 Td [(T)]TJ ET q -1 0 0 1 378.837 430.328 cm +1 0 0 1 379.081 430.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 381.975 430.129 Td [(vect)]TJ +/F131 9.9626 Tf 382.219 430.129 Td [(vect)]TJ ET q -1 0 0 1 403.524 430.328 cm +1 0 0 1 403.768 430.328 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 406.663 430.129 Td [(type)]TJ +/F131 9.9626 Tf 406.907 430.129 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(,)-259(of)-257(type)-256(r)18(eal)-257(or)]TJ -251.973 -11.955 Td [(complex.)]TJ 0 -11.955 Td [(W)55(ill)-275(be)-276(allocated)-275(and)-276(\002ll)1(ed)-276(in)-275(if)-276(the)-275(input)-275(\002le)-276(contains)-275(a)-275(right)-276(hand)-275(side,)]TJ 0 -11.956 Td [(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ +/F84 9.9626 Tf 1.005 0 0 1 427.828 430.129 Tm [(,)-248(of)-248(type)-248(r)18(eal)-247(or)]TJ 1 0 0 1 175.611 418.174 Tm [(complex.)]TJ 1.019 0 0 1 175.113 406.219 Tm [(W)54(ill)-245(be)-245(allocated)-245(and)-245(\002lled)-245(in)-245(if)-245(the)-245(input)-245(\002l)1(e)-245(contains)-245(a)-245(right)-245(hand)-245(side,)]TJ 1 0 0 1 175.611 394.263 Tm [(otherwise)-250(will)-250(be)-250(left)-250(in)-250(the)-250(UNALLOCA)74(TED)-250(state.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.88 Td [(iret)]TJ +/F75 9.9626 Tf -24.906 -31.88 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.476 -248.035 Td [(146)]TJ + 139.865 -248.035 Td [(146)]TJ 0 g 0 G ET endstream endobj -1940 0 obj +1951 0 obj << -/Length 7231 +/Length 7519 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(9.5)-1000(mm)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(9.5)]TJ 1.019 0 0 1 126.795 706.129 Tm [(mm)]TJ ET q -1 0 0 1 148.768 706.328 cm +1 0 0 1 149.172 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 152.354 706.129 Td [(mat)]TJ +/F75 11.9552 Tf 1.019 0 0 1 152.758 706.129 Tm [(mat)]TJ ET q -1 0 0 1 173.658 706.328 cm +1 0 0 1 174.453 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 177.245 706.129 Td [(write)-275(\227)-275(W)74(rite)-275(a)-275(sparse)-275(matrix)-275(to)-275(a)-275(\002le)-275(in)-275(the)-275(Ma-)]TJ -50.45 -13.948 Td [(trixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.48 Td [(c)-175(a)-175(l)-174(l)-828(m)-52(m)]TJ +/F75 11.9552 Tf 1.019 0 0 1 178.04 706.129 Tm [(write)-246(\227)-246(W)73(rite)-246(a)-246(sparse)-246(matrix)-246(to)-246(a)-246(\002le)-246(in)-246(the)-246(Ma-)]TJ 1 0 0 1 126.795 692.181 Tm [(trixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.48 Td [(c)-175(a)-175(l)-174(l)-828(m)-52(m)]TJ ET q 1 0 0 1 149.539 667.901 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 153.049 667.701 Td [(m)-52(a)-53(t)]TJ +/F84 9.9626 Tf 153.049 667.701 Td [(m)-52(a)-53(t)]TJ ET q 1 0 0 1 172.236 667.901 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 175.746 667.701 Td [(w)-52(r)-53(i)-52(t)-52(e)-186(\050)-167(a)-242(,)-900(m)-126(t)-125(i)-126(t)-125(l)-126(e)-426(,)-926(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-130(t)-434(,)-882(f)-107(i)-107(l)-106(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ +/F84 9.9626 Tf 175.746 667.701 Td [(w)-52(r)-53(i)-52(t)-52(e)-186(\050)-167(a)-242(,)-900(m)-126(t)-125(i)-126(t)-125(l)-126(e)-426(,)-926(i)-152(r)-151(e)-152(t)-478(,)-904(i)-130(u)-129(n)-130(i)-130(t)-434(,)-882(f)-107(i)-107(l)-106(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -75.851 -26.279 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -75.851 -26.279 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.464 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.464 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.464 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)-250(to)-250(be)-250(written.)]TJ 14.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ ET q 1 0 0 1 309.258 578.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 578.584 Td [(Tspmat)]TJ +/F131 9.9626 Tf 312.397 578.584 Td [(Tspmat)]TJ ET q 1 0 0 1 344.406 578.783 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 578.584 Td [(type)]TJ +/F131 9.9626 Tf 347.544 578.584 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -268.571 -19.464 Td [(mtitle)]TJ +/F75 9.9626 Tf -268.571 -19.464 Td [(mtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(A)-231(charachter)-230(variable)-231(holding)-231(a)-230(descriptive)-231(title)-231(for)-230(the)-231(matrix)-231(to)-230(be)-231(writ-)]TJ 0 -11.955 Td [(ten)-250(to)-250(\002le.)]TJ +/F84 9.9626 Tf 32.09 0 Td [(Matrix)-250(title.)]TJ -7.492 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 0.98 0 0 1 124.413 535.21 Tm [(A)-201(charachter)-200(variable)-201(holding)-200(a)-201(descriptive)-200(title)-201(for)-201(the)-200(matrix)-201(to)-200(be)-201(written)]TJ 1 0 0 1 124.802 523.255 Tm [(to)-250(\002le.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.464 Td [(\002lename)]TJ +/F75 9.9626 Tf -24.907 -19.464 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.534 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-387(in)]TJ -303.764 -11.955 Td [(which)-234(case)-234(the)-233(default)-234(output)-234(unit)-234(6)-233(\050i.e.)-305(standar)18(d)-234(output)-234(in)-233(Unix)-234(jar)18(gon\051)]TJ 0 -11.956 Td [(is)-250(used.)-310(Default:)]TJ/F67 9.9626 Tf 74.799 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written)-250(to.)]TJ -19.367 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 124.802 479.881 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 423.609 479.881 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 428.839 479.881 Tm [(,)-330(in)]TJ 0.999 0 0 1 124.384 467.926 Tm [(which)-249(case)-249(the)-249(default)-249(output)-250(unit)-249(6)-249(\050i.e.)-310(standar)18(d)-249(output)-249(in)-249(Unix)-249(jar)18(gon\051)]TJ 1 0 0 1 124.802 455.97 Tm [(is)-250(used.)-310(Default:)]TJ/F131 9.9626 Tf 74.799 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -104.936 -19.463 Td [(iunit)]TJ +/F75 9.9626 Tf -104.936 -19.463 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.109 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -62.186 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 26.8 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.202 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -61.877 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.757 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.895 -20.764 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.895 -20.764 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.463 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -20.763 Td [(Notes)]TJ/F62 9.9626 Tf 14.944 -11.956 Td [(If)-283(this)-282(function)-283(is)-283(called)-282(on)-283(a)-282(matrix)-283(a)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -20.763 Td [(Notes)]TJ/F84 9.9626 Tf 1.016 0 0 1 114.839 315.74 Tm [(If)-246(this)-246(function)-247(is)-246(called)-246(on)-246(a)-247(matri)1(x)]TJ 1 0 0 1 275.169 315.74 Tm [(a)]TJ 0 g 0 G 0 g 0 G - [-283(on)-282(a)-283(distributed)-283(communicator)-282(only)]TJ -14.944 -11.955 Td [(the)-316(local)-317(part)-316(is)-316(written)-317(in)-316(output.)-509(T)92(o)-316(get)-317(a)-316(single)-316(MatrixMarket)-317(\002le)-316(with)-316(the)]TJ 0 -11.955 Td [(whole)-225(matrix)-225(when)-225(appr)18(opriate,)-230(e.g.)-302(for)-225(debugging)-225(purposes,)-230(one)-225(could)]TJ/F60 9.9626 Tf 318.257 0 Td [(gather)]TJ/F62 9.9626 Tf -318.257 -11.955 Td [(the)-339(whole)-338(matrix)-339(on)-338(a)-339(single)-338(rank)-339(and)-338(then)-339(write)-338(it.)-576(Consider)-339(the)-338(following)]TJ 0 -11.955 Td [(example)-250(for)-250(a)]TJ/F60 9.9626 Tf 62.495 0 Td [(double)]TJ/F62 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(matrix)]TJ + 1.016 0 0 1 282.642 315.74 Tm [(on)-246(a)-246(distributed)-247(communicator)-246(only)]TJ 1.02 0 0 1 99.895 303.784 Tm [(the)-273(local)-274(part)-273(is)-274(written)-273(in)-273(output.)-389(T)90(o)-273(get)-274(a)-273(single)-274(MatrixMarket)-273(\002le)-273(with)-274(the)]TJ 0.994 0 0 1 99.477 291.829 Tm [(whole)-252(matrix)-253(when)-252(appr)18(opriate,)-253(e.g.)-315(for)-252(debugging)-253(purposes,)-253(one)-252(could)]TJ/F78 9.9626 Tf 0.994 0 0 1 418.305 291.829 Tm [(gather)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.895 279.874 Tm [(the)-293(whole)-293(matrix)-293(on)-293(a)-292(single)-293(rank)-293(and)-293(then)-293(write)-293(it.)-447(Consider)-293(the)-293(following)]TJ 1 0 0 1 99.895 267.919 Tm [(example)-250(for)-250(a)]TJ/F78 9.9626 Tf 62.495 0 Td [(double)]TJ/F84 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(matrix)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -26160,7 +26175,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 102.884 250.747 Td [(type)]TJ +/F231 8.9664 Tf 102.884 250.747 Td [(type)]TJ 0 g 0 G [(\050psb_ldspmat_type\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -26213,7 +26228,7 @@ BT [-525(info\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -23.747 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F67 9.9626 Tf 129.513 0 Td [(C)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ +/F84 9.9626 Tf -3.297 -23.747 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F131 9.9626 Tf 129.512 0 Td [(C)]TJ/F84 9.9626 Tf 5.231 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -26224,7 +26239,7 @@ Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G BT -/F102 8.9664 Tf 102.884 144.073 Td [(psb_i_t)]TJ +/F231 8.9664 Tf 102.884 144.073 Td [(psb_i_t)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(psb_c_)]TJ @@ -26238,7 +26253,7 @@ BT [(global_mat_write\050ah,cdh\051;)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -23.747 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ +/F84 9.9626 Tf -2.989 -23.747 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ 0 g 0 G 164.384 -29.888 Td [(147)]TJ 0 g 0 G @@ -26246,103 +26261,103 @@ ET endstream endobj -1947 0 obj +1958 0 obj << -/Length 7073 +/Length 7416 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(9.6)-1000(mm)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(9.6)]TJ 1.02 0 0 1 177.604 706.129 Tm [(mm)]TJ ET q -1 0 0 1 199.577 706.328 cm +1 0 0 1 200.002 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 203.164 706.129 Td [(array)]TJ +/F75 11.9552 Tf 1.02 0 0 1 203.589 706.129 Tm [(array)]TJ ET q -1 0 0 1 231.784 706.328 cm +1 0 0 1 232.767 706.328 cm []0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F59 11.9552 Tf 235.371 706.129 Td [(write)-374(\227)-375(W)74(rite)-374(a)-375(dense)-374(array)-374(from)-375(a)-374(\002le)-375(in)-374(the)]TJ -57.767 -13.948 Td [(MatrixMarket)-250(format)]TJ/F62 9.9626 Tf -25.158 -24.509 Td [(c)-175(a)-175(l)-174(l)-858(m)-83(m)]TJ +/F75 11.9552 Tf 1.02 0 0 1 236.354 706.129 Tm [(write)-324(\227)-323(W)72(rite)-324(a)-323(dense)-324(array)-324(from)-323(a)-324(\002le)-324(in)-324(the)]TJ 1 0 0 1 177.604 692.181 Tm [(MatrixMarket)-250(format)]TJ/F84 9.9626 Tf -25.158 -24.509 Td [(c)-175(a)-175(l)-174(l)-858(m)-83(m)]TJ ET q 1 0 0 1 201.262 667.872 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 205.076 667.672 Td [(a)-83(r)-83(r)-83(a)-83(y)]TJ +/F84 9.9626 Tf 205.076 667.672 Td [(a)-83(r)-83(r)-83(a)-83(y)]TJ ET q 1 0 0 1 233.175 667.872 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F62 9.9626 Tf 236.989 667.672 Td [(w)-83(r)-83(i)-83(t)-82(e)-217(\050)-149(b)-206(,)-941(v)-165(t)-165(i)-165(t)-166(l)-165(e)-505(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-130(u)-129(n)-130(i)-129(t)-435(,)-881(f)-107(i)-107(l)-107(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ +/F84 9.9626 Tf 236.989 667.672 Td [(w)-83(r)-83(i)-83(t)-82(e)-217(\050)-149(b)-206(,)-941(v)-165(t)-165(i)-165(t)-166(l)-165(e)-505(,)-927(i)-151(r)-152(e)-151(t)-478(,)-905(i)-130(u)-129(n)-130(i)-129(t)-435(,)-881(f)-107(i)-107(l)-107(e)-107(n)-107(a)-107(m)-107(e)-240(\051)]TJ 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -86.284 -26.38 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf -86.284 -26.38 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.493 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.439 -19.493 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.493 Td [(b)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.839 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(An)-190(array)-190(of)-190(type)-190(r)18(eal)-190(or)-190(complex,)-202(rank)-190(1)-190(or)-190(2,)-202(or)-190(an)-190(object)-190(of)-190(type)]TJ +/F84 9.9626 Tf 11.068 0 Td [(Rigth)-250(hand)-250(side\050s\051.)]TJ 13.53 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.223 578.396 Tm [(An)-194(array)-194(of)-194(type)-193(r)18(eal)-194(or)-194(complex,)-206(rank)-194(1)-194(or)-194(2,)-206(or)-194(an)-193(object)-194(of)-194(type)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 277.745 0 Td [(psb)]TJ +/F131 9.9626 Tf 1 0 0 1 448.021 578.396 Tm [(psb)]TJ ET q -1 0 0 1 469.676 578.595 cm +1 0 0 1 464.339 578.595 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 472.814 578.396 Td [(T)]TJ +/F131 9.9626 Tf 467.478 578.396 Td [(T)]TJ ET q -1 0 0 1 478.672 578.595 cm +1 0 0 1 473.336 578.595 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 481.81 578.396 Td [(vect)]TJ +/F131 9.9626 Tf 476.474 578.396 Td [(vect)]TJ ET q -1 0 0 1 503.359 578.595 cm +1 0 0 1 498.023 578.595 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 506.497 578.396 Td [(type)]TJ +/F131 9.9626 Tf 501.161 578.396 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(,)]TJ -351.808 -11.955 Td [(of)-250(type)-250(r)18(eal)-250(or)-250(complex;)-250(its)-250(contents)-250(will)-250(be)-250(written)-250(to)-250(disk.)]TJ +/F84 9.9626 Tf 0.98 0 0 1 522.082 578.396 Tm [(,)]TJ 1 0 0 1 175.611 566.441 Tm [(of)-250(type)-250(r)18(eal)-250(or)-250(complex;)-250(its)-250(contents)-250(will)-250(be)-250(written)-250(to)-250(disk.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -31.448 Td [(\002lename)]TJ +/F75 9.9626 Tf -24.906 -31.448 Td [(\002lename)]TJ 0 g 0 G -/F62 9.9626 Tf 44.274 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written.)]TJ +/F84 9.9626 Tf 43.965 0 Td [(The)-250(name)-250(of)-250(the)-250(\002le)-250(to)-250(be)-250(written.)]TJ 0 g 0 G -/F59 9.9626 Tf -44.274 -31.448 Td [(vtitle)]TJ +/F75 9.9626 Tf -43.965 -31.448 Td [(vtitle)]TJ 0 g 0 G -/F62 9.9626 Tf 28.772 0 Td [(Matrix)-250(title.)]TJ -3.865 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(A)-244(charachter)-243(variable)-244(holding)-244(a)-243(descriptive)-244(title)-244(for)-243(the)-244(vector)-244(to)-243(be)-244(writ-)]TJ 0 -11.955 Td [(ten)-250(to)-250(\002le.)-310(T)90(ype:)]TJ/F59 9.9626 Tf 70.763 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -108.95 -11.955 Td [(Speci\002ed)-359(as:)-529(a)-359(character)-360(variable)-359(containing)-359(a)-360(valid)-359(\002le)-359(name,)-387(or)]TJ/F67 9.9626 Tf 298.533 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(,)-387(in)]TJ -303.764 -11.956 Td [(which)-254(case)-253(the)-254(default)-254(input)-253(unit)-254(5)-254(\050i.e.)-321(standar)18(d)-253(input)-254(in)-254(Unix)-253(jar)18(gon\051)-254(is)]TJ 0 -11.955 Td [(used.)-310(Default:)]TJ/F67 9.9626 Tf 65.184 0 Td [(-)]TJ/F62 9.9626 Tf 5.231 0 Td [(.)]TJ +/F84 9.9626 Tf 28.772 0 Td [(Matrix)-250(title.)]TJ -4.174 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 0.98 0 0 1 175.223 479.635 Tm [(A)-214(charachter)-213(variable)-214(holding)-213(a)-214(descriptive)-213(title)-214(for)-214(the)-213(vector)-214(to)-213(be)-214(written)]TJ 1 0 0 1 175.611 467.68 Tm [(to)-250(\002le.)-310(T)90(ype:)]TJ/F75 9.9626 Tf 54.456 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ 1.02 0 0 1 175.611 455.725 Tm [(Speci\002ed)-313(as:)-440(a)-313(character)-314(variable)-313(containing)-313(a)-313(valid)-313(\002le)-313(name,)-331(or)]TJ/F131 9.9626 Tf 1 0 0 1 474.418 455.725 Tm [(-)]TJ/F84 9.9626 Tf 1.02 0 0 1 479.649 455.725 Tm [(,)-330(in)]TJ 1.003 0 0 1 175.193 443.77 Tm [(which)-250(case)-250(the)-250(default)-250(input)-250(unit)-250(5)-250(\050i.e.)-311(standar)18(d)-250(input)-250(in)-250(Unix)-250(jar)18(gon\051)-250(is)]TJ 1 0 0 1 175.611 431.814 Tm [(used.)-310(Default:)]TJ/F131 9.9626 Tf 65.185 0 Td [(-)]TJ/F84 9.9626 Tf 5.231 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -95.322 -19.492 Td [(iunit)]TJ +/F75 9.9626 Tf -95.322 -19.492 Td [(iunit)]TJ 0 g 0 G -/F62 9.9626 Tf 27.108 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 23.999 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -62.186 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F67 9.9626 Tf 287.757 0 Td [(-)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ +/F84 9.9626 Tf 26.799 0 Td [(The)-250(Fortran)-250(\002le)-250(unit)-250(number)74(.)]TJ -2.201 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)-310(Only)-250(meaningful)-250(if)-250(\002lename)-250(is)-250(not)]TJ/F131 9.9626 Tf 287.758 0 Td [(-)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.894 -20.836 Td [(On)-250(Return)]TJ +/F75 9.9626 Tf -317.894 -20.836 Td [(On)-250(Return)]TJ 0 g 0 G 0 g 0 G 0 -19.492 Td [(iret)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.434 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F59 11.9552 Tf -24.907 -20.836 Td [(Notes)]TJ/F62 9.9626 Tf 14.944 -11.955 Td [(If)-290(this)-289(function)-290(is)-290(call)1(ed)-290(on)-290(a)-289(vector)-290(v)]TJ +/F84 9.9626 Tf 20.473 0 Td [(Err)18(or)-250(code.)]TJ 4.125 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -27.168 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ/F75 11.9552 Tf -24.518 -20.836 Td [(Notes)]TJ/F84 9.9626 Tf 1.019 0 0 1 165.649 291.381 Tm [(If)-246(this)-246(function)-246(is)-246(called)-246(on)-246(a)-246(vector)]TJ 1 0 0 1 324.855 291.381 Tm [(v)]TJ 0 g 0 G 0 g 0 G - [-290(on)-289(a)-290(distributed)-290(communicator)-289(only)]TJ -14.944 -11.955 Td [(the)-316(local)-317(part)-316(is)-316(written)-317(in)-316(output.)-509(T)92(o)-316(get)-317(a)-316(single)-316(MatrixMarket)-317(\002le)-316(with)-316(the)]TJ 0 -11.955 Td [(whole)-243(vect)1(or)-243(when)-243(appr)18(opriate,)-244(e.g.)-307(for)-243(debugging)-242(purposes,)-244(one)-243(could)]TJ/F60 9.9626 Tf 318.257 0 Td [(gather)]TJ/F62 9.9626 Tf -318.257 -11.955 Td [(the)-349(whole)-349(vector)-349(on)-349(a)-349(single)-349(rank)-349(and)-349(then)-349(writ)1(e)-349(it.)-607(Consider)-349(the)-349(following)]TJ 0 -11.956 Td [(example)-250(for)-250(a)]TJ/F60 9.9626 Tf 62.495 0 Td [(double)]TJ/F62 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(vector)]TJ + 1.019 0 0 1 332.982 291.381 Tm [(on)-246(a)-246(distributed)-246(communicator)-246(only)]TJ 1.02 0 0 1 150.705 279.426 Tm [(the)-273(local)-274(part)-273(is)-274(written)-273(in)-273(output.)-389(T)90(o)-273(get)-274(a)-273(single)-274(Matri)1(xMarket)-274(\002le)-273(with)-274(the)]TJ 0.999 0 0 1 150.286 267.471 Tm [(whole)-251(vector)-251(when)-251(ap)1(pr)18(opriate,)-251(e.g.)-313(for)-250(debugging)-251(purposes,)-251(one)-251(could)]TJ/F78 9.9626 Tf 0.999 0 0 1 468.987 267.471 Tm [(gather)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 255.516 Tm [(the)-303(whole)-304(vec)1(tor)-304(on)-303(a)-303(single)-304(rank)-303(and)-303(then)-303(write)-304(it.)-478(Consider)-303(the)-304(following)]TJ 1 0 0 1 150.705 243.561 Tm [(example)-250(for)-250(a)]TJ/F78 9.9626 Tf 62.495 0 Td [(double)]TJ/F84 9.9626 Tf 28.692 0 Td [(pr)18(ecision)-250(vector)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET @@ -26354,7 +26369,7 @@ Q 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F102 8.9664 Tf 153.694 221.378 Td [(real)]TJ +/F231 8.9664 Tf 153.694 221.378 Td [(real)]TJ 0 g 0 G [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -26415,15 +26430,15 @@ BT [(info\051)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -23.777 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F67 9.9626 Tf 129.513 0 Td [(C)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ +/F84 9.9626 Tf -3.298 -23.777 Td [(T)92(o)-250(simplify)-250(this)-250(pr)18(ocedur)18(e)-250(in)]TJ/F131 9.9626 Tf 129.513 0 Td [(C)]TJ/F84 9.9626 Tf 5.23 0 Td [(,)-250(ther)18(e)-250(is)-250(a)-250(utility)-250(function)]TJ 0 g 0 G - 29.64 -41.41 Td [(148)]TJ + 29.949 -41.41 Td [(148)]TJ 0 g 0 G ET endstream endobj -1953 0 obj +1964 0 obj << /Length 655 >> @@ -26439,7 +26454,7 @@ Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G BT -/F102 8.9664 Tf 102.884 701.446 Td [(psb_i_t)]TJ +/F231 8.9664 Tf 102.884 701.446 Td [(psb_i_t)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G [-525(psb_c_)]TJ @@ -26453,7 +26468,7 @@ BT [(global_vec_write\050vh,cdh\051;)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F62 9.9626 Tf -2.989 -24.209 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ +/F84 9.9626 Tf -2.989 -24.209 Td [(that)-250(pr)18(oduces)-250(exactly)-250(this)-250(r)18(esult.)]TJ 0 g 0 G 164.384 -586.799 Td [(149)]TJ 0 g 0 G @@ -26461,15 +26476,15 @@ ET endstream endobj -1957 0 obj +1968 0 obj << -/Length 1109 +/Length 1282 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 705.784 Td [(10)-1000(Preconditioner)-250(routines)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-228(base)-227(PSBLAS)-228(library)-227(contains)-228(the)-227(implementation)-228(of)-227(two)-228(simple)-227(pr)18(econdi-)]TJ 0 -11.955 Td [(tioning)-250(techniques:)]TJ +/F75 14.3462 Tf 150.705 705.784 Td [(10)-1000(Preconditioner)-250(routines)]TJ/F84 9.9626 Tf 0.999 0 0 1 150.396 683.082 Tm [(The)-251(base)-250(PSBLAS)-251(library)-251(contains)-250(the)-251(implementation)-251(of)-251(two)-250(simple)-251(pr)18(econdi-)]TJ 1 0 0 1 150.705 671.127 Tm [(tioning)-250(techniques:)]TJ 0 g 0 G 13.888 -19.925 Td [(\225)]TJ 0 g 0 G @@ -26477,7 +26492,7 @@ BT 0 g 0 G 0 -19.926 Td [(\225)]TJ 0 g 0 G - [-500(Block)-250(Jacobi)-250(with)-250(ILU\0500\051)-250(factorization)]TJ -13.888 -19.925 Td [(The)-356(supporting)-356(data)-356(type)-356(and)-356(subr)18(outine)-356(interfaces)-356(ar)18(e)-356(de\002ned)-356(in)-356(the)-356(mod-)]TJ 0 -11.955 Td [(ule)]TJ/F67 9.9626 Tf 16.301 0 Td [(psb_prec_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(.)-350(The)-263(old)-263(interfaces)]TJ/F67 9.9626 Tf 87.314 0 Td [(psb_precinit)]TJ/F62 9.9626 Tf 65.386 0 Td [(and)]TJ/F67 9.9626 Tf 19.489 0 Td [(psb_precbld)]TJ/F62 9.9626 Tf 60.156 0 Td [(ar)18(e)-263(still)]TJ -311.41 -11.955 Td [(supported)-250(for)-250(backwar)18(d)-250(compatibility)]TJ + [-500(Block)-250(Jacobi)-250(with)-250(ILU\0500\051)-250(factorization)]TJ 1.02 0 0 1 150.396 611.351 Tm [(The)-312(supporting)-312(data)-312(type)-312(and)-312(subr)18(outine)-312(interfaces)-312(ar)17(e)-312(de\002ned)-312(in)-312(the)-312(mod-)]TJ 1.011 0 0 1 150.705 599.396 Tm [(ule)]TJ/F131 9.9626 Tf 1 0 0 1 167.018 599.396 Tm [(psb_prec_mod)]TJ/F84 9.9626 Tf 1.011 0 0 1 229.782 599.396 Tm [(.)-306(The)-247(old)-247(interfaces)]TJ/F131 9.9626 Tf 1 0 0 1 317.122 599.396 Tm [(psb_precinit)]TJ/F84 9.9626 Tf 1.011 0 0 1 382.37 599.396 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 401.907 599.396 Tm [(psb_precbld)]TJ/F84 9.9626 Tf 1.011 0 0 1 461.925 599.396 Tm [(ar)18(e)-247(still)]TJ 1 0 0 1 150.705 587.441 Tm [(supported)-250(for)-250(backwar)18(d)-250(compatibility)]TJ 0 g 0 G 164.383 -497.003 Td [(150)]TJ 0 g 0 G @@ -26485,78 +26500,82 @@ ET endstream endobj -1963 0 obj +1975 0 obj << -/Length 5016 +/Length 5045 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 99.895 706.129 Td [(10.1)-1000(init)-250(\227)-250(Initialize)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.1)-1000(init)-250(\227)-250(Initialize)-250(a)-250(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%init\050icontxt,ptype,)-525(info\051)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%init\050icontxt,ptype,)-525(info\051)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(icontxt)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 28.343 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -57.125 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 24 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -63.292 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ +/F84 9.9626 Tf 35.965 0 Td [(the)-250(communication)-250(context.)]TJ -11.058 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 28.343 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -57.434 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 24 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -62.983 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(ptype)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(ptype)]TJ 0 g 0 G -/F62 9.9626 Tf 30.994 0 Td [(the)-250(type)-250(of)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 151.121 0 Td [(global)]TJ/F62 9.9626 Tf -157.208 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(string,)-250(see)-250(usage)-250(notes.)]TJ +/F84 9.9626 Tf 30.994 0 Td [(the)-250(type)-250(of)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 151.121 0 Td [(global)]TJ/F84 9.9626 Tf -157.517 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)-250(string,)-250(see)-250(usage)-250(notes.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(On)-250(Exit)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G 0 g 0 G 0 -19.925 Td [(prec)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -30.874 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +/F84 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.183 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q 1 0 0 1 337.631 446.268 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 340.77 446.069 Td [(prec)]TJ +/F131 9.9626 Tf 340.77 446.069 Td [(Tprec)]TJ ET q -1 0 0 1 362.319 446.268 cm +1 0 0 1 367.549 446.268 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 365.457 446.069 Td [(type)]TJ +/F131 9.9626 Tf 370.687 446.069 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -291.714 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -30.326 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F59 11.9552 Tf -24.907 -21.917 Td [(Notes)]TJ/F62 9.9626 Tf 34.311 0 Td [(Legal)-245(inputs)-244(to)-245(this)-245(subr)18(outine)-245(ar)18(e)-244(interpr)18(eted)-245(depending)-245(on)-244(the)]TJ/F60 9.9626 Tf 285.595 0 Td [(p)-25(t)-25(y)-80(p)-25(e)]TJ/F62 9.9626 Tf -319.906 -11.956 Td [(string)-250(as)-250(follows)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf 0.998 0 0 1 99.895 368.361 Tm [(Notes)]TJ/F84 9.9626 Tf 0.998 0 0 1 134.195 368.361 Tm [(Legal)-251(inputs)-250(to)-251(this)-250(subr)18(outine)-251(ar)18(e)-250(interpr)18(eted)-251(depending)-250(on)-251(the)]TJ/F78 9.9626 Tf 1 0 0 1 419.801 368.361 Tm [(p)-25(t)-25(y)-80(p)-25(e)]TJ/F84 9.9626 Tf -319.906 -11.956 Td [(string)-250(as)-250(follows)]TJ 0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 72.358 3.617 Td [(4)]TJ +/F84 7.5716 Tf 72.358 3.617 Td [(4)]TJ +0 g 0 G +/F84 9.9626 Tf 4.284 -3.617 Td [(:)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.617 Td [(:)]TJ +/F75 9.9626 Tf -76.642 -19.925 Td [(NONE)]TJ 0 g 0 G -/F59 9.9626 Tf -76.642 -19.925 Td [(NONE)]TJ +/F84 9.9626 Tf 35.965 0 Td [(No)-250(pr)18(econditioning,)-250(i.e.)-310(the)-250(pr)18(econditioner)-250(is)-250(just)-250(a)-250(copy)-250(operator)74(.)]TJ 0 g 0 G -/F62 9.9626 Tf 35.965 0 Td [(No)-250(pr)18(econditioning,)-250(i.e.)-310(the)-250(pr)18(econditioner)-250(is)-250(just)-250(a)-250(copy)-250(operator)74(.)]TJ +/F75 9.9626 Tf -35.965 -19.925 Td [(DIAG)]TJ 0 g 0 G -/F59 9.9626 Tf -35.965 -19.925 Td [(DIAG)]TJ +/F84 9.9626 Tf 1.02 0 0 1 133.101 316.555 Tm [(Diagonal)-318(scaling;)-354(each)-318(entry)-318(of)-318(the)-318(input)-318(ve)1(ctor)-318(is)-318(multiplied)-318(by)-318(the)]TJ 1.02 0 0 1 124.802 304.6 Tm [(r)18(ecipr)17(ocal)-378(of)-378(the)-377(sum)-378(of)-378(the)-378(absolute)-378(values)-378(of)-378(the)-378(coef)18(\002cients)-378(in)-378(the)]TJ 1 0 0 1 124.802 292.645 Tm [(corr)18(esponding)-250(r)18(ow)-250(of)-250(matrix)]TJ/F78 9.9626 Tf 129.946 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(;)]TJ 0 g 0 G -/F62 9.9626 Tf 33.205 0 Td [(Diagonal)-371(scaling;)-432(each)-371(entry)-372(of)-371(the)-371(input)-371(vector)-372(is)-371(multiplied)-371(by)-371(the)]TJ -8.298 -11.955 Td [(r)18(ecipr)18(ocal)-266(of)-267(the)-266(sum)-267(of)-266(the)-266(absolute)-267(values)-266(of)-267(the)-266(coef)18(\002cients)-266(in)-267(the)-266(cor)18(-)]TJ 0 -11.955 Td [(r)18(esponding)-250(r)18(ow)-250(of)-250(matrix)]TJ/F60 9.9626 Tf 116.148 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(;)]TJ +/F75 9.9626 Tf -162.171 -19.926 Td [(BJAC)]TJ 0 g 0 G -/F59 9.9626 Tf -148.373 -19.926 Td [(BJAC)]TJ +/F84 9.9626 Tf 0.994 0 0 1 130.341 272.719 Tm [(Pr)18(econdition)-250(by)-251(a)-250(factorization)-251(or)-250(an)-250(appr)18(oximante)-251(inverse)-250(of)-251(the)-250(block-)]TJ 0.982 0 0 1 124.802 260.764 Tm [(diagonal)-255(of)-256(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 207.927 260.764 Tm [(A)]TJ/F84 9.9626 Tf 0.982 0 0 1 215.244 260.764 Tm [(,)-256(wher)19(e)-256(block)-255(boundaries)-255(ar)18(e)-255(determined)-255(by)-256(the)-255(data)]TJ 1.015 0 0 1 124.802 248.809 Tm [(allocation)-246(boundaries)-247(for)-246(each)-246(pr)18(ocess;)-247(r)18(equir)18(es)-247(no)-246(communication.)-305(See)]TJ 1 0 0 1 124.802 236.854 Tm [(also)-250(T)92(able-)]TJ +0 0 1 rg 0 0 1 RG + [(21)]TJ 0 g 0 G -/F62 9.9626 Tf 30.446 0 Td [(Pr)18(econdition)-211(by)-212(a)-211(factorization)-212(of)-211(the)-212(block-diagonal)-211(of)-212(matrix)]TJ/F60 9.9626 Tf 273.867 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(,)-219(wher)18(e)]TJ -286.723 -11.955 Td [(block)-347(boundaries)-348(ar)18(e)-347(determined)-347(by)-348(the)-347(data)-347(allocation)-348(boundaries)-347(for)]TJ 0 -11.955 Td [(each)-223(pr)18(ocess;)-232(r)18(equir)18(es)-222(no)-223(communication.)-301(Only)-223(the)-222(incomplete)-223(factoriza-)]TJ 0 -11.955 Td [(tion)]TJ/F60 9.9626 Tf 20.498 0 Td [(I)-96(L)-9(U)]TJ/F93 10.3811 Tf 18.202 0 Td [(\050)]TJ/F62 9.9626 Tf 4.149 0 Td [(0)]TJ/F93 10.3811 Tf 5.106 0 Td [(\051)]TJ/F62 9.9626 Tf 6.64 0 Td [(is)-250(curr)18(ently)-250(implemented.)]TJ + [(.)]TJ 0 g 0 G ET q @@ -26564,1265 +26583,1502 @@ q []0 d 0 J 0.398 w 0 0 m 137.482 0 l S Q BT -/F62 5.9776 Tf 110.755 123.219 Td [(4)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(The)-250(string)-250(is)-250(case-insensitive)]TJ +/F84 5.9776 Tf 110.755 123.219 Td [(4)]TJ/F84 7.9701 Tf 3.24 -2.893 Td [(The)-250(string)-250(is)-250(case-insensitive)]TJ 0 g 0 G 0 g 0 G -/F62 9.9626 Tf 150.037 -29.888 Td [(151)]TJ +/F84 9.9626 Tf 150.284 -29.888 Td [(151)]TJ 0 g 0 G ET endstream endobj -1973 0 obj +1987 0 obj << -/Length 7572 +/Length 4360 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(10.2)-1000(build)-250(\227)-250(Builds)-250(a)-250(preconditioner)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.2)-1000(Set)-250(\227)-250(set)-250(preconditioner)-250(parameters)]TJ 0 g 0 G 0 g 0 G -/F67 9.9626 Tf 0 -20.364 Td [(call)-525(prec%build\050a,)-525(desc_a,)-525(info[,amold,vmold,imold]\051)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 106.999 -18.964 Td [(call)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -24.086 Td [(T)90(ype:)]TJ + [-525(p%set\050what,val,info\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 665.247 Tm [(This)-385(met)1(hod)-385(sets)-385(the)-384(parameters)-385(de\002ning)-384(the)-385(subdomain)-384(solver)-385(when)-384(the)]TJ 0.987 0 0 1 150.406 653.292 Tm [(pr)18(econditioner)-253(type)-252(is)]TJ/F131 9.9626 Tf 1 0 0 1 248.593 653.292 Tm [(BJAC)]TJ/F84 9.9626 Tf 0.987 0 0 1 269.515 653.292 Tm [(.)-253(Mor)18(e)-253(pr)19(ecisely)112(,)-253(the)-253(parameter)-253(ident)1(i\002ed)-253(by)]TJ/F131 9.9626 Tf 1 0 0 1 463.977 653.292 Tm [(what)]TJ/F84 9.9626 Tf 0.987 0 0 1 487.385 653.292 Tm [(is)]TJ 1 0 0 1 150.705 641.337 Tm [(assigned)-250(the)-250(value)-250(contained)-250(in)]TJ/F131 9.9626 Tf 141.229 0 Td [(val)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ/F75 11.9552 Tf -157.386 -29.888 Td [(Arguments)]TJ/F131 9.9626 Tf 21.126 -15.534 Td [(what)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + [-2541(character)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -22.815 Td [(On)-250(Entry)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ 0 g 0 G + [(\051)]TJ/F84 9.9626 Tf 129.918 0 Td [(.)]TJ 1.02 0 0 1 217.288 583.96 Tm [(The)-322(parameter)-321(to)-322(be)-321(set.)-533(It)-322(can)-321(be)-322(speci\002ed)-321(thr)17(ough)-321(its)-322(name;)-359(the)-322(string)-321(is)]TJ 1 0 0 1 217.597 572.005 Tm [(case-insensitive.)-310(See)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(21)]TJ 0 g 0 G - 0 -22.816 Td [(a)]TJ + [(.)]TJ/F131 9.9626 Tf -46.232 -11.955 Td [(val)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(system)-250(sparse)-250(matrix.)-310(Scope:)]TJ/F59 9.9626 Tf 146.229 0 Td [(local)]TJ/F62 9.9626 Tf -131.285 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(sparse)-250(matrix)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 190.872 0 Td [(psb)]TJ -ET -q -1 0 0 1 382.802 580.382 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 385.94 580.183 Td [(Tspmat)]TJ -ET -q -1 0 0 1 417.95 580.382 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 421.088 580.183 Td [(type)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + [-3066(integer)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F78 9.9626 Tf 1.02 0 0 1 261.996 560.05 Tm [(or)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 278.248 560.05 Tm [(character)]TJ 0 g 0 G -/F59 9.9626 Tf -291.305 -22.815 Td [(prec)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ/F78 9.9626 Tf 1.02 0 0 1 369.72 560.05 Tm [(or)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 385.972 560.05 Tm [(real)]TJ +0 g 0 G + [(\050psb_spk_\051)]TJ/F78 9.9626 Tf 1.02 0 0 1 466.983 560.05 Tm [(or)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 483.235 560.05 Tm [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 556.46 560.05 Tm [(,)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 1 0 0 1 217.597 548.095 Tm [(intent)]TJ +0 g 0 G + [(\050in\051)]TJ/F84 9.9626 Tf 52.304 0 Td [(.)]TJ 1.02 0 0 1 217.288 536.14 Tm [(The)-390(value)-390(of)-390(the)-389(parameter)-390(to)-390(be)-390(set.)-738(The)-390(list)-390(of)-390(allowed)-390(values)-390(and)-389(the)]TJ 1.02 0 0 1 217.597 524.184 Tm [(corr)18(esponding)-365(data)-364(types)-365(is)-364(given)-365(in)-364(T)90(able)]TJ +0 0 1 rg 0 0 1 RG + [-364(21)]TJ +0 g 0 G + [(.)-663(When)-364(the)-365(value)-364(is)-365(of)-364(type)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F131 9.9626 Tf 1 0 0 1 217.597 512.229 Tm [(character)]TJ +0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ/F84 9.9626 Tf 83.686 0 Td [(,)-250(it)-250(is)-250(also)-250(tr)18(eated)-250(as)-250(case)-250(insensitive.)]TJ/F131 9.9626 Tf -129.657 -11.955 Td [(info)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + [-2514(integer)]TJ +0 g 0 G + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(intent)]TJ +0 g 0 G + [(\050out\051)]TJ/F84 9.9626 Tf 150.578 0 Td [(.)]TJ -104.607 -11.955 Td [(Err)18(or)-250(code.)-310(If)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)-310(See)-250(Section)]TJ +0 0 1 rg 0 0 1 RG + [-250(8)]TJ +0 g 0 G + [-250(for)-250(details.)]TJ 1.02 0 0 1 150.316 476.478 Tm [(A)-253(number)-253(of)-253(subdomain)-253(solvers)-253(can)-253(be)-253(chosen)-254(with)-253(this)-253(method;)-257(a)-253(list)-253(of)-253(the)]TJ 0.98 0 0 1 150.406 464.523 Tm [(parameters)-247(that)-247(can)-247(be)-247(set,)-248(along)-247(with)-247(their)-247(allowed)-247(and)-247(default)-246(values,)-249(is)-247(given)]TJ 1 0 0 1 150.705 452.568 Tm [(in)-250(T)92(able-)]TJ +0 0 1 rg 0 0 1 RG + [(21)]TJ +0 g 0 G + [(.)]TJ +0 g 0 G + 164.383 -362.13 Td [(152)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-190(as:)-280(an)-190(alr)18(eady)-190(initialized)-190(pr)18(econdtioner)-190(data)-190(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 277.288 0 Td [(psb)]TJ -ET -q -1 0 0 1 469.217 509.746 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 472.355 509.547 Td [(prec)]TJ ET + +endstream +endobj +1991 0 obj +<< +/Length 13614 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +1 0 0 1 271.751 120.326 cm q -1 0 0 1 493.904 509.746 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S -Q -BT -/F67 9.9626 Tf 497.043 509.547 Td [(type)]TJ +0 1 -1 0 0 0 cm +0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf -346.338 -34.771 Td [(desc)]TJ -ET q -1 0 0 1 171.218 474.975 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 6.906 167.723 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q +q +1 0 0 1 6.906 156.565 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S +Q +1 0 0 1 -271.751 -120.326 cm BT -/F59 9.9626 Tf 174.207 474.776 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 208.625 0 Td [(local)]TJ/F62 9.9626 Tf -217.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(descriptor)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 247.649 0 Td [(psb)]TJ +/F231 8.9664 Tf 284.399 280.179 Td [(what)]TJ ET q -1 0 0 1 439.579 439.11 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 381.321 276.891 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 442.717 438.911 Td [(desc)]TJ +/F84 7.1731 Tf 387.523 280.179 Td [(D)-62(A)12(T)11(A)-374(T)-62(Y)-62(P)-62(E)]TJ ET q -1 0 0 1 464.266 439.11 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 487.422 276.891 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 467.404 438.911 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -337.62 -22.816 Td [(amold)]TJ -0 g 0 G -/F62 9.9626 Tf 33.763 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -8.857 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F67 9.9626 Tf 201.393 0 Td [(psb)]TJ +/F231 8.9664 Tf 493.164 280.179 Td [(val)]TJ ET q -1 0 0 1 393.323 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 276.891 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 396.461 368.275 Td [(T)]TJ +/F84 7.1731 Tf 579.28 280.179 Td [(D)-62(E)-62(F)13(A)-62(U)-62(L)12(T)]TJ ET q -1 0 0 1 402.319 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 276.891 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 405.457 368.275 Td [(base)]TJ +/F84 7.1731 Tf 664.936 280.179 Td [(C)-62(O)-62(M)-61(M)-62(E)-61(N)-62(T)-62(S)]TJ ET q -1 0 0 1 427.006 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 860.611 276.891 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S +Q +q +1 0 0 1 278.657 276.692 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 199.78 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 430.144 368.275 Td [(sparse)]TJ +/F231 8.9664 Tf 284.635 268.821 Td [(\015SUB_SOLVE\015)]TJ +0 g 0 G ET q -1 0 0 1 462.154 368.474 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 381.321 199.78 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F67 9.9626 Tf 465.292 368.275 Td [(mat)]TJ/F62 9.9626 Tf 15.691 0 Td [(.)]TJ +/F231 8.9664 Tf 387.299 268.821 Td [(character)]TJ +0 g 0 G + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ 0 g 0 G -/F59 9.9626 Tf -330.278 -22.816 Td [(vmold)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ 0 g 0 G -/F62 9.9626 Tf 34.321 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -9.415 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F67 9.9626 Tf 201.393 0 Td [(psb)]TJ + [(\051)]TJ ET q -1 0 0 1 393.323 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 487.422 199.78 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 396.461 297.638 Td [(T)]TJ +/F231 8.9664 Tf 493.4 268.821 Td [(\015ILU\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015ILUT\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015INVT\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015INVK\015)]TJ +0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.958 Td [(\015AINV\015)]TJ +0 g 0 G ET q -1 0 0 1 402.319 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 199.78 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q -BT -/F67 9.9626 Tf 405.457 297.638 Td [(base)]TJ -ET q -1 0 0 1 427.006 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 199.78 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S Q BT -/F67 9.9626 Tf 430.144 297.638 Td [(vect)]TJ +/F84 8.9664 Tf 1.02 0 0 1 664.434 268.821 Tm [(The)-987(local)-987(solver)-987(to)-987(be)-987(used)-987(with)-988(the)]TJ 1.02 0 0 1 664.712 257.862 Tm [(smoother)-490(or)-490(one-level)-491(pr)18(econditioner)-490(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 845.827 257.862 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 850.422 257.862 Tm [(\051,)]TJ 1.02 0 0 1 664.712 246.903 Tm [(ILU\050)]TJ/F78 8.9664 Tf 1 0 0 1 684.148 246.903 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 688.743 246.903 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 692.636 246.903 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 695.734 246.903 Tm [(\051,)-862(App)1(r)17(oximate)-738(Inverses)-738(INVK\050)]TJ/F78 8.9664 Tf 1 0 0 1 837.67 246.903 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 842.266 246.903 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 846.158 246.903 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 850.422 246.903 Tm [(\051,)]TJ 1.02 0 0 1 664.712 235.945 Tm [(INVT\050)]TJ/F78 8.9664 Tf 1 0 0 1 691.254 235.945 Tm [(p)]TJ/F84 6.9738 Tf 4.595 -1.784 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 699.834 235.945 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 704.22 235.945 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 708.815 235.945 Tm [(2,)]TJ/F78 8.9664 Tf 1 0 0 1 717.281 235.945 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.784 Td [(1)]TJ/F84 8.9664 Tf 1.02 0 0 1 724.364 235.945 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 728.257 235.945 Tm [(t)]TJ/F84 6.9738 Tf 3.098 -1.679 Td [(2)]TJ/F84 8.9664 Tf 1.02 0 0 1 735.34 235.945 Tm [(\051)-786(and)-787(AINV\050)]TJ/F78 8.9664 Tf 1 0 0 1 795.809 235.945 Tm [(t)]TJ/F84 8.9664 Tf 1.02 0 0 1 798.907 235.945 Tm [(\051;)-1057(note)-786(that)]TJ 1.02 0 0 1 664.712 224.986 Tm [(appr)18(oximate)-623(inverses)-623(ar)18(e)-623(speci\002)1(cally)-623(suited)]TJ 1.02 0 0 1 664.712 214.027 Tm [(for)-339(GPUs)-339(since)-339(they)-339(do)-340(not)-339(employ)-339(triangular)]TJ 1 0 0 1 664.712 203.068 Tm [(system)-250(solve)-250(kernels,)-250(see)-250([)]TJ +1 0 0 rg 1 0 0 RG + [(2)]TJ +0 g 0 G + [(].)]TJ ET q -1 0 0 1 451.693 297.838 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 860.611 199.78 cm +[]0 d 0 J 0.398 w 0 0 m 0 76.712 l S +Q +q +1 0 0 1 278.657 199.581 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q +q +1 0 0 1 278.657 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 454.832 297.638 Td [(type)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -325.048 -22.815 Td [(imold)]TJ +/F231 8.9664 Tf 284.635 191.71 Td [(\015SUB_FILLIN\015)]TJ 0 g 0 G -/F62 9.9626 Tf 32.099 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(integer)-250(vector)-250(storage.)]TJ -7.193 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-190(as:)-280(an)-190(object)-190(of)-190(a)-190(class)-190(derived)-190(fr)18(om)-190(\050integer\051)]TJ/F67 9.9626 Tf 235.804 0 Td [(psb)]TJ ET q -1 0 0 1 427.733 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 381.321 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F67 9.9626 Tf 430.872 227.002 Td [(T)]TJ +/F231 8.9664 Tf 387.299 191.71 Td [(integer)]TJ +0 g 0 G ET q -1 0 0 1 436.73 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 487.422 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 439.868 227.002 Td [(base)]TJ +/F84 8.9664 Tf 493.05 191.71 Td [(Any)-250(integer)]TJ 0.35 -10.959 Td [(number)]TJ/F179 9.343 Tf 33.69 0 Td [(\025)]TJ/F84 8.9664 Tf 9.866 0 Td [(0)]TJ ET q -1 0 0 1 461.417 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 464.555 227.002 Td [(vect)]TJ +/F84 8.9664 Tf 579.056 191.71 Td [(0)]TJ ET q -1 0 0 1 486.104 227.202 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 489.242 227.002 Td [(type)]TJ/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -359.459 -24.085 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -22.816 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econdtioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 193.612 0 Td [(psb)]TJ +/F84 8.9664 Tf 0.98 0 0 1 664.712 191.71 Tm [(Fill-in)-207(level)]TJ/F78 8.9664 Tf 1 0 0 1 710.61 191.71 Tm [(p)]TJ/F84 8.9664 Tf 0.98 0 0 1 717.027 191.71 Tm [(of)-207(the)-208(incomplete)-207(LU)-207(factorizations.)]TJ ET q -1 0 0 1 385.542 132.48 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 860.611 177.464 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q -BT -/F67 9.9626 Tf 388.68 132.281 Td [(prec)]TJ -ET q -1 0 0 1 410.229 132.48 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 278.657 177.265 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q +q +1 0 0 1 278.657 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 413.367 132.281 Td [(type)]TJ -0 g 0 G -0 g 0 G -/F62 9.9626 Tf -98.279 -41.843 Td [(152)]TJ -0 g 0 G -ET - -endstream -endobj -1977 0 obj -<< -/Length 1021 ->> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F59 9.9626 Tf 99.895 706.129 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -24.907 -21.918 Td [(The)]TJ/F67 9.9626 Tf 20.388 0 Td [(amold)]TJ/F62 9.9626 Tf 26.152 0 Td [(,)]TJ/F67 9.9626 Tf 6.506 0 Td [(vmold)]TJ/F62 9.9626 Tf 29.862 0 Td [(and)]TJ/F67 9.9626 Tf 20.577 0 Td [(imold)]TJ/F62 9.9626 Tf 29.862 0 Td [(ar)18(guments)-372(may)-373(be)-372(employed)-373(to)-372(interface)-372(with)]TJ -133.347 -11.955 Td [(special)-250(devices,)-250(such)-250(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ -0 g 0 G - 164.384 -533.997 Td [(153)]TJ +/F231 8.9664 Tf 284.635 169.394 Td [(\015SUB_ILUTHRS\015)]TJ 0 g 0 G ET - -endstream -endobj -1985 0 obj -<< -/Length 5673 ->> -stream -0 g 0 G -0 g 0 G +q +1 0 0 1 381.321 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F59 11.9552 Tf 150.705 706.129 Td [(10.3)-1000(apply)-250(\227)-250(Preconditioner)-250(application)-250(routine)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%apply\050x,y,desc_a,info,trans,work\051)]TJ 0 -11.955 Td [(call)-525(prec%apply\050x,desc_a,info,trans\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +/F231 8.9664 Tf 387.299 169.394 Td [(real)]TJ 0 g 0 G -0 g 0 G - 0 -19.925 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 117.837 0 Td [(local)]TJ/F62 9.9626 Tf -117.279 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ + [(\050kind_parameter\051)]TJ ET q -1 0 0 1 388.441 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 487.422 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 391.579 577.576 Td [(prec)]TJ +/F84 8.9664 Tf 1.02 0 0 1 493.05 169.394 Tm [(Any)-1148(r)18(eal)-1148(nu)1(m-)]TJ 1 0 0 1 493.4 158.435 Tm [(ber)]TJ/F179 9.343 Tf 15.148 0 Td [(\025)]TJ/F84 8.9664 Tf 9.865 0 Td [(0)]TJ ET q -1 0 0 1 413.128 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 416.266 577.576 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(x)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(sour)18(ce)-250(vector)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 111.142 0 Td [(local)]TJ/F62 9.9626 Tf -96.198 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F84 8.9664 Tf 579.056 169.394 Td [(0)]TJ ET q -1 0 0 1 410.618 521.985 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 413.756 521.785 Td [(T)]TJ +/F84 8.9664 Tf 664.712 169.394 Td [(Dr)18(op)-250(tolerance)]TJ/F78 8.9664 Tf 61.441 0 Td [(t)]TJ/F84 8.9664 Tf 5.34 0 Td [(in)-250(the)-250(ILU\050)]TJ/F78 8.9664 Tf 43.813 0 Td [(p)]TJ/F84 8.9664 Tf 4.595 0 Td [(,)]TJ/F78 8.9664 Tf 3.848 0 Td [(t)]TJ/F84 8.9664 Tf 3.098 0 Td [(\051)-250(factorization.)]TJ ET q -1 0 0 1 419.614 521.985 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 860.611 155.147 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q -BT -/F67 9.9626 Tf 422.752 521.785 Td [(vect)]TJ -ET q -1 0 0 1 444.301 521.985 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 278.657 154.948 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 143.79 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 447.439 521.785 Td [(type)]TJ +/F231 8.9664 Tf 284.635 147.078 Td [(\015ILU_ALG\015)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.656 -19.925 Td [(desc)]TJ ET q -1 0 0 1 171.218 502.059 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 381.321 143.79 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F59 9.9626 Tf 174.207 501.86 Td [(a)]TJ +/F231 8.9664 Tf 387.299 147.078 Td [(character)]TJ 0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 208.625 0 Td [(local)]TJ/F62 9.9626 Tf -217.183 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 200.207 0 Td [(psb)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ +0 g 0 G + [(\051)]TJ ET q -1 0 0 1 392.137 466.194 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 487.422 143.79 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 395.275 465.994 Td [(desc)]TJ +/F231 8.9664 Tf 493.4 147.078 Td [(\015MILU\015)]TJ +0 g 0 G ET q -1 0 0 1 416.824 466.194 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 143.79 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 419.963 465.994 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -290.179 -19.925 Td [(trans)]TJ -0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(Scope:)]TJ -2.76 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)74(.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.906 -19.926 Td [(work)]TJ -0 g 0 G -/F62 9.9626 Tf 28.782 0 Td [(an)-250(optional)-250(work)-250(space)-250(Scope:)]TJ/F59 9.9626 Tf 136.476 0 Td [(local)]TJ/F62 9.9626 Tf -140.352 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(optional)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(double)-250(pr)18(ecision)-250(array)111(.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.906 -21.918 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(y)]TJ +/F231 8.9664 Tf 579.056 147.078 Td [(\015NONE\015)]TJ 0 g 0 G -/F62 9.9626 Tf 10.52 0 Td [(the)-250(destination)-250(vector)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 131.914 0 Td [(local)]TJ/F62 9.9626 Tf -117.528 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 276.904 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 143.79 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S Q BT -/F67 9.9626 Tf 413.756 276.704 Td [(T)]TJ +/F84 8.9664 Tf 664.712 147.078 Td [(ILU)-250(algorithmic)-250(variant)]TJ ET q -1 0 0 1 419.614 276.904 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 860.611 143.79 cm +[]0 d 0 J 0.398 w 0 0 m 0 10.959 l S +Q +q +1 0 0 1 278.657 143.591 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S Q +q +1 0 0 1 278.657 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 422.752 276.704 Td [(vect)]TJ +/F231 8.9664 Tf 284.635 135.72 Td [(\015ILUT_SCALE\015)]TJ +0 g 0 G ET q -1 0 0 1 444.301 276.904 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 381.321 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F67 9.9626 Tf 447.439 276.704 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F231 8.9664 Tf 387.299 135.72 Td [(character)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ 0 g 0 G - 139.477 -118.52 Td [(154)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ 0 g 0 G + [(\051)]TJ ET - -endstream -endobj -1990 0 obj -<< -/Length 3387 ->> -stream -0 g 0 G -0 g 0 G +q +1 0 0 1 487.422 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F59 11.9552 Tf 99.895 706.129 Td [(10.4)-1000(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(current)-250(preconditioner)]TJ +/F231 8.9664 Tf 493.4 135.72 Td [(\015MAXVAL\015)]TJ 0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015DIAG\015)]TJ 0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%descr\050info\051)]TJ 0 -11.955 Td [(call)-525(prec%descr\050info,iout,)-525(root\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.958 Td [(\015ARSWUM\015)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015ARCSUM\015)]TJ 0 g 0 G +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015ACLSUM\015)]TJ 0 g 0 G - 0 -19.925 Td [(prec)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015NONE\015)]TJ 0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F59 9.9626 Tf 117.836 0 Td [(local)]TJ/F62 9.9626 Tf -117.278 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 337.631 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 340.77 577.576 Td [(prec)]TJ +/F231 8.9664 Tf 579.056 135.72 Td [(\015NONE\015)]TJ +0 g 0 G ET q -1 0 0 1 362.319 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S Q BT -/F67 9.9626 Tf 365.457 577.576 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(iout)]TJ -0 g 0 G -/F62 9.9626 Tf 23.243 0 Td [(output)-250(unit.)-310(Scope:)]TJ/F59 9.9626 Tf 87.391 0 Td [(local)]TJ/F62 9.9626 Tf -85.727 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(number)74(.)-310(Default:)-310(default)-250(output)-250(unit.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(root)]TJ -0 g 0 G -/F62 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-250(fr)18(om)-250(which)-250(to)-250(print)-250(Scope:)]TJ/F59 9.9626 Tf 155.834 0 Td [(local)]TJ/F62 9.9626 Tf -154.18 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-387(as:)-585(an)-387(integer)-387(number)-388(between)-387(0)-387(and)]TJ/F60 9.9626 Tf 220.442 0 Td [(n)-80(p)]TJ/F91 10.3811 Tf 14.01 0 Td [(\000)]TJ/F62 9.9626 Tf 10.638 0 Td [(1,)-422(in)-387(which)-387(case)]TJ -245.09 -11.955 Td [(the)-314(speci\002e)1(d)-314(pr)18(ocess)-314(will)-313(print)-314(the)-313(description,)-330(or)]TJ/F91 10.3811 Tf 225.38 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1,)-329(in)-314(which)-314(case)-313(all)]TJ -233.574 -11.955 Td [(pr)18(ocesses)-250(will)-250(print.)-310(Default:)-310(0.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ -0 g 0 G - 139.477 -263.975 Td [(155)]TJ -0 g 0 G +/F84 8.9664 Tf 664.712 135.72 Td [(ILU)-250(scaling)-250(strategy)]TJ ET - -endstream -endobj -1994 0 obj -<< -/Length 973 ->> -stream -0 g 0 G -0 g 0 G +q +1 0 0 1 860.611 77.638 cm +[]0 d 0 J 0.398 w 0 0 m 0 65.753 l S +Q +q +1 0 0 1 278.657 77.439 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 55.322 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F59 11.9552 Tf 150.705 706.129 Td [(10.5)-1000(clone)-250(\227)-250(clone)-250(current)-250(preconditioner)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-1050(prec%clone\050precout,info\051)]TJ -0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -77.917 -33.873 Td [(On)-250(Return)]TJ -0 g 0 G -0 g 0 G - 0 -19.926 Td [(precout)]TJ -0 g 0 G -/F62 9.9626 Tf 39.292 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ -0 g 0 G -/F59 9.9626 Tf -39.292 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ -0 g 0 G - 140.583 -449.28 Td [(156)]TJ +/F231 8.9664 Tf 284.635 69.568 Td [(\015INV_FILLIN\015)]TJ 0 g 0 G ET - -endstream -endobj -2000 0 obj -<< -/Length 2703 ->> -stream -0 g 0 G -0 g 0 G +q +1 0 0 1 381.321 55.322 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F59 11.9552 Tf 99.895 706.129 Td [(10.6)-1000(free)-250(\227)-250(Free)-250(a)-250(preconditioner)]TJ -0 g 0 G -0 g 0 G -/F67 9.9626 Tf 0 -18.964 Td [(call)-525(prec%free\050info\051)]TJ +/F231 8.9664 Tf 387.299 69.568 Td [(integer)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Asynchr)18(onous.)]TJ -0 g 0 G -/F59 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ -0 g 0 G -0 g 0 G - 0 -19.925 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 337.631 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 487.422 55.322 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 340.77 577.576 Td [(prec)]TJ +/F84 8.9664 Tf 493.05 69.568 Td [(Any)-250(integer)]TJ 0.35 -10.958 Td [(number)]TJ/F179 9.343 Tf 33.69 0 Td [(\025)]TJ/F84 8.9664 Tf 9.866 0 Td [(0)]TJ ET q -1 0 0 1 362.319 577.775 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 573.078 55.322 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 365.457 577.576 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(On)-250(Exit)]TJ -0 g 0 G -0 g 0 G - 0 -19.926 Td [(prec)]TJ -0 g 0 G -/F62 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -30.874 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 196.511 0 Td [(psb)]TJ +/F84 8.9664 Tf 579.056 69.568 Td [(0)]TJ ET q -1 0 0 1 337.631 502.059 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 658.734 55.322 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F67 9.9626 Tf 340.77 501.86 Td [(prec)]TJ +/F84 8.9664 Tf 1.02 0 0 1 664.712 69.568 Tm [(Second)-285(\002)1(ll-in)-285(level)]TJ/F78 8.9664 Tf 1 0 0 1 742.915 69.568 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 749.781 69.568 Tm [(of)-285(the)-284(INVK\050)]TJ/F78 8.9664 Tf 1 0 0 1 803.286 69.568 Tm [(p)]TJ/F84 8.9664 Tf 1.02 0 0 1 807.881 69.568 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 811.774 69.568 Tm [(q)]TJ/F84 8.9664 Tf 1.02 0 0 1 816.037 69.568 Tm [(\051)-285(appr)18(oxi-)]TJ 1 0 0 1 664.712 58.61 Tm [(mate)-250(inverse.)]TJ ET q -1 0 0 1 362.319 502.059 cm -[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +1 0 0 1 860.611 55.322 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q +q +1 0 0 1 278.657 55.123 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 33.006 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F67 9.9626 Tf 365.457 501.86 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -286.483 -19.925 Td [(info)]TJ -0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -30.326 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F59 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ/F62 9.9626 Tf 34.363 0 Td [(Releases)-250(all)-250(internal)-250(storage.)]TJ -0 g 0 G - 130.021 -333.713 Td [(157)]TJ -0 g 0 G -ET - -endstream -endobj -2005 0 obj -<< -/Length 548 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 14.3462 Tf 150.705 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F62 9.9626 Tf 0 -22.702 Td [(In)-402(this)-403(chapter)-402(we)-403(pr)18(ovide)-402(r)18(outines)-403(for)-402(pr)18(econditioners)-402(and)-403(iterative)-402(meth-)]TJ 0 -11.955 Td [(ods.)-472(The)-304(interfaces)-304(for)-304(Krylov)-304(subspace)-303(methods)-304(ar)18(e)-304(available)-304(in)-304(the)-304(module)]TJ/F67 9.9626 Tf 0 -11.955 Td [(psb_krylov_mod)]TJ/F62 9.9626 Tf 73.225 0 Td [(.)]TJ +/F231 8.9664 Tf 284.635 47.252 Td [(\015INV_ILUTHRS\015)]TJ 0 g 0 G - 91.158 -568.734 Td [(158)]TJ -0 g 0 G -ET - -endstream -endobj -2012 0 obj -<< -/Length 8246 ->> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 99.895 706.129 Td [(11.1)-1000(psb)]TJ ET q -1 0 0 1 153.407 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +1 0 0 1 381.321 33.006 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F59 11.9552 Tf 156.993 706.129 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ/F62 9.9626 Tf -57.098 -18.964 Td [(This)-266(subr)18(outine)-266(is)-267(a)-266(driver)-266(that)-267(p)1(r)18(ovides)-267(a)-266(general)-266(interface)-266(for)-267(all)-266(the)-266(Krylov-)]TJ 0 -11.955 Td [(Subspace)-250(family)-250(methods)-250(implemented)-250(in)-250(PSBLAS)-250(version)-250(2.)]TJ 14.944 -11.955 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ -0 g 0 G -/F59 9.9626 Tf -14.944 -18.774 Td [(1)]TJ +/F231 8.9664 Tf 387.299 47.252 Td [(real)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(normwise)-222(backwar)18(d)-221(err)18(or)-222(in)-221(the)-222(in\002nity)-222(norm;)-231(the)-221(iteration)-222(is)-222(stopped)-221(when)]TJ/F60 9.9626 Tf 109.036 -26.864 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 40.62 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ + [(\050kind_parameter\051)]TJ ET q -1 0 0 1 246.191 620.108 cm -[]0 d 0 J 0.398 w 0 0 m 74.372 0 l S +1 0 0 1 487.422 33.006 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F93 10.3811 Tf 246.316 610.783 Td [(\050)]TJ/F91 10.3811 Tf 4.274 0 Td [(k)]TJ/F60 9.9626 Tf 5.938 0 Td [(A)]TJ/F91 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F60 9.9626 Tf 11.048 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.876 1.96 Td [(k)]TJ/F93 10.3811 Tf 7.376 0 Td [(+)]TJ/F91 10.3811 Tf 10.256 0 Td [(k)]TJ/F60 9.9626 Tf 5.44 0 Td [(b)]TJ/F91 10.3811 Tf 4.861 0 Td [(k)]TJ/F93 10.3811 Tf 5.44 0 Td [(\051)]TJ/F69 10.3811 Tf 8.236 6.834 Td [(<)]TJ/F60 9.9626 Tf 11.087 0 Td [(e)-80(p)-25(s)]TJ -0 g 0 G -/F59 9.9626 Tf -235.842 -29.908 Td [(2)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 136.209 -26.865 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.141 0 Td [(=)]TJ/F91 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 8.9664 Tf 1.02 0 0 1 493.05 47.252 Tm [(Any)-1148(r)18(eal)-1148(nu)1(m-)]TJ 1 0 0 1 493.4 36.293 Tm [(ber)]TJ/F179 9.343 Tf 15.148 0 Td [(\025)]TJ/F84 8.9664 Tf 9.865 0 Td [(0)]TJ ET q -1 0 0 1 273.365 563.335 cm -[]0 d 0 J 0.398 w 0 0 m 20.025 0 l S +1 0 0 1 573.078 33.006 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F91 10.3811 Tf 273.49 554.01 Td [(k)]TJ/F60 9.9626 Tf 5.439 0 Td [(b)]TJ/F91 10.3811 Tf 4.862 0 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ -0 g 0 G -/F59 9.9626 Tf -208.668 -29.848 Td [(3)]TJ -0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F60 9.9626 Tf 134.486 -26.865 Td [(e)-15(r)-25(r)]TJ/F93 10.3811 Tf 15.14 0 Td [(=)]TJ/F91 10.3811 Tf 15.17 6.745 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F60 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F91 10.3811 Tf 2.875 1.96 Td [(k)]TJ +/F84 8.9664 Tf 579.056 47.252 Td [(0)]TJ ET q -1 0 0 1 271.641 506.622 cm -[]0 d 0 J 0.398 w 0 0 m 23.472 0 l S +1 0 0 1 658.734 33.006 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S Q BT -/F91 10.3811 Tf 271.766 497.297 Td [(k)]TJ/F60 9.9626 Tf 5.34 0 Td [(r)]TJ/F62 7.5716 Tf 4 -1.744 Td [(0)]TJ/F91 10.3811 Tf 4.408 1.744 Td [(k)]TJ/F62 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F69 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F60 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F62 9.9626 Tf -210.391 -29.848 Td [(The)-248(behaviour)-248(is)-248(contr)18(olled)-249(by)-248(the)-248(istop)-248(ar)18(gument)-248(\050see)-248(later\051.)-310(In)-248(the)-248(above)-248(for)18(-)]TJ 0 -11.956 Td [(mulae,)]TJ/F60 9.9626 Tf 32.81 0 Td [(x)]TJ/F60 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(is)-256(the)-256(tentative)-257(soluti)1(on)-257(and)]TJ/F60 9.9626 Tf 125.144 0 Td [(r)]TJ/F60 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F93 10.3811 Tf 5.757 1.96 Td [(=)]TJ/F60 9.9626 Tf 11.2 0 Td [(b)]TJ/F91 10.3811 Tf 6.822 0 Td [(\000)]TJ/F60 9.9626 Tf 10.777 0 Td [(A)-42(x)]TJ/F60 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F62 9.9626 Tf 5.303 1.96 Td [(the)-256(corr)18(esponding)-256(r)18(esidual)]TJ -225.064 -11.955 Td [(at)-250(the)]TJ/F60 9.9626 Tf 27.083 0 Td [(i)]TJ/F62 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.305 -17.357 Td [(c)-175(a)-175(l)-174(l)-880(p)-105(s)-105(b)]TJ +/F84 8.9664 Tf 0.985 0 0 1 664.712 47.252 Tm [(Second)-255(dr)19(op)-255(tolerance)]TJ/F78 8.9664 Tf 1 0 0 1 754.271 47.252 Tm [(s)]TJ/F84 8.9664 Tf 0.985 0 0 1 760.121 47.252 Tm [(in)-255(the)-254(INVT\050)]TJ/F78 8.9664 Tf 1 0 0 1 809.739 47.252 Tm [(t)]TJ/F84 8.9664 Tf 0.985 0 0 1 812.837 47.252 Tm [(,)]TJ/F78 8.9664 Tf 1 0 0 1 816.652 47.252 Tm [(s)]TJ/F84 8.9664 Tf 0.985 0 0 1 820.252 47.252 Tm [(\051)-255(appr)19(ox-)]TJ 1 0 0 1 664.712 36.293 Tm [(imate)-250(inverse.)]TJ ET q -1 0 0 1 150.28 433.215 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 860.611 33.006 cm +[]0 d 0 J 0.398 w 0 0 m 0 21.918 l S +Q +q +1 0 0 1 278.657 32.806 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q +q +1 0 0 1 278.657 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG BT -/F62 9.9626 Tf 154.313 433.015 Td [(k)-105(r)-105(y)-104(l)-105(o)-105(v)-238(\050)-156(m)-21(e)-22(t)-21(h)-22(o)-22(d)-218(,)-208(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +/F231 8.9664 Tf 284.635 24.936 Td [(\015AINV_ALG\015)]TJ +0 g 0 G ET q -1 0 0 1 352.02 433.215 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 381.321 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S Q +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG BT -/F62 9.9626 Tf 355.983 433.015 Td [(a)-370(,)-283(i)-108(n)-108(f)-108(o)-274(,)-57(&)]TJ -227.086 -11.955 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-336(i)-161(r)-160(s)-161(t)-496(,)-291(i)-116(s)-116(t)-116(o)-116(p)-407(,)-219(c)-43(o)-43(n)-44(d)-177(\051)]TJ -0 g 0 G -0 g 0 G -0 g 0 G -/F59 9.9626 Tf -29.002 -25.88 Td [(T)90(ype:)]TJ +/F231 8.9664 Tf 387.299 24.936 Td [(character)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + [(\050)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(len)]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -19.349 Td [(On)-250(Entry)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=*)]TJ 0 g 0 G + [(\051)]TJ +ET +q +1 0 0 1 487.422 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 493.4 24.936 Td [(\015LLK\015)]TJ 0 g 0 G - 0 -19.349 Td [(method)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015SYM-LLK\015)]TJ 0 g 0 G -/F62 9.9626 Tf 39.851 0 Td [(a)-193(string)-194(that)-193(de\002nes)-194(the)-194(it)1(erative)-194(method)-193(to)-194(be)-194(use)1(d.)-292(Supported)-193(values)]TJ -14.944 -11.956 Td [(ar)18(e:)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015STAB-LLK\015)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.349 Td [(CG:)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + 0 -10.959 Td [(\015MLK,LMX\015)]TJ 0 g 0 G -/F62 9.9626 Tf 22.964 0 Td [(the)-250(Conjugate)-250(Gradient)-250(method;)]TJ +ET +q +1 0 0 1 573.078 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG +BT +/F231 8.9664 Tf 579.056 24.936 Td [(\015LLK\015)]TJ 0 g 0 G -/F59 9.9626 Tf -22.964 -15.364 Td [(CGS:)]TJ +ET +q +1 0 0 1 658.734 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +BT +/F84 8.9664 Tf 664.362 24.936 Td [(AINV)-250(algorithmic)-250(strategy)111(.)]TJ +ET +q +1 0 0 1 860.611 -11.229 cm +[]0 d 0 J 0.398 w 0 0 m 0 43.836 l S +Q +q +1 0 0 1 278.657 -11.428 cm +[]0 d 0 J 0.398 w 0 0 m 581.953 0 l S +Q 0 g 0 G -/F62 9.9626 Tf 29.051 0 Td [(the)-250(Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ +BT +/F84 9.9626 Tf 419.673 -39.806 Td [(T)92(able)-250(21:)-310(Parameters)-250(de\002ning)-250(the)-250(solver)-250(of)-250(the)-250(BJAC)-250(pr)18(econditioner)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -29.051 -15.365 Td [(GCR:)]TJ 0 g 0 G -/F62 9.9626 Tf 30.157 0 Td [(the)-250(Generalized)-250(Conjugate)-250(Residual)-250(method;)]TJ +ET +1 0 0 1 271.751 120.326 cm +Q 0 g 0 G -/F59 9.9626 Tf -30.157 -15.364 Td [(FCG:)]TJ 0 g 0 G -/F62 9.9626 Tf 28.503 0 Td [(the)-250(Flexible)-250(Conjugate)-250(Gradient)-250(method)]TJ -0 0 1 rg 0 0 1 RG -/F62 7.5716 Tf 176.854 3.616 Td [(5)]TJ +1 0 0 1 -271.751 -120.326 cm +BT +/F84 9.9626 Tf 264.279 90.438 Td [(153)]TJ 0 g 0 G -/F62 9.9626 Tf 4.284 -3.616 Td [(;)]TJ +ET + +endstream +endobj +2000 0 obj +<< +/Length 7669 +>> +stream 0 g 0 G -/F59 9.9626 Tf -209.641 -15.364 Td [(BICG:)]TJ 0 g 0 G -/F62 9.9626 Tf 33.484 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(method;)]TJ +BT +/F75 11.9552 Tf 150.705 706.129 Td [(10.3)-1000(build)-250(\227)-250(Builds)-250(a)-250(preconditioner)]TJ 0 g 0 G -/F59 9.9626 Tf -33.484 -15.365 Td [(BICGST)92(AB:)]TJ 0 g 0 G -/F62 9.9626 Tf 59.696 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ +/F131 9.9626 Tf 0 -20.364 Td [(call)-525(prec%build\050a,)-525(desc_a,)-525(info[,amold,vmold,imold]\051)]TJ 0 g 0 G -/F59 9.9626 Tf -59.696 -15.364 Td [(BICGST)92(ABL:)]TJ +/F75 9.9626 Tf 0 -24.086 Td [(T)90(ype:)]TJ 0 g 0 G -/F62 9.9626 Tf 65.783 0 Td [(the)-218(Bi-Conjugate)-217(Gradient)-218(Stabilized)-218(method)-217(with)-218(r)18(estart-)]TJ -43.865 -11.955 Td [(ing;)]TJ +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -/F59 9.9626 Tf -21.918 -15.365 Td [(RGMRES:)]TJ +/F75 9.9626 Tf -29.828 -22.815 Td [(On)-250(Entry)]TJ 0 g 0 G -/F62 9.9626 Tf 52.294 0 Td [(the)-250(Generalized)-250(Minimal)-250(Residual)-250(method)-250(with)-250(r)18(estarting.)]TJ 0 g 0 G -/F59 9.9626 Tf -77.201 -19.349 Td [(a)]TJ + 0 -22.816 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F60 9.9626 Tf 178.414 0 Td [(A)]TJ/F62 9.9626 Tf 7.317 0 Td [(.)]TJ -170.787 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.963 0 Td [(the)-250(system)-250(sparse)-250(matrix.)-310(Scope:)]TJ/F75 9.9626 Tf 146.229 0 Td [(local)]TJ/F84 9.9626 Tf -131.594 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(sparse)-250(matrix)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 190.872 0 Td [(psb)]TJ ET q -1 0 0 1 309.258 138.701 cm +1 0 0 1 382.802 580.382 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 312.397 138.501 Td [(Tspmat)]TJ +/F131 9.9626 Tf 385.94 580.183 Td [(Tspmat)]TJ ET q -1 0 0 1 344.406 138.701 cm +1 0 0 1 417.95 580.382 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 347.544 138.501 Td [(type)]TJ +/F131 9.9626 Tf 421.088 580.183 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G +/F75 9.9626 Tf -291.305 -22.815 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ 0.98 0 0 1 175.611 509.547 Tm [(Speci\002ed)-194(as:)-286(an)-193(alr)18(eady)-194(initialized)-194(pr)19(econdtioner)-194(data)-194(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 1 0 0 1 447.661 509.547 Tm [(psb)]TJ ET q -1 0 0 1 99.895 130.091 cm -[]0 d 0 J 0.398 w 0 0 m 137.482 0 l S +1 0 0 1 463.98 509.746 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F62 5.9776 Tf 110.755 123.219 Td [(5)]TJ/F62 7.9701 Tf 3.487 -2.893 Td [(Note:)-310(the)-250(implementation)-250(is)-250(for)]TJ/F60 7.9701 Tf 113.297 0 Td [(F)-31(C)-45(G)]TJ/F93 8.3049 Tf 16.387 0 Td [(\050)]TJ/F62 7.9701 Tf 3.319 0 Td [(1)]TJ/F93 8.3049 Tf 4.085 0 Td [(\051)]TJ/F62 7.9701 Tf 3.32 0 Td [(.)]TJ -0 g 0 G -0 g 0 G -/F62 9.9626 Tf 9.629 -29.888 Td [(159)]TJ -0 g 0 G +/F131 9.9626 Tf 467.118 509.547 Td [(Tprec)]TJ ET - -endstream -endobj -2023 0 obj -<< -/Length 7054 ->> -stream -0 g 0 G +q +1 0 0 1 493.897 509.746 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 497.036 509.547 Td [(type)]TJ 0 g 0 G 0 g 0 G +/F75 9.9626 Tf -346.331 -34.771 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 474.975 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q BT -/F59 9.9626 Tf 150.705 706.129 Td [(prec)]TJ +/F75 9.9626 Tf 174.207 474.776 Td [(a)]TJ 0 g 0 G -/F62 9.9626 Tf 24.348 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.491 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(,)-250(tar)18(get.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(descriptor)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 247.649 0 Td [(psb)]TJ ET q -1 0 0 1 360.068 658.507 cm +1 0 0 1 439.579 439.11 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 658.308 Td [(prec)]TJ +/F131 9.9626 Tf 442.717 438.911 Td [(desc)]TJ ET q -1 0 0 1 384.755 658.507 cm +1 0 0 1 464.266 439.11 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 658.308 Td [(type)]TJ +/F131 9.9626 Tf 467.404 438.911 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -258.11 -22.202 Td [(b)]TJ +/F75 9.9626 Tf -337.62 -22.816 Td [(amold)]TJ 0 g 0 G -/F62 9.9626 Tf 11.068 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 13.838 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F84 9.9626 Tf 33.454 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(matrix)-250(storage.)]TJ -8.548 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 588.484 cm +1 0 0 1 393.323 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 413.756 588.285 Td [(T)]TJ +/F131 9.9626 Tf 396.461 368.275 Td [(T)]TJ ET q -1 0 0 1 419.614 588.484 cm +1 0 0 1 402.319 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.752 588.285 Td [(vect)]TJ +/F131 9.9626 Tf 405.457 368.275 Td [(base)]TJ ET q -1 0 0 1 444.301 588.484 cm +1 0 0 1 427.006 368.474 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 447.439 588.285 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ +/F131 9.9626 Tf 430.144 368.275 Td [(sparse)]TJ +ET +q +1 0 0 1 462.154 368.474 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 465.292 368.275 Td [(mat)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -22.202 Td [(x)]TJ +/F75 9.9626 Tf -330.278 -22.816 Td [(vmold)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(initial)-250(guess.)]TJ 14.944 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(local)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.687 0 Td [(psb)]TJ +/F84 9.9626 Tf 34.012 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(vector)-250(storage.)]TJ -9.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(object)-250(of)-250(a)-250(class)-250(derived)-250(fr)18(om)]TJ/F131 9.9626 Tf 201.393 0 Td [(psb)]TJ ET q -1 0 0 1 410.618 518.461 cm +1 0 0 1 393.323 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 413.756 518.262 Td [(T)]TJ +/F131 9.9626 Tf 396.461 297.638 Td [(T)]TJ ET q -1 0 0 1 419.614 518.461 cm +1 0 0 1 402.319 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 422.752 518.262 Td [(vect)]TJ +/F131 9.9626 Tf 405.457 297.638 Td [(base)]TJ ET q -1 0 0 1 444.301 518.461 cm +1 0 0 1 427.006 297.838 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 447.439 518.262 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -317.656 -22.203 Td [(eps)]TJ +/F131 9.9626 Tf 430.144 297.638 Td [(vect)]TJ +ET +q +1 0 0 1 451.693 297.838 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 454.832 297.638 Td [(type)]TJ/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.433 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +/F75 9.9626 Tf -325.048 -22.815 Td [(imold)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -22.203 Td [(desc)]TJ +/F84 9.9626 Tf 31.79 0 Td [(The)-250(desir)18(ed)-250(dynamic)-250(type)-250(for)-250(the)-250(internal)-250(integer)-250(vector)-250(storage.)]TJ -6.884 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 0.98 0 0 1 175.611 227.002 Tm [(Speci\002ed)-194(as:)-286(an)-193(object)-194(of)-194(a)-194(class)-194(derived)-194(fr)19(om)-194(\050integer\051)]TJ/F131 9.9626 Tf 1 0 0 1 407.092 227.002 Tm [(psb)]TJ ET q -1 0 0 1 171.218 426.236 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +1 0 0 1 423.41 227.202 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F59 9.9626 Tf 174.207 426.036 Td [(a)]TJ -0 g 0 G -/F62 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.089 0 Td [(required)]TJ/F62 9.9626 Tf -27.089 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.801 0 Td [(in)]TJ/F62 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ -0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 168.138 0 Td [(psb)]TJ +/F131 9.9626 Tf 426.549 227.002 Td [(T)]TJ ET q -1 0 0 1 360.068 378.415 cm +1 0 0 1 432.406 227.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 363.206 378.216 Td [(desc)]TJ +/F131 9.9626 Tf 435.545 227.002 Td [(base)]TJ ET q -1 0 0 1 384.755 378.415 cm +1 0 0 1 457.094 227.202 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 387.893 378.216 Td [(type)]TJ -0 g 0 G -/F62 9.9626 Tf 20.922 0 Td [(.)]TJ -0 g 0 G -/F59 9.9626 Tf -258.11 -22.203 Td [(itmax)]TJ -0 g 0 G -/F62 9.9626 Tf 30.436 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.529 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.569 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F93 10.3811 Tf 27.744 0 Td [(=)]TJ/F62 9.9626 Tf 10.961 0 Td [(1000.)]TJ -77.274 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F60 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F91 10.3811 Tf 27.743 0 Td [(\025)]TJ/F62 9.9626 Tf 10.962 0 Td [(1.)]TJ -0 g 0 G -/F59 9.9626 Tf -205.961 -22.202 Td [(itrace)]TJ -0 g 0 G -/F62 9.9626 Tf 29.878 0 Td [(If)]TJ/F69 10.3811 Tf 11.007 0 Td [(>)]TJ/F62 9.9626 Tf 14.142 0 Td [(0)-422(print)-423(out)-422(an)-422(informational)-423(message)-422(about)-422(conver)18(gence)-423(every)]TJ/F60 9.9626 Tf -30.066 -11.955 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F62 9.9626 Tf 26.396 0 Td [(iterations.)-310(If)]TJ/F93 10.3811 Tf 56.313 0 Td [(=)]TJ/F62 9.9626 Tf 10.961 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -93.724 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.956 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F60 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F93 10.3811 Tf 26.796 0 Td [(=)]TJ/F91 10.3811 Tf 11.086 0 Td [(\000)]TJ/F62 9.9626 Tf 8.194 0 Td [(1.)]TJ +/F131 9.9626 Tf 460.232 227.002 Td [(vect)]TJ +ET +q +1 0 0 1 481.781 227.202 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 484.919 227.002 Td [(type)]TJ/F84 9.9626 Tf 0.98 0 0 1 505.84 227.002 Tm [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -109.553 -34.158 Td [(irst)]TJ +/F75 9.9626 Tf 1 0 0 1 150.705 202.917 Tm [(On)-250(Return)]TJ 0 g 0 G -/F62 9.9626 Tf 19.915 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(r)18(estart)-250(parameter)74(.)]TJ 4.992 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.431 0 Td [(global)]TJ/F62 9.9626 Tf -31.431 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.186 0 Td [(.)]TJ -65.274 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(V)92(alues:)]TJ/F60 9.9626 Tf 34.613 0 Td [(i)-22(r)-35(s)-25(t)]TJ/F69 10.3811 Tf 17.671 0 Td [(>)]TJ/F62 9.9626 Tf 10.961 0 Td [(0.)-298(This)-214(is)-213(employed)-214(for)-213(the)-214(BiCGST)74(ABL)-214(or)-213(RGMRES)-214(meth-)]TJ -63.245 -11.955 Td [(ods,)-250(otherwise)-250(it)-250(is)-250(ignor)18(ed.)]TJ 0 g 0 G - 139.477 -29.888 Td [(160)]TJ + 0 -22.816 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econdtioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 193.612 0 Td [(psb)]TJ +ET +q +1 0 0 1 385.542 132.48 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 388.68 132.281 Td [(Tprec)]TJ +ET +q +1 0 0 1 415.459 132.48 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 418.598 132.281 Td [(type)]TJ +0 g 0 G +0 g 0 G +/F84 9.9626 Tf -103.51 -41.843 Td [(154)]TJ 0 g 0 G ET endstream endobj -2028 0 obj +2004 0 obj << -/Length 4489 +/Length 1131 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(istop)]TJ +/F75 9.9626 Tf 99.895 706.129 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 27.666 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.759 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.956 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(V)92(alues:)-351(1:)-351(use)-271(the)-270(normwise)-271(backwar)18(d)-270(err)18(or)74(,)-276(2:)-351(use)-271(the)-270(scaled)-271(2-norm)-270(of)]TJ 0 -11.955 Td [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 1.02 0 0 1 99.587 636.39 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 119.936 636.39 Tm [(amold)]TJ/F84 9.9626 Tf 1.02 0 0 1 146.088 636.39 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 152.18 636.39 Tm [(vmold)]TJ/F84 9.9626 Tf 1.02 0 0 1 181.67 636.39 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 202.214 636.39 Tm [(imold)]TJ/F84 9.9626 Tf 1.02 0 0 1 231.704 636.39 Tm [(ar)18(guments)-329(may)-329(be)-328(employed)-329(to)-328(interface)-329(with)]TJ 1 0 0 1 99.895 624.435 Tm [(special)-250(devices,)-250(such)-250(as)-250(GPUs)-250(and)-250(other)-250(accelerators.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(On)-250(Return)]TJ + 164.384 -533.997 Td [(155)]TJ 0 g 0 G +ET + +endstream +endobj +2012 0 obj +<< +/Length 5678 +>> +stream 0 g 0 G - 0 -19.926 Td [(x)]TJ 0 g 0 G -/F62 9.9626 Tf 9.963 0 Td [(The)-250(computed)-250(solution.)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(inout)]TJ/F62 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +BT +/F75 11.9552 Tf 150.705 706.129 Td [(10.4)-1000(apply)-250(\227)-250(Preconditioner)-250(application)-250(routine)]TJ +0 g 0 G +0 g 0 G +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%apply\050x,y,desc_a,info,trans,work\051)]TJ 0 -11.955 Td [(call)-525(prec%apply\050x,desc_a,info,trans\051)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -19.925 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -19.925 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.837 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ 0 0 1 rg 0 0 1 RG -/F67 9.9626 Tf 218.688 0 Td [(psb)]TJ +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ ET q -1 0 0 1 359.808 558.881 cm +1 0 0 1 388.441 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 362.947 558.682 Td [(T)]TJ +/F131 9.9626 Tf 391.579 577.576 Td [(Tprec)]TJ ET q -1 0 0 1 368.804 558.881 cm +1 0 0 1 418.358 577.775 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 371.943 558.682 Td [(vect)]TJ +/F131 9.9626 Tf 421.497 577.576 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -291.713 -19.925 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(the)-250(sour)18(ce)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 111.142 0 Td [(local)]TJ/F84 9.9626 Tf -96.506 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ ET q -1 0 0 1 393.492 558.881 cm +1 0 0 1 410.618 521.985 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 413.756 521.785 Td [(T)]TJ +ET +q +1 0 0 1 419.614 521.985 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.752 521.785 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 521.985 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 447.439 521.785 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.656 -19.925 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 502.059 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 501.86 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.962 0 Td [(the)-250(pr)18(oblem)-250(communication)-250(descriptor)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 208.625 0 Td [(local)]TJ/F84 9.9626 Tf -217.491 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(communication)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 200.208 0 Td [(psb)]TJ +ET +q +1 0 0 1 392.137 466.194 cm []0 d 0 J 0.398 w 0 0 m 3.138 0 l S Q BT -/F67 9.9626 Tf 396.63 558.682 Td [(type)]TJ +/F131 9.9626 Tf 395.275 465.994 Td [(desc)]TJ +ET +q +1 0 0 1 416.824 466.194 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 419.963 465.994 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -290.179 -19.925 Td [(trans)]TJ 0 g 0 G -/F62 9.9626 Tf 20.921 0 Td [(.)]TJ +/F84 9.9626 Tf 27.666 0 Td [(Scope:)]TJ -3.068 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(character)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -317.656 -19.925 Td [(iter)]TJ +/F75 9.9626 Tf -24.907 -19.926 Td [(work)]TJ 0 g 0 G -/F62 9.9626 Tf 20.473 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.434 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +/F84 9.9626 Tf 28.782 0 Td [(an)-250(optional)-250(work)-250(space)-250(Scope:)]TJ/F75 9.9626 Tf 136.476 0 Td [(local)]TJ/F84 9.9626 Tf -140.66 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(double)-250(pr)18(ecision)-250(array)111(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(err)]TJ +/F75 9.9626 Tf -24.907 -21.918 Td [(On)-250(Return)]TJ 0 g 0 G -/F62 9.9626 Tf 17.714 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.193 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(cond)]TJ + 0 -19.925 Td [(y)]TJ +0 g 0 G +/F84 9.9626 Tf 10.52 0 Td [(the)-250(destination)-250(vector)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 131.914 0 Td [(local)]TJ/F84 9.9626 Tf -117.836 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.148 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.687 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 276.904 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 413.756 276.704 Td [(T)]TJ +ET +q +1 0 0 1 419.614 276.904 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.752 276.704 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 276.904 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 447.439 276.704 Td [(type)]TJ 0 g 0 G -/F62 9.9626 Tf 27.119 0 Td [(An)-210(esti)1(mate)-210(of)-210(the)-209(condition)-210(number)-209(of)-210(matrix)]TJ/F60 9.9626 Tf 204.999 0 Td [(A)]TJ/F62 9.9626 Tf 7.318 0 Td [(;)-223(only)-210(available)-209(with)-210(the)]TJ/F60 9.9626 Tf -214.444 -11.956 Td [(C)-45(G)]TJ/F62 9.9626 Tf 17.001 0 Td [(method)-250(on)-250(r)18(eal)-250(data.)]TJ -17.086 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-249(as:)-310(a)-249(r)18(eal)-249(number)74(.)-310(A)-249(corr)18(ect)-250(r)18(esult)-249(will)-249(be)-249(gr)18(eater)-250(than)-249(or)-249(equal)]TJ 0 -11.955 Td [(to)-403(one;)-480(if)-403(speci\002ed)-403(for)-403(non-r)18(eal)-403(data,)-441(or)-403(an)-403(err)18(or)-403(occurr)18(ed,)-441(zer)18(o)-403(is)-403(r)18(e-)]TJ 0 -11.956 Td [(turned.)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.925 Td [(info)]TJ +/F75 9.9626 Tf -317.656 -19.925 Td [(info)]TJ 0 g 0 G -/F62 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf -31.432 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf -27.088 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(out)]TJ/F62 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.956 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 139.477 -161.394 Td [(161)]TJ + 139.865 -118.52 Td [(156)]TJ 0 g 0 G ET endstream endobj -2038 0 obj +2017 0 obj << -/Length 7598 +/Length 3485 >> stream 0 g 0 G 0 g 0 G BT -/F59 14.3462 Tf 150.705 706.042 Td [(12)-1000(Extensions)]TJ/F62 9.9626 Tf 0 -22.702 Td [(The)-216(EXT)74(,)-217(CUDA)-216(and)-217(RSB)-216(subdir)18(ectories)-216(contains)-217(a)-216(set)-217(of)-216(extensions)-216(to)-217(the)-216(base)]TJ 0 -11.955 Td [(library)111(.)-678(The)-373(extensions)-373(pr)18(ovide)-372(additional)-373(storage)-373(formats)-373(beyond)-372(the)-373(ones)]TJ 0 -11.955 Td [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ +/F75 11.9552 Tf 99.895 706.129 Td [(10.5)-1000(descr)-250(\227)-250(Prints)-250(a)-250(description)-250(of)-250(current)-250(preconditioner)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ 0 g 0 G -/F62 9.9626 Tf 39.292 0 Td [(a)-296(CUDA)-297(library)-296(originally)-296(published)-297(as)]TJ -0 1 0 0 k 0 1 0 0 K -/F67 9.9626 Tf 178.891 0 Td [(https://code.google.com/)]TJ -193.277 -11.955 Td [(p/spgpu/)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%descr\050info\051)]TJ 0 -11.955 Td [(call)-525(prec%descr\050info,iout,)-525(root\051)]TJ 0 g 0 G -/F62 9.9626 Tf 46.128 0 Td [(and)-430(now)-430(included)-430(in)-431(t)1(he)]TJ/F67 9.9626 Tf 119.328 0 Td [(cuda)]TJ/F62 9.9626 Tf 25.207 0 Td [(subdir)74(,)-475(for)-430(computations)-430(on)]TJ -190.663 -11.955 Td [(NVIDIA)-250(GPUs;)]TJ +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -/F59 9.9626 Tf -24.906 -19.514 Td [(LIBRSB)]TJ +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -0 1 0 0 k 0 1 0 0 K -/F67 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G -/F62 9.9626 Tf 203.983 0 Td [(,)-398(for)-368(computations)-368(on)]TJ -220.591 -11.955 Td [(multicor)18(e)-250(parallel)-250(machines.)]TJ -24.906 -19.102 Td [(The)-318(infrastr)8(uctur)18(e)-317(laid)-318(out)-317(in)-318(the)-318(base)-317(library)-318(to)-318(allow)-317(for)-318(these)-318(extensions)-317(is)]TJ 0 -11.956 Td [(detailed)-299(in)-299(the)-299(r)18(efer)18(ences)-299([)]TJ -1 0 0 rg 1 0 0 RG - [(20)]TJ 0 g 0 G - [(,)]TJ -1 0 0 rg 1 0 0 RG - [-299(21)]TJ + 0 -19.925 Td [(prec)]TJ 0 g 0 G - [(,)]TJ -1 0 0 rg 1 0 0 RG - [-299(10)]TJ +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)-310(Scope:)]TJ/F75 9.9626 Tf 117.836 0 Td [(local)]TJ/F84 9.9626 Tf -117.587 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ +ET +q +1 0 0 1 337.631 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 340.77 577.576 Td [(Tprec)]TJ +ET +q +1 0 0 1 367.549 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 370.687 577.576 Td [(type)]TJ 0 g 0 G - [(];)-324(the)-299(CUDA-speci\002c)-299(data)-299(formats)-299(ar)18(e)-299(de-)]TJ 0 -11.955 Td [(scribed)-250(in)-250([)]TJ -1 0 0 rg 1 0 0 RG - [(22)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G - [(].)]TJ/F59 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(A)-279(sample)-279(application)-279(using)-279(the)-279(PSBLAS)-279(extensions)-279(will)-279(contain)-279(the)-279(following)]TJ 0 -11.955 Td [(steps:)]TJ +/F75 9.9626 Tf -291.714 -19.925 Td [(iout)]TJ 0 g 0 G - 13.888 -19.102 Td [(\225)]TJ +/F84 9.9626 Tf 23.243 0 Td [(output)-250(unit.)-310(Scope:)]TJ/F75 9.9626 Tf 87.391 0 Td [(local)]TJ/F84 9.9626 Tf -86.036 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(number)74(.)-310(Default:)-310(default)-250(output)-250(unit.)]TJ 0 g 0 G -/F67 9.9626 Tf 11.018 0 Td [(USE)]TJ/F62 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F67 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F62 9.9626 Tf 57.534 0 Td [(,)]TJ/F67 9.9626 Tf 4.981 0 Td [(psb_cuda_mod)]TJ/F62 9.9626 Tf 62.764 0 Td [(\051;)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(root)]TJ 0 g 0 G - -264.515 -19.514 Td [(\225)]TJ +/F84 9.9626 Tf 23.253 0 Td [(Pr)18(ocess)-250(fr)18(om)-250(which)-250(to)-250(print)-250(Scope:)]TJ/F75 9.9626 Tf 155.834 0 Td [(local)]TJ/F84 9.9626 Tf -154.489 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.02 0 0 1 124.802 465.994 Tm [(Speci\002ed)-342(as:)-497(an)-342(integer)-342(number)-342(between)-342(0)-342(and)]TJ/F78 9.9626 Tf 1 0 0 1 345.539 465.994 Tm [(n)-80(p)]TJ/F179 10.3811 Tf 13.868 0 Td [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 369.903 465.994 Tm [(1,)-366(in)-342(which)-342(case)]TJ 1.02 0 0 1 124.802 454.039 Tm [(the)-264(speci\002ed)-265(pr)18(ocess)-265(will)-264(print)-264(the)-265(description,)-269(or)]TJ/F179 10.3811 Tf 1 0 0 1 350.586 454.039 Tm [(\000)]TJ/F84 9.9626 Tf 1.02 0 0 1 358.78 454.039 Tm [(1,)-269(in)-265(which)-264(case)-265(all)]TJ 1 0 0 1 124.503 442.084 Tm [(pr)18(ocesses)-250(will)-250(print.)-310(Default:)-310(0.)]TJ 0 g 0 G - [-500(Declar)18(e)-190(a)]TJ/F60 9.9626 Tf 53.1 0 Td [(mold)]TJ/F62 9.9626 Tf 21.818 0 Td [(variable)-190(of)-190(the)-190(necessary)-190(type)-190(\050e.g.)]TJ/F67 9.9626 Tf 151.361 0 Td [(psb_d_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)]TJ/F67 9.9626 Tf -319.867 -11.955 Td [(psb_d_hlg_sparse_mat)]TJ/F62 9.9626 Tf 104.606 0 Td [(,)]TJ/F67 9.9626 Tf 4.982 0 Td [(psb_d_vect_cuda)]TJ/F62 9.9626 Tf 78.455 0 Td [(\051;)]TJ +/F75 9.9626 Tf -24.608 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G - -199.062 -19.514 Td [(\225)]TJ 0 g 0 G - [-500(Pass)-289(the)-290(mold)-289(variable)-290(to)-289(the)-290(base)-289(library)-289(interface)-290(wher)18(e)-289(needed)-290(to)-289(en-)]TJ 11.019 -11.955 Td [(sur)18(e)-250(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ -24.907 -19.102 Td [(Suppose)-366(you)-367(want)-366(to)-367(use)-367(the)-366(CUDA-enabled)-366(ELLP)92(ACK)-367(data)-366(str)8(uctur)18(e;)-425(you)]TJ 0 -11.955 Td [(would)-371(use)-370(a)-371(piece)-370(of)-371(code)-370(like)-371(this)-370(\050and)-371(don't)-370(for)18(get,)-401(you)-371(need)-370(CUDA-side)]TJ 0 -11.955 Td [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + 0 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 139.866 -263.975 Td [(157)]TJ +0 g 0 G ET -q -1 0 0 1 150.705 120.326 cm -0 0 343.711 225.156 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + +endstream +endobj +2022 0 obj +<< +/Length 974 +>> +stream +0 g 0 G 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 153.694 334.821 Td [(program)]TJ +/F75 11.9552 Tf 150.705 706.129 Td [(10.6)-1000(clone)-250(\227)-250(clone)-250(current)-250(preconditioner)]TJ 0 g 0 G - [-525(my_cuda_test)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.414 -10.959 Td [(use)]TJ +/F131 9.9626 Tf 0 -18.964 Td [(call)-1050(prec%clone\050precout,info\051)]TJ 0 g 0 G - [-525(psb_base_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(use)]TJ +/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G - [-525(psb_util_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -29.439 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.958 Td [(use)]TJ 0 g 0 G - [-525(psb_ext_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 0 -19.925 Td [(prec)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(use)]TJ +/F84 9.9626 Tf 24.348 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ 0 g 0 G - [-525(psb_cuda_mod)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -77.917 -33.873 Td [(On)-250(Return)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ 0 g 0 G - [(\050psb_dspmat_type\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 0 -19.926 Td [(precout)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +/F84 9.9626 Tf 38.904 0 Td [(A)-250(copy)-250(of)-250(the)-250(input)-250(object.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -38.904 -19.925 Td [(info)]TJ 0 g 0 G - [-525(a,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 23.8 0 Td [(Return)-250(code.)]TJ 0 g 0 G - [-525(agpu)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 140.583 -449.28 Td [(158)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ +ET + +endstream +endobj +2028 0 obj +<< +/Length 2709 +>> +stream 0 g 0 G - [(\050psb_d_vect_type\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +BT +/F75 11.9552 Tf 99.895 706.129 Td [(10.7)-1000(free)-250(\227)-250(Free)-250(a)-250(preconditioner)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(x,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F131 9.9626 Tf 0 -18.964 Td [(call)-525(prec%free\050info\051)]TJ 0 g 0 G - [-525(xg,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf 0 -21.918 Td [(T)90(ype:)]TJ 0 g 0 G - [-525(bg)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -21.918 Td [(real)]TJ +/F75 9.9626 Tf -29.44 -19.925 Td [(On)-250(Entry)]TJ 0 g 0 G - [(\050psb_dpk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ + 0 -19.925 Td [(prec)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 24.349 0 Td [(the)-250(pr)18(econditioner)74(.)]TJ 0.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ +ET +q +1 0 0 1 337.631 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 340.77 577.576 Td [(Tprec)]TJ +ET +q +1 0 0 1 367.549 577.775 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 370.687 577.576 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -291.714 -19.925 Td [(On)-250(Exit)]TJ 0 g 0 G - [-525(xtmp\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ + 0 -19.926 Td [(prec)]TJ 0 g 0 G - [(\050psb_d_vect_cuda\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 24.349 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.183 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(pr)18(econditioner)-250(data)-250(str)8(uctur)18(e)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 196.511 0 Td [(psb)]TJ +ET +q +1 0 0 1 337.631 502.059 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 340.77 501.86 Td [(Tprec)]TJ +ET +q +1 0 0 1 367.549 502.059 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 370.687 501.86 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-3675(::)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -291.714 -19.925 Td [(info)]TJ 0 g 0 G - [-525(vmold)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 23.801 0 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -30.635 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Err)18(or)-250(code:)-310(if)-250(no)-250(err)18(or)74(,)-250(0)-250(is)-250(r)18(eturned.)]TJ/F75 11.9552 Tf -24.907 -21.918 Td [(Notes)]TJ/F84 9.9626 Tf 34.363 0 Td [(Releases)-250(all)-250(internal)-250(storage.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ + 130.021 -333.713 Td [(159)]TJ 0 g 0 G - [(\050psb_d_elg_sparse_mat\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +ET + +endstream +endobj +2032 0 obj +<< +/Length 607 +>> +stream 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +BT +/F75 14.3462 Tf 150.705 705.784 Td [(11)-1000(Iterative)-250(Methods)]TJ/F84 9.9626 Tf 1.006 0 0 1 150.705 683.082 Tm [(In)-249(this)-250(chapter)-249(we)-250(pr)18(ovide)-249(r)18(outines)-250(for)-249(pr)18(econditioners)-250(and)-249(iterative)-249(methods.)]TJ 0.98 0 0 1 150.396 671.127 Tm [(The)-194(interfaces)-194(for)-194(iterative)-193(methods)-194(ar)18(e)-194(available)-194(in)-193(the)-194(module)]TJ/F131 9.9626 Tf 1 0 0 1 420.266 671.127 Tm [(psb_linsolve_mod)]TJ/F84 9.9626 Tf 0.98 0 0 1 503.952 671.127 Tm [(.)]TJ 0 g 0 G - [-525(aelg)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 1 0 0 1 315.088 90.438 Tm [(160)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ +ET + +endstream +endobj +2039 0 obj +<< +/Length 8455 +>> +stream 0 g 0 G - [(\050psb_ctxt_type\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +BT +/F75 11.9552 Tf 99.895 706.129 Td [(11.1)-1000(psb)]TJ +ET +q +1 0 0 1 153.407 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 156.993 706.129 Td [(krylov)-250(\227)-250(Krylov)-250(Methods)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf 1.013 0 0 1 99.587 687.165 Tm [(This)-247(subr)18(outine)-247(is)-247(a)-248(driver)-247(that)-247(pr)18(ovides)-247(a)-247(general)-247(interface)-248(fo)1(r)-248(all)-247(the)-247(Krylov-)]TJ 1 0 0 1 99.895 675.21 Tm [(Subspace)-250(family)-250(methods)-250(implemented)-250(in)-250(PSBLAS)-250(version)-250(2.)]TJ 14.944 -11.955 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -14.944 -18.774 Td [(1)]TJ 0 g 0 G - [-525(ctxt)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 0.99 0 0 1 109.858 644.481 Tm [(normwise)-252(backwar)18(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 218.894 617.617 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 40.62 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 246.191 620.108 cm +[]0 d 0 J 0.398 w 0 0 m 74.372 0 l S +Q +BT +/F181 10.3811 Tf 246.316 610.783 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.876 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.376 0 Td [(+)]TJ/F179 10.3811 Tf 10.256 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.861 0 Td [(k)]TJ/F181 10.3811 Tf 5.44 0 Td [(\051)]TJ/F134 10.3811 Tf 8.236 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.087 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ +/F75 9.9626 Tf -235.842 -29.908 Td [(2)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 273.365 563.335 cm +[]0 d 0 J 0.398 w 0 0 m 20.025 0 l S +Q +BT +/F179 10.3811 Tf 273.49 554.01 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-6825(::)]TJ +/F75 9.9626 Tf -208.668 -29.848 Td [(3)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -26.865 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 15.17 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET +q +1 0 0 1 271.641 506.622 cm +[]0 d 0 J 0.398 w 0 0 m 23.472 0 l S +Q +BT +/F179 10.3811 Tf 271.766 497.297 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.408 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 99.587 474.283 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 99.895 462.327 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 144.027 462.327 Tm [(x)]TJ/F78 7.5716 Tf 5.147 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 153.866 462.327 Tm [(is)-199(the)-199(tentat)1(ive)-199(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 273.705 462.327 Tm [(r)]TJ/F78 7.5716 Tf 4.041 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.643 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.758 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 328.46 462.327 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 99.895 450.372 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.305 -17.357 Td [(c)-175(a)-175(l)-174(l)-880(p)-105(s)-105(b)]TJ +ET +q +1 0 0 1 150.28 433.215 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 154.313 433.015 Td [(k)-105(r)-105(y)-104(l)-105(o)-105(v)-238(\050)-156(m)-21(e)-22(t)-21(h)-22(o)-22(d)-218(,)-208(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +ET +q +1 0 0 1 352.02 433.215 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F84 9.9626 Tf 355.983 433.015 Td [(a)-370(,)-283(i)-108(n)-108(f)-108(o)-274(,)-57(&)]TJ -227.086 -11.955 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-336(i)-161(r)-160(s)-161(t)-496(,)-291(i)-116(s)-116(t)-116(o)-116(p)-407(,)-219(c)-43(o)-43(n)-44(d)-177(\051)]TJ 0 g 0 G - [-525(iam,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(np)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -32.876 Td [(call)]TJ +/F75 9.9626 Tf -29.002 -25.88 Td [(T)90(ype:)]TJ 0 g 0 G - [-525(psb_init\050ctxt\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ +/F75 9.9626 Tf -29.828 -19.349 Td [(On)-250(Entry)]TJ 0 g 0 G - [-525(psb_info\050ctxt,iam,np\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ + 0 -19.349 Td [(method)]TJ 0 g 0 G - [-525(psb_cuda_init\050ctxt,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 0.98 0 0 1 139.746 356.482 Tm [(a)-253(string)-254(that)-253(de\002nes)-253(the)-253(iterative)-254(method)-253(to)-253(be)-254(used.)-315(Supported)-254(values)]TJ 1 0 0 1 124.802 344.526 Tm [(ar)18(e:)]TJ 0 g 0 G - [-525(iam\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +/F75 9.9626 Tf 0 -19.349 Td [(CG:)]TJ +0 g 0 G +/F84 9.9626 Tf 22.964 0 Td [(the)-250(Conjugate)-250(Gradient)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -22.964 -15.364 Td [(CGS:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.051 0 Td [(the)-250(Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -29.051 -15.365 Td [(GCR:)]TJ +0 g 0 G +/F84 9.9626 Tf 30.157 0 Td [(the)-250(Generalized)-250(Conjugate)-250(Residual)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -30.157 -15.364 Td [(FCG:)]TJ +0 g 0 G +/F84 9.9626 Tf 28.503 0 Td [(the)-250(Flexible)-250(Conjugate)-250(Gradient)-250(method)]TJ +0 0 1 rg 0 0 1 RG +/F84 7.5716 Tf 176.854 3.616 Td [(5)]TJ +0 g 0 G +/F84 9.9626 Tf 4.284 -3.616 Td [(;)]TJ +0 g 0 G +/F75 9.9626 Tf -209.641 -15.364 Td [(BICG:)]TJ +0 g 0 G +/F84 9.9626 Tf 33.484 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -33.484 -15.365 Td [(BICGST)92(AB:)]TJ +0 g 0 G +/F84 9.9626 Tf 59.696 0 Td [(the)-250(Bi-Conjugate)-250(Gradient)-250(Stabilized)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -59.696 -15.364 Td [(BICGST)92(ABL:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.999 0 0 1 190.585 232.991 Tm [(the)-250(Bi-Conjugate)-249(Gradient)-250(Stabilized)-249(method)-250(with)-250(r)18(estart-)]TJ 1 0 0 1 146.72 221.036 Tm [(ing;)]TJ +0 g 0 G +/F75 9.9626 Tf -21.918 -15.365 Td [(RGMRES:)]TJ +0 g 0 G +/F84 9.9626 Tf 52.294 0 Td [(the)-250(Generalized)-250(Minimal)-250(Residual)-250(method)-250(with)-250(r)18(estarting.)]TJ 0 g 0 G +/F75 9.9626 Tf -77.201 -19.349 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.317 0 Td [(.)]TJ -170.787 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 138.701 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 138.501 Td [(Tspmat)]TJ +ET +q +1 0 0 1 344.406 138.701 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 347.544 138.501 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G +ET +q +1 0 0 1 99.895 130.091 cm +[]0 d 0 J 0.398 w 0 0 m 137.482 0 l S +Q +BT +/F84 5.9776 Tf 110.755 123.219 Td [(5)]TJ/F84 7.9701 Tf 3.487 -2.893 Td [(Note:)-310(the)-250(implementation)-250(is)-250(for)]TJ/F78 7.9701 Tf 113.297 0 Td [(F)-31(C)-45(G)]TJ/F181 8.3049 Tf 16.387 0 Td [(\050)]TJ/F84 7.9701 Tf 3.319 0 Td [(1)]TJ/F181 8.3049 Tf 4.085 0 Td [(\051)]TJ/F84 7.9701 Tf 3.32 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 151.98 -58.082 Td [(162)]TJ +0 g 0 G +/F84 9.9626 Tf 9.629 -29.888 Td [(161)]TJ 0 g 0 G ET endstream endobj -1929 0 obj +1932 0 obj << /Type /ObjStm /N 100 -/First 976 -/Length 11413 ->> -stream -1927 0 1922 58 1932 152 1930 291 1934 434 529 493 1935 551 1936 609 1931 668 1939 762 -1937 901 1941 1046 533 1104 1942 1161 1943 1219 1938 1277 1946 1399 1944 1538 1948 1680 537 1739 -1949 1797 1950 1856 1945 1915 1952 2037 1954 2155 1951 2213 1956 2296 1958 2414 541 2473 1955 2531 -1962 2625 1959 2773 1960 2920 1964 3068 545 3126 1965 3183 1961 3241 1972 3361 1967 3527 1968 3672 -1969 3818 1970 3965 1974 4112 549 4171 1971 4229 1976 4323 1978 4441 1975 4499 1984 4593 1979 4759 -1980 4904 1981 5047 1982 5193 1986 5337 553 5396 1983 5454 1989 5548 1987 5687 1991 5832 557 5890 -1988 5947 1993 6067 1995 6185 561 6244 1992 6302 1999 6396 1996 6544 1997 6689 2001 6836 565 6894 -1998 6951 2004 7045 2006 7163 569 7222 2003 7280 2011 7374 2007 7522 2008 7671 2013 7816 573 7874 -2014 7931 2015 7989 2016 8047 2017 8105 2010 8163 2022 8310 2009 8476 2018 8623 2019 8767 2020 8911 -2024 9056 2021 9115 2027 9262 2025 9401 2029 9545 2026 9603 2037 9710 2030 9903 2040 10079 2031 10254 -% 1927 0 obj +/First 974 +/Length 11124 +>> +stream +1931 0 1926 59 1935 154 1933 293 1937 438 525 496 1938 553 1939 610 1934 668 1943 763 +1941 902 1945 1045 529 1104 1946 1162 1947 1220 1942 1279 1950 1374 1948 1513 1952 1658 533 1716 +1953 1773 1954 1831 1949 1889 1957 2012 1955 2151 1959 2293 537 2352 1960 2410 1961 2469 1956 2528 +1963 2651 1965 2769 1962 2827 1967 2910 1969 3028 541 3087 1966 3145 1974 3240 1970 3397 1971 3544 +1972 3692 1976 3838 545 3896 1977 3953 1973 4011 1986 4119 1980 4285 1981 4432 1982 4579 1983 4727 +1988 4874 549 4933 1985 4991 1990 5099 1984 5238 1992 5401 1979 5459 1989 5518 1999 5628 1994 5794 +1995 5939 1996 6086 1997 6233 2001 6380 553 6439 1998 6497 2003 6592 2005 6710 2002 6768 2011 6863 +2006 7029 2007 7174 2008 7317 2009 7463 2013 7607 557 7666 2010 7724 2016 7819 2014 7958 2018 8103 +561 8161 2015 8218 2021 8340 2023 8458 565 8517 2020 8575 2027 8670 2024 8818 2025 8963 2029 9110 +569 9168 2026 9225 2031 9320 2033 9438 573 9497 2030 9555 2038 9650 2034 9798 2035 9947 2040 10092 +% 1931 0 obj << -/D [1923 0 R /XYZ 99.895 679.195 null] +/D [1927 0 R /XYZ 150.705 679.195 null] >> -% 1922 0 obj +% 1926 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1932 0 obj +% 1935 0 obj << /Type /Page -/Contents 1933 0 R -/Resources 1931 0 R +/Contents 1936 0 R +/Resources 1934 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1930 0 R ] +/Parent 1940 0 R +/Annots [ 1933 0 R ] >> -% 1930 0 obj +% 1933 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [352.526 426.323 428.58 438.383] -/A << /S /GoTo /D (vdata) >> +/Rect [291.943 438.278 369.462 450.338] +/A << /S /GoTo /D (spdata) >> +>> +% 1937 0 obj +<< +/D [1935 0 R /XYZ 98.895 753.953 null] +>> +% 525 0 obj +<< +/D [1935 0 R /XYZ 99.895 716.092 null] +>> +% 1938 0 obj +<< +/D [1935 0 R /XYZ 99.895 678.98 null] +>> +% 1939 0 obj +<< +/D [1935 0 R /XYZ 99.895 679.195 null] >> % 1934 0 obj << -/D [1932 0 R /XYZ 149.705 753.953 null] +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 1943 0 obj +<< +/Type /Page +/Contents 1944 0 R +/Resources 1942 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1940 0 R +/Annots [ 1941 0 R ] +>> +% 1941 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.77 426.323 428.824 438.383] +/A << /S /GoTo /D (vdata) >> +>> +% 1945 0 obj +<< +/D [1943 0 R /XYZ 149.705 753.953 null] >> % 529 0 obj << -/D [1932 0 R /XYZ 150.705 716.092 null] +/D [1943 0 R /XYZ 150.705 716.092 null] >> -% 1935 0 obj +% 1946 0 obj << -/D [1932 0 R /XYZ 150.705 678.98 null] +/D [1943 0 R /XYZ 150.705 678.98 null] >> -% 1936 0 obj +% 1947 0 obj << -/D [1932 0 R /XYZ 150.705 679.195 null] +/D [1943 0 R /XYZ 150.705 679.195 null] >> -% 1931 0 obj +% 1942 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1939 0 obj +% 1950 0 obj << /Type /Page -/Contents 1940 0 R -/Resources 1938 0 R +/Contents 1951 0 R +/Resources 1949 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1937 0 R ] +/Parent 1940 0 R +/Annots [ 1948 0 R ] >> -% 1937 0 obj +% 1948 0 obj << /Type /Annot /Subtype /Link @@ -27830,121 +28086,121 @@ stream /Rect [291.943 574.778 369.462 586.838] /A << /S /GoTo /D (spdata) >> >> -% 1941 0 obj +% 1952 0 obj << -/D [1939 0 R /XYZ 98.895 753.953 null] +/D [1950 0 R /XYZ 98.895 753.953 null] >> % 533 0 obj << -/D [1939 0 R /XYZ 99.895 716.092 null] +/D [1950 0 R /XYZ 99.895 716.092 null] >> -% 1942 0 obj +% 1953 0 obj << -/D [1939 0 R /XYZ 99.895 679.441 null] +/D [1950 0 R /XYZ 99.895 679.441 null] >> -% 1943 0 obj +% 1954 0 obj << -/D [1939 0 R /XYZ 99.895 679.657 null] +/D [1950 0 R /XYZ 99.895 679.657 null] >> -% 1938 0 obj +% 1949 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F102 1016 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1946 0 obj +% 1957 0 obj << /Type /Page -/Contents 1947 0 R -/Resources 1945 0 R +/Contents 1958 0 R +/Resources 1956 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R -/Annots [ 1944 0 R ] +/Parent 1940 0 R +/Annots [ 1955 0 R ] >> -% 1944 0 obj +% 1955 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [452.361 574.59 528.415 586.65] +/Rect [447.024 574.59 523.079 586.65] /A << /S /GoTo /D (vdata) >> >> -% 1948 0 obj +% 1959 0 obj << -/D [1946 0 R /XYZ 149.705 753.953 null] +/D [1957 0 R /XYZ 149.705 753.953 null] >> % 537 0 obj << -/D [1946 0 R /XYZ 150.705 716.092 null] +/D [1957 0 R /XYZ 150.705 716.092 null] >> -% 1949 0 obj +% 1960 0 obj << -/D [1946 0 R /XYZ 150.705 679.413 null] +/D [1957 0 R /XYZ 150.705 679.413 null] >> -% 1950 0 obj +% 1961 0 obj << -/D [1946 0 R /XYZ 150.705 679.628 null] +/D [1957 0 R /XYZ 150.705 679.628 null] >> -% 1945 0 obj +% 1956 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F102 1016 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> /ProcSet [ /PDF /Text ] >> -% 1952 0 obj +% 1963 0 obj << /Type /Page -/Contents 1953 0 R -/Resources 1951 0 R +/Contents 1964 0 R +/Resources 1962 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R +/Parent 1940 0 R >> -% 1954 0 obj +% 1965 0 obj << -/D [1952 0 R /XYZ 98.895 753.953 null] +/D [1963 0 R /XYZ 98.895 753.953 null] >> -% 1951 0 obj +% 1962 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1956 0 obj +% 1967 0 obj << /Type /Page -/Contents 1957 0 R -/Resources 1955 0 R +/Contents 1968 0 R +/Resources 1966 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1928 0 R +/Parent 1940 0 R >> -% 1958 0 obj +% 1969 0 obj << -/D [1956 0 R /XYZ 149.705 753.953 null] +/D [1967 0 R /XYZ 149.705 753.953 null] >> % 541 0 obj << -/D [1956 0 R /XYZ 150.705 716.092 null] +/D [1967 0 R /XYZ 150.705 716.092 null] >> -% 1955 0 obj +% 1966 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1962 0 obj +% 1974 0 obj << /Type /Page -/Contents 1963 0 R -/Resources 1961 0 R +/Contents 1975 0 R +/Resources 1973 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1959 0 R 1960 0 R ] +/Parent 1978 0 R +/Annots [ 1970 0 R 1971 0 R 1972 0 R ] >> -% 1959 0 obj +% 1970 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 442.264 387.374 454.323] +/Rect [320.317 442.264 392.605 454.323] /A << /S /GoTo /D (precdata) >> >> -% 1960 0 obj +% 1971 0 obj << /Type /Annot /Subtype /Link @@ -27952,902 +28208,1002 @@ stream /Rect [171.257 352.6 177.533 366.303] /A << /S /GoTo /D (Hfootnote.4) >> >> -% 1964 0 obj +% 1972 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.51 235.698 182.465 245.108] +/A << /S /GoTo /D (table.21) >> +>> +% 1976 0 obj << -/D [1962 0 R /XYZ 98.895 753.953 null] +/D [1974 0 R /XYZ 98.895 753.953 null] >> % 545 0 obj << -/D [1962 0 R /XYZ 99.895 716.092 null] +/D [1974 0 R /XYZ 99.895 716.092 null] >> -% 1965 0 obj +% 1977 0 obj << -/D [1962 0 R /XYZ 114.242 129.79 null] +/D [1974 0 R /XYZ 114.242 129.79 null] >> -% 1961 0 obj +% 1973 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1972 0 obj +% 1986 0 obj << /Type /Page -/Contents 1973 0 R -/Resources 1971 0 R +/Contents 1987 0 R +/Resources 1985 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1967 0 R 1968 0 R 1969 0 R 1970 0 R ] +/Parent 1978 0 R +/Annots [ 1980 0 R 1981 0 R 1982 0 R 1983 0 R ] >> -% 1967 0 obj +% 1980 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [365.487 576.377 443.006 588.437] -/A << /S /GoTo /D (spdata) >> +/Rect [334.168 567.422 346.124 580.259] +/A << /S /GoTo /D (table.21) >> >> -% 1968 0 obj +% 1981 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [451.902 505.741 518.96 517.801] -/A << /S /GoTo /D (precdata) >> +/Rect [416.947 520.379 429.101 532.438] +/A << /S /GoTo /D (table.21) >> >> -% 1969 0 obj +% 1982 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [422.264 435.105 489.322 447.165] -/A << /S /GoTo /D (descdata) >> +/Rect [430.128 483.736 437.102 496.573] +/A << /S /GoTo /D (section.8) >> >> -% 1970 0 obj +% 1983 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.227 128.475 435.285 140.535] -/A << /S /GoTo /D (precdata) >> +/Rect [187.566 451.412 199.521 460.822] +/A << /S /GoTo /D (table.21) >> >> -% 1974 0 obj +% 1988 0 obj << -/D [1972 0 R /XYZ 149.705 753.953 null] +/D [1986 0 R /XYZ 149.705 753.953 null] >> % 549 0 obj << -/D [1972 0 R /XYZ 150.705 716.092 null] +/D [1986 0 R /XYZ 150.705 716.092 null] >> -% 1971 0 obj +% 1985 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R >> /ProcSet [ /PDF /Text ] >> -% 1976 0 obj +% 1990 0 obj << /Type /Page -/Contents 1977 0 R -/Resources 1975 0 R +/Contents 1991 0 R +/Resources 1989 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R +/Parent 1978 0 R +/Annots [ 1984 0 R ] >> -% 1978 0 obj +% 1984 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [181.889 616.012 190.059 623.484] +/A << /S /GoTo /D (cite.BERTACCINIFILIPPONE) >> +>> +% 1992 0 obj +<< +/D [1990 0 R /XYZ 98.895 753.953 null] +>> +% 1979 0 obj << -/D [1976 0 R /XYZ 98.895 753.953 null] +/D [1990 0 R /XYZ 418.648 120.326 null] >> -% 1975 0 obj +% 1989 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> /ProcSet [ /PDF /Text ] >> -% 1984 0 obj +% 1999 0 obj << /Type /Page -/Contents 1985 0 R -/Resources 1983 0 R +/Contents 2000 0 R +/Resources 1998 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1979 0 R 1980 0 R 1981 0 R 1982 0 R ] +/Parent 1978 0 R +/Annots [ 1994 0 R 1995 0 R 1996 0 R 1997 0 R ] >> -% 1979 0 obj +% 1994 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.126 573.77 438.184 585.83] -/A << /S /GoTo /D (precdata) >> +/Rect [365.487 576.377 443.006 588.437] +/A << /S /GoTo /D (spdata) >> >> -% 1980 0 obj +% 1995 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 517.98 469.357 530.039] -/A << /S /GoTo /D (vdata) >> +/Rect [446.665 505.741 518.953 517.801] +/A << /S /GoTo /D (precdata) >> >> -% 1981 0 obj +% 1996 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.822 462.189 441.88 474.248] +/Rect [422.264 435.105 489.322 447.165] /A << /S /GoTo /D (descdata) >> >> -% 1982 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 272.899 469.357 284.958] -/A << /S /GoTo /D (vdata) >> ->> -% 1986 0 obj -<< -/D [1984 0 R /XYZ 149.705 753.953 null] ->> -% 553 0 obj -<< -/D [1984 0 R /XYZ 150.705 716.092 null] ->> -% 1983 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 1989 0 obj -<< -/Type /Page -/Contents 1990 0 R -/Resources 1988 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R -/Annots [ 1987 0 R ] ->> -% 1987 0 obj +% 1997 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 573.77 387.374 585.83] +/Rect [368.227 128.475 440.515 140.535] /A << /S /GoTo /D (precdata) >> >> -% 1991 0 obj +% 2001 0 obj << -/D [1989 0 R /XYZ 98.895 753.953 null] +/D [1999 0 R /XYZ 149.705 753.953 null] >> -% 557 0 obj +% 553 0 obj << -/D [1989 0 R /XYZ 99.895 716.092 null] +/D [1999 0 R /XYZ 150.705 716.092 null] >> -% 1988 0 obj +% 1998 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R /F60 666 0 R /F91 914 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 1993 0 obj +% 2003 0 obj << /Type /Page -/Contents 1994 0 R -/Resources 1992 0 R +/Contents 2004 0 R +/Resources 2002 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1966 0 R ->> -% 1995 0 obj -<< -/D [1993 0 R /XYZ 149.705 753.953 null] +/Parent 1978 0 R >> -% 561 0 obj +% 2005 0 obj << -/D [1993 0 R /XYZ 150.705 716.092 null] +/D [2003 0 R /XYZ 98.895 753.953 null] >> -% 1992 0 obj +% 2002 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 1999 0 obj +% 2011 0 obj << /Type /Page -/Contents 2000 0 R -/Resources 1998 0 R +/Contents 2012 0 R +/Resources 2010 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 1996 0 R 1997 0 R ] +/Parent 1978 0 R +/Annots [ 2006 0 R 2007 0 R 2008 0 R 2009 0 R ] >> -% 1996 0 obj +% 2006 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 573.77 387.374 585.83] +/Rect [371.126 573.77 443.414 585.83] /A << /S /GoTo /D (precdata) >> >> -% 1997 0 obj +% 2007 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.317 498.054 387.374 510.114] -/A << /S /GoTo /D (precdata) >> ->> -% 2001 0 obj -<< -/D [1999 0 R /XYZ 98.895 753.953 null] ->> -% 565 0 obj -<< -/D [1999 0 R /XYZ 99.895 716.092 null] +/Rect [393.303 517.98 469.357 530.039] +/A << /S /GoTo /D (vdata) >> >> -% 1998 0 obj +% 2008 0 obj << -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.822 462.189 441.88 474.248] +/A << /S /GoTo /D (descdata) >> >> -% 2004 0 obj +% 2009 0 obj << -/Type /Page -/Contents 2005 0 R -/Resources 2003 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.303 272.899 469.357 284.958] +/A << /S /GoTo /D (vdata) >> >> -% 2006 0 obj +% 2013 0 obj << -/D [2004 0 R /XYZ 149.705 753.953 null] +/D [2011 0 R /XYZ 149.705 753.953 null] >> -% 569 0 obj +% 557 0 obj << -/D [2004 0 R /XYZ 150.705 716.092 null] +/D [2011 0 R /XYZ 150.705 716.092 null] >> -% 2003 0 obj +% 2010 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2011 0 obj +% 2016 0 obj << /Type /Page -/Contents 2012 0 R -/Resources 2010 0 R +/Contents 2017 0 R +/Resources 2015 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2007 0 R 2008 0 R ] ->> -% 2007 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.163 275.278 335.44 288.868] -/A << /S /GoTo /D (Hfootnote.5) >> +/Parent 2019 0 R +/Annots [ 2014 0 R ] >> -% 2008 0 obj +% 2014 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.943 134.696 369.462 146.755] -/A << /S /GoTo /D (spdata) >> +/Rect [320.317 573.77 392.605 585.83] +/A << /S /GoTo /D (precdata) >> >> -% 2013 0 obj +% 2018 0 obj << -/D [2011 0 R /XYZ 98.895 753.953 null] +/D [2016 0 R /XYZ 98.895 753.953 null] >> -% 573 0 obj +% 561 0 obj << -/D [2011 0 R /XYZ 99.895 716.092 null] +/D [2016 0 R /XYZ 99.895 716.092 null] >> -% 2014 0 obj +% 2015 0 obj << -/D [2011 0 R /XYZ 99.895 444.811 null] +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R /F78 674 0 R /F179 922 0 R >> +/ProcSet [ /PDF /Text ] >> -% 2015 0 obj +% 2021 0 obj << -/D [2011 0 R /XYZ 99.895 444.971 null] +/Type /Page +/Contents 2022 0 R +/Resources 2020 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2019 0 R >> -% 2016 0 obj +% 2023 0 obj << -/D [2011 0 R /XYZ 99.895 433.015 null] +/D [2021 0 R /XYZ 149.705 753.953 null] >> -% 2017 0 obj +% 565 0 obj << -/D [2011 0 R /XYZ 114.242 129.79 null] +/D [2021 0 R /XYZ 150.705 716.092 null] >> -% 2010 0 obj +% 2020 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F69 1460 0 R /F67 913 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2022 0 obj +% 2027 0 obj << /Type /Page -/Contents 2023 0 R -/Resources 2021 0 R +/Contents 2028 0 R +/Resources 2026 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2009 0 R 2018 0 R 2019 0 R 2020 0 R ] +/Parent 2019 0 R +/Annots [ 2024 0 R 2025 0 R ] >> -% 2009 0 obj +% 2024 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 654.503 409.811 666.562] +/Rect [320.317 573.77 392.605 585.83] /A << /S /GoTo /D (precdata) >> >> -% 2018 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 584.479 469.357 596.539] -/A << /S /GoTo /D (vdata) >> ->> -% 2019 0 obj +% 2025 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.303 514.456 469.357 526.516] -/A << /S /GoTo /D (vdata) >> +/Rect [320.317 498.054 392.605 510.114] +/A << /S /GoTo /D (precdata) >> >> -% 2020 0 obj +% 2029 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.753 374.41 409.811 386.47] -/A << /S /GoTo /D (descdata) >> +/D [2027 0 R /XYZ 98.895 753.953 null] >> -% 2024 0 obj +% 569 0 obj << -/D [2022 0 R /XYZ 149.705 753.953 null] +/D [2027 0 R /XYZ 99.895 716.092 null] >> -% 2021 0 obj +% 2026 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F69 1460 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2027 0 obj +% 2031 0 obj << /Type /Page -/Contents 2028 0 R -/Resources 2026 0 R +/Contents 2032 0 R +/Resources 2030 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2025 0 R ] +/Parent 2019 0 R >> -% 2025 0 obj +% 2033 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.493 554.876 418.548 566.936] -/A << /S /GoTo /D (vdata) >> +/D [2031 0 R /XYZ 149.705 753.953 null] >> -% 2029 0 obj +% 573 0 obj << -/D [2027 0 R /XYZ 98.895 753.953 null] +/D [2031 0 R /XYZ 150.705 716.092 null] >> -% 2026 0 obj +% 2030 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R >> +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> /ProcSet [ /PDF /Text ] >> -% 2037 0 obj +% 2038 0 obj << /Type /Page -/Contents 2038 0 R -/Resources 2036 0 R +/Contents 2039 0 R +/Resources 2037 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2002 0 R -/Annots [ 2030 0 R 2040 0 R 2031 0 R 2032 0 R 2033 0 R 2034 0 R 2035 0 R ] +/Parent 2019 0 R +/Annots [ 2034 0 R 2035 0 R ] >> -% 2030 0 obj +% 2034 0 obj << /Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [367.891 636.522 495.412 648.582] -/Subtype/Link/A<> +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [329.163 275.278 335.44 288.868] +/A << /S /GoTo /D (Hfootnote.5) >> >> -% 2040 0 obj +% 2035 0 obj << /Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [174.615 624.567 218.45 636.627] -/Subtype/Link/A<> +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 134.696 369.462 146.755] +/A << /S /GoTo /D (spdata) >> >> -% 2031 0 obj +% 2040 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [191.223 593.098 397.198 605.158] -/Subtype/Link/A<> +/D [2038 0 R /XYZ 98.895 753.953 null] >> endstream endobj -2053 0 obj +2051 0 obj << -/Length 8663 +/Length 7179 >> stream 0 g 0 G 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -q -1 0 0 1 99.895 421.197 cm -0 0 343.711 290.909 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG BT -/F120 8.9664 Tf 112.299 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ +/F75 9.9626 Tf 150.705 706.129 Td [(prec)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.866 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 658.308 Td [(Tprec)]TJ +ET +q +1 0 0 1 389.985 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 393.124 658.308 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -10.958 Td [(call)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - [-525(gen_matrix\050ctxt,)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [(idim)]TJ +/F75 9.9626 Tf -263.34 -22.202 Td [(b)]TJ 0 g 0 G - [(,desc_a,a,x,info\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.687 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 588.484 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 413.756 588.285 Td [(T)]TJ +ET +q +1 0 0 1 419.614 588.484 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.752 588.285 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 588.484 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 447.439 588.285 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(if)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -317.656 -22.202 Td [(x)]TJ 0 g 0 G - [-525(\050info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.252 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(inout)]TJ/F84 9.9626 Tf 24.348 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 518.461 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 413.756 518.262 Td [(T)]TJ +ET +q +1 0 0 1 419.614 518.461 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.752 518.262 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 518.461 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 447.439 518.262 Td [(type)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(/=)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -317.656 -22.203 Td [(eps)]TJ 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(0)]TJ +/F84 9.9626 Tf 20.164 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(goto)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(9999)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(call)]TJ -0 g 0 G - [-525(a%cscnv\050agpu,info,mold)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(aelg\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(/=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(0)]TJ -0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(goto)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(9999)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - 0 -10.959 Td [(xtmp)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(x%get_vect\050\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ -0 g 0 G - [-525(xg%bld\050xtmp,mold)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(vmold\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ -0 g 0 G - [-525(bg%bld\050size\050xtmp\051,mold)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ -0 g 0 G - [(vmold\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 0 -21.918 Td [(!)-525(Do)-525(sparse)-525(MV)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -10.958 Td [(call)]TJ -0 g 0 G - [-525(psb_spmm\050done,agpu,xg,dzero,bg,desc_a,info\051)]TJ -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - -9.415 -32.877 Td [(9999)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(continue)]TJ -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.959 Td [(if)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(\050info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(==)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(0)]TJ +/F75 9.9626 Tf -24.906 -22.203 Td [(desc)]TJ +ET +q +1 0 0 1 171.218 426.236 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 174.207 426.036 Td [(a)]TJ 0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.962 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 378.415 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 378.216 Td [(desc)]TJ +ET +q +1 0 0 1 384.755 378.415 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 387.893 378.216 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(then)]TJ +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 14.122 -10.959 Td [(write)]TJ +/F75 9.9626 Tf -258.11 -22.203 Td [(itmax)]TJ 0 g 0 G - [(\050)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ +/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.221 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.744 0 Td [(=)]TJ/F84 9.9626 Tf 10.961 0 Td [(1000.)]TJ -77.275 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.35 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.743 0 Td [(\025)]TJ/F84 9.9626 Tf 10.962 0 Td [(1.)]TJ 0 g 0 G - [(,)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ +/F75 9.9626 Tf -205.961 -22.202 Td [(itrace)]TJ 0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 0.98 0 0 1 180.583 274.035 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 189.481 274.035 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 200.443 274.035 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 470.511 274.035 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ 0 g 0 G -0.25 0.44 0.63 rg 0.25 0.44 0.63 RG - [-525(\01542\015)]TJ +/F75 9.9626 Tf -109.553 -34.158 Td [(irst)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 19.526 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(r)18(estart)-250(parameter)74(.)]TJ 5.38 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.253 132.281 Tm [(V)90(alues:)]TJ/F78 9.9626 Tf 1 0 0 1 213.338 132.281 Tm [(i)-22(r)-35(s)-25(t)]TJ/F134 10.3811 Tf 20.115 0 Td [(>)]TJ/F84 9.9626 Tf 1.02 0 0 1 246.858 132.281 Tm [(0.)-694(This)-375(i)1(s)-375(employed)-375(for)-375(the)-375(BiCGST)72(ABL)-375(or)-375(RG)1(MRES)]TJ 1 0 0 1 175.611 120.326 Tm [(methods,)-250(otherwise)-250(it)-250(is)-250(ignor)18(ed.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(else)]TJ + 139.477 -29.888 Td [(162)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 14.122 -10.959 Td [(write)]TJ +ET + +endstream +endobj +2056 0 obj +<< +/Length 4581 +>> +stream 0 g 0 G - [(\050)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ 0 g 0 G - [(,)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ 0 g 0 G - [(\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +BT +/F75 9.9626 Tf 99.895 706.129 Td [(istop)]TJ 0 g 0 G -0.25 0.44 0.63 rg 0.25 0.44 0.63 RG - [-525(\015Something)-525(went)-525(wrong)-525(\015)]TJ +/F84 9.9626 Tf 27.278 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.012 0 0 1 124.443 658.308 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-248(err)18(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 124.802 646.353 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ 0 g 0 G - [(,info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -24.907 -19.925 Td [(On)-250(Return)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(if)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -32.876 Td [(call)]TJ + 0 -19.926 Td [(x)]TJ 0 g 0 G - [-525(psb_cuda_exit\050\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 558.881 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.947 558.682 Td [(T)]TJ +ET +q +1 0 0 1 368.804 558.881 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 371.943 558.682 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 558.881 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 396.63 558.682 Td [(type)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(call)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - [-525(psb_exit\050ctxt\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F75 9.9626 Tf -317.656 -19.925 Td [(iter)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(stop)]TJ +/F84 9.9626 Tf 20.165 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(program)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(err)]TJ 0 g 0 G - [-525(my_cuda_test)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +/F84 9.9626 Tf 17.405 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ 0 g 0 G -/F62 9.9626 Tf 11.955 -24.283 Td [(A)-378(full)-379(example)-378(of)-379(this)-378(strategy)-379(can)-378(be)-378(seen)-379(in)-378(the)]TJ/F67 9.9626 Tf 229.675 0 Td [(test/ext/kernel)]TJ/F62 9.9626 Tf 82.226 0 Td [(and)]TJ/F67 9.9626 Tf -326.845 -11.955 Td [(test/cuda/kernel)]TJ/F62 9.9626 Tf 86.402 0 Td [(subdir)18(ectories,)-278(wher)18(e)-273(we)-272(pr)18(ovide)-273(sample)-272(pr)18(ograms)-273(to)-273(test)]TJ -86.402 -11.955 Td [(the)-259(speed)-259(of)-259(the)-259(sparse)-259(matrix-vector)-259(pr)18(oduct)-259(with)-259(the)-259(various)-259(data)-259(str)8(uctur)18(es)]TJ 0 -11.956 Td [(included)-250(in)-250(the)-250(library)111(.)]TJ/F59 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F62 9.9626 Tf 0 -18.999 Td [(Access)-232(to)-233(the)-232(facilities)-232(pr)18(ovided)-233(by)-232(the)-232(EXT)-233(library)-232(is)-233(mainly)-232(achieved)-232(thr)18(ough)]TJ 0 -11.955 Td [(the)-384(data)-385(types)-384(that)-384(ar)18(e)-385(pr)18(ovi)1(ded)-385(within.)-713(The)-384(data)-384(classes)-385(ar)18(e)-384(derived)-384(fr)18(om)]TJ 0 -11.955 Td [(the)-247(base)-247(classes)-248(in)-247(PSBLAS,)-247(thr)18(ough)-247(the)-247(Fortran)-247(2003)-248(mechanism)-247(of)]TJ/F60 9.9626 Tf 299.187 0 Td [(type)-247(exten-)]TJ -299.187 -11.956 Td [(sion)]TJ/F62 9.9626 Tf 19.098 0 Td [([)]TJ -1 0 0 rg 1 0 0 RG - [(17)]TJ +/F75 9.9626 Tf -24.907 -19.925 Td [(cond)]TJ 0 g 0 G - [(].)]TJ -4.154 -11.973 Td [(The)-255(data)-255(classes)-255(ar)18(e)-254(divided)-255(between)-255(the)-255(general)-255(purpose)-254(CPU)-255(extensions,)]TJ -14.944 -11.955 Td [(the)-232(GPU)-232(interfaces)-232(and)-232(the)-232(RSB)-232(interfaces.)-304(In)-232(the)-232(description)-232(we)-232(will)-232(make)-232(use)]TJ 0 -11.955 Td [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ -0 0 1 rg 0 0 1 RG - [-250(21)]TJ +/F84 9.9626 Tf 0.985 0 0 1 126.625 403.265 Tm [(An)-253(estimate)-254(of)-253(the)-253(condition)-253(number)-254(of)-253(matrix)]TJ/F78 9.9626 Tf 1 0 0 1 331.992 403.265 Tm [(A)]TJ/F84 9.9626 Tf 0.985 0 0 1 339.309 403.265 Tm [(;)-254(only)-253(available)-253(with)-253(the)]TJ/F78 9.9626 Tf 1 0 0 1 124.887 391.309 Tm [(C)-45(G)]TJ/F84 9.9626 Tf 17.001 0 Td [(method)-250(on)-250(r)18(eal)-250(data.)]TJ -17.086 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-249(as:)-310(a)-249(r)18(eal)-249(number)74(.)-310(A)-249(corr)18(ect)-250(r)18(esult)-249(will)-249(be)-249(gr)18(eater)-250(than)-249(or)-249(equal)]TJ 0.98 0 0 1 124.802 331.534 Tm [(to)-255(one;)-255(if)-255(s)1(peci\002ed)-255(for)-255(non-r)18(eal)-254(data,)-255(or)-255(an)-255(err)18(or)-254(occurr)18(ed,)-255(zer)18(o)-254(is)-255(r)18(eturned.)]TJ 0 g 0 G - [(.)]TJ/F59 11.9552 Tf 0 -29.238 Td [(12.3)-1000(CPU-class)-250(extensions)]TJ/F59 9.9626 Tf 0 -19 Td [(ELLP)74(ACK)]TJ/F62 9.9626 Tf 0 -18.999 Td [(The)-190(ELLP)92(ACK/ITP)92(ACK)-190(format)-190(\050shown)-190(in)-190(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-190(6)]TJ +/F75 9.9626 Tf 1 0 0 1 99.895 311.608 Tm [(info)]TJ 0 g 0 G - [(\051)-190(comprises)-190(two)-190(2-dimensional)]TJ 0 -11.956 Td [(arrays)]TJ/F67 9.9626 Tf 30.302 0 Td [(AS)]TJ/F62 9.9626 Tf 13.165 0 Td [(and)]TJ/F67 9.9626 Tf 19.571 0 Td [(JA)]TJ/F62 9.9626 Tf 13.166 0 Td [(with)]TJ/F67 9.9626 Tf 22.958 0 Td [(M)]TJ/F62 9.9626 Tf 7.935 0 Td [(r)18(ows)-272(and)]TJ/F67 9.9626 Tf 44.005 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.087 0 Td [(columns,)-277(wher)18(e)]TJ/F67 9.9626 Tf 72.949 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 34.087 0 Td [(is)-272(th)1(e)-272(maxi-)]TJ -292.225 -11.955 Td [(mum)-211(number)-211(of)-212(nonzer)18(os)-211(in)-211(any)-211(r)18(ow)-211([)]TJ/F59 9.9626 Tf 167.954 0 Td [(?)]TJ/F62 9.9626 Tf 4.424 0 Td [(].)-297(Each)-211(r)18(ow)-211(of)-212(the)-211(arrays)]TJ/F67 9.9626 Tf 108.255 0 Td [(AS)]TJ/F62 9.9626 Tf 12.564 0 Td [(and)]TJ/F67 9.9626 Tf 18.971 0 Td [(JA)]TJ/F62 9.9626 Tf 12.565 0 Td [(con-)]TJ -324.733 -11.955 Td [(tains)-218(the)-217(coef)18(\002cients)-218(and)-217(column)-218(indices;)-228(r)18(ows)-218(shorter)-217(than)]TJ/F67 9.9626 Tf 260.483 0 Td [(MAXNZR)]TJ/F62 9.9626 Tf 33.549 0 Td [(ar)18(e)-218(padded)]TJ -294.032 -11.955 Td [(with)-315(zer)18(o)-315(coef)18(\002cients)-315(and)-315(appr)18(opriate)-315(column)-315(indices,)-331(e.g.)-505(the)-315(last)-315(valid)-315(one)]TJ 0 -11.955 Td [(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ +/F84 9.9626 Tf 23.801 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ 0 g 0 G - 164.384 -29.888 Td [(163)]TJ + 139.866 -173.35 Td [(163)]TJ 0 g 0 G ET endstream endobj -2063 0 obj +2065 0 obj << -/Length 4574 +/Length 8762 >> stream 0 g 0 G 0 g 0 G -0 g 0 G -0 g 0 G BT -/F62 9.9626 Tf 189.471 698.871 Td [(T)92(able)-250(21:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ -0 g 0 G -0 g 0 G -0 g 0 G +/F75 11.9552 Tf 150.705 706.129 Td [(11.2)-1000(psb)]TJ ET q -1 0 0 1 222.652 684.904 cm -[]0 d 0 J 0.398 w 0 0 m 199.817 0 l S +1 0 0 1 204.216 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q BT -/F62 7.9701 Tf 228.629 678.079 Td [(Name)-3364(Description)]TJ +/F75 11.9552 Tf 207.803 706.129 Td [(richardson)-250(\227)-250(Richardson)-250(Iteration)-250(Driver)-250(Routine)]TJ/F84 9.9626 Tf -57.407 -19.209 Td [(This)-250(subr)18(outine)-250(is)-250(a)-250(driver)-250(implementig)-250(a)-250(Richar)18(dson)-250(iteration)]TJ/F78 9.9626 Tf 111.158 -22.171 Td [(x)]TJ/F78 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F181 7.8896 Tf 3.589 0 Td [(+)]TJ/F84 7.5716 Tf 6.227 0 Td [(1)]TJ/F181 10.3811 Tf 7.176 2.085 Td [(=)]TJ/F78 9.9626 Tf 11.535 0 Td [(M)]TJ/F179 7.8896 Tf 9.673 4.115 Td [(\000)]TJ/F84 9.9626 Tf 6.726 -4.115 Td [(1)]TJ/F181 10.3811 Tf 5.106 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(b)]TJ/F179 10.3811 Tf 6.799 0 Td [(\000)]TJ/F78 9.9626 Tf 10.754 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.811 -2.085 Td [(k)]TJ/F181 10.3811 Tf 4.117 2.085 Td [(\051)-209(+)]TJ/F78 9.9626 Tf 16.637 0 Td [(x)]TJ/F78 7.5716 Tf 5.2 -2.085 Td [(k)]TJ/F84 9.9626 Tf 3.992 2.085 Td [(,)]TJ -231.084 -22.17 Td [(with)-250(the)-250(pr)18(econditioner)-250(operator)]TJ/F78 9.9626 Tf 147.6 0 Td [(M)]TJ/F84 9.9626 Tf 12.07 0 Td [(de\002ned)-250(in)-250(the)-250(pr)18(evious)-250(section.)]TJ -144.307 -12.082 Td [(The)-250(stopping)-250(criterion)-250(can)-250(take)-250(the)-250(following)-250(values:)]TJ +0 g 0 G +/F75 9.9626 Tf -14.944 -20.304 Td [(1)]TJ +0 g 0 G +/F84 9.9626 Tf 0.99 0 0 1 160.667 610.193 Tm [(normwise)-253(backwar)19(d)-253(err)18(or)-252(in)-253(the)-252(in\002nity)-253(norm;)-252(the)-253(iteration)-252(is)-253(stopped)-252(when)]TJ/F78 9.9626 Tf 1 0 0 1 269.703 581.636 Tm [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 40.619 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 222.652 675.041 cm -[]0 d 0 J 0.398 w 0 0 m 199.817 0 l S +1 0 0 1 297.001 584.127 cm +[]0 d 0 J 0.398 w 0 0 m 74.372 0 l S Q BT -/F62 7.9701 Tf 228.629 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ +/F181 10.3811 Tf 297.125 574.802 Td [(\050)]TJ/F179 10.3811 Tf 4.274 0 Td [(k)]TJ/F78 9.9626 Tf 5.938 0 Td [(A)]TJ/F179 10.3811 Tf 7.442 0 Td [(k)-24(k)]TJ/F78 9.9626 Tf 11.048 0 Td [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ/F181 10.3811 Tf 7.377 0 Td [(+)]TJ/F179 10.3811 Tf 10.255 0 Td [(k)]TJ/F78 9.9626 Tf 5.44 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F181 10.3811 Tf 5.439 0 Td [(\051)]TJ/F134 10.3811 Tf 8.237 6.834 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ +0 g 0 G +/F75 9.9626 Tf -235.841 -32.142 Td [(2)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(Relative)-250(r)18(esidual)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 136.209 -28.557 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.14 0 Td [(=)]TJ/F179 10.3811 Tf 13.446 6.745 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ ET q -1 0 0 1 222.652 551.604 cm -[]0 d 0 J 0.398 w 0 0 m 199.817 0 l S +1 0 0 1 324.174 523.428 cm +[]0 d 0 J 0.398 w 0 0 m 20.025 0 l S Q +BT +/F179 10.3811 Tf 324.299 514.103 Td [(k)]TJ/F78 9.9626 Tf 5.439 0 Td [(b)]TJ/F179 10.3811 Tf 4.862 0 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.578 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ 0 g 0 G +/F75 9.9626 Tf -208.667 -32.082 Td [(3)]TJ 0 g 0 G -1 0 0 1 247.614 396.819 cm +/F84 9.9626 Tf 9.962 0 Td [(Relative)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm;)-250(the)-250(iteration)-250(is)-250(stopped)-250(when)]TJ/F78 9.9626 Tf 134.486 -28.556 Td [(e)-15(r)-25(r)]TJ/F181 10.3811 Tf 15.141 0 Td [(=)]TJ/F179 10.3811 Tf 15.169 6.744 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F179 10.3811 Tf 2.875 1.96 Td [(k)]TJ +ET q -.33653 0 0 .33653 0 0 cm +1 0 0 1 322.451 462.789 cm +[]0 d 0 J 0.398 w 0 0 m 23.472 0 l S +Q +BT +/F179 10.3811 Tf 322.575 453.464 Td [(k)]TJ/F78 9.9626 Tf 5.34 0 Td [(r)]TJ/F84 7.5716 Tf 4 -1.744 Td [(0)]TJ/F179 10.3811 Tf 4.409 1.744 Td [(k)]TJ/F84 7.5716 Tf 5.315 -1.744 Td [(2)]TJ/F134 10.3811 Tf 8.371 8.579 Td [(<)]TJ/F78 9.9626 Tf 11.086 0 Td [(e)-80(p)-25(s)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 428.217 Tm [(The)-333(behaviour)-333(is)-333(contr)18(olled)-333(by)-333(the)-333(istop)-333(ar)18(gument)-333(\050see)-333(later\051.)-567(In)-333(the)-333(above)]TJ 0.98 0 0 1 150.705 416.261 Tm [(formulae,)]TJ/F78 9.9626 Tf 1 0 0 1 194.836 416.261 Tm [(x)]TJ/F78 7.5716 Tf 5.148 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 204.675 416.261 Tm [(is)-199(the)-199(tentative)-198(solution)-199(and)]TJ/F78 9.9626 Tf 1 0 0 1 324.514 416.261 Tm [(r)]TJ/F78 7.5716 Tf 4.042 -1.96 Td [(i)]TJ/F181 10.3811 Tf 5.642 1.96 Td [(=)]TJ/F78 9.9626 Tf 11.086 0 Td [(b)]TJ/F179 10.3811 Tf 6.29 0 Td [(\000)]TJ/F78 9.9626 Tf 10.245 0 Td [(A)-42(x)]TJ/F78 7.5716 Tf 12.759 -1.96 Td [(i)]TJ/F84 9.9626 Tf 0.98 0 0 1 379.269 416.261 Tm [(the)-199(corr)19(esponding)-199(r)18(esidual)]TJ 1 0 0 1 150.705 404.306 Tm [(at)-250(the)]TJ/F78 9.9626 Tf 27.083 0 Td [(i)]TJ/F84 9.9626 Tf 2.964 0 Td [(-th)-250(iteration.)]TJ -28.306 -18.185 Td [(c)-175(a)-175(l)-174(l)-888(p)-113(s)-113(b)]TJ +ET q -1 0 0 1 0 0 cm -/Im6 Do +1 0 0 1 201.407 386.32 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q +BT +/F84 9.9626 Tf 205.52 386.121 Td [(r)-113(i)-113(c)-112(h)-113(a)-113(r)-113(d)-113(s)-112(o)-113(n)-247(\050)-166(a)-242(,)-255(p)-80(r)-81(e)-80(c)-335(,)-191(b)-206(,)-203(x)-231(,)-234(e)-60(p)-59(s)-293(,)-273(d)-98(e)-97(s)-98(c)]TJ +ET +q +1 0 0 1 384.896 386.32 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q -0 g 0 G -1 0 0 1 -247.614 -396.819 cm BT -/F62 9.9626 Tf 245.769 374.901 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ +/F84 9.9626 Tf 388.859 386.121 Td [(a)-371(,)-283(i)-108(n)-108(f)-108(o)-273(,)-57(&)]TJ -209.153 -11.956 Td [(&)-580(i)-69(t)-69(m)-70(a)-69(x)-313(,)-327(i)-151(t)-152(e)-151(r)-478(,)-281(e)-107(r)-106(r)-387(,)-321(i)-145(t)-146(r)-146(a)-145(c)-146(e)-466(,)-311(i)-135(s)-135(t)-136(o)-135(p)-269(\051)]TJ 0 g 0 G 0 g 0 G - -80.12 -32.171 Td [(The)-289(matrix-vector)-289(pr)18(oduct)]TJ/F60 9.9626 Tf 120.156 0 Td [(y)]TJ/F93 10.3811 Tf 8.719 0 Td [(=)]TJ/F60 9.9626 Tf 12.305 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 15.697 0 Td [(can)-289(be)-289(computed)-289(with)-289(the)-289(code)-290(shown)]TJ -171.821 -11.956 Td [(in)-365(Alg.)]TJ -0 0 1 rg 0 0 1 RG - [-365(1)]TJ 0 g 0 G - [(;)-423(it)-365(costs)-365(one)-365(memory)-366(write)-365(per)-365(outer)-365(iteration,)-394(plus)-365(thr)18(ee)-365(memory)]TJ 0 -11.955 Td [(r)18(eads)-250(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 14.944 -11.955 Td [(Unless)-251(all)-252(r)18(ows)-251(have)-251(exactly)-251(the)-252(same)-251(number)-251(of)-252(nonzer)18(os,)-251(some)-252(of)-251(the)-251(co-)]TJ -14.944 -11.955 Td [(ef)18(\002cients)-225(in)-226(the)]TJ/F67 9.9626 Tf 68.551 0 Td [(AS)]TJ/F62 9.9626 Tf 12.705 0 Td [(array)-225(will)-226(be)-225(zer)18(os;)-233(ther)18(efor)18(e)-226(this)-225(data)-225(str)8(uctur)18(e)-225(will)-226(have)-225(an)]TJ -81.256 -11.955 Td [(over)18(head)-261(both)-261(in)-260(terms)-261(of)-261(memory)-261(space)-261(and)-261(r)18(edundant)-260(operations)-261(\050multipli-)]TJ 0 -11.956 Td [(cations)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ +/F75 9.9626 Tf -29.001 -28.653 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.431 Td [(On)-250(Entry)]TJ 0 g 0 G - 12.453 -19.399 Td [(1.)]TJ 0 g 0 G - [-500(The)-289(maximum)-289(number)-289(of)-289(nonzer)18(os)-289(per)-290(r)18(ow)-289(is)-289(not)-289(much)-289(lar)18(ger)-289(than)-289(the)]TJ 12.453 -11.956 Td [(average;)]TJ + 0 -20.431 Td [(a)]TJ 0 g 0 G - -12.453 -19.662 Td [(2.)]TJ +/F84 9.9626 Tf 9.962 0 Td [(the)-250(local)-250(portion)-250(of)-250(global)-250(sparse)-250(matrix)]TJ/F78 9.9626 Tf 178.414 0 Td [(A)]TJ/F84 9.9626 Tf 7.318 0 Td [(.)]TJ -170.788 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 257.028 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 256.829 Td [(Tspmat)]TJ +ET +q +1 0 0 1 395.216 257.028 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 398.354 256.829 Td [(type)]TJ 0 g 0 G - [-500(The)-273(r)18(egularity)-274(of)-273(the)-274(data)-273(str)8(uctur)18(e)-274(allows)-273(for)-274(faster)-273(code,)-279(e.g.)-381(by)-273(allow-)]TJ 12.453 -11.955 Td [(ing)-247(vectorization,)-247(ther)18(eby)-247(of)18(fsetting)-247(the)-247(additional)-246(storage)-247(r)18(equir)18(ements.)]TJ -24.906 -19.4 Td [(In)-372(the)-372(extr)18(eme)-372(case)-372(wher)18(e)-371(the)-372(input)-372(matrix)-372(has)-372(one)-372(full)-372(r)18(ow)92(,)-402(the)-372(ELLP)92(ACK)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-273(would)-273(r)18(equir)18(e)-273(mor)18(e)-273(memory)-273(than)-273(the)-273(normal)-273(2D)-273(array)-273(storage.)-379(The)]TJ 0 -11.956 Td [(ELLP)92(ACK)-305(storage)-305(format)-305(was)-305(very)-305(popular)-305(in)-305(the)-305(vector)-305(computing)-305(days;)-332(in)]TJ 0 -11.955 Td [(modern)-304(CPUs)-305(it)-304(is)-305(not)-304(quite)-305(as)-304(popular)74(,)-318(but)-305(it)-304(is)-305(the)-304(basis)-305(for)-304(many)-305(GPU)-304(for)18(-)]TJ 0 -11.955 Td [(mats.)]TJ 14.944 -11.955 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_ell_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ 0 g 0 G - -66.12 -38.412 Td [(164)]TJ +/F75 9.9626 Tf -268.57 -20.431 Td [(prec)]TJ +0 g 0 G +/F84 9.9626 Tf 24.04 0 Td [(The)-250(data)-250(str)8(uctur)18(e)-250(containing)-250(the)-250(pr)18(econditioner)74(.)]TJ 0.866 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 360.068 188.777 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 363.206 188.577 Td [(Tprec)]TJ +ET +q +1 0 0 1 389.985 188.777 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 393.124 188.577 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -263.34 -20.431 Td [(b)]TJ +0 g 0 G +/F84 9.9626 Tf 10.76 0 Td [(The)-250(RHS)-250(vector)74(.)]TJ 14.147 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.687 0 Td [(psb)]TJ +ET +q +1 0 0 1 410.618 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 413.756 120.326 Td [(T)]TJ +ET +q +1 0 0 1 419.614 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 422.752 120.326 Td [(vect)]TJ +ET +q +1 0 0 1 444.301 120.525 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 447.439 120.326 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.922 0 Td [(.)]TJ +0 g 0 G + -153.273 -29.888 Td [(164)]TJ 0 g 0 G ET endstream endobj -2046 0 obj +2074 0 obj << -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (./figures/mat.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 2068 0 R -/BBox [0 0 438 395] -/Resources << -/ProcSet [ /PDF /ImageC ] -/ExtGState << -/R7 2069 0 R ->>/XObject << -/R8 2070 0 R ->>>> -/Length 3551 -/Filter /FlateDecode +/Length 6802 >> stream -x\K, *j pv~HR 'ɖsDEIg<?ޯ?|ۏ~0{tz:spMl @T^c=kq* jx HHҨa01 -u~|S8K!-yKd93ΜhG%s-f{4j:9yfl<ФZy>`!01C5AnQ@}䰝L0~|"y\Ξ;=r-ԱvTmtY<|M4Db.~|҈M ᲋'MXLB0)"8SCfƤl" $ =yo"0.@^bL9@)Rg9IyH.J>8e myp`tMh4@{9·9>Gnh\՚h/L}y%,,tS(IM_?h=D֮"g|\=: -q_R W4ZbgHy_y+_j+NG!=%o~}}1OFKɈ. J0n -VZɼxKJ$L]A[ - - j) d-3bFO]zP!<,> --˛OJXja \NsI Zӧ:x7oר-^brW_{X$İ9$j/b6n__[F{Ǐ\V)VԦ"Z"չТV0 &ïitV| -k aNB#yB'5e&fR@撁cTL졉A-8Vi> SEa-6rF.*'Ύ:9%e\ -.h#Z55Ro9VyfGCZ --{Rfw=fNЀS|drz -GZ/v{- -ׯ7INAJXFQzeYo [(u_>X~ tqZ -riPf*^2x˯-R {k|a/|Xd(pNJSI\tv[2=5_嫼|)gWE/{К݁"6 -'Y>|TPh2YAxS[_FD5Phc.n^eUhPY8Jb-/gQE Ϧ+4~ߌ+R@97rA 00dTxF5h=-jQnWn%5MyVٹ Vut*_0-jcQhk4[_@? -f90jA5Q-$8h%;e?;5,duM^,*NmRZn&L_(uWD }s˩FĻqc֝mo9C[( ݁"@:?Ťْ9+hGnC-Yʜ=0U }7Qp&X^){j2sH^mFgmY0뙞ޞ-"ӚRjq;dW^I W3:)W{o'1ҵKe57=M\|xcWb>ii&;?ȜCZELzna 㡩o9`1s~Aò2k0t1Mda57i%>.(d:{BN`r|&5`!5osPX E ;A?ބ=+[e{d g4{o0qW-f%k\n,#`Rx ;… yNS*O9eYZE\*Y%zBB6#Á'|E` 6 -녜Һ=4Hj~=X=Cݑ" kEKգ rRJEJO7͇͂ -JXxC[ S^zݰ.F$ 5`2. L 0 # Z(DSj*'f;?buRr* ݁"@ai(o^/o*o +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 99.895 706.129 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.654 0 Td [(The)-250(initial)-250(guess.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.947 658.308 Td [(T)]TJ +ET +q +1 0 0 1 368.804 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 371.943 658.308 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 658.507 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 396.63 658.308 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.656 -19.427 Td [(eps)]TJ +0 g 0 G +/F84 9.9626 Tf 20.165 0 Td [(The)-250(stopping)-250(tolerance.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.427 Td [(desc)]TJ +ET +q +1 0 0 1 120.408 571.832 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F75 9.9626 Tf 123.397 571.633 Td [(a)]TJ +0 g 0 G +/F84 9.9626 Tf 9.963 0 Td [(contains)-250(data)-250(str)8(uctur)18(es)-250(for)-250(communications.)]TJ -8.558 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(str)8(uctur)18(ed)-250(data)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 168.138 0 Td [(psb)]TJ +ET +q +1 0 0 1 309.258 524.012 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 312.397 523.813 Td [(desc)]TJ +ET +q +1 0 0 1 333.945 524.012 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 337.084 523.813 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -258.11 -19.428 Td [(itmax)]TJ +0 g 0 G +/F84 9.9626 Tf 30.127 0 Td [(The)-250(maximum)-250(number)-250(of)-250(iterations)-250(to)-250(perform.)]TJ -5.22 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F181 10.3811 Tf 27.743 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(1000.)]TJ -77.275 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable)]TJ/F78 9.9626 Tf 142.349 0 Td [(i)-32(t)-25(m)-40(a)-42(x)]TJ/F179 10.3811 Tf 27.744 0 Td [(\025)]TJ/F84 9.9626 Tf 10.961 0 Td [(1.)]TJ +0 g 0 G +/F75 9.9626 Tf -205.961 -19.428 Td [(itrace)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 129.773 425.182 Tm [(If)]TJ/F134 10.3811 Tf 1 0 0 1 138.672 425.182 Tm [(>)]TJ/F84 9.9626 Tf 0.98 0 0 1 149.634 425.182 Tm [(0)-229(print)-228(out)-229(an)-229(informational)-228(message)-229(about)-229(conver)19(gence)-229(every)]TJ/F78 9.9626 Tf 1 0 0 1 419.702 425.182 Tm [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F84 9.9626 Tf -294.9 -11.955 Td [(iterations.)-310(If)]TJ/F181 10.3811 Tf 56.313 0 Td [(=)]TJ/F84 9.9626 Tf 10.962 0 Td [(0)-250(print)-250(a)-250(message)-250(in)-250(case)-250(of)-250(conver)18(gence)-250(failur)18(e.)]TJ -67.275 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Default:)]TJ/F78 9.9626 Tf 38.57 0 Td [(i)-32(t)-15(r)-50(a)-25(c)-25(e)]TJ/F181 10.3811 Tf 26.797 0 Td [(=)]TJ/F179 10.3811 Tf 11.086 0 Td [(\000)]TJ/F84 9.9626 Tf 8.194 0 Td [(1.)]TJ +0 g 0 G +/F75 9.9626 Tf -109.554 -31.383 Td [(istop)]TJ +0 g 0 G +/F84 9.9626 Tf 27.278 0 Td [(An)-250(integer)-250(specifying)-250(the)-250(stopping)-250(criterion.)]TJ -2.371 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -64.966 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.012 0 0 1 124.443 286.204 Tm [(V)91(alues:)-307(1:)-307(use)-247(the)-248(normwise)-247(backwar)18(d)-248(err)18(or)73(,)-247(2:)-307(use)-247(the)-248(scaled)-247(2-norm)-247(of)]TJ 1 0 0 1 124.802 274.248 Tm [(the)-250(r)18(esidual,)-250(3:)-310(use)-250(the)-250(r)18(esidual)-250(r)18(eduction)-250(in)-250(the)-250(2-norm.)-310(Default:)-310(2.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.427 Td [(On)-250(Return)]TJ +0 g 0 G +0 g 0 G + 0 -19.427 Td [(x)]TJ +0 g 0 G +/F84 9.9626 Tf 9.654 0 Td [(The)-250(computed)-250(solution.)]TJ 15.253 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(inout)]TJ/F84 9.9626 Tf 24.349 0 Td [(.)]TJ -56.149 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(rank)-250(one)-250(array)-250(or)-250(an)-250(object)-250(of)-250(type)]TJ +0 0 1 rg 0 0 1 RG +/F131 9.9626 Tf 218.688 0 Td [(psb)]TJ +ET +q +1 0 0 1 359.808 187.773 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 362.947 187.573 Td [(T)]TJ +ET +q +1 0 0 1 368.804 187.773 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 371.943 187.573 Td [(vect)]TJ +ET +q +1 0 0 1 393.492 187.773 cm +[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S +Q +BT +/F131 9.9626 Tf 396.63 187.573 Td [(type)]TJ +0 g 0 G +/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -317.656 -19.427 Td [(iter)]TJ +0 g 0 G +/F84 9.9626 Tf 20.165 0 Td [(The)-250(number)-250(of)-250(iterations)-250(performed.)]TJ 4.742 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.741 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.779 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.744 -11.955 Td [(Returned)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G + 139.477 -29.888 Td [(165)]TJ +0 g 0 G +ET + endstream endobj -2070 0 obj +2078 0 obj << -/Subtype /Image -/ColorSpace /DeviceGray -/Width 454 -/Height 425 -/BitsPerComponent 1 -/Interpolate true -/Filter /CCITTFaxDecode -/DecodeParms << -/K -1 -/Columns 454 ->> -/Length 164 +/Length 1089 >> stream -&@ +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 150.705 706.129 Td [(err)]TJ +0 g 0 G +/F84 9.9626 Tf 17.404 0 Td [(The)-250(conver)18(gence)-250(estimate)-250(on)-250(exit.)]TJ 7.502 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -46.745 -11.955 Td [(Returned)-250(as:)-310(a)-250(r)18(eal)-250(number)74(.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -19.925 Td [(info)]TJ +0 g 0 G +/F84 9.9626 Tf 23.8 0 Td [(Err)18(or)-250(code.)]TJ 1.106 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf -31.74 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf -26.78 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(out)]TJ/F84 9.9626 Tf 14.944 0 Td [(.)]TJ -47.133 -11.955 Td [(An)-250(integer)-250(value;)-250(0)-250(means)-250(no)-250(err)18(or)-250(has)-250(been)-250(detected.)]TJ +0 g 0 G + 139.865 -500.124 Td [(166)]TJ +0 g 0 G +ET + endstream endobj -2074 0 obj +2088 0 obj << -/Length 7231 +/Length 8162 >> stream 0 g 0 G 0 g 0 G +BT +/F75 14.3462 Tf 99.895 706.042 Td [(12)-1000(Extensions)]TJ/F84 9.9626 Tf 0.987 0 0 1 99.587 683.34 Tm [(The)-254(EXT)75(,)-254(CUDA)-254(and)-253(RSB)-254(subdir)18(ectories)-254(contains)-254(a)-254(set)-253(of)-254(extensions)-254(to)-254(the)-254(base)]TJ 1.02 0 0 1 99.895 671.385 Tm [(library)109(.)-500(The)-310(extensions)-310(pr)18(ovide)-311(additional)-310(storage)-310(formats)-310(beyond)-310(the)-311(ones)]TJ 1 0 0 1 99.895 659.43 Tm [(alr)18(eady)-250(contained)-250(in)-250(the)-250(base)-250(library)111(,)-250(as)-250(well)-250(as)-250(interfaces)-250(to:)]TJ 0 g 0 G -1 0 0 1 154.285 609.491 cm -q -.52 0 0 .52 0 0 cm -q -1 0 0 1 0 0 cm -/Im7 Do -Q -Q +/F75 9.9626 Tf 0 -19.102 Td [(SPGPU)]TJ 0 g 0 G -1 0 0 1 -154.285 -609.491 cm -BT -/F62 9.9626 Tf 152.938 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-250(5)]TJ +/F84 9.9626 Tf 1.02 0 0 1 139.188 640.328 Tm [(a)-255(CUDA)-255(library)-255(original)1(ly)-255(published)-255(as)]TJ +0 1 0 0 k 0 1 0 0 K +/F131 9.9626 Tf 1 0 0 1 319.124 640.328 Tm [(https://code.google.com/)]TJ -194.322 -11.955 Td [(p/spgpu/)]TJ 0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 170.513 628.373 Tm [(and)-381(now)-380(included)-381(in)-381(the)]TJ/F131 9.9626 Tf 1 0 0 1 289.717 628.373 Tm [(cuda)]TJ/F84 9.9626 Tf 1.02 0 0 1 314.507 628.373 Tm [(subdir)73(,)-415(for)-381(computations)-380(on)]TJ 1 0 0 1 124.802 616.418 Tm [(NVIDIA)-250(GPUs;)]TJ 0 g 0 G +/F75 9.9626 Tf -24.907 -19.514 Td [(LIBRSB)]TJ 0 g 0 G +0 1 0 0 k 0 1 0 0 K +/F131 9.9626 Tf 41.514 0 Td [(http://sourceforge.net/projects/librsb/)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 345.393 596.904 Tm [(,)-324(for)-309(computations)-308(on)]TJ 1 0 0 1 124.802 584.949 Tm [(multicor)18(e)-250(parallel)-250(machines.)]TJ 1.02 0 0 1 99.587 565.847 Tm [(The)-350(infrastr)8(uctur)18(e)-350(laid)-350(out)-350(in)-349(the)-350(base)-350(library)-350(to)-350(allow)-349(for)-350(these)-350(extensions)]TJ 1.02 0 0 1 99.895 553.891 Tm [(is)-306(detailed)-306(in)-306(the)-306(r)18(efer)17(ences)-306([)]TJ +1 0 0 rg 1 0 0 RG + 1 0 0 1 230.777 553.891 Tm [(21)]TJ 0 g 0 G + 1.02 0 0 1 240.739 553.891 Tm [(,)]TJ +1 0 0 rg 1 0 0 RG + 1 0 0 1 246.389 553.891 Tm [(22)]TJ 0 g 0 G -/F59 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.537 -10.959 Td [(t)-168(=)-32(0)]TJ/F59 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F62 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.792 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F59 8.9664 Tf -102.419 -10.959 Td [(e)-19(n)-20(d)-630(d)-11(o)]TJ/F62 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F59 8.9664 Tf -10.782 -10.959 Td [(e)-19(n)-20(d)-630(d)-12(o)]TJ + 1.02 0 0 1 256.352 553.891 Tm [(,)]TJ +1 0 0 rg 1 0 0 RG + 1 0 0 1 262.002 553.891 Tm [(11)]TJ 0 g 0 G + 1.02 0 0 1 271.965 553.891 Tm [(];)-336(the)-306(CUDA-speci\002c)-306(data)-306(formats)-306(ar)17(e)]TJ 1 0 0 1 99.895 541.936 Tm [(described)-250(in)-250([)]TJ +1 0 0 rg 1 0 0 RG + [(23)]TJ 0 g 0 G + [(].)]TJ/F75 11.9552 Tf 0 -28.94 Td [(12.1)-1000(Using)-250(the)-250(extensions)]TJ/F84 9.9626 Tf 1.01 0 0 1 99.507 494.032 Tm [(A)-249(sample)-248(application)-249(using)-249(the)-249(PSBLAS)-248(extensions)-249(will)-249(contain)-248(the)-249(following)]TJ 1 0 0 1 99.895 482.077 Tm [(steps:)]TJ 0 g 0 G + 13.888 -19.102 Td [(\225)]TJ 0 g 0 G +/F131 9.9626 Tf 11.019 0 Td [(USE)]TJ/F84 9.9626 Tf 18.182 0 Td [(the)-250(appr)18(opriat)-250(modules)-250(\050)]TJ/F131 9.9626 Tf 110.036 0 Td [(psb_ext_mod)]TJ/F84 9.9626 Tf 57.533 0 Td [(,)]TJ/F131 9.9626 Tf 4.982 0 Td [(psb_cuda_mod)]TJ/F84 9.9626 Tf 62.764 0 Td [(\051;)]TJ 0 g 0 G -/F59 9.9626 Tf 16.498 -17.519 Td [(Algorithm)-250(1:)]TJ/F62 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ + -264.516 -19.514 Td [(\225)]TJ 0 g 0 G + 0.98 0 0 1 124.802 443.461 Tm [(Declar)18(e)-214(a)]TJ/F78 9.9626 Tf 0.98 0 0 1 166.52 443.461 Tm [(mold)]TJ/F84 9.9626 Tf 0.98 0 0 1 188.142 443.461 Tm [(variable)-215(of)-214(the)-215(necessary)-215(typ)1(e)-215(\050e.g.)]TJ/F131 9.9626 Tf 1 0 0 1 337.804 443.461 Tm [(psb_d_ell_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 442.411 443.461 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 124.802 431.506 Tm [(psb_d_hlg_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(,)]TJ/F131 9.9626 Tf 4.981 0 Td [(psb_d_vect_cuda)]TJ/F84 9.9626 Tf 78.455 0 Td [(\051;)]TJ 0 g 0 G + -199.062 -19.513 Td [(\225)]TJ 0 g 0 G + 0.98 0 0 1 124.802 411.993 Tm [(Pass)-215(the)-215(mo)1(ld)-215(variable)-215(to)-215(the)-214(base)-215(library)-215(interface)-215(wher)19(e)-215(needed)-215(to)-215(ensur)19(e)]TJ 1 0 0 1 124.802 400.037 Tm [(the)-250(appr)18(opriate)-250(dynamic)-250(type.)]TJ 1.02 0 0 1 99.895 380.935 Tm [(Suppose)-302(you)-301(want)-302(to)-302(u)1(se)-302(the)-302(CUDA-enabled)-301(ELLP)90(ACK)-302(data)-301(str)8(uctur)17(e;)-330(you)]TJ 1.02 0 0 1 99.477 368.98 Tm [(would)-322(use)-323(a)-322(piece)-323(of)-322(code)-323(like)-322(this)-323(\050and)-322(don't)-323(for)18(get,)-342(you)-322(need)-323(CUDA-side)]TJ 1 0 0 1 99.616 357.025 Tm [(vectors)-250(along)-250(with)-250(the)-250(matrices\051:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 316.473 cm -0 0 343.711 126.526 re f +1 0 0 1 99.895 120.326 cm +0 0 343.711 225.156 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 432.339 Td [(type)]TJ +/F231 8.9664 Tf 102.884 334.821 Td [(program)]TJ 0 g 0 G - [(,)]TJ + [-525(my_cuda_test)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(extends)]TJ + 9.415 -10.959 Td [(use)]TJ 0 g 0 G - [(\050psb_d_base_sparse_mat\051)]TJ + [-525(psb_base_mod)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ + 0 -10.959 Td [(use)]TJ 0 g 0 G + [-525(psb_util_mod)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_d_ell_sparse_mat)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.958 Td [(use)]TJ +0 g 0 G + [-525(psb_ext_mod)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(use)]TJ 0 g 0 G + [-525(psb_cuda_mod)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(ITPACK/ELL)-525(format,)-525(extended.)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ 0 g 0 G + [(\050psb_dspmat_type\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf 0 -21.918 Td [(integer)]TJ + [-525(a,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [(\050psb_ipk_\051,)]TJ + [-525(agpu)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ + 0 -10.959 Td [(type)]TJ 0 g 0 G + [(\050psb_d_vect_type\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -28855,17 +29211,17 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(irn\050:\051,)]TJ + [-525(x,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(ja\050:,:\051,)]TJ + [-525(xg,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(idiag\050:\051)]TJ + [-525(bg)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(real)]TJ + 0 -21.918 Td [(real)]TJ 0 g 0 G [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -28880,512 +29236,254 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(val\050:,:\051)]TJ + [-525(xtmp\050:\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(contains)]TJ + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050psb_d_vect_cuda\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-3675(::)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 9.414 -10.959 Td [(....)]TJ + [-525(vmold)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.958 Td [(end)-525(type)]TJ + 0 -10.959 Td [(type)]TJ 0 g 0 G - [-525(psb_d_ell_sparse_mat)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + [(\050psb_d_elg_sparse_mat\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -12.404 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F62 9.9626 Tf 0 -19.057 Td [(The)]TJ/F60 9.9626 Tf 20.491 0 Td [(hacked)-383(ELLP)129(ACK)]TJ/F62 9.9626 Tf 76.975 0 Td [(\050)]TJ/F59 9.9626 Tf 3.318 0 Td [(HLL)]TJ/F62 9.9626 Tf 20.473 0 Td [(\051)-383(format)-382(alleviates)-383(the)-383(main)-383(pr)18(oblem)-382(of)-383(the)-383(ELL-)]TJ -121.257 -11.955 Td [(P)92(ACK)-303(format,)-316(that)-303(is,)-316(the)-302(amount)-303(of)-303(memory)-303(r)18(equir)18(ed)-303(by)-303(padding)-302(for)-303(sparse)]TJ 0 -11.955 Td [(matrices)-250(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 14.944 -12.003 Td [(The)-190(number)-190(of)-190(elements)-190(allocated)-190(to)-190(padding)-190(is)]TJ/F93 10.3811 Tf 207.724 0 Td [([)-24(\050)]TJ/F60 9.9626 Tf 7.402 0 Td [(m)]TJ/F91 10.3811 Tf 9.384 0 Td [(\003)]TJ/F60 9.9626 Tf 6.823 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F93 10.3811 Tf 34.072 0 Td [(\051)]TJ/F91 10.3811 Tf 5.658 0 Td [(\000)]TJ/F93 10.3811 Tf 9.702 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F91 10.3811 Tf 9.384 0 Td [(\003)]TJ/F60 9.9626 Tf 6.972 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.103 0 Td [(\051)-289(=)]TJ/F60 9.9626 Tf -347.317 -11.955 Td [(m)]TJ/F91 10.3811 Tf 9.436 0 Td [(\003)]TJ/F93 10.3811 Tf 6.876 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F91 10.3811 Tf 35.508 0 Td [(\000)]TJ/F60 9.9626 Tf 9.904 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F93 10.3811 Tf 31.103 0 Td [(\051)-23(])]TJ/F62 9.9626 Tf 9.227 0 Td [(for)-196(both)]TJ/F67 9.9626 Tf 36.586 0 Td [(AS)]TJ/F62 9.9626 Tf 12.41 0 Td [(and)]TJ/F67 9.9626 Tf 18.816 0 Td [(JA)]TJ/F62 9.9626 Tf 12.41 0 Td [(arrays,)-207(wher)18(e)]TJ/F60 9.9626 Tf 61.626 0 Td [(m)]TJ/F62 9.9626 Tf 9.825 0 Td [(is)-196(equal)-195(to)-196(the)-196(num-)]TJ -258.126 -11.955 Td [(ber)-197(of)-198(r)18(ows)-197(of)-197(the)-198(matrix,)]TJ/F60 9.9626 Tf 110.796 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F62 9.9626 Tf 35.914 0 Td [(is)-197(the)-198(maximum)-197(number)-197(of)-198(nonzer)18(o)-197(elements)]TJ -146.71 -11.956 Td [(in)-220(every)-220(r)18(ow)-221(and)]TJ/F60 9.9626 Tf 76.764 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F62 9.9626 Tf 33.173 0 Td [(is)-220(the)-220(average)-220(number)-221(of)-220(nonzer)18(os.)-300(Ther)18(efor)18(e)-220(a)-220(single)]TJ -109.937 -11.955 Td [(densely)-250(populated)-250(r)18(ow)-250(can)-250(seriously)-250(af)18(fect)-250(the)-250(total)-250(size)-250(of)-250(the)-250(allocation.)]TJ 14.944 -12.003 Td [(T)92(o)-385(limit)-384(this)-385(ef)18(fect,)-418(in)-384(the)-385(HLL)-384(format)-385(we)-384(br)18(eak)-385(the)-384(original)-385(matrix)-384(into)]TJ -14.944 -11.955 Td [(equally)-283(sized)-284(gr)18(oups)-283(of)-283(r)18(ows)-284(\050cal)1(led)]TJ/F60 9.9626 Tf 163.395 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-292(and)-283(then)-283(stor)18(e)-283(these)-284(gr)18(oups)-283(as)-283(in-)]TJ -185.153 -11.955 Td [(dependent)-304(matrices)-305(in)-304(ELLP)92(ACK)-304(format.)-473(The)-304(gr)18(oups)-304(can)-305(be)-304(arranged)-304(select-)]TJ 0 -11.955 Td [(ing)-253(r)18(ows)-252(in)-253(an)-253(arbitrarily)-253(manner;)-254(indeed,)-253(if)-253(the)-252(r)18(ows)-253(ar)18(e)-253(sorted)-252(by)-253(decr)18(easing)]TJ 0 -11.955 Td [(number)-256(of)-255(nonzer)18(os)-256(we)-255(obtain)-256(essentially)-255(the)-256(JAgged)-255(Diagonals)-256(format.)-327(If)-255(the)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G - 164.384 -29.888 Td [(165)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -ET - -endstream -endobj -2048 0 obj -<< -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (./figures/ell.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 2085 0 R -/BBox [0 0 447 205] -/Resources << -/ProcSet [ /PDF /ImageC /Text ] -/ExtGState << -/R7 2086 0 R ->>/XObject << -/R8 2087 0 R ->>/Font << /R9 2088 0 R/R11 2089 0 R>> ->> -/Length 2281 -/Filter /FlateDecode ->> -stream -xYˊ%WU~,okOý6=^! )EM3Pv)rZN8~s|9Z&vM -|-7;}Ζ)d_Dg|]]`l:H4d(f)֛d)L"bZ^3-~Ʀ%Luyf \HxPiGZb_NIIKP@``kM8ؖ8N6t%3L1V싋-5I@Ņh\ɶ!%/ 5QRŅUBk*#Hۑ?Hf[cǑ-"քNPYC&i]3D_(ԮQve3jJVggTen@in;Yi@fsa3g]FgsTAV܎ӓ+npN>.P;~R@c,S cߗ3ίޓKHNKR1 ҭ}|_i,K@4ytҔ[a>3-0'I$WPo%R*NڧK@X ʊF(9(jScA-\pCc&2k@=WZDD ND bENzUzV`T}Y@3Za_YQW5e^Mrj"K-wQU0FEX>5(!N bEZzԐ¨QŅVc1,2fɊb2/\4zK/2ome.N;z狩W04LeIG,N{PeZD>R2Ⴥ$].,-,-.uru]RNUJbϒ%ƒe](^E/""YE(:{/ȪUdr63hhk rѢ[i ҵ8 i ٮZZ9b E+#%E-. V\mhEdբ7Ryl6ky`d(T_>Ӕe+]@zcC׸l_&_64xn_'e:9F=Q/x؏_ ݾPyNhǞ(~J7+n$֭Lxxф8CySׄ ]f;XkL'/,kV@VwFjUQ/B 8Q!=ջL|LO/sbj p4b&zpLf.($}6OsXȅ_\@ *Hj`˂[^3[oM q<խ ؟! [~ UμHX`ZD .y Y*~TD%4ϴIcf QcYHC*cJRҀG ;ɿ@3~ZLkŎ8E8~xO_([zR6 -y-?Gz5O}MsAtԏ|THF -endstream -endobj -2087 0 obj -<< -/Subtype /Image -/ColorSpace /DeviceGray -/Width 510 -/Height 227 -/BitsPerComponent 1 -/Interpolate true -/Filter /CCITTFaxDecode -/DecodeParms << -/K -1 -/Columns 510 ->> -/Length 48 ->> -stream -;Y -endstream -endobj -2091 0 obj -<< -/Filter /FlateDecode -/Length 171 ->> -stream -x]M FOĸma0,;vߛ|~D. #ƪ[ q2WNyYz&GNYM9.^i'dmQtCM)Y:2D^26Y?iRt4ఆ6޹Wc,Ož=+V -endstream -endobj -2093 0 obj -<< -/Filter /FlateDecode -/Length 191 ->> -stream -x]= {N ahbc d( !w!}C3\/W2m)dj7 & ty[j;ըgI3T|"PL]> -stream -xzy|TUp9Nw$$ݝ YĖܬ, $,Bb:@@0$(& OqC#D::3nϑ8dqGHuo7{}{RUTԩsN 8<.xvC -I - ,P;a:#M@ -8.*p`ҡ>Hj!_{I+ g0q>P~B7+|JOgD@tÿA$7 B3M%8 ۄ7x\GXMٰA|_VSgЊ%ZaMb?8 9DI\˂w?|uqa&4.oЀ6Y|V ])~8qNbVf%kY!#Y Vc|;V?!iey$ty pަq|Lv>ag4a*̅xVx3=i^7mS^KmJ~PzfTp#aN}}M0YR,$Q,VZ|kp -c0iFRo534=c#c> Zd.x1d*Oi;<[ y)_|'N8(|(ăڦV"[ hh\i0g9yM4vJ`l^xA臃4p -~ ? -:i+5uwC2VI,R:JX9b+ݔv3]nCi??@GiMܯySmֽuqR楆KXcx/`SQܟMAWA(ZZilt^IJd?(AQ v0 dPIKweJOƒ;PV1#ΜOx!Fȼj<96dJ`3y:aEGh+錪3 > -vwAcpOX(a2lB-P=y mш'WxbgIp{CH& 5)zn30a*N'YcWS}jE==$edڵkN\X7)7gbv;3#=-Օ"%; q6kltTdn2:F8CȪ_'J3fd+eM?bx}bU]sxU5՚2i.4否|E-x -s)j~7Q -J[kÇ^Gj}ko0K-aY0fr>>ifxDK8B*WV$8 Y>,_*5@*ݪ -4>ڍc2@m\&-kǛ>"oϺ"5Y^[i[P[?:@m[Eo'VwP_zM:y(s -ͮET8U^*Z{Wyia{}0o/@|wA$H Mwކ8w$;k2@yۗ8V8M-fg0nq!Aٶ8t*˻- C3|=sCe4'Aq7W _\Hz.KTJσR-Q>/-!y|zzGewܶ *Ss},5S"כ^aП誒*WzgV1ykXW"JJި%4/ hu*U>wF79JyJ~6>'_5WӀTV`qooU* -VU4K{J%7$Z8[#9V ,}C0Bp@6 `&l'!U8 ?HK̈́sX#M -*:|;=LcnD>M|z>=TVDOS9cQ'}D}K9Ny?n)M" Sn'vvR #]V= #&D\NI]ָ̓~2f2fffHΦN6D:Hgl"ꯃ [AvW>gT]w+%~ 1Fu_O,JN=qy}?a# fEE -e0>1DIpn#`M8@K)9!>@wn-tBnFyPrH RȰ7zpW߮sޡ:FO>fQD%Lu]Z;! !|Y;.hTyULV겋rSp2?wd))͓ EFF6JƽBjKo+JڽBT*I/+H9]B_͑5kƚ>nSiKGqyS̥ײ#4F» p0=L= ":q߭ʔ"gW9M8n#nNm"!U;;}GT~~W)Ap6\ %",NNNp@)-aJ!%&!6NŒ &@%7Taݝ<b'(t74`ox)T7;|Χy%UlV9-_ 8v?lGKl)`bCo,<ֲʊ]! q#[[9OƊ+jI < -Q!YQdTjT5rʊ+8SQ"yEUZj+Bj, RԶRXFjƌf1&(J.d).RpMQKptC::LG:_K@>ZTy{oVX=ۼUM- -21д_*&bV.X*TJap_wyU}wXX׾!VԾau]uAfMp6Zڧ!2(L(4TTD/"8B `\Yq寣S.7.M_R'{+PY^6Oϳs#vu5;dd֘ܖܝܗ;HFPLNK2"oN*+>ҟRP>:BݹɰnH7l" !oI!gtPzlp+As 6-CrNzJlD%af# ~CI <6چp# Щw');;nP@qpZRu~d -Z"r;j] -ǔޙA `/eUNA9iQ8F|Q{pj?O]jVz&>*G66b&zXxiiռUWB,q 63=CQ32CwR)G\sy,C,шiKܞٖse%"(oF/7n\XkD#cc1i0 -5UJ֞Y( c;56Lw ?uS'mdt$ٕ9fJCk3Ym-ɄdNz3j5zazbMΈ' O?qp(x l#1tĄ8kMlĂqYZ[c8c㘨YccQ)^/GKz|hpwܑ87p"3&~F5FEuG QQ2M*~sĝwL(эu>vfg_هHL>gteo̾d2JdZHk EEj7\\n nBZV<9?OF˴μɓG n^;w˝iؼzQU:v~eR_^yXs‚#~c^yzEʰ*CupZS3o邑iKƉϥOxjY?'~8Ssgr17 r}4Qv$sbH? z)=ljcZAAl#?ehf`ar 䨓Q,*.+ Zt -:G{JFݣJFFN- Of4Nət9 -OM s4c݌If9 imF)32ЧuRJuXuɩ*+7$e)km-EeC{}KsqZ]G8jw}Uuëj5m-*tbưkumҤ]ѽO&Z^Z8H|(5 im{ =ƞ;\=w !Dka3j! 5&O5Y]&Wx5n;Mw? @1g7i7䯂UH]֚nJ[)O{=;"}LxD3'bN;4|e2˴/2&}Z1 V+lCh~"-H92䌞 .gx33F2 "vv2ť_FC9:R,˖\ -R=X9UTLHES- RlDs|3(0$5cBd+仗U!]b-<9r -*ƴ  yV1vS}o-<{^bef7P8 .օ)GZ~۳؆-;4}rkwnY,W/:X M:u׋bBLH}<ʩLN - -;ڠvq.XWN<;U`4 95!!1!)kR.C-4N!NXb6ݞlHKL3ą43UU2VD4Sj)#O_fm\}rʖ5Vܙ417(pF+ؑ?{>MaOt:?zאkJ&HP&N"ԗlMo)>FLx@I6q& -B9 $ ߣm67!(/e#A~A^d-tޞS~A-Vq{k˷ud(g J$Sh~c.OkRZD!]!L*~x\'8tC*/ - *XIV9+O Po#D*rXrMKǜ[浭inXc]]<W1USSEaOsa? 5=B>i+ -=z |yiXʿ - -endstream -endobj -2095 0 obj -<< -/Filter /FlateDecode -/Length1 3512 -/Length 2264 ->> -stream -xW{l[Wν~۱vڹ7\;HGҔ.khewi4Mӎf ]iXePU@BCƹN!Ĩ!e! bT\i7!^w}k gsy.ulON5W M͟V/ ,澉s'陓OkӓGyW.(="<>{LSmu'lf'̑o WP_G&g[MlNfsj=t͐%H»6d{`fx $ 2Amp/lO 8GA0<9N8ypN8_sP 9OcfyBx6m^gs&80xnrf ?GK"PWGXZM2h%7B2;U3̴b_ψtK,HL!* -a4 'H5N=]HB<9xpOԡ#S{6 ?UߟyJlz17R_P2'ߗ)lm-~.B7|aa1bc)~``ÚY0 [2r4dJu)2&F=&a,@GJri7 VK" `jL5YSU N ::!輓DX-T$ƞ<+JWꦕw=ꡄ]J/hd=ɤWɲMJRC^!y|x{@`N0'ˢeo4u7KBaQi0Xvh`tuG`nLaĎU`*VUOd--$åKw Ntqsʕ!b2J";ŋ_'%s2[#ۂDr %?V9;L#ui1GEŨEg2#q aD}W!F+cJ-cKG?~2F/:}+ͬWHa%g9w9buzYPQ973f6wEHnVWWUYEz}vn݁UJ9K 0|jzz|ԉc~!Ûps?U -0GU> -stream -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 150.705 706.129 Td [(r)18(ows)-336(ar)18(e)-337(not)-336(in)-336(the)-337(original)-336(or)18(der)74(,)-358(then)-336(an)-337(additional)-336(vector)]TJ/F60 9.9626 Tf 272.611 0 Td [(rIdx)]TJ/F62 9.9626 Tf 20.507 0 Td [(is)-336(r)18(equir)18(ed,)]TJ -293.118 -11.955 Td [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 14.944 -12.021 Td [(The)-391(multiple)-390(ELLP)92(ACK-like)-391(buf)18(fers)-390(ar)18(e)-391(stacked)-390(together)-391(inside)-391(a)-390(single,)]TJ -14.944 -11.955 Td [(one)-395(dimensional)-394(array;)-467(an)-395(additional)-395(vector)]TJ/F60 9.9626 Tf 204.327 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 50.049 0 Td [(is)-395(pr)18(ovided)-394(to)-395(keep)]TJ -254.376 -11.956 Td [(track)-287(of)-288(the)-288(indiv)1(idual)-288(submatrices.)-423(All)-287(hacks)-288(have)-287(the)-288(same)-287(number)-288(of)-287(r)18(ows)]TJ/F60 9.9626 Tf 0 -11.955 Td [(hackSize)]TJ/F62 9.9626 Tf 34.49 0 Td [(;)-237(hence,)-235(the)]TJ/F60 9.9626 Tf 51.365 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.416 0 Td [(vector)-231(is)-231(an)-231(array)-230(of)]TJ/F93 10.3811 Tf 89.104 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-192(+)]TJ/F62 9.9626 Tf 15.99 0 Td [(1)-231(elements,)]TJ -294.657 -11.955 Td [(each)-338(one)-338(pointing)-338(to)-338(the)-338(\002rst)-338(index)-338(of)-337(a)-338(submatrix)-338(inside)-338(the)-338(stacked)]TJ/F60 9.9626 Tf 314.252 0 Td [(cM)]TJ/F62 9.9626 Tf 13.459 0 Td [(/)]TJ/F60 9.9626 Tf 6.037 0 Td [(rP)]TJ/F62 9.9626 Tf -333.748 -11.955 Td [(buf)18(fers,)-449(plus)-409(an)-409(additional)-409(element)-408(pointing)-409(past)-409(the)-409(end)-409(of)-409(the)-409(last)-409(block,)]TJ 0 -11.955 Td [(wher)18(e)-261(the)-261(next)-261(one)-261(would)-261(begin.)-344(W)92(e)-261(thus)-261(have)-261(the)-261(pr)18(operty)-261(that)-261(the)-261(elements)]TJ 0 -11.955 Td [(of)-353(the)]TJ/F60 9.9626 Tf 29.729 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.878 0 Td [(hack)]TJ/F62 9.9626 Tf 21.448 0 Td [(ar)18(e)-353(stor)18(ed)-353(between)]TJ/F67 9.9626 Tf 88.761 0 Td [(hackOffsets[k])]TJ/F62 9.9626 Tf 76.739 0 Td [(and)]TJ/F67 9.9626 Tf 20.382 0 Td [(hackOffsets[k+1])]TJ/F62 9.9626 Tf 83.685 0 Td [(,)]TJ -341.22 -11.956 Td [(similarly)-250(to)-250(what)-250(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ -0 g 0 G -ET -1 0 0 1 197.579 464.41 cm -q -.50096 0 0 .50096 0 0 cm -q -1 0 0 1 0 0 cm -/Im8 Do -Q -Q + [-525(aelg)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -1 0 0 1 -197.579 -464.41 cm -BT -/F62 9.9626 Tf 185.456 442.492 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-250(5)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ 0 g 0 G + [(\050psb_ctxt_type\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G - -19.807 -24.042 Td [(W)55(ith)-207(this)-206(data)-207(str)8(uctur)18(e)-206(a)-207(very)-206(long)-207(r)18(ow)-207(only)-206(af)18(fects)-207(one)-206(hack,)-216(and)-206(ther)18(efor)18(e)]TJ -14.944 -11.955 Td [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_hll_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 150.705 244.903 cm -0 0 343.711 137.484 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(ctxt)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 163.108 371.728 Td [(type)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ 0 g 0 G - [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(extends)]TJ + [-6825(::)]TJ 0 g 0 G - [(\050psb_d_base_sparse_mat\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G + [-525(iam,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_d_hll_sparse_mat)]TJ + [-525(np)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -32.876 Td [(call)]TJ 0 g 0 G + [-525(psb_init\050ctxt\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(HLL)-525(format.)-525(\050Hacked)-525(ELL\051)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(call)]TJ 0 g 0 G + [-525(psb_info\050ctxt,iam,np\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(call)]TJ 0 g 0 G + [-525(psb_cuda_init\050ctxt,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf 0 -10.959 Td [(integer)]TJ + [-525(iam\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G - [(\050psb_ipk_\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ +/F84 9.9626 Tf 151.98 -58.082 Td [(167)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +ET + +endstream +endobj +2102 0 obj +<< +/Length 9251 +>> +stream 0 g 0 G - [-525(hksz)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +q +1 0 0 1 150.705 421.197 cm +0 0 343.711 290.909 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +BT +/F279 8.9664 Tf 163.108 701.446 Td [(!)-525(My)-525(own)-525(home-grown)-525(matrix)-525(generator)]TJ 0 g 0 G - [(\050psb_ipk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ +/F231 8.9664 Tf 0 -10.958 Td [(call)]TJ +0 g 0 G + [-525(gen_matrix\050ctxt,)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [(idim)]TJ 0 g 0 G + [(,desc_a,a,x,info\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ + 0 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(irn\050:\051,)]TJ + [-525(\050info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(ja\050:\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(/=)]TJ 0 g 0 G - [-525(idiag\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 18.829 -10.959 Td [(hkoffs\050:\051)]TJ/F69 5.1905 Tf -15.277 0 Td [(,)]TJ/F91 5.1905 Tf 0.61 0 Td [(!)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(0)]TJ 0 g 0 G + [(\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf -4.162 -10.959 Td [(real)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(goto)]TJ 0 g 0 G - [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(9999)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ + 0 -21.918 Td [(call)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [-525(a%cscnv\050agpu,info,mold)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G - [-525(val\050:\051)]TJ + [(aelg\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -21.918 Td [(contains)]TJ + 0 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.708 -10.958 Td [(....)]TJ + [-525(\050info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.708 -10.959 Td [(end)-525(type)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(/=)]TJ 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -/F59 9.9626 Tf -12.403 -39.966 Td [(Diagonal)-250(storage)]TJ/F62 9.9626 Tf 0 -19.092 Td [(The)-399(DIAgonal)-399(\050DIA\051)-399(format)-399(\050shown)-399(in)-400(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-399(8)]TJ -0 g 0 G - [(\051)-399(has)-399(a)-399(2-dimensional)-399(array)]TJ/F67 9.9626 Tf 0 -11.955 Td [(AS)]TJ/F62 9.9626 Tf 13.716 0 Td [(containing)-327(in)-327(each)-327(column)-326(the)-327(coef)18(\002cients)-327(along)-327(a)-327(diagonal)-327(of)-327(the)-326(matrix,)]TJ -13.716 -11.955 Td [(and)-302(an)-302(integer)-302(array)]TJ/F67 9.9626 Tf 94.018 0 Td [(OFFSET)]TJ/F62 9.9626 Tf 34.39 0 Td [(that)-302(determines)-302(wher)18(e)-302(each)-302(diagonal)-302(starts.)-466(The)]TJ -128.408 -11.955 Td [(diagonals)-250(in)]TJ/F67 9.9626 Tf 56.527 0 Td [(AS)]TJ/F62 9.9626 Tf 12.952 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ -54.535 -12.021 Td [(The)-194(code)-193(to)-194(compute)-193(the)-194(matrix-vector)-194(pr)18(oduct)]TJ/F60 9.9626 Tf 206.92 0 Td [(y)]TJ/F93 10.3811 Tf 7.997 0 Td [(=)]TJ/F60 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F62 9.9626 Tf 14.746 0 Td [(is)-194(shown)-193(in)-194(Alg.)]TJ -0 0 1 rg 0 0 1 RG - [-193(2)]TJ -0 g 0 G - [(;)-213(it)]TJ -256.191 -11.955 Td [(costs)-205(one)-205(memory)-206(r)18(ead)-205(per)-205(outer)-205(iteration,)-214(plus)-205(thr)18(ee)-206(memory)-205(r)18(eads,)-214(one)-205(mem-)]TJ 0 -11.955 Td [(ory)-322(write)-321(and)-322(two)-321(\003oating-point)-322(operations)-322(per)-321(inner)-322(iteration.)-525(The)-321(accesses)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(0)]TJ 0 g 0 G - 164.383 -29.888 Td [(166)]TJ + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -ET - -endstream -endobj -2096 0 obj -<< -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (../figures/hll.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 2106 0 R -/BBox [0 0 494 214] -/Resources << -/ProcSet [ /PDF /Text ] -/ExtGState << -/R7 2107 0 R ->>/Font << /R8 2108 0 R/R10 2109 0 R>> ->> -/Length 2880 -/Filter /FlateDecode ->> -stream -xZˎ% WԲ{eN`;pAz0 #xoqIQŒEzfq,<<,Q*U}:Ov?yw™zGwprM0*zT+xAvW$+\y0V+9K 'r \VGT#+"jP\5kn T5^ݧ+8P ]ש(B3)L`6 [A.ŸH9|>>+\1Θ>ƫh㣿qsIygZ f1؝(%˜ƬO*mO -s [?-\.̃Yc1P̕l* -f_@.0 }g/^6Y~#+MuԂyQR8[m!N:9wYljX_67yX ๣(xȥXP4 -MLA=HowW353 eU<ʡ^QE*ցoK F"$hTx'CvB Z2Jh\5'ME{̃:DH<+ĵ:8M:5ZRl*-% JtTR-A} W NKYc@L9bp;1 'D9YFWy,YH{QB27:ӀyP(ayVb;ZY$KVuVUbTg ^3gB0Wܕ{/x?w67mvoLJF׊0G;nBH41@V;:DX9kŚ -%hUYs~h|ؤ}jJ5 -.F65bDcb4k_&͆&͆c&4l?b1q3bbf -TNާxG!\Dcn(MB˙I\䚊(͈Q+.MI ;_TüUJ4*J4@,~Y&PdJXfeYZ-KVY?L~R-_[IXYj'VՔ7YZ( @oo}XEW<1ph -Csj(1X5q;GS`XS.[t֜qQY|9A=t-!2`j(Ö-67\){vl%ᾧ]kvى%krwUQx;r"Z$er?obOv7s_oUvcye8U.Up=pT$b(`F&Cxo1iF/Guk# @љʺ 3֘'> -stream -x]0 {@فL> -stream -x]M Fbn?MLn\4m/0qPƒM>x?2[ڐK gC@ʻ\c{B .ϲ7HpuB4#kk{vaGE#"64)U:ܼG -wלuɂ<~V -endstream -endobj -2114 0 obj -<< -/Filter /FlateDecode -/Length1 5268 -/Length 3426 ->> -stream -xX}l[u?=~z|||)%("Ɋ,V9;d8dEqjzIЏdm[ ! ڥhѭhKܬuumL.Dk6A$GJv wϹ_s) o?Z(KgζeȋK҃JS =}ٕ3Vw[^9BX^8,@dP]P}CG\=ѥ~W:YBY™}O#q{3=|?Mr{Roawt~QZǠ -d wAP`t |N" T(  I- g)8 -~~> !PSP5z:swzrd]e(V$ -8Rk֍b::\3T@]y60GkxqĿAݹ=_w:u\ϝ@=y;C.\ƛ{Զʗ%Z,P^$Oq9S(5 :k& h8ґ6 +_;zzs5]g.<%ظ.3n7}7Lg;-Np$tj 8GpvXFB_m 8i9ֱpk& J:4g6L10؄*PAF%kp^ƒ щ N /W'SdjzxI%pl{h91#&2qt_T_=[{yZxb>9 -'=?~yi@<DToc>pD6?Gل7Cަk9_{ބN#xYz;Fdkv -A#ti -"\gϣ1E8v4EE)-xǫL#ܸBiT.z]"ѹm14cpAfe̽ &Tehȵz@qU5m55.sth\k*Kevwfqt;FTK&1\WaI1L"T,R^ @a9aYVGʶnԶ@Kul` Xc3֩Xo5 r֢1VI k͐B"yb*X8"Y@ E@G U j12I&nGWI15Fc)}tR?j:rv+;]ޘѱ޵z9W!IĐ"0C*H )0fDHϪ&qH /ƾ`KYBackT 9 ]p*1ߋFSm(ɗ.5t~`UԂŘBb\%R6SJ@敧 *{;Ο֤U$_B$ql4gk3Vx9sƿޒHD>hRWޝ x%7zJV%>s#k+?k,63LCXDGh{ȪLx0xB4l6cb$;2<^!|;T9嗞z_ד$w*]BDs_mr|ٙ8xe1^"4,+PՌ`ivϵ`OIڵtMf͚iӟ#4[Uۃ1MYMOux8&apX#bQR ;*at; -;2;ɑXsOrD;&.coUSzS É^>K}o-R?'1ǡǸ<1Rx:HbzV1_ښC&ڀAM -kN|k}hY <+8IRHa;V2 1w1#7!.C aBV8'ntXW[.ġ.eUdDJXSSp ~t qqDz<^V0;Dt.#17IcO&uБo~haTtv)Ky}₩bY7I!~;xMil=2.{2kz=FUVܝS\XK[ק[ԘO$=ݑMivMW6| -];St+ ߗ侏y]ԿaI}qp?A}M¿ [.MnjO -endstream -endobj -2115 0 obj -<< -/Filter /FlateDecode -/Length1 11124 -/Length 7803 ->> -stream -xzy|TUp9N;kwMwNH$feI a IH`F6'ѧ28#LfqWv@~{ǻ:VUgFu s@2Z|]S{1-e#++W} @7 vZqeH?kmiZ*S[ "ʩnBqkۖ7MJ(f]횵fKֵLnBR{[gDI}}KWϓ~=*G$ %b|NxHk&LJ[YOpIg4`:̇&x24O sɶ.(גBj{;yJ,#Np~|~4:W SE1XL-A2+h%J־ -'1]M3zˮbdN/\>R$;t3d`!`'~J#ɞ%^K"/ACq$68v:xACJ,(i?+)nSZa+}/y[<1Q݉QzK*O[%Jl*+a嬊bwRNw|_{x/(@AbYv mvY慱.~< ׎?84~'dd6#(=Cx^7=u_#C"ފECyglJsq>k(-[)`/ކx/>ini x;Pg`~@Іa\K; O+ >YKf\hySrs&gg33\T)a%'MJLZb"ͦc!LjD3Jk>%͚&b4ىUuUWjʤҔCeM4=βWJv[=KS -SsN5oA -J_Ն־Jo57h+[²`0@Y|}-3P0Ke K**}R2wV6ͯHt8|X\jT3U(Wi}Zje6>5ҷ#`f;|zojPtS>˦xTyKy_u])mXPpCc*o_uLXN};}x'uhW)4Rx}zLj[%$`F?!A>J{ߢz+I*& @߂C=JIv֠92dD&LeSՕ\vEeDl -}FR/ќ+e:-Nj5 ˽}b⛕>i}_ӕ i%>ۗU$#$(Kսs,b}:&s\tek qKH^P^睰m+J!˲dp$K͖(,WOtVIh}<5r,MQ^weP%85jhu*U>wV79J9J~61'_UW^x .Vhi__*ڬ${U)mf}K'v4$Z8[#1^ K}sLk:}@1t7xd$; UV*g¤矰Ct?.Q|/+L ef) _CE5>9\o68sII:Oj'=^*+tDQGG >>xmޭ뚠ӟl3&NK)rt.vk՞]d-~hː%>oLL,,m97fL:*$a3; -GxʿNo";fШk6 -UCEr^q"5r(>)>L DԤ趨Җ!}mJH -QҺ4/[N%( rjmσu:#l==[Q'xB2g2lշ{ܬsN/ѓs%7r1k35; ap 4#ӚQ9hjdMƫijvj4Z5z lr ڴ8Pz'oV-a3A;NlH|;H@d&8MQ"Lg"=qM5+:/ATsYrN4dQ*dN 4B3a;AWy5/r'^*?\J]vAnJ@_d =%yr -F٘޸OhڜmmZY^O(J%%)ǙOI6-ݶO9\sTXVSç<8z7Tz5;Li$ aAA Ag,qZFj=l1m2G)9Eήs!q~mi m{8}TPU*_Ѳ\lKn)-åPBHN )Pm =K;ijdX3Y8łR*G%*N#c|q94ʰt:KPj|X[j(5RkpŪX`8Kqs0a|apv(&6LTQK6،ٌKli6cw#e*NVqL&ǯZB'` =DD.=գ y-(Mпlz.<n6t߳UO@NKA*zGYןBC?";{2m -RLIDDg*WZJ,KS)|%S%uI MLIt"8U&uFHQ/mV499LAh~{?h{b.TVGm^M bm$+##A2tZe{VR$xmJKm8mzA/&qC [砭@LKmEĞCmSRPrGmԣKRrʹaVZ얳]fb|U|m֮MNtf].\4:At Geroј՟ jԟEjV }QP7]}kk@XTOLTw1{{7o<*JeVPb-YTU/w$߃ }$5L07SyckWHC1:*(|TpY RX;G!(jCZFaRY1Rzg+J>/JBmRVBH%CV*KV(B~X8ImjcAT4') :?%gh8 Tqb:! #ϯCMX<νRe ׷}Clh6/oUhS#·B6-劸I啋-&RjhS^}E_\_4֣4V_~jj~eX]W?zݩth=x eqa5qX: 2|FE]]hu* ֫ԄLH `\]q_gggn]VEֱW<=>OOV4^66O߳s#vw7;Dʩ֘Җғҟ'pF\WTIK -h.*+>?ݩ|@tswKS`9znM ,$?C)O$R8{%7_ 4%t.Y.9R#3!9FzQV6]"Jq5T8@OSu?uLgz]80'rTDI,5vL)2R,k;kVF\≌*"f~vOɅeر,ڙgu`i.=sўƙwz\֙,~m'3%M>ڕiO)s 09:8CTOGP2^u<٨ѐh@0FDAˎY LFQY(5D4W,G./=Ng u€ -/?@8&mFԲ瞧ic6q{[ĖWbeB):Rmگ{v|`|{G$W'{ 6 xUmZbtuU& Sr\\֣}Z -KuZZouEvE=fxCO-r-i|& --Mo6nɾ]w{t^ן҉iVGUN0=(?VE-yM8ۜtA"D$w?g:L+MC9ţ"GAћ o@hôJ&caWk,䰋gi4 -$->OKH]:-31U2;'$h$SB3(g7$7cb$3/ݓBppԨi1&Ŵ Z6v=o7k{_dQe6P8IN֍[~}ƭkر5}rwnZafHaND1V!FcB(}d]^׀k%"vD#AzXy37WFT)5%irdsRbRbr"DLNogIۗAplHl_QfmaT!3sktATX1LݳU+MF4ѵG~^,ڕ<97(pV.(?}೗>Mav:^8j3;Zfa`8#mFefc&\/jP7A7 -p#&QZ]VqA ׁ͈n G64( ~R6&{ax.[DKQ7idZ?:;> -stream +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(goto)]TJ 0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -BT -/F62 9.9626 Tf 99.895 706.129 Td [(to)]TJ/F67 9.9626 Tf 12.291 0 Td [(AS)]TJ/F62 9.9626 Tf 14.062 0 Td [(and)]TJ/F67 9.9626 Tf 20.47 0 Td [(x)]TJ/F62 9.9626 Tf 8.834 0 Td [(ar)18(e)-362(in)-361(strict)-362(sequential)-361(or)18(der)74(,)-390(ther)18(efor)18(e)-362(no)-361(indir)18(ect)-362(addr)18(essing)-362(is)]TJ -55.657 -11.955 Td [(r)18(equir)18(ed.)]TJ +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(9999)]TJ 0 g 0 G -ET -1 0 0 1 146.769 574.688 cm -q -.49594 0 0 .49594 0 0 cm -q -1 0 0 1 0 0 cm -/Im9 Do -Q -Q +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -1 0 0 1 -146.769 -574.688 cm -BT -/F62 9.9626 Tf 166.233 552.771 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ -0 0 1 rg 0 0 1 RG - [-250(5)]TJ + 0 -10.959 Td [(xtmp)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(x%get_vect\050\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(call)]TJ 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 114.839 401.402 cm -0 0 313.823 115.567 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + [-525(xg%bld\050xtmp,mold)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ 0 g 0 G + [(vmold\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 136.657 506.308 Td [(do)]TJ + 0 -10.959 Td [(call)]TJ 0 g 0 G - [-525(j)]TJ + [-525(bg%bld\050size\050xtmp\051,mold)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG [(=)]TJ 0 g 0 G + [(vmold\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 0 -21.918 Td [(!)-525(Do)-525(sparse)-525(MV)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F231 8.9664 Tf 0 -10.958 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050done,agpu,xg,dzero,bg,desc_a,info\051)]TJ 0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(1)]TJ + -9.414 -32.877 Td [(9999)]TJ 0 g 0 G - [(,ndiag)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 9.415 -10.958 Td [(if)]TJ + [-525(continue)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 9.414 -10.959 Td [(if)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(\050offset\050j\051)]TJ + [-525(\050info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(>)]TJ + [-525(==)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29399,143 +29497,265 @@ BT [-525(then)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 14.122 -10.959 Td [(write)]TJ 0 g 0 G - 9.414 -10.959 Td [(ir1)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [(\050)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ 0 g 0 G + [(,)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ + [(*)]TJ 0 g 0 G + [(\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(1)]TJ -0 g 0 G - [(;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + [-525(\01542\015)]TJ 0 g 0 G - [-525(ir2)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.122 -10.959 Td [(else)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 14.122 -10.959 Td [(write)]TJ 0 g 0 G - [-525(m)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [(\050)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ 0 g 0 G + [(,)]TJ 0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(-)]TJ + [(*)]TJ 0 g 0 G + [(\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(offset\050j\051;)]TJ +0.25 0.44 0.63 rg 0.25 0.44 0.63 RG + [-525(\015Something)-525(went)-525(wrong)-525(\015)]TJ +0 g 0 G + [(,info)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(else)]TJ + -14.122 -10.959 Td [(end)-525(if)]TJ 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -32.876 Td [(call)]TJ 0 g 0 G - 9.414 -10.959 Td [(ir1)]TJ + [-525(psb_cuda_exit\050\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(call)]TJ 0 g 0 G + [-525(psb_exit\050ctxt\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(1)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(stop)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.414 -10.959 Td [(end)-525(program)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(-)]TJ + [-525(my_cuda_test)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +/F84 9.9626 Tf 1.02 0 0 1 165.649 403.191 Tm [(A)-337(full)-338(example)-337(of)-337(this)-338(strategy)-337(can)-338(be)-337(seen)-337(in)-338(the)]TJ/F131 9.9626 Tf 1 0 0 1 395.328 403.191 Tm [(test/ext/kernel)]TJ/F84 9.9626 Tf 1.02 0 0 1 477.212 403.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 150.705 391.236 Tm [(test/cuda/kernel)]TJ/F84 9.9626 Tf 1.008 0 0 1 236.874 391.236 Tm [(subdir)18(ectories,)-248(wher)18(e)-247(we)-247(pr)18(ovide)-248(sample)-247(pr)18(ograms)-247(to)-248(test)]TJ 1.003 0 0 1 150.705 379.281 Tm [(the)-250(speed)-249(of)-250(the)-250(s)1(parse)-250(matrix-vector)-250(pr)18(oduct)-249(with)-250(the)-250(various)-249(data)-250(str)8(uctur)18(es)]TJ 1 0 0 1 150.705 367.325 Tm [(included)-250(in)-250(the)-250(library)111(.)]TJ/F75 11.9552 Tf 0 -29.238 Td [(12.2)-1000(Extensions')-250(Data)-250(Structures)]TJ/F84 9.9626 Tf 0.995 0 0 1 150.316 319.088 Tm [(Access)-250(to)-250(the)-250(facilities)-250(pr)18(ovided)-250(by)-250(the)-250(EXT)-251(libr)1(a)-1(r)1(y)-251(is)-250(mainly)-250(achieved)-250(thr)18(ough)]TJ 1.02 0 0 1 150.705 307.133 Tm [(the)-335(data)-336(ty)1(pes)-336(that)-335(ar)18(e)-336(pr)18(ovided)-335(within.)-575(The)-335(data)-335(classes)-335(ar)17(e)-335(derived)-335(fr)17(om)]TJ 1.004 0 0 1 150.705 295.178 Tm [(the)-249(base)-250(classes)-249(in)-250(PSBLAS,)-249(thr)17(ough)-249(the)-250(Fo)1(rtran)-250(2003)-250(mec)1(hanism)-250(of)]TJ/F78 9.9626 Tf 1.004 0 0 1 451.344 295.178 Tm [(type)-250(e)1(xten-)]TJ 1 0 0 1 150.705 283.222 Tm [(sion)]TJ/F84 9.9626 Tf 19.098 0 Td [([)]TJ +1 0 0 rg 1 0 0 RG + [(18)]TJ 0 g 0 G - [-525(offset\050j\051;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [(].)]TJ 1.006 0 0 1 165.649 271.249 Tm [(The)-248(data)-247(classes)-248(ar)18(e)-247(divided)-248(between)-247(the)-248(general)-248(p)1(urpose)-248(CPU)-248(extensions,)]TJ 0.993 0 0 1 150.705 259.294 Tm [(the)-252(GPU)-251(interfaces)-252(and)-251(the)-252(RSB)-252(interfaces.)-312(In)-251(the)-252(description)-251(we)-252(will)-252(make)-251(use)]TJ 1 0 0 1 150.705 247.338 Tm [(of)-250(the)-250(notation)-250(intr)18(oduced)-250(in)-250(T)92(able)]TJ +0 0 1 rg 0 0 1 RG + [-250(22)]TJ 0 g 0 G - [-525(ir2)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [(.)]TJ/F75 11.9552 Tf 0 -29.237 Td [(12.3)-1000(CPU-class)-250(extensions)]TJ/F75 9.9626 Tf 0 -19 Td [(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.396 180.101 Tm [(The)-194(ELLP)94(ACK/ITP)94(ACK)-194(format)-194(\050shown)-194(in)-193(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-194(6)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ + [(\051)-194(comprises)-194(two)-194(2-dimension)1(a)-1(l)]TJ 1.02 0 0 1 150.705 168.146 Tm [(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 181.577 168.146 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 194.761 168.146 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 214.688 168.146 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 227.872 168.146 Tm [(with)]TJ/F131 9.9626 Tf 1 0 0 1 251.255 168.146 Tm [(M)]TJ/F84 9.9626 Tf 1.02 0 0 1 259.208 168.146 Tm [(r)18(ows)-268(and)]TJ/F131 9.9626 Tf 1 0 0 1 304.026 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 338.131 168.146 Tm [(columns,)-274(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 412.476 168.146 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 446.582 168.146 Tm [(is)-268(the)-268(max-)]TJ 1.02 0 0 1 150.705 156.191 Tm [(imum)-289(number)-288(of)-289(nonzer)17(os)-288(in)-289(any)-289(r)18(ow)-289([)]TJ/F75 9.9626 Tf 1 0 0 1 330.497 156.191 Tm [(?)]TJ/F84 9.9626 Tf 1.02 0 0 1 334.921 156.191 Tm [(].)-435(Each)-289(r)18(ow)-289(of)-288(the)-289(arrays)]TJ/F131 9.9626 Tf 1 0 0 1 450.684 156.191 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 464.078 156.191 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 484.217 156.191 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.705 144.236 Tm [(contains)-357(the)-358(coef)18(\002cients)-357(and)-357(column)-358(indices;)-413(r)17(ows)-357(shorter)-357(than)]TJ/F131 9.9626 Tf 1 0 0 1 445.62 144.236 Tm [(MAXNZR)]TJ/F84 9.9626 Tf 1.02 0 0 1 480.633 144.236 Tm [(ar)18(e)]TJ 0.98 0 0 1 150.406 132.281 Tm [(padded)-229(with)-229(zer)19(o)-229(coef)18(\002cients)-229(and)-229(appr)19(opriate)-229(column)-229(indices,)-234(e.g.)-307(the)-229(last)-229(valid)]TJ 1 0 0 1 150.705 120.326 Tm [(one)-250(found)-250(in)-250(the)-250(same)-250(r)18(ow)92(.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 164.383 -29.888 Td [(168)]TJ 0 g 0 G - [-525(m;)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +ET + +endstream +endobj +2111 0 obj +<< +/Length 4816 +>> +stream 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(if)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(do)]TJ 0 g 0 G - [-525(i)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ 0 g 0 G - [(ir1,ir2)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +BT +/F84 9.9626 Tf 138.662 698.871 Td [(T)92(able)-250(22:)-310(Notation)-250(for)-250(parameters)-250(describing)-250(a)-250(sparse)-250(matrix)]TJ 0 g 0 G - 9.414 -10.959 Td [(y\050i\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +ET +q +1 0 0 1 171.842 684.904 cm +[]0 d 0 J 0.398 w 0 0 m 199.817 0 l S +Q +BT +/F84 7.9701 Tf 177.82 678.079 Td [(Name)-3364(Description)]TJ +ET +q +1 0 0 1 171.842 675.041 cm +[]0 d 0 J 0.398 w 0 0 m 199.817 0 l S +Q +BT +/F84 7.9701 Tf 177.82 668.216 Td [(M)-5111(Number)-250(of)-250(r)18(ows)-250(in)-250(matrix)]TJ 0 -9.464 Td [(N)-5226(Number)-250(of)-250(columns)-250(in)-250(matrix)]TJ 0 -9.465 Td [(NZ)-4559(Number)-250(of)-250(nonzer)18(os)-250(in)-250(matrix)]TJ 0 -9.464 Td [(A)111(VGNZR)-1739(A)92(verage)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.465 Td [(MAXNZR)-1500(Maximum)-250(number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)]TJ 0 -9.464 Td [(NDIAG)-2574(Numer)18(o)-250(of)-250(nonzer)18(o)-250(diagonals)]TJ 0 -9.465 Td [(AS)-4754(Coef)18(\002cients)-250(array)]TJ 0 -9.464 Td [(IA)-4942(Row)-250(indices)-250(array)]TJ 0 -9.465 Td [(JA)-4946(Column)-250(indices)-250(array)]TJ 0 -9.464 Td [(IRP)-4448(Row)-250(start)-250(pointers)-250(array)]TJ 0 -9.465 Td [(JCP)-4411(Column)-250(start)-250(pointers)-250(array)]TJ 0 -9.464 Td [(NZR)-3891(Number)-250(of)-250(nonzer)18(os)-250(per)-250(r)18(ow)-250(array)]TJ 0 -9.465 Td [(OFFSET)-2410(Of)18(fset)-250(for)-250(diagonals)]TJ +ET +q +1 0 0 1 171.842 551.604 cm +[]0 d 0 J 0.398 w 0 0 m 199.817 0 l S +Q 0 g 0 G - [-525(y\050i\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(+)]TJ +1 0 0 1 196.805 395.491 cm +q +.33653 0 0 .33653 0 0 cm +q +1 0 0 1 0 0 cm +/Im6 Do +Q +Q 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +1 0 0 1 -196.805 -395.491 cm +BT +/F84 9.9626 Tf 194.96 373.573 Td [(Figur)18(e)-250(5:)-310(Example)-250(of)-250(sparse)-250(matrix)]TJ 0 g 0 G - [-525(alpha)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ 0 g 0 G - [(as\050i,j\051)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(*)]TJ + 0.98 0 0 1 114.839 339.81 Tm [(The)-252(matrix-vector)-252(pr)19(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 231.499 339.81 Tm [(y)]TJ/F181 10.3811 Tf 7.998 0 Td [(=)]TJ/F78 9.9626 Tf 11.584 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 0.98 0 0 1 266.356 339.81 Tm [(can)-252(be)-252(computed)-251(with)-252(the)-252(code)-252(shown)-252(in)]TJ 1.003 0 0 1 99.507 327.855 Tm [(Alg.)]TJ +0 0 1 rg 0 0 1 RG + [-250(1)]TJ 0 g 0 G - [(x\050i)]TJ -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(+)]TJ + [(;)-250(it)-250(costs)-250(one)-250(memory)-250(write)-250(per)-250(outer)-250(iteration,)-251(plus)-250(thr)18(ee)-250(memory)-250(r)18(eads)]TJ 1 0 0 1 99.895 315.9 Tm [(and)-250(two)-250(\003oating-point)-250(operations)-250(per)-250(inner)-250(iteration.)]TJ 1.02 0 0 1 114.839 303.412 Tm [(Unless)-327(all)-327(r)18(ows)-327(have)-327(exactly)-327(t)1(he)-327(same)-327(number)-327(of)-327(nonzer)18(os,)-347(some)-327(of)-327(the)]TJ 1.02 0 0 1 99.895 291.457 Tm [(coef)18(\002cients)-388(in)-387(the)]TJ/F131 9.9626 Tf 1 0 0 1 184.827 291.457 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 199.225 291.457 Tm [(array)-388(will)-387(be)-388(zer)18(os;)-459(ther)17(efor)18(e)-388(this)-387(data)-388(str)8(uctur)18(e)-388(will)]TJ 1.02 0 0 1 99.895 279.501 Tm [(have)-270(an)-269(over)17(head)-269(both)-270(in)-270(terms)-269(of)-270(memory)-269(space)-270(and)-270(r)18(edundant)-270(operations)]TJ 1 0 0 1 99.567 267.546 Tm [(\050multiplications)-250(by)-250(zer)18(o\051.)-310(The)-250(over)18(head)-250(can)-250(be)-250(acceptable)-250(if:)]TJ 0 g 0 G - [(offset\050j\051\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 12.782 -21.523 Td [(1.)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -10.959 Td [(end)-525(do)]TJ + 1.018 0 0 1 124.493 246.023 Tm [(The)-244(maximum)-245(number)-244(of)-245(nonzer)18(os)-244(per)-245(r)18(ow)-244(is)-245(not)-244(much)-245(lar)18(ger)-244(than)-245(the)]TJ 1 0 0 1 124.802 234.067 Tm [(average;)]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.415 -10.959 Td [(end)-525(do)]TJ + -12.453 -22.056 Td [(2.)]TJ 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + 0.98 0 0 1 124.493 212.011 Tm [(The)-243(r)19(egularity)-243(of)-243(the)-242(data)-243(str)8(uctur)19(e)-243(allows)-243(for)-242(faster)-243(code,)-245(e.g.)-312(by)-243(allowing)]TJ 1 0 0 1 124.523 200.056 Tm [(vectorization,)-250(ther)18(eby)-250(of)18(fsetting)-250(the)-250(additional)-250(storage)-250(r)18(equir)18(ements.)]TJ 1.02 0 0 1 99.895 178.532 Tm [(In)-323(the)-323(extr)17(e)1(me)-324(case)-323(wher)18(e)-323(the)-323(input)-323(matrix)-323(has)-323(one)-323(full)-323(r)17(ow)90(,)-342(the)-323(ELLP)90(ACK)]TJ 1.01 0 0 1 99.895 166.577 Tm [(str)8(uctur)18(e)-246(would)-246(r)17(equ)1(ir)17(e)-246(mor)18(e)-246(memory)-246(than)-246(the)-246(normal)-246(2D)-246(array)-246(storage.)-307(The)]TJ 1.02 0 0 1 99.895 154.621 Tm [(ELLP)90(ACK)-246(storage)-245(format)-246(was)-246(very)-246(popular)-245(in)-246(the)-246(vector)-246(computing)-246(days;)-246(in)]TJ 0.98 0 0 1 99.895 142.666 Tm [(modern)-231(CPUs)-231(it)-231(is)-231(not)-231(quite)-231(as)-231(popular)75(,)-236(but)-231(it)-231(is)-231(the)-231(basis)-231(for)-231(many)-231(GPU)-231(formats.)]TJ 1 0 0 1 114.839 130.178 Tm [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_ell_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ +0 g 0 G + -66.12 -39.74 Td [(169)]TJ +0 g 0 G +ET + +endstream +endobj +2095 0 obj +<< +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (./figures/mat.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2117 0 R +/BBox [0 0 438 395] +/Resources << +/ProcSet [ /PDF /ImageC ] +/ExtGState << +/R7 2118 0 R +>>/XObject << +/R8 2119 0 R +>>>> +/Length 3551 +/Filter /FlateDecode +>> +stream +x\K, *j pv~HR 'ɖsDEIg<?ޯ?|ۏ~0{tz:spMl @T^c=kq* jx HHҨa01 +u~|S8K!-yKd93ΜhG%s-f{4j:9yfl<ФZy>`!01C5AnQ@}䰝L0~|"y\Ξ;=r-ԱvTmtY<|M4Db.~|҈M ᲋'MXLB0)"8SCfƤl" $ =yo"0.@^bL9@)Rg9IyH.J>8e myp`tMh4@{9·9>Gnh\՚h/L}y%,,tS(IM_?h=D֮"g|\=: +q_R W4ZbgHy_y+_j+NG!=%o~}}1OFKɈ. J0n +VZɼxKJ$L]A[ + - j) d-3bFO]zP!<,> +-˛OJXja \NsI Zӧ:x7oר-^brW_{X$İ9$j/b6n__[F{Ǐ\V)VԦ"Z"չТV0 &ïitV| +k aNB#yB'5e&fR@撁cTL졉A-8Vi> SEa-6rF.*'Ύ:9%e\ +.h#Z55Ro9VyfGCZ +-{Rfw=fNЀS|drz +GZ/v{- +ׯ7INAJXFQzeYo [(u_>X~ tqZ +riPf*^2x˯-R {k|a/|Xd(pNJSI\tv[2=5_嫼|)gWE/{К݁"6 +'Y>|TPh2YAxS[_FD5Phc.n^eUhPY8Jb-/gQE Ϧ+4~ߌ+R@97rA 00dTxF5h=-jQnWn%5MyVٹ Vut*_0-jcQhk4[_@? +f90jA5Q-$8h%;e?;5,duM^,*NmRZn&L_(uWD }s˩FĻqc֝mo9C[( ݁"@:?Ťْ9+hGnC-Yʜ=0U }7Qp&X^){j2sH^mFgmY0뙞ޞ-"ӚRjq;dW^I W3:)W{o'1ҵKe57=M\|xcWb>ii&;?ȜCZELzna 㡩o9`1s~Aò2k0t1Mda57i%>.(d:{BN`r|&5`!5osPX E ;A?ބ=+[e{d g4{o0qW-f%k\n,#`Rx ;… yNS*O9eYZE\*Y%zBB6#Á'|E` 6 +녜Һ=4Hj~=X=Cݑ" kEKգ rRJEJO7͇͂ +JXxC[ S^zݰ.F$ 5`2. L 0 # Z(DSj*'f;?buRr* ݁"@ai(o^/o*o +endstream +endobj +2119 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceGray +/Width 454 +/Height 425 +/BitsPerComponent 1 +/Interpolate true +/Filter /CCITTFaxDecode +/DecodeParms << +/K -1 +/Columns 454 +>> +/Length 164 +>> +stream +&@ +endstream +endobj +2123 0 obj +<< +/Length 7548 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +1 0 0 1 205.095 609.491 cm +q +.52 0 0 .52 0 0 cm +q +1 0 0 1 0 0 cm +/Im7 Do +Q +Q +0 g 0 G +1 0 0 1 -205.095 -609.491 cm +BT +/F84 9.9626 Tf 203.747 587.573 Td [(Figur)18(e)-250(6:)-310(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-250(5)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +/F75 8.9664 Tf -16.48 -31.498 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.426 0 Td [(i)-243(=)-89(1)-178(,)-98(n)]TJ -5.536 -10.959 Td [(t)-168(=)-32(0)]TJ/F75 8.9664 Tf -1.13 -10.958 Td [(d)-11(o)]TJ/F84 8.9664 Tf 17.682 0 Td [(j)-272(=)-89(1)-177(,)-121(m)-32(a)-32(x)-32(n)-32(z)-32(r)]TJ -5.793 -10.959 Td [(t)-734(=)-734(t)-734(+)-1289(a)-92(s)-226(\050)-236(i)-381(,)-358(j)-342(\051)]TJ 85.313 -2.332 Td [(*)]TJ 5.293 2.332 Td [(x)-176(\050)-288(j)-156(a)-289(\050)-236(i)-381(,)-358(j)-361(\051)-178(\051)]TJ/F75 8.9664 Tf -102.419 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ/F84 8.9664 Tf 0.022 -10.959 Td [(y)-156(\050)-288(i)-288(\051)-730(=)-734(t)]TJ/F75 8.9664 Tf -10.782 -10.959 Td [(e)-20(n)-19(d)-631(d)-11(o)]TJ 0 g 0 G 0 g 0 G 0 g 0 G 0 g 0 G -/F59 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F62 9.9626 Tf 60.055 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ +0 g 0 G +/F75 9.9626 Tf 16.499 -17.519 Td [(Algorithm)-250(1:)]TJ/F84 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(ELL)-250(format)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -97.969 -26.976 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.953 0 Td [(psb_T_dia_sparse_mat)]TJ/F62 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 99.895 220.639 cm -0 0 343.711 115.567 re f +1 0 0 1 150.705 316.473 cm +0 0 343.711 126.526 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G @@ -29543,7 +29763,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 112.299 325.546 Td [(type)]TJ +/F231 8.9664 Tf 163.108 432.339 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29559,16 +29779,16 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_d_dia_sparse_mat)]TJ + [-525(psb_d_ell_sparse_mat)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(DIA)-525(format,)-525(extended.)]TJ + 0 -10.959 Td [(!)-525(ITPACK/ELL)-525(format,)-525(extended.)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G @@ -29578,7 +29798,7 @@ BT 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG -/F102 8.9664 Tf 0 -21.917 Td [(integer)]TJ +/F231 8.9664 Tf 0 -21.918 Td [(integer)]TJ 0 g 0 G [(\050psb_ipk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29593,21 +29813,13 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(offset\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051)]TJ + [-525(irn\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G + [-525(ja\050:,:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(nzeros)]TJ + [-525(idiag\050:\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG @@ -29625,171 +29837,197 @@ BT [-525(::)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(val\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(data)]TJ + -9.415 -21.918 Td [(contains)]TJ 0 g 0 G - [(\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 9.415 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -9.414 -21.918 Td [(end)-525(type)]TJ + -9.415 -10.958 Td [(end)-525(type)]TJ 0 g 0 G + [-525(psb_d_ell_sparse_mat)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -/F59 9.9626 Tf -12.404 -39.731 Td [(Hacked)-250(DIA)]TJ/F62 9.9626 Tf 0 -19.039 Td [(Storage)-362(by)-362(DIAgonals)-362(is)-362(an)-362(attractive)-362(option)-361(for)-362(matrices)-362(whose)-362(coef)18(\002cients)]TJ 0 -11.955 Td [(ar)18(e)-247(located)-246(on)-247(a)-246(small)-247(set)-247(of)-246(diagonals,)-248(since)-246(they)-247(do)-246(away)-247(with)-247(storing)-246(explic-)]TJ 0 -11.955 Td [(itly)-361(the)-361(indices)-361(and)-361(ther)18(efor)18(e)-362(r)18(educe)-361(signi\002cantly)-361(memory)-361(traf)18(\002c.)-643(However)74(,)]TJ 0 -11.955 Td [(having)-229(a)-229(few)-228(coef)18(\002cients)-229(outside)-229(of)-229(the)-228(main)-229(set)-229(of)-229(diagonals)-228(may)-229(signi\002cantly)]TJ 0 -11.955 Td [(incr)18(ease)-201(the)-201(amount)-202(of)-201(needed)-201(padding;)-217(mor)18(eover)74(,)-211(while)-201(the)-202(DIA)-201(code)-201(is)-201(easily)]TJ +/F75 9.9626 Tf -12.403 -39.81 Td [(Hacked)-250(ELLP)74(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 150.396 263.883 Tm [(The)]TJ/F78 9.9626 Tf 0.98 0 0 1 169.043 263.883 Tm [(hacked)-236(ELLP)132(ACK)]TJ/F84 9.9626 Tf 0.98 0 0 1 241.59 263.883 Tm [(\050)]TJ/F75 9.9626 Tf 0.98 0 0 1 244.841 263.883 Tm [(HLL)]TJ/F84 9.9626 Tf 0.98 0 0 1 264.905 263.883 Tm [(\051)-236(format)-236(alleviates)-236(the)-236(main)-236(pr)19(oblem)-236(of)-236(the)-236(ELLP)94(ACK)]TJ 0.989 0 0 1 150.705 251.928 Tm [(format,)-252(that)-253(is,)-252(the)-252(amount)-252(of)-253(memory)-252(r)18(equir)18(ed)-252(by)-252(padding)-252(for)-253(sparse)-252(matrices)]TJ 1 0 0 1 150.705 239.973 Tm [(in)-250(which)-250(the)-250(maximum)-250(r)18(ow)-250(length)-250(is)-250(lar)18(ger)-250(than)-250(the)-250(average.)]TJ 1.02 0 0 1 165.649 227.97 Tm [(The)-421(number)-421(of)-422(elements)-421(allocated)-421(to)-421(padding)-421(is)]TJ/F181 10.3811 Tf 1 0 0 1 396.321 227.97 Tm [([)-24(\050)]TJ/F78 9.9626 Tf 7.402 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf 8.039 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F181 10.3811 Tf 34.072 0 Td [(\051)]TJ/F179 10.3811 Tf 6.874 0 Td [(\000)]TJ/F181 10.3811 Tf 10.919 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F179 10.3811 Tf 10.6 0 Td [(\003)]TJ/F78 9.9626 Tf -338.122 -11.955 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.103 0 Td [(\051)-537(=)]TJ/F78 9.9626 Tf 23.267 0 Td [(m)]TJ/F179 10.3811 Tf 10.451 0 Td [(\003)]TJ/F181 10.3811 Tf 7.89 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F179 10.3811 Tf 36.523 0 Td [(\000)]TJ/F78 9.9626 Tf 10.92 0 Td [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F181 10.3811 Tf 31.103 0 Td [(\051)-23(])]TJ/F84 9.9626 Tf 1.02 0 0 1 317.666 216.015 Tm [(for)-382(both)]TJ/F131 9.9626 Tf 1 0 0 1 358.763 216.015 Tm [(AS)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.101 216.015 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 394.183 216.015 Tm [(JA)]TJ/F84 9.9626 Tf 1.02 0 0 1 408.521 216.015 Tm [(arrays,)-416(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 475.396 216.015 Tm [(m)]TJ/F84 9.9626 Tf 1.02 0 0 1 487.15 216.015 Tm [(is)]TJ 0.995 0 0 1 150.705 204.06 Tm [(equal)-252(to)-252(the)-252(number)-252(of)-252(r)18(ows)-252(of)-252(the)-251(matrix,)]TJ/F78 9.9626 Tf 1 0 0 1 338.593 204.06 Tm [(m)-40(a)-42(x)-70(N)-76(R)]TJ/F84 9.9626 Tf 0.995 0 0 1 375.039 204.06 Tm [(is)-252(the)-252(maximum)-252(number)-252(of)]TJ 0.998 0 0 1 150.705 192.104 Tm [(nonzer)18(o)-251(elements)-251(in)-251(every)-251(r)18(ow)-252(and)]TJ/F78 9.9626 Tf 1 0 0 1 308.656 192.104 Tm [(a)-25(v)-47(g)-60(N)-76(R)]TJ/F84 9.9626 Tf 0.998 0 0 1 342.132 192.104 Tm [(is)-251(the)-251(average)-251(number)-251(of)-252(nonzer)18(os.)]TJ 1.017 0 0 1 150.396 180.149 Tm [(Ther)18(efor)17(e)-245(a)-246(single)-245(densely)-246(populated)-245(r)17(ow)-245(can)-246(seriously)-246(af)18(fect)-245(the)-246(total)-245(size)-246(of)]TJ 1 0 0 1 150.705 168.194 Tm [(the)-250(allocation.)]TJ 1.02 0 0 1 165.649 156.191 Tm [(T)90(o)-335(limit)-336(this)-335(ef)18(fect,)-358(in)-335(the)-336(HLL)-335(format)-336(we)-335(br)18(eak)-336(the)-335(original)-336(matrix)-335(into)]TJ 0.985 0 0 1 150.705 144.236 Tm [(equally)-254(size)1(d)-254(gr)18(oups)-253(of)-254(r)18(ows)-253(\050called)]TJ/F78 9.9626 Tf 0.985 0 0 1 309.891 144.236 Tm [(hacks)]TJ/F84 9.9626 Tf 0.985 0 0 1 331.323 144.236 Tm [(\051,)-254(and)-253(then)-254(stor)19(e)-254(these)-254(gr)19(oups)-254(as)-253(inde-)]TJ 1.02 0 0 1 150.406 132.281 Tm [(pendent)-249(matrices)-249(in)-249(ELLP)90(ACK)-249(format.)-315(The)-249(gr)18(oups)-249(can)-249(be)-249(arranged)-249(selecting)]TJ 1.02 0 0 1 150.705 120.326 Tm [(r)18(ows)-331(in)-332(an)-331(arbitrarily)-331(manner;)-374(indeed,)-353(if)-331(the)-331(r)18(ows)-332(ar)18(e)-331(sorted)-331(by)-331(decr)17(easing)]TJ 0 g 0 G - 164.384 -29.888 Td [(167)]TJ + 1 0 0 1 315.088 90.438 Tm [(170)]TJ 0 g 0 G ET endstream endobj -2118 0 obj +2097 0 obj << /Type /XObject /Subtype /Form /FormType 1 -/PTEX.FileName (./figures/dia.pdf) +/PTEX.FileName (./figures/ell.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2126 0 R -/BBox [0 0 499 211] +/PTEX.InfoDict 2134 0 R +/BBox [0 0 447 205] /Resources << -/ProcSet [ /PDF /Text ] +/ProcSet [ /PDF /ImageC /Text ] /ExtGState << -/R7 2127 0 R ->>/Font << /R8 2128 0 R/R10 2129 0 R>> +/R7 2135 0 R +>>/XObject << +/R8 2136 0 R +>>/Font << /R9 2137 0 R/R11 2138 0 R>> >> -/Length 2502 +/Length 2281 /Filter /FlateDecode >> stream -xZneWܐ xJ$a(Q@9ﻪNuv ཪ.:ϗ#][J1\|[VI~=>o&P7UU&$&&l&P,χ!AkҰ\m+K;ʒm!!sxko">YF\Ի;?Ojt\YcZnP7՜? u`m,%^7_+2r -5"}9 @;]prv.e{1<\m6"9.v*#oUNM@^IU#$Ps Q⼣cQJ_5&)v8E_&'|WNP1!#┊|]j}qFъގ{a4F)Frr^QQ +RR7y_W5@&LaM8zƈ֯vc&EV}I yjZ"ūj"jDP3&`c126ާF%1x)hfЙ'%H@lfQ/5,nߌ&-nr7oT!~XJ_-W |⑳4,¨(8,K3]pA=DǑW3R2&WH3FsH=}54ȵ_Rd/t3dsl~ -y(ebEc6+fh6+hC$tʥ@w$>K#<;87RY%h^WJ*+զ!_9)hl4pnּqK56Ӎ,@ /)ߎݏ3w++(R -mаK㩎8ŵ2@2'.#vޯB7ob+7ʈ☦xQ4BLƨ_+Jʏw˹4M3\ -kE7 -k%+0Y+h+ڮ+h+ڎו!8:W_ij -mQYO":-GC5-t^_BNܞUxv(2X&TX5*$1lKZxSbN :Ed)SD1S N<_܆GH.3<@# -$;m)8K(qW@/jˆrAA,$t!]+nHE~Y] wc%/.|SB 0_#q]EmO!t_EmO'+b[w}>k;^&>D-?Dmu*Zmvɏv~t|̓C|l<.|+%o_SêOZSJ|၌}ud8}&|:ˏSxcX8{7Y$+_eAӄb*C4 t2{,5:*j!qKqq\OqL|"qS 7  P ʍs|&;Gh-O%b;:H5in92@&JdG@^)D $XXf"M1JAT45rՆ 3@d -rca8zDbHd'\L/1ٌ,0Fc)T#  7,j7%ΥR6q4/ٸg]\\W\+3,mLrJ7&?9.yQQШѕ&Gsm7LϋI7=mMm/]o/vUQxT._lâQU.$Rg{cLq1><>bJ:_ƽ:dp>yov翑ӑ-u縑߿&& +xYˊ%WU~,okOý6=^! )EM3Pv)rZN8~s|9Z&vM +|-7;}Ζ)d_Dg|]]`l:H4d(f)֛d)L"bZ^3-~Ʀ%Luyf \HxPiGZb_NIIKP@``kM8ؖ8N6t%3L1V싋-5I@Ņh\ɶ!%/ 5QRŅUBk*#Hۑ?Hf[cǑ-"քNPYC&i]3D_(ԮQve3jJVggTen@in;Yi@fsa3g]FgsTAV܎ӓ+npN>.P;~R@c,S cߗ3ίޓKHNKR1 ҭ}|_i,K@4ytҔ[a>3-0'I$WPo%R*NڧK@X ʊF(9(jScA-\pCc&2k@=WZDD ND bENzUzV`T}Y@3Za_YQW5e^Mrj"K-wQU0FEX>5(!N bEZzԐ¨QŅVc1,2fɊb2/\4zK/2ome.N;z狩W04LeIG,N{PeZD>R2Ⴥ$].,-,-.uru]RNUJbϒ%ƒe](^E/""YE(:{/ȪUdr63hhk rѢ[i ҵ8 i ٮZZ9b E+#%E-. V\mhEdբ7Ryl6ky`d(T_>Ӕe+]@zcC׸l_&_64xn_'e:9F=Q/x؏_ ݾPyNhǞ(~J7+n$֭Lxxф8CySׄ ]f;XkL'/,kV@VwFjUQ/B 8Q!=ջL|LO/sbj p4b&zpLf.($}6OsXȅ_\@ *Hj`˂[^3[oM q<խ ؟! [~ UμHX`ZD .y Y*~TD%4ϴIcf QcYHC*cJRҀG ;ɿ@3~ZLkŎ8E8~xO_([zR6 +y-?Gz5O}MsAtԏ|THF +endstream +endobj +2136 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceGray +/Width 510 +/Height 227 +/BitsPerComponent 1 +/Interpolate true +/Filter /CCITTFaxDecode +/DecodeParms << +/K -1 +/Columns 510 +>> +/Length 48 +>> +stream +;Y endstream endobj -2131 0 obj +2140 0 obj << /Filter /FlateDecode -/Length 177 +/Length 171 >> stream -x]1 EwN ,KdhU1!Co_I뛍ur6Q^ Qc=*3,֑ڪtPj&w{6iGy [ -t s1#8UlV"αCcfb/9=FpQbxCvQY +x]M FOĸma0,;vߛ|~D. #ƪ[ q2WNyYz&GNYM9.^i'dmQtCM)Y:2D^26Y?iRt4ఆ6޹Wc,Ož=+V endstream endobj -2133 0 obj +2142 0 obj << /Filter /FlateDecode -/Length 197 +/Length 191 >> stream -x]M FmLqѦi{ ꢷ0j] #kkʳG Vn", FY^ fҁeM';3Mטy%hQBIk?={Ao3d++ĚJh ˪P* Q$ĆFCι=7[WL-asb +x]= {N ahbc d( !w!}C3\/W2m)dj7 & ty[j;ըgI3T|"PL]> stream -xY{xTյ_{sf&Lf$Ʉ$&w1!$T$!HBLE4p-> -Q/`Dh@D+V[Wk퓀r~=;kZ{^g'ĈF$zB26ō[U7nls6-hOd~yEuSY֕ko[1?UM_t+W06f/Ql4j]wF (~mscp;s(v]wZLQuM#ҩֶlhj -Я!;EnJ'|88?4;rI5όtAGY4KOP5tP,^#A)\ĩRJ{]64@9TIxJiWݑЊ2`kBG}&e>Xʉyc顙h u?S.{xMLVHFJ h -܁hߏ>E)IJYf6ɯ(OUT.w He3vzQKc>"V8&&HԊn:KWnz#R|P.M)ȟȦ[_ D[COt>IkV>uȺ>=0{NٗL>2^W(6?/FF!:Qc]E(3AkLsg.\wC46^$8rR]O=(O#Og+Og*24dC.V`P(7,aKQY[:wٝ{^Qc(?f'P~β߲߳O9 d|fZgy|Jތ7Xoy^{ďK-•\%_+ʝi R*u)4tiay%\mn0o2eXح~yo>ӬUMTpu3EbOB]ǺjqKIQ*b~e -Z$VCC9DIbXǼYq4$)wofq3Tegս r+<B|;(Ջq{:o){c {lo!츗Y]`멅=@5#ƞYjƦ3D4JY6Ob|(7. Vܹ ѭxv1ӂMd䤇>ܱwȳE.-Z_"]TH'wS6E:rsrck(Y[|/y&:X+WW?ҷoV?(RC bg -aݎ(o:IX -ڋ,n7#O#?[J+ڍy=z<:4(wkf<y2;5j|Mt~ knQcwu:UnAb㪮`X˴\ꉶjEMOZzXtfTxJ4k-7GՈm}mQ>45m75)yHJHn+CY7$ݒ}HN*Y nW.*/qB#\tMkX>lƆxYRoЂC3G=FOPߛ,51r,k2yق68];B3qm u9Ek_Ӿƽ.l^hiWW5 -lV]]+Ul븨5]-Е؞W$VS|}I΁{L ۝~ao0X]gpBCNUC~QgpiHeJ︼³%Y|T^9`nkެ}' UTv;b9hol\!{1~3 @fq:;G -ف]|<!fNB"xJ%vb]|ߠ>іtHP)ɠЇO}и#퍢6BEk8(ɀ (vۍ3z@ A Sksأk7%!݌oF6#rIhM:ybt6Agt6!*Z`qoE%_1-mq,G 縐d+{ -9a w~݊;BRɐ6FHnSoa -[JbE#S"p`"pV넘K,uuѡtJA9?) -BHxG~(uٔPTKTgpD -QQj3D;p|Q,:E  Vo=cUuSi4hRݦSTm -ZL]nS..3Y[V᰺րڪ̬dh/-P:f@V|&3h١g\;vp XJ!@ˈtUrHcEle 0-Z6l:/CP o"+&C>h\d_~)P?,DzlX2:o]N~Yk64WirWboqN~%_W\qWvV:YuJjSta_AA3 N`:ug.@> P π TzFn13d&&+¶[0 y#_jWMp-kuJ: .@ @KQ% '(9Ygq8x rƞ2 -ζ}9l]mcP9n{۳%y%%6B$$fi $zl_ylyl{l7xdQxm[V܌cR))E='S#"qZ)\]~MB{izVA=*er9G7;;Gj{{-'3Og̝̎2dচc?evdk,7lO6[C0 -6kՔdR#N ' +U6Bm%Y5d9==_aOIU -6QFzrN(v >Ǘs.u%8O[?]rK.[76$8j;Tƌ nVBlfgGSYTZSl/YyCƏ픋RWSiuDg(U"{FrXú,sac/|,҅/O?qGCrˈ hL,1D4ibi2k'O(S3S8yqg.ߗM=_>tְvIES.zY){[?v\ѡyz bLXdz(pB΀oǖ$8FnDd݂%;[M4GqFYb/P&;vŞrgs#8.s-F_\ľ %x'%&'$y&M&F(̃l'MM6{ӼOm opC#ŏ1GeщpōSbXU$=Fفlewgd+q[GA;izeuBeXM Mf”mZ)QeJk`%Ǡ ,Hjh *8ƍے01~ -?%9.1S) -'O,2FFgh[zt#wҖu/ܖq]AִEfN{ϳy J2tCſ y~a6#=jEUدV9NJd7!}j.QI0U*-d붽Nw;|fM#fed W@BpEIo 3=Ǻ̚q$PnEU翥;\v;s\nl@#1y -_ [C,0Z +ׅÿ]i ^g\oȯ'/! `?G&XI,bQ ~8߇^: Zp"'Drms#0F~6McӴBi6U Ⱦ?GN_XR=$=zC/]lQdE3ꊭi +xzy|TUp9Nw$$ݝ YĖܬ, $,Bb:@@0$(& OqC#D::3nϑ8dqGHuo7{}{RUTԩsN 8<.xvC +I + ,P;a:#M@ +8.*p`ҡ>Hj!_{I+ g0q>P~B7+|JOgD@tÿA$7 B3M%8 ۄ7x\GXMٰA|_VSgЊ%ZaMb?8 9DI\˂w?|uqa&4.oЀ6Y|V ])~8qNbVf%kY!#Y Vc|;V?!iey$ty pަq|Lv>ag4a*̅xVx3=i^7mS^KmJ~PzfTp#aN}}M0YR,$Q,VZ|kp +c0iFRo534=c#c> Zd.x1d*Oi;<[ y)_|'N8(|(ăڦV"[ hh\i0g9yM4vJ`l^xA臃4p +~ ? +:i+5uwC2VI,R:JX9b+ݔv3]nCi??@GiMܯySmֽuqR楆KXcx/`SQܟMAWA(ZZilt^IJd?(AQ v0 dPIKweJOƒ;PV1#ΜOx!Fȼj<96dJ`3y:aEGh+錪3 > +vwAcpOX(a2lB-P=y mш'WxbgIp{CH& 5)zn30a*N'YcWS}jE==$edڵkN\X7)7gbv;3#=-Օ"%; q6kltTdn2:F8CȪ_'J3fd+eM?bx}bU]sxU5՚2i.4否|E-x +s)j~7Q +J[kÇ^Gj}ko0K-aY0fr>>ifxDK8B*WV$8 Y>,_*5@*ݪ +4>ڍc2@m\&-kǛ>"oϺ"5Y^[i[P[?:@m[Eo'VwP_zM:y(s +ͮET8U^*Z{Wyia{}0o/@|wA$H Mwކ8w$;k2@yۗ8V8M-fg0nq!Aٶ8t*˻- C3|=sCe4'Aq7W _\Hz.KTJσR-Q>/-!y|zzGewܶ *Ss},5S"כ^aП誒*WzgV1ykXW"JJި%4/ hu*U>wF79JyJ~6>'_5WӀTV`qooU* +VU4K{J%7$Z8[#9V ,}C0Bp@6 `&l'!U8 ?HK̈́sX#M +*:|;=LcnD>M|z>=TVDOS9cQ'}D}K9Ny?n)M" Sn'vvR #]V= #&D\NI]ָ̓~2f2fffHΦN6D:Hgl"ꯃ [AvW>gT]w+%~ 1Fu_O,JN=qy}?a# fEE +e0>1DIpn#`M8@K)9!>@wn-tBnFyPrH RȰ7zpW߮sޡ:FO>fQD%Lu]Z;! !|Y;.hTyULV겋rSp2?wd))͓ EFF6JƽBjKo+JڽBT*I/+H9]B_͑5kƚ>nSiKGqyS̥ײ#4F» p0=L= ":q߭ʔ"gW9M8n#nNm"!U;;}GT~~W)Ap6\ %",NNNp@)-aJ!%&!6NŒ &@%7Taݝ<b'(t74`ox)T7;|Χy%UlV9-_ 8v?lGKl)`bCo,<ֲʊ]! q#[[9OƊ+jI < +Q!YQdTjT5rʊ+8SQ"yEUZj+Bj, RԶRXFjƌf1&(J.d).RpMQKptC::LG:_K@>ZTy{oVX=ۼUM- +21д_*&bV.X*TJap_wyU}wXX׾!VԾau]uAfMp6Zڧ!2(L(4TTD/"8B `\Yq寣S.7.M_R'{+PY^6Oϳs#vu5;dd֘ܖܝܗ;HFPLNK2"oN*+>ҟRP>:BݹɰnH7l" !oI!gtPzlp+As 6-CrNzJlD%af# ~CI <6چp# Щw');;nP@qpZRu~d +Z"r;j] +ǔޙA `/eUNA9iQ8F|Q{pj?O]jVz&>*G66b&zXxiiռUWB,q 63=CQ32CwR)G\sy,C,шiKܞٖse%"(oF/7n\XkD#cc1i0 -5UJ֞Y( c;56Lw ?uS'mdt$ٕ9fJCk3Ym-ɄdNz3j5zazbMΈ' O?qp(x l#1tĄ8kMlĂqYZ[c8c㘨YccQ)^/GKz|hpwܑ87p"3&~F5FEuG QQ2M*~sĝwL(эu>vfg_هHL>gteo̾d2JdZHk EEj7\\n nBZV<9?OF˴μɓG n^;w˝iؼzQU:v~eR_^yXs‚#~c^yzEʰ*CupZS3o邑iKƉϥOxjY?'~8Ssgr17 r}4Qv$sbH? z)=ljcZAAl#?ehf`ar 䨓Q,*.+ Zt +:G{JFݣJFFN- Of4Nət9 +OM s4c݌If9 imF)32ЧuRJuXuɩ*+7$e)km-EeC{}KsqZ]G8jw}Uuëj5m-*tbưkumҤ]ѽO&Z^Z8H|(5 im{ =ƞ;\=w !Dka3j! 5&O5Y]&Wx5n;Mw? @1g7i7䯂UH]֚nJ[)O{=;"}LxD3'bN;4|e2˴/2&}Z1 V+lCh~"-H92䌞 .gx33F2 "vv2ť_FC9:R,˖\ -R=X9UTLHES- RlDs|3(0$5cBd+仗U!]b-<9r +*ƴ  yV1vS}o-<{^bef7P8 .օ)GZ~۳؆-;4}rkwnY,W/:X M:u׋bBLH}<ʩLN + +;ڠvq.XWN<;U`4 95!!1!)kR.C-4N!NXb6ݞlHKL3ą43UU2VD4Sj)#O_fm\}rʖ5Vܙ417(pF+ؑ?{>MaOt:?zאkJ&HP&N"ԗlMo)>FLx@I6q& +B9 $ ߣm67!(/e#A~A^d-tޞS~A-Vq{k˷ud(g J$Sh~c.OkRZD!]!L*~x\'8tC*/ + *XIV9+O Po#D*rXrMKǜ[浭inXc]]<W1USSEaOsa? 5=B>i+ +=z |yiXʿ + endstream endobj -2135 0 obj +2144 0 obj << /Filter /FlateDecode -/Length1 4304 -/Length 2777 +/Length1 3512 +/Length 2264 >> stream -xW}l[?=Ie?'vIwi6mڮ M[l($MKn6J7TC4`@I*6u61&MCi@$ٹNw; 0c"6{Lְ? @>~hP@k{#J8v9x5{'oy@z3ͯ/"nȱk86+1=YO&tdYB h1n<2Sclclie;+>Fy,$bo? pta7~":Ýka k nC0A 4pa>Ȁp=lkp -Jpp<yd><࣐nx.LDam_4.RS$?Drɭ; |PؠSԕdSM˼o+GQX&u' -tx(q=wi)*$89Pe'48-3]`΂5[#5,OA4mYW0IQ`rÕ_g%h|0,l -sbS}~,>Da+lB.ڣ,TbvpEOl>ccuK8@46/,B{qPׁ z -8ׁ^45AC4Bu4͏G"Ԭe}UgߺFFyJ2 0{XWL -! r+ -0B=TK <Ͻ %YP&5JLTS-K/mg]UB43W!DA8nudHԫ|)o"Jp'tJz^R^s8w3Σ֗([wJ\@Ѷ 6_[Hxi;7[9Uk}ilFTݬ6WX -Xr6y0e+\I_=KTPAlZ -Hp `l7_SVË5A>VhB\+מ1,\njMOigDZյmRE. ,sS@n2#L4PC-dۢZ4Vb] Ővc.&⌡4ـ E3e?{ !d HK{LSmu'lf'̑o WP_G&g[MlNfsj=t͐%H»6d{`fx $ 2Amp/lO 8GA0<9N8ypN8_sP 9OcfyBx6m^gs&80xnrf ?GK"PWGXZM2h%7B2;U3̴b_ψtK,HL!* +a4 'H5N=]HB<9xpOԡ#S{6 ?UߟyJlz17R_P2'ߗ)lm-~.B7|aa1bc)~``ÚY0 [2r4dJu)2&F=&a,@GJri7 VK" `jL5YSU N ::!輓DX-T$ƞ<+JWꦕw=ꡄ]J/hd=ɤWɲMJRC^!y|x{@`N0'ˢeo4u7KBaQi0Xvh`tuG`nLaĎU`*VUOd--$åKw Ntqsʕ!b2J";ŋ_'%s2[#ۂDr %?V9;L#ui1GEŨEg2#q aD}W!F+cJ-cKG?~2F/:}+ͬWHa%g9w9buzYPQ973f6wEHnVWWUYEz}vn݁UJ9K 0|jzz|ԉc~!Ûps?U +0GU> stream 0 g 0 G 0 g 0 G BT -/F62 9.9626 Tf 150.705 706.129 Td [(vectorized,)-267(it)-264(does)-263(not)-264(necessarily)-263(make)-264(optimal)-264(use)-263(of)-264(the)-264(memory)-263(hierar)18(chy)111(.)]TJ 0 -11.955 Td [(While)-228(pr)18(ocessing)-229(each)-228(diagonal)-229(we)-228(ar)18(e)-229(updating)-228(entries)-228(in)-229(the)-228(output)-229(vector)]TJ/F67 9.9626 Tf 335.99 0 Td [(y)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)]TJ -341.22 -11.955 Td [(which)-290(is)-291(then)-290(accessed)-291(multiple)-290(times;)-311(if)-290(the)-290(vector)]TJ/F67 9.9626 Tf 229.535 0 Td [(y)]TJ/F62 9.9626 Tf 8.124 0 Td [(is)-290(too)-291(lar)18(ge)-290(to)-291(r)18(emain)-290(in)]TJ -237.659 -11.956 Td [(the)-250(cache)-250(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 14.944 -12.068 Td [(The)]TJ/F60 9.9626 Tf 20.923 0 Td [(hacked)-426(DIA)]TJ/F62 9.9626 Tf 53.49 0 Td [(\050)]TJ/F59 9.9626 Tf 3.317 0 Td [(HDIA)]TJ/F62 9.9626 Tf 28.224 0 Td [(\051)-426(format)-426(was)-426(designed)-426(to)-427(contain)-426(the)-426(amount)-426(of)]TJ -120.898 -11.956 Td [(padding,)-416(by)-384(br)18(eaking)-383(the)-383(original)-383(matrix)-383(into)-383(equally)-384(sized)-383(gr)18(oups)-383(of)-383(r)18(ows)]TJ 0 -11.955 Td [(\050)]TJ/F60 9.9626 Tf 3.317 0 Td [(hacks)]TJ/F62 9.9626 Tf 21.758 0 Td [(\051,)-271(and)-267(then)-266(storing)-267(these)-266(gr)18(oups)-267(as)-267(independent)-266(matrices)-267(in)-267(DIA)-266(format.)]TJ -25.075 -11.955 Td [(This)-256(appr)18(oach)-256(is)-257(similar)-256(to)-256(that)-256(of)-257(HLL,)-256(and)-256(r)18(equir)18(es)-256(using)-256(an)-257(of)18(fset)-256(vector)-256(for)]TJ 0 -11.955 Td [(each)-283(submatrix.)-411(Again,)-292(similarly)-283(to)-284(HLL,)-283(the)-284(various)-283(submatrices)-284(ar)18(e)-283(stacked)]TJ 0 -11.955 Td [(inside)-313(a)-314(linear)-313(array)-314(to)-313(impr)18(ove)-314(memory)-313(management.)-500(The)-314(fact)-313(that)-314(the)-313(ma-)]TJ 0 -11.955 Td [(trix)-337(is)-336(accessed)-337(in)-336(slices)-337(helps)-337(in)-336(r)18(educing)-337(cache)-336(misses,)-359(especially)-336(r)18(egar)18(ding)]TJ 0 -11.956 Td [(accesses)-250(to)-250(the)-250(vector)]TJ/F67 9.9626 Tf 95.959 0 Td [(y)]TJ/F62 9.9626 Tf 5.23 0 Td [(.)]TJ -86.245 -12.068 Td [(An)-246(additional)-246(vector)]TJ/F60 9.9626 Tf 93.666 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 48.566 0 Td [(is)-246(pr)18(ovided)-246(to)-246(complete)-246(the)-246(matrix)-246(format;)]TJ -157.176 -11.956 Td [(given)-321(that)]TJ/F60 9.9626 Tf 48.303 0 Td [(hackSize)]TJ/F62 9.9626 Tf 37.686 0 Td [(is)-321(the)-320(number)-321(of)-321(r)18(ows)-321(of)-320(each)-321(hack,)-339(the)]TJ/F60 9.9626 Tf 180.964 0 Td [(hackOffsets)]TJ/F62 9.9626 Tf 49.311 0 Td [(vector)]TJ -316.264 -11.955 Td [(is)-321(made)-321(by)-322(an)-321(array)-321(of)]TJ/F93 10.3811 Tf 105.045 0 Td [(\050)]TJ/F60 9.9626 Tf 4.274 0 Td [(m)]TJ/F62 9.9626 Tf 8 0 Td [(/)]TJ/F60 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F93 10.3811 Tf 36.682 0 Td [(\051)-235(+)]TJ/F62 9.9626 Tf 16.868 0 Td [(1)-321(elements,)-339(pointing)-321(to)-322(the)-321(\002rst)-321(diag-)]TJ -177.205 -11.955 Td [(onal)-289(of)18(fset)-290(of)-289(a)-289(submatrix)-289(inside)-290(the)-289(stacked)]TJ/F60 9.9626 Tf 198.567 0 Td [(offsets)]TJ/F62 9.9626 Tf 27.788 0 Td [(buf)18(fers,)-299(plus)-289(an)-290(additional)]TJ -226.355 -11.955 Td [(element)-350(equal)-350(to)-350(the)-351(number)-350(of)-350(nonzer)18(o)-350(diagonals)-350(in)-350(the)-350(whole)-351(matrix.)-610(W)92(e)]TJ 0 -11.955 Td [(thus)-315(have)-314(the)-315(pr)18(operty)-315(that)-315(the)-314(number)-315(of)-315(diagonals)-315(of)-314(the)]TJ/F60 9.9626 Tf 267.65 0 Td [(k)]TJ/F62 9.9626 Tf 4.598 0 Td [(-th)]TJ/F60 9.9626 Tf 15.499 0 Td [(hack)]TJ/F62 9.9626 Tf 21.068 0 Td [(is)-315(given)]TJ -308.815 -11.955 Td [(by)]TJ/F60 9.9626 Tf 13.539 0 Td [(hackOffsets[k+1])-250(-)-250(hackOffsets[k])]TJ/F62 9.9626 Tf 133.667 0 Td [(.)]TJ +/F84 9.9626 Tf 1.002 0 0 1 99.895 706.129 Tm [(number)-250(of)-250(nonzer)18(os)-251(we)-250(obtain)-250(essentially)-250(the)-250(JAgged)-250(Diagonals)-251(format.)-311(If)-250(the)]TJ 1.02 0 0 1 99.895 694.174 Tm [(r)18(ows)-295(ar)18(e)-294(not)-294(in)-295(the)-294(original)-294(or)18(der)72(,)-306(then)-295(an)-294(additional)-294(vector)]TJ/F78 9.9626 Tf 1.02 0 0 1 373.179 694.174 Tm [(rIdx)]TJ/F84 9.9626 Tf 1.02 0 0 1 393.668 694.174 Tm [(is)-294(r)17(equir)18(ed,)]TJ 1 0 0 1 99.895 682.219 Tm [(storing)-250(the)-250(actual)-250(r)18(ow)-250(index)-250(for)-250(each)-250(r)18(ow)-250(in)-250(the)-250(data)-250(str)8(uctur)18(e.)]TJ 0.981 0 0 1 114.839 670.198 Tm [(The)-255(multiple)-255(ELLP)94(ACK-like)-255(buf)18(fers)-255(ar)18(e)-255(stacked)-255(t)1(ogether)-255(inside)-255(a)-255(single,)-255(one)]TJ 0.993 0 0 1 99.895 658.242 Tm [(dimensional)-252(array;)-252(an)-251(additional)-252(vector)]TJ/F78 9.9626 Tf 0.993 0 0 1 275.205 658.242 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.993 0 0 1 323.49 658.242 Tm [(is)-252(pr)18(ovided)-251(to)-252(keep)-252(track)-252(of)]TJ 1.009 0 0 1 99.895 646.287 Tm [(the)-248(individual)-248(submatrices.)-308(All)-248(hacks)-249(have)-248(the)-248(same)-248(number)-248(of)-248(r)18(ows)]TJ/F78 9.9626 Tf 1.009 0 0 1 407.538 646.287 Tm [(hackSize)]TJ/F84 9.9626 Tf 1.009 0 0 1 442.339 646.287 Tm [(;)]TJ 0.985 0 0 1 99.895 634.332 Tm [(hence,)-255(the)]TJ/F78 9.9626 Tf 0.985 0 0 1 146.134 634.332 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.985 0 0 1 194.055 634.332 Tm [(vector)-254(is)-255(an)-254(array)-255(of)]TJ/F181 10.3811 Tf 1 0 0 1 282.979 634.332 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.336 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-210(+)]TJ/F84 9.9626 Tf 0.985 0 0 1 354.618 634.332 Tm [(1)-254(elements,)-255(each)-254(one)]TJ 0.985 0 0 1 99.596 622.377 Tm [(pointing)-253(to)-253(the)-253(\002rst)-253(index)-253(of)-253(a)-254(submat)1(rix)-254(inside)-253(the)-253(stacked)]TJ/F78 9.9626 Tf 0.985 0 0 1 357.896 622.377 Tm [(cM)]TJ/F84 9.9626 Tf 0.985 0 0 1 371.153 622.377 Tm [(/)]TJ/F78 9.9626 Tf 0.985 0 0 1 377.1 622.377 Tm [(rP)]TJ/F84 9.9626 Tf 0.985 0 0 1 389.397 622.377 Tm [(buf)18(fers,)-253(plus)]TJ 1.02 0 0 1 99.895 610.422 Tm [(an)-269(additional)-269(element)-268(pointing)-269(past)-269(the)-269(end)-269(of)-268(the)-269(last)-269(block,)-275(wher)18(e)-269(the)-269(next)]TJ 1.006 0 0 1 99.895 598.467 Tm [(one)-248(would)-249(begin.)-308(W)91(e)-248(thus)-248(have)-249(the)-248(pr)18(operty)-249(that)-248(the)-249(elements)-248(of)-248(the)]TJ/F78 9.9626 Tf 1 0 0 1 406.091 598.467 Tm [(k)]TJ/F84 9.9626 Tf 1.006 0 0 1 410.689 598.467 Tm [(-th)]TJ/F78 9.9626 Tf 1.006 0 0 1 425.616 598.467 Tm [(hack)]TJ/F84 9.9626 Tf 0.995 0 0 1 99.895 586.511 Tm [(ar)18(e)-252(stor)18(ed)-251(between)]TJ/F131 9.9626 Tf 1 0 0 1 185.207 586.511 Tm [(hackOffsets[k])]TJ/F84 9.9626 Tf 0.995 0 0 1 260.928 586.511 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 280.207 586.511 Tm [(hackOffsets[k+1])]TJ/F84 9.9626 Tf 0.995 0 0 1 363.892 586.511 Tm [(,)-252(similarly)-252(to)-252(what)]TJ 1 0 0 1 99.895 574.556 Tm [(happens)-250(in)-250(the)-250(CSR)-250(format.)]TJ 0 g 0 G ET -1 0 0 1 197.579 381.801 cm +1 0 0 1 146.769 452.455 cm q -.4451 0 0 .4451 0 0 cm +.50096 0 0 .50096 0 0 cm q 1 0 0 1 0 0 cm -/Im10 Do +/Im8 Do Q Q 0 g 0 G -1 0 0 1 -197.579 -381.801 cm +1 0 0 1 -146.769 -452.455 cm BT -/F62 9.9626 Tf 198.751 359.883 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +/F84 9.9626 Tf 134.646 430.537 Td [(Figur)18(e)-250(7:)-310(Hacked)-250(ELLP)92(ACK)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ 0 0 1 rg 0 0 1 RG [-250(5)]TJ 0 g 0 G 0 g 0 G 0 g 0 G - -33.102 -24.137 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F67 9.9626 Tf 110.952 0 Td [(psb_T_hdia_sparse_mat)]TJ/F62 9.9626 Tf 109.837 0 Td [(:)]TJ + 0.982 0 0 1 114.839 406.495 Tm [(W)56(ith)-254(this)-254(data)-254(str)8(uctur)19(e)-254(a)-254(very)-254(long)-254(r)18(ow)-254(only)-254(af)19(f)-1(ects)-254(one)-254(hack,)-254(and)-254(ther)19(efor)18(e)]TJ 1 0 0 1 99.895 394.54 Tm [(the)-250(additional)-250(memory)-250(is)-250(limited)-250(to)-250(the)-250(hack)-250(in)-250(which)-250(the)-250(r)18(ow)-250(appears.)]TJ 14.944 -12.021 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_hll_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG ET q -1 0 0 1 150.705 120.326 cm -0 0 343.711 203.238 re f +1 0 0 1 99.895 232.948 cm +0 0 343.711 137.484 re f Q 0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G @@ -29797,72 +30035,7 @@ Q 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG BT -/F102 8.9664 Tf 163.108 312.904 Td [(type)]TJ -0 g 0 G - [-525(pm)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 14.122 -10.959 Td [(real)]TJ -0 g 0 G - [(\050psb_dpk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-1050(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(data)]TJ -0 g 0 G - [(\050:,:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(type)]TJ -0 g 0 G - [-525(pm)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(type)]TJ -0 g 0 G - [-525(po)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 14.122 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-1050(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(off\050:\051)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -14.122 -10.959 Td [(end)-525(type)]TJ -0 g 0 G - [-525(po)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -21.918 Td [(type)]TJ +/F231 8.9664 Tf 112.299 359.772 Td [(type)]TJ 0 g 0 G [(,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG @@ -29878,33 +30051,28 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(psb_d_hdia_sparse_mat)]TJ + [-525(psb_d_hll_sparse_mat)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG -/F120 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.959 Td [(!)-525(HDIA)-525(format,)-525(extended.)]TJ + 0 -10.958 Td [(!)-525(HLL)-525(format.)-525(\050Hacked)-525(ELL\051)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.38 0.63 0.69 rg 0.38 0.63 0.69 RG - 0 -10.958 Td [(!)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F102 8.9664 Tf 0 -21.918 Td [(type)]TJ + 0 -10.959 Td [(!)]TJ 0 g 0 G - [(\050pm\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(allocatable)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F231 8.9664 Tf 0 -10.959 Td [(integer)]TJ 0 g 0 G + [(\050psb_ipk_\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -29912,13 +30080,14 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(hdia\050:\051)]TJ + [-525(hksz)]TJ +0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - 0 -10.959 Td [(type)]TJ +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ 0 g 0 G - [(\050po\051,)]TJ + [(\050psb_ipk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG @@ -29931,642 +30100,2365 @@ BT 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(offset\050:\051)]TJ + [-525(irn\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ -0 g 0 G - [(\050psb_ipk_\051)]TJ + [-525(ja\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G + [-525(idiag\050:\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - [-525(nblocks,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + 18.83 -10.959 Td [(hkoffs\050:\051)]TJ/F134 5.1905 Tf -15.277 0 Td [(,)]TJ/F179 5.1905 Tf 0.609 0 Td [(!)]TJ 0 g 0 G - [-525(nzeros)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ +/F231 8.9664 Tf -4.162 -10.959 Td [(real)]TJ 0 g 0 G - [(\050psb_ipk_\051)]TJ + [(\050psb_dpk_\051,)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + [-525(allocatable)]TJ 0 g 0 G - [-525(hack)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [-525(64)]TJ -0 g 0 G + [-525(val\050:\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.56 0.13 0.00 rg 0.56 0.13 0.00 RG - 0 -10.959 Td [(integer)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.414 -21.918 Td [(contains)]TJ 0 g 0 G - [(\050psb_long_int_k_\051)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(::)]TJ -0 g 0 G + 4.707 -10.959 Td [(....)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G 0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - [-525(dim)]TJ + -4.707 -10.959 Td [(end)-525(type)]TJ 0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [(=)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG 0 g 0 G -0.25 0.63 0.44 rg 0.25 0.63 0.44 RG - [(0)]TJ +/F75 9.9626 Tf -12.404 -39.966 Td [(Diagonal)-250(storage)]TJ/F84 9.9626 Tf 1.012 0 0 1 99.587 180.167 Tm [(The)-248(DIAgonal)-248(\050DIA\051)-247(format)-248(\050shown)-248(in)-248(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-248(8)]TJ 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + [(\051)-248(has)-248(a)-247(2-dimensional)-248(array)]TJ/F131 9.9626 Tf 1 0 0 1 433.146 180.167 Tm [(AS)]TJ/F84 9.9626 Tf 0.98 0 0 1 99.895 168.212 Tm [(containing)-223(in)-222(each)-223(column)-223(the)-222(coef)18(\002cients)-223(along)-223(a)-222(diagonal)-223(of)-223(the)-222(matrix,)-230(and)-222(an)]TJ 0.98 0 0 1 99.895 156.257 Tm [(integer)-254(array)]TJ/F131 9.9626 Tf 1 0 0 1 158.101 156.257 Tm [(OFFSET)]TJ/F84 9.9626 Tf 0.98 0 0 1 191.961 156.257 Tm [(that)-254(determines)-254(wher)19(e)-254(each)-254(diagonal)-254(starts.)-316(The)-254(di)1(agonals)]TJ 1 0 0 1 99.895 144.302 Tm [(in)]TJ/F131 9.9626 Tf 11.188 0 Td [(AS)]TJ/F84 9.9626 Tf 12.952 0 Td [(ar)18(e)-250(padded)-250(with)-250(zer)18(os)-250(as)-250(necessary)111(.)]TJ 1.01 0 0 1 114.839 132.281 Tm [(The)-248(code)-249(to)-248(compute)-248(the)-248(matrix-vector)-248(pr)17(oduct)]TJ/F78 9.9626 Tf 1 0 0 1 327.678 132.281 Tm [(y)]TJ/F181 10.3811 Tf 8.012 0 Td [(=)]TJ/F78 9.9626 Tf 11.598 0 Td [(A)-42(x)]TJ/F84 9.9626 Tf 1.01 0 0 1 362.603 132.281 Tm [(is)-248(shown)-248(in)-249(Alg.)]TJ +0 0 1 rg 0 0 1 RG + [-248(2)]TJ 0 g 0 G + [(;)]TJ 1.02 0 0 1 99.895 120.326 Tm [(it)-311(costs)-311(one)-311(memory)-311(r)18(ead)-311(per)-311(outer)-311(iteration,)-327(plus)-311(thr)18(ee)-311(memory)-311(r)18(eads,)-328(one)]TJ 0 g 0 G -/F62 9.9626 Tf 142.565 -36.164 Td [(168)]TJ + 1 0 0 1 264.279 90.438 Tm [(171)]TJ 0 g 0 G ET endstream endobj -2136 0 obj +2145 0 obj << /Type /XObject /Subtype /Form /FormType 1 -/PTEX.FileName (../figures/hdia.pdf) +/PTEX.FileName (../figures/hll.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 2143 0 R -/BBox [0 0 556 211] +/PTEX.InfoDict 2155 0 R +/BBox [0 0 494 214] /Resources << -/ProcSet [ /PDF /ImageC /Text ] +/ProcSet [ /PDF /Text ] /ExtGState << -/R7 2144 0 R ->>/XObject << -/R8 2145 0 R ->>/Font << /R9 2146 0 R/R11 2147 0 R>> +/R7 2156 0 R +>>/Font << /R8 2157 0 R/R10 2158 0 R>> >> -/Length 3027 +/Length 2880 /Filter /FlateDecode >> stream -xZK9EX 4IKE&eX\>\$HhFBQ{OٮxϷoo?~p -߆ł6c.1X4!tyGfEP7h.vk.^؆b͊g(ONpgxnb}m+(xwJ~;EDqŸXYDӦsM4GH(,ÆR͊JqGfE ژ࡜aLg44i9ogU(”?aEuaFg0P]>[pS؇(@I]LsqF(wpFOMLNXQs>- @DE;~bsM(gCyjKC*KhGjI9-' bF-p\\ *$0DɏjlZ*tŅ3Dk'S\Z¿KGxlnbeiHg-=ktCTJ+)n+ u Bi yԅ&Y s|l RIX56-xvbA $D\pmeuXXĨr0i¶Olaa00)CHӜ{ϱ<[ֱ;jlK{o% e[hPצ9c()eIijN}(#KKBQ& -ўG 7Dg=fZ:yl$oApYOŇL~F95hӂUb0(O%J[Y2]fڏIЮb^)y%JFqG5 4C`c^s. DbkAGE5i\+ A,4zИS],q -WهZ1mC8?ehc57-7hhlABgĠQ YP׾Zkaf%1#YStIo`FzT#:""w+jeqA#X#͸g = 1cPD-,ZJ3k-^ZnrABqL-9|S,cphbABgĠZ lYfF]æf^g8ų7ĊlT3" ڿV)Z?f̺1ְX]]LȿYKjϢKedjP\+uUq(q|Kcth|;D8T3Y˫HNJ+QnǨ١k1*R$`j f,vU#}Jo|Yք5%sM%x?kSW-"RMXQքG|dէԄ5kšjwjtnVUne4;r!6tA Y!eB:h yJ:D#R[Da̖Is<Hed m8% P#޴ϷmxGZˑn9s#jN5cG,rum|i8PE!*] GR,_#?fCsâݴϷ}$Ǯ`LyR+Q#KzT&z)H_x6=OOgixLE8ɫKc2OOUjSJ[YE,l^ygeآo }DBt'" +}fbB͏7x6qߟ` dP۝{%^w_΅)zɎ- ʪ#O! smRa;a\=sﮆ@w}.?NC ,P{ԅJ8}Hzw׿{Uۇ}nbURA4ۃǹ@7#ׯ"W}{{~fZg)wG?4 +xZˎ% WԲ{eN`;pAz0 #xoqIQŒEzfq,<<,Q*U}:Ov?yw™zGwprM0*zT+xAvW$+\y0V+9K 'r \VGT#+"jP\5kn T5^ݧ+8P ]ש(B3)L`6 [A.ŸH9|>>+\1Θ>ƫh㣿qsIygZ f1؝(%˜ƬO*mO +s [?-\.̃Yc1P̕l* +f_@.0 }g/^6Y~#+MuԂyQR8[m!N:9wYljX_67yX ๣(xȥXP4 +MLA=HowW353 eU<ʡ^QE*ցoK F"$hTx'CvB Z2Jh\5'ME{̃:DH<+ĵ:8M:5ZRl*-% JtTR-A} W NKYc@L9bp;1 'D9YFWy,YH{QB27:ӀyP(ayVb;ZY$KVuVUbTg ^3gB0Wܕ{/x?w67mvoLJF׊0G;nBH41@V;:DX9kŚ +%hUYs~h|ؤ}jJ5 +.F65bDcb4k_&͆&͆c&4l?b1q3bbf +TNާxG!\Dcn(MB˙I\䚊(͈Q+.MI ;_TüUJ4*J4@,~Y&PdJXfeYZ-KVY?L~R-_[IXYj'VՔ7YZ( @oo}XEW<1ph +Csj(1X5q;GS`XS.[t֜qQY|9A=t-!2`j(Ö-67\){vl%ᾧ]kvى%krwUQx;r"Z$er?obOv7s_oUvcye8U.Up=pT$b(`F&Cxo1iF/Guk# @љʺ 3֘'> -/Length 150 +/Filter /FlateDecode +/Length 214 >> stream - 0l?@ +x]0 {@فL> stream -x]1 EwN 0C%]24^/8Ilm.SHA SI-iPt>^T$DeΣZ=;b``JCR~r޵v]0c1%VKUP Jv4Dojy}C*Z|Y +x]M Fbn?MLn\4m/0qPƒM>x?2[ڐK gC@ʻ\c{B .ϲ7HpuB4#kk{vaGE#"64)U:ܼG +wלuɂ<~V endstream endobj -2151 0 obj +2163 0 obj << /Filter /FlateDecode -/Length 213 +/Length1 5268 +/Length 3426 >> stream -x]10 E"7hZ(R.4 -e.00g{ǤFGU;|{eԀaԝˌ|d籸tGe(L߯nçNʮkJtڒnD[-[Ҟ5@JIlۀm׬Eځ@Io"̻WY -Y$c yJ l +xX}l[u?=~z|||)%("Ɋ,V9;d8dEqjzIЏdm[ ! ڥhѭhKܬuumL.Dk6A$GJv wϹ_s) o?Z(KgζeȋK҃JS =}ٕ3Vw[^9BX^8,@dP]P}CG\=ѥ~W:YBY™}O#q{3=|?Mr{Roawt~QZǠ +d wAP`t |N" T(  I- g)8 +~~> !PSP5z:swzrd]e(V$ +8Rk֍b::\3T@]y60GkxqĿAݹ=_w:u\ϝ@=y;C.\ƛ{Զʗ%Z,P^$Oq9S(5 :k& h8ґ6 +_;zzs5]g.<%ظ.3n7}7Lg;-Np$tj 8GpvXFB_m 8i9ֱpk& J:4g6L10؄*PAF%kp^ƒ щ N /W'SdjzxI%pl{h91#&2qt_T_=[{yZxb>9 +'=?~yi@<DToc>pD6?Gل7Cަk9_{ބN#xYz;Fdkv +A#ti +"\gϣ1E8v4EE)-xǫL#ܸBiT.z]"ѹm14cpAfe̽ &Tehȵz@qU5m55.sth\k*Kevwfqt;FTK&1\WaI1L"T,R^ @a9aYVGʶnԶ@Kul` Xc3֩Xo5 r֢1VI k͐B"yb*X8"Y@ E@G U j12I&nGWI15Fc)}tR?j:rv+;]ޘѱ޵z9W!IĐ"0C*H )0fDHϪ&qH /ƾ`KYBackT 9 ]p*1ߋFSm(ɗ.5t~`UԂŘBb\%R6SJ@敧 *{;Ο֤U$_B$ql4gk3Vx9sƿޒHD>hRWޝ x%7zJV%>s#k+?k,63LCXDGh{ȪLx0xB4l6cb$;2<^!|;T9嗞z_ד$w*]BDs_mr|ٙ8xe1^"4,+PՌ`ivϵ`OIڵtMf͚iӟ#4[Uۃ1MYMOux8&apX#bQR ;*at; +;2;ɑXsOrD;&.coUSzS É^>K}o-R?'1ǡǸ<1Rx:HbzV1_ښC&ڀAM +kN|k}hY <+8IRHa;V2 1w1#7!.C aBV8'ntXW[.ġ.eUdDJXSSp ~t qqDz<^V0;Dt.#17IcO&uБo~haTtv)Ky}₩bY7I!~;xMil=2.{2kz=FUVܝS\XK[ק[ԘO$=ݑMivMW6| +];St+ ߗ侏y]ԿaI}qp?A}M¿ [.MnjO endstream endobj -2152 0 obj +2164 0 obj << /Filter /FlateDecode -/Length1 10604 -/Length 7344 +/Length1 11124 +/Length 7803 >> stream -xzyxTUx9Nξs:!!%%7+K !IXf!( L(qpNG >>yn>GdqwM@}CUSUgS9 =.7/B [4w3uzsJ /Xfjׁ\cܹ|ecITh%/], 6bDd<IԶ5o+B y;ä?Mȯo^t\_S;;׏3cҎחzK|l|$>$8Kpntv -ѕaA' Dx`6<%P {`# -e@r8NJAwZX0d@|Nt@4>#\Vo`WcR~&F+01x5O053)'t_B8f RXWQx(76jPLSxFBXJ-n`Mer! LҟH#oYCd,|8C^ÿت 6_=H;8Nĉ,Őb !.Oig~9o8 -|@WG:Odiq+p <5d;̢!9, - |Bc1 p'6 Ji5]GmU[40,\qލ~|e -ss/)(!Ua -}' /ba- Szbm|tAetxϣ?z@^64L\1|7{r+Wd^~+^Z'ޓg!C7-W:dCL%YF޴Ail w }p}^7Z@ynA>< "~߈R(e)Jmfosl04_0r1bFa4~F}vFr`t;>'O<Wm}_ C<>UlZb(ySjlԍ= o.=Ksۏ(=3'`Č7;Y:e426հvJl@+t -<7>^bR+r&l+6y((+{#9A1Z 0NVy~)#Cގאwex=+#}q!;)&ex}ȾbJQ}/)˘":ߐsm(b[po7xF^4" {z@V]=݊Y^K 9\Fz{X:Ŵ -&o`>=}ZDlyC<C4'ȇA[! = r1e ΋hBzKpig A$$; -L;(-F*=w*G7c$^::s>M[ I4j;ETљQ^F[hiJ3)XI3\AgT5/Š=PFk7?pS`4 -\ ˡ.pv-]Ry:wPܞ Ql𕖎gL d) CE51!|:m^o 5-I -_/y*3SO-FУ㒣aPo >M0Lp@v~ v!BFKP#8?DO-s vH?NU|%6QDw_QD&>=CTtx~Bq}T&z8 D6~xy}ӗl$NG)r{t{.v]3F\[|U_-1q}d-d-d-d- h%c:9|3l&ͤ;NZ0 l%p{']𽄇N &%~1Fu_˰-(O=eqI~,# T.0ҁ1JZJBy+A$TrRsm|.1jfݼ[ꖥr ?<ܤikrTcVݔgL&D8\^kx!hmR4iwp_7x(tUʰr^J)GPzJbڭ60OpGpO0ۃ`fmElZVٸv~AF:a4凉T,ĵB\ ,$qrYr?/$$ %n(vy#M%3T2ivFh%l'%:o%Y޸C%& ZsP&z3/wg..R7MΦRlh/ը5ΚRZ,(/媹܌M9mҮ#'OUKM|*-݀ϕG}qS-%W#4&p}O !h"".9!gW9MhRMI5&}>LúX5}:_h.Ap6\ M2 NFAp@)-<[3OAt4,aFk/m:.q:l3ͷ6Sed=:vh%'K5%30(+up4-͐SOJ(O:ھukiB*~|lNey{T?.نF3w~u>'}OaB7dOU*~$δ [VHi~5p61/Gm:fˢT}(Ld]ZaŰ0pa!`7$ pj 1F(HŪ' ,y+?C#UUP;U7{GJ^vaA=9`mK〘A7oCPb~SGKBayƱ//6{wU]o3ij8[+ʏA&bj:H ܂HjZFnRQޟ2J>JJ.ZAH%CV*KjcY~XEozcB$lP$~T]|GN8~ؠNƘy3巴_PƁǹGXJi?jO󴴶 ڼܻD-7q7ZU[Zk֚+Ǻ˪}uƺEceǪJ}UD_i}U/Ū~#6N,8'Pm혮o?O`z^3N! -?b~#aSK+/\/Ex}W[OQWE]< (k+׬'ݧܬ>▻~2T -kJiONٕ/H"R»țp=}z]D(Pcݹ\e%)J^zDdOo|L%7#sx=E .tby@i~h1Z1wKc'X0H%>'yxט6tB i@u֣2(̽iHՅW=`g)hAպY{.vgJ>,b2*QBBtp02-dpǏpKW]=>˰[̀Auht -(.̵)X/sbXx .iyX,`]#6]Qj昌 ?~lXGS;Fz/.d]l& -$"XOl_pZ, -t5aߊ*UfFw9 31Ma%YZxhE gYKAg]c9k_즹`X!|=rvhN19),2::&1y:,Bxyp_;<Ӣ xg~ؾnZ2s:YM=Ydcu,/WC0pD߳Gx莵y &%ixFz!a'xl밇ӣCfgrOҒ)2 fZnӨ B`F-!L}7^uLgm5 G8}!&k;TT\"2afLSp` `[4㩃^pF= | e΁ +فyGlh?;r Y1`5gf6X n{|Ҁ7C9=9lwN_!&C-H+V@k4)-d$޹KaמּF~%Y]#GG s" iAIIqT!)34--B\ӂ9[04AkA9I<{|J`--=EER)i tV'0MUo+E[z:mcYQmk깿M}]+k;ϼ['eb%xꚪiI%A\mHA\ +n;it{a2츆_c_XAޘ&>aBo;5,<"*:iffwDڹdw'$rC$w߀(G>r8h tzX8c_Ӻ>:D#ɮY2wg"m0bm1R_ʳ(OUc -'d - -b5B#]UR{#InlF48 XE1Щ4,$ƹm hۢun>AOϭտwǚQ?Vc=S]VGA,108b!F.ӆBazSQ8nᛤMb$1Cp{'0-BX?`15Z8,-iY,)+n̾$k="/Bapqų7} Pp"5#sh#d':MIɉL sӜ&\ݚPʥ`bRB#_x žőV:e*QM(<*u/w|+;-߭JIv떴Er\nk>k0Xai]xޢ:+gx( -)~MOѵ9(`Ś~Lѱ$s~j @8G`sj -YF. XbιKo߾ں9 ,pxgx`K)Dl;yj8[=2dqmᏓ;EP%=X +xzy|TUp9N;kwMwNH$feI a IH`F6'ѧ28#LfqWv@~{ǻ:VUgFu s@2Z|]S{1-e#++W} @7 vZqeH?kmiZ*S[ "ʩnBqkۖ7MJ(f]횵fKֵLnBR{[gDI}}KWϓ~=*G$ %b|NxHk&LJ[YOpIg4`:̇&x24O sɶ.(גBj{;yJ,#Np~|~4:W SE1XL-A2+h%J־ +'1]M3zˮbdN/\>R$;t3d`!`'~J#ɞ%^K"/ACq$68v:xACJ,(i?+)nSZa+}/y[<1Q݉QzK*O[%Jl*+a嬊bwRNw|_{x/(@AbYv mvY慱.~< ׎?84~'dd6#(=Cx^7=u_#C"ފECyglJsq>k(-[)`/ކx/>ini x;Pg`~@Іa\K; O+ >YKf\hySrs&gg33\T)a%'MJLZb"ͦc!LjD3Jk>%͚&b4ىUuUWjʤҔCeM4=βWJv[=KS +SsN5oA +J_Ն־Jo57h+[²`0@Y|}-3P0Ke K**}R2wV6ͯHt8|X\jT3U(Wi}Zje6>5ҷ#`f;|zojPtS>˦xTyKy_u])mXPpCc*o_uLXN};}x'uhW)4Rx}zLj[%$`F?!A>J{ߢz+I*& @߂C=JIv֠92dD&LeSՕ\vEeDl +}FR/ќ+e:-Nj5 ˽}b⛕>i}_ӕ i%>ۗU$#$(Kսs,b}:&s\tek qKH^P^睰m+J!˲dp$K͖(,WOtVIh}<5r,MQ^weP%85jhu*U>wV79J9J~61'_UW^x .Vhi__*ڬ${U)mf}K'v4$Z8[#1^ K}sLk:}@1t7xd$; UV*g¤矰Ct?.Q|/+L ef) _CE5>9\o68sII:Oj'=^*+tDQGG >>xmޭ뚠ӟl3&NK)rt.vk՞]d-~hː%>oLL,,m97fL:*$a3; +GxʿNo";fШk6 +UCEr^q"5r(>)>L DԤ趨Җ!}mJH +QҺ4/[N%( rjmσu:#l==[Q'xB2g2lշ{ܬsN/ѓs%7r1k35; ap 4#ӚQ9hjdMƫijvj4Z5z lr ڴ8Pz'oV-a3A;NlH|;H@d&8MQ"Lg"=qM5+:/ATsYrN4dQ*dN 4B3a;AWy5/r'^*?\J]vAnJ@_d =%yr +F٘޸OhڜmmZY^O(J%%)ǙOI6-ݶO9\sTXVSç<8z7Tz5;Li$ aAA Ag,qZFj=l1m2G)9Eήs!q~mi m{8}TPU*_Ѳ\lKn)-åPBHN )Pm =K;ijdX3Y8łR*G%*N#c|q94ʰt:KPj|X[j(5RkpŪX`8Kqs0a|apv(&6LTQK6،ٌKli6cw#e*NVqL&ǯZB'` =DD.=գ y-(Mпlz.<n6t߳UO@NKA*zGYןBC?";{2m +RLIDDg*WZJ,KS)|%S%uI MLIt"8U&uFHQ/mV499LAh~{?h{b.TVGm^M bm$+##A2tZe{VR$xmJKm8mzA/&qC [砭@LKmEĞCmSRPrGmԣKRrʹaVZ얳]fb|U|m֮MNtf].\4:At Geroј՟ jԟEjV }QP7]}kk@XTOLTw1{{7o<*JeVPb-YTU/w$߃ }$5L07SyckWHC1:*(|TpY RX;G!(jCZFaRY1Rzg+J>/JBmRVBH%CV*KV(B~X8ImjcAT4') :?%gh8 Tqb:! #ϯCMX<νRe ׷}Clh6/oUhS#·B6-劸I啋-&RjhS^}E_\_4֣4V_~jj~eX]W?zݩth=x eqa5qX: 2|FE]]hu* ֫ԄLH `\]q_gggn]VEֱW<=>OOV4^66O߳s#vw7;Dʩ֘Җғҟ'pF\WTIK +h.*+>?ݩ|@tswKS`9znM ,$?C)O$R8{%7_ 4%t.Y.9R#3!9FzQV6]"Jq5T8@OSu?uLgz]80'rTDI,5vL)2R,k;kVF\≌*"f~vOɅeر,ڙgu`i.=sўƙwz\֙,~m'3%M>ڕiO)s 09:8CTOGP2^u<٨ѐh@0FDAˎY LFQY(5D4W,G./=Ng u€ +/?@8&mFԲ瞧ic6q{[ĖWbeB):Rmگ{v|`|{G$W'{ 6 xUmZbtuU& Sr\\֣}Z +KuZZouEvE=fxCO-r-i|& +-Mo6nɾ]w{t^ן҉iVGUN0=(?VE-yM8ۜtA"D$w?g:L+MC9ţ"GAћ o@hôJ&caWk,䰋gi4 +$->OKH]:-31U2;'$h$SB3(g7$7cb$3/ݓBppԨi1&Ŵ Z6v=o7k{_dQe6P8IN֍[~}ƭkر5}rwnZafHaND1V!FcB(}d]^׀k%"vD#AzXy37WFT)5%irdsRbRbr"DLNogIۗAplHl_QfmaT!3sktATX1LݳU+MF4ѵG~^,ڕ<97(pV.(?}೗>Mav:^8j3;Zfa`8#mFefc&\/jP7A7 +p#&QZ]VqA ׁ͈n G64( ~R6&{ax.[DKQ7idZ?:;> +stream +577 0 2041 57 2042 115 2043 173 2044 231 2037 289 2050 440 2036 606 2046 753 2047 897 +2048 1041 2052 1186 2049 1245 2055 1396 2053 1535 2057 1679 2054 1737 2064 1845 2059 2002 2060 2147 +2061 2294 2066 2436 581 2495 2067 2553 2068 2612 2069 2671 2063 2730 2073 2881 2062 3038 2070 3182 +2071 3329 2075 3473 2072 3531 2077 3682 2079 3800 2076 3859 2087 3940 2080 4133 2090 4309 2081 4485 +2082 4668 2083 4820 2084 4975 2085 5127 2089 5280 585 5338 589 5395 2086 5452 2101 5575 2093 5732 +2094 5882 2096 6029 2103 6175 593 6234 597 6292 2104 6350 2105 6409 2100 6468 2110 6606 2117 6745 +2118 6925 2099 6968 2112 7115 2107 7173 2113 7231 2114 7290 2115 7348 2109 7406 2122 7544 2134 7683 +2135 7863 2137 7906 2138 8111 2139 8400 2141 8621 2098 8834 2124 8980 2108 9039 2125 9098 2126 9157 +2127 9216 2128 9275 2129 9334 2130 9393 2131 9452 2132 9510 2120 9569 2133 9628 2121 9687 2150 9882 +2155 10039 2156 10219 2157 10262 2158 10565 2159 10770 2161 10983 2146 11204 2147 11351 2148 11498 2152 11645 +% 577 0 obj +<< +/D [2038 0 R /XYZ 99.895 716.092 null] >> -stream -xW}pu{@p)!H`H(JTY,pd$EruiZ6hIL:IS[IGi:Vq;;~hR'vEd7Mano۷~vBpE Gw,/[\$*~S>imggc~ pSO(_Ee~Tx -{ᎽrѳY^ĢëdMs+Eb#}1־jc+k+ӐHoec;i0|Ap;FAp ,)@"A? `<`>7?<>\S0wǩM'+(#%yh0W\^n(?Agʳiaga$€p5Ǻk3H׻zфAI@̆7">*0ȸn9*h7zº*yt8SfCõKͯ %^aH\՛ s9Rk",6NCeڳҷ5E\(8q8%kӼ 9g#99V ds|PMu{EHZb\b%RSJZ ͗Y>էUzӅ?#$`jeXYlJC۷`eN;M0%BaH" -:%g3AҮes/T'6i}MC>\w2#H8qQ]I͜&jOGBrxYhh(m) c)A۶`lGRJNzQFGx3;ȩ/S⾾D%P!=+K%o*--MN.-m+`Y9脅fe'|mR:JDY,/JQ%iWN3rʹUӦ/GhH#부1MYM!?DV0E51!u !c"FJxHPV..4GH?ƚIRʕy]혺hLlYMN{BcC>)S 1|r@H}͜-R 1OCsqY/y bhpw"s$*1gE*c5&ڀAMNjzJA#IkAQb| *5vddbnث#s ;'sbGgO={z~x+m˵ǭHb)-2xqarzLojw؟;=kg2JG 164}ŘJ+!XҋJVJ -å7,I dI -Y2bڡ,2 5Ī nH6 KV30cBZjv vcÈI[r/bV>@ <;CTGKcC'}kTѷyx4L֧ig'å@qc;ש28tfk݆8io0x}$!B a>q{,NjԽrpa> +% 2042 0 obj +<< +/D [2038 0 R /XYZ 99.895 444.971 null] +>> +% 2043 0 obj +<< +/D [2038 0 R /XYZ 99.895 433.015 null] +>> +% 2044 0 obj +<< +/D [2038 0 R /XYZ 114.242 129.79 null] +>> +% 2037 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2050 0 obj +<< +/Type /Page +/Contents 2051 0 R +/Resources 2049 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2019 0 R +/Annots [ 2036 0 R 2046 0 R 2047 0 R 2048 0 R ] +>> +% 2036 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 654.503 415.041 666.562] +/A << /S /GoTo /D (precdata) >> +>> +% 2046 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.303 584.479 469.357 596.539] +/A << /S /GoTo /D (vdata) >> +>> +% 2047 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.303 514.456 469.357 526.516] +/A << /S /GoTo /D (vdata) >> +>> +% 2048 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 374.41 409.811 386.47] +/A << /S /GoTo /D (descdata) >> +>> +% 2052 0 obj +<< +/D [2050 0 R /XYZ 149.705 753.953 null] +>> +% 2049 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2055 0 obj +<< +/Type /Page +/Contents 2056 0 R +/Resources 2054 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2058 0 R +/Annots [ 2053 0 R ] +>> +% 2053 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 554.876 418.548 566.936] +/A << /S /GoTo /D (vdata) >> +>> +% 2057 0 obj +<< +/D [2055 0 R /XYZ 98.895 753.953 null] +>> +% 2054 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2064 0 obj +<< +/Type /Page +/Contents 2065 0 R +/Resources 2063 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2058 0 R +/Annots [ 2059 0 R 2060 0 R 2061 0 R ] +>> +% 2059 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 253.023 420.271 265.083] +/A << /S /GoTo /D (spdata) >> +>> +% 2060 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.753 184.772 415.041 196.831] +/A << /S /GoTo /D (precdata) >> +>> +% 2061 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.303 116.52 469.357 128.58] +/A << /S /GoTo /D (vdata) >> +>> +% 2066 0 obj +<< +/D [2064 0 R /XYZ 149.705 753.953 null] +>> +% 581 0 obj +<< +/D [2064 0 R /XYZ 150.705 716.092 null] +>> +% 2067 0 obj +<< +/D [2064 0 R /XYZ 150.705 397.916 null] +>> +% 2068 0 obj +<< +/D [2064 0 R /XYZ 150.705 398.076 null] +>> +% 2069 0 obj +<< +/D [2064 0 R /XYZ 150.705 386.121 null] +>> +% 2063 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2073 0 obj +<< +/Type /Page +/Contents 2074 0 R +/Resources 2072 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2058 0 R +/Annots [ 2062 0 R 2070 0 R 2071 0 R ] +>> +% 2062 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 654.503 418.548 666.562] +/A << /S /GoTo /D (vdata) >> +>> +% 2070 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.943 520.007 359.001 532.067] +/A << /S /GoTo /D (descdata) >> +>> +% 2071 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.493 183.768 418.548 195.827] +/A << /S /GoTo /D (vdata) >> +>> +% 2075 0 obj +<< +/D [2073 0 R /XYZ 98.895 753.953 null] +>> +% 2072 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F134 1471 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2077 0 obj +<< +/Type /Page +/Contents 2078 0 R +/Resources 2076 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2058 0 R +>> +% 2079 0 obj +<< +/D [2077 0 R /XYZ 149.705 753.953 null] +>> +% 2076 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2087 0 obj +<< +/Type /Page +/Contents 2088 0 R +/Resources 2086 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2058 0 R +/Annots [ 2080 0 R 2090 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R 2085 0 R ] +>> +% 2080 0 obj +<< +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [318.128 636.522 444.603 648.582] +/Subtype/Link/A<> +>> +% 2090 0 obj +<< +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [123.806 624.567 167.641 636.627] +/Subtype/Link/A<> +>> +% 2081 0 obj +<< +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [140.413 593.098 346.389 605.158] +/Subtype/Link/A<> +>> +% 2082 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [229.78 552.835 241.736 561.841] +/A << /S /GoTo /D (cite.DesPat:11) >> +>> +% 2083 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [245.393 552.835 257.348 561.692] +/A << /S /GoTo /D (cite.CaFiRo:2014) >> +>> +% 2084 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [261.006 552.835 272.961 561.841] +/A << /S /GoTo /D (cite.Sparse03) >> +>> +% 2085 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [158.604 540.781 170.56 549.737] +/A << /S /GoTo /D (cite.OurTechRep) >> +>> +% 2089 0 obj +<< +/D [2087 0 R /XYZ 98.895 753.953 null] +>> +% 585 0 obj +<< +/D [2087 0 R /XYZ 99.895 716.092 null] +>> +% 589 0 obj +<< +/D [2087 0 R /XYZ 99.895 525.151 null] +>> +% 2086 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R /F78 674 0 R /F231 1025 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2101 0 obj +<< +/Type /Page +/Contents 2102 0 R +/Resources 2100 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2058 0 R +/Annots [ 2093 0 R 2094 0 R 2096 0 R ] +>> +% 2093 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [172.124 282.067 184.079 291.173] +/A << /S /GoTo /D (cite.MRC:11) >> +>> +% 2094 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.646 246.183 316.601 255.592] +/A << /S /GoTo /D (table.22) >> +>> +% 2096 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.176 176.296 368.05 188.355] +/A << /S /GoTo /D (figure.6) >> +>> +% 2103 0 obj +<< +/D [2101 0 R /XYZ 149.705 753.953 null] +>> +% 593 0 obj +<< +/D [2101 0 R /XYZ 150.705 349.244 null] +>> +% 597 0 obj +<< +/D [2101 0 R /XYZ 150.705 231.907 null] +>> +% 2104 0 obj +<< +/D [2101 0 R /XYZ 150.705 211.056 null] +>> +% 2105 0 obj +<< +/D [2101 0 R /XYZ 150.705 120.166 null] +>> +% 2100 0 obj +<< +/Font << /F279 1793 0 R /F231 1025 0 R /F84 675 0 R /F131 921 0 R /F75 673 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2110 0 obj +<< +/Type /Page +/Contents 2111 0 R +/Resources 2109 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2116 0 R +/Annots [ 2099 0 R ] +>> +% 2117 0 obj +<< +/Producer (GPL Ghostscript 9.10) +/CreationDate (D:20140329133929+01'00') +/ModDate (D:20140329133929+01'00') +/Creator (cairo 1.13.1 \(http://cairographics.org\)) +>> +% 2118 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +% 2099 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.745 324.049 126.734 336.109] +/A << /S /GoTo /D (algocf.1) >> +>> +% 2112 0 obj +<< +/D [2110 0 R /XYZ 98.895 753.953 null] +>> +% 2107 0 obj +<< +/D [2110 0 R /XYZ 99.895 716.092 null] +>> +% 2113 0 obj +<< +/D [2110 0 R /XYZ 346.697 407.446 null] +>> +% 2114 0 obj +<< +/D [2110 0 R /XYZ 99.895 260.219 null] +>> +% 2115 0 obj +<< +/D [2110 0 R /XYZ 99.895 226.207 null] +>> +% 2109 0 obj +<< +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R >> +/XObject << /Im6 2095 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2122 0 obj +<< +/Type /Page +/Contents 2123 0 R +/Resources 2121 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2116 0 R +/Annots [ 2098 0 R ] +>> +% 2134 0 obj +<< +/Producer (GPL Ghostscript 9.10) +/CreationDate (D:20140329133928+01'00') +/ModDate (D:20140329133928+01'00') +/Creator (cairo 1.13.1 \(http://cairographics.org\)) +>> +% 2135 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +% 2137 0 obj +<< +/BaseFont /YAZDUX+TimesNewRomanPSMT +/FontDescriptor 2139 0 R +/ToUnicode 2140 0 R +/Type /Font +/FirstChar 48 +/LastChar 57 +/Widths [ 500 500 500 500 500 0 0 500 500 500] +/Subtype /TrueType +>> +% 2138 0 obj +<< +/BaseFont /NDNSMY+FreeSerif +/FontDescriptor 2141 0 R +/ToUnicode 2142 0 R +/Type /Font +/FirstChar 32 +/LastChar 89 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] +/Subtype /TrueType +>> +% 2139 0 obj +<< +/Type /FontDescriptor +/FontName /YAZDUX+TimesNewRomanPSMT +/FontBBox [ 15 -13 638 675] +/Flags 65540 +/Ascent 675 +/CapHeight 675 +/Descent -13 +/ItalicAngle 0 +/StemV 95 +/MissingWidth 777 +/FontFile2 2143 0 R +>> +% 2141 0 obj +<< +/Type /FontDescriptor +/FontName /NDNSMY+FreeSerif +/FontBBox [ 0 -71 706 752] +/Flags 65540 +/Ascent 752 +/CapHeight 679 +/Descent -71 +/ItalicAngle 0 +/StemV 105 +/MissingWidth 600 +/FontFile2 2144 0 R +>> +% 2098 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.396 583.767 442.37 595.827] +/A << /S /GoTo /D (figure.5) >> +>> +% 2124 0 obj +<< +/D [2122 0 R /XYZ 149.705 753.953 null] +>> +% 2108 0 obj +<< +/D [2122 0 R /XYZ 440.026 621.446 null] +>> +% 2125 0 obj +<< +/D [2122 0 R /XYZ 165.649 563.747 null] +>> +% 2126 0 obj +<< +/D [2122 0 R /XYZ 165.649 567.034 null] +>> +% 2127 0 obj +<< +/D [2122 0 R /XYZ 165.649 556.075 null] +>> +% 2128 0 obj +<< +/D [2122 0 R /XYZ 165.649 545.116 null] +>> +% 2129 0 obj +<< +/D [2122 0 R /XYZ 165.649 534.158 null] +>> +% 2130 0 obj +<< +/D [2122 0 R /XYZ 165.649 523.199 null] +>> +% 2131 0 obj +<< +/D [2122 0 R /XYZ 165.649 512.24 null] +>> +% 2132 0 obj +<< +/D [2122 0 R /XYZ 165.649 501.281 null] +>> +% 2120 0 obj +<< +/D [2122 0 R /XYZ 165.649 481.057 null] +>> +% 2133 0 obj +<< +/D [2122 0 R /XYZ 150.705 294.895 null] +>> +% 2121 0 obj +<< +/Font << /F84 675 0 R /F75 673 0 R /F231 1025 0 R /F279 1793 0 R /F78 674 0 R /F181 923 0 R /F179 922 0 R /F131 921 0 R >> +/XObject << /Im7 2097 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2150 0 obj +<< +/Type /Page +/Contents 2151 0 R +/Resources 2149 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2116 0 R +/Annots [ 2146 0 R 2147 0 R 2148 0 R ] +>> +% 2155 0 obj +<< +/Producer (GPL Ghostscript 9.10) +/CreationDate (D:20140329133928+01'00') +/ModDate (D:20140329133928+01'00') +/Creator (cairo 1.13.1 \(http://cairographics.org\)) +>> +% 2156 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +% 2157 0 obj +<< +/BaseFont /MCSFLP+FreeSerif +/FontDescriptor 2159 0 R +/ToUnicode 2160 0 R +/Type /Font +/FirstChar 32 +/LastChar 89 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] +/Subtype /TrueType +>> +% 2158 0 obj +<< +/BaseFont /AJRCAD+TimesNewRomanPSMT +/FontDescriptor 2161 0 R +/ToUnicode 2162 0 R +/Type /Font +/FirstChar 48 +/LastChar 57 +/Widths [ 500 500 500 500 500 0 0 500 500 500] +/Subtype /TrueType +>> +% 2159 0 obj +<< +/Type /FontDescriptor +/FontName /MCSFLP+FreeSerif +/FontBBox [ 0 -71 706 752] +/Flags 65540 +/Ascent 752 +/CapHeight 679 +/Descent -71 +/ItalicAngle 0 +/StemV 105 +/MissingWidth 600 +/FontFile2 2163 0 R +>> +% 2161 0 obj +<< +/Type /FontDescriptor +/FontName /AJRCAD+TimesNewRomanPSMT +/FontBBox [ 15 -13 638 675] +/Flags 65540 +/Ascent 675 +/CapHeight 675 +/Descent -13 +/ItalicAngle 0 +/StemV 95 +/MissingWidth 777 +/FontFile2 2164 0 R +>> +% 2146 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.878 426.731 409.852 438.791] +/A << /S /GoTo /D (figure.5) >> +>> +% 2147 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.732 176.362 310.765 188.421] +/A << /S /GoTo /D (figure.8) >> +>> +% 2148 0 obj +<< +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.309 128.475 443.332 140.535] +/A << /S /GoTo /D (algocf.2) >> +>> +% 2152 0 obj +<< +/D [2150 0 R /XYZ 98.895 753.953 null] +>> + +endstream +endobj +2172 0 obj +<< +/Length 8205 +>> +stream +0 g 0 G +0 g 0 G +BT +/F84 9.9626 Tf 1.02 0 0 1 150.705 706.129 Tm [(memory)-286(write)-286(and)-286(two)-286(\003oating-point)-286(operations)-286(per)-286(inner)-286(iteration.)-427(The)-286(ac-)]TJ 0.984 0 0 1 150.705 694.174 Tm [(cesses)-254(to)]TJ/F131 9.9626 Tf 1 0 0 1 190.457 694.174 Tm [(AS)]TJ/F84 9.9626 Tf 0.984 0 0 1 203.412 694.174 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 222.504 694.174 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 230.23 694.174 Tm [(ar)18(e)-254(in)-255(strict)-254(sequential)-255(or)19(der)75(,)-255(ther)19(efor)18(e)-255(no)-254(indir)18(ect)-254(addr)18(essing)]TJ 1 0 0 1 150.705 682.219 Tm [(is)-250(r)18(equir)18(ed.)]TJ +0 g 0 G +ET +1 0 0 1 197.579 562.733 cm +q +.49594 0 0 .49594 0 0 cm +q +1 0 0 1 0 0 cm +/Im9 Do +Q +Q +0 g 0 G +1 0 0 1 -197.579 -562.733 cm +BT +/F84 9.9626 Tf 217.042 540.815 Td [(Figur)18(e)-250(8:)-310(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-250(5)]TJ +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 165.649 389.447 cm +0 0 313.823 115.567 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 187.467 494.353 Td [(do)]TJ +0 g 0 G + [-525(j)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(1)]TJ +0 g 0 G + [(,ndiag)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 9.414 -10.959 Td [(if)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(\050offset\050j\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(>)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(0)]TJ +0 g 0 G + [(\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(then)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +0 g 0 G + 9.415 -10.959 Td [(ir1)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(1)]TJ +0 g 0 G + [(;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(ir2)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(m)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(-)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(offset\050j\051;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.415 -10.958 Td [(else)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +0 g 0 G + 9.415 -10.959 Td [(ir1)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(1)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(-)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(offset\050j\051;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(ir2)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(m;)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.415 -10.959 Td [(end)-525(if)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(do)]TJ +0 g 0 G + [-525(i)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G + [(ir1,ir2)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 9.415 -10.959 Td [(y\050i\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(y\050i\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(+)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(alpha)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(as\050i,j\051)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(*)]TJ +0 g 0 G + [(x\050i)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(+)]TJ +0 g 0 G + [(offset\050j\051\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.415 -10.959 Td [(end)-525(do)]TJ +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.414 -10.959 Td [(end)-525(do)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G +/F75 9.9626 Tf 16.096 -32.463 Td [(Algorithm)-250(2:)]TJ/F84 9.9626 Tf 60.054 0 Td [(Matrix-V)111(ector)-250(pr)18(oduct)-250(in)-250(DIA)-250(format)]TJ +0 g 0 G +0 g 0 G +0 g 0 G + -97.968 -26.977 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.952 0 Td [(psb_T_dia_sparse_mat)]TJ/F84 9.9626 Tf 104.607 0 Td [(:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 150.705 208.684 cm +0 0 343.711 115.567 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 163.108 313.591 Td [(type)]TJ +0 g 0 G + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(extends)]TJ +0 g 0 G + [(\050psb_d_base_sparse_mat\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_d_dia_sparse_mat)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 9.415 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)-525(DIA)-525(format,)-525(extended.)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +/F231 8.9664 Tf 0 -21.918 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(offset\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(nzeros)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.958 Td [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(data)]TJ +0 g 0 G + [(\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.415 -21.918 Td [(end)-525(type)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +/F75 9.9626 Tf -12.403 -39.731 Td [(Hacked)-250(DIA)]TJ/F84 9.9626 Tf 0.985 0 0 1 150.705 156.191 Tm [(Storage)-254(b)1(y)-254(DIAgonals)-254(is)-253(an)-254(attractive)-253(option)-254(for)-253(matrices)-254(whose)-253(coef)18(\002cients)-254(ar)19(e)]TJ 1.015 0 0 1 150.705 144.236 Tm [(located)-247(on)-246(a)-247(small)-247(set)-246(of)-247(diagonals,)-247(since)-246(they)-247(do)-247(away)-246(with)-247(storing)-247(explicitly)]TJ 0.988 0 0 1 150.705 132.281 Tm [(the)-253(indices)-254(and)-253(ther)18(efor)19(e)-254(r)19(educe)-254(signi\002cantly)-253(memory)-253(traf)18(\002c.)-315(However)75(,)-253(having)]TJ 0.98 0 0 1 150.705 120.326 Tm [(a)-246(few)-246(coef)19(\002)-1(cients)-245(outside)-246(of)-246(the)-246(main)-246(set)-245(of)-246(diagonals)-246(may)-246(signi\002cantly)-246(incr)19(ease)]TJ +0 g 0 G + 1 0 0 1 315.088 90.438 Tm [(172)]TJ +0 g 0 G +ET + +endstream +endobj +2168 0 obj +<< +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (./figures/dia.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2176 0 R +/BBox [0 0 499 211] +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState << +/R7 2177 0 R +>>/Font << /R8 2178 0 R/R10 2179 0 R>> +>> +/Length 2502 +/Filter /FlateDecode +>> +stream +xZneWܐ xJ$a(Q@9ﻪNuv ཪ.:ϗ#][J1\|[VI~=>o&P7UU&$&&l&P,χ!AkҰ\m+K;ʒm!!sxko">YF\Ի;?Ojt\YcZnP7՜? u`m,%^7_+2r +5"}9 @;]prv.e{1<\m6"9.v*#oUNM@^IU#$Ps Q⼣cQJ_5&)v8E_&'|WNP1!#┊|]j}qFъގ{a4F)Frr^QQ +RR7y_W5@&LaM8zƈ֯vc&EV}I yjZ"ūj"jDP3&`c126ާF%1x)hfЙ'%H@lfQ/5,nߌ&-nr7oT!~XJ_-W |⑳4,¨(8,K3]pA=DǑW3R2&WH3FsH=}54ȵ_Rd/t3dsl~ +y(ebEc6+fh6+hC$tʥ@w$>K#<;87RY%h^WJ*+զ!_9)hl4pnּqK56Ӎ,@ /)ߎݏ3w++(R +mаK㩎8ŵ2@2'.#vޯB7ob+7ʈ☦xQ4BLƨ_+Jʏw˹4M3\ +kE7 +k%+0Y+h+ڮ+h+ڎו!8:W_ij +mQYO":-GC5-t^_BNܞUxv(2X&TX5*$1lKZxSbN :Ed)SD1S N<_܆GH.3<@# +$;m)8K(qW@/jˆrAA,$t!]+nHE~Y] wc%/.|SB 0_#q]EmO!t_EmO'+b[w}>k;^&>D-?Dmu*Zmvɏv~t|̓C|l<.|+%o_SêOZSJ|၌}ud8}&|:ˏSxcX8{7Y$+_eAӄb*C4 t2{,5:*j!qKqq\OqL|"qS 7  P ʍs|&;Gh-O%b;:H5in92@&JdG@^)D $XXf"M1JAT45rՆ 3@d +rca8zDbHd'\L/1ٌ,0Fc)T#  7,j7%ΥR6q4/ٸg]\\W\+3,mLrJ7&?9.yQQШѕ&Gsm7LϋI7=mMm/]o/vUQxT._lâQU.$Rg{cLq1><>bJ:_ƽ:dp>yov翑ӑ-u縑߿&& +endstream +endobj +2181 0 obj +<< +/Filter /FlateDecode +/Length 177 +>> +stream +x]1 EwN ,KdhU1!Co_I뛍ur6Q^ Qc=*3,֑ڪtPj&w{6iGy [ +t s1#8UlV"αCcfb/9=FpQbxCvQY +endstream +endobj +2183 0 obj +<< +/Filter /FlateDecode +/Length 197 +>> +stream +x]M FmLqѦi{ ꢷ0j] #kkʳG Vn", FY^ fҁeM';3Mטy%hQBIk?={Ao3d++ĚJh ˪P* Q$ĆFCι=7[WL-asb +endstream +endobj +2184 0 obj +<< +/Filter /FlateDecode +/Length1 9528 +/Length 6467 +>> +stream +xY{xTյ_{sf&Lf$Ʉ$&w1!$T$!HBLE4p-> +Q/`Dh@D+V[Wk퓀r~=;kZ{^g'ĈF$zB26ō[U7nls6-hOd~yEuSY֕ko[1?UM_t+W06f/Ql4j]wF (~mscp;s(v]wZLQuM#ҩֶlhj +Я!;EnJ'|88?4;rI5όtAGY4KOP5tP,^#A)\ĩRJ{]64@9TIxJiWݑЊ2`kBG}&e>Xʉyc顙h u?S.{xMLVHFJ h +܁hߏ>E)IJYf6ɯ(OUT.w He3vzQKc>"V8&&HԊn:KWnz#R|P.M)ȟȦ[_ D[COt>IkV>uȺ>=0{NٗL>2^W(6?/FF!:Qc]E(3AkLsg.\wC46^$8rR]O=(O#Og+Og*24dC.V`P(7,aKQY[:wٝ{^Qc(?f'P~β߲߳O9 d|fZgy|Jތ7Xoy^{ďK-•\%_+ʝi R*u)4tiay%\mn0o2eXح~yo>ӬUMTpu3EbOB]ǺjqKIQ*b~e +Z$VCC9DIbXǼYq4$)wofq3Tegս r+<B|;(Ջq{:o){c {lo!츗Y]`멅=@5#ƞYjƦ3D4JY6Ob|(7. Vܹ ѭxv1ӂMd䤇>ܱwȳE.-Z_"]TH'wS6E:rsrck(Y[|/y&:X+WW?ҷoV?(RC bg +aݎ(o:IX +ڋ,n7#O#?[J+ڍy=z<:4(wkf<y2;5j|Mt~ knQcwu:UnAb㪮`X˴\ꉶjEMOZzXtfTxJ4k-7GՈm}mQ>45m75)yHJHn+CY7$ݒ}HN*Y nW.*/qB#\tMkX>lƆxYRoЂC3G=FOPߛ,51r,k2yق68];B3qm u9Ek_Ӿƽ.l^hiWW5 +lV]]+Ul븨5]-Е؞W$VS|}I΁{L ۝~ao0X]gpBCNUC~QgpiHeJ︼³%Y|T^9`nkެ}' UTv;b9hol\!{1~3 @fq:;G +ف]|<!fNB"xJ%vb]|ߠ>іtHP)ɠЇO}и#퍢6BEk8(ɀ (vۍ3z@ A Sksأk7%!݌oF6#rIhM:ybt6Agt6!*Z`qoE%_1-mq,G 縐d+{ +9a w~݊;BRɐ6FHnSoa +[JbE#S"p`"pV넘K,uuѡtJA9?) +BHxG~(uٔPTKTgpD +QQj3D;p|Q,:E  Vo=cUuSi4hRݦSTm +ZL]nS..3Y[V᰺րڪ̬dh/-P:f@V|&3h١g\;vp XJ!@ˈtUrHcEle 0-Z6l:/CP o"+&C>h\d_~)P?,DzlX2:o]N~Yk64WirWboqN~%_W\qWvV:YuJjSta_AA3 N`:ug.@> P π TzFn13d&&+¶[0 y#_jWMp-kuJ: .@ @KQ% '(9Ygq8x rƞ2 +ζ}9l]mcP9n{۳%y%%6B$$fi $zl_ylyl{l7xdQxm[V܌cR))E='S#"qZ)\]~MB{izVA=*er9G7;;Gj{{-'3Og̝̎2dচc?evdk,7lO6[C0 +6kՔdR#N ' +U6Bm%Y5d9==_aOIU +6QFzrN(v >Ǘs.u%8O[?]rK.[76$8j;Tƌ nVBlfgGSYTZSl/YyCƏ픋RWSiuDg(U"{FrXú,sac/|,҅/O?qGCrˈ hL,1D4ibi2k'O(S3S8yqg.ߗM=_>tְvIES.zY){[?v\ѡyz bLXdz(pB΀oǖ$8FnDd݂%;[M4GqFYb/P&;vŞrgs#8.s-F_\ľ %x'%&'$y&M&F(̃l'MM6{ӼOm opC#ŏ1GeщpōSbXU$=Fفlewgd+q[GA;izeuBeXM Mf”mZ)QeJk`%Ǡ ,Hjh *8ƍے01~ +?%9.1S) +'O,2FFgh[zt#wҖu/ܖq]AִEfN{ϳy J2tCſ y~a6#=jEUدV9NJd7!}j.QI0U*-d붽Nw;|fM#fed W@BpEIo 3=Ǻ̚q$PnEU翥;\v;s\nl@#1y +_ [C,0Z +ׅÿ]i ^g\oȯ'/! `?G&XI,bQ ~8߇^: Zp"'Drms#0F~6McӴBi6U Ⱦ?GN_XR=$=zC/]lQdE3ꊭi +endstream +endobj +2185 0 obj +<< +/Filter /FlateDecode +/Length1 4304 +/Length 2777 +>> +stream +xW}l[?=Ie?'vIwi6mڮ M[l($MKn6J7TC4`@I*6u61&MCi@$ٹNw; 0c"6{Lְ? @>~hP@k{#J8v9x5{'oy@z3ͯ/"nȱk86+1=YO&tdYB h1n<2Sclclie;+>Fy,$bo? pta7~":Ýka k nC0A 4pa>Ȁp=lkp +Jpp<yd><࣐nx.LDam_4.RS$?Drɭ; |PؠSԕdSM˼o+GQX&u' +tx(q=wi)*$89Pe'48-3]`΂5[#5,OA4mYW0IQ`rÕ_g%h|0,l +sbS}~,>Da+lB.ڣ,TbvpEOl>ccuK8@46/,B{qPׁ z +8ׁ^45AC4Bu4͏G"Ԭe}UgߺFFyJ2 0{XWL +! r+ -0B=TK <Ͻ %YP&5JLTS-K/mg]UB43W!DA8nudHԫ|)o"Jp'tJz^R^s8w3Σ֗([wJ\@Ѷ 6_[Hxi;7[9Uk}ilFTݬ6WX +Xr6y0e+\I_=KTPAlZ +Hp `l7_SVË5A>VhB\+מ1,\njMOigDZյmRE. ,sS@n2#L4PC-dۢZ4Vb] Ővc.&⌡4ـ E3e?{ !d HK> +stream +0 g 0 G +0 g 0 G +BT +/F84 9.9626 Tf 1.004 0 0 1 99.895 706.129 Tm [(the)-248(amount)-248(of)-247(needed)-248(padding;)-248(mor)18(eover)73(,)-248(whil)1(e)-248(the)-248(DIA)-248(code)-248(i)1(s)-248(easily)-248(vector)18(-)]TJ 0.999 0 0 1 99.895 694.174 Tm [(ized,)-249(it)-249(does)-249(not)-250(necessarily)-249(make)-249(optimal)-249(use)-249(of)-249(the)-249(memory)-249(hierar)18(chy)111(.)-310(While)]TJ 0.99 0 0 1 99.596 682.219 Tm [(pr)18(ocessing)-252(each)-252(diagonal)-252(we)-252(ar)18(e)-252(updating)-252(entries)-252(in)-252(the)-252(output)-252(vector)]TJ/F131 9.9626 Tf 1 0 0 1 406.468 682.219 Tm [(y)]TJ/F84 9.9626 Tf 0.99 0 0 1 411.698 682.219 Tm [(,)-252(which)]TJ 0.98 0 0 1 99.895 670.263 Tm [(is)-248(then)-248(accessed)-247(multiple)-248(times;)-250(if)-248(the)-248(vector)]TJ/F131 9.9626 Tf 1 0 0 1 291.821 670.263 Tm [(y)]TJ/F84 9.9626 Tf 0.98 0 0 1 299.471 670.263 Tm [(is)-248(too)-248(lar)19(ge)-248(to)-248(r)18(em)1(a)-1(i)1(n)-248(in)-248(the)-248(cache)]TJ 1 0 0 1 99.895 658.308 Tm [(memory)111(,)-250(the)-250(associated)-250(cache)-250(miss)-250(penalty)-250(is)-250(paid)-250(multiple)-250(times.)]TJ 1.02 0 0 1 114.839 646.353 Tm [(The)]TJ/F78 9.9626 Tf 1.02 0 0 1 135.583 646.353 Tm [(hacked)-367(DIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 188.948 646.353 Tm [(\050)]TJ/F75 9.9626 Tf 1.02 0 0 1 192.332 646.353 Tm [(HDIA)]TJ/F84 9.9626 Tf 1.02 0 0 1 221.12 646.353 Tm [(\051)-367(format)-367(was)-368(designed)-367(to)-367(contain)-368(the)-367(amount)-367(of)]TJ 1.02 0 0 1 99.596 634.398 Tm [(padding,)-346(by)-325(br)18(eaking)-326(the)-325(original)-326(matrix)-325(into)-326(equally)-325(sized)-325(gr)17(oups)-325(of)-326(r)18(ows)]TJ 1.013 0 0 1 99.567 622.443 Tm [(\050)]TJ/F78 9.9626 Tf 1.013 0 0 1 102.927 622.443 Tm [(hacks)]TJ/F84 9.9626 Tf 1.013 0 0 1 124.968 622.443 Tm [(\051,)-246(and)-245(then)-245(storing)-246(these)-245(gr)18(oups)-246(as)-245(independent)-246(matrices)-245(in)-245(DIA)-246(format.)]TJ 1.004 0 0 1 99.587 610.488 Tm [(This)-250(appr)18(oach)-250(is)-250(similar)-250(to)-250(that)-250(of)-250(HLL,)-250(and)-250(r)18(equir)18(es)-250(using)-250(an)-250(of)18(fset)-250(vector)-250(for)]TJ 1.013 0 0 1 99.895 598.532 Tm [(each)-247(submatrix.)-306(Again,)-247(similarly)-246(to)-247(HLL,)-247(the)-247(various)-247(submatrices)-246(ar)17(e)-246(stacked)]TJ 0.991 0 0 1 99.895 586.577 Tm [(inside)-253(a)-252(linear)-253(array)-253(to)-252(impr)18(ove)-253(memory)-252(management.)-314(The)-253(fact)-252(that)-253(the)-253(matrix)]TJ 0.98 0 0 1 99.895 574.622 Tm [(is)-212(accessed)-212(in)-212(slices)-212(helps)-211(in)-212(r)18(educing)-212(cache)-212(misses,)-220(especially)-212(r)18(egar)19(ding)-212(accesses)]TJ 1 0 0 1 99.895 562.667 Tm [(to)-250(the)-250(vector)]TJ/F131 9.9626 Tf 57.424 0 Td [(y)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ 1.003 0 0 1 114.839 550.712 Tm [(An)-249(additional)-248(vector)]TJ/F78 9.9626 Tf 1.003 0 0 1 208.864 550.712 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 1.003 0 0 1 257.602 550.712 Tm [(is)-249(p)1(r)17(ovided)-248(to)-249(complete)-248(the)-249(matrix)-248(format;)]TJ 0.999 0 0 1 99.895 538.757 Tm [(given)-251(t)1(hat)]TJ/F78 9.9626 Tf 0.999 0 0 1 146.752 538.757 Tm [(hackSize)]TJ/F84 9.9626 Tf 0.999 0 0 1 183.701 538.757 Tm [(is)-250(the)-251(number)-250(of)-251(r)18(ows)-250(of)-251(each)-250(hack,)-251(the)]TJ/F78 9.9626 Tf 0.999 0 0 1 358.015 538.757 Tm [(hackOffsets)]TJ/F84 9.9626 Tf 0.999 0 0 1 406.578 538.757 Tm [(vector)-250(is)]TJ 1.013 0 0 1 99.895 526.801 Tm [(made)-246(by)-246(an)-246(array)-246(of)]TJ/F181 10.3811 Tf 1 0 0 1 192.047 526.801 Tm [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(m)]TJ/F84 9.9626 Tf 8 0 Td [(/)]TJ/F78 9.9626 Tf 6.337 0 Td [(h)-40(a)-25(c)-25(k)-30(S)-18(i)-32(z)-25(e)]TJ/F181 10.3811 Tf 36.682 0 Td [(\051)-209(+)]TJ/F84 9.9626 Tf 1.013 0 0 1 263.667 526.801 Tm [(1)-246(elements,)-246(pointing)-246(to)-246(the)-246(\002rst)-246(diagonal)]TJ 0.98 0 0 1 99.895 514.846 Tm [(of)18(fset)-215(of)-215(a)-214(submatrix)-215(inside)-215(the)-215(stacked)]TJ/F78 9.9626 Tf 0.98 0 0 1 267.839 514.846 Tm [(offsets)]TJ/F84 9.9626 Tf 0.98 0 0 1 294.344 514.846 Tm [(buf)18(fers,)-223(plus)-215(an)-214(additional)-215(element)]TJ 0.98 0 0 1 99.895 502.891 Tm [(equal)-226(to)-225(the)-226(number)-225(of)-226(nonzer)18(o)-225(diagonals)-226(in)-226(the)-225(whole)-226(matrix.)-306(W)94(e)-226(thus)-226(have)-225(the)]TJ 0.98 0 0 1 99.596 490.936 Tm [(pr)18(operty)-202(that)-202(the)-202(number)-201(of)-202(diagonals)-202(of)-202(the)]TJ/F78 9.9626 Tf 1 0 0 1 290.676 490.936 Tm [(k)]TJ/F84 9.9626 Tf 0.98 0 0 1 295.273 490.936 Tm [(-th)]TJ/F78 9.9626 Tf 0.98 0 0 1 309.362 490.936 Tm [(hack)]TJ/F84 9.9626 Tf 0.98 0 0 1 328.908 490.936 Tm [(is)-202(given)-202(by)]TJ/F78 9.9626 Tf 0.98 0 0 1 376.777 490.936 Tm [(hackOffsets[k+1])]TJ 1 0 0 1 98.899 478.981 Tm [(-)-250(hackOffsets[k])]TJ/F84 9.9626 Tf 62.983 0 Td [(.)]TJ +0 g 0 G +ET +1 0 0 1 146.769 370.389 cm +q +.4451 0 0 .4451 0 0 cm +q +1 0 0 1 0 0 cm +/Im10 Do +Q +Q +0 g 0 G +1 0 0 1 -146.769 -370.389 cm +BT +/F84 9.9626 Tf 147.941 348.472 Td [(Figur)18(e)-250(9:)-310(Hacked)-250(DIA)-250(compr)18(ession)-250(of)-250(matrix)-250(in)-250(Figur)18(e)]TJ +0 0 1 rg 0 0 1 RG + [-250(5)]TJ +0 g 0 G +0 g 0 G +0 g 0 G + -33.102 -23.941 Td [(The)-250(r)18(elevant)-250(data)-250(type)-250(is)]TJ/F131 9.9626 Tf 110.953 0 Td [(psb_T_hdia_sparse_mat)]TJ/F84 9.9626 Tf 109.837 0 Td [(:)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 99.895 120.326 cm +0 0 343.711 192.279 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 112.299 301.945 Td [(type)]TJ +0 g 0 G + [-525(pm)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 14.122 -10.959 Td [(real)]TJ +0 g 0 G + [(\050psb_dpk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-1050(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(data)]TJ +0 g 0 G + [(\050:,:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.122 -10.959 Td [(end)-525(type)]TJ +0 g 0 G + [-525(pm)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -21.918 Td [(type)]TJ +0 g 0 G + [-525(po)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 14.122 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-1050(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(off\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -14.122 -10.959 Td [(end)-525(type)]TJ +0 g 0 G + [-525(po)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -21.918 Td [(type)]TJ +0 g 0 G + [(,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(extends)]TJ +0 g 0 G + [(\050psb_d_base_sparse_mat\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_d_hdia_sparse_mat)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG +/F279 8.9664 Tf 9.414 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.958 Td [(!)-525(HDIA)-525(format,)-525(extended.)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.38 0.63 0.69 rg 0.38 0.63 0.69 RG + 0 -10.959 Td [(!)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F231 8.9664 Tf 0 -21.918 Td [(type)]TJ +0 g 0 G + [(\050pm\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(hdia\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + 0 -10.959 Td [(type)]TJ +0 g 0 G + [(\050po\051,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(allocatable)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(offset\050:\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(nblocks,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(nzeros)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG + 0 -10.959 Td [(integer)]TJ +0 g 0 G + [(\050psb_ipk_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(hack)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [-525(64)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf 142.566 -36.164 Td [(173)]TJ +0 g 0 G +ET + +endstream +endobj +2186 0 obj +<< +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (../figures/hdia.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2193 0 R +/BBox [0 0 556 211] +/Resources << +/ProcSet [ /PDF /ImageC /Text ] +/ExtGState << +/R7 2194 0 R +>>/XObject << +/R8 2195 0 R +>>/Font << /R9 2196 0 R/R11 2197 0 R>> +>> +/Length 3027 +/Filter /FlateDecode +>> +stream +xZK9EX 4IKE&eX\>\$HhFBQ{OٮxϷoo?~p +߆ł6c.1X4!tyGfEP7h.vk.^؆b͊g(ONpgxnb}m+(xwJ~;EDqŸXYDӦsM4GH(,ÆR͊JqGfE ژ࡜aLg44i9ogU(”?aEuaFg0P]>[pS؇(@I]LsqF(wpFOMLNXQs>- @DE;~bsM(gCyjKC*KhGjI9-' bF-p\\ *$0DɏjlZ*tŅ3Dk'S\Z¿KGxlnbeiHg-=ktCTJ+)n+ u Bi yԅ&Y s|l RIX56-xvbA $D\pmeuXXĨr0i¶Olaa00)CHӜ{ϱ<[ֱ;jlK{o% e[hPצ9c()eIijN}(#KKBQ& +ўG 7Dg=fZ:yl$oApYOŇL~F95hӂUb0(O%J[Y2]fڏIЮb^)y%JFqG5 4C`c^s. DbkAGE5i\+ A,4zИS],q +WهZ1mC8?ehc57-7hhlABgĠQ YP׾Zkaf%1#YStIo`FzT#:""w+jeqA#X#͸g = 1cPD-,ZJ3k-^ZnrABqL-9|S,cphbABgĠZ lYfF]æf^g8ų7ĊlT3" ڿV)Z?f̺1ְX]]LȿYKjϢKedjP\+uUq(q|Kcth|;D8T3Y˫HNJ+QnǨ١k1*R$`j f,vU#}Jo|Yք5%sM%x?kSW-"RMXQքG|dէԄ5kšjwjtnVUne4;r!6tA Y!eB:h yJ:D#R[Da̖Is<Hed m8% P#޴ϷmxGZˑn9s#jN5cG,rum|i8PE!*] GR,_#?fCsâݴϷ}$Ǯ`LyR+Q#KzT&z)H_x6=OOgixLE8ɫKc2OOUjSJ[YE,l^ygeآo }DBt'" +}fbB͏7x6qߟ` dP۝{%^w_΅)zɎ- ʪ#O! smRa;a\=sﮆ@w}.?NC ,P{ԅJ8}Hzw׿{Uۇ}nbURA4ۃǹ@7#ׯ"W}{{~fZg)wG?4 +endstream +endobj +2195 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceGray +/Width 2362 +/Height 946 +/BitsPerComponent 1 +/Interpolate true +/Filter /CCITTFaxDecode +/DecodeParms << +/K -1 +/Columns 2362 +>> +/Length 150 +>> +stream + 0l?@ +endstream +endobj +2199 0 obj +<< +/Filter /FlateDecode +/Length 177 +>> +stream +x]1 EwN 0C%]24^/8Ilm.SHA SI-iPt>^T$DeΣZ=;b``JCR~r޵v]0c1%VKUP Jv4Dojy}C*Z|Y +endstream +endobj +2201 0 obj +<< +/Filter /FlateDecode +/Length 213 +>> +stream +x]10 E"7hZ(R.4 +e.00g{ǤFGU;|{eԀaԝˌ|d籸tGe(L߯nçNʮkJtڒnD[-[Ҟ5@JIlۀm׬Eځ@Io"̻WY +Y$c yJ l +endstream +endobj +2202 0 obj +<< +/Filter /FlateDecode +/Length1 10604 +/Length 7344 +>> +stream +xzyxTUx9Nξs:!!%%7+K !IXf!( L(qpNG >>yn>GdqwM@}CUSUgS9 =.7/B [4w3uzsJ /Xfjׁ\cܹ|ecITh%/], 6bDd<IԶ5o+B y;ä?Mȯo^t\_S;;׏3cҎחzK|l|$>$8Kpntv +ѕaA' Dx`6<%P {`# +e@r8NJAwZX0d@|Nt@4>#\Vo`WcR~&F+01x5O053)'t_B8f RXWQx(76jPLSxFBXJ-n`Mer! LҟH#oYCd,|8C^ÿت 6_=H;8Nĉ,Őb !.Oig~9o8 +|@WG:Odiq+p <5d;̢!9, + |Bc1 p'6 Ji5]GmU[40,\qލ~|e +ss/)(!Ua +}' /ba- Szbm|tAetxϣ?z@^64L\1|7{r+Wd^~+^Z'ޓg!C7-W:dCL%YF޴Ail w }p}^7Z@ynA>< "~߈R(e)Jmfosl04_0r1bFa4~F}vFr`t;>'O<Wm}_ C<>UlZb(ySjlԍ= o.=Ksۏ(=3'`Č7;Y:e426հvJl@+t -<7>^bR+r&l+6y((+{#9A1Z 0NVy~)#Cގאwex=+#}q!;)&ex}ȾbJQ}/)˘":ߐsm(b[po7xF^4" {z@V]=݊Y^K 9\Fz{X:Ŵ +&o`>=}ZDlyC<C4'ȇA[! = r1e ΋hBzKpig A$$; +L;(-F*=w*G7c$^::s>M[ I4j;ETљQ^F[hiJ3)XI3\AgT5/Š=PFk7?pS`4 +\ ˡ.pv-]Ry:wPܞ Ql𕖎gL d) CE51!|:m^o 5-I +_/y*3SO-FУ㒣aPo >M0Lp@v~ v!BFKP#8?DO-s vH?NU|%6QDw_QD&>=CTtx~Bq}T&z8 D6~xy}ӗl$NG)r{t{.v]3F\[|U_-1q}d-d-d-d- h%c:9|3l&ͤ;NZ0 l%p{']𽄇N &%~1Fu_˰-(O=eqI~,# T.0ҁ1JZJBy+A$TrRsm|.1jfݼ[ꖥr ?<ܤikrTcVݔgL&D8\^kx!hmR4iwp_7x(tUʰr^J)GPzJbڭ60OpGpO0ۃ`fmElZVٸv~AF:a4凉T,ĵB\ ,$qrYr?/$$ %n(vy#M%3T2ivFh%l'%:o%Y޸C%& ZsP&z3/wg..R7MΦRlh/ը5ΚRZ,(/媹܌M9mҮ#'OUKM|*-݀ϕG}qS-%W#4&p}O !h"".9!gW9MhRMI5&}>LúX5}:_h.Ap6\ M2 NFAp@)-<[3OAt4,aFk/m:.q:l3ͷ6Sed=:vh%'K5%30(+up4-͐SOJ(O:ھukiB*~|lNey{T?.نF3w~u>'}OaB7dOU*~$δ [VHi~5p61/Gm:fˢT}(Ld]ZaŰ0pa!`7$ pj 1F(HŪ' ,y+?C#UUP;U7{GJ^vaA=9`mK〘A7oCPb~SGKBayƱ//6{wU]o3ij8[+ʏA&bj:H ܂HjZFnRQޟ2J>JJ.ZAH%CV*KjcY~XEozcB$lP$~T]|GN8~ؠNƘy3巴_PƁǹGXJi?jO󴴶 ڼܻD-7q7ZU[Zk֚+Ǻ˪}uƺEceǪJ}UD_i}U/Ū~#6N,8'Pm혮o?O`z^3N! +?b~#aSK+/\/Ex}W[OQWE]< (k+׬'ݧܬ>▻~2T +kJiONٕ/H"R»țp=}z]D(Pcݹ\e%)J^zDdOo|L%7#sx=E .tby@i~h1Z1wKc'X0H%>'yxט6tB i@u֣2(̽iHՅW=`g)hAպY{.vgJ>,b2*QBBtp02-dpǏpKW]=>˰[̀Auht +(.̵)X/sbXx .iyX,`]#6]Qj昌 ?~lXGS;Fz/.d]l& +$"XOl_pZ, -t5aߊ*UfFw9 31Ma%YZxhE gYKAg]c9k_즹`X!|=rvhN19),2::&1y:,Bxyp_;<Ӣ xg~ؾnZ2s:YM=Ydcu,/WC0pD߳Gx莵y &%ixFz!a'xl밇ӣCfgrOҒ)2 fZnӨ B`F-!L}7^uLgm5 G8}!&k;TT\"2afLSp` `[4㩃^pF= | e΁ +فyGlh?;r Y1`5gf6X n{|Ҁ7C9=9lwN_!&C-H+V@k4)-d$޹KaמּF~%Y]#GG s" iAIIqT!)34--B\ӂ9[04AkA9I<{|J`--=EER)i tV'0MUo+E[z:mcYQmk깿M}]+k;ϼ['eb%xꚪiI%A\mHA\ +n;it{a2츆_c_XAޘ&>aBo;5,<"*:iffwDڹdw'$rC$w߀(G>r8h tzX8c_Ӻ>:D#ɮY2wg"m0bm1R_ʳ(OUc +'d + +b5B#]UR{#InlF48 XE1Щ4,$ƹm hۢun>AOϭտwǚQ?Vc=S]VGA,108b!F.ӆBazSQ8nᛤMb$1Cp{'0-BX?`15Z8,-iY,)+n̾$k="/Bapqų7} Pp"5#sh#d':MIɉL sӜ&\ݚPʥ`bRB#_x žőV:e*QM(<*u/w|+;-߭JIv떴Er\nk>k0Xai]xޢ:+gx( +)~MOѵ9(`Ś~Lѱ$s~j @8G`sj +YF. XbιKo߾ں9 ,pxgx`K)Dl;yj8[=2dqmᏓ;EP%=X +endstream +endobj +2203 0 obj +<< +/Filter /FlateDecode +/Length1 5080 +/Length 3303 +>> +stream +xW}pu{@p)!H`H(JTY,pd$EruiZ6hIL:IS[IGi:Vq;;~hR'vEd7Mano۷~vBpE Gw,/[\$*~S>imggc~ pSO(_Ee~Tx +{ᎽrѳY^ĢëdMs+Eb#}1־jc+k+ӐHoec;i0|Ap;FAp ,)@"A? `<`>7?<>\S0wǩM'+(#%yh0W\^n(?Agʳiaga$€p5Ǻk3H׻zфAI@̆7">*0ȸn9*h7zº*yt8SfCõKͯ %^aH\՛ s9Rk",6NCeڳҷ5E\(8q8%kӼ 9g#99V ds|PMu{EHZb\b%RSJZ ͗Y>էUzӅ?#$`jeXYlJC۷`eN;M0%BaH" +:%g3AҮes/T'6i}MC>\w2#H8qQ]I͜&jOGBrxYhh(m) c)A۶`lGRJNzQFGx3;ȩ/S⾾D%P!=+K%o*--MN.-m+`Y9脅fe'|mR:JDY,/JQ%iWN3rʹUӦ/GhH#부1MYM!?DV0E51!u !c"FJxHPV..4GH?ƚIRʕy]혺hLlYMN{BcC>)S 1|r@H}͜-R 1OCsqY/y bhpw"s$*1gE*c5&ڀAMNjzJA#IkAQb| *5vddbnث#s ;'sbGgO={z~x+m˵ǭHb)-2xqarzLojw؟;=kg2JG 164}ŘJ+!XҋJVJ +å7,I dI +Y2bڡ,2 5Ī nH6 KV30cBZjv vcÈI[r/bV>@ <;CTGKcC'}kTѷyx4L֧ig'å@qc;ש28tfk݆8io0x}$!B a>q{,NjԽrpa> +stream +0 g 0 G +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +q +1 0 0 1 150.705 651.334 cm +0 0 343.711 60.772 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.56 0.13 0.00 rg 0.56 0.13 0.00 RG +BT +/F231 8.9664 Tf 172.523 701.446 Td [(integer)]TJ +0 g 0 G + [(\050psb_long_int_k_\051)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(::)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(dim)]TJ +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [(=)]TJ +0 g 0 G +0.25 0.63 0.44 rg 0.25 0.63 0.44 RG + [(0)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -9.415 -21.917 Td [(contains)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + 4.708 -10.959 Td [(....)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + -4.708 -10.959 Td [(end)-525(type)]TJ +0 g 0 G +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0 g 0 G +/F84 9.9626 Tf 151.98 -567.173 Td [(174)]TJ +0 g 0 G +ET + +endstream +endobj +2210 0 obj +<< +/Length 7855 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F84 9.9626 Tf 1.012 0 0 1 99.895 687.165 Tm [(For)-248(computing)-248(with)-247(CUDA)-248(we)-248(de\002ne)-248(a)-248(dual)-248(memorization)-247(strategy)-248(in)-248(which)]TJ 1.02 0 0 1 99.895 675.21 Tm [(each)-323(vari)1(able)-323(on)-322(the)-323(CPU)-322(\050\223host\224\051)-323(side)-322(has)-323(a)-322(GPU)-323(\050\223device\224\051)-322(side.)-536(When)-323(a)]TJ 1.02 0 0 1 99.895 663.255 Tm [(GPU-type)-295(variable)-295(is)-295(initialized,)-307(the)-295(data)-295(contained)-295(is)-295(\050usually\051)-295(the)-295(same)-295(on)]TJ 0.998 0 0 1 99.895 651.3 Tm [(both)-251(sides.)-314(Each)-251(operator)-251(invoked)-252(on)-251(the)-251(variable)-252(may)-251(change)-251(the)-252(data)-251(so)-251(that)]TJ 1 0 0 1 99.895 639.344 Tm [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 0.981 0 0 1 114.839 627.389 Tm [(Keeping)-256(track)-255(of)-256(the)-255(updates)-256(to)-255(data)-256(in)-255(the)-256(variables)-255(is)-256(essential:)-317(we)-256(want)-255(to)]TJ 0.99 0 0 1 99.596 615.434 Tm [(perform)-252(most)-252(computations)-252(on)-251(the)-252(GPU,)-252(but)-252(we)-252(cannot)-252(af)19(f)-1(or)19(d)-252(the)-252(time)-252(needed)]TJ 1.02 0 0 1 99.895 603.479 Tm [(to)-270(move)-270(data)-271(between)-270(the)-270(host)-270(memory)-271(and)-270(the)-270(device)-270(memory)-270(because)-271(the)]TJ 0.981 0 0 1 99.895 591.524 Tm [(bandwidth)-254(of)-254(the)-255(int)1(er)18(connection)-254(bus)-254(would)-255(become)-254(the)-254(main)-254(bottleneck)-254(of)-254(the)]TJ 0.984 0 0 1 99.895 579.569 Tm [(computation.)-315(Thus,)-254(each)-255(and)-254(every)-254(computational)-254(r)18(outine)-254(in)-254(the)-254(library)-254(is)-254(built)]TJ 1 0 0 1 99.895 567.613 Tm [(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ +0 g 0 G + 13.888 -18.472 Td [(\225)]TJ +0 g 0 G + 1.002 0 0 1 124.802 549.141 Tm [(If)-248(the)-249(data)-248(type)-248(being)-249(handled)-248(is)-248(GPU-enabled,)-249(make)-248(sur)18(e)-249(that)-248(its)-248(device)]TJ 1.02 0 0 1 124.802 537.186 Tm [(copy)-300(is)-300(up)-300(to)-300(date,)-313(perform)-300(any)-300(arithmetic)-300(operation)-300(on)-300(the)-300(GPU,)-300(and)]TJ 1.02 0 0 1 124.802 525.231 Tm [(if)-266(the)-266(data)-266(has)-267(been)-266(alter)18(ed)-266(as)-266(a)-266(r)17(esult,)-271(mark)-266(the)-266(main-memory)-267(copy)-266(as)]TJ 1 0 0 1 124.802 513.276 Tm [(outdated.)]TJ +0 g 0 G + -11.019 -19.199 Td [(\225)]TJ +0 g 0 G + 1.007 0 0 1 124.493 494.077 Tm [(The)-249(main-memory)-248(copy)-249(is)-249(never)-248(updated)-249(unless)-249(this)-248(is)-249(r)18(equested)-249(by)-248(the)]TJ 1 0 0 1 124.802 482.122 Tm [(user)-250(either)]TJ +0 g 0 G +/F75 9.9626 Tf 0 -19.198 Td [(explicitly)]TJ +0 g 0 G +/F84 9.9626 Tf 47.581 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ +0 g 0 G +/F75 9.9626 Tf -47.581 -15.214 Td [(implicitly)]TJ +0 g 0 G +/F84 9.9626 Tf 1.011 0 0 1 174.595 447.71 Tm [(by)-247(invoking)-247(a)-246(method)-247(that)-247(involves)-247(other)-247(data)-247(i)1(tems)-247(that)-247(ar)18(e)]TJ 1 0 0 1 146.72 435.755 Tm [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ 1.007 0 0 1 99.895 416.556 Tm [(In)-247(this)-247(way)110(,)-248(data)-247(items)-247(ar)18(e)-247(put)-248(on)-247(the)-247(GPU)-247(memory)-248(\223on)-247(demand\224)-247(and)-247(r)18(emain)]TJ 1.02 0 0 1 99.895 404.601 Tm [(ther)18(e)-289(as)-289(long)-289(as)-288(\223normal\224)-289(computations)-289(ar)18(e)-289(carried)-289(out.)-435(As)-288(an)-289(example,)-300(the)]TJ 1 0 0 1 99.895 392.646 Tm [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +ET +q +1 0 0 1 99.895 364.481 cm +0 0 343.711 16.936 re f +Q +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +BT +/F231 8.9664 Tf 121.713 370.757 Td [(call)]TJ +0 g 0 G + [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ +0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 99.477 347.275 Tm [(will)-258(transpar)18(ently)-258(and)-258(automatically)-257(be)-258(performed)-258(on)-258(the)-257(GPU)-258(whenever)-258(all)]TJ 1.014 0 0 1 99.895 335.32 Tm [(thr)18(ee)-246(data)-245(inputs)]TJ/F131 9.9626 Tf 1 0 0 1 178.122 335.32 Tm [(a)]TJ/F84 9.9626 Tf 1.014 0 0 1 183.353 335.32 Tm [(,)]TJ/F131 9.9626 Tf 1 0 0 1 188.36 335.32 Tm [(x)]TJ/F84 9.9626 Tf 1.014 0 0 1 196.071 335.32 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 215.654 335.32 Tm [(y)]TJ/F84 9.9626 Tf 1.014 0 0 1 223.364 335.32 Tm [(ar)18(e)-246(GPU-enabled.)-305(If)-246(a)-245(pr)18(ogram)-246(makes)-245(many)-246(such)]TJ 1 0 0 1 99.895 323.364 Tm [(calls)-250(sequentially)111(,)-250(then)]TJ +0 g 0 G + 13.888 -18.472 Td [(\225)]TJ +0 g 0 G + 1.02 0 0 1 124.493 304.892 Tm [(The)-273(\002rst)-273(kernel)-273(invocation)-273(will)-273(\002nd)-273(the)-273(data)-273(in)-273(main)-273(memory)109(,)-280(and)-273(will)]TJ 1.02 0 0 1 124.802 292.937 Tm [(copy)-302(it)-303(to)-302(the)-303(GPU)-302(memory)109(,)-317(thus)-303(incurring)-302(a)-303(signi\002cant)-302(over)18(head;)-332(the)]TJ 1 0 0 1 124.802 280.982 Tm [(r)18(esult)-250(is)-250(however)]TJ/F78 9.9626 Tf 78.156 0 Td [(not)]TJ/F84 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ +0 g 0 G + -104.946 -19.198 Td [(\225)]TJ +0 g 0 G + 1.02 0 0 1 124.802 261.784 Tm [(Subsequent)-308(kernel)-308(invocations)-308(inv)1(olving)-308(the)-308(same)-308(vector)-308(will)-308(\002nd)-308(the)]TJ 1 0 0 1 124.802 249.828 Tm [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ 1.016 0 0 1 99.895 231.356 Tm [(For)-246(all)-245(invocations)-246(after)-246(the)-245(\002rst)-246(the)-246(only)-245(data)-246(that)-246(will)-246(have)-245(to)-246(be)-246(transferr)18(ed)]TJ 1.02 0 0 1 99.895 219.401 Tm [(to/fr)18(om)-254(the)-254(main)-253(memory)-254(will)-254(be)-253(the)-254(scalars)]TJ/F131 9.9626 Tf 1 0 0 1 304.51 219.401 Tm [(alpha)]TJ/F84 9.9626 Tf 1.02 0 0 1 333.239 219.401 Tm [(and)]TJ/F131 9.9626 Tf 1 0 0 1 353.021 219.401 Tm [(beta)]TJ/F84 9.9626 Tf 1.02 0 0 1 373.942 219.401 Tm [(,)-256(and)-254(the)-253(r)17(etu)1(rn)]TJ 1 0 0 1 99.895 207.446 Tm [(code)]TJ/F131 9.9626 Tf 23.213 0 Td [(info)]TJ/F84 9.9626 Tf 20.921 0 Td [(.)]TJ +0 g 0 G +/F75 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ +0 g 0 G +/F84 9.9626 Tf 1.003 0 0 1 140.264 187.345 Tm [(The)-248(data)-248(type)]TJ/F131 9.9626 Tf 1 0 0 1 203.39 187.345 Tm [(psb_T_vect_gpu)]TJ/F84 9.9626 Tf 1.003 0 0 1 279.095 187.345 Tm [(pr)18(ovides)-248(a)-248(GPU-enabled)-248(extension)-249(of)]TJ 1.02 0 0 1 124.802 175.39 Tm [(the)-261(inner)-260(type)]TJ/F131 9.9626 Tf 1 0 0 1 190.45 175.39 Tm [(psb_T_base_vect_type)]TJ/F84 9.9626 Tf 1.02 0 0 1 295.057 175.39 Tm [(,)-265(and)-260(must)-261(be)-261(used)-261(together)-260(with)]TJ 1.02 0 0 1 124.802 163.435 Tm [(the)-274(other)-275(inner)-274(matrix)-274(type)-275(to)-274(make)-274(full)-274(use)-275(of)-274(the)-274(GPU)-275(computational)]TJ 1 0 0 1 124.802 151.479 Tm [(capabilities;)]TJ +0 g 0 G +/F75 9.9626 Tf -24.907 -19.198 Td [(CSR:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.982 0 0 1 127.532 132.281 Tm [(The)-255(data)-256(type)]TJ/F131 9.9626 Tf 1 0 0 1 189.551 132.281 Tm [(psb_T_csrg_sparse_mat)]TJ/F84 9.9626 Tf 0.982 0 0 1 301.888 132.281 Tm [(pr)18(ovides)-255(an)-256(i)1(nterface)-256(to)-255(the)-256(GPU)]TJ 1 0 0 1 124.523 120.326 Tm [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ +0 g 0 G + 139.756 -29.888 Td [(175)]TJ +0 g 0 G +ET + +endstream +endobj +2215 0 obj +<< +/Length 5849 +>> +stream +0 g 0 G +0 g 0 G +0 g 0 G +BT +/F75 9.9626 Tf 150.705 706.129 Td [(HYB:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 179.457 706.129 Tm [(The)-251(data)-252(type)]TJ/F131 9.9626 Tf 1 0 0 1 241.232 706.129 Tm [(psb_T_hybg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 353.524 706.129 Tm [(pr)18(ovides)-251(an)-251(interface)-252(to)-251(the)-252(HYB)]TJ 1.02 0 0 1 175.611 694.174 Tm [(GPU)-295(storage)-296(available)-295(in)-296(t)1(he)-296(NVIDIA)-295(CuSP)90(ARSE)-295(library)108(.)-454(The)-296(internal)]TJ 1.001 0 0 1 175.611 682.219 Tm [(str)8(uctur)18(e)-249(is)-249(opaque,)-249(hence)-249(the)-250(host)-249(side)-249(is)-249(just)-249(CSR;)-249(the)-249(HYB)-249(data)-249(format)]TJ 1 0 0 1 175.611 670.263 Tm [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -20.26 Td [(ELL:)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 176.129 650.003 Tm [(The)-265(data)-266(t)1(ype)]TJ/F131 9.9626 Tf 1 0 0 1 240.847 650.003 Tm [(psb_T_elg_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 348.149 650.003 Tm [(pr)18(ovides)-266(an)-265(interface)-265(to)-265(the)-265(ELL-)]TJ 1 0 0 1 175.611 638.048 Tm [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -20.261 Td [(HLL:)]TJ +0 g 0 G +/F84 9.9626 Tf 0.98 0 0 1 178.341 617.787 Tm [(The)-194(data)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 238.431 617.787 Tm [(psb_T_hlg_sparse_mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 344.93 617.787 Tm [(pr)18(ovides)-194(an)-193(interface)-194(to)-194(the)-194(Hacked)]TJ 1 0 0 1 175.611 605.832 Tm [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ +0 g 0 G +/F75 9.9626 Tf -24.906 -20.261 Td [(HDIA:)]TJ +0 g 0 G +/F84 9.9626 Tf 1.02 0 0 1 186.092 585.571 Tm [(The)-298(data)-297(type)]TJ/F131 9.9626 Tf 1 0 0 1 251.795 585.571 Tm [(psb_T_hdiag_sparse_mat)]TJ/F84 9.9626 Tf 1.02 0 0 1 369.887 585.571 Tm [(pr)18(ovides)-298(an)-297(interface)-298(to)-298(the)]TJ 1 0 0 1 175.611 573.616 Tm [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F75 14.3462 Tf -24.906 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F75 11.9552 Tf 0 -24.857 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 514.195 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 513.996 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 514.195 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -54.42 -19.126 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_init\050ctxt)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525([,)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(device]\051)]TJ/F84 9.9626 Tf 14.944 -22.253 Td [(This)-250(subr)18(outine)-250(initializes)-250(the)-250(PSBLAS-CUDA)-250(envir)18(onment.)]TJ +0 g 0 G +/F75 9.9626 Tf -14.944 -20.177 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.26 Td [(device)]TJ +0 g 0 G +/F84 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(optional)]TJ/F84 9.9626 Tf 38.186 0 Td [(.)]TJ -64.965 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ 1.003 0 0 1 175.611 364.098 Tm [(Speci\002ed)-249(as:)-308(an)-249(integer)-248(value.)-558(Default:)-308(use)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf 1 0 0 1 368.645 364.098 Tm [(mod)]TJ +0 g 0 G + [(\050iam,ngpu\051)]TJ/F84 9.9626 Tf 1.003 0 0 1 439.123 364.098 Tm [(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 469.097 364.098 Tm [(iam)]TJ/F84 9.9626 Tf 1.003 0 0 1 487.271 364.098 Tm [(is)]TJ 1.011 0 0 1 175.611 352.143 Tm [(the)-247(calling)-248(pr)18(ocess)-247(index)-248(and)]TJ/F131 9.9626 Tf 1 0 0 1 307.014 352.143 Tm [(ngpu)]TJ/F84 9.9626 Tf 1.011 0 0 1 330.428 352.143 Tm [(is)-247(the)-248(total)-247(number)-247(of)-248(CUDA)-247(devices)]TJ 1 0 0 1 175.611 340.187 Tm [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F75 11.9552 Tf -24.906 -20.176 Td [(Notes)]TJ +0 g 0 G +/F84 9.9626 Tf 12.453 -20.177 Td [(1.)]TJ +0 g 0 G + [-461(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F75 11.9552 Tf -12.453 -29.61 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 270.423 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 270.224 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 270.423 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -54.42 -19.126 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_exit\050ctxt\051)]TJ/F84 9.9626 Tf 14.944 -22.254 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(CUDA)-250(context.)]TJ +0 g 0 G +/F75 9.9626 Tf -14.944 -20.176 Td [(T)90(ype:)]TJ +0 g 0 G +/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +0 g 0 G +/F75 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ +0 g 0 G +0 g 0 G + 0 -20.261 Td [(ctxt)]TJ +0 g 0 G +/F84 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.431 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.522 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.071 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ +0 g 0 G + 139.477 -29.888 Td [(176)]TJ +0 g 0 G +ET + +endstream +endobj +2220 0 obj +<< +/Length 5422 +>> +stream +0 g 0 G +0 g 0 G +BT +/F75 11.9552 Tf 99.895 706.129 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ +0.00 0.44 0.13 rg 0.00 0.44 0.13 RG +/F131 9.9626 Tf -54.42 -19.65 Td [(call)]TJ +0 g 0 G + [-525(psb_cuda_DeviceSync\050\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 114.839 663.146 Tm [(This)-249(subr)18(outine)-248(ensur)18(es)-249(that)-249(all)-249(pr)18(evi)1(osly)-249(invoked)-249(kernels,)-250(i.e.)-315(all)-249(invocation)]TJ 1 0 0 1 99.895 651.191 Tm [(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 620.243 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 620.044 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 620.243 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 620.044 Td [(getDeviceCount)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-1050(psb_cuda_getDeviceCount\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Get)-250(number)-250(of)-250(devices)-250(available)-250(on)-250(curr)18(ent)-250(computing)-250(node.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 546.113 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 545.914 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 546.113 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 545.914 Td [(getDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-1050(psb_cuda_getDevice\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Get)-250(device)-250(in)-250(use)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 471.983 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 471.784 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 471.983 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 471.784 Td [(setDevice)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(info)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_setDevice\050dev\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Set)-250(device)-250(to)-250(be)-250(used)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 397.853 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 397.654 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 397.853 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 397.654 Td [(DeviceHasUV)129(A)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 114.839 354.671 Tm [(Returns)-250(tr)7(ue)-250(if)-250(device)-251(curr)18(ently)-250(in)-251(use)-250(supports)-250(UV)108(A)-250(\050Uni\002ed)-250(V)54(irtual)-251(Ad-)]TJ 1 0 0 1 99.895 342.716 Tm [(dr)18(essing\051.)]TJ/F75 11.9552 Tf 0 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 311.768 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 311.569 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 311.768 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 311.569 Td [(W)74(arpSize)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_WarpSize\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(warp)-250(size.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 237.638 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 237.439 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 237.638 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 237.439 Td [(MultiProcessors)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_MultiProcessors\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(number)-250(of)-250(multipr)18(ocessors)-250(in)-250(the)-250(CUDA)-250(device.)]TJ/F75 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ +ET +q +1 0 0 1 120.53 163.508 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 124.116 163.309 Td [(cuda)]TJ +ET +q +1 0 0 1 150.729 163.508 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 154.315 163.309 Td [(MaxThreadsPerMP)]TJ/F131 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_MaxThreadsPerMP\050\051)]TJ/F84 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(thr)18(eads)-250(per)-250(multipr)18(ocessor)74(.)]TJ +0 g 0 G + 149.44 -29.888 Td [(177)]TJ +0 g 0 G +ET + endstream endobj -2156 0 obj +2224 0 obj << -/Length 634 +/Length 2730 >> stream 0 g 0 G 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +BT +/F75 11.9552 Tf 150.705 706.129 Td [(psb)]TJ +ET q -1 0 0 1 99.895 662.293 cm -0 0 343.711 49.813 re f +1 0 0 1 171.339 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +BT +/F75 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 706.328 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 706.129 Td [(MaxRegistersPerBlock)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG + [-525(psb_cuda_MaxRegistersPerBlock\050\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(r)18(egister)-250(per)-250(thr)18(ead)-250(block.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 636.313 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q BT -/F102 8.9664 Tf 112.299 690.488 Td [(contains)]TJ +/F75 11.9552 Tf 174.926 636.114 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 636.313 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 636.114 Td [(MemoryClockRate)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G - 4.707 -10.959 Td [(....)]TJ + [-525(psb_cuda_MemoryClockRate\050\051)]TJ/F84 9.9626 Tf 14.944 -21.917 Td [(Returns)-250(the)-250(memory)-250(clock)-250(rate)-250(in)-250(KHz,)-250(as)-250(an)-250(integer)74(.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 566.299 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 566.1 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 566.299 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 566.1 Td [(MemoryBusW)37(idth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ 0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG - -4.707 -10.959 Td [(end)-525(type)]TJ +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ 0 g 0 G -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G + [-525(psb_cuda_MemoryBusWidth\050\051)]TJ/F84 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(memory)-250(bus)-250(width)-250(in)-250(bits.)]TJ/F75 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ +ET +q +1 0 0 1 171.339 496.284 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 174.926 496.085 Td [(cuda)]TJ +ET +q +1 0 0 1 201.538 496.284 cm +[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S +Q +BT +/F75 11.9552 Tf 205.125 496.085 Td [(MemoryPeakBandwidth)]TJ/F131 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG +0 g 0 G +0.40 0.40 0.40 rg 0.40 0.40 0.40 RG + [-525(=)]TJ +0 g 0 G +0.73 0.73 0.73 rg 0.73 0.73 0.73 RG 0 g 0 G + [-525(psb_cuda_MemoryPeakBandwidth\050\051)]TJ/F84 9.9626 Tf 0 -21.918 Td [(Returns)-250(the)-250(peak)-250(memory)-250(bandwidth)-250(in)-250(MB/s)-250(\050r)18(eal)-250(double)-250(pr)18(ecision\051.)]TJ 0 g 0 G -/F62 9.9626 Tf 151.98 -578.132 Td [(169)]TJ + 164.383 -364.765 Td [(178)]TJ 0 g 0 G ET endstream endobj -2161 0 obj +2228 0 obj << -/Length 7014 +/Length 7303 >> stream 0 g 0 G 0 g 0 G BT -/F59 11.9552 Tf 150.705 706.129 Td [(12.4)-1000(CUDA-class)-250(extensions)]TJ/F62 9.9626 Tf 0 -18.964 Td [(For)-285(computing)-285(with)-285(CUDA)-285(we)-285(de\002ne)-285(a)-285(dual)-285(memorization)-285(strategy)-285(in)-285(which)]TJ 0 -11.955 Td [(each)-368(variable)-368(on)-368(the)-369(CPU)-368(\050\223host\224\051)-368(side)-368(has)-368(a)-368(GPU)-368(\050\223device\224\051)-368(side.)-665(When)-368(a)]TJ 0 -11.955 Td [(GPU-type)-355(variable)-355(is)-355(initialized,)-382(the)-355(data)-355(contained)-355(is)-356(\050usually\051)-355(the)-355(same)-355(on)]TJ 0 -11.955 Td [(both)-246(sides.)-309(Each)-246(operator)-245(invoked)-246(on)-246(the)-246(variable)-246(may)-246(change)-246(the)-246(data)-246(so)-246(that)]TJ 0 -11.956 Td [(only)-250(the)-250(host)-250(side)-250(or)-250(the)-250(device)-250(side)-250(ar)18(e)-250(up-to-date.)]TJ 14.944 -11.955 Td [(Keeping)-208(track)-209(of)-209(the)-208(updates)-209(to)-208(data)-209(in)-208(the)-209(variables)-208(is)-209(essential:)-289(we)-209(want)-208(to)]TJ -14.944 -11.955 Td [(perform)-220(most)-221(comp)1(utations)-221(on)-220(the)-220(GPU,)-221(but)-220(we)-220(cannot)-220(af)18(for)18(d)-221(the)-220(time)-220(needed)]TJ 0 -11.955 Td [(to)-327(move)-326(data)-327(between)-326(the)-327(host)-327(memory)-326(and)-327(the)-326(device)-327(memory)-327(because)-326(the)]TJ 0 -11.955 Td [(bandwidth)-351(of)-352(the)-351(inter)18(connection)-352(bus)-351(would)-351(become)-352(the)-351(main)-352(bottleneck)-351(of)]TJ 0 -11.955 Td [(the)-262(computation.)-347(Thus,)-265(each)-263(and)-262(every)-262(computational)-262(r)18(outine)-262(in)-263(the)-262(library)-262(is)]TJ 0 -11.956 Td [(built)-250(accor)18(ding)-250(to)-250(the)-250(following)-250(principles:)]TJ +/F75 14.3462 Tf 99.895 705.784 Td [(References)]TJ 0 g 0 G - 13.888 -18.472 Td [(\225)]TJ +/F84 9.9626 Tf 4.982 -23.579 Td [([1])]TJ 0 g 0 G - [-500(If)-254(the)-253(data)-254(type)-253(being)-254(handled)-254(is)-253(GPU-enabled,)-255(make)-253(sur)18(e)-254(that)-254(its)-253(device)]TJ 11.018 -11.955 Td [(copy)-351(is)-352(up)-351(to)-351(date,)-377(perform)-351(any)-351(arithmetic)-351(operation)-351(on)-352(the)-351(GPU,)-351(and)]TJ 0 -11.955 Td [(if)-314(the)-313(data)-314(has)-314(been)-313(alter)18(ed)-314(as)-313(a)-314(r)18(esult,)-330(mark)-313(the)-314(main-memory)-314(copy)-313(as)]TJ 0 -11.955 Td [(outdated.)]TJ + 1.02 0 0 1 121.474 682.205 Tm [(G.)-316(Bella,)-333(S.)-316(Filippone,)-334(A.)-315(De)-316(Maio)-316(and)-316(M.)-316(T)91(esta,)]TJ/F78 9.9626 Tf 1.02 0 0 1 343.652 682.205 Tm [(A)-316(Simulation)-315(Model)-316(for)]TJ 0.986 0 0 1 121.195 670.25 Tm [(For)18(est)-255(Fir)19(es)]TJ/F84 9.9626 Tf 0.986 0 0 1 167.553 670.25 Tm [(,)-255(in)-255(J.)-255(Dongarra,)-255(K.)-255(Madsen,)-255(J.)-255(W)94(asniewski,)-256(editors,)-255(Pr)19(oceedings)]TJ 0.98 0 0 1 121.474 658.295 Tm [(of)-252(P)94(ARA)-251(04)-252(W)94(orkshop)-251(on)-252(State)-251(of)-252(the)-251(Art)-252(in)-251(Scienti\002c)-251(Computing,)-253(pp.)-251(546\226)]TJ 1 0 0 1 121.474 646.34 Tm [(553,)-250(Lectur)18(e)-250(Notes)-250(in)-250(Computer)-250(Science,)-250(Springer)74(,)-250(2005.)]TJ 0 g 0 G - -11.018 -19.199 Td [(\225)]TJ + -16.597 -21.736 Td [([2])]TJ 0 g 0 G - [-500(The)-266(main-memory)-266(copy)-266(is)-266(never)-267(u)1(pdated)-267(unless)-266(this)-266(is)-266(r)18(equested)-266(by)-266(the)]TJ 11.018 -11.955 Td [(user)-250(either)]TJ + 1.02 0 0 1 121.474 624.604 Tm [(D.)-322(Bertaccini)-322(and)-322(S.)-322(Filippone,)]TJ/F78 9.9626 Tf 1.02 0 0 1 263.46 624.604 Tm [(Sparse)-322(appr)18(oximate)-322(inverse)-322(pr)17(econditioners)]TJ 1.006 0 0 1 121.474 612.649 Tm [(on)-249(high)-250(performance)-249(GPU)-249(platforms)]TJ/F84 9.9626 Tf 1.006 0 0 1 268.626 612.649 Tm [(,)-250(Comput.)-249(Math.)-249(Appl.,)-250(71,)-249(\0502016\051,)-250(no.)-249(3,)]TJ 1 0 0 1 121.474 600.694 Tm [(693\226711.)]TJ 0 g 0 G -/F59 9.9626 Tf 0 -19.199 Td [(explicitly)]TJ + -16.597 -21.736 Td [([3])]TJ 0 g 0 G -/F62 9.9626 Tf 47.582 0 Td [(by)-250(invoking)-250(a)-250(synchr)18(onization)-250(method;)]TJ + 0.989 0 0 1 121.474 578.958 Tm [(A.)-252(Buttari,)-252(D.)-252(di)-252(Sera\002no,)-252(P)130(.)-252(D'Ambra,)-252(S.)-252(Filippone,)-111(2LEV)75(-D2P4:)-313(a)-252(package)]TJ 1.003 0 0 1 121.474 567.003 Tm [(of)-251(high-performance)-251(pr)17(ec)1(onditioners,)-115(A)1(pplicable)-252(Algebra)-251(in)-251(Engineering,)]TJ 1.02 0 0 1 121.474 555.048 Tm [(Communications)-246(and)-246(Computing,)-247(V)109(olume)-246(18,)-247(Number)-246(3,)-247(May)109(,)-246(2007,)-247(pp.)]TJ 1 0 0 1 121.474 543.093 Tm [(223-239)]TJ 0 g 0 G -/F59 9.9626 Tf -47.582 -15.213 Td [(implicitly)]TJ + -16.597 -21.736 Td [([4])]TJ 0 g 0 G -/F62 9.9626 Tf 49.793 0 Td [(by)-276(invoking)-276(a)-277(method)-276(that)-276(involves)-276(other)-277(data)-276(items)-276(that)-276(ar)18(e)]TJ -27.875 -11.955 Td [(not)-250(GPU-enabled,)-250(e.g.,)-250(by)-250(assignment)-250(ov)-250(a)-250(vector)-250(to)-250(a)-250(normal)-250(array)111(.)]TJ -46.824 -19.199 Td [(In)-264(this)-264(way)111(,)-268(data)-264(items)-264(ar)18(e)-265(put)-264(on)-264(the)-264(GPU)-264(memory)-265(\223on)-264(demand\224)-264(and)-264(r)18(emain)]TJ 0 -11.955 Td [(ther)18(e)-337(as)-337(long)-337(as)-337(\223normal\224)-337(computations)-337(ar)18(e)-337(carried)-337(out.)-571(As)-337(an)-336(example,)-359(the)]TJ 0 -11.955 Td [(following)-250(call)-250(to)-250(a)-250(matrix-vector)-250(pr)18(oduct)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG -ET -q -1 0 0 1 150.705 364.481 cm -0 0 343.711 16.936 re f -Q -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + 1.005 0 0 1 121.474 521.357 Tm [(P)128(.)-248(D'Ambra,)-248(S.)-249(Filippone,)-248(D.)-248(Di)-249(Sera\002)1(no)-109(On)-249(the)-248(Development)-248(of)-248(PSBLAS-)]TJ 1.02 0 0 1 121.474 509.402 Tm [(based)-465(Parallel)-464(T)88(wo-level)-464(Schwarz)-465(Pr)18(econditioners)-1055(Applied)-465(Numeri-)]TJ 1.02 0 0 1 121.474 497.447 Tm [(cal)-323(Mathematics,)-343(Elsevier)-323(Science,)-342(V)109(olume)-323(57,)-343(Issues)-323(11-12,)-343(November)18(-)]TJ 1 0 0 1 121.474 485.492 Tm [(December)-250(2007,)-250(Pages)-250(1181-1196.)]TJ 0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG + -16.597 -21.736 Td [([5])]TJ 0 g 0 G -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -BT -/F102 8.9664 Tf 172.523 370.757 Td [(call)]TJ + 1.006 0 0 1 121.474 463.756 Tm [(Dongarra,)-250(J.)-249(J.,)-250(DuCr)18(oz,)-250(J)1(.,)-250(Hammarling,)-250(S.)-249(and)-250(Hanson,)-249(R.,)-250(An)-249(Extended)]TJ 0.98 0 0 1 121.474 451.801 Tm [(Set)-234(of)-234(Fortran)-233(Basic)-234(Linear)-234(Algebra)-233(Subpr)18(ograms,)-238(ACM)-234(T)92(rans.)-234(Math.)-233(Softw)93(.)]TJ 1 0 0 1 121.195 439.846 Tm [(vol.)-250(14,)-250(1\22617,)-250(1988.)]TJ 0 g 0 G - [-525(psb_spmm\050alpha,a,x,beta,y,desc_a,info\051)]TJ -0.95 0.95 0.95 rg 0.95 0.95 0.95 RG + -16.318 -21.735 Td [([6])]TJ 0 g 0 G -/F62 9.9626 Tf -21.818 -23.482 Td [(will)-321(transpar)18(ently)-322(and)-321(automatically)-321(be)-322(performed)-321(on)-321(the)-322(GPU)-321(whenever)-321(all)]TJ 0 -11.955 Td [(thr)18(ee)-274(data)-274(inputs)]TJ/F67 9.9626 Tf 78.001 0 Td [(a)]TJ/F62 9.9626 Tf 5.23 0 Td [(,)]TJ/F67 9.9626 Tf 5.282 0 Td [(x)]TJ/F62 9.9626 Tf 7.961 0 Td [(and)]TJ/F67 9.9626 Tf 19.598 0 Td [(y)]TJ/F62 9.9626 Tf 7.962 0 Td [(ar)18(e)-274(GPU-enabled.)-382(If)-275(a)-274(pr)18(ogram)-274(makes)-274(many)-274(such)]TJ -124.034 -11.956 Td [(calls)-250(sequentially)111(,)-250(then)]TJ + 0.983 0 0 1 121.474 418.111 Tm [(Dongarra,)-255(J.,)-254(D)-1(u)1(Cr)18(oz,)-255(J.,)-255(Hammarling,)-254(S.)-255(and)-255(Duf)19(f)-1(,)-254(I.,)-255(A)-255(Set)-254(of)-255(level)-255(3)-254(Basic)]TJ 0.985 0 0 1 121.474 406.156 Tm [(Linear)-254(Algebra)-254(Subpr)19(ograms,)-254(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)-253(vol.)-254(16,)-254(1\22617,)-254(1990.)]TJ 0 g 0 G - 13.888 -18.472 Td [(\225)]TJ + 1 0 0 1 104.877 384.42 Tm [([7])]TJ +0 g 0 G + 0.993 0 0 1 121.474 384.42 Tm [(J.)-252(J.)-252(Dongarra)-252(and)-252(R.)-253(C.)-252(Whaley)112(,)]TJ/F78 9.9626 Tf 0.993 0 0 1 262.893 384.42 Tm [(A)-252(User)-37(')55(s)-252(Guide)-252(to)-252(the)-252(BLACS)-252(v)55(.)-252(1.1)]TJ/F84 9.9626 Tf 0.993 0 0 1 407.142 384.42 Tm [(,)-252(Lapack)]TJ 0.98 0 0 1 120.976 372.465 Tm [(W)94(orking)-229(Note)-230(94,)-234(T)94(ech.)-230(Rep.)-229(UT)56(-CS-95-281,)-234(University)-230(of)-229(T)94(ennessee,)-234(Mar)18(ch)]TJ 1 0 0 1 120.976 360.51 Tm [(1995)-250(\050updated)-250(May)-250(1997\051.)]TJ +0 g 0 G + -16.099 -21.736 Td [([8])]TJ 0 g 0 G - [-500(The)-322(\002rst)-322(kernel)-322(invocation)-322(will)-322(\002nd)-322(the)-322(data)-322(in)-322(main)-322(memory)111(,)-340(and)-322(will)]TJ 11.019 -11.955 Td [(copy)-356(it)-357(to)-356(the)-357(GPU)-356(memory)111(,)-383(thus)-356(incurring)-357(a)-356(signi\002cant)-356(over)18(head;)-410(the)]TJ 0 -11.955 Td [(r)18(esult)-250(is)-250(however)]TJ/F60 9.9626 Tf 78.155 0 Td [(not)]TJ/F62 9.9626 Tf 15.771 0 Td [(copied)-250(back,)-250(and)-250(ther)18(efor)18(e:)]TJ + 1.004 0 0 1 121.474 338.774 Tm [(I.)-250(Duf)18(f,)-250(M.)-250(Marr)18(one,)-250(G.)-250(Radicati)-250(and)-250(C.)-250(V)55(ittoli,)]TJ/F78 9.9626 Tf 1.004 0 0 1 328.201 338.774 Tm [(Level)-250(3)-250(Basic)-250(Linear)-250(Algebra)]TJ 0.982 0 0 1 121.195 326.819 Tm [(Subpr)18(ograms)-253(for)-254(Sparse)-254(Matrices:)-315(a)-254(User)-254(Level)-254(Interface)]TJ/F84 9.9626 Tf 0.982 0 0 1 344.719 326.819 Tm [(,)-254(ACM)-254(T)92(ransactions)-254(on)]TJ 1 0 0 1 121.474 314.864 Tm [(Mathematical)-250(Softwar)18(e,)-250(23\0503\051,)-250(pp.)-250(379\226401,)-250(1997.)]TJ 0 g 0 G - -104.945 -19.199 Td [(\225)]TJ + -16.597 -21.736 Td [([9])]TJ +0 g 0 G + 1.02 0 0 1 121.474 293.128 Tm [(I.)-354(Duf)18(f,)-381(M.)-354(Her)17(oux)-354(and)-354(R.)-354(Pozo,)]TJ/F78 9.9626 Tf 1.02 0 0 1 273.913 293.128 Tm [(An)-354(Overview)-354(of)-354(the)-354(Sparse)-354(Basic)-354(Linear)]TJ 0.982 0 0 1 121.116 281.173 Tm [(Algebra)-254(Subpr)18(ograms:)-316(the)-254(New)-254(Standard)-255(fr)19(om)-255(the)-254(BLAS)-255(T)113(echnical)-254(Forum)]TJ/F84 9.9626 Tf 0.982 0 0 1 414.869 281.173 Tm [(,)-254(ACM)]TJ 1 0 0 1 121.166 269.218 Tm [(T)90(ransactions)-250(on)-250(Mathematical)-250(Softwar)18(e,)-250(28\0502\051,)-250(pp.)-250(239\226267,)-250(2002.)]TJ 0 g 0 G - [-500(Subsequent)-378(kernel)-377(invocations)-378(involving)-377(the)-378(same)-377(vector)-378(will)-378(\002nd)-377(the)]TJ 11.018 -11.955 Td [(data)-250(on)-250(the)-250(GPU)-250(side)-250(so)-250(that)-250(they)-250(will)-250(r)8(un)-250(at)-250(full)-250(speed.)]TJ -24.906 -18.472 Td [(For)-285(al)1(l)-285(invocations)-285(af)1(ter)-285(the)-285(\002rst)-284(the)-285(only)-284(data)-285(that)-284(will)-285(have)-284(to)-285(be)-284(transferr)18(ed)]TJ 0 -11.955 Td [(to/fr)18(om)-298(the)-298(main)-298(memory)-297(will)-298(be)-298(the)-298(scalars)]TJ/F67 9.9626 Tf 204.122 0 Td [(alpha)]TJ/F62 9.9626 Tf 29.12 0 Td [(and)]TJ/F67 9.9626 Tf 19.834 0 Td [(beta)]TJ/F62 9.9626 Tf 20.921 0 Td [(,)-310(and)-298(the)-298(r)18(eturn)]TJ -273.997 -11.955 Td [(code)]TJ/F67 9.9626 Tf 23.213 0 Td [(info)]TJ/F62 9.9626 Tf 20.921 0 Td [(.)]TJ + -21.271 -21.735 Td [([10])]TJ 0 g 0 G -/F59 9.9626 Tf -44.134 -20.101 Td [(V)111(ectors:)]TJ + 1.02 0 0 1 121.474 247.483 Tm [(S.)-256(Filippone)-256(and)-256(M.)-255(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 260.376 247.483 Tm [(PSBLAS:)-256(A)-256(Library)-255(for)-256(Parallel)-256(Linear)-256(Alge-)]TJ 1.02 0 0 1 121.474 235.528 Tm [(bra)-278(Computation)-278(on)-278(Sparse)-278(Matrices)]TJ/F84 9.9626 Tf 1.02 0 0 1 273.712 235.528 Tm [(,)-467(ACM)-278(T)88(ransactions)-278(on)-278(Mathematical)]TJ 1 0 0 1 121.474 223.572 Tm [(Softwar)18(e,)-250(26\0504\051,)-250(pp.)-250(527\226550,)-250(2000.)]TJ +0 g 0 G + -21.579 -21.735 Td [([11])]TJ 0 g 0 G -/F62 9.9626 Tf 40.677 0 Td [(The)-253(data)-253(type)]TJ/F67 9.9626 Tf 63.08 0 Td [(psb_T_vect_gpu)]TJ/F62 9.9626 Tf 75.745 0 Td [(pr)18(ovides)-253(a)-253(GPU-enabled)-253(extension)-253(of)]TJ -154.595 -11.955 Td [(the)-306(inner)-307(type)]TJ/F67 9.9626 Tf 65.726 0 Td [(psb_T_base_vect_type)]TJ/F62 9.9626 Tf 104.607 0 Td [(,)-321(and)-306(must)-307(be)-306(used)-306(together)-307(with)]TJ -170.333 -11.955 Td [(the)-327(other)-326(inner)-327(matrix)-326(type)-327(to)-327(make)-326(full)-327(use)-326(of)-327(the)-327(GPU)-326(computational)]TJ 0 -11.956 Td [(capabilities;)]TJ + 1.02 0 0 1 121.474 201.837 Tm [(S.)-328(Filippone)-329(and)-328(A.)-329(Bu)1(ttari,)]TJ/F78 9.9626 Tf 1.02 0 0 1 250.516 201.837 Tm [(Object-Oriented)-328(T)109(echniques)-329(for)-328(Sparse)-328(Matrix)]TJ 0.98 0 0 1 121.146 189.882 Tm [(Computations)-227(in)-228(Fortran)-227(2003)]TJ/F84 9.9626 Tf 0.98 0 0 1 241.714 189.882 Tm [(,)-313(ACM)-227(T)92(ransactions)-228(on)-227(Mathematical)-228(Softwar)19(e,)]TJ 1 0 0 1 121.474 177.927 Tm [(38\0504\051,)-250(2012.)]TJ 0 g 0 G -/F59 9.9626 Tf -24.907 -19.198 Td [(CSR:)]TJ + -21.579 -21.736 Td [([12])]TJ 0 g 0 G -/F62 9.9626 Tf 27.945 0 Td [(The)-210(data)-210(type)]TJ/F67 9.9626 Tf 61.792 0 Td [(psb_T_csrg_sparse_mat)]TJ/F62 9.9626 Tf 111.928 0 Td [(pr)18(ovides)-210(an)-210(interface)-209(to)-210(the)-210(GPU)]TJ -176.758 -11.955 Td [(version)-250(of)-250(CSR)-250(available)-250(in)-250(the)-250(NVIDIA)-250(CuSP)92(ARSE)-250(library;)]TJ + 1.02 0 0 1 121.474 156.191 Tm [(S.)-284(Filippone,)-294(P)127(.)-284(D'Ambra,)-294(M.)-284(Colajanni,)]TJ/F78 9.9626 Tf 1.02 0 0 1 302.518 156.191 Tm [(Using)-284(a)-284(Parallel)-284(Library)-284(of)-284(Sparse)]TJ 1.02 0 0 1 121.195 144.236 Tm [(Linear)-296(Algebra)-296(in)-295(a)-296(Fluid)-296(Dynamics)-296(Applications)-296(Code)-295(on)-296(Linux)-296(Clusters)]TJ/F84 9.9626 Tf 1.02 0 0 1 429.06 144.236 Tm [(,)-308(in)]TJ 0.99 0 0 1 121.474 132.281 Tm [(G.)-254(Joubert,)-254(A.)-254(Murli,)-254(F)93(.)-254(Peters,)-254(M.)-254(V)93(anneschi,)-255(editors,)-254(Parallel)-254(Computing)-253(-)]TJ 1 0 0 1 121.086 120.326 Tm [(Advances)-250(&)-250(Curr)18(ent)-250(Issues,)-250(pp.)-250(441\226448,)-250(Imperial)-250(College)-250(Pr)18(ess,)-250(2002.)]TJ 0 g 0 G - 139.476 -29.888 Td [(170)]TJ + 143.193 -29.888 Td [(179)]TJ 0 g 0 G ET endstream endobj -2165 0 obj +2236 0 obj << -/Length 5445 +/Length 6153 >> stream 0 g 0 G 0 g 0 G 0 g 0 G BT -/F59 9.9626 Tf 99.895 706.129 Td [(HYB:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.061 0 Td [(The)-201(data)-202(typ)1(e)]TJ/F67 9.9626 Tf 61.537 0 Td [(psb_T_hybg_sparse_mat)]TJ/F62 9.9626 Tf 111.842 0 Td [(pr)18(ovides)-201(an)-201(interface)-202(to)-201(the)-201(HYB)]TJ -177.533 -11.955 Td [(GPU)-353(storage)-354(available)-354(in)-353(the)-354(NVIDIA)-353(CuSP)92(ARSE)-354(library)111(.)-621(The)-353(internal)]TJ 0 -11.955 Td [(str)8(uctur)18(e)-251(is)-252(opaque,)-252(hence)-251(the)-252(host)-251(side)-252(is)-252(just)-251(CSR;)-252(the)-251(HYB)-252(data)-251(format)]TJ 0 -11.956 Td [(is)-250(only)-250(available)-250(up)-250(to)-250(CUDA)-250(version)-250(10.)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -20.26 Td [(ELL:)]TJ -0 g 0 G -/F62 9.9626 Tf 25.734 0 Td [(The)-290(data)-291(type)]TJ/F67 9.9626 Tf 64.203 0 Td [(psb_T_elg_sparse_mat)]TJ/F62 9.9626 Tf 107.501 0 Td [(pr)18(ovides)-290(an)-291(interface)-290(to)-291(the)-290(ELL-)]TJ -172.531 -11.955 Td [(P)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -20.261 Td [(HLL:)]TJ -0 g 0 G -/F62 9.9626 Tf 27.946 0 Td [(The)-190(data)-190(type)]TJ/F67 9.9626 Tf 61.199 0 Td [(psb_T_hlg_sparse_mat)]TJ/F62 9.9626 Tf 106.5 0 Td [(pr)18(ovides)-190(an)-190(interface)-190(to)-190(the)-190(Hacked)]TJ -170.738 -11.955 Td [(ELLP)92(ACK)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ -0 g 0 G -/F59 9.9626 Tf -24.907 -20.261 Td [(HDIA:)]TJ -0 g 0 G -/F62 9.9626 Tf 35.696 0 Td [(The)-341(data)-342(type)]TJ/F67 9.9626 Tf 65.722 0 Td [(psb_T_hdiag_sparse_mat)]TJ/F62 9.9626 Tf 118.468 0 Td [(pr)18(ovides)-341(an)-342(int)1(erface)-342(to)-341(the)]TJ -194.979 -11.955 Td [(Hacked)-250(DIAgonals)-250(implementation)-250(fr)18(om)-250(SPGPU;)]TJ/F59 14.3462 Tf -24.907 -34.763 Td [(13)-1000(CUDA)-250(Environment)-250(Routines)]TJ/F59 11.9552 Tf 0 -24.857 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 514.195 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 513.996 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 514.195 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 513.996 Td [(init)-250(\227)-250(Initializes)-250(PSBLAS-CUDA)-250(environment)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ -0 g 0 G - [-525(psb_cuda_init\050ctxt)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525([,)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(device]\051)]TJ/F62 9.9626 Tf 14.944 -22.253 Td [(This)-250(subr)18(outine)-250(initializes)-250(the)-250(PSBLAS-CUDA)-250(envir)18(onment.)]TJ -0 g 0 G -/F59 9.9626 Tf -14.944 -20.177 Td [(T)90(ype:)]TJ -0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ +/F84 9.9626 Tf 150.705 706.129 Td [([13])]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ + 0.984 0 0 1 172.284 706.129 Tm [(Gamma,)-254(E.,)-509(Helm,)-254(R.,)-508(Johnson,)-255(R.,)-508(and)-508(Vlissides,)-255(J.)-254(1995.)]TJ/F78 9.9626 Tf 0.984 0 0 1 428.128 706.129 Tm [(Design)-254(Patterns:)]TJ 1 0 0 1 171.975 694.174 Tm [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F84 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ 0 g 0 G + -212.051 -19.926 Td [([14])]TJ 0 g 0 G - 0 -20.26 Td [(device)]TJ -0 g 0 G -/F62 9.9626 Tf 34.311 0 Td [(ID)-250(of)-250(CUDA)-250(device)-250(to)-250(attach)-250(to.)]TJ -9.404 -11.956 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(local)]TJ/F62 9.9626 Tf 21.579 0 Td [(.)]TJ -53.011 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(optional)]TJ/F62 9.9626 Tf 38.187 0 Td [(.)]TJ -65.275 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-254(as:)-317(an)-254(integer)-253(value.)-575(Default:)-317(use)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf 193.007 0 Td [(mod)]TJ -0 g 0 G - [(\050iam,ngpu\051)]TJ/F62 9.9626 Tf 70.521 0 Td [(wher)18(e)]TJ/F67 9.9626 Tf 29.935 0 Td [(iam)]TJ/F62 9.9626 Tf 18.218 0 Td [(is)]TJ -311.681 -11.955 Td [(the)-275(call)1(ing)-275(pr)18(ocess)-275(index)-274(and)]TJ/F67 9.9626 Tf 131.323 0 Td [(ngpu)]TJ/F62 9.9626 Tf 23.656 0 Td [(is)-275(the)-274(total)-275(number)-274(of)-275(CUDA)-274(devices)]TJ -154.979 -11.956 Td [(available)-250(on)-250(the)-250(curr)18(ent)-250(node.)]TJ/F59 11.9552 Tf -24.907 -20.176 Td [(Notes)]TJ + 1.02 0 0 1 172.284 674.248 Tm [(Karypis,)-341(G.)-322(and)-322(Kumar)73(,)-341(V)126(.,)]TJ/F78 9.9626 Tf 1.02 0 0 1 299.262 674.248 Tm [(METIS:)-322(Unstructur)18(ed)-322(Graph)-322(Partitioning)-322(and)]TJ 1.02 0 0 1 172.005 662.293 Tm [(Sparse)-386(Matrix)-386(Ordering)-386(System)]TJ/F84 9.9626 Tf 1.02 0 0 1 308.549 662.293 Tm [(.)-386(Minneapolis,)-421(MN)-386(55455:)-586(University)-386(of)]TJ 1.02 0 0 1 172.284 650.338 Tm [(Minnesota,)-447(Department)-406(of)-407(Computer)-406(Science,)-447(1995.)-407(Internet)-406(Addr)17(ess:)]TJ/F131 9.9626 Tf 1 0 0 1 172.284 638.383 Tm [(http://www.cs.umn.edu/~karypis)]TJ/F84 9.9626 Tf 156.91 0 Td [(.)]TJ 0 g 0 G -/F62 9.9626 Tf 12.454 -20.177 Td [(1.)]TJ + -178.489 -19.925 Td [([15])]TJ 0 g 0 G - [-500(A)-250(call)-250(to)-250(this)-250(r)18(outine)-250(must)-250(pr)18(ecede)-250(any)-250(other)-250(PSBLAS-CUDA)-250(call.)]TJ/F59 11.9552 Tf -12.454 -29.61 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 270.423 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 270.224 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 270.423 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 270.224 Td [(exit)-250(\227)-250(Exit)-250(from)-250(PSBLAS-CUDA)-250(environment)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.126 Td [(call)]TJ + 1.02 0 0 1 172.284 618.458 Tm [(Lawson,)-252(C.,)-252(Hanson,)-252(R.,)-251(Kincaid,)-252(D.)-251(and)-250(Kr)17(ogh,)-251(F)90(.,)-252(Basic)-251(Linear)-250(Algebra)]TJ 1.018 0 0 1 172.284 606.502 Tm [(Subpr)18(ograms)-245(for)-245(Fortran)-244(usage,)-245(ACM)-245(T)88(rans.)-244(Math.)-245(Softw)90(.)-245(vo)1(l.)-245(5,)-245(38\226329,)]TJ 1 0 0 1 171.786 594.547 Tm [(1979.)]TJ 0 g 0 G - [-525(psb_cuda_exit\050ctxt\051)]TJ/F62 9.9626 Tf 14.944 -22.254 Td [(This)-250(subr)18(outine)-250(exits)-250(fr)18(om)-250(the)-250(PSBLAS)-250(CUDA)-250(context.)]TJ + -21.081 -19.925 Td [([16])]TJ 0 g 0 G -/F59 9.9626 Tf -14.944 -20.176 Td [(T)90(ype:)]TJ + 1.002 0 0 1 172.284 574.622 Tm [(Machiels,)-248(L.)-249(and)-248(Deville,)-248(M.)]TJ/F78 9.9626 Tf 1.002 0 0 1 298.249 574.622 Tm [(Fortran)-248(90:)-309(An)-248(entry)-248(to)-249(object-or)1(iented)-249(pr)18(ogram-)]TJ 0.991 0 0 1 172.284 562.667 Tm [(ming)-253(for)-254(the)-253(solution)-254(of)-253(partial)-254(differ)18(ential)-253(equations.)]TJ/F84 9.9626 Tf 0.991 0 0 1 385.663 562.667 Tm [(ACM)-254(T)91(rans.)-253(Math.)-254(Softw)93(.)]TJ 1 0 0 1 172.005 550.712 Tm [(vol.)-250(23,)-250(32\22649.)]TJ 0 g 0 G -/F62 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ + -21.3 -19.926 Td [([17])]TJ 0 g 0 G -/F59 9.9626 Tf -29.828 -20.261 Td [(On)-250(Entry)]TJ + 1.006 0 0 1 172.284 530.786 Tm [(Metcalf,)-248(M.,)-248(Reid,)-248(J.)-248(and)-248(Cohen,)-248(M.)]TJ/F78 9.9626 Tf 1.006 0 0 1 329.338 530.786 Tm [(Fortran)-248(95/2003)-248(explained.)]TJ/F84 9.9626 Tf 1.006 0 0 1 441.938 530.786 Tm [(Oxfor)18(d)-248(Uni-)]TJ 1 0 0 1 172.005 518.831 Tm [(versity)-250(Pr)18(ess,)-250(2004.)]TJ 0 g 0 G + -21.3 -19.925 Td [([18])]TJ 0 g 0 G - 0 -20.261 Td [(ctxt)]TJ + 1.008 0 0 1 172.284 498.906 Tm [(Metcalf,)-249(M.,)-249(Reid,)-249(J.)-249(and)-249(Cohen,)-249(M.)]TJ/F78 9.9626 Tf 1.008 0 0 1 329.715 498.906 Tm [(Modern)-249(Fortran)-249(explained.)]TJ/F84 9.9626 Tf 1.008 0 0 1 441.822 498.906 Tm [(Oxfor)18(d)-249(Uni-)]TJ 1 0 0 1 172.005 486.951 Tm [(versity)-250(Pr)18(ess,)-250(2011.)]TJ 0 g 0 G -/F62 9.9626 Tf 21.021 0 Td [(the)-250(communication)-250(context)-250(identifying)-250(the)-250(virtual)-250(parallel)-250(machine.)]TJ 3.886 -11.955 Td [(Scope:)]TJ/F59 9.9626 Tf 31.432 0 Td [(global)]TJ/F62 9.9626 Tf 28.782 0 Td [(.)]TJ -60.214 -11.955 Td [(T)90(ype:)]TJ/F59 9.9626 Tf 27.088 0 Td [(required)]TJ/F62 9.9626 Tf 39.292 0 Td [(.)]TJ -66.38 -11.955 Td [(Intent:)]TJ/F59 9.9626 Tf 31.8 0 Td [(in)]TJ/F62 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(variable.)]TJ + -21.3 -19.925 Td [([19])]TJ 0 g 0 G - 139.477 -29.888 Td [(171)]TJ + 1.02 0 0 1 172.284 467.026 Tm [(Rouson,)-371(D.W)90(.I.,)-371(Xia,)-371(J.,)-371(Xu,)-371(X.:)-505(Scienti\002c)-346(Softwar)18(e)-346(Design:)-505(The)-346(Object-)]TJ 1 0 0 1 172.284 455.07 Tm [(Oriented)-250(W)92(ay.)-250(Cambridge)-250(University)-250(Pr)18(ess)-250(\0502011\051)]TJ 0 g 0 G -ET - -endstream -endobj -2041 0 obj -<< -/Type /ObjStm -/N 100 -/First 1000 -/Length 12945 ->> -stream -2032 0 2033 153 2034 308 2035 460 2039 612 577 671 581 729 2036 787 2052 909 2044 1066 -2045 1215 2047 1362 2054 1509 585 1567 589 1624 2055 1681 2056 1739 2051 1797 2062 1934 2068 2073 -2069 2253 2050 2296 2064 2443 2059 2502 2065 2561 2066 2620 2067 2679 2061 2737 2073 2873 2085 3012 -2086 3192 2088 3235 2089 3440 2090 3729 2092 3950 2049 4163 2075 4309 2060 4367 2076 4426 2077 4485 -2078 4544 2079 4603 2080 4662 2081 4721 2082 4780 2083 4838 2071 4897 2084 4956 2072 5014 2101 5206 -2106 5363 2107 5543 2108 5586 2109 5889 2110 6094 2112 6307 2097 6528 2098 6675 2099 6822 2103 6967 -2104 7026 2105 7085 2100 7144 2121 7350 2126 7489 2127 7669 2128 7712 2129 7913 2130 8208 2132 8429 -2119 8642 2123 8789 2116 8847 2124 8906 2117 8964 2125 9023 2120 9080 2139 9233 2143 9372 2144 9552 -2146 9595 2147 9802 2148 10103 2150 10324 2137 10537 2141 10684 2142 10743 2138 10802 2155 10982 2157 11100 -2154 11158 2160 11241 2162 11359 593 11418 2159 11476 2164 11598 2166 11716 597 11774 601 11830 2167 11887 -% 2032 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [267.568 552.736 279.523 561.692] -/A << /S /GoTo /D (cite.DesPat:11) >> ->> -% 2033 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [283.001 552.835 294.956 561.841] -/A << /S /GoTo /D (cite.CaFiRo:2014) >> ->> -% 2034 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [298.433 552.736 310.389 561.841] -/A << /S /GoTo /D (cite.Sparse03) >> ->> -% 2035 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [198.555 540.88 210.51 549.737] -/A << /S /GoTo /D (cite.OurTechRep) >> ->> -% 2039 0 obj -<< -/D [2037 0 R /XYZ 149.705 753.953 null] ->> -% 577 0 obj -<< -/D [2037 0 R /XYZ 150.705 716.092 null] ->> -% 581 0 obj -<< -/D [2037 0 R /XYZ 150.705 525.151 null] ->> -% 2036 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R /F60 666 0 R /F102 1016 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2052 0 obj -<< -/Type /Page -/Contents 2053 0 R -/Resources 2051 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2044 0 R 2045 0 R 2047 0 R ] ->> -% 2044 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [121.315 282.166 133.27 291.173] -/A << /S /GoTo /D (cite.MRC:11) >> ->> -% 2045 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.836 246.183 265.791 255.592] -/A << /S /GoTo /D (table.21) >> ->> -% 2047 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [314.807 176.296 321.781 188.355] -/A << /S /GoTo /D (figure.6) >> ->> -% 2054 0 obj -<< -/D [2052 0 R /XYZ 98.895 753.953 null] ->> -% 585 0 obj -<< -/D [2052 0 R /XYZ 99.895 349.244 null] ->> -% 589 0 obj -<< -/D [2052 0 R /XYZ 99.895 231.907 null] ->> -% 2055 0 obj -<< -/D [2052 0 R /XYZ 99.895 211.056 null] ->> -% 2056 0 obj -<< -/D [2052 0 R /XYZ 99.895 120.166 null] ->> -% 2051 0 obj -<< -/Font << /F120 1782 0 R /F102 1016 0 R /F62 667 0 R /F67 913 0 R /F59 665 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2062 0 obj -<< -/Type /Page -/Contents 2063 0 R -/Resources 2061 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2050 0 R ] ->> -% 2068 0 obj -<< -/Producer (GPL Ghostscript 9.10) -/CreationDate (D:20140329133929+01'00') -/ModDate (D:20140329133929+01'00') -/Creator (cairo 1.13.1 \(http://cairographics.org\)) ->> -% 2069 0 obj -<< -/Type /ExtGState -/OPM 1 ->> -% 2050 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.361 326.969 191.335 339.028] -/A << /S /GoTo /D (algocf.1) >> ->> -% 2064 0 obj -<< -/D [2062 0 R /XYZ 149.705 753.953 null] ->> -% 2059 0 obj -<< -/D [2062 0 R /XYZ 150.705 716.092 null] ->> -% 2065 0 obj + -21.579 -19.925 Td [([20])]TJ +0 g 0 G + 1.014 0 0 1 172.284 435.145 Tm [(M.)-247(Snir)73(,)-247(S.)-247(Otto,)-248(S.)-247(Huss-Lederman,)-247(D.)-247(W)91(alker)-247(and)-247(J.)-247(Dongarra,)]TJ/F78 9.9626 Tf 1.014 0 0 1 455.169 435.145 Tm [(MPI:)-247(The)]TJ 1.02 0 0 1 171.955 423.19 Tm [(Complete)-327(Refer)18(ence.)-327(V)72(olume)-327(1)-327(-)-327(The)-327(MPI)-327(Cor)18(e)]TJ/F84 9.9626 Tf 1.02 0 0 1 368.48 423.19 Tm [(,)-348(second)-327(edition,)-347(MIT)-327(Pr)17(ess,)]TJ 1 0 0 1 171.786 411.235 Tm [(1998.)]TJ +0 g 0 G + -21.081 -19.926 Td [([21])]TJ +0 g 0 G + 1.02 0 0 1 172.284 391.309 Tm [(D.)-389(Barbieri,)-425(V)127(.)-389(Car)18(dellini,)-425(S.)-389(Filippone)-389(and)-389(D.)-388(Rouson)]TJ/F78 9.9626 Tf 1.02 0 0 1 426.1 391.309 Tm [(Design)-389(Patterns)]TJ 1.018 0 0 1 172.284 379.354 Tm [(for)-245(Scienti\002c)-245(Computations)-245(on)-246(S)1(p)-1(a)1(rse)-246(Matrices)]TJ/F84 9.9626 Tf 1.018 0 0 1 365.291 379.354 Tm [(,)-245(HPSS)-245(2011,)-246(Algorithms)-245(and)]TJ 0.985 0 0 1 172.284 367.399 Tm [(Pr)18(ogramming)-251(T)93(ools)-252(for)-251(Next-Generation)-252(High-Performance)-251(Scienti\002c)-252(Soft-)]TJ 1 0 0 1 171.865 355.444 Tm [(war)18(e,)-250(Bor)18(deaux,)-250(Sep.)-250(2011)]TJ +0 g 0 G + -21.16 -19.925 Td [([22])]TJ +0 g 0 G + 1.02 0 0 1 172.284 335.519 Tm [(Car)18(dellini,)-300(V)127(.,)-600(Filippone,)-299(S.,)-599(and)-578(Rouson,)-299(D.)-289(2014,)-299(Design)-289(patterns)-289(for)]TJ 1.02 0 0 1 172.284 323.563 Tm [(sparse-matrix)-381(computations)-382(on)-381(hybrid)-381(CPU/GPU)-382(platforms,)]TJ/F78 9.9626 Tf 1.02 0 0 1 456.492 323.563 Tm [(Scienti\002c)]TJ 1 0 0 1 171.975 311.608 Tm [(Pr)18(ogramming)-250(22,)]TJ/F84 9.9626 Tf 73.713 0 Td [(1,)-250(1\22619.)]TJ +0 g 0 G + -94.983 -19.925 Td [([23])]TJ +0 g 0 G + 0.985 0 0 1 172.284 291.683 Tm [(D.)-254(Barbieri,)-253(V)131(.)-254(Car)18(dellini,)-253(A.)-254(Fanfarillo,)-253(S.)-254(Filippone,)-254(Thr)19(ee)-254(storage)-254(formats)]TJ 1.02 0 0 1 172.284 279.728 Tm [(for)-257(sparse)-257(matrices)-257(on)-257(GPGPUs,)-260(T)91(ech.)-257(Rep.)-257(DICII)-257(RR-15.6,)-260(Universit)]TJ 1 0 0 1 478.39 279.753 Tm [(\036)]TJ 1.02 0 0 1 477.558 279.728 Tm [(a)-257(di)]TJ 1 0 0 1 172.284 267.773 Tm [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ +0 g 0 G + -21.579 -19.926 Td [([24])]TJ +0 g 0 G + 1.02 0 0 1 172.284 247.847 Tm [(S.)-284(Filippone,)-294(V)127(.)-284(Car)17(dellini,)-293(D.)-284(Barbieri,)-294(and)-284(A.)-284(Fanfarillo.)-284(Sparse)-284(matrix-)]TJ 1.02 0 0 1 172.005 235.892 Tm [(vector)-342(multiplication)-342(on)-342(GPGPUs.)]TJ/F78 9.9626 Tf 1.02 0 0 1 331.577 235.892 Tm [(ACM)-342(T)109(rans.)-342(Math.)-342(Softw)54(.)]TJ/F84 9.9626 Tf 1.02 0 0 1 442.232 235.892 Tm [(,)-366(43\0504\051:30:1\226)]TJ 1 0 0 1 172.284 223.937 Tm [(30:49,)-250(2017.)]TJ +0 g 0 G + 142.804 -133.499 Td [(180)]TJ +0 g 0 G +ET + +endstream +endobj +2167 0 obj << -/D [2062 0 R /XYZ 397.506 408.774 null] +/Type /ObjStm +/N 100 +/First 959 +/Length 11464 >> -% 2066 0 obj +stream +2153 0 2154 58 2149 116 2171 326 2176 465 2177 645 2178 688 2179 889 2180 1184 2182 1405 +2169 1618 2173 1764 2165 1823 2174 1882 2166 1941 2175 2000 2170 2059 2189 2213 2193 2352 2194 2532 +2196 2575 2197 2782 2198 3083 2200 3304 2187 3517 2191 3664 2192 3722 2188 3781 2205 3963 2207 4081 +2204 4140 2209 4223 2211 4341 601 4399 2208 4456 2214 4579 2216 4697 606 4756 610 4813 2217 4871 +614 4930 2213 4988 2219 5083 2221 5201 618 5259 622 5316 626 5373 630 5430 634 5487 638 5544 +642 5601 646 5658 2218 5715 2223 5810 2225 5928 650 5987 654 6045 658 6103 662 6161 2222 6219 +2227 6314 2229 6432 2230 6490 2231 6548 1993 6606 939 6663 938 6720 898 6777 899 6834 914 6891 +895 6948 896 7004 2232 7061 891 7119 2233 7176 2226 7234 2235 7328 2237 7446 1055 7505 926 7564 +897 7622 894 7680 890 7738 2106 7796 893 7855 2238 7913 892 7972 2091 8029 2092 8088 2239 8147 +2234 8206 2240 8301 2241 8321 2242 8692 2243 8795 2244 8954 2245 8977 2246 9432 2247 9561 2248 9859 +% 2153 0 obj << -/D [2062 0 R /XYZ 150.705 264.598 null] +/D [2150 0 R /XYZ 396.732 464.41 null] >> -% 2067 0 obj +% 2154 0 obj << -/D [2062 0 R /XYZ 150.705 232.98 null] +/D [2150 0 R /XYZ 99.895 211.214 null] >> -% 2061 0 obj +% 2149 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R >> -/XObject << /Im6 2046 0 R >> +/Font << /F84 675 0 R /F78 674 0 R /F181 923 0 R /F131 921 0 R /F231 1025 0 R /F279 1793 0 R /F134 1471 0 R /F179 922 0 R /F75 673 0 R >> +/XObject << /Im8 2145 0 R >> /ProcSet [ /PDF /Text ] >> -% 2073 0 obj +% 2171 0 obj << /Type /Page -/Contents 2074 0 R -/Resources 2072 0 R +/Contents 2172 0 R +/Resources 2170 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2049 0 R ] +/Parent 2116 0 R +/Annots [ 2169 0 R ] >> -% 2085 0 obj +% 2176 0 obj << /Producer (GPL Ghostscript 9.10) -/CreationDate (D:20140329133928+01'00') -/ModDate (D:20140329133928+01'00') +/CreationDate (D:20140329133927+01'00') +/ModDate (D:20140329133927+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2086 0 obj +% 2177 0 obj << /Type /ExtGState /OPM 1 >> -% 2088 0 obj +% 2178 0 obj << -/BaseFont /YAZDUX+TimesNewRomanPSMT -/FontDescriptor 2090 0 R -/ToUnicode 2091 0 R +/BaseFont /BNRUAU+TimesNewRomanPSMT +/FontDescriptor 2180 0 R +/ToUnicode 2181 0 R /Type /Font -/FirstChar 48 -/LastChar 57 -/Widths [ 500 500 500 500 500 0 0 500 500 500] +/FirstChar 45 +/LastChar 55 +/Widths [ 333 0 0 500 500 500 0 0 0 0 500] /Subtype /TrueType >> -% 2089 0 obj +% 2179 0 obj << -/BaseFont /NDNSMY+FreeSerif -/FontDescriptor 2092 0 R -/ToUnicode 2093 0 R +/BaseFont /ICFUKB+FreeSerif +/FontDescriptor 2182 0 R +/ToUnicode 2183 0 R /Type /Font /FirstChar 32 /LastChar 89 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 0 0 0 0 0 385 0 0 0 0 0 0 0 667 529 0 0 0 0 0 701] +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2090 0 obj +% 2180 0 obj << /Type /FontDescriptor -/FontName /YAZDUX+TimesNewRomanPSMT -/FontBBox [ 15 -13 638 675] +/FontName /BNRUAU+TimesNewRomanPSMT +/FontBBox [ 21 -13 638 675] /Flags 65540 /Ascent 675 /CapHeight 675 @@ -30574,12 +32466,12 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2094 0 R +/FontFile2 2184 0 R >> -% 2092 0 obj +% 2182 0 obj << /Type /FontDescriptor -/FontName /NDNSMY+FreeSerif +/FontName /ICFUKB+FreeSerif /FontBBox [ 0 -71 706 752] /Flags 65540 /Ascent 752 @@ -30588,131 +32480,89 @@ stream /ItalicAngle 0 /StemV 105 /MissingWidth 600 -/FontFile2 2095 0 R +/FontFile2 2185 0 R >> -% 2049 0 obj +% 2169 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.587 583.767 391.56 595.827] +/Rect [422.101 537.01 429.075 549.069] /A << /S /GoTo /D (figure.5) >> >> -% 2075 0 obj -<< -/D [2073 0 R /XYZ 98.895 753.953 null] ->> -% 2060 0 obj -<< -/D [2073 0 R /XYZ 389.217 621.446 null] ->> -% 2076 0 obj -<< -/D [2073 0 R /XYZ 114.839 563.747 null] ->> -% 2077 0 obj -<< -/D [2073 0 R /XYZ 114.839 567.034 null] ->> -% 2078 0 obj -<< -/D [2073 0 R /XYZ 114.839 556.075 null] ->> -% 2079 0 obj -<< -/D [2073 0 R /XYZ 114.839 545.116 null] ->> -% 2080 0 obj -<< -/D [2073 0 R /XYZ 114.839 534.158 null] ->> -% 2081 0 obj +% 2173 0 obj << -/D [2073 0 R /XYZ 114.839 523.199 null] +/D [2171 0 R /XYZ 149.705 753.953 null] >> -% 2082 0 obj +% 2165 0 obj << -/D [2073 0 R /XYZ 114.839 512.24 null] +/D [2171 0 R /XYZ 447.542 574.688 null] >> -% 2083 0 obj +% 2174 0 obj << -/D [2073 0 R /XYZ 114.839 501.281 null] +/D [2171 0 R /XYZ 150.705 526.012 null] >> -% 2071 0 obj +% 2166 0 obj << -/D [2073 0 R /XYZ 114.839 481.057 null] +/D [2171 0 R /XYZ 165.649 383.469 null] >> -% 2084 0 obj +% 2175 0 obj << -/D [2073 0 R /XYZ 99.895 294.895 null] +/D [2171 0 R /XYZ 150.705 187.185 null] >> -% 2072 0 obj +% 2170 0 obj << -/Font << /F62 667 0 R /F59 665 0 R /F102 1016 0 R /F120 1782 0 R /F60 666 0 R /F93 915 0 R /F91 914 0 R /F67 913 0 R >> -/XObject << /Im7 2048 0 R >> +/Font << /F84 675 0 R /F131 921 0 R /F231 1025 0 R /F75 673 0 R /F279 1793 0 R >> +/XObject << /Im9 2168 0 R >> /ProcSet [ /PDF /Text ] >> -% 2101 0 obj +% 2189 0 obj << /Type /Page -/Contents 2102 0 R -/Resources 2100 0 R +/Contents 2190 0 R +/Resources 2188 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2097 0 R 2098 0 R 2099 0 R ] +/Parent 2116 0 R +/Annots [ 2187 0 R ] >> -% 2106 0 obj +% 2193 0 obj << /Producer (GPL Ghostscript 9.10) /CreationDate (D:20140329133928+01'00') /ModDate (D:20140329133928+01'00') /Creator (cairo 1.13.1 \(http://cairographics.org\)) >> -% 2107 0 obj +% 2194 0 obj << /Type /ExtGState /OPM 1 >> -% 2108 0 obj +% 2196 0 obj << -/BaseFont /MCSFLP+FreeSerif -/FontDescriptor 2110 0 R -/ToUnicode 2111 0 R +/BaseFont /PBIKKX+TimesNewRomanPSMT +/FontDescriptor 2198 0 R +/ToUnicode 2199 0 R /Type /Font -/FirstChar 32 -/LastChar 89 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 385 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] +/FirstChar 45 +/LastChar 55 +/Widths [ 333 0 0 500 500 0 500 500 500 500 500] /Subtype /TrueType >> -% 2109 0 obj +% 2197 0 obj << -/BaseFont /AJRCAD+TimesNewRomanPSMT -/FontDescriptor 2112 0 R -/ToUnicode 2113 0 R +/BaseFont /ZBHFTP+FreeSerif +/FontDescriptor 2200 0 R +/ToUnicode 2201 0 R /Type /Font -/FirstChar 48 -/LastChar 57 -/Widths [ 500 500 500 500 500 0 0 500 500 500] +/FirstChar 32 +/LastChar 89 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] /Subtype /TrueType >> -% 2110 0 obj -<< -/Type /FontDescriptor -/FontName /MCSFLP+FreeSerif -/FontBBox [ 0 -71 706 752] -/Flags 65540 -/Ascent 752 -/CapHeight 679 -/Descent -71 -/ItalicAngle 0 -/StemV 105 -/MissingWidth 600 -/FontFile2 2114 0 R ->> -% 2112 0 obj +% 2198 0 obj << /Type /FontDescriptor -/FontName /AJRCAD+TimesNewRomanPSMT +/FontName /PBIKKX+TimesNewRomanPSMT /FontBBox [ 15 -13 638 675] /Flags 65540 /Ascent 675 @@ -30721,740 +32571,353 @@ stream /ItalicAngle 0 /StemV 95 /MissingWidth 777 -/FontFile2 2115 0 R +/FontFile2 2202 0 R +>> +% 2200 0 obj +<< +/Type /FontDescriptor +/FontName /ZBHFTP+FreeSerif +/FontBBox [ 0 -71 706 752] +/Flags 65540 +/Ascent 752 +/CapHeight 679 +/Descent -71 +/ItalicAngle 0 +/StemV 105 +/MissingWidth 600 +/FontFile2 2203 0 R >> -% 2097 0 obj +% 2187 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [453.687 438.686 460.661 450.746] +/Rect [389.583 344.666 396.557 356.726] /A << /S /GoTo /D (figure.5) >> >> -% 2098 0 obj +% 2191 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [362.965 188.317 369.938 200.376] -/A << /S /GoTo /D (figure.8) >> +/D [2189 0 R /XYZ 98.895 753.953 null] >> -% 2099 0 obj +% 2192 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [477.685 140.43 484.659 152.49] -/A << /S /GoTo /D (algocf.2) >> +/D [2189 0 R /XYZ 396.732 382.345 null] >> -% 2103 0 obj +% 2188 0 obj << -/D [2101 0 R /XYZ 149.705 753.953 null] +/Font << /F84 675 0 R /F131 921 0 R /F78 674 0 R /F75 673 0 R /F181 923 0 R /F231 1025 0 R /F279 1793 0 R >> +/XObject << /Im10 2186 0 R >> +/ProcSet [ /PDF /Text ] >> -% 2104 0 obj +% 2205 0 obj << -/D [2101 0 R /XYZ 447.542 476.365 null] +/Type /Page +/Contents 2206 0 R +/Resources 2204 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2116 0 R >> -% 2105 0 obj +% 2207 0 obj << -/D [2101 0 R /XYZ 150.705 223.169 null] +/D [2205 0 R /XYZ 149.705 753.953 null] >> -% 2100 0 obj +% 2204 0 obj << -/Font << /F62 667 0 R /F60 666 0 R /F93 915 0 R /F67 913 0 R /F102 1016 0 R /F120 1782 0 R /F69 1460 0 R /F91 914 0 R /F59 665 0 R >> -/XObject << /Im8 2096 0 R >> +/Font << /F231 1025 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2121 0 obj +% 2209 0 obj << /Type /Page -/Contents 2122 0 R -/Resources 2120 0 R +/Contents 2210 0 R +/Resources 2208 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2119 0 R ] +/Parent 2212 0 R >> -% 2126 0 obj +% 2211 0 obj << -/Producer (GPL Ghostscript 9.10) -/CreationDate (D:20140329133927+01'00') -/ModDate (D:20140329133927+01'00') -/Creator (cairo 1.13.1 \(http://cairographics.org\)) +/D [2209 0 R /XYZ 98.895 753.953 null] >> -% 2127 0 obj +% 601 0 obj << -/Type /ExtGState -/OPM 1 +/D [2209 0 R /XYZ 99.895 716.092 null] >> -% 2128 0 obj +% 2208 0 obj << -/BaseFont /BNRUAU+TimesNewRomanPSMT -/FontDescriptor 2130 0 R -/ToUnicode 2131 0 R -/Type /Font -/FirstChar 45 -/LastChar 55 -/Widths [ 333 0 0 500 500 500 0 0 0 0 500] -/Subtype /TrueType +/Font << /F75 673 0 R /F84 675 0 R /F231 1025 0 R /F131 921 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] >> -% 2129 0 obj +% 2214 0 obj << -/BaseFont /ICFUKB+FreeSerif -/FontDescriptor 2132 0 R -/ToUnicode 2133 0 R -/Type /Font -/FirstChar 32 -/LastChar 89 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 0 0 610 564 0 0 0 0 0 0 0 0 724 0 0 667 529 606 0 0 0 0 701] -/Subtype /TrueType +/Type /Page +/Contents 2215 0 R +/Resources 2213 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2212 0 R >> -% 2130 0 obj +% 2216 0 obj << -/Type /FontDescriptor -/FontName /BNRUAU+TimesNewRomanPSMT -/FontBBox [ 21 -13 638 675] -/Flags 65540 -/Ascent 675 -/CapHeight 675 -/Descent -13 -/ItalicAngle 0 -/StemV 95 -/MissingWidth 777 -/FontFile2 2134 0 R +/D [2214 0 R /XYZ 149.705 753.953 null] >> -% 2132 0 obj +% 606 0 obj << -/Type /FontDescriptor -/FontName /ICFUKB+FreeSerif -/FontBBox [ 0 -71 706 752] -/Flags 65540 -/Ascent 752 -/CapHeight 679 -/Descent -71 -/ItalicAngle 0 -/StemV 105 -/MissingWidth 600 -/FontFile2 2135 0 R +/D [2214 0 R /XYZ 150.705 554.06 null] >> -% 2119 0 obj +% 610 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.292 548.965 378.265 561.025] -/A << /S /GoTo /D (figure.5) >> +/D [2214 0 R /XYZ 150.705 527.944 null] +>> +% 2217 0 obj +<< +/D [2214 0 R /XYZ 150.705 315.727 null] +>> +% 614 0 obj +<< +/D [2214 0 R /XYZ 150.705 284.171 null] +>> +% 2213 0 obj +<< +/Font << /F75 673 0 R /F84 675 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2219 0 obj +<< +/Type /Page +/Contents 2220 0 R +/Resources 2218 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2212 0 R +>> +% 2221 0 obj +<< +/D [2219 0 R /XYZ 98.895 753.953 null] +>> +% 618 0 obj +<< +/D [2219 0 R /XYZ 99.895 720.077 null] +>> +% 622 0 obj +<< +/D [2219 0 R /XYZ 99.895 633.991 null] +>> +% 626 0 obj +<< +/D [2219 0 R /XYZ 99.895 559.861 null] >> -% 2123 0 obj +% 630 0 obj << -/D [2121 0 R /XYZ 98.895 753.953 null] +/D [2219 0 R /XYZ 99.895 485.732 null] >> -% 2116 0 obj +% 634 0 obj << -/D [2121 0 R /XYZ 396.732 586.644 null] +/D [2219 0 R /XYZ 99.895 411.602 null] >> -% 2124 0 obj +% 638 0 obj << -/D [2121 0 R /XYZ 99.895 537.967 null] +/D [2219 0 R /XYZ 99.895 325.516 null] >> -% 2117 0 obj +% 642 0 obj << -/D [2121 0 R /XYZ 114.839 395.424 null] +/D [2219 0 R /XYZ 99.895 251.386 null] >> -% 2125 0 obj +% 646 0 obj << -/D [2121 0 R /XYZ 99.895 199.14 null] +/D [2219 0 R /XYZ 99.895 177.256 null] >> -% 2120 0 obj +% 2218 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F102 1016 0 R /F59 665 0 R /F120 1782 0 R >> -/XObject << /Im9 2118 0 R >> +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> /ProcSet [ /PDF /Text ] >> -% 2139 0 obj +% 2223 0 obj << /Type /Page -/Contents 2140 0 R -/Resources 2138 0 R +/Contents 2224 0 R +/Resources 2222 0 R /MediaBox [0 0 595.276 841.89] -/Parent 2057 0 R -/Annots [ 2137 0 R ] +/Parent 2212 0 R >> -% 2143 0 obj +% 2225 0 obj << -/Producer (GPL Ghostscript 9.10) -/CreationDate (D:20140329133928+01'00') -/ModDate (D:20140329133928+01'00') -/Creator (cairo 1.13.1 \(http://cairographics.org\)) +/D [2223 0 R /XYZ 149.705 753.953 null] >> -% 2144 0 obj +% 650 0 obj << -/Type /ExtGState -/OPM 1 +/D [2223 0 R /XYZ 150.705 720.077 null] >> -% 2146 0 obj +% 654 0 obj << -/BaseFont /PBIKKX+TimesNewRomanPSMT -/FontDescriptor 2148 0 R -/ToUnicode 2149 0 R -/Type /Font -/FirstChar 45 -/LastChar 55 -/Widths [ 333 0 0 500 500 0 500 500 500 500 500] -/Subtype /TrueType +/D [2223 0 R /XYZ 150.705 650.062 null] >> -% 2147 0 obj +% 658 0 obj << -/BaseFont /ZBHFTP+FreeSerif -/FontDescriptor 2150 0 R -/ToUnicode 2151 0 R -/Type /Font -/FirstChar 32 -/LastChar 89 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 721 0 670 0 610 564 0 714 0 0 709 0 0 0 724 0 0 667 529 606 0 0 0 0 701] -/Subtype /TrueType +/D [2223 0 R /XYZ 150.705 580.047 null] >> -% 2148 0 obj +% 662 0 obj << -/Type /FontDescriptor -/FontName /PBIKKX+TimesNewRomanPSMT -/FontBBox [ 15 -13 638 675] -/Flags 65540 -/Ascent 675 -/CapHeight 675 -/Descent -13 -/ItalicAngle 0 -/StemV 95 -/MissingWidth 777 -/FontFile2 2152 0 R +/D [2223 0 R /XYZ 150.705 510.033 null] >> -% 2150 0 obj +% 2222 0 obj << -/Type /FontDescriptor -/FontName /ZBHFTP+FreeSerif -/FontBBox [ 0 -71 706 752] -/Flags 65540 -/Ascent 752 -/CapHeight 679 -/Descent -71 -/ItalicAngle 0 -/StemV 105 -/MissingWidth 600 -/FontFile2 2153 0 R +/Font << /F75 673 0 R /F131 921 0 R /F84 675 0 R >> +/ProcSet [ /PDF /Text ] >> -% 2137 0 obj +% 2227 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [440.392 356.078 447.366 368.137] -/A << /S /GoTo /D (figure.5) >> +/Type /Page +/Contents 2228 0 R +/Resources 2226 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2212 0 R >> -% 2141 0 obj +% 2229 0 obj << -/D [2139 0 R /XYZ 149.705 753.953 null] +/D [2227 0 R /XYZ 98.895 753.953 null] >> -% 2142 0 obj +% 2230 0 obj << -/D [2139 0 R /XYZ 447.542 393.756 null] +/D [2227 0 R /XYZ 99.895 723.717 null] >> -% 2138 0 obj +% 2231 0 obj << -/Font << /F62 667 0 R /F67 913 0 R /F60 666 0 R /F59 665 0 R /F93 915 0 R /F102 1016 0 R /F120 1782 0 R >> -/XObject << /Im10 2136 0 R >> -/ProcSet [ /PDF /Text ] +/D [2227 0 R /XYZ 99.895 698.792 null] >> -% 2155 0 obj +% 1993 0 obj << -/Type /Page -/Contents 2156 0 R -/Resources 2154 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R +/D [2227 0 R /XYZ 99.895 638.64 null] >> -% 2157 0 obj +% 939 0 obj << -/D [2155 0 R /XYZ 98.895 753.953 null] +/D [2227 0 R /XYZ 99.895 595.644 null] >> -% 2154 0 obj +% 938 0 obj << -/Font << /F102 1016 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] +/D [2227 0 R /XYZ 99.895 538.043 null] >> -% 2160 0 obj +% 898 0 obj << -/Type /Page -/Contents 2161 0 R -/Resources 2159 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R +/D [2227 0 R /XYZ 99.895 477.792 null] >> -% 2162 0 obj +% 899 0 obj << -/D [2160 0 R /XYZ 149.705 753.953 null] +/D [2227 0 R /XYZ 99.895 433.422 null] >> -% 593 0 obj +% 914 0 obj << -/D [2160 0 R /XYZ 150.705 716.092 null] +/D [2227 0 R /XYZ 99.895 398.456 null] >> -% 2159 0 obj +% 895 0 obj << -/Font << /F59 665 0 R /F62 667 0 R /F102 1016 0 R /F67 913 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] +/D [2227 0 R /XYZ 99.895 352.81 null] >> -% 2164 0 obj +% 896 0 obj << -/Type /Page -/Contents 2165 0 R -/Resources 2163 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R +/D [2227 0 R /XYZ 99.895 307.164 null] >> -% 2166 0 obj +% 2232 0 obj << -/D [2164 0 R /XYZ 98.895 753.953 null] +/D [2227 0 R /XYZ 99.895 261.519 null] >> -% 597 0 obj +% 891 0 obj << -/D [2164 0 R /XYZ 99.895 554.06 null] +/D [2227 0 R /XYZ 99.895 215.873 null] >> -% 601 0 obj +% 2233 0 obj << -/D [2164 0 R /XYZ 99.895 527.944 null] +/D [2227 0 R /XYZ 99.895 170.895 null] >> -% 2167 0 obj +% 2226 0 obj << -/D [2164 0 R /XYZ 99.895 315.727 null] +/Font << /F75 673 0 R /F84 675 0 R /F78 674 0 R >> +/ProcSet [ /PDF /Text ] >> - -endstream -endobj -2171 0 obj +% 2235 0 obj << -/Length 5390 +/Type /Page +/Contents 2236 0 R +/Resources 2234 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 2212 0 R >> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 150.705 706.129 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 706.129 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 706.129 Td [(DeviceSync)-250(\227)-250(Synchronize)-250(CUDA)-250(device)]TJ -0.00 0.44 0.13 rg 0.00 0.44 0.13 RG -/F67 9.9626 Tf -54.42 -19.65 Td [(call)]TJ -0 g 0 G - [-525(psb_cuda_DeviceSync\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(This)-310(subr)18(outine)-310(ensur)18(es)-310(that)-309(all)-310(pr)18(eviosly)-310(invoked)-310(kernels,)-325(i.e.)-489(all)-310(invoca-)]TJ -14.944 -11.955 Td [(tion)-250(of)-250(CUDA-side)-250(code,)-250(have)-250(completed.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 620.243 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 620.044 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 620.243 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 620.044 Td [(getDeviceCount)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-1050(psb_cuda_getDeviceCount\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Get)-250(number)-250(of)-250(devices)-250(available)-250(on)-250(curr)18(ent)-250(computing)-250(node.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 546.113 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 545.914 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 546.113 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 545.914 Td [(getDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(ngpus)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-1050(psb_cuda_getDevice\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Get)-250(device)-250(in)-250(use)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 471.983 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 471.784 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 471.983 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 471.784 Td [(setDevice)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(info)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_setDevice\050dev\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Set)-250(device)-250(to)-250(be)-250(used)-250(by)-250(curr)18(ent)-250(pr)18(ocess.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 397.853 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 397.654 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 397.853 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 397.654 Td [(DeviceHasUV)129(A)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(hasUva)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_DeviceHasUVA\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-295(tr)8(ue)-294(if)-295(device)-295(curr)18(ently)-295(in)-294(use)-295(supports)-295(UV)111(A)-295(\050Uni\002ed)-294(V)55(irtual)-295(Ad-)]TJ -14.944 -11.955 Td [(dr)18(essing\051.)]TJ/F59 11.9552 Tf 0 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 311.768 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 311.569 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 311.768 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 311.569 Td [(W)74(arpSize)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nw)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_WarpSize\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(warp)-250(size.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 237.638 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 237.439 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 237.638 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 237.439 Td [(MultiProcessors)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nmp)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_MultiProcessors\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(number)-250(of)-250(multipr)18(ocessors)-250(in)-250(the)-250(CUDA)-250(device.)]TJ/F59 11.9552 Tf -14.944 -31.147 Td [(psb)]TJ -ET -q -1 0 0 1 171.339 163.508 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 174.926 163.309 Td [(cuda)]TJ -ET -q -1 0 0 1 201.538 163.508 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 205.125 163.309 Td [(MaxThreadsPerMP)]TJ/F67 9.9626 Tf -54.42 -19.65 Td [(nt)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_MaxThreadsPerMP\050\051)]TJ/F62 9.9626 Tf 14.944 -23.333 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(thr)18(eads)-250(per)-250(multipr)18(ocessor)74(.)]TJ -0 g 0 G - 149.439 -29.888 Td [(172)]TJ -0 g 0 G -ET - -endstream -endobj -2175 0 obj +% 2237 0 obj +<< +/D [2235 0 R /XYZ 149.705 753.953 null] +>> +% 1055 0 obj +<< +/D [2235 0 R /XYZ 150.705 716.092 null] +>> +% 926 0 obj +<< +/D [2235 0 R /XYZ 150.705 687.379 null] +>> +% 897 0 obj << -/Length 2721 +/D [2235 0 R /XYZ 150.705 632.184 null] >> -stream -0 g 0 G -0 g 0 G -BT -/F59 11.9552 Tf 99.895 706.129 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 706.129 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 706.328 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 706.129 Td [(MaxRegistersPerBlock)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nr)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_MaxRegistersPerBlock\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(maximum)-250(number)-250(of)-250(r)18(egister)-250(per)-250(thr)18(ead)-250(block.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 636.313 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 636.114 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 636.313 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 636.114 Td [(MemoryClockRate)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(cl)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_MemoryClockRate\050\051)]TJ/F62 9.9626 Tf 14.944 -21.917 Td [(Returns)-250(the)-250(memory)-250(clock)-250(rate)-250(in)-250(KHz,)-250(as)-250(an)-250(integer)74(.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 566.299 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 566.1 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 566.299 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 566.1 Td [(MemoryBusW)37(idth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(nb)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_MemoryBusWidth\050\051)]TJ/F62 9.9626 Tf 14.944 -21.918 Td [(Returns)-250(the)-250(memory)-250(bus)-250(width)-250(in)-250(bits.)]TJ/F59 11.9552 Tf -14.944 -29.133 Td [(psb)]TJ -ET -q -1 0 0 1 120.53 496.284 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 124.116 496.085 Td [(cuda)]TJ -ET -q -1 0 0 1 150.729 496.284 cm -[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S -Q -BT -/F59 11.9552 Tf 154.315 496.085 Td [(MemoryPeakBandwidth)]TJ/F67 9.9626 Tf -54.42 -18.964 Td [(bw)]TJ -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G -0.40 0.40 0.40 rg 0.40 0.40 0.40 RG - [-525(=)]TJ -0 g 0 G -0.73 0.73 0.73 rg 0.73 0.73 0.73 RG -0 g 0 G - [-525(psb_cuda_MemoryPeakBandwidth\050\051)]TJ/F62 9.9626 Tf 0 -21.918 Td [(Returns)-250(the)-250(peak)-250(memory)-250(bandwidth)-250(in)-250(MB/s)-250(\050r)18(eal)-250(double)-250(pr)18(ecision\051.)]TJ -0 g 0 G - 164.384 -364.765 Td [(173)]TJ -0 g 0 G -ET - -endstream -endobj -2179 0 obj +% 894 0 obj << -/Length 81 +/D [2235 0 R /XYZ 150.705 590.403 null] >> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 315.088 90.438 Td [(174)]TJ -0 g 0 G -ET - -endstream -endobj -2183 0 obj +% 890 0 obj << -/Length 6353 +/D [2235 0 R /XYZ 150.705 545.192 null] >> -stream -0 g 0 G -0 g 0 G -BT -/F59 14.3462 Tf 99.895 705.784 Td [(References)]TJ -0 g 0 G -/F62 9.9626 Tf 4.982 -23.579 Td [([1])]TJ -0 g 0 G - [-500(G.)-362(Bella,)-391(S.)-362(Filippone,)-390(A.)-363(De)-362(Maio)-362(and)-363(M.)-362(T)92(esta,)]TJ/F60 9.9626 Tf 239.345 0 Td [(A)-362(Simulation)-362(Model)-363(for)]TJ -222.748 -11.955 Td [(For)18(est)-346(Fir)18(es)]TJ/F62 9.9626 Tf 47.93 0 Td [(,)-370(in)-346(J.)-346(Dongarra,)-370(K.)-346(Madsen,)-370(J.)-346(W)92(asniewski,)-370(editors,)-370(Pr)18(oceed-)]TJ -47.93 -11.955 Td [(ings)-338(of)-337(P)92(ARA)-338(04)-338(W)92(orkshop)-337(on)-338(State)-338(of)-338(the)-337(Art)-338(in)-338(Scienti\002c)-337(Computing,)]TJ 0 -11.955 Td [(pp.)-250(546\226553,)-250(Lectur)18(e)-250(Notes)-250(in)-250(Computer)-250(Science,)-250(Springer)74(,)-250(2005.)]TJ -0 g 0 G - -16.597 -21.736 Td [([2])]TJ -0 g 0 G - [-500(A.)-216(Buttari,)-223(D.)-216(di)-217(Sera\002no,)-223(P)129(.)-216(D'Ambra,)-223(S.)-216(Filippone,)-71(2LEV)74(-D2P4:)-293(a)-216(package)]TJ 16.597 -11.955 Td [(of)-247(high-performance)-247(pr)18(econditioners,)-107(Applicable)-247(Algebra)-247(in)-247(Engineering,)]TJ 0 -11.955 Td [(Communications)-292(and)-293(Computing,)-303(V)111(olume)-292(18,)-303(Number)-292(3,)-303(May)111(,)-303(2007,)-303(pp.)]TJ 0 -11.955 Td [(223-239)]TJ -0 g 0 G - -16.597 -21.736 Td [([3])]TJ -0 g 0 G - [-500(P)129(.)-248(D'Ambra,)-248(S.)-248(Filippone,)-249(D.)-248(Di)-248(Sera\002no)-107(On)-248(the)-248(Development)-248(of)-248(PSBLAS-)]TJ 16.597 -11.955 Td [(based)-523(Parallel)-524(T)90(wo-level)-523(Schwarz)-523(Pr)18(econditioners)-1235(Applied)-523(Numeri-)]TJ 0 -11.955 Td [(cal)-376(Mathematics,)-408(Elsevier)-376(Science,)-408(V)111(olume)-376(57,)-408(Issues)-376(11-12,)-408(November)18(-)]TJ 0 -11.955 Td [(December)-250(2007,)-250(Pages)-250(1181-1196.)]TJ -0 g 0 G - -16.597 -21.736 Td [([4])]TJ -0 g 0 G - [-500(Dongarra,)-268(J.)-265(J.,)-269(DuCr)18(oz,)-268(J.,)-269(Hammarli)1(ng,)-269(S.)-265(and)-264(Hanson,)-269(R.,)-268(An)-265(Extended)]TJ 16.597 -11.955 Td [(Set)-463(of)-463(Fortran)-463(Basic)-464(Linear)-463(Algebra)-463(Subpr)18(ograms,)-516(ACM)-463(T)90(rans.)-463(Math.)]TJ 0 -11.955 Td [(Softw)92(.)-250(vol.)-250(14,)-250(1\22617,)-250(1988.)]TJ -0 g 0 G - -16.597 -21.736 Td [([5])]TJ -0 g 0 G - [-500(Dongarra,)-422(J.,)-421(DuCr)18(oz,)-422(J.,)-422(Hammarling,)-422(S.)-387(and)-387(Duf)18(f,)-422(I.,)-422(A)-387(Set)-387(of)-388(level)-387(3)]TJ 16.597 -11.955 Td [(Basic)-308(Linear)-307(Algebra)-308(Subpr)18(ograms,)-322(ACM)-308(T)90(rans.)-308(Math.)-308(Soft)1(w)91(.)-307(vol.)-308(16,)-322(1\226)]TJ 0 -11.955 Td [(17,)-250(1990.)]TJ -0 g 0 G - -16.597 -21.735 Td [([6])]TJ -0 g 0 G - [-500(J.)-349(J.)-350(Dongarra)-349(and)-350(R.)-350(C.)-349(Whaley)111(,)]TJ/F60 9.9626 Tf 166.061 0 Td [(A)-349(User)-37(')55(s)-350(Guide)-349(to)-350(the)-349(BLACS)-350(v)55(.)-349(1.1)]TJ/F62 9.9626 Tf 152.062 0 Td [(,)-374(La-)]TJ -301.526 -11.956 Td [(pack)-234(W)92(orking)-233(Note)-234(94,)-237(T)92(ech.)-233(Rep.)-234(UT)55(-CS-95-281,)-237(University)-234(of)-233(T)92(ennessee,)]TJ 0 -11.955 Td [(Mar)18(ch)-250(1995)-250(\050updated)-250(May)-250(1997\051.)]TJ -0 g 0 G - -16.597 -21.735 Td [([7])]TJ -0 g 0 G - [-500(I.)-259(Duf)18(f,)-262(M.)-260(Marr)18(one,)-261(G.)-260(Radicati)-259(and)-259(C.)-260(V)55(ittoli,)]TJ/F60 9.9626 Tf 223.407 0 Td [(Level)-259(3)-260(Basic)-259(Linear)-260(Algebra)]TJ -206.81 -11.955 Td [(Subpr)18(ograms)-328(f)1(or)-328(Sparse)-327(Matrices:)-465(a)-328(User)-327(Level)-328(Interface)]TJ/F62 9.9626 Tf 233.522 0 Td [(,)-347(ACM)-327(T)90(ransactions)]TJ -233.522 -11.956 Td [(on)-250(Mathematical)-250(Softwar)18(e,)-250(23\0503\051,)-250(pp.)-250(379\226401,)-250(1997.)]TJ -0 g 0 G - -16.597 -21.735 Td [([8])]TJ -0 g 0 G - [-500(I.)-282(Duf)18(f,)-289(M.)-282(Her)18(oux)-281(and)-282(R.)-281(Pozo,)]TJ/F60 9.9626 Tf 160.607 0 Td [(An)-282(Overview)-281(of)-282(the)-281(Sparse)-282(Basic)-282(Linear)-281(Al-)]TJ -144.01 -11.955 Td [(gebra)-287(Subpr)18(ograms:)-383(the)-287(New)-287(Standard)-286(fr)18(om)-287(the)-287(BLAS)-287(T)111(echnical)-286(Forum)]TJ/F62 9.9626 Tf 292.455 0 Td [(,)-296(ACM)]TJ -292.455 -11.955 Td [(T)90(ransactions)-250(on)-250(Mathematical)-250(Softwar)18(e,)-250(28\0502\051,)-250(pp.)-250(239\226267,)-250(2002.)]TJ -0 g 0 G - -16.597 -21.736 Td [([9])]TJ -0 g 0 G - [-500(S.)-298(Filippone)-298(and)-297(M.)-298(Colajanni,)]TJ/F60 9.9626 Tf 154.96 0 Td [(PSBLAS:)-298(A)-298(Library)-297(for)-298(Parallel)-298(Linear)-298(Alge-)]TJ -138.363 -11.955 Td [(bra)-340(Computation)-340(on)-340(Sparse)-340(Matrices)]TJ/F62 9.9626 Tf 151.715 0 Td [(,)-670(ACM)-340(T)90(ransactions)-340(on)-340(Mathematical)]TJ -151.715 -11.955 Td [(Softwar)18(e,)-250(26\0504\051,)-250(pp.)-250(527\226550,)-250(2000.)]TJ -0 g 0 G - -21.579 -21.736 Td [([10])]TJ -0 g 0 G - [-500(S.)-397(Filippone)-398(and)-397(A.)-397(Buttari,)]TJ/F60 9.9626 Tf 151.683 0 Td [(Object-Oriented)-397(T)111(echniques)-397(for)-398(Sparse)-397(Matrix)]TJ -130.104 -11.955 Td [(Computations)-353(in)-353(Fortran)-354(2003)]TJ/F62 9.9626 Tf 126.789 0 Td [(,)-716(ACM)-353(T)90(ransactions)-353(on)-354(Mathematic)1(al)-354(Soft-)]TJ -126.789 -11.955 Td [(war)18(e,)-250(38\0504\051,)-250(2012.)]TJ -0 g 0 G - -21.579 -21.735 Td [([11])]TJ -0 g 0 G - [-500(S.)-339(Filippone,)-360(P)129(.)-339(D'Ambra,)-360(M.)-339(Colajanni,)]TJ/F60 9.9626 Tf 202.675 0 Td [(Using)-339(a)-338(Parallel)-339(Library)-338(of)-339(Sparse)]TJ -181.096 -11.956 Td [(Linear)-350(Algebra)-350(in)-350(a)-349(Fluid)-350(Dynamics)-350(Applications)-350(Code)-350(on)-350(Linux)-349(Clusters)]TJ/F62 9.9626 Tf 307.21 0 Td [(,)-375(in)]TJ -307.21 -11.955 Td [(G.)-262(Joubert,)-264(A.)-262(Murli,)-264(F)92(.)-262(Peters,)-265(M.)-261(V)92(anneschi,)-265(editors,)-265(Parallel)-261(Computing)]TJ 0 -11.955 Td [(-)-250(Advances)-250(&)-250(Curr)18(ent)-250(Issues,)-250(pp.)-250(441\226448,)-250(Imperial)-250(College)-250(Pr)18(ess,)-250(2002.)]TJ -0 g 0 G - -21.579 -21.735 Td [([12])]TJ -0 g 0 G - [-500(Gamma,)-217(E.,)-434(Helm,)-216(R.,)-434(Johnson,)-217(R.,)-434(and)-417(Vlissides,)-217(J.)-208(1995.)]TJ/F60 9.9626 Tf 276.041 0 Td [(Design)-208(Patterns:)]TJ -254.462 -11.956 Td [(Elements)-250(of)-250(Reusable)-250(Object-Oriented)-250(Softwar)18(e)]TJ/F62 9.9626 Tf 190.781 0 Td [(.)-250(Addison-W)92(esley)111(.)]TJ -0 g 0 G - -47.976 -29.887 Td [(175)]TJ -0 g 0 G -ET - -endstream -endobj -2192 0 obj +% 2106 0 obj << -/Length 4492 +/D [2235 0 R /XYZ 150.705 512.037 null] >> -stream -0 g 0 G -0 g 0 G -0 g 0 G -BT -/F62 9.9626 Tf 150.705 706.129 Td [([13])]TJ -0 g 0 G - [-500(Karypis,)-422(G.)-388(and)-387(Kumar)74(,)-422(V)129(.,)]TJ/F60 9.9626 Tf 149.763 0 Td [(METIS:)-388(Unstructur)18(ed)-387(Graph)-388(Partitioning)-388(and)]TJ -128.184 -11.955 Td [(Sparse)-452(Matrix)-452(Ordering)-452(System)]TJ/F62 9.9626 Tf 135.842 0 Td [(.)-452(Minneapolis,)-503(MN)-452(55455:)-714(University)-452(of)]TJ -135.842 -11.955 Td [(Minnesota,)-531(Department)-475(of)-476(Comp)1(uter)-476(Science,)-531(1995.)-475(Internet)-475(Addr)18(ess:)]TJ/F67 9.9626 Tf 0 -11.956 Td [(http://www.cs.umn.edu/~karypis)]TJ/F62 9.9626 Tf 156.91 0 Td [(.)]TJ -0 g 0 G - -178.489 -19.925 Td [([14])]TJ -0 g 0 G - [-500(Lawson,)-314(C.,)-314(Hanson,)-314(R.,)-313(Kincaid,)-314(D.)-301(and)-301(Kr)18(ogh,)-314(F)92(.,)-314(Basic)-301(Linear)-301(Algebra)]TJ 21.579 -11.955 Td [(Subpr)18(ograms)-288(for)-288(Fortran)-288(usage,)-298(ACM)-288(T)90(rans.)-288(Math.)-288(Softw)92(.)-288(vol.)-288(5,)-298(38\226329,)]TJ 0 -11.955 Td [(1979.)]TJ -0 g 0 G - -21.579 -19.926 Td [([15])]TJ -0 g 0 G - [-500(Machiels,)-240(L.)-239(and)-238(Deville,)-240(M.)]TJ/F60 9.9626 Tf 146.833 0 Td [(Fortran)-238(90:)-304(An)-238(entry)-239(to)-238(object-oriented)-238(pr)18(ogram-)]TJ -125.254 -11.955 Td [(ming)-211(for)-210(the)-211(solution)-210(of)-211(partial)-210(differ)18(ential)-211(equations.)]TJ/F62 9.9626 Tf 211.899 0 Td [(ACM)-211(T)90(rans.)-210(Math.)-211(Softw)92(.)]TJ -211.899 -11.955 Td [(vol.)-250(23,)-250(32\22649.)]TJ -0 g 0 G - -21.579 -19.925 Td [([16])]TJ -0 g 0 G - [-500(Metcalf,)-251(M.,)-250(Reid,)-251(J.)-250(and)-251(Cohen,)-251(M.)]TJ/F60 9.9626 Tf 177.874 0 Td [(Fortran)-250(95/2003)-251(explained.)]TJ/F62 9.9626 Tf 112.004 0 Td [(Oxfor)18(d)-251(Uni-)]TJ -268.299 -11.955 Td [(versity)-250(Pr)18(ess,)-250(2004.)]TJ -0 g 0 G - -21.579 -19.926 Td [([17])]TJ -0 g 0 G - [-500(Metcalf,)-258(M.,)-259(Reid,)-258(J.)-257(and)-256(Cohen,)-259(M.)]TJ/F60 9.9626 Tf 178.365 0 Td [(Modern)-257(Fortran)-256(explained.)]TJ/F62 9.9626 Tf 111.452 0 Td [(Oxfor)18(d)-257(Uni-)]TJ -268.238 -11.955 Td [(versity)-250(Pr)18(ess,)-250(2011.)]TJ -0 g 0 G - -21.579 -19.925 Td [([18])]TJ -0 g 0 G - [-500(Rouson,)-416(D.W)92(.I.,)-415(Xia,)-416(J.,)-416(Xu,)-415(X.:)-575(Scienti\002c)-383(Softwar)18(e)-383(Design:)-575(The)-382(Object-)]TJ 21.579 -11.955 Td [(Oriented)-250(W)92(ay.)-250(Cambridge)-250(University)-250(Pr)18(ess)-250(\0502011\051)]TJ -0 g 0 G - -21.579 -19.926 Td [([19])]TJ -0 g 0 G - [-500(M.)-282(Snir)74(,)-290(S.)-282(Otto,)-289(S.)-282(Huss-Lederman,)-290(D.)-282(W)92(alker)-282(and)-282(J.)-281(Dongarra,)]TJ/F60 9.9626 Tf 304.659 0 Td [(MPI:)-282(The)]TJ -283.08 -11.955 Td [(Complete)-369(Refer)18(ence.)-369(V)74(olume)-369(1)-370(-)-369(The)-369(MPI)-369(Cor)18(e)]TJ/F62 9.9626 Tf 195.586 0 Td [(,)-399(second)-369(edition,)-399(MIT)-369(Pr)18(ess,)]TJ -195.586 -11.955 Td [(1998.)]TJ -0 g 0 G - -21.579 -19.925 Td [([20])]TJ -0 g 0 G - [-500(D.)-314(Barbieri,)-330(V)129(.)-314(Car)18(dellini,)-330(S.)-314(Filippone)-314(and)-314(D.)-314(Rouson)]TJ/F60 9.9626 Tf 263.283 0 Td [(Design)-314(Patterns)-314(for)]TJ -241.704 -11.955 Td [(Scienti\002c)-224(Computations)-225(on)-224(Sparse)-224(Matrices)]TJ/F62 9.9626 Tf 175.254 0 Td [(,)-229(HPSS)-225(2011,)-229(Algorithms)-225(and)-224(Pr)18(o-)]TJ -175.254 -11.956 Td [(gramming)-396(T)92(ools)-395(for)-396(Next-Generation)-396(High-Performance)-395(Scienti\002c)-396(Soft-)]TJ 0 -11.955 Td [(war)18(e,)-250(Bor)18(deaux,)-250(Sep.)-250(2011)]TJ -0 g 0 G - -21.579 -19.925 Td [([21])]TJ -0 g 0 G - [-500(Car)18(dellini,)-494(V)129(.,)-988(Filippone)1(,)-494(S.,)-988(and)-890(Rouson,)-494(D.)-445(2014,)-494(Design)-445(patterns)]TJ 21.579 -11.955 Td [(for)-240(sparse-matrix)-240(computations)-240(on)-240(hybrid)-240(CPU/GPU)-240(platforms,)]TJ/F60 9.9626 Tf 284.952 0 Td [(Scienti\002c)]TJ -284.952 -11.955 Td [(Pr)18(ogramming)-250(22,)]TJ/F62 9.9626 Tf 73.713 0 Td [(1,)-250(1\22619.)]TJ -0 g 0 G - -95.292 -19.926 Td [([22])]TJ -0 g 0 G - [-500(D.)-200(Barbieri,)-210(V)129(.)-200(Car)18(dellini,)-210(A.)-201(Fanfarillo,)-210(S.)-200(Filippone,)-210(Thr)18(ee)-200(storage)-200(formats)]TJ 21.579 -11.955 Td [(for)-318(sparse)-317(matrices)-318(on)-318(GPGPUs,)-335(T)92(ech.)-317(Rep.)-318(DICII)-318(RR-15.6,)-334(Universit)]TJ 305.831 0.025 Td [(\036)]TJ -0.832 -0.025 Td [(a)-318(di)]TJ -304.999 -11.955 Td [(Roma)-250(T)92(or)-250(V)111(er)18(gata)-250(\050Febr)8(uary)-250(2015\051.)]TJ -0 g 0 G - 142.805 -209.215 Td [(176)]TJ -0 g 0 G -ET +% 893 0 obj +<< +/D [2235 0 R /XYZ 150.705 480.156 null] +>> +% 2238 0 obj +<< +/D [2235 0 R /XYZ 150.705 448.276 null] +>> +% 892 0 obj +<< +/D [2235 0 R /XYZ 150.705 407.09 null] +>> +% 2091 0 obj +<< +/D [2235 0 R /XYZ 150.705 348.649 null] +>> +% 2092 0 obj +<< +/D [2235 0 R /XYZ 150.705 304.874 null] +>> +% 2239 0 obj +<< +/D [2235 0 R /XYZ 150.705 260.978 null] +>> +% 2234 0 obj +<< +/Font << /F84 675 0 R /F78 674 0 R /F131 921 0 R >> +/ProcSet [ /PDF /Text ] +>> +% 2240 0 obj +[1000] +% 2241 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2242 0 obj +[277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] +% 2243 0 obj +[853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] +% 2244 0 obj +[528 542] +% 2245 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +% 2246 0 obj +[531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] +% 2247 0 obj +[388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] +% 2248 0 obj +[777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] endstream endobj -2212 0 obj +2255 0 obj << /Length1 1383 /Length2 5908 @@ -31499,33 +32962,150 @@ dup 114 /radicalbigg put readonly def currentdict end currentfile eexec -oc;jAw-=%W)-{ru)rAE(@{빴Q|_R -ϤA -T@|q|VkJ%qu8PwGxŪ̆Q6K -U\%b"t-*xJ+ -}3{Z2zݬT2s$Z&{BJ{ޣ!fpG?[Ttku'5O P 1[.BBBo0 VoG;wCMdK&\YT{#v m E57G~ߡ +3[ť73ŝ:&uN]B Je v(7JIFO/kZ)Ckz*7Xuvw نg&֋U+DWAԳPx;%]r@G~fJ48{vFM"~wvԇ1I mJXk k51D[Wopl^(;w\FIzHy$$r ./xj83>z>9Nќv-v)TTD*IL}qbx>u}&:=l]o:Eiۧ[A^ [/ER;R;"6(ũK?C!>;gh) Ga 9nQ<@(<|+)}Pˇ2&dqmc#IhFeI-S n|{cfyv40]vO?݋ZωN#I'\9wÅPp`i(2NzfAʑ[?}7N)-t)^EI(^ܒM[ ҽTf[z{ rC2YcCŤŬfvnTgTBg^fOW 3Kgiuؓe>Nוq1S.֢+0ȉ<]vmZ =WVhY&R{!2ܼ'Nr6ɱbk_ک'@13{MKݐ__GaTAbʊ0ZB{䤡 d2J> 7RK7׏T;Ȱ+[4B*q4~;7D 5W?S&3[L^'{P)V̴~B,10Z]TC2e;=@7n6 -|,E+ʻ%_B κ7() xK6qQl: `qyi_O7MK!5(sfgHQ1N9!;8 @ߙ:Ϭ&-(D00fkC[x'=xWH i~ -swOVꮈiJL%{yݘF": -1[[ nse]-D.ct&_C$I]Dؘƫ'DGSQ$ҀpՄ6<~"Dg՞1o/+8>YX+갭҅:fXM(~t~xc+`Hcv"+!gl;%kι #v" %MA6ֆN{%]D`;>I뼳g!CSiØofglu:o3yUݢ\a;'f@ᛙv⬊Zj NB].yiW3 5{$";Y]`!i1{Zn|VS,v6.am$|%>)TCk"3o@*RU,6<#44`xDo:Et{M6#:]wޞCA'j]=K4EA=:MOa+VX[b,ma*69Z]ʤ|`?tvFwr2)/-Ov5@y9 ]#x~{! ˣz{TD]7d{WtMpiځ(+\, pZ]8âwcl_E΀G#ӱ¶ꭚ=]Y7*rQ !WQӄrgdM9n*P b3Bxe @1RhOj\Bycwzj eH? U~pE.kIc4g<BZ\B5hrEd^wŠim ;2 "? -]`_Z 8P\w)9%9dS6X?}+LYJ^y@1 (h{Uem,F/d"H7?j V}2 -l -Olb(FY8G߱4. eS]<b@{ɤA.S f>oLơ6/翔OHeAᤇ#:j -7 6Y^Rvr?NVIz1x^PA~KutS`ZGR`Tg3H4'eKR `܁k+j|7oHNPqJg4{"NJ.Go[yv.IS+9jULd+fu˥~mQfsGMb)RY2>y2d=Ue8@*<*?!.y]PhNЫ1qrYgMR/ -_X仾ru'Apue+`Y>q WXG6dZ e T_j^-'[nnyOZ:O?U3z;Fra}/_ -D'o!OQ'ʱL@ .!Ux~eRj=U=ΥDqKߒ&u9qD<: Lb.3c%x]׉; aRy Z:Սl^nz!/rUզ4)hOMMd 14/Xsa0"A묵erᶒlBNr8ݰY~ry9h?chٞ!c -Y猅Oc}q5\(y!^(L 153jvzh9鷔7ZCY即O:,!UC$*h[G%4O#+y6">RR-:#XL%YDd,[FTꠤgXcб:o9LJ\{h%v9'tUBQŕ&Fpԥ,8W뗶FF-QEWDEz5s#.TD1R0݊:$}+r*WޮUb\]Evs|?LkoOiFx(8z1d8w .b"%K^i59C|]J4ptjŊÑCȇ -ĭGe/" # @!aMbE0U?\ bYӽImʗ.`x+2qZ:j㱦tWMK;8ƦA s&q\oqVjQ %i3k$n'=E#* -WVV IPQ8>i 4bm miʾ.P`W0'20vwl.]elЂ!Yz"FkR͙,`k%Iuban\Rڇud :t?YS/WXlO]{j -f_p|=ZO(+`H -5 ~7dh֫]V1Ԅ2D(W[/tG -W ( zK֍3Z!>LWaF;w0cA܂LcEa; *DG5HX&sw*;s(#PBپ hoOt%J u.:ۃ &essE3a̕*Pv*k]5D6?x3{%ЯEiVjӨPNx[ ЩnP1#WvA8޿6dzLtGb5Pw,.#gF:4:uBV@aO2zn! `pgTwaG7= bzsФY@}0{9B6$ʗԧЋ>n4=#|h~ޕ4R_= [?r}ֺh }T e4{#:ų7_f.KQ'maa÷[WPc_RF)Dr[ԭ-B+~?>3h $z?-#L~9^0۠ԮV@AW acӯ=YNʛvTS-9S"cx L ʲLk7Pw헥spxY-YeF -6S&_!S|esUFRyYﭧN -endstream -endobj -2214 0 obj +oc;jAw-=%W)-{ru)rAE(@{빴Q|_R +ϤA -T@|q|VkJ%qu8PwGxŪ̆Q6K -U\%b"t-*xJ+ +}3{Z2zݬT2s$Z&{BJ{ޣ!fpG?[Ttku'5O P 1[.BBBo0 VoG;wCMdK&\YT{#v m E57G~ߡ +3[ť73ŝ:&uN]B Je v(7JIFO/kZ)Ckz*7Xuvw نg&֋U+DWAԳPx;%]r@G~fJ48{vFM"~wvԇ1I mJXk k51D[Wopl^(;w\FIzHy$$r ./xj83>z>9Nќv-v)TTD*IL}qbx>u}&:=l]o:Eiۧ[A^ [/ER;R;"6(ũK?C!>;gh) Ga 9nQ<@(<|+)}Pˇ2&dqmc#IhFeI-S n|{cfyv40]vO?݋ZωN#I'\9wÅPp`i(2NzfAʑ[?}7N)-t)^EI(^ܒM[ ҽTf[z{ rC2YcCŤŬfvnTgTBg^fOW 3Kgiuؓe>Nוq1S.֢+0ȉ<]vmZ =WVhY&R{!2ܼ'Nr6ɱbk_ک'@13{MKݐ__GaTAbʊ0ZB{䤡 d2J> 7RK7׏T;Ȱ+[4B*q4~;7D 5W?S&3[L^'{P)V̴~B,10Z]TC2e;=@7n6 +|,E+ʻ%_B κ7() xK6qQl: `qyi_O7MK!5(sfgHQ1N9!;8 @ߙ:Ϭ&-(D00fkC[x'=xWH i~ +swOVꮈiJL%{yݘF": +1[[ nse]-D.ct&_C$I]Dؘƫ'DGSQ$ҀpՄ6<~"Dg՞1o/+8>YX+갭҅:fXM(~t~xc+`Hcv"+!gl;%kι #v" %MA6ֆN{%]D`;>I뼳g!CSiØofglu:o3yUݢ\a;'f@ᛙv⬊Zj NB].yiW3 5{$";Y]`!i1{Zn|VS,v6.am$|%>)TCk"3o@*RU,6<#44`xDo:Et{M6#:]wޞCA'j]=K4EA=:MOa+VX[b,ma*69Z]ʤ|`?tvFwr2)/-Ov5@y9 ]#x~{! ˣz{TD]7d{WtMpiځ(+\, pZ]8âwcl_E΀G#ӱ¶ꭚ=]Y7*rQ !WQӄrgdM9n*P b3Bxe @1RhOj\Bycwzj eH? U~pE.kIc4g<BZ\B5hrEd^wŠim ;2 "? +]`_Z 8P\w)9%9dS6X?}+LYJ^y@1 (h{Uem,F/d"H7?j V}2 +l +Olb(FY8G߱4. eS]<b@{ɤA.S f>oLơ6/翔OHeAᤇ#:j +7 6Y^Rvr?NVIz1x^PA~KutS`ZGR`Tg3H4'eKR `܁k+j|7oHNPqJg4{"NJ.Go[yv.IS+9jULd+fu˥~mQfsGMb)RY2>y2d=Ue8@*<*?!.y]PhNЫ1qrYgMR/ +_X仾ru'Apue+`Y>q WXG6dZ e T_j^-'[nnyOZ:O?U3z;Fra}/_ -D'o!OQ'ʱL@ .!Ux~eRj=U=ΥDqKߒ&u9qD<: Lb.3c%x]׉; aRy Z:Սl^nz!/rUզ4)hOMMd 14/Xsa0"A묵erᶒlBNr8ݰY~ry9h?chٞ!c +Y猅Oc}q5\(y!^(L 153jvzh9鷔7ZCY即O:,!UC$*h[G%4O#+y6">RR-:#XL%YDd,[FTꠤgXcб:o9LJ\{h%v9'tUBQŕ&Fpԥ,8W뗶FF-QEWDEz5s#.TD1R0݊:$}+r*WޮUb\]Evs|?LkoOiFx(8z1d8w .b"%K^i59C|]J4ptjŊÑCȇ +ĭGe/" # @!aMbE0U?\ bYӽImʗ.`x+2qZ:j㱦tWMK;8ƦA s&q\oqVjQ %i3k$n'=E#* +WVV IPQ8>i 4bm miʾ.P`W0'20vwl.]elЂ!Yz"FkR͙,`k%Iuban\Rڇud :t?YS/WXlO]{j +f_p|=ZO(+`H +5 ~7dh֫]V1Ԅ2D(W[/tG +W ( zK֍3Z!>LWaF;w0cA܂LcEa; *DG5HX&sw*;s(#PBپ hoOt%J u.:ۃ &essE3a̕*Pv*k]5D6?x3{%ЯEiVjӨPNx[ ЩnP1#WvA8޿6dzLtGb5Pw,.#gF:4:uBV@aO2zn! `pgTwaG7= bzsФY@}0{9B6$ʗԧЋ>n4=#|h~ޕ4R_= [?r}ֺh }T e4{#:ų7_f.KQ'maa÷[WPc_RF)Dr[ԭ-B+~?>3h $z?-#L~9^0۠ԮV@AW acӯ=YNʛvTS-9S"cx L ʲLk7Pw헥spxY-YeF +6S&_!S|esUFRyYﭧN +endstream +endobj +2257 0 obj +<< +/Length1 1956 +/Length2 7144 +/Length3 0 +/Length 9100 +>> +stream +%!PS-AdobeFont-1.0: CMITT10 003.002 +%%Title: CMITT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMITT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMITT10 known{/CMITT10 findfont dup/UniqueID known{dup +/UniqueID get 5000779 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /SFGIZH+CMITT10 def +/FontBBox {11 -233 669 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMITT10.) readonly def +/FullName (CMITT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 80 /P put +dup 84 /T put +dup 86 /V put +dup 97 /a put +dup 99 /c put +dup 44 /comma put +dup 100 /d put +dup 101 /e put +dup 33 /exclam put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 45 /hyphen put +dup 105 /i put +dup 107 /k put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 40 /parenleft put +dup 41 /parenright put +dup 46 /period put +dup 114 /r put +dup 115 /s put +dup 47 /slash put +dup 116 /t put +dup 119 /w put +dup 120 /x put +dup 121 /y put +readonly def +currentdict end +currentfile eexec +oc;jAw-36Uu4 +l.Nk48DPh>[ME7wk9B.H.CSoZqO O)9OHl~Q:ɾD0j J'JZ `B 5ԆG +tbY7:Ϳ2hK@,',L~## gyMiM? i8Z+Ւ~[\3Mn=r=_Vxgp%vbҨSr\Ʃ*'"$9iV2;xտ`e'fz+;Z)ӣ4Y,1i$WVCo _S*`6 Ij$I/}!9'n0%3SVP}vqsF}OTӌ+O*6I*\-R3Nٜ:gd;p/V;aZ6詡:swQu+MFÜաn>s *HPix\x6uj^tTg'Dঐi&k|5.+ E0E,Tٙ~#NaXϖ.-EJ:cxΖxhN T#O #k]FּXND Ajvf rƮ/*{,Ed),# vih@ `ܲ~y)ΚgىZlnv̉˭02L7PkgcW% N |]ɼgn L>DCj}xt7$ 1쵗T +"*vOBdN#/Ý_,N f/.1fuUoݫctݶ.aLEEԝ O8NFm|@*7ȪqEIueXʊHm{+RZ\ Do 6;%GC`]m%4BHi*GFn/.'1#F\ځSֆEkS*Kbix VAyqi,kiXW&`BA:[2 G֒LQ2}O6%ڑʚX;a~S?雂Koڻ6lTy6DȱFDץW\g?""v|]Jz`%i~H 69t @YPaЪ' 雠$|,kߒ2ǝ{fC,1iJݹ`z$RI)O!lG{INN~zj"(:.AonߦvSw_#a\ QTH5̯EUSOjD17سBKT*uNEhZwЅ?r81:AJОQ[͡`첈~l&P}Ǹ?p?{F.t@_bkq 7/# iojih'`7]7DoVKN4eu +rpn!7PѓМweǏ(B + g D +ߦчPq2tξXm7+t?a}i/k5i:S`$u5n2/ĝK #&} 6f +{a$6wAKY0tdt IZI+cC'0@-hqm +y3P^>]A{G +I7{pr ݵ(rc(j|/ G%! . +.I~NKGd} ]l5, j]~ "CxCHt x@x /[o=~h7/Oaw>0xd);?u^q#+uI֦| +ĽT,GfKu(U c]~n8:>NAncwvZB3]%#qc)!56#D!oC>Fb2y Xptl0;4bON̜moOAgn]umiMC]GEonX5cI+Q] +qe@E+LNv{*H!Aǯș?=A%;W xB6J&@;l ƽ&=ȘeiyΧ +.}  -˘xVJ{npJF岍u:JA/%ț VဿOb0SKʔ_4CߖJ`@`ǎ%*M ^A{y뿱)旚d=U'oXRx/8ʖ~TM> ٢Li;g}c[ͫ.lvjg)G66[>kxĐ-Sÿ,M/sVijj]wu/ۺ*,yLC|QqSApF~_U0|6;"s;1(V$ +YGrēăoXr60ź3jw86*̣yVKevG=>NlN +ƣ+@޲g5:0_D*хaȷ76Mxv.TRG&!'PM7>z-~}IEH}YN8lj"S7nyNR_cὅý+gfQɛay @< z~C̃D:`12Yz̗KD|nd5DŽ?M G&[;ʱ GxIdXhX7 `⟵mRIhlQ:C͖;;EWrUk&8.[h% fYBŋ5Q 2m'c F#ׇ eDFJ07Dņ󩔪\gW}Lj̉XwFuœT0C"N^c*CxYEk4 `UV0N s,KU !lj =”}wfX"u'Bs]P{baܱl7r^cJY% x~@t N%=bWa[pT729w"63M"(MlYl U&FFJ嫋j#6EMkw-hl%s󲘮K6}unYA(unr]۠RW?8^v_%45]ZoH0g?ۈ2f!zq*. sf':"5aM6Lc$KtȅArS'\sWF6 &oߛLyJYRVRnZT 87=n4PrZ\J̢t7vhP;?'\z*ƙ m⌟)Vl\IG/r+sZ|᧺5ˮDCt C @'h zH]/m)zkt[E {NXcKyXGR|΁A=1WEJɽ6ϑ*^v[SJ$ +`D/̏>wjE** X(H | r=̟z#-1_1kmG\e+@To3'Pj~-cv~H3ZW-Zz"dm+:Zoǹ O@a[C*D3* fT,1QĤjJ z6h[+JJ6L|"?N|ieԝs{ +AehX'v2d*U1{d^ +_g\e+J`ڼu4 +"r?i'5D*,u eH%. $f'Tx ɮ3a\<;3&.8o a?shp/`ȶBF{D1U#'@/wNwO{WCS2tP='B\n m$`≲XvG^Hf0@Ǽ8Dzgtۅ-4}GW + XY־q7D(mD "gFAushB!&sXӒ}WTZsc@ى`9zmڧuxle :wna`uϩntv87JMSrrdI8Mi6?."{O-|lv~6|g|P.SD~nLjyDZoW$Qp$,;C꺵nƭ|ƶ法dwPw?WLIq>\h(FS*їQs䙓3 +ڪ N@I;ieg|F\;;ḾZk_`:BY9 LxqyKN,H`#W$V=UDxkU. "*4xSR? PrP#>i$!EְsG&lzҿg$|oj0PsffX _簻^a9Mh- t\ZZ Hz)XHm]c&AslY x=VZ]wq پfpnv%\*i;2f<٪cZ}Z;{,X]T]4~jrd.1=x%LE(C_LлF|zy8ő;nF+G'jDWT2-hZVۇ cAA^dE_{0vȟ)7y΂Lh頳ᝧ9SFsf_-vAY}1)GMo\<+’Xc?[l&/_iǜT%j.2F"C"#UѸ4?h)Dnkc7@*Y7s=R9YB݅TZGkJ`ʞ` \j+@{kF] O`wqr1-F8A(pԞ@f]Ż#xq"T +*!/KBd$ɉڊ`ijMzJ7]āj[JXp h핤>Òm@4G7 +23>n jVwY28Qד%uh@}yS._6džwAl饌?ʡ- +48ɹ ktÒ:]X|j9' 7,} +R{>g7,}P+zm5˺HU?iSr,+ +FAa.Pgvasl ZBhgǠW -BѶNh`˨[Wj)q(͌.wY$Q0] +endstream +endobj +2259 0 obj << /Length1 1442 /Length2 6151 @@ -31603,364 +33183,217 @@ n^ r sbVb)l 2STH+PMzjzif$DMkV ?\ټ>߈ƶa<EELD6=tE.(%Fo~6r\l;s'$ֵ>4r$2DZ~*\R Yi$=ޡk'哙.m6–tY0O$)QrUQ+ߪ4(,Qb8mөqH=,Y8i SZ6m@`7~"L7\FdN#FHRKKHpb40 2~HKε֊X endstream endobj -2216 0 obj +2261 0 obj << -/Length1 1688 -/Length2 8444 +/Length1 1478 +/Length2 6403 /Length3 0 -/Length 10132 +/Length 7881 >> stream -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. +%Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /VKSUEJ+CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def +/FontName /SOSTRQ+CMR10 def +/FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def +/FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 66 /B put -dup 72 /H put -dup 73 /I put -dup 32 /arrowleft put -dup 33 /arrowright put -dup 3 /asteriskmath put -dup 106 /bar put -dup 107 /bardbl put -dup 102 /braceleft put -dup 103 /braceright put -dup 50 /element put -dup 21 /greaterequal put -dup 20 /lessequal put -dup 0 /minus put -dup 54 /negationslash put -dup 112 /radical put -readonly def -currentdict end -currentfile eexec -oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHtEB-gedog7Q`[['W73sZ9 m !tAY!$tY\r[uTIUiBy[Ȝŗ3Kï6zJ!˒Js&B5C"m&`7Ӣƻ3ugNC O~̶uo5=_T/ h,$B%dʘ3l MoYLڶ~3^`12]=l8B6PlpfW< %PIN!ju#,.iXnȼ‡o$ҁXꑷI5V*E6tKo_)RPG;Z@9"V3TTLN Y:Akڬ6̠==80~DQ Q^br/2^KZh`N'Jt4iBYҁ7ޟBU_~\fXAZl_ZƎý'xHbG:"l5CU[aLrf 1[;4p^NpqBD '؅93M&9{ VD 8 aе2n.hf -l?K[$Gp/JzcF8vP3/XO6yAo~]WqDMY4ߧY̢XPEL2_2 oH{ -1x'u|o WNRE홹&lF\LRh1Fb}+l C] (vfo+fM}l?c*ވ"^R]miKOҎ!I ӲR_tW;u@(#t*̧ U{|Q}a3Fl8xtHWA­;!V CVov?³;=>,㧫\"RvRCإQDh -@_,˜kbflAIP^wٚdIHzk(c3xɁSUPIf{KΩs Y/v[L%O@HdjyTõVmqgC9zTC/t~Řo*9rIojUKxj. ,+b1ֲ IlDLQZ3P-no'$F zg!Ј*oj-Nͥͭo8KwQgݍp*1^.֊ LV~m la ]%."`_QipŎs5y.Xͮ)Td1Kk̊jn0zGqaWQ%zJX3tIy0ľ.#[#D#EԂppF*ޘvrOdn7n f9*X:>Ǽ:*Lf͍9&aj;+{0 )AgðK*XKV'zZA) n TÙLJ^Di[:s<ܸ2!U|#5VfUqP}|=G5O|Ps9}* -+gpA,,=|j25Cɂ7 ./Fɹ0tRẊ."we hPempJo@▁_A3QBV~$9Ej= -]? {w_53Fgӿ4BAq41Pf ,Sş6r[v` xG$.} ̔ϾF͙c=f!*˽./wĉR8(@ًz c@N&Imݣ>X!me@lW"VCH8kՑŨj]n3X>Jz?D=Nbn {qbY(>"8*苾ky3o H Dw] d{EʥËw.$Vhtzk$kk$]4cfCW@3plQQ晉b/pTqF8_AnQmK{&z;<տm[i7뜣'*qXTnt<Ռk/?2m)fy#(`%{!Q/0&sxfB+rE[tgOKQ$$=ל?d@3c)]3%*M}H饞;Cdrp1jFcstG'C\p))_)( MM - qv&C3NLZswTPu{sϰP+-UFUP"KΆ+Ye7?0(idL;gk9(YI-l`;`AH:YHb1H{wR^Yњ, -$FԖHDV?pyїP%F=BGKPh~N[I_ꈀCTzf <Ӗ`4|mE1J'$`}R \N2kfaouJ73vKW{M3?׏M]:W;vX;B X.PI;?!T . sU]䮃=X 5rMt>y=*bC~^ tArl'Ŧ\؟L냡P&7ttuGz;Kg4э;u)";SvC~?J/F"6U.0>+KQӄ0"ӫ=sxoJ]ת!w6O.}t5V˩+7Us֩yēTC5GrgU5$&|~G8 Mv(jt Ϣn]]QWOؑm. R[ИoNng IF:?tؐSUOcj2Cm[O7>kWkX' #t'Xd9+E7Nd8{]m/ ׎dvYYwop!EP7F?ojP9"gBP;B^QO3*B 3un$I_Oe` -$`}-9Q/ĥMe?Ұh]b _2<͖+tª[ϜJO@%MI tv\/bMVF05+kI2W9>f} Ķ3tj|" -[LhY)o57k#%H\,x|ssxH͆|;` v%گT[c]e"GUj߫ytvx:udQuZy_Td"b+O]lx'6w6XCDKOf(g@w]fV[~1F^A3v Ovү2v -zT0b#[zyϒ$e1k5dRA`(Ņ@{=yW>>y@U;=H;c{30ü^ծ)ՙ-{OO2R´xQwBgБS"תlbz;Iy\EprkM @@e&3lʉtS%)/pR"2u -Ee5+ٰsZ'bQSlj zvހ~%.Kz\NE,eV2=Mo)-JcV:U2Ѹ>1ȓ"QWOё4*Oz.cjcY&=7Y,A5nIF/?̊ ]as.N/CջtHG50x}eb9S&0rJHN\?^4'bɻ':K`wpcT!_ H݊{}HmZto7ʫߑQǷbi>ܜZOddFտcc -$" |hJQvB'\%63J)Ag+TʍrnLON@EzHr$d(|*ztiF Ո&{5rT[)C =tGeȾJ!De:1 4*rkdT^\(^卷|auj˕NזG߲ h$ ǙOpH.'H "&+t -d[ZϗE1Ékt/Ȕ7\xY -h^IJvh>\/?1X ǽnyWl.AkaiY4!@.SEg_;b$; tOEN,@}ˀg~Ռ f,tyyVc) vM/"{i ~?pշuCM D=ϵ0펐sίS΄V"'B &!U,)8RޒJRD0],Ҷ!?y)F 6.svW:iAaQ$gp$~PKx 8IJcxȐ6¯MHkbT':X I(t#+dԶdSTOhìtR<%(^0.9uUo4jѾ9fy)eYgSơ#K)AkW21#E~웗"@q3|aT =iPi~!z I&;Xԏeeg8:KDK[h$)Zd7ϒmQF*Tՙ> -stream -%!PS-AdobeFont-1.0: PazoMath 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math) readonly def -/FamilyName (PazoMath) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def -/Weight (Regular) readonly def end readonly def -/FontName /IKXQUG+PazoMath def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 165 /infinity put -dup 229 /summation put +dup 91 /bracketleft put +dup 93 /bracketright put +dup 61 /equal put +dup 40 /parenleft put +dup 41 /parenright put +dup 43 /plus put readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-40 -283 878 946} readonly def currentdict end currentfile eexec -oc;jtD[|<33229IfÐ"XXH`{(b$`Ꮻ2 Gy<\&MꐵCt+˅BJvƷmoϚ}^߼YTYC]S=nt9x>JK1'r6iX'l 6я=v1]mO CQC>iOLUO*TcTm(߀ 1U -nAYXU12rrE^Oy";Dm{O0 {2RBiNMufLon>Gl_1#Y> ؋nׯ ,G#IJ5.FE)a" pqo-4`7}ӺWt_ceuJh>>W! A5j-v`-?R tl.e)1=kdSi!5_l< -^+bގީܖnW%yg͚3N>Vp9e.ovh; ͍fW\^yя_ܓ'1︖œ]c*" 磺@A.XcǽD&(49g6vf4J ]5(W sԘtaȝ<[EpTU!JtО ?,L?!w sg0MhB1$sy8G(b>zuݬDoeHz)^0 -9JWf'UIcei+5H,r73g03{#Y_E^n2ݥ xdR$;9(fn*eHcAI#y`%,tŁ\ )_V+7\M7A4R"З@O!1$*ϤНsp%>*Ȗ, QɥH;Eٺ~b@n sXZۖ+ , -y#/!AL98Ta/eT,ut/u6~ 1QA\SW{N?2/G?E 8ӮchbK3q$;+^B(񬼨xฉk:wMX,Ӄ~R[&h8AS #L'ɧTp#{۪>;+⭼MuU[%V0EėٲC9؅Sםu^sI2\. ->j5xBĒڪ]˸f*g|x*cfr+B!H9R2H4^Ed>>J1uz&MLLioJ$!tFo_O>y,ު+#D qW2  tE"QIՅ.e]l w,*"Mf]i/FSꂒ.s_.n1 /8,}̨ W HFPsWkn3a9`6IݐWi>| =1uŪ4ԅXHAH -$-U3# -endstream -endobj -2220 0 obj +oc;jAw-=%W)-{ru)rAE(@{빴Q|_R +ϤA -T@|q|VkJ%qu8PwGxŪ̆Q6K -U\%b"t-*xJ+ +}3{Z2zݬT2s$Z&{BJ{x< ,-.2iRnñvپ1䠕 '䓱_r"O_t3kefBݼVfj9ҳ Yh뀸{q-ɷ}W??gw1*Eh[:tWeI,v8a<{B100Z85|}Nlw]6Nbh3E`(Eޏ'Q;eԃ/.DyL5$4IG׮Ɋ\yj9.VU5Q!-赁B9dB^oVwBɎT7RsOGA b#TBv!mWT=w,ID%'MK<|]D@2O( ݎ%#_ɷVBST#z!${l\4ĸ ;5l&!〚=(fUwAeB#30>H 'L+֓jz@=s\<=\Y$D?U 6xGQnǫi%֔! +L2[)!fXc<'ȲRP3E!-:'AJ.IJCJJt&{76 +#VH/Fgw"F5wS$|oQ<Η `~<10|;,zɴ% +oߠx0sW1Fx gmxVyѝ"]#z~pv Ũ.rB9$nYCC1td@#8kNԋK;ԓlF( ،N;d*<Ʀs9ZQ@It%[)7&hn Y'a¶T'Xrߙ/n_nJL (@ +К +N{KF^kbn~`L]aU{vLܺ41$rmAsnZ*=sob@{y !CC{c.WZ0n bpgsPd$-\ԛ&L27JBs/g(xQ,t>[8͓GsŸ:R$9]6&my)ivjWLRB^RBalx_Y:5M/j١!}`D&WȪQX$HߧtI .Y@nr_n܁ OtAN-L n?_^_g~Ə;`KB6eĶ +>lQp)/;S' ^:tJj@xE(0G;κQqǔkT'; ÃDHjsrxܖ +.>֯kl;&#<ښe)fFz`Ƿ?Ic@SH&<evn8F\V3aA!yy:+c!xbM։/f}3ߖ˦"G'fMsXWU}Yĵ^ %j!HOH͎_;臲Jv]# +$'Ch?5u-G:zHZ\%Uv z^By%NT⸶3=X?mJ-3iH@ܐfσkR.v'm.'SDly7 YCm^Gu5_G1t/ +41n_D>}p+fg9h$]@M`^ҹGK;5wIrqA3fAYiuYrD:dR At -,)aɺh9[ԧuS9KTKaX$wgɓO[xqǃyI(j5LIc}|h$zDUwY+Z:ϤŜ1le`u@|܈贚^6/y`a [Ί`ҾEwa ziLa}jʰ@}xWns0n*{l?Zz>8p-L&ȣK`> `%`ݿs?v˻^\*QNbf+ۼބo" ٧U zgga䎐uFљ<Xyݸ*g4?X2]4H͢^qLeoU~ 7>)ƤHnA7"{DRj)ע~eVDJ|X}ѧCrTA fP};"ӼK#ΑTF\^ԓ ; |R D\Ă Hu6QИ'Q3b;x#3S:jb%tJ/>ʡOrVށx]>)]l5o[F;,N&'i\NQIH?T:@FN SX0<)hW4fFDh.سT)^S-nw}, ZNEC Y Rez3\ +tY5`F~_xU|'XLJG@U6I \>:V_>զ9*I0}ӵ\"{3UzuFf٤Pߨ)E8Uw)gq:dj#hq so -@ +KG7"|QЇ Zzs|}LմS:fmA3S 2=[dؓJ\ܳc|tj1ƛArѮJv,K| ϕVސ +Q[ AEKS/zKc +O,4e|{G#RvKy{ K1EVVwb6ª=yeeܑuE>M%;,1W}w ~hW _F9QcyE~fz\a:a<2euggSR1Eܝ(=F=;q')^1>u6 +G0+B+渞bqGYitLxRIPvhԥϋ^:nwp5>^؉R}4agl}^(t7a &)ZS8n}@f0;b.ۣEL7%3C,@7[I [1sIX<[f܌a:?y3"u/'\d Dӹ=qU kκH$ yQ7pl*mhS]AD5ƫ79 +endstream +endobj +2263 0 obj << -/Length1 1188 -/Length2 2740 +/Length1 1688 +/Length2 8444 /Length3 0 -/Length 3928 +/Length 10132 >> stream -%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 -%%CreationDate: Fri May 17 11:17:28 2002 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 14 dict dup begin -/version (001.003) readonly def -/Copyright ((c) Diego Puga, 2000, 2002.) readonly def -/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/FullName (Pazo Math Italic) readonly def -/FamilyName (PazoMath) readonly def -/ItalicAngle -9.50 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /DUJUUF+PazoMath-Italic def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /alpha put -dup 98 /beta put -readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def -/FontBBox {-70 -277 902 733} readonly def -currentdict end -currentfile eexec -oc;jtD[|<33229IfÐ"XXH`{(b$`Ꮻ2 Gy<\&MꐵCt+˅BJvƷmoϚ}^߼YTYC]S=nt9x>JK1'r6iX'l 6я=v1] -đg@F7pqӁ')jjOh%Ssq={.] ZO7єEՄ|۪uBwLÍ `'&0Cg)X0F?nY&8 ˹r]lpKGCpoğg\t/bj}t SEcqR7VL%Y'1b J71SU3=gO>bHt kKc:hA:F.xW(L^N1K @_P̹>nnof7-U El#+A5FԔkyt:RR2\3 l v"ڪ> V b/&"@4 -nD5tv_\$S|KpCO1vF^(By@`gFszV0Qn .T=>>rYA,{ɠQrF!s߸ߟ0׀ߎ5ˢV<4d(nLس[PC;+qޥK V:d&>J3)Q6P|B5 e )\@~7mknˋ$ԶܖP+C}o*( -.47W?8"N[.^7/Ɵ3/3j(ĦwN wLjC; f&cv^%:S,yr8N@K}m>KWKn9}%FSGhpxC(@rX#?F0ʃ#w^cuֻy"-lE#~%U1b[ ^•1@*rEPWS/?N!< e* Wxax"(Z5ŅQu? -UgH{@^Κ2]Ʀy1Q',XL kx2 ]mȌ0`픈p:*:_kp -ϊ%,vVb]2q2嶖ćVas |HzN@=ܫ7ikK\}pYNsS)# 􊄡c,E׀Z=D=0Maf~nľ4ߍš2Bob bObwww>|Gkh6p r[#P"77vE8ʖ$;E6zдR]}##+0"i%uCj,|aSVMx5p6Uj(mE*~mYdǡ旵w#`9k?)픥ZW|M%H*'a>"Vћw5t0QPGR%"*Bu+8~j X< @cNngYGй34 V])-l Ɋ5imՙUV#Ŷ{ۭls1we(\OL ER~[шPs1\zLDgSS[Oup6(@1RsP1 ?=E؜neM6N5w<3dq^cF)UI2M F~q -1йmدNIB}fȷ/ZMYE(Y֋'Ჹ -T;UF7<{LN-^(U'UAf0GivO0P$ 4Z@/.}L dlI/_f>k[WSʪ1<" ̣U3 lP.+\Bl{ɂH%չ'%@-ƺRS覟yNuE|v^+ZRkڜ[ȈRԶ0ZH: -wFe@g`!$ pepdw,,# ov>ժI83!/ J?|i$d_(/;b49%Xealwv_̹@drp.l䧏<ɁJt~M[y 3[{ -endstream -endobj -2222 0 obj -<< -/Length1 1756 -/Length2 19614 -/Length3 0 -/Length 21370 ->> -stream -%!PS-AdobeFont-1.0: LMRoman10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 806 194 0 +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSY10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMRoman10-Regular known{/LMRoman10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /VKSUEJ+CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMRoman10-Regular)readonly def -/FamilyName(LMRoman10)readonly def -/Weight(Normal)readonly def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def /isFixedPitch false def -/ItalicAngle 0 def -/UnderlinePosition -146 def -/UnderlineThickness 40 def -end readonly def -/FontName /NCCVYE+LMRoman10-Regular def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 91 /bracketleft put -dup 93 /bracketright put -dup 61 /equal put -dup 40 /parenleft put -dup 41 /parenright put -dup 43 /plus put +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 66 /B put +dup 72 /H put +dup 73 /I put +dup 32 /arrowleft put +dup 33 /arrowright put +dup 3 /asteriskmath put +dup 106 /bar put +dup 107 /bardbl put +dup 102 /braceleft put +dup 103 /braceright put +dup 50 /element put +dup 21 /greaterequal put +dup 20 /lessequal put +dup 0 /minus put +dup 54 /negationslash put +dup 112 /radical put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-430 -290 1417 1127}readonly def currentdict end currentfile eexec -oc;j~EЪ%9.>XJٚмD"e?&oLH:]~nX%l޹dQ@a~M~EA˟V.UM؀")JY4қ UC92"\ܡw1rlxнtaA*`Jp?(:E(qU[s $gG '\ -wMsuIC'93|Y@TۂEk$:mGzRg?x= w;*E JM8͛,uZmY -`n.ˣ/J -E: BO/g^Mj9Z6F脨0 BKBՈ[GOrEY86nXՔ*wFot8CF :g6}dPk]!$3h+ۆ^];JR*-uC4⚈u6Lj=!;͐`,7TZXV]w)ߧɍ)%NL߱VيӒI|5sBMedO&Ng$q&Y©Au(@HVqQy?>&_@GKf0Z E\$3eL -:G(, f[M]ln uE~0Rt^S PjwWv6! -1nC22O՜QS tynG - }=_nW?^‚2I=>]L-ͬIq^ ͘ EM -,|K93QbָZ׹pu P۫%Fj`(m->ĸtGTf -b0UAx>|z40 -BCGҡ %"nH#ܕ diKsxc"Hc A2sk6.ab?CGZրݣ~cc>Uڔ!U ؏ Zlp;@6CўO.aވR&UtA_Kfq -(C$gU^/"z Rkf ¦vPGyQ}i0}*+z>n y!2X{Z60ŬW ZxV*2'Pԧxh}C}B.Ȏp&j׷dq'g0!gz$ͅA\/=ǏjUEBm/Ġy]"Q5Q._x(]nR{jF.6S0&MP!>>ǒܡQA&%_͡ ~ei6SܯI_1p$$~<-./pY7jUcdMTj)9Z[a -IjQЖ@1t26he>}[Efag~g$P81lÑ_h8*5C, UwF`eͿ;;1"c%|PPh\CMN Qn1:.«h+Uew56eK0k(@sQ-rD%}zzR7u̝Kf 1(ƾH^P( B'vhufg!ᱛ >ԝg㦉ZLyMS({CE];&mP4}:FkR{"K ;\c/[pU)6)gs -. -wʘXԼ68|%;x_jAw(dBsь>~>b a5s8ݯ>ןq !/jWKpDz¥N=0C72K0r|]*Lx\Ҩ -G:c{7&L3PDf$FVe=X`5 :cZ+2a ].D`Kk^%IhMH/F? A]bu\k)T@,Ød[ϿB, Hh^ۯI*qjTqbx`J@̤HI{ۣ;qO]Te7xwyiCoQ. =eX2)m 9 odBa%\ٸ *sr7zE;~P ѽ L%*DC̯VpdmoPB69OsER"($@A.6'y[)GG`ٚq!fG(OZE2u[\-Xu[]ąe[@$@zJ&U, ͸ -۫+| +F -6dn[E-xԻR,*[cPLC 6'绵~8q!.:kSkn98@?-TtBԬƍE!3`yl& WAv88 -W24CqMAa·qqYqf잞bۘDŽ5(Z$hߦm,ŷ,]xN84tG= Xvgkgc qdf%M SGPm,,L Av9l1H`C!T!2Rō9QNIuV;D\GChtAeS6 [2V$&=ӳ%],2J o5@|JK6!CL&dxXB8p9j4 [هGtb./_9":Nx V)$եtV54jCYȭU-i73)IF27sx:qdAٺXHzlaV/üD84&MgV1R<8 ?b 6[Z$R vT-|0V|?D7F<Ǽi;zH8c,oH_K" oo%&TT{ݱߎZ\=`:zX QDWn®*RyʣW^kD!&p`|O*W^kWn\a^0Azk@Ú66zOˢ^cb-!zp$'heW}?'ˏYp2xtD;9\w{d\w*Vҕ1 }FT/osGS yIzxPOZMA'FڷjfzM`7U*0@WBX3ʍoʕ:c6RE!Pܝ^Fθej]Ӭ!m=ܡP:4ZIqvknZU˚]P$T%.38`1!MxR =N#xPt#&Tt+i~u$zY(=Ϗ>TqZȄ;[}pa~ [ps!c y;.e\Nh]"XR񀋑3+w^Y$àaa{cFSu1\,*FD6,eY VO~<޹50޴ScYNrtE{a,Ż:4 W \eXݿ+Wi6 :ŊߣԖt \1O|峔h<"eu "k(F 9??'yxIxCf&,f0Gã^l5\_|*m 4Id3$)fΦeždA9Vt!- /EJ}d[y{H/8qbpw?jYި+?=ވF#N:znmy.!ևA6q#,nc+o -rCR` -"hZSCf'փ|OJѢ4qmպă0׹ kFϛ$yöTJA$碬eL||gB|{$WC^UG!ÚZ/ejΉj$,:Ck)8SJc zUMNTf{KS?O~ݡ8RR}͏@\aI:^lykH@".,yɉʩo!TiSPz8C3F.Jt ^ 3xv% n`= 7"^>hC2)+qLvW -gZ٭㦨̰B$@vɅ&vP2ot8~v8͞cd_MN.lvS(ﻺtW:Hc'l[)U4ҵ G[^@^r\L:)zpjm4nxѢT%YYCOĤșbܤ!Ic=!Ā?3ZuvDI6!uܶ M?b5zp$EEm{<燑 ˿摪o.'W@/|aut )muP#4ѹ2P|Z9#^.p40A5&j|$mG.1`8Z@$9H!Ri6'҉G1tnkna$Nb}*@[ÓxB#S.L?'ҤS`vzַ#df0̋Kǯc%<d!l:XKW0mV)-L%kRYMX ٜ|,y.B8ꄉp׊*ܾ?G.Q{Q&;¿ '!} o/܈D-;)+lʔڠlT${ыzOŔaNxR+G^$:ۿчj}`˦zRa0 ȗrmFbP4'#'0 ߡ>:!C穤qG Pj]6yROF˩XmGU߭tKuG\Q8䫩:(vIe41=9)`șx|`Zx0ϾH&q *@p  7 YyB͹xݿq߰`H»pHjX D׵`1E+y88#R}Ŗ ~Lȅ"*nD7 \BUIӼH0L.G )Ee(ydgQ2=\b8Z .x竫7%M}կjWvD dG|D[mh|xgj棻RLO+Ho%ZF&'`}5+Dbm6i>^W5tɌmbeD{M/ec@MH{q8BBr5)ٱģ Yq]$&eT31EhV+/Y(X~E><&ry|kVq6җ u0P}gX.H.{al[Nf40w kihx'_3b'QJCza?]$!:<il웭xeٵ\K'{.?>yK>鯊\ -4~9f+ cU$dMejϢjS]6!W#u:$ Nԕ\Z?o[oA{=$v>ÅN.ȿߍ<. խ\ -cVO& @uK\ߕfA[,fp֟J~J%eyTZBn ly4D"#a;=\dQPsJo]yHNLe(3Fsz, KznjpS뗴(^8.ox6FW T^|ܦB天JS< -YXuxϗ,#8 -4~FJ |Y&Ѱl iBE`#7ybB OOyeV;'%N6HDPB`pq?QqL\-{F;:=3*w֐;ZRE &*TUrM**=`DMYX'N@qx?E*ԛ]yʃ?vөވB7XmԚ)Ut Wt~Nb]LϪd!S2 -ld ȭI3:ORB>EVp;'vnN>6K\q_4ٻNUMړl%[._1ؘ%Ҭ4HjwyevhDjc0]8uɯ`b9M&} :~z鮕{#ɣy,ZQI>`>D 6.VSo0r:xk|4΢GY -]wcީu]kvVW[=Otw*"$;w{pK逖#㣏55RҼږ[&>6 F#_ -Ԟ{b=i7fއ5zԘӤ- y#tbci40-Ώ^THYm}%xͺh0A:]T9[Xe7JTMvIB:w؉5J@7 `pup&9ad S( -b1%,hh2zQ+$2%l@izɚϓg%sA8M)= A8T:XJ+;G5to D+w)u;C`~L%mbG T\J~7atꩠ@ϕyqe~-n?%üt*7b{e(zaX ,[mY!d ]7ڵiG^QvĽ@Z:3&*@~n1z A2>Gԑblq⶜ʫӧvvImjoX6%Ʀw}]>6_'V,5ߨyOTT-brq&6ǐ]&3N&`<vӼXG M}Bg"Mu|QDƒd.Eb=D$h&0k))Pwd:6p -J.>rWri8(P||nnJ mTpBGLfJNUB-yɘJՙY~_Уf slE'1SC:TF RW :pys͜Z[Y @==g~6RaW*Z@[nidɲ(D_Uv<a$]1f I੔L qD ˄FߋПśGBt+( -I-_>xb!H޿9M`챓O:%Ig8:!zPQK~If rq5It{⇓DJHSuNf.>Sv.P6)*COFsNc| ɑqji{t΁qY0dbY3BY%P"?6 -}FrĘO-ePzA;,d-$Kw2j -eX\kE*2(P_?f Y=}LOUQßG] JwP5zBu9C$9<3suҪ-K榖ԢIv#Erq (Yܽ6^!b4.U1}`Hͨ=:CyICܐݠoX۹r"CP]rvw2+62-(1Y(_2Qi:m\5p= YU&xZ^PQ$ETdS=PۆL|Wk酬xaW|eVSlaU| 4ʒT~Bxlb4ۆ%+K,aY3$rPq/U2&p, Pz`IM N="(wqmBHfj +hMA`+zxm0% hRZ֡4A֠H0`Bb=,2=pdM.l0/mƉs ?lX_5aXX bijMqJWg`Ko/[=̳q}bG`M^ogLx~!qWS7r(Ro= -((F5|l.2@gP#')㓗YNSaK7W}&g -9i%Ō5"r2aK GI .Z󆛾!cly^ȹp( >b ´7)uv5j*΃n*RPvZKI@.wh!9>xqߊxa.]?a}3\W2hYKO$AU@VdXV?تI)4^NŪfpq+s&s}61{HNC1&=~aZ$?1]wOzR?~ fX"2O/ɕѠ;Ȅ>0;n`!Z?g.hQTi'Y.!O$8,t,~B(T=_5_$뉩9k*hosQ?1aLZ:9C N+S8VWWE^H;&R^oJssnZxemq-|2j%ANݯgU$QChk5-ʿRlmgǡýߔM.H -~a 91/#MMSL_A0It_P?+4lĦ:ΊE83$O<3/LJ:ukY'? -gȫ ˻)Q2(|?#t+G>;0O0N ]It8C 5ۢKtA8|C?2ఇIDL98Ta-\~E><&ry|kVqגzkΡ73{0rċv -̆1݃ԑ,oZѨ!A*}j|9 - /_LzF? Ɣ..Z -O1PZӌ$|!}LPIZ80vA -T.rdH*% )IZcqC-):A$Yłgn6gaXOr)Ra,t{@S j"ZEUY g7ѳ鐒lkv9K5pu# .>DrnԬ[{lOT -hη¿ -d}bJDZ.~X] -OígA'XMtRh1QJ"(#T1zag}x3kt1Hu5bTRP7Uܿ̄밫g+ZN䀣}˿awi#a˓@x^ -!ybTݤR<(" "kk5tf6H*6N2n4|Ape+MVvEM/1cJ6taS74"`~8S^ۦrF5Zd,)BN;SA࡛rt"@7ZREf}|ʕ9 j G^$Eg&QQ CaLs1[r {.5ƉTs! >l:,j$ʹpBj[66࢓J 7 4Kn:Ԡ:E[G:;㸅ڇ3RrCXɸfVȹ"PA:U4:70^sңBQDE2vޚobP%s82qdoTO U -J_ +yIaٱ fvFw~p!@i`هC' -_ybEs8ɯY Vn/`>V$\~]$X=K>.!)|RbW؞`d8N.:ȟ-" 1^?;Q8WbII@ C\I=J -NB&&^Q"LW 7:Q/lVlzgR!ƈ)07L&Tp-}4<6P9#G+ P!nH_FJ ->dcM s x!3ma SjZO!uAF, CS@#ZZ"1&@Nߐu|W;r .>_2ƝAwV *2qRٹn*h$29t-`As$ƨ>^tƚ:)+K>3%+븝ƸPK y/h B: @[$~j{:e Em~@ȓBE L֥Ɵ[`Rp.,QKgj.޶'ц}zyS~Břd4(5da<̓ʒ3PL'E5Wդ[qH1EjU[&c~98U: 5b5-c NW@$#ZTeBE;88YԠRJx7&4 "n@J6h![%컿}^G}G* ]e_d#ܰ3QQw (z3-?=I+or^9&̯N ʪE҈:0t8Cx:1/fO᧰ezjꮕR)Ś]U S$}zȣoLH5a{AɏQnZ1JOǨ"Ag^NUotӕйD*  TJ_&0Jܢ1Ԃ L d=ws$_q1NWr neGKu1Бȯ\@"/F7|>R534Atg 5&v|Q@3z s9\nyvnjD_vj`Fus9I@JC]? 8<^Af];ь[LÀb*JA.\\=PPxesQ03 xc1p9#Φz4%A. %O -Ihke!yZi6BT%=N[O?\鸏m;:z{':`eϽg|gu|/47\A ɝe~)٘ȂUR!QQ`[yH|0*?:y/4ũJ(|5^O,MoU]mc=UBL^FР: -)#>ރ 1֔uω'nNU]%+?ov EP0BkCUDv%} l (mX"DH'Gs p'@;m҅2\ S7?.9R^ueZ&Dsbƭ1Kϼ0 -ڀ3nқ1] g݂ѡҗї>a%^ӌvZ%3\7!o{%Ux.b 8P=?U7DtԾrqNЍC,{3Jr꣬ q㭝pS:qY ᓂ̐%od s{oHބzȥbH\$ |9}RC|nB -3CDa 4ѓ1wڊv{XoBjqߨ|>Ax$9Dj4ulSPG0\@QM}멛b-%S˞GJ|wKQɴz62j[K]mն>wY& '- 58ZI .6 }l1T$_U\a(lģs IN*w*TcҬ$5f]َ&`lzKMP J;im%צ U6V!}uNbΣq|Р4*qLJMIt oj^2 6%K::l'O= FN?)z,>St:6%M`w*ʀ #Fo+_Į6IPGգ|ƙL# -UeHM ;pn[Qt H(RYjF@ZKnK)K%ki'"$ 4wc~cɪA-T-ݾI?fg$+fDS6ؓCQR66V~A_9&Ȉi5|dVo+Ydo97$!_S_鑒WLwE)uL(~t3 ſH601e)f{+y{T*m?Sa% R/Ź[6;%Z\٬ceqе$o}1gܤ~n+5-uBl<_YbXjr3FL0F*)WPg QeoرlHoI_B`m]z c,nz;E;\i>0$j5g$^.Hc =`h)e$bE<]`Q&ScWV` [u(lJ;wƏDL,i+G]1 )ߞ 0{ g$*'|gcjN 7;%ߴd=4{cgzl''H3LY,k$ 1~ԅjOf;`|^1j*=ݕi_$nHͽ%us1X85^R6>mIerE < @'[}祏I/4>(Ԅ:o+LK 9'Qܬ$b0ff4{lSGˆZodG9Jᚤy2Њw=Lw|Gq| +oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHtEB-gedog7Q`[['W73sZ9 m !tAY!$tY\r[uTIUiBy[Ȝŗ3Kï6zJ!˒Js&B5C"m&`7Ӣƻ3ugNC O~̶uo5=_T/ h,$B%dʘ3l MoYLڶ~3^`12]=l8B6PlpfW< %PIN!ju#,.iXnȼ‡o$ҁXꑷI5V*E6tKo_)RPG;Z@9"V3TTLN Y:Akڬ6̠==80~DQ Q^br/2^KZh`N'Jt4iBYҁ7ޟBU_~\fXAZl_ZƎý'xHbG:"l5CU[aLrf 1[;4p^NpqBD '؅93M&9{ VD 8 aе2n.hf +l?K[$Gp/JzcF8vP3/XO6yAo~]WqDMY4ߧY̢XPEL2_2 oH{ +1x'u|o WNRE홹&lF\LRh1Fb}+l C] (vfo+fM}l?c*ވ"^R]miKOҎ!I ӲR_tW;u@(#t*̧ U{|Q}a3Fl8xtHWA­;!V CVov?³;=>,㧫\"RvRCإQDh +@_,˜kbflAIP^wٚdIHzk(c3xɁSUPIf{KΩs Y/v[L%O@HdjyTõVmqgC9zTC/t~Řo*9rIojUKxj. ,+b1ֲ IlDLQZ3P-no'$F zg!Ј*oj-Nͥͭo8KwQgݍp*1^.֊ LV~m la ]%."`_QipŎs5y.Xͮ)Td1Kk̊jn0zGqaWQ%zJX3tIy0ľ.#[#D#EԂppF*ޘvrOdn7n f9*X:>Ǽ:*Lf͍9&aj;+{0 )AgðK*XKV'zZA) n TÙLJ^Di[:s<ܸ2!U|#5VfUqP}|=G5O|Ps9}* ++gpA,,=|j25Cɂ7 ./Fɹ0tRẊ."we hPempJo@▁_A3QBV~$9Ej= +]? {w_53Fgӿ4BAq41Pf ,Sş6r[v` xG$.} ̔ϾF͙c=f!*˽./wĉR8(@ًz c@N&Imݣ>X!me@lW"VCH8kՑŨj]n3X>Jz?D=Nbn {qbY(>"8*苾ky3o H Dw] d{EʥËw.$Vhtzk$kk$]4cfCW@3plQQ晉b/pTqF8_AnQmK{&z;<տm[i7뜣'*qXTnt<Ռk/?2m)fy#(`%{!Q/0&sxfB+rE[tgOKQ$$=ל?d@3c)]3%*M}H饞;Cdrp1jFcstG'C\p))_)( MM + qv&C3NLZswTPu{sϰP+-UFUP"KΆ+Ye7?0(idL;gk9(YI-l`;`AH:YHb1H{wR^Yњ, +$FԖHDV?pyїP%F=BGKPh~N[I_ꈀCTzf <Ӗ`4|mE1J'$`}R \N2kfaouJ73vKW{M3?׏M]:W;vX;B X.PI;?!T . sU]䮃=X 5rMt>y=*bC~^ tArl'Ŧ\؟L냡P&7ttuGz;Kg4э;u)";SvC~?J/F"6U.0>+KQӄ0"ӫ=sxoJ]ת!w6O.}t5V˩+7Us֩yēTC5GrgU5$&|~G8 Mv(jt Ϣn]]QWOؑm. R[ИoNng IF:?tؐSUOcj2Cm[O7>kWkX' #t'Xd9+E7Nd8{]m/ ׎dvYYwop!EP7F?ojP9"gBP;B^QO3*B 3un$I_Oe` +$`}-9Q/ĥMe?Ұh]b _2<͖+tª[ϜJO@%MI tv\/bMVF05+kI2W9>f} Ķ3tj|" +[LhY)o57k#%H\,x|ssxH͆|;` v%گT[c]e"GUj߫ytvx:udQuZy_Td"b+O]lx'6w6XCDKOf(g@w]fV[~1F^A3v Ovү2v +zT0b#[zyϒ$e1k5dRA`(Ņ@{=yW>>y@U;=H;c{30ü^ծ)ՙ-{OO2R´xQwBgБS"תlbz;Iy\EprkM @@e&3lʉtS%)/pR"2u +Ee5+ٰsZ'bQSlj zvހ~%.Kz\NE,eV2=Mo)-JcV:U2Ѹ>1ȓ"QWOё4*Oz.cjcY&=7Y,A5nIF/?̊ ]as.N/CջtHG50x}eb9S&0rJHN\?^4'bɻ':K`wpcT!_ H݊{}HmZto7ʫߑQǷbi>ܜZOddFտcc +$" |hJQvB'\%63J)Ag+TʍrnLON@EzHr$d(|*ztiF Ո&{5rT[)C =tGeȾJ!De:1 4*rkdT^\(^卷|auj˕NזG߲ h$ ǙOpH.'H "&+t +d[ZϗE1Ékt/Ȕ7\xY +h^IJvh>\/?1X ǽnyWl.AkaiY4!@.SEg_;b$; tOEN,@}ˀg~Ռ f,tyyVc) vM/"{i ~?pշuCM D=ϵ0펐sίS΄V"'B &!U,)8RޒJRD0],Ҷ!?y)F 6.svW:iAaQ$gp$~PKx 8IJcxȐ6¯MHkbT':X I(t#+dԶdSTOhìtR<%(^0.9uUo4jѾ9fy)eYgSơ#K)AkW21#E~웗"@q3|aT =iPi~!z I&;Xԏeeg8:KDK[h$)Zd7ϒmQF*Tՙ> -stream -%!PS-AdobeFont-1.0: LMMono10-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 20845 +>> +stream +%!PS-AdobeFont-1.0: CMTT10 003.002 +%%Title: CMTT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono10-Regular known{/LMMono10-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup +/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /XIQVGP+CMTT10 def +/FontBBox {-4 -233 537 696 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Regular)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /XKYJEW+LMMono10-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put @@ -32000,7 +33433,6 @@ dup 58 /colon put dup 44 /comma put dup 100 /d put dup 101 /e put -dup 56 /eight put dup 61 /equal put dup 102 /f put dup 52 /four put @@ -32023,7 +33455,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 39 /quotesingle put +dup 13 /quotesingle put dup 114 /r put dup 115 /s put dup 54 /six put @@ -32040,185 +33472,123 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -316 731 1016}readonly def currentdict end currentfile eexec -oc;j~EЪ%9.>XJٚмD"e?&oLH:]~nX%l޹dQ@a~M~EA˟V.UM؀")JY4қ UC92"\ܡw1rlxнtaA*`JpZ+TX{ԉZ4 -3<@Rb[silk`Lخ_/{S&QR`SZC^鶃?\j!m,jk3\<5](R_4Qj|64CAt71[C-#׀ȗ(PNGFa|spam6&b 4NaaמY.͐! ->\rnM0/T*fvXA္-wrO -Bg(JCIeP9zgV"zow$1=VXqmXNkMv!:P3wV?Zd dCB߻1sVArXUɫl݈>>;F4ǤMY]W &R`92.:BB:?҉s%D7Κթv(O+}8<:Uyky -eJ&^V-/gvDgPg ,A*-7pS+zZxU)\ADf}مe_d#="RXLvL3Bj@=$edKpwwF b|3 e\`Rt?!dkb;^m;pZt~ Uhm4]M1OS n$zIΌ5 6ȤZ -Jo4!"Ĉk:=*R~z ٷBp`,6`CƻjӼdAw/'NŬW#?"b-DHԭK}V^MtOe/  y_4s z\gPn@݁wwy7u Qڕ6 W.C*I;%EE|o$Aѡ6x -_ihA%fGmTaY\8X!f=;b'D %q-y<4gY>켙qZsr뇙R{MWJ@t$䎎{~>.KsM\Z p5B_:Yg`̌ ҫqă.S+F  B ,דcYhwR>O,+fK}|Р4*1:/ -ԝsI,P> +p1#!' 4wP91HGPA,;G' ŠN\T421G9f&K/}#XFDĖqDIAY%A[OuDTDh۰dL|*SSv\xt-PV3*5#T+VVqϮ>cוЙ2h kcK@̫aH0:핤>Ò -RS.+sz%^dsOn?YSynZ!_^)LB[TPxtD;9\w{d\z(fD>lSW "+loƛ|MD}DZ -x͚;ngK4"3=nӴ~fz6?&݃Z,XB%Zmܕ2䨉 ss[`:OSOb_WA7⚕vkɀw<@;|I(Pd!*V?ho0Wy.&-q~G2&KmShJ~ܵxMmmi|\'] A׿ц؊}) $2`%䖬T QԾ h -_NdP!ɥ*G9f4y+3Nb|K 1zhxyVӋ:Y,P#ge׳ ' 6E6) -;usW`v'oaVM DڂxLȃf s'3hjXbK|Ф5bV8^{5{.z%q;LX<uZ1AHœh&5\]{$+-2d`&9.Ͼ /f=B UmպJCεĽRxE% oMsHMofPYkzPAz}ԭ}|EtQW]=1C/]L1 Pbn?UAه nҎ&GmlI,ĨS}ۄA75b˗a5aR2DӼP྄CXz8R lTjI}!'83J -1]H$ -lĈz`Dy;mW/ZPf_wm/S7@?*ə,# [q j徛oL1@rW.Scj5/o8cĐ(k/ݶPYM9cfE*`Ȼ62* -Vckb8xf RZ1A' .ͳ~-KO\i֜[;.@⯂Y'U7.uWYu?KWwkĞa* ՛p e`G~iJ |n_GΜ>sn5iY29c$dL. ps1}yll'c&WLU -L/9Acex!tH݉ cֵpeW1Jm=6bPePW[.~0`&l y\Is5=(J)rJU/n!4-g5 o._Kh.3⦞YuLu5}No;L@{=x0 ZLPdJ$+B2weU`+Aw3O.WHtϋǖCAvG &Ò"2m󠳾unqٻZf73ұS[=*9qlL̢ ӤbIGܩ~(~69Б/дq 3y~t[$+4 N )(C,YÆ>xY֌ ~b¾]H/VCZ57nVGk4O|[}@u6[ւ`ToRu.͍~v)-*TFa ,\)mg?v4:2ϯpCxL_)3]ƒ&Y-c} ĥ+f3ɨʴvcU*A[6l8f_K7fA@Ǎ=ĔE -@<@bmnV<%s,fa:7:Bpxot0(IZEmˌ8Ok&/n|/60>_"M-Zmy -eC,]OFŭ0?ߴX;-텴fLR ڻDR9L{eO7 -Eޕ$$/(4GcfM}&ZN֥+;{%.Iv_7|Q9*"DU =ݼ0)kLVbcֵpeW1Jm=6g!C z ͑".f By+kzK+׊,(PL ?F{3sF'Ŵ%실Y U\.K2H{f,v|]ߓlcdx'o,<ɍB>?:-,y: -%-7#ܦ-v;x4LkMɺ2=_Nu3is[6S -o si?N& .O% 4E44U 1 j<H6!.)b-ҷ&yЄqkFGJcoڹc!1OR+M;nD%ъloAG/7DP~&cfՁafUaHZ*ЮMfDLa%$VU8Ά͛2V8dT ({Ė֪*/ĕ|z,-Pp:R=o;i0>#vN]d *JZPF_XZ˲{v`i5RdXoLjyf--/x^ iBE`#7ybyua3Xb&ځ']Y`;5cf8oSu73qt\ػsM- WՁ CU5<6  _p8D E?t VH_mH/"t{d>\4ZO(?qtX>14FO^mD.}X -` -#\QZOh9S u /QuK>\X|aXF6n1MinUg*ڧ,69xX' wTw:/Ko .s+t:w\ >YsS-ٯ@xbl| DgCpqԅvibuƐ yǕǣ nPӋv;6ʪ##Yb(R8=JУ4.fxCjiudZh@'VA)ҞDGD塡\v@kcWdQDI6ydig>uw 1[ 9׶bRt IJ! 슎OX0Vy,Gս4R*7MwCut5_ JY) -;U/h{( { -v6^m{,qN7vaۊiALnܽuTZs.'mz݄37[Ul -_t?ĝv7JJH,<#ZY{9𤻔Bn]'5҄DD H+$iU*@@UԛM@%ۦ|1b?9j!NM-*SE50O]}_TJGV-mFCto(|o:XD.̗p&(#MM $! ea:2"LH"щn>-A+p:YW -iYTGTUb~]An#Gl\9j/*oEx'c[m\fфpL4:É%C“z2|g:ڷ6)X M[OCABiz>(Q{ HR3T(!c֥j;Nŧ&6itސWpM5W8*ٗ!V7m!pm&%+ʗ ±*wz.{K⨚-ҿƳJܳp(<1ak*w0lT1H.HͺァQZވֹO:([ RPo卝w 埭QZL &Mkd7w TyHVfyrp#uh<]HYHRWc1{W[vJOn/7=i1+B(%89--F0Cw!!g+W(,ria,F=')|AsGkBV_uFe_!4bUFhxT}8ߧr$7HRDq5BDf-s6]aUy*dRwv>bx74:a7|_]pEe,q2qq:i9/UbbXBq4cQYq><ː^3꿱V܅DA\0dbY3BFmiII!~7AumPy}>fv=Yu(r`x\:P]O,A^N8U[%{>[JVL>7ZW,YB:$1?38p6k]:; @}ƻyneM6N5w<3dq^cF,=1^gouuSJ07bGV -,`1 s -$񾫟`,@+4mDJ̄^_VGov'⾧uKL9ot.Cx!~QjDѴWɝbLXljҸ;RvFVœɃ,iȝðU&˙!1eqc -2֒d8: #mrُ u1kHe,aH\&af8&HQkWk3nWy9@~y{!o$A߁d>"$ˍ<2J+R(ػ'w{H)a,w9e֨!,`)BF8k;e tz4,M6@:6#86Q;? ucM%{vᩮЁՍ2WBK׻2vF4'ͰoccIB5>"ޡ( [0M2;'H6dê:*0CUDlu]p^+޲̿nVjTKrlC}=/3 +S]uk#rZ_!.r]icB{y!J8>fʈ(ͨ,XF~2*fL~os Ȭja`zg ٖ&?"l_}j^Eq#l^%(U35s)u-ZR7G҅󄋹/1dİFe $ ^ZR pz+.1oֵ%XД(l KmbWjV!۳V"1D}`F`rqTgVn()wC1%iU=ʄg% ڗ]ia-X'm|{hﴼss63'DRv0s>Q$ͿsEu#!@^ճ1 0Gr}5 ŇduKwMޯ4ds @׳ѢzgjMőGqقlCWqq##$UMw;'|(HWB*.=f9o 4?].Z7ltB¹<Ũ0sY[(hwjeU+Jq]\Wϑ/w`uMΣ4&rVr ldL:Q"$ˀ#50SӒAgi[/S=9:Qր!ɂTZePs_@6y_̻{P"Fe&d| TzXw͏cnv$DήfG2kc7NaprŦ6`69ՙ.:&td? ~#ŝ,V}d^ъEg4p9xAStW[*Vy~W ո(,i JF9vYoOSB`Yj&uK [v>*p- $rɅwm`\(`xU6$ Ywpd7o3AЙbdrIxcb&4Y{+#Ag=5畢!.m,teܝߗһw@PsЀߊxb@3qG{:rŀ!3h H ";A(EIs(-r^˯{8"\<5IU (B* bw T~d=f]r]!1!cFn(Tww}b̔΀OiFpVZCftڤNx(QӮwȁA~/.FkQNIkpMi((U 0`V94 FV&~DK -vm 3M[2Np1,) 2sRL2x/Ű+pW6a+2Glò!zer/ t LVJz>bxEx[޻㨬4lK&CddL_ۢʪN&BU7?J[/ Pt5AS:\5<Lhr£pi'ģ 3N|vok+%ðlyq謇5(z2j7̓UPY0T[co&kѲ=pci 1Ƃ٣Y*o6a ȷ0$}4]Q=";s{~-zQJ"og pX+1s2TPnTC3I1(+半X$r"ər¸[`>:9XQ6mmY+{2rxEq04-GǑ|q鍛x.HD꙳DY翂Y6nw_+߯pW ŲyJkbɻ'<>rc6flAV%cUݜ!g8IahPwP>Qaեhx -H 'r]=ZZkÙ^%ٍs."y%®vCkx -95]!JYe[B7pד@=pL3\A| 3T%'?=naGpGD"F'@Vj!ρ;?he|(D.MT &JD1Ch+-kcAgnoOb+Je;HL߇ǘt`'49lEzAdS|fGzI>cݜ[.@R.D θe M.Z'HRE0 [s -eϖH!/":-K C`dӪ⒎D=oipON;7q v'g#1'E(pqx;ߧ{tZ x[~e˯$+N1*GYG~6r߲;(D1XkEL0c&ydՌDT2"̞C9.K^:gGH3O%S3y+K8]πГ]m,=-0v}VYn7} hK..٢HV\E0 -Qaz"6P]6Ua-5f~r[- P^3[. jyXeTc9lNqC˜翴r晪?+xk*1pߏ." U 0o+ 3WX}g+r{Y}Z;ll-Xqs>I \ތ23…`XufI"czqa-ך2?HW;).bLmS#?ͺ~w~e|㐤8gnc!Pnscur? b]t(nAIhRiDL^wA|5+: +ŧ"(ۉEsr!ՠ -)}ff*o]y:CLvR|jՀ@F8DU?QfP >EoʝUxcDP?8Ki6nC:S #oP$~Iػ~EgdL)p+mƩ85/BD2+`SWy`+; Ï]P~yQqQfH)Hxxmu,],CLݻU>nOdvIZ合ht#r8*.W/fBCݏo@4ƶRN_pI;r_8Rh>gϜW^pºLU{VLJm^zC͑{~\Iy&s>kr&U$8˞FD9y4ak:by "+V~'7{y.)j%Un5dO\m4VrZKUqA?)0%lR$"dbc4/ӊ Nv#*irv]UID!!10>J\ݕiw}9 WR=}}Ey 횦)'Oxw.n8nyBI)*"&D_Tlu!L1ȹȠrk}"=c"%B6nˁܒolY,-2{dpZhd=cGU.i( |t.`!מLnSَf磨섹Z&4œ(+xҿh/7KUƨQi~m7Ԏi>5NT9$x]"Fm[U#`&Ž@C3ZB'ŌDSXpfc.™CQRo1KƄ!VCK*'Cv6i_HY=$ԫff3H8ĄN;Ĉ}Olup_"r}+TM0N{%9A]_F|2n3$&1ù|9fuew}ѱg} -z7W|}ZO|4?n+QT|wU9򜼄=~S +~X r1E'ͦ"ˆonX%uU Xg~ǯSODG5zSX5Al0H534's+)boC(s -S"ֽri3O`'M^TL/rYկ gGP, ih^o SWH߇ ti7l~$"eLP|fGTpi0޸"˪Zx L/8CnZKHcI #_Wy;liqHQږrCqw7s*/~~2R__L,@(qؚ031b*vYdbl},%oNO6IXY{#) uhu=:TiV>tnq%DY.O_(reb@7"8ӛ`_%*F{𕽙Yڵr<0i( 5ݿ9ňPIʴы/γWbzuci*c!jj+ ʴ&4ڱg}.>枂<~K=.,2z.1!Nb_BH]>7wZؔ쇻LEyщ> vS">e(va߬GqLF*K(b,0%uNӱɈ|x֭8ϷlfeLRN6i96O@I)5#$,YY3%'z2tjF^MEYW_oƲZ,:|E~.rҒ bGAQ])r3jYjkCoQW 7>NMkHw Y\KٿL6QNCXۋ.K\nRLO-6 ɺ*!; prц؆`^9>QXQ|e,$/ g}&w%}\|ɘ6;Wu^vOj0SeǯC{^J6b!߈!<|%KT tTwt5²yVTg]Duyɳt={ŷ " 7ZK7MsAs2h[RuUaD0  -M_kL51%g Js?3,eS/Go\euGVh'eD$Ny -@mY\}):{ȑp3~X´ |5Ƶ{g6: -JMu^ J&ܚeUzı42mqN+A -u,i 9!:}SR2sF%P>رTNm=#q&+E w l swGjGtYuH|2˧'?#(I|4][ 7@Wz!1!T)V~!8uAHzK(?%ءB+^o'4 ?HN;t5j!u2a]ۭ ֢g7de)I[-Hj2w~d.P4᠁΃y20UD]dBc3A{ۮ_P2aS"GW 6  Y[xEv-72ȤoeVjB?M&%FrXxp'4qs7)yci@#q`|Mo>] 5 =\y-n4焁 qcVhʺ~6guzڑL -t.m,?.?3z[79e? 8,qsDsmwIѶA=l!*]VMY?#\/d+em{^1M؏seYaЫ1~*)GgB(2 8Gό1(aq7ݘjsDY)kåac/S7D#vC>aM}pj0|BcnN/ -o%]/ 늒r4H44{!XyOG\QZ*T: E31OodɾVvjN=>h!*2BCLůώyLyc RCKJ2~ڪ2qHmrUTbbGSKVOrC{"nNP҂%F @$ *˜gX:][\Jzt֢)涥+(*UNruÌanȅ;6느Sl7I!1Hr{Ah`~ԘֶRhr!pNJ[iouGwmM!nj\Dڰ&*IЙ`vb=7|3%CRqJI*!RjH -_F(߇O;ǹ -D;lB;qK֦u@_[V{Kpb2'I%s۝1!䤗{U$3uJGU34n+XaV4:MQ -qe@Z.)Gz3 閺̱VC #T][M\8Y /` 4Dya\/5:Tdͷi`CNBFK|uu.c&;L!Si -o!Ÿl0t[X 6ݴOSis& -N̲o^1[ O~q0$ݝeH7K#W]3A's2*~28UIR1ɩȩֿ=/L ^a?t{k(~=Ȼ!׏2đx&D+lGq -u]&LF>tԜ0a*2q, |CR;0̦Bi -} 8,ɒǔv8v kfRʫ6ZDΓ\15D«|e.:Kia*LK"h~ęmJ=eO6(x&$]9zyveA~).ڋ\xbuDHD ~ܽ{SE=ۑgB/! ijEP{dO@/G #\BVv^̴g#:.\!PV8 Bw_"D_ iv/0}ɤEA5?6R.^iGdY+Ή -l2wA+F!p묹w,1ہbf41`35 -?t"kebAt-N抐'哋/5Du ,8O/Գy6OEݞT¡%Ru{CHE?w옒;3{Ҋ%)c -|5`}*y=_y^@G6H IMLxM9Ens4|6"SKd:d>)2'd SDGWDM'ވ:(l<-e -rϱT7v%OSp? -fOu;gCӷ$]쫣SXCk&D[Htuիkj=< *i k:<%㜠T"Xo+ aռl:ۓݪ>گ,JmۛFtOW7|n;t54% 8Epdt*-@2 UM;5K _̤H4Gy8# -J?j:w_6Xb22uŠ(94mxy7H:"'?d[2Śb>%C# -yz87m2}+3zaĕ 5g3IguTԘӤ- y#tbci42ٙN2iqpE]#< + '?WZ`}0(7I収 >9,L=>֡jR'W{=c]cUnz;㸼z`N;t53 Dq'm[sVtm?PN%6;dl>yo gWuuK=dc|XəsWQן;/v^V3P {9*m+ڌ&iq!.D÷n0=*sDnA%\Ԣ𤞻 -سmᜏ,'liJzRW6M̅ʹ=;ho9Aib&%I:^+л\!OwQu7 qCKAɿnu_oWl)`UvLc4Y &~sO0KY~\))hFDF-"t{~G4$CK - 3Y돨} -BO15=HAϒX2Yrg2JWb+8ѓyL åb~'5gU?nZ]PBg+y%T[mh̉X[ -ʗ --#Z ֦XVǙIgmk`jܣ5Z⤜ ̵َc-y16Ikoyop)DZݭfH/X:3<]KA>QbY{wOU؄1#UAk @΢wz{ -IbY)IcgCK$Jv"2% .gm^:ҿ8pIѾˌYv?%fT-vUlsBs@{\=FsH#k -?Ieg*WY9>![@景7[EI"x#X^%QdKl{]Yvf T:ũYqoqn+ORN'ǰQWBw&@s'Y9i.DKg?8Jz-A+0 -Spy.+ӌo[+ /SǢT ܠWO"zfiVD#ZZTpsS Hzot̽HwrI(!M zmY={Lߊ7"1r1D[&%>``p`^R hW\[P)1s19dznL`GV*}utn.s ʿyT$ILz[$ }WHy᷐.  0s[j\9BxCD]r+Kt0f3ȩy=mH[(߲3/7{L#E#;AI`k9_C_X6N)aQ`XLxJ>؋1*wQKo㼒'I0nxQb )7c1dkG20,?71`Ë< -<k5]53R_ƬۮVxO9Jw{m8e 3; y{@[T=}w(aہ-?^ߛxyrfIJJBWҮM\S̡ʙR$ǁD[$X-mךlui`0ZaW_bSR-J&%y_!>JEa X%~Fz -Q -6V -)|z`I&^SƓwLIaG$N')̷Nn>p%=EMK+3$UJ}[dEjuL?|XÞ\z<>4pĕB J2Q/ %KanD>coEZ%hU.cT|vHv;=/)RXRNAϡgNgEFvٶB3b\5pB._'r|N|O3.bɺEQ H> -ktyN"SHOh}/9Ϙs ITP"~6--ΐLe)3j5ZW?F -wtW&T'TQ= 8ciT8jG=Nip@J-x<54kGd%PY&b(eȰ&4njO0Ӯ2@j `5eB|Not_jDJpRs֝.광QI!Öֲ:e}eR#sP/5]"]8 ^p )ifV6F5eܘ#ׯՃ6{LE\{|6){#$YWlHwH68cmTpZǥдuRWw.Q- K,́I[ -c\2dK*6Ţ2_= 9x@ %)MOL-ƛh&j52*aZAASe{lTLCb*Ӻn"vRXDR^mIt0;DKQ !h_oIprjcժ$E~ >YI!c60tzb(Xh+YWQ_ZxL\ {mU. s+P Me Ԣ6_^ f6V\q[= W=zvssrk,B:Wcòt0bLq&6#Έ^&rTMK_,:D ;И찭[GЄBaFۯ8e ιtV2e'+J$ԓ>LyPp:9"q"nګ|*X?SjNlM)`cL7.ͯ?Jl -.a31*.CoqW.{bޕrM cIq(%`.ADcyقBIg?ꃑd"9,dV*xUw{L$tǦJc ] -!V䠙j\yt4-2W-%Tfe!3Vq!?H6`ϟ \V'|QZ4?O3ͺ)yAbj8&tL\y[z-͠\r [>^E?X,^ܼt,K?ix`˙k #U"$cp@q B Nq0W?Rqsp'~Zhm"ً_ 5@M? .*ewzߙ PXwqD$>F*[eS C_OaͿޔWn$؞PSǺmSs״~SHiCf*rM0,5bk0purV'WfTn(YO,bX'dǗ;@!,-&%Y鞙K,ՋC^+ BJoe )>v'Uۇ%UAGhX?ov%L[-xZf3,jt\ SOck!`!c#{|\xT dA70t3bbYǬ!}ê׮US@vc>ܮI'$8ҝ)(5b1ƞm;(:EPź/3(< (_¬r5Y1ڸ &3nRkf8̖ĀEQg(f@޽]G.o -w]n8 'atKI}&Cp߫PT'2v@e -sh'@RU3X˫ΑshwFÔ:ڵF2[~Zu%[RL(fU~fC^r r-+:}:]W.fmQ -ZWT}nSv+VD0kG,ʂkwy` -h@4 p1f%BGYB{GO&` -?aXîgHrdWGlM2AF<*bP@ᩈ8އx37N Xu"?EzZ|qbuAXBT2A$C{эh*,bM^a h)2*M= -ǿY4^`Ƚ 6NlQy i9'֪A~H$!&":] . '13C)ӷX$$ύ~#g$+/Te1!0BJT\4+q B&% -z[a1kDNOƘc|#|{a}N>F6! k,|h;/L+yS,vjb߹B "b3I\s/@di|wЩt'A̷x,[K֖3Lqp#HՍRV{%LQM[LJYʋ5f;7 -"odIH -&d_$T&XA(R?//Y @·5#C'rWVȠhi~7ʗict>C!0MB1ep[j>QIFPBh,y;tEKr6#uKR Pӈ#_5#0.:Eb6 I9a\$&t.KpθKаj{ʍŀ< RQ.O/dzݓhN#ŋM$}y4@uMT"1wGjS~CstIZ #uA8r{g֚`LH7WOQNqZԭP·= ~%RL@ц;ttIPHjL #OoSw~3C Gcta tQR"0mMvdq3")c'{F\h(vOc^FI&PާX{jdCfڪuꉴ VB;jdr#?%r,2T)bS9N@ ]zpm{UȑAٯ 8ey[-e)"zDm~#?lvO7VTОh=|lMsDBkjt!9vVˀ̈KW]k}!-cѡ?-wt6*iSߡ|Ɉk-S[Zo@_Ӻ,O|Lim>:Vf$g¿t,{` ڔ1-unY^7RYMYĊo3Э.Xxť}}qؑe)KH_U#FyJXZs'c< ç0Ŧ/yGa`ê?Ϣ, -JZR+/2.jR -[dXsF:L:lL,j|'79˵3liRV0":=jGKR9'N$;ydЃ# - r`m\J3%bdQ0qrB$Z$ZykGq0m tQWuG -endstream -endobj -2226 0 obj -<< -/Length1 1761 -/Length2 18831 +oc;jAw-=%W)-{ru)rAE(@{빴Q|_R +ϤA -T@|q|VkJ%qu8PwGxŪ̆Q6K -U\%b"t-*xJ+ +}3{Z2zݬT2s$Z&{BJ{=מ0).|˿!:[LI0lr9G$}/X S`p*p+fwwFGO^ȇ r+dMvNy{YK[z[f +ܷBDq}M8|j${jpxxSƫEu +7%ɑ4\ 9b \)[FU.q4Z8KzwwylϦI5bjcZ,7ɪK:#@Jd@ѻFM_d#g+=>ZaWNH5Y/ .rpf{0D|6@;]/h|.RAɰKml^&W܀{mFՙ3FK~I7@T7AMOP.;ݐH+iX;}jYXEu5ǻpېBIᡊS 7pQ40cH4u[ wYÖ2[tʖڣ?hb*$ +dƥ`$ P :")|UƩfDtd§=5+j7%i@)шT/qUF1tEςҷݢ@ Ѣ1ãF^R?-¦q^!*1gw24/3@\7zaz1).ExY'Ȫ5Fc=nj2cw1 3bI]y: f֡ꋓfg%p^`('m K'K '>EPN,:M{S3G2R@6\?-^X'F.qhYlawNUpͧ`M9_Jgbw! ̼sāTҔDb:Wq!]iơw`褩'`h^ TTInHel䶢͒à`じ 'p(=Y1UѬ/OT +%`&{(K:.CiK9xH-vE4x_5叠ٺ,dl5'bbq,H. O8 NNnZGquDZMgd/.o~*ĽẾʿep˵ +1}oK({AsM`?  }|^ڧ(1vMXAj!Vk5=&Yiw|vCPezFލ`FJO!zơãE.)8At`+o z`!|a*dU ).tIhq*0q>NU 3ȏ7Ā9Ot[3|5r0p8ߕWqDLŽ{`dw|ׄ GJz/H'Z$MΤ8Z̈<7{LpV)%k3ToCn}4>ZrȰ{rUZ9EGu49>`oq/~x▏S|f9׬?X.uBxfGbE.wW;o, BLkkK{9fgg,l|&Ma*$v#ܶ>7Ucö'nNЙ1WƫV Nu+947yG( "zoO_|cZzB@ZAݾ@aexb?>"YTgBlٍ9UFJ?"[p] phU8Փz޾L?:K;W%X$؇:b9pF^dBJR(6[-T*4!yY`'M( MPA#fT"f"?eX&RE ]2L6 ?h)8&/Baf!0tM<ŋX0z1$6$}W<1ji76$4e L,vΡTuQo:=}E˨(S0.1) d#I;P]ɵR蕺I,"?bB8|GϞ\;H +nc2߯xX1!?:t#?%gSe[ze} h)D j-O6vzu@b ixc`r&r Iڹ_> 1SSdY$`)­:] R]FITkxjgbHd.(: +﫜.%pq>>^zx,{^c]r6oެtHTC O;q]8$yBoLr {=f$' F}*%*tdsCNzc5G~¸e 2d]bsz':aWA>4+ +5u=JTH8Yn{-t}PtJx8R.\{`u[%37\rnNJFk Oj+WesMV)JYV˛81d#JL1?M?"śbQᄍfcӟr ar4ד@dv5꺜5eDfR+c=PisX8mm;EL]H|S° #ȿl S6e!3BYTg}TTaΈfgX_+t12)A{ߨcװzP*Q˩SRd*lN؏bjɇwu_ŧ03_m=/Quf +'I N?qj) +ʎӲ+Ar⻩6&HДC9mr|7rG%:Jr<(gG^Ĵ~xP^KYYD˓"$?f7ښ}Xo3'+Te|7~x9Fʓ u +ih +9Nt9uicsJw +cZ|$C[ie ";3|AzFY4WSHʘJ᧞)~%b[O?;Rw߹E5?"W|;ծI6X'\dKs}2{QA)wJtXi3uR3Tq5b|~<27bA}LXO6/'`:8gI$G,M`y}Gꦜ?)c7K !8Bʽl. ouv +KS?0Z<M^oE "1\eάI SsBITve赡 Rkvl$|i0qp +QxroHQvzŃe4`eb?V'ax * ǡ~MCC0"rsSC=y [^ՔI1d#J9&I# g߶c*B+FWndM}RYubPvc?_gMk5Zoof~G>ص͈,gk]E8?`aN/`p22it (/[@|;C]ar6X W,COQY``J_Bhq8 !;.*ĿLMbMKa{boKInUowg3Ս|Rq?'SoIV\]iTgȋ[_Z_j5'N8wM%+E:v +"Ӫax;Y `m e"bsiq>,Znè3Œe(go =$Rܬ'J:cj3f2 +N:3CC;Ov"<ȳA?9=ԇa{M˻&}Lnu4۟V[+._b$t1.}c{<0PBW*ZCƛOS 0aS5Ε-}7-*IC{1ȹAZųrO(G n69i5bDN'wL ,j"WvyMbfv&,ՆHѶG[f&Px&I뤏i=(˗z:[} $>]IlvyPd[tzw;hc9X S8{՝YJ4ks'$r+t7))m&LWQ L7)g͑".f E* +M:7jm !'3x<[r n^s:^M{9Eŷ8Bt,wv0V\a4T2G+F],ٚ]z~a1CJUs/ 'ګœk[M#I8ߦ)qU$rCO>ŰtM>IV&Mi`o k P^\ m"e]VD7u\~&bO4tޡKLԁN\-vaKD­~2W^"ቍö 8YJBX2U[0lq߃>KH>sx[bܸݜYS8 k)!~wemG "1yEj^?5mH謥kC; jcj%(Vq}<9mh>qUâ"HX|yЄ><% -_20j]yW +>!đr,Q?z⺑{@$d}*EJ%G )>]6t_oKXBiN9THOh}/99etsF|IPq^ Ϩ-fWzlsǂ}/Q +*=?(mXiJj~E=*teƘ!7sN~u 9#s mA7RayIBuR6˫{.z/x"/okEUw5,|>d,wkyJd-0<:'^-D: ;vn.p ~A]x 1y=X;Bn =D#&JTWߢTVET :@ :) \ʮvC@jhXy~A*H}w4lu.ߖʙ#2rAO4S"b.n͵,MiU~~@TJ麜q"q$@jMTn[ dJ& FmAEBc + + ɹ)µ^>S&(qRڨ[ȹmhژq_~_ܥb'cXC9W՘z!xmpi3j0AH1˼D\Ke¤}&CkE:(1rJfˁ/3yV:-ުaTRp.ev>IJrp:HCpwrIȻ_!%>m(=AuhA9)~YW ^fκa/Y6BN.f{{H pDuf^bi8 Gwxȗ ,Hi +M2CL)y.)q?.=LNè"=&gՎݻ,ݩCT߿EfJ/7ܾaf[=N>OIR&5)v}ȸ{ ƖOlKDBD}VeNplTeI'=TN:-όp PZ^ryߐL}͠V_d7 h݃mˈ= G¦K&=Ru|2}`E8ćNHn`7ϕZY}֎o/@ua_8lzOn{[k;a&Y(I ͤ#]+ rISkѢu)ub<o[JCm_2ccYEe2. eK 2ZIO2-/(=3!KСޜTDLJS>c%yBj ㋞6ϡ\YRKݽLpvaӑ, }=2meFxj=/kKoܓʏ0(TCggTiTR+c"PO|N;jլYb~n=үm< +^[UBޠMHiq +W D੮3w+TC HlUev|gťl3VD =ZBlۥ/ڕI|mZ=0>C@!d.7 oox +XX?sE(k_,6TMOXpjȔbO@HB?ёH ywpۂC(UpW^[vjQAi1:)d+w\nEBzcnբCԪlT7/,DRmD4B]: +䮙Mj0lZA j:6n6%NBXVX%l?1P1܃mMm!`f;Ns'~Enr^( #u$dµ*͍yay΢sʻl1Gl2]`quh4yVЭ$H cqT~@ (+@{< \`GgYba$xV+6C*ݩ6iZކQw^P~4`q}~>O{D҉4(pD1ģ"Z!)h (X>TN!o|c {Ҳ3ESl6 nL-!(b~Ey@ײDb#TA54Q+hBU#|f5JŮ +EEPC)־O$ldrwsy_t栳cR CO•ISuվ>O$ږ|2Ōwޞp)8M F @s_@b:k9e8Ĝ,,oG ܑ”=5px?|Q 4٧W&.hO$F jޜe1r1ȚѪ#-2G3:Q35$XՁlNK]8i~j*̐3lՃ^6ooVЌ9#R\e?h5C"Vq^SoͫTw؏BI(6`FKFўgsf13 ;hڇAwA`a4$/0 +#rҬ|W`+:๑Rq"-Uu[! P kewԝ@GS8+Ugvm`Gj TZ'l_gSO5~ы'us 8}䏺B2UxI+<;"'(eឣ͠+ >wG{)LKǾ$2 BGFOR3I"^kOƒW-,k ox;ؗ4s!nQ.B!FT$)W:øhTZ{RSRCewR8#gMz1#801r,n} 34uwY +v^ᣊ$` |"sS;$Ic$CW$63WPcP^hw}Ur-zdM!ڇy4R0M@@A>f5 q$93,CY I,źr`ЭhҿW'!8- +4M263Dϋ k>T=USj1t=FDOhmU|)a7R_-nNٮIvNm ǐJߚ#f{pZIyo})5E1I!)NWx=s˕YRc %@ + )-1qQWd7U0{/P/LTacX6Ǔh@loժBNDjA*V179/҈0DatUl;U<b;oQHl ,l{AkҲC KUEF0Ĥ3^&0?9=q>-TbbB$ ǹhvPBh % d~ , 2y!k F73/e]pd5V|R)G&9Gi6^[1Y*#4Iy56^ +v_x늶 [6Ok\_ѯx# b-KMz~+ oܭ`#0ʲ#ؚz-%$Gl\=z @ +nEثow"N0% +B||yG:-1ggPz\:;*Ӱލө*H-ARNL0h"G_-^(r'+3u`_|rOk|U'ײӝ6mtU~uf ⹤et{XtK.!|m)佝@i_BPS!ȊQ.2A]cnl?D2_oc"M#@;82ܞ8c"",i[ \HԣP޷GS7 +7.4߃2N*x-$# hF|-\Wӛ%өImpmMe è2?A gmZ:6`B5Yߨ6ZᏌ2‹IźO%pӯ&aW)k0h2U@Ŗ*۰T0"Qo"qVFLqG~$|IutDwCφmH=iނkrRQ<q+%vSys 8:Tdmf8^ 4i]$?@D|-5ᚘo9b5^#rnrv5⻪isx@Z%) Z(B į+vSj}a%nZQ(T ڊKlWwe6_zy!ظ` Z PJ?YD #^?>MC^dʚ.y-r 4OG$:`|Χ)},SĂH[an(x/ؠ 68Jes6).>i06k!8G 2S<}mǻ (C *m"U4uîl^9s+!&klD YzFrѿ7{[Bhb-|M9yZ>%Ϡʋ4t5Ճ uDW+b phMzđe^eHoLY'$$A t~77 +V g"Ke`V4n)MK !힑"D+[G/Ҍ棻j!De-t|Lϳ;d_ :NDtnXFCK& AÌM-;bj:bJ&X^ +f\L >xoemhx]_s} >5"#+i cQǕSf9Hhî[7 +{۩z>"TPx *Ds6VA'_zuJ+iU$44-6nO3N_D~58FaK)%0+#ze^9 B2y*gf#*q +<}m淅I``tĸ+/FRI*J(ƼtC@L$Z&#AI9#E;rg;H7 +zm;8'7.:fo%`^yzRf:5|9^h{ׄȏ-MKh\՚lr} ص*؛/ iYzFPM*$< KG̍ sH-Yy=^o"V&q*+@^p܀p?Qc5_!_zR/T66h)bb dY~M5O8SU?c({-QgפOchc-7L|^qQ_봄p.>'IdqE +S9W",p:^5c,k_R,❘A7 oʃEHzC< A׮%7.l@7Z})./HeQΛFAhLpfw"cw.WB:i Z&dj?uTd.ȧWFomz Cdcl66rvF!@|H<ۗz$N:^VH'>$cIJ#@.(`fZS1 7Dj_@+["iJ&RcAZ{4;G$ 8 O[P ¼+?#2NXqa1g^faCOj 1Gmgcs\}k(ZLa |?OЩ\bjUŷl#ӼxDY9@)q3!"9CM(Qӷ$߆5,*S=Y]ByFGX"GT.\\AoWf廵_=FI]Ux> oB9%@Vefp{_{a>Ry ه'V'b%sɡuՁ,dͪH&hD`I2%1OxO"A#O7K<:5" +΍N2\ÒC3/ +>Y +C+)V\J]F.cϢ}Ͷ?[_/]ca-Έb/5u70l~~ *|⇁U_ȸ 3N֥D,7 %hQj*jr~[y~&qܮR5!嵁|/odǀ+E0-Ln'Vұ{Dka"רE9KB-*!i騡t xm&{ \ly~;scx- amylrGkUx'=BUf1C1,%6aT#zfK`?c/|VRY$8F5%عrQs.c?*LɸRwFv΄k3M*a5>tbTF &V?|&b9“= YbCo ٖiE7!`>fx,*@@/hz'v[dF`PaI9+bozR +HE:Ȁ)XtA knU\Dj ֙sל$Γċ9/'p<2Fs9;L_`|8j?#3VhJW8.ʭhy^4H6h8l;&N=B8=WuIeR@['XrRdء>6?TVq2d#F-;ȗxFH\:C_Iʓחґ\ii弢E?j7=ǠX~> gT3ݙ ;?`P3+e:WS7J=(RM18ߡ=rɶ)$4y6Lռb!+!tf-W_$b-`peyl`T")I.<$׽,ڥ; Jjfi:j4ApADc"7ē[+[@&Up4[7vf* }P^m6:6\{a ʴE-Ö6cj(DzIE9Lp@ sAD̈́˼z! ̶`Wwq7('k{ʞY h wu7_͕-1u TK؄c8pAEk3ҿ VaZgL(,$^hbjfF;Z ñez#t&E*P*.߶İaݍ[ d*]}0[IXUao;`%*TlD^,C]}aq5uo%me̟؎T`:BWD⏋S#[0@LȻ߉ӆ..Fv<^Gw"f,Y uҿ~;50kjZ 5=ӽqqǭê涴 q%w3.n#YSsbDK@>[)jPԯg7*!RV:+Flu8C3K*3|<˰zՇ5 xL%~zͥ76ߠVBXh=\M$?7'I֛rźdžmd_re= qb'`E=va[X~UEH[.9٤ k D_;%SQqh9Ep|Sk -%ֶ }a|K3_<ҲH{n*,T'LnC3k fy1m^qnZݷ)w=I}|w^'v, +Ҿ$&nS^N"qD"6A4iRQ41d8i97fNEdcݝ&=d|bC:@"tx"9PKr6Oy1(g{zƎ`եL3ciȐJ49%UpK҉}F;_(1cTTVf,$&s5dۗ^oZy$3ˆa !PI,{mzEj R' ~e>Z]>r jxI5h){(A[Q(&+Ax}0(ȕ}rRw ~D04_x9 e -r'P[k :IOt! P˜L6]Gd9 + " ;>u]]~%2Eد'!L Cx7۔޲Vrz+zzNaif*Tv-W;3Wa/7}R +]\>\76Ȍ B|nCYx=IT 7J)'{l0- %aFyIB'(jƻd%mb Sz$G5GE9o7hlϳmuI͉ľX\XU8Ywxe b #YoVu#s1W +ECJ,;\l{=m- W\=OK@Pdi5!uӱv^!5 1s7Ll +͛7q+t0ghxVE{goX[&b嗿eeH*i'1(^~|G+XڦxCp:ys뱛[c6ʻ AԘBVG4rmuhjM)Cyl԰<r8/Y +bvTN_rg6"ǖ9C +$L`u\$y 63ra *}LONVz`N~D|!5kW ˏ[u 1H6G yDАWC%ҸV96k>lLtg)d:|\,?پd5֌#2}Ù >>Ayr5d>>:Xqa x^J^a 2PAk@AP~> -stream -%!PS-AdobeFont-1.0: LMMono8-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 4205 +>> +stream +%!PS-AdobeFont-1.0: CMTT8 003.002 +%%Title: CMTT8 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT8. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono8-Regular known{/LMMono8-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT8 known{/CMTT8 findfont dup/UniqueID known{dup +/UniqueID get 5000830 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /KPZRIA+CMTT8 def +/FontBBox {-5 -232 545 699 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono8-Regular)readonly def -/FamilyName(LMMono8)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT8.) readonly def +/FullName (CMTT8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -133 def -/UnderlineThickness 61 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /XHVBMR+LMMono8-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 98 /b put dup 99 /c put +dup 100 /d put dup 101 /e put dup 105 /i put dup 108 /l put @@ -32228,143 +33598,78 @@ dup 114 /r put dup 115 /s put dup 116 /t put readonly def -/PaintType 0 def -/FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-456 -320 743 1014}readonly def currentdict end currentfile eexec -oc;j~EЪ%9.>XJٚмD"e?&oLH:]~nX%l޹dQ@a~M~EA˟V.UM؀")JY4қ UC92"\ܡw1rlxнtaA*`Jp[KLI5(ڶ>HVhg!M8yi4W~Ή\ef5SDy/sjeXQysCrny,qwʘN>~:ބ98>Æ0jE ۸t=xqsa2ԅ)cH.#{2V#B9;TOz9RBѹ:2@)sUFE+~`Ncd`XXyR1TuGxei}'hY̰Cs -Eϐ#poyL0 !~D,YJCސ}rH6ӌeN ӸlH>Mtnc=,L v~ޞ( vw*B@nx̽J 9܇A&oĬߞIdyzzg NA -})/ёZ=qx -xG~ƻxzW5@CtվЈTG=ظADŐ\g1*maXށfR -qu`e(š"av.{L#e(vKL9eLHAkά&I0q\JLh(Y|o=6[aEfI>8ɻ{O*dofkҢf8VJ:_#w.yoPxY/T0R|KYk+qHfƺ'/,:rSWUĎItG`㚺 -IB6mz |r3|=5#y.E\!.Z&f>hn<g:7SЋk4ݟH"{ 1{ZߛCp1(:_H.VO1qB7y?Q:٠Zw7#HyuEAy$_ܛDC+H*BzN,vI Fl26-eJEmZw8!GagŞDU]'hjܚn$۲&v3Y s[$ Z*1u1kHe,aH\dlyB/$a JjjfSyAy[%:1d-Mts6uxNT c83t!%-')o M>~61"( E"b /R}K?ra/m~ Qs[GEMY  EÙ/?i~Vw0xpU0}ek;>QEW;l-0h1!,{h)T…TY`K\SX(&2/Gf'$r\D + 4+c- H/YMɣҋـFFJ)ADcy:}i(0/#/_V iB/XQc8X /y6q%AJY64xi1zN >k"huhDK':]kPc7a7= kFq{x&nٵ/)it‰PO@^w. -e}Rkxɴiaj>S^m 7A3s4{ՒeI1\ُi8j&g7MfDLa%$BSF*@`pxBwy~SIce[W`%]s*jD 1E!k;FgbErX1˻q+C>I+_9Ս_Vz=QQ Gijx}qt,~B(T=E zsQnK E?JahN"at6-f"\NQ:B/o,RaEw!Ч>,pw xD -td\>\؉y29f{Ɖ(`H?h -YǺ; qyWԩAOUW_:KcBTvDM06$c 3^Ix_$*]47b<[*& z9~zL9שK<j -hQ .J= |R3-<Y|`EbqX:rYH 3~!\dץ,Mx߄ ?mq툵Q)Zщ($ҴQ4g.!Nb_BH_WY.h@ jwi&2w+0CM&bDMYX'N@q{{-*TK`WP% fḃ$XGp>vG7$--S*-wS /^hGwG"$9˳eg |x}T HP9θtEh(֢*AwXRDz/>>h*TJ@p+E ˁ!-t_2=m;QU` y3.h컰},XAon gLJY۶MV}P߆r\$dDvs6Rwgճi;9"cjLI*u+I*m]Xdz%B$ioΘjNoak:c5, r&&=8-AjgXE sJ6!xg#v>[}='X)m3jKTdh5z[j_ -?& -/I\B2 -kz[66Lgi LҴ6zZQ_sp$26taPL,G22gS᭻Fݧ,l.nxPi˙k CTд/g5 ֚g>98#N?AWD$Uu1P3uݜmr8-`S*3hs&Ov? Ĉ}^PЩO[y%v乻ӅwV ܑF%! y$[loݔՃ_Vv)>AuhP"U#À'n"@! ,"gNO P4`Wr?4630;% "|ΙN8<~9TBy t̐ylPojfroJ;o| <(yH[ȦBImG$U ma@S<TH`ֈ^vڄڦ)8lhiHݗ8Qn,^r57o84^]$4B xyÆi'e8CJH H}b ӯ3wJMd3n!fS/[AYJIˋmj6yep̪H7] jPqinj_hfYGp|;]Ϸ{ZjgίURn} dw4s;fUXL!ǧDdgȫ ˻)Q - -c V?06 X#|[ -yqJyk+!YvXk7QLY"5k)$%< ZN neGKuDJy]Lu ,o|Mfi[974lnǎIbG<P ,2 r{p/|Pqo&^v`J1moJ(.~tG2P@9?W "㕫85zkQ~aͱO1F>J ;XEr礻$AW -9'{{D&Џ y (0BU }hH5r|**E4=m -YlZ2 !*"%YڿJk-Lp^s~|/`y˕k{It1FA -7vt͟9^ KR!^r /$zõr/l[3#.^ -n^RƢj.Z=4c)JPZ)y&qiٿʧz4OgiXdJPofүVÐFTڔ?US0򍫫 -0ܰ(IޣGX@4U|'77b h6}lhىϚ1^v8lBR9972V|lEv/!ʘ\M NbKFeH,ݻ?ԺlV'f tȺ@duƮ,2u! Z3Hu -lUNpZ4EHghR}1G !wEsAkK;]{gO>]2u,\ҫbn;={^Tn0hCzA"2t@ˑ_0K mW@.}y -9g֭00GÜztFDCRp{. )aݽ@t(!چt#vGQQM6H_IsAkK;]{|y;O٧-e$nd6٢R]w<ɝOOR9 -ZQ$ձNW؅3IY}l; 9 >E(Z$9ak[^KgF3=GxYαWv[2MAK)(ΈؚR{(u׼΢MGP'Bd! <`;8'|9#C \/bN}jr!zHOo_Cck0nay2ی6W8Jꞈ+gFŌ)$ZK^" -\4Xaஅ9zl!3E%hA^xp?'/ϕW$^k!Rj)9l0mdiGcxy˟IlJcs:Ⱦk,Uez^lDw)_u`QnӬQ?EvtšaR:寍݋›ӸݑԚ0B5%'M*`Dn7cxY?ǽי p"Dvz.\'fĜ?CАU u LSɟE1j -. -wVđ{B=v^eS͚,t)5,1_RͬM<9Q$&6 ?XxKB6zf '}5iO ǟ?`3nWy9@~y{!o)*'_6KΦ[ ;7ە7<_,yo5<}م v'Z2xZeAaB#9r2TX~[õr/l[3#.^ê}$P' _:*r"j&Y[LUl]F!Ĥ^Įnb;lٷ!_ 8Ą=!L==yXq zsSmVΉڂb%*ZI 4&GȪ4@`'^$싅hɪ@xgJO\W?ϘF8=8WggU =~rDe8 >ꙂgQB{w -}@GwJvѹ. :Burrֳ' 60+ؗ<},Jԝ:K|Eb#'哗iA\jM X?0-pb=V]&]=uѥX ETP\,+QN߮¶>@'RS4^buo{1v4)i/< (_¬r^zqt9(r6VܑAP<4pN G]1 K˧oԾ{$o!M[}LN!F< -8ɢUU^ncIPaHȅrigΈ Ô;'_Kfq -(C~X'mg\EAEI$knJ!xObH3hj..P@96^MKd+B}I-U'e'31ӋwmS+ɯsg:WҊH Rp2ٞ L?B>-a±8r%g -{V;` ;1)}p<x4M#!D_ɨè7@M)>Pq +߮,+蜠v@֟enuET3olGy} -O %_O0ǞcǠ*=38/.rL|AIݍ6:[c* ߓױ#G*^II݆̺s"'%}4?ӧ"ܧ5)U.}3807Eֆn,]o^9]-W>,HicP3q'y\|⦀+I4hZWӱ(|CiRCԬ7l5A׃ViXwaGּ:N&l|fL% " -'c`WEik^ץWͮb[c/Z|<td`w xFH[z0!+`)ꙃ%=7 l9.p#{ME0tF- 0M\ps(*YO Ӈ*2G|rgHx#5ıdn./FuX.(S~&'sa_{-ζ CJ:$VPİAx1"OP( -ZZ޼9c+^HOU1(+sǾ+ai/1%v= "lPX/И<;xYPAKD34򭈞J># -oZЭ*hnU؎G%|t#m)}GJUTd[ҙZ_"NB:S!8ҁ/,HO@afPH9 `|"RW Q;Kr;5@O$yõ$s^3w*kӫO(䙵B:G' ~jFQA}Ya&A-1@ 0Iey9 A;a~U!] H既`7hӸmtPKGp6PO5>B:TNj^¶洕=*O1! j7bQ$ԛct?k\H>i#enJ:SNW<?:Y$% [Վ4NA/4Ձ;I7By`CٖgX캽>T,)c[zOd&q m&jA1;*?;-a# &'v/b*˖$M[ -(@s@\y9 F^ @ejp@Cu`g$ .NE4w'<%n;1-k?.f'’(( d"p)6-.X -}WTGj`75q -WGIXWo࡛t = ԙð8? ¹Q5MH˻1r ]u}kkHYԣsȈL)_u' PE "1N(7&QHfQj99> 0OUD,@S -X]E̅k`lGM!]w&ęq}3_*H;uL J@}q)) -=qX j -0`T|G4VW=<_bQ? PKX0ڀvsAdΕ:a>`^eC5ci`K2,ۈ{OlMR|ھt5'"~ :Ĺ%Db/A U@'X)cq,}Jߝ(C ³"1\+p)s.CHL.*}$n;c2:nd%;qTLg{n1˂UU߹Knڿs"ynTn"C*kt-_8f­*~+KMrdM$]5ψr#dp6^*kS( !f_rђLT¬vt8 zhXiepdMpXLJHH*anB೦=MJhrcE`2jϰffy:eև+w=~ Ws%!;)*bz#ڲ-S o33oB '!:4~1`&l y\F#˚l&q-' Y tŻ԰f{_kSxN:56菏}>'nNKK t `2$(ӞON8T{fDq#\CIV{VT0ln3t,p`7;$vr -.c)*.a0 ,)vqZv |yOn?YSynY\1Q>G0Fpru_dẌ́6JQ YA3e F2Ci%E#tHQ0RX[YԫFUM583CU&zn!oZ9PfГZ>?@MVd RJmqB!Drr~|ƠB`x -DUH!1<8eS籉kw3/\ 5c ,~#R)K _Ę̞,WGұz.L!`lr?֢Clnw;h%3-B'j=:]갡H‰|KKG8!\ -*Ր;t̷,pMJY we<ڥ!:Ka}W&/s)K1]Fnp4hxW,[݀ l_z^:Csv_OYj^ѹ#Q-_;~_V-_kd!By$"dY? j)(fDS6ؓCQR4_/B|~Oũ-$_ <]:ZfSngst>ÚV,}`WϙQ*'[s L>.{#1Sq&EV bnd$ă;tm/i6@SZ13Cp\jx;4o#0?NGkaD ʔĽқ=j6]Kmyp< -^wf#7Ў" -lZK=i@U3q%Dn\2[C-IeWDd7A?j{ѳsV_= )ƳK%m3{m.hJ"D?G(¶iݢwANfgRbG w&j9OK?Lf9 URڛ L \~6Cmء'˨dT2h}ԟ_1JWa5YẀ2N]>*{mX$L+U3E~)d|RlaLX֭vh}LE#Q>ecI9@E֖w)-Hʂb"WڂL5ū~#l -G鈜}=1f(qXe|P.~֮$Q `sI :ee˳=FN9rVC/hSQS @Y+"m$P6N%sC ԬfQ!K䡞"C 轥Nݗ۲mbyf=;f̩yC߉?,ӫaŔhdSߍޙo;.'"џtV՟WFJ+V> rZtcP.د}݋=nZfN]'1Asɤh -& vXhz -j/c5~:ҧDeLͫWK?_F7]@U!9?aTz¿ '!} 6!S|UޖIy2,0B-q5a)t =&{۝}(xzu孔JY Ӛ4`WFc~[h#P -q0ȯcֱBQ6АuAB`[rJ`|V壪XwbM||dx' -W6XA@?߬"G JSR \bɽâR+E#Z9϶˯fuL4s0qaEZ 'H?B6|j|j&y$f)qx~s0ŒKx!QIA0Zoݑ:ªFůn./FuX.}dV_+!ϟOV?r!msK 2LALf+k j߀sHR<4Ӫ&`=jՄ$ylxC˸v3crWh~-|HGa>C[)ں֋tR0WsK9H;|~j?ZJxJX/?imLcYe;k{E1T] -lRgډܐuVfA/kN0)a D3 h nZR>~6ȩt a8 Nxoa~$RҚ{_tUFaf1:_ -R&Zn͗ވ':cpfqM_Erve -v - h#)xF@aW.xME HHč-y$$Jp:"p3q|GlA]\tš'XNR\bWr08&9 Z,cw @Q1k7ni tKWG4 4a0D>ILcBGACdͥY{d1A,Є5.`ܨ%‘kCpRٙRpyޚOkR glBψT.2ކfX  aXX1_M;n{B>)I\g`ZV~' †DGM,qSC[ڵm.Ƃ /DΫs.yNtXՊjTSewV3P*҆}}S8:(e,Y!])0_fx7k*ӘA )ǡ\#&]R7Q&d[,q>9d7zW*mmj"Qydo^jwNئ3"wZbVjxVLfϮ.xOmz[lx NZ /_ooxj 1k/T}7/@Tc&q6_5|+ף.r8dvlhwPQ=E5U% -A!aC20C^KPGg4`Y=ߊ=&{rAMF/";UXʵCKqJ:$I൚i:k} ߅D[-RSD'8#F_d<7#0BSoep\J+V;ʵ{ſ[жY[?{3?wx2 o^l]NvXxl(D}&-3CtMI2_ϚT}]; kU18lz+7HE[ad'X-2g8L.z:D8kSl },| 9y>Y3 6y4ZQX }t8SL>PmShXl w~v"9Yz{]9OPtG CaTI|IH˜3:8({3=#0m EO>goW.{!H> ɚ泫 lB{E4ieI%ޔ<zROQ..AZ]#I;4>I;V2 ;ɥxj{<ұKQ;_,M!xHK  ^i|y?ezbl/r[81,)=Bgѝ -nv!{T:+[,-T2jǪq\P+>@`C+/*>D~8ǂDfDJ}SV-9dG;Ty_13R(q#:emxDp[(L߭q71,֑R<_Cm4me;DƗf"MF0{2r+5ɹ\%އGW9ΙKԗܼ*@zE$o -MgݟӊF{K<a HG峐 m6nTX9YTTwugJ ^}<x1g"cVbTv) -#8| -Dnj ARX;éxK;#xCbˤk7L*$Ho.`+@T"`yЏ!Pk5/@Iq!g(`X(ƒن 70OP(poV޹ i,,AWFY5<ܭeqr@a/^!ON/$OuQ&_KЗ^[2TuHH5M+șwڈaS5 &H|'#/zf|G 5*PIJhVմ~@҇FB#8.ne$nVr]PD#tJ-yk1yByCw$둝 @"E%~#K",WoԐ,0''N Rc޿UWL|ysVj$S+}Z{&YT#dc4n< F>A$VlV)8/Y4͏@o"vh0UYu^qV>މmĽf٬%&YKdw{n7¦ ]"=8C 5;EY. WLԝgAs -?K]^]R4=/7g7;q&z zy˵m[&qJw 1=)o63?jPxƭ7%J' -m@u>KV. {s$3ٵoRCas3K$"{O#fΤS9ek/87ƣށH rWLX`0Op +oc;jAw-24 WEvQC<3A2kX0k^|:ٴfb,|=sLu2KZ`3ndgRw@),q՜G<&h'. ΍883 ABAԾI$s@F25ڪ,i pK>6K` %E((bsP,WKT"0KDǯҖkIUܨf/+WN/r4qW@d̍OG|Babhy52+2upa,-I"MC㉮0גv\G\% ؊Z\+;7tamJsXPc0NqL%tWtį, );b&L}NֲGi$߲:[<+s\6qGq %E~@kִ[iYKq[ Pvbr~1z6>)廄\oxobBin\![(;"0:7w yqMomD$cqKRXr c3mx]FЅ4_~n} VFuM;[)(6!^c0?;mXBlt@ +a{Vՠ<{xlU ڐqIGS2Fx($Mqm˂HTwߛwC9UIK}]8 ]N,վ_3ңD4?)Pyn5^Ⲭk1Q!3Q5>J!P>|J]-PT'&Ql ~R($k$:zt~>f*Ѷg'g?R wܲhfL]*RyiuK&݊N&O`Dz\}װK u]8oG53Tag @6ڣM&nQINp|Q̢uOVfhj?`N;M?~;Ǟ}58Q84r-uu>D}|zcW#6/#D{(шPv8ܽ/>*O$jFBbFF!ڞROg/kOMU],'C8N$ 47Y9!:y`e(2= jD0.rPXJ}ySn 9%m#,wM=)1dHV,0B a8\Qx+J9=(jKqp%07LfUoڠ d}p5 j^N^LT3+g~w:AnU* \AE=@ :,ݤk6TgpɈ#7P6dg^ܣd^N^#hWy UIO)C#ظ9|Tm"[~XتWgb8r"z-W_/J)Y]悚e.(Ls/OXoa|Jo$R*2DRQ4TZ%^qO55>t&&-x bKA8|X W/]ܤS8^4xd)JÐ=,++A-Ho&7f-SKV`-hPJڋ U%q<< k&Co~]^oiW3YuXN7YJ7g@Ĺϫ)b νGD kE 34!霣m4M{xm0^G1@rP_V]b+gl*P zShL{%K֊_*s+C}֡R>OxdKV5X^sp_ +߽eд*KHX3.g 2L9tbM$x*4$R=+JUCwe䡞-%e)\MS{ƕK랳. endstream endobj -2228 0 obj +2269 0 obj << -/Length1 2566 -/Length2 25126 +/Length1 2495 +/Length2 16116 /Length3 0 -/Length 27692 ->> -stream -%!PS-AdobeFont-1.0: LMMono9-Regular 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 +/Length 18611 +>> +stream +%!PS-AdobeFont-1.0: CMTT9 003.002 +%%Title: CMTT9 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT9. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments -FontDirectory/LMMono9-Regular known{/LMMono9-Regular findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse +FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup +/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse -17 dict begin +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /FYMOSO+CMTT9 def +/FontBBox {-6 -233 542 698 }readonly def +/PaintType 0 def /FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono9-Regular)readonly def -/FamilyName(LMMono9)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def +/FullName (CMTT9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def /ItalicAngle 0 def -/UnderlinePosition -150 def -/UnderlineThickness 67 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /TWMFXI+LMMono9-Regular def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 66 /B put +dup 67 /C put dup 68 /D put dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put dup 73 /I put dup 75 /K put +dup 76 /L put +dup 77 /M put dup 78 /N put +dup 79 /O put dup 80 /P put +dup 82 /R put dup 83 /S put dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put dup 89 /Y put dup 97 /a put dup 38 /ampersand put @@ -32399,7 +33704,7 @@ dup 37 /percent put dup 46 /period put dup 43 /plus put dup 113 /q put -dup 39 /quotesingle put +dup 13 /quotesingle put dup 114 /r put dup 115 /s put dup 59 /semicolon put @@ -32416,255 +33721,177 @@ dup 121 /y put dup 122 /z put dup 48 /zero put readonly def +currentdict end +currentfile eexec +oc;jAw-=%W)-{ru)rAE(@{빴Q|_R +ϤA -T@|q|VkJ%qu8PwGxŪ̆Q6K -U\%b"t-*xJ+ +}3{Z2zݬT2s$Z&{BJ{=מ0).nBd^/!2-G+~b7 N&lds%o53NPc9U,Y뱂0L+OAdN;[9!"k_ӆ$Rb՘g uxVMhL$3Py5,o"7'*E<Zcb8r$`Fާ/r]:BI\$~=ԑψȜȿ!ꖲQS*_LyXg*!#B;Fdy9 vF.x&W܀cK[龭j + T-hj:ֲbcӢx~gk0^Z]Ψ&33g3wm2pBÌ:~qF邉u<^IE=*J.Zwc38Y.1jKAs;Ļ`R^yCQ4y &{uQgF +vlP︩ +e=Gylw +x]v&o9fiQpymQrijF\UBu :sy7R'T{cr/bzfuy-_Kh~ sӭ>a(zfz!#vZuZ"VUEɟw-@ i aI+ R̿P;XC 6e+je[7-^j[ +g93 ÅD c% ؙyJC=z[t vʩ>V3m9=Wp+l֏nׇ3g#7:Q@P~-u@ӱDV\sS;x; +J 'p +y?^CI $HGYt` \Lj%fxSڌrܾ0;=l;ÀMI>o C" + m޳I^:O|u.^Nuwb`95>dJJ 0Xp[tu^%ئ`' +0T I{ 6j=w ɽډ7Ș:{?lH)8OfmXn,ߗ Pii]X&Bx{5ǬfEޮDtz9nyB t+ 4,p$@x&|Ĩ4H~4J7B<«CP}uz|gr-:u[D\; }bUIS{27= FBk' + .~"tOz-3RٷZ[&hD|AQGCH :\'`aу2{=o>u&0߻;e01]V2c`CJ1/LW Yckɲ }c8LC|g%Y9.?e+PҁI4,}#yE؇]%T>},S !*. vt7[ORYSSԪ5՞l+>͎l6UY'_p%=]^:k2 b3Ҳvu\k!n2̋@Q*v}5z3mؚ/_~GfG쪑4,=5%ڹ]EHfnۀxRL/' 7.eϽaG}r +~) ]<$2uo6){QBX[#CI3je/NUX+`"P[\AXa|i Hnk, ? J_y3^c}|at <;1v@{EҬ /E7+?`+7TɈ/~2Fe匊I5)SXvNe BҮmy‰_14tl0w +3Kq +Tύ\Ӽzl]%bpg7G)t[VN~O^ v`v`чm +ňXh>r:9e1SNC$c% $¦,TM2COVe=S7u_{x $:#Zi1ʇl y ö^|QLψc&Hn) Ϩ|he }IMǕW*+-Z,dުyfmvԛ]t ;`o]WHY}'PN`SuBf$,ՕL=wm0mV l TOnt6M"X˃qDf0ms9?Ğ_mnH`AAmҚ +ܭajfnUۙCat/vPqE$NP^_مdv"TC[ |wҁ1|7B%fW"d6QIaҝE.Z;eF{N#{}?7yg +hS `tZ" *QC&KsulJ|6i$rEFXggξ&vH_I)LR*QgXuV,В"%_L΄"4vܹ٩vûZ! +Y@L{vߺ+N*Y+qi]/^L)my1=K ~{it{n?'2d,佛rt߳-F܅Fl L yfF?M_*a5պӽŒ!d 2Λiw/";qfW"^0$goaWvm.͢B/c@{:d"Av]P}C*&kx;k6܆xɃ% ^X2Lg]VmMhxP&({g^֣ ĤԒ|(dk/ܺHԔqJ'wBtgO`Oc \K*/g9Z<0vBWK=Q]a9LWA VR{C.Wwu5KnBr-DRe9(=4TS6-H;&hFjc{nHUqn9ӳZ-wP;KIЕW+etQaw/_bZƕ ;;_#,\jíPdUՉ~tjӨ%$rg#*\>i{BvwUr/lLr 9 Emҫt뾃J,9~5Q?tcʔ~mѣxbÿzw]~ D%ɕc|T_Ҷ꿛)3!p AW+vHQ8(>ז?;?q(Cq/GI ۾b.q3;xV-1Jk[YlFsxP\W4{f󴴧 + `uvfGP|[7KEg&®rNC V0P᪞Eklت0[W#>s>Z3ϻ9+Gh,G:Cs/ATv-ţ"ʤA~"~^9(cƖrB`j9+c6in~>EAA*/}.K`S7 TZ)O,&])6`~z0>Hi:iBF1cFAa SNrp,Wb7A.Bi2߶3\gH?;N^i7F;u JZ3@7lHWjdoMts<9Mza$| s;|?VL1.Z$HHT҉YI'I9Z-_MǾgeq<'amͺS2:;$~Rlg cFa+E-+ӎbUIuſn{?B %bNDQ +Ғ bKn[?뒎|)|D*,PW )HB)]3= ،(mfkOas W8<Ϗ6G{(VK" ?JdSph,byZVàrTM:V?iG2֛ + 5CBiS%QN.gzڞ:.X'E&V`yZMޛo*(>"CcCa̐#sA^Q@%n}CE5v,Pr 3vXؼ #|T wd-xm_D5)nGM1\`QGXф RBaS;ɤ H=p1i/9?W aADjk'Tю9OY7YT&Jcې?M%"heg~QOkk}?j'ӇZq쾋Ƿ a (!XD欄(t|8]*T0f~PN{kj+01|ǠO_+CwvålMM/(mq.;OK4&7B*3H{{S:|+B)MEKx87-s;9I(H!xIr_6͵C`GKOB=K)G(>AQҠH=+}ķČg,`yn!**=e6`%䖬n-m}hD|o⽕AЉ ײQ>V |N2P0 + :&s8&՚F}Rqb+?;Zγ94nNqw1[J2aYg`ϽD(V8 +bR#g…8 EEh \c50 +yiJ´-ۖi-JV?yl~Mh#_tԟ`LN'yhEsL*,:B6>a@IzlK$'yfm_^]o88ދJ-p$k?9Q|A;3h6@yYSo+UtOcP!^,?7 &+d`U^XF4-NuLƘrbsًWFbj_uv DHzMf>=Q٤^䓬ًm`D13F %l4ZV^UV} as.XZvUm%kh`o݃"l%&CR@,Z[KEhCЕ0vxF;ٱYsj40C1>)ACW70xJĻm$Tdλ$(i#so~wEx \lYe?X&a'#b{PP-a Q jq*lw|W:@rwZ_9 v'E}=)̑ AF+,bCCEeg-ZWNN`[5Fscn&`gWbV;LON<(6,Sy!KhCt˙B ̑CJt\ ֢ %'ZEoEOP\.zk0g\|ۚi \gX5 Ҹ Ip MUF5o1Iڳ2r)%"ֱ?&ޑ+y N_ȎnOiY}F3tVs8)SD +Kf/_|"=O@PLh=3}Hsu:XzsEOOO c4j9bq +&Qlj kkk-)H꣛$Beтe M޴_ 5tyƃJt\TR`I{@ i¸0_wHcoIk ;N 1Xmq* Zȇ6+V[. \O8  'AǤDgX*}Hx 2f!zLb}ǜEFrmˋm^0~`LUxKZ?thҘAR'C'4)Q}'f}L%u?nCOc#r܈v)$ xt|"LdeP*Q5P\{#k8CZvc>Nh5a]h..iak[]>Ӏ?`jR$H$1s= +{P&>M4T夲SXL ?@v:hnxG u^YJT QCGmڢ6?^k \] +B.Flܕ-kh`pB?54]^> lLz1[2>v-ybrL£f˛'TА"=C2AѭĈIF6y2itMgkˏv\h_sbN%z*bˑ$Dߘ$gF@3Te9@ +0 y;*@$_VU2cv˧T1C֜ -QR}6ښlP_Ký.m랈A 7s9$!W'%֟%^izgGLILՠ-BV lF_aiw;O-b1ULԠd7oI d !mq4\9J7Ԅ1Z0-Ur* +1bTQ<-i6Oy ?} m g[z~] hh7cP$ǣʵM['ƍ۸8S72jkt>Uuh].7LQ' LLfOԫB {N\u#_v4@<%Ɖ}ѻŬșj,ļ nc&ehh3OqrӺɐ2kG% NA+ɱAȓ]0t~*&"WFK?\otlr8uRP ?hlJ?:Ш5TQ\p}T,Ue\ ?<}SXoq{]Z-ξM})J셰m.JKoס~ߐ`1?`Jt19ELP3eoPuPD* +Swh~@>p b|LtZR jUf:ADIrz/ng7C &BSynH5ި[G%(LDK0po $oF%%@@ם֮igre`ZKК + + $v庻,eA+J4#cgH)Ѯ;[`e/iC} +MݪaɊZH3V |"aO&?z} <8XOV9K-+Tq9py9Q$"I⍩cJ6['XiNj(7M!$=*4c\CJLd9ݪs\U0Z=<2XsTh|v,s#:؏ENEWfUnro_NADzϳ5>d0Q]q_ikUx-XaW2VmEz>'cJ+373`K_CLj,0S +92[upz:z Kb%]7OZT0=mqub8NÊo;Qu&nA*3N4 +?7s v[Q<>Q=v\QgLh}a,׳{(º8rdl=r(J_!O+\د\\m&@ AB!{& xf@V^˝6z3V /rl@.%y0=y%^zZ%d o x\EyyxΣh9@…0~Ov\ ;;@US%QW@?RW^m%Xbe/z9I'y7g}sBdn +D9q(I |GAbEփc^"Jϔ4\~Cѩ|  ?ԩ*.#f/ŧ~9KH{1 s oiA:J)!3kXJͩRwjyG0A>gX pH(hc%\U?EZ,NvdMw{rιck<2kz:[]D>-Yk1V'1ݐ >KOWɈt9v^q 4S|;.HQe+NeLX]CQRf2#?<ByΕ3Y95{кz((GD }SU}0>zo*%׻$l& +}K+L5XB`{PFR/e{xIf!dw!q>)ο ׫lV]$>OmK1y^џ= "YkKgt[16eധp[hNc}]#^kNoʼm, 5uy<nTAt<w&+5Oy[N[P+J $iٍ/%ֈHEPBaz`~-a+wi W=Y%b-SQ=SVuIwﮖHC8q- WR͢ݼ?҉Gg5)9 P9_Q+[nk#%J!z6:Li)YexR4̩b&-bϠeNbx+Ԃ>xr}ԁ%Sx#\/aĬ1^BIO̅ԕx_<=rTi_[-W&g!z{Ni%3s|刽66g಑doD^-@AJHSPHS[N:OR~\bj1 p +endstream +endobj +2271 0 obj +<< +/Length1 1173 +/Length2 2916 +/Length3 0 +/Length 4089 +>> +stream +%!PS-AdobeFont-1.0: PazoMath 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /IKXQUG+PazoMath def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 165 /infinity put +dup 229 /summation put +readonly def /PaintType 0 def /FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-451 -318 734 1016}readonly def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-40 -283 878 946} readonly def currentdict end currentfile eexec -oc;j~EЪ%9.>XJٚмD"e?&oLH:]~nX%l޹dQ@a~M~EA˟V.UM؀")JY4қ UC92"\ܡw1rlxнtaA*`JpZ+TX{ԉ]_W_(~FvWfE@QcPNdqclY]O据k r ln8e &y~8qEd*f$_{}EN5w0amL@opra,YuvT fEC/ -^[XO2 WEƃKQB:Avyug=qp5/1[܂!l2T'9HCaĉwC3^Cy}^ 2A3>G|H.]J%KV`8?(0gt,OT7 $n"Jao82*t߮.Մe]'2bvi)k+T:CY#M57^kjrcTDd;y9/E͜I7K| Sݿ[l6 -K|OV`b'Eph(uf*؈{sG(\hM9?5 g| 9@? -;^;Z]_pX5MlpCbMD C![]z>nԥR>X5 ksƾl -yHRv,##ymB[! Y|+@w1y0+[3ހ ;.fK$w:; 06I@3]3}AE:l9;fQI1YuKYEXfhƼmxg{G9zςi{$@v2BG4#=-*n=׬>pa\ߵ wQSR9~R~{,VNQ:B/o,S[-gS9jCa7YFC; -gӃSޓ$2hH`N}H+iI9HuI&ՖJ&HPnͅLT|D쎂j'jʑ?k.&~w% RFϺo>aCwDe]ɡ>#_(-ˊ;]l׈ S \Z+J C<;ɒZ[H9Z<(*@L5G:xכ{yP 0DyQ/%ߤ]O 35Hw"%o14,ݶ 4?F)CkRnk5o -ul!xJp$ KNgGZs6^mYs8磩}2 HU -]O$H;Ci_'6[$K\x;^z8?!7&dDtrjpޗD+Ɇ9Zɀ3HTIVxuJ'8ҁ/,HO@afPC4Cob*l7#ױ?f)'WgsJ+) c&yn2lPՏʢ Pz`IM N0LV0k7%HBh5>ZY@U4h9jDF|HVx6ՂA {MhЌB|Worr6B4BRlk*6@֗1_r:~a-:55h ;zŦ6`69ɺ }׏LMa31>pѰMq#=4nU ߛa5|F#<, ;N`,mJV Clö˯fuL#i>4~Hm\=c+t$e&X\>" #TrE𒮲 x\5/WnTq)APɯmnDBޮa?,& B]]PEb-ֽw)2 K(]il?~6F k"}u ^ɊDl޽gG`L&Rf`V'3EM)Lۖ;'#gtIW#D]'rܣقOCXm6 q%Qm =GdbI6!#[ӻ>B6V hcUIF&i %fd@#aQ#02o2v`윊O줎 r3,iPfQfro3NY5%/F*=(V$"3s8;M&Fz-Yqɉ#ð~`1NVcqܙo71aiA<1HUqn4MN f>gҜ3 6$ۿ7!y{Np|j. ?CVX =OZ{C8L-Y+ ^UluJaŐ[*[TN$CԂ]8} /}bOW޵rrM-f.+Ў+XUt96{W -gaGrI4HarC+2)kͩHL E6No8׊G²XρH0wD/+$jnoE+:Ƅ [G^.$>y=U3Ef̯$|pZm| -t>=RpLLJ”)P^q 7k: \y -Fau"ɀеsv_T*;ɈiJPis4E\''>*UPZ(ӳ #.?^f04(GW`3ೌXjzU*54 m`Ag[X8]kRO1MCnVGkd28g|}/UR榝0Ar 43":PI:'+Bb\-%XSmgk\DDyk?* &̅!&'ѳFvC"W>BQL$tҦnoP''6)foS<5xS~΄q@0z6aWGM -0#$l:+jCsy$Iͭ.l2-5a -Tb);4$X/rTJ4AiՒvR(X`V,ۂaZ.6^ρ〶7'=QsG`9\>KǶTkIϹ3ZY\\.F5*r& ޛt_RB%<6L7k+ _ q)O:E^Wr$:ӵ0ƅߪREowOt8U}b$ܺv䛭KnPfBQA@B{E|0<:eTxxΕnEgH*D8yn¨E=eU%oJ.Bf_)pr -Iw9V]1)ѵXe>`91T-9oW|8KR NM09RÁ:?DwV5L-ŧkB쒢ϟמ*t(44"2ڣ;xmB@Gۈ*í7%J'٢ k4k)DLC*y̍i$^$&+KԌ#1YL_~pB`*<y7GEF]ǩ=p@f}RA d"cٔ D5B#/"IPa]N!ve< -<$ Fs^ à{sס͖͋=!\jחY@V\5be|3il"ƭ+4x5vڐy>v9-m\.2.P3 ;Kq}}̪YKzi3L@Ũ~N9ir|6Tm9ߪu$) Z.y3ږZytNQv:kA'aAExG "<}e$ڕy)U2YUj隹,wr{ ^I:Y7TY7Qme5F8r'ðҎO2跔~ŪPrB^@ԁ!;w`Ci$qE4F?%(hNTuӓy),U0ܜrfal_';SV{]p6Uj(mE=fG&!:׻$ ߽1AX>4 $޵b?op)DZݭJC̨+2D@S~Z^`7G}@6@ɠMmS_MrhI۬HAo`'C%tԋdK!wW.z(^&Rtm~-M._ ~|%L2`(xR?$)7 -4+m1؋(DZ^x8p -"Ugao6Yf, i8?G$`V{1r/ @:G+d{x{] NpYk.vTe%~tyǷV`P bEmNmpVĎ㝖uY}n~Sݎζ'v\)@~09F&` RD4ܻTG3 i}'V!N値/5MaISbq( 9UK!rdz~v"?1?aW/@; rO>$t[Z燸*6U˦ۑ${/qA7RxSq5ۺDaE 6 ٸD&S^+ -}KM*עGt81U\ r@Kʝϐu%Oέ_3{sRu7Xo2M4E,T")y@" :s -$񾫟`,@=R%L1-dz\#c9dtXyoCD>?"̏2㋁^u*a_/^k)Wq}mEZۼ_XJ5G0 `twJৗ%cU/pgp`:G>mcW{,] q-P=|sw;BM$:~gs#c%^p@y˪f蒲:."#Sһi_?u[M]?y!Ag@XKׂ'.9R^ueZ"th%'(^g2W| lPX)>Z?[$@UGqZ\6LˈPeZ^/rF _c -)~0zqaH=`zC#}x$<^q%*N2F.#{B4HarC+2)i*v,aMVM>ݝLFȌkYgrvH ~5 InIS$ a2E5ӊRI#>s<h_8]7s%p5[V4wӻ72+L=RZ -t[ eMVZ;;Ha)XC&+w>rW#!CIq;2!]蔨9 FI+[y17%rA]4F L y!v%{$SP()̖p eHn^1h GOo; q{R>?D7F<Ǽi:F,0@S DhtD~$mnX?}"+OéK&Fhq8|\@* Q }G2xL;q`(ZdžTQ׺Ճ($퐯 -!e}QD*HIp -xFt;6v&R =[ZkoϿN*4q&7rVГy8U6IRƓ|pK;:"63Pyl[60CDáu1" KaSF,AXk'"prsGA=dQsrOnVQ;:SGYx7?S$Kʘp= e+smOcSWUĎIJECl@ v}֪XaL}%+ -5Z7шa⸅jRTA[wdk3xLjW|4#iGRaDF%~ -֪X7eŸm^=cM"d J`D&K_: .;.S%3e"PR쬅F9pѬ[tFºeXYXKmn9mb+^ɏNI7j}>%,&C;g4~*6vU''&&MY@n(dYXv2}!RH^T>za Iš֢ʽn! U4L 7 ;%r8.dnHOzSv$iB7w qpI*SEy [>$ؔHex(B]rf֩nJ2AYnqt -tmN8t ^gt4r#ϪNZJ@0=bXoF\󃧖,0V9x S壘^)wߠq8`ZdK{X7 }J=t(/}ׯgt;LF~j*c68i+Q.afoޢP(d!m"̂diIkP!Cӟ3I"WY6A?x';qQ_QDj.pÅދ9wy*K!8KBk;d!%"igO }:tMWgdY.y682p&u:zM-–uQ?WQyfOc/B3Ks54>{ 8"yj' B؝I\q˼'JȰ)nЇhlӭDZ5&2BI૴ԽVbi@kABh!9_OE LnN0M/-E&'G!7JB{ך=y=_״xʹv:"0H(MUx0uϲOЊSyCv#@Զ1\I\K -:7/Y&s0}w?fPXńf_YOPn!Iˢ<˧l~0ɖ2`Cf㳩0<'f>F2'.a}A0?bvP!^ pg敕r`2W#l \P{T,߅SMf_E0Z4D4z1VX̂B7Zw6a\:CAvdS7[H -R)vX*5@!퐀HuI}τS`gM0U#>AUP$wZJX,RrE ٫P n7dj@ijfaG^đ仸JPL 6&Pn'u /@Vb-`с+5*Z9TÌF _iiɰDӦӅٺa[}'Gh;C RNn5~:ҧDe8LKK= _r ۫Q먖ޓ31pW1V&܈=*tēRJ΅AUdK5^qʯZYrsM}H<ާe_tk$E9AFaц%z:jooگ NJv!(Y08Rm((?اGn|,$?gn fOT+đ3>;f;*M"M|GlC~_ɌD1k<\S{ifT.=zu[lP d}Xt>/k -0su'#uȹ9෣kn92ײ( Qʭ^+0ߨ2[T$RH _Il,Dw,gk -4с(?c`rEd!C 㰙\AWd57=ZOI\Đy:PRf/\8Aw/lrsffS9<+K7\1a0C"\h,x>q vU'}ފʄMJ.rՄso=<e8zᗩ|lq4.}nc~-:ŖZg5UrHwu#&SMXƾLE75KZ-g|n -ō3{L `e2Ӑsf; &~A!wC>(aImؤ-m, -eJڝ7Uql>DqNi\f<`U"2.R>Q;٨E8a;*p~]mdIɕlzT#)DX-߁`$.nݑ'HTK{`C16d\O&/B$z^z kf} _(̘:3X>MkGP4̟f+\-oDEmc#(l=qK0ӆƗ}v2s} (Ng GMI,e u(Թ6g5:(Ѳ$O@ѯЭow} i~7{QF}NX0J-gGϋtEh2oE}R؍RU ;R]r¹hygBj3xD [`Nlfj]n/jTLor*&GLj~Cft ;2K p:Bb=25xc艱?Z7w(XѨM6{!ԷKI"V6' o~U; B*|ji -N$MO2EJS3jxT5޴/BB{v]XA1^, ebAuoJHLSS$z $ {jEBR"+kze 9Iq^HY6KirԒ2):v -Wim㜠ZLl1&CtD9_BqM`Ļ)ɘ2")\GӢV '7@VϒI6hV[M\؋>0ST0[oya/K:6?XHҚ7t(D` *<[;;zB:̦,u5 Tm&)`c|sE)$e"oO&^3RMgw|Zs͍9F SW|P`JIsi?9r=kPWl `6RnyqNpL4to3 8J WҸnHe+#VCʘ yKmfl^rYL.+2OK[wdk3xLjW|4#ka|2 < iRcX<* >A{\5ZP˽DJ<3/LJ:uoW$i@F>-CXeH4 8uD.8v'neQ@cbW+^1z|<{b/k('/1GQMgDL!g+O]}`u_FHR~TojbܕHzatfG웳)tMhYBS=F젯m͕8Zx-x {g=>PA2PvDK7@]qZe.h/xSHIW~@%nP5&vT1;ԉϨj`M,*өIRj%qT* -Fuv2 ͅw3p\x62i#;~sTw:*LӯD3x8tԙaMZS:nHNy -yحg#J,`yIg4adb _Hf9(iHjCɓ$!(PS9fWɻ[3*?o:eEg|f$Ґ*iU0C>_y5dG!wil*^D9O~8m8 W6j§pP΂1hpBf5jd%c0z2aS"GW !ԏ Tb8j 2>n:W)LhШ6J䩮|i RA5=OgClhqf>LR gEUZ9 {'v܍::Q&.k;7u@x 4Rubc8;0P]4oiQ]v>ԋd/ 3-W7 ] C}g},t/*}F@7 )ј3,ʚtJRW ny1O{,$C`lzF POE~Nc{EE$C2Nj6^RbƠOI`HdC|Y+O%оv%S{}Lh0+٥rgKUiB]v [J'ˤ]K?= Nunte|2%Ata_t*?d@ߙI֎2ԓqy>;i MV!Cw9~W^o #kp<+j΁ҕݑϬmUFB @mEKV@vG~>ᩛ1w/{S*gems'[7Tȡ OPƟt4k˓jMPBU\;mv/2WJy&$IwE'dUGޥjQ:xoS 20. Q i+m[RIz[?C\oۖ*0\>x1-!u3︒csоS`#+9LxPN=GR%= Q ݼSW_XUV"K>1Sdyd:F̈KfyX}6BM=:$ |~,è3]gGb^!o,v]K|tfKMsMklm+}w~ے8 h].^4!ҮFG|ֻ8J8clU6J/W\M>QsV@d ]:J4tQm3#F#| J~~&&;Ie-]0f*$R}}g=,zC#a1ho"Xgf\ okC/X@YW}Jc[ZN\]͊|Sfޱ-I%4dH&sb(0nF ۈ<1J˜NKIe9W첖&HPvt}T'aUu+*7RI‚E"]}M,"g($ KWJ$[. >0-QD}5AjNsb j)@PљI-mpk`kة 2j_m%<۩ny䕢qHR0<1ۡ-/";XP3bc[WS<4S78@^zay}7!Hݒ zd8Ng,`Sn+`S%φx\18rVbŌ8A#>0H&r Wr1w-#\Kǣ$9,iLzA f3+g'*#o0p6p_M_ƚˉ#=I+jT$.(Z`KAM px| -?s9Є8ow><7|#dIYDA1sFF||EvK?t#b}% Y3#:ql9WojisLzxbxEr(6T-ؿ 23uBy d@, .I -Rԣo_ec4J΍j -PЍGh eTl-pͽƲ v,{g]ե\ԯU9N&x_Kmp=Hđw)],Tv@?#"Fd ){`!}ǡЦ2uF $9 --G,AO7}#_,mG&} z}%6ktĝG @%# -ęp:ƈk dwp_H?4l Wz׆Nuzk:i8R=#*@>xћsa =2h%ZEC(X[rŝs,3gUWiش8Hvb+Y7TIU #P?E`D&&6({ *F\͊_FfxPSn䖍 -/)[\t4lb餄bAXCF\d#DoqQl~vtF] rle6I*us.+ѫUzZ eu|Mg259#\ӧ{˿a19:CK\Jx߄ ҰTk.b=%0`bJí "S9Qy;a^Bá{,w</~Ox3,%roX6~=˄@x!#d^恟 -GFDeؼ&an97}?`wWSS___6~c蹷ز^n[{ 3<*v5kT+'ׂipщ>z[&X;$- x}:l0e<({.DSWl eqRr;#/U[Kվ9/zH -$VLFE㏃A{歛l X== X2I{̺3Mc0ǖ -SGߝ. FR㚔eN QdWR-FIU;{)8=3}nyu~CT^<]\jmElDh{M5x%y:'|p 5͞g^)`B|پ1Olwv1'rLrMS-K1i+a"$$ -|;̸XٚJ#/1A_H.3hL ЫAM'bhލNe B'{t9,4S2f?;mPﶵeƻZvF#1\9I- + 7%LMnzlHݘUaQtBK)&盹j@A&YwZp@m3麢O*2nTzdz-E -?Z̎,k|-*6Z Zwޜ]j?KNOƱcƱstz%K<-|Zs͍ 6+DWF.[Oݏކ;'$:vk[hуɭPj%A*YS.q~QQOz~ú> 6i7}^FCQF'}3$Z4chnp ǧL`xR HI<>_ud?)9xc9 Lb(07DpG+FQ(Ie'0钧 B# -$;MgqqZ$cI%_E/JZ ؞Z1,+_I3AB%^GF-6AWL~=6>4P@x -Ub]>̦*4xmFû.L!86ƻIT"P\) -endstream -endobj -2230 0 obj -<< -/Length1 2210 -/Length2 15959 +oc;jtD[|<33229IfÐ"XXH`{(b$`Ꮻ2 Gy<\&MꐵCt+˅BJvƷmoϚ}^߼YTYC]S=nt9x>JK1'r6iX'l 6я=v1]mO CQC>iOLUO*TcTm(߀ 1U +nAYXU12rrE^Oy";Dm{O0 {2RBiNMufLon>Gl_1#Y> ؋nׯ ,G#IJ5.FE)a" pqo-4`7}ӺWt_ceuJh>>W! A5j-v`-?R tl.e)1=kdSi!5_l< -^+bގީܖnW%yg͚3N>Vp9e.ovh; ͍fW\^yя_ܓ'1︖œ]c*" 磺@A.XcǽD&(49g6vf4J ]5(W sԘtaȝ<[EpTU!JtО ?,L?!w sg0MhB1$sy8G(b>zuݬDoeHz)^0 +9JWf'UIcei+5H,r73g03{#Y_E^n2ݥ xdR$;9(fn*eHcAI#y`%,tŁ\ )_V+7\M7A4R"З@O!1$*ϤНsp%>*Ȗ, QɥH;Eٺ~b@n sXZۖ+ , +y#/!AL98Ta/eT,ut/u6~ 1QA\SW{N?2/G?E 8ӮchbK3q$;+^B(񬼨xฉk:wMX,Ӄ~R[&h8AS #L'ɧTp#{۪>;+⭼MuU[%V0EėٲC9؅Sםu^sI2\. +>j5xBĒڪ]˸f*g|x*cfr+B!H9R2H4^Ed>>J1uz&MLLioJ$!tFo_O>y,ު+#D qW2  tE"QIՅ.e]l w,*"Mf]i/FSꂒ.s_.n1 /8,}̨ W HFPsWkn3a9`6IݐWi>| =1uŪ4ԅXHAH +$-U3# +endstream +endobj +2273 0 obj +<< +/Length1 1188 +/Length2 2740 /Length3 0 -/Length 18169 ->> -stream -%!PS-AdobeFont-1.0: LMMono10-Italic 2.004 -%%CreationDate: 7th October 2009 -% Generated by MetaType1 (a MetaPost-based engine) -% Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS). -% Supported by CSTUG, DANTE eV, GUST, GUTenberg, NTG, and TUG. -% METATYPE1/Type 1 version by B. Jackowski & J. M. Nowacki -% from GUST (http://www.gust.org.pl). -% This work is released under the GUST Font License. -% For the most recent version of this license see -% This work has the LPPL maintenance status `maintained'. -% The Current Maintainer of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki. -% This work consists of the files listed in the MANIFEST-Latin-Modern.txt file. -% ADL: 778 222 0 -%%EndComments -FontDirectory/LMMono10-Italic known{/LMMono10-Italic findfont dup/UniqueID known{dup -/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -17 dict begin -/FontInfo 9 dict dup begin -/version(2.004)readonly def -/Notice(Copyright 2003--2009 by B. Jackowski and J.M. Nowacki (on behalf of TeX USERS GROUPS).)readonly def -/FullName(LMMono10-Italic)readonly def -/FamilyName(LMMono10)readonly def -/Weight(Normal)readonly def -/isFixedPitch true def -/ItalicAngle -14.0362 def -/UnderlinePosition -167 def -/UnderlineThickness 69 def +/Length 3928 +>> +stream +%!PS-AdobeFont-1.0: PazoMath-Italic 001.003 +%%CreationDate: Fri May 17 11:17:28 2002 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 14 dict dup begin +/version (001.003) readonly def +/Copyright ((c) Diego Puga, 2000, 2002.) readonly def +/Notice (Copyright (c) Diego Puga, 2000, 2002. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/FullName (Pazo Math Italic) readonly def +/FamilyName (PazoMath) readonly def +/ItalicAngle -9.50 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def end readonly def -/FontName /XVBOSG+LMMono10-Italic def +/FontName /DUJUUF+PazoMath-Italic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 44 /comma put -dup 100 /d put -dup 101 /e put -dup 33 /exclam put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 45 /hyphen put -dup 105 /i put -dup 107 /k put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 40 /parenleft put -dup 41 /parenright put -dup 46 /period put -dup 114 /r put -dup 115 /s put -dup 47 /slash put -dup 116 /t put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 97 /alpha put +dup 98 /beta put readonly def /PaintType 0 def /FontType 1 def -/StrokeWidth 0 def -/FontMatrix[0.001 0 0 0.001 0 0]readonly def -%/UniqueID 0 def -/FontBBox{-491 -316 834 1016}readonly def +/FontMatrix [0.00100 0 0 0.00100 0 0] readonly def +/FontBBox {-70 -277 902 733} readonly def currentdict end currentfile eexec -oc;j~EЪ%9.>XJٚмD"e?&oLH:]~nX%l޹dQ@a~M~EA˟V.UM؀")JY4қ UC92"\ܡw1rlxнtaA*`JpZ+TX] >:|smea댍؄lv+:ɋD([ՈGJJOęIz&EnqJEz&Cxh+ rnnDgEaw'}|ܠꜱ$%É ׍ZVgHTC(I_H7}$¹%\yOaۋ'Oiȑi'%o2{PQwCX7%S?s~u'iiq쳀N 3w QE:u廕=L)Moi\d!<0ZER%qa` k)V&#RITxMk'ek) }I\qG#Ov1;dpV5 <^c ./#QEUhZOGUce5E«Ir&v1U4́SN7pkVe^qT"ĕ>UѪj "*Ú}I璘]KА}_pMV|~mv5ѰQ+-0"&'O` imh)6kּeyj/ۈjoA4XD1GvJC2X:.'I|7ߐO֗1_r:~8Up֡aEr}Cw {˱ l[]WVz,U+gR訑hiL][cm>ǘbT08٩VAx`! w -.rm){z"5xK09u@QjS_{|'/ VF.Z!z;jp.HR{hBA+i*?IPaHȅr!~o 2A9 SO}Ğ~4'FgCp|x{Z(HK a[,~m3,Ti=EXa}b9-[J"O{R1* -l7H.Hͺァ+2y޺ŦkPGvՔ|q+D@i㻽IhJeH=ou?60+٥r)tljRho1WLdO(b=5Ne@cH&͕!T -)Wz"_׶̉VfIfygEY< QJU$wxSGZcT* OTc bGn5ަ2TMehX=,p8 W.^ F`z@}4奞3  YcpìcQa馦m+rf]kLfz/Z=]n}x8HțQ;}7hG ZEףjL*m]۴gN>2\s5ϊ]ki'llG^}U?fMUJf&cvRma0$UnѓIjV;9I7By`CٖgRjQb60y ,>v}JbXgPx|<͒U%`լU.` -׽Y) C ÒNև0FN 0+jI& -{e~_'X^jRT:3䘙79r֗[X0%lOX?V'fmGmZlB ⺵ˑ1mfIIQywH(xtY8fRb5jt닮N;tKQҖ_םH<c8G`dP]j|j -&ɶc>(_&;y¦ Ԑ] -])Jb> w33ڞξ`ŝSvm߿LoN"uoqӖ[cg 7'BwGɈ -U|$]4bakЃ 6[qzBv_.Av$ϱWBȍ̡ m~|D^ʉ.8.L쏴ü62`dƅt|]E04$?kJ!Xg ^bӣJۈ }3f$4P-duAz)]{'a[`Bw~v9+A ^9Wfզ[J8~@%|F,ȁTh՛ڏ -rg3 -,Rp؋4eH?6jQx[-Ɓ-ظy'("_T۴$43/|,c -TXЄ M[JC~}Pq_yL+ ݢN~׈Tr -]uİE)bE{=leݶ  -;S IW4Zi*I.+NyqW .U>u} `l$DS3oFo3,Ti=EXt94E%$^F!}7S7kDs#+6'1rf*go&z* {Nl'{{i5,>gJSV~]X;1F!!u>c+&ZOqd4IGRiΌI zwko|i{2 [0B(-Tn/æe/oJ~PI!|!sdUg~2MCKK"K&==~[*ӡ$‘vbж#ǯhR|-u2 SyH+uFXޱ{A'P7&O1UaO_ˆ.esgO3LIRUMDYIZEn&rҖ?s%Lb?3Q*Bh{Kfr岿Qd Ԡ`uʼn~qvb}^Z 0G>Ѕ"ʸiX쐻1($j2jnGƁgNE^xl5v߲ɾ"ϔasRWԔ1Sbן6,0]8e -Ï!Z=Qo$l{Gky|-zWܿnE~#s'Fp^?Jm7EψP:ns/}묬Zb|QOdݢ}xnadW/יUhNo&H}nfnWb8`+ s}+RF5Pwd --4L3<3vjSf}2dLs1$}۴X=\ V0'ޖ yT-d(3k%R`ǺZGfk򋝂'ҳ%xr -ݞ*dD)!h^Av΋l;,X#RhJ H!58+ȢKy K]R^B <>5(nӲbz){yC&Fos%6) -̱O|%#8|l%Yni7?b#@IF"MX ³}kxzA)&#i:ALkip¦?? )` hX)&ҭ"k[+^pDGh61xQwn,/,lؠ[O128j#mG'$zptr,4q`=vspEڐ7=pHV^VF["ӯϑt+R_:9ﭗ8bw=EW `q:P1qOL- !1=O;R=ɝdC6kt^XP뇁}Wy48#?RCTvd7G2"=X[ -%ܧRK{ݩI}$Y/eTȜ9{CՃ[*zQ (b%b>\B#!m/f=_L+CZ\=Ŋ;8f6,ǍxT!`=.Pkxypyq>FhRy\ޘ{ t4<]l'%*}A` p zۊ̤PRiieD)~&ڴoY0/xH,`i:L"eJ鹠w< GG"İc]g;qdZ*<.ۢێiUnMjo޳qo-l$Nc/7%i#;T[}׫{ʾ~Bh~P67.pR %{=gnd#$(v崚 '`HtR I0FVҲ&GyLFb OpxMa6<O#'gP'Jr#R̴|bkTVrf/e2vyi֫/kr|1PLOmx,+UvTV냗l!DY;z1u.q>W;ItM8MTFc: -إ`Ẇ<V_>e!SKЯB '==dH4V a⤿w01t%z*QsM  h,dlJd&e6vYQCBH%+"NnbՠdN*6a6}Q9-o :,GHr99[ U/`lMTt[WBՆcq6s<Ѝ@N A菉 P.Δ'F8QHĝJ7Mjo2jxrCF!>eH{rN N̆z]<J 1zo}D^) N 93y2Hb̙~O=R{o˾J3_>Y`8s=58ڭvUtR>gitL( @;Z5b> -\l2)ˁ/ *J[Xmц -s(>]7c[d3jVcwޠlp0dsȹ@:oVo.^ Яѩ%e: }F*.Q׌ s{R Vb8+psQ7qYKWԣK{Rs@In\Yy yA-JU%XInkGEt -Cn0fet.ЎFTsoXۇ :Uu8P7V]䜜ͮ,;.9lnECL4( y9)=Al<Ũ0RlORCsIbnY$K)b0m\ A0X9,{+HDlF-xEN4m4sP=5/0wcТC3WinrR͉P?( rNAes=&^5=_βZbֈU5ܿ6Λu!N\`(˴n(D< -SE0ԋ8tV} oxobBi&E=M$5J|ҏXk:k,#0礧VO\i֜[;.@% ,ܲ R& -PoT8׵iY³Vy^,2J o5VLos,A` <YSN&F^Ik;sCN3:=3>EC޼P2jMb}qp*qC"wb'f߅OK֧pDvu9'ԏ0f1bewyu3>//e˒[\{^Ruoce " 7{CܝkJCq6#eA:`DMYX'N@q~={ӇA6q#ςZCUrSטAx&k'%Y~.taZUCl޼3`amqOzD#vd_*î\^*8Qu2'kAxL=p7Rhl\YAn AkHe""] dsH )-}mcyKqIrȆe#,ۙGs;۰K;6oф4qX]A3̢By"v$ynǓ$B eL7[<KTе)ˮJن?⳷:ЀdzKį 6E-XOSC9cE~.|ml'tS4tTbv~<>ڧ,)ćBRǏ_&_(e;1zg)|M KG(Ud"˾)S$e;GH%XHu\$It\,F^K2m ]Eu頷pl8H e/`.$0 Q|b惇a,PHa1, -S} Z}9@+),8HU`qV);k5ӊRI#>sB:TNk^v& -Qf%QomW֪݆roo؊y>>Du]>2q<8]04CdjP9QEO篢Q-i%\ڙZ0JI g5u4^pm" 6yq*]خvdE~(j='è2%yz__?ڗ 99.5[+HjU - y$=ZZ᧲r.=xSQK*'qJRFR#&޷N A>Q"p1\9Qּ -b8v,Le/s]zQ٤ƴ˥Mvs+C6,R:}5-i6T S&J]^i9/XA)=ꖼpY^=fC3 U ~sU>4ߍš=-.chCt1SU3_AH3Bd+{jn(s<ثJTn -$1 <4ǿ S|l b2ʾF%6r.<)pNTvZ闏+U#u|RqP_~YC7C`0"NBJ6RzZQo)Wd] g7afMǾ. +*:QȻ q[Lzk8dfG`{a` k)V&h -X%认?Etde -_wR< :`ɧ*P6zkRu&.Ŷ 'p]=ll; X0/ۇqbTU\69O4yFAbZWVfzuvaJh%W!>|C[́m!@?`^XyGF);-aTJ@p+E ˁ!50X‹H!_^)LB[TP`bjt_!@&ԀQW¥k l$j _;Rď#O@g/pճlqG㤥g5z! ܾi4;epŲZf>eި7cU-tؙG^Su@P6FӴsFB\ -g_ӂR -)G1drsiz0z V݈Hx]XGe7ԟ?AͤU*vs =;@#iսƍQ-~DPFnTQ uhgGW1y#ĹUϐԥɄo+S{ Yd|/|QwRo`a# R}d믴)%e{ -[8N_?gon/</^2FlP}fc>,!Jɉv#&#Y9бdZ<XL{lpՙ ٴʗ&"L?")5tL_fTlģ4deP׺ՌjZ"=u#*B2=Vuv灯I/cKDhODΠlw,}wQy~D f% 997]`F꾙o^vXrG[Y.{9Pʅj5ccnF`V|EGbDh83ׁWh&2|=Y}T!11Ă}՘}d/!;êERWԴA5dXRFVE*%&/$Ӆ ͭ- J\Fm?L \v@Ń8<5k@⢒Meoky} ?j BEFȞ+wbcSzr=Λެ/6ob[1˯+c Bc o&֘:ɣ:8C!հ$Q83}<3`r8>C濐sI&Ab J-.imhb˙qsʼnaV\uu#2e8(eďߖ.D!7Fxcn  URn"ff$d 7۞ߪ]L-a YLU`ɼ">F}?2Ziأ8a4C^&paai" -&eI*XifKJT@9tF(ֱgq؜1Y2בY^n+1n;y޴9#~I 9 .I/ב.LݥJA-eѢwAN爢pjïo5R},D낃}cGKO͈]K&渝QЏ!eSV= -DG@|Skl;cr gHe<SZ&BV"{骴?>0w.WYuKa˄u׻)Sp *-Ifv側9&ZMPwvt)ЧR56 !?{o@񽎎j3CQtc%;^sL_{:7.RjPyP!3>rf3Yh?N ' -O KDJ1*C%\l1HJ3\klxJşPLC,y Ba?jÒ'trGf-xсJ6 weG1a"]IRif=afwJ];ވCe^SBN}^M+ڋ[$XJK<웊MGzTظ' j@61s?(ںo<4 Wp V.x^Tٍ@)|)$w}}?)\$Z9iMM[vҕ"8R}J13,C@ -/ZFRލ NtZB=&%X1C wwʳ&U)c 260*޴! kѹOJKƣwG4Ky5P&=ģF1/2JPcinƗf"MFun8V.%uy[i3vN#;2DZӈ1oB8{kJfȭl֞&AI`)V{[6_$J.ddAL;y<] eב)6~8Am9ÆGCT3j[n7Ga.CD^5Z(\A8'_|@G8gj\B-? -"|g3 pB!ڧ)G%J9lMo Z/ĮܑӦZegM<g}U|lr䝳~Yd}RtR(1_*J\-yu[JjrA%Z׋=Ls5'.Εp\ -Ǵl\*O_g7Jb ;lE˦O~7,'12w?d}5\YʢI(pm +_uu9c1{QZ%11A\JV;`fsX;:M4/  }j~V=kj=Њg$'o*C2_. -22&0Dܟub#Y?&OG'7Ei͔Ɲ' -z-Z)Zp)ҚrJjc0D#+ko{.^[4M)vZ(S$ksFUmn8pfeqQxPRed֕ -endstream -endobj -2232 0 obj +oc;jtD[|<33229IfÐ"XXH`{(b$`Ꮻ2 Gy<\&MꐵCt+˅BJvƷmoϚ}^߼YTYC]S=nt9x>JK1'r6iX'l 6я=v1] +đg@F7pqӁ')jjOh%Ssq={.] ZO7єEՄ|۪uBwLÍ `'&0Cg)X0F?nY&8 ˹r]lpKGCpoğg\t/bj}t SEcqR7VL%Y'1b J71SU3=gO>bHt kKc:hA:F.xW(L^N1K @_P̹>nnof7-U El#+A5FԔkyt:RR2\3 l v"ڪ> V b/&"@4 +nD5tv_\$S|KpCO1vF^(By@`gFszV0Qn .T=>>rYA,{ɠQrF!s߸ߟ0׀ߎ5ˢV<4d(nLس[PC;+qޥK V:d&>J3)Q6P|B5 e )\@~7mknˋ$ԶܖP+C}o*( -.47W?8"N[.^7/Ɵ3/3j(ĦwN wLjC; f&cv^%:S,yr8N@K}m>KWKn9}%FSGhpxC(@rX#?F0ʃ#w^cuֻy"-lE#~%U1b[ ^•1@*rEPWS/?N!< e* Wxax"(Z5ŅQu? +UgH{@^Κ2]Ʀy1Q',XL kx2 ]mȌ0`픈p:*:_kp +ϊ%,vVb]2q2嶖ćVas |HzN@=ܫ7ikK\}pYNsS)# 􊄡c,E׀Z=D=0Maf~nľ4ߍš2Bob bObwww>|Gkh6p r[#P"77vE8ʖ$;E6zдR]}##+0"i%uCj,|aSVMx5p6Uj(mE*~mYdǡ旵w#`9k?)픥ZW|M%H*'a>"Vћw5t0QPGR%"*Bu+8~j X< @cNngYGй34 V])-l Ɋ5imՙUV#Ŷ{ۭls1we(\OL ER~[шPs1\zLDgSS[Oup6(@1RsP1 ?=E؜neM6N5w<3dq^cF)UI2M F~q +1йmدNIB}fȷ/ZMYE(Y֋'Ჹ +T;UF7<{LN-^(U'UAf0GivO0P$ 4Z@/.}L dlI/_f>k[WSʪ1<" ̣U3 lP.+\Bl{ɂH%չ'%@-ƺRS覟yNuE|v^+ZRkڜ[ȈRԶ0ZH: +wFe@g`!$ pepdw,,# ov>ժI83!/ J?|i$d_(/;b49%Xealwv_̹@drp.l䧏<ɁJt~M[y 3[{ +endstream +endobj +2275 0 obj << /Length1 1614 /Length2 22531 @@ -32784,7 +34011,7 @@ s K=(HfUrIQ$W0Lյ8Xk߉JMz{Pԓ>$ y"jrXfyLEtnyɎQ]Ex.B;[XnUOś1Ndɸ&Ό endstream endobj -2234 0 obj +2277 0 obj << /Length1 1616 /Length2 24418 @@ -32909,7 +34136,7 @@ c51 A2C05o]}I(&* ;@ar@\-@|5JZT .1T"aJk:bĖD| endstream endobj -2236 0 obj +2279 0 obj << /Length1 1620 /Length2 18673 @@ -33041,7 +34268,7 @@ ST ƀ{qKT%4 ~T:s# uBK@wI5=um9.tў25Ĭap5E4D(Xm{>o:=TAB[inQՃ:m.8UE%x~˹>:@CQBY: endstream endobj -2238 0 obj +2281 0 obj << /Length 1007 >> @@ -33111,16 +34338,16 @@ end endstream endobj -2239 0 obj +2282 0 obj << -/Length 1153 +/Length 1577 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmitt10-lm-rep-cmitt-0) -%%Title: (TeX-cmitt10-lm-rep-cmitt-0 TeX cmitt10-lm-rep-cmitt 0) +%%BeginResource: CMap (TeX-cmitt10-builtin-0) +%%Title: (TeX-cmitt10-builtin-0 TeX cmitt10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33128,22 +34355,23 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmitt10-lm-rep-cmitt) +/Ordering (cmitt10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmitt10-lm-rep-cmitt-0 def +/CMapName /TeX-cmitt10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -5 beginbfrange +6 beginbfrange <07> <08> <03A5> <21> <23> <0021> <25> <26> <0025> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -35 beginbfchar +71 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33179,6 +34407,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33189,7 +34453,7 @@ end endstream endobj -2240 0 obj +2283 0 obj << /Length 1535 >> @@ -33295,16 +34559,16 @@ end endstream endobj -2241 0 obj +2284 0 obj << -/Length 1291 +/Length 1724 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmr10-lm-rep-cmrm-0) -%%Title: (TeX-cmr10-lm-rep-cmrm-0 TeX cmr10-lm-rep-cmrm 0) +%%BeginResource: CMap (TeX-cmr10-builtin-0) +%%Title: (TeX-cmr10-builtin-0 TeX cmr10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33312,23 +34576,24 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmr10-lm-rep-cmrm) +/Ordering (cmr10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmr10-lm-rep-cmrm-0 def +/CMapName /TeX-cmr10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -6 beginbfrange +7 beginbfrange <07> <08> <03A5> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <61> <7A> <0061> <7B> <7C> <2013> + <03A5> endbfrange -44 beginbfchar +78 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33373,6 +34638,40 @@ endbfrange <7D> <02DD> <7E> <02DC> <7F> <00A8> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <00660066> + <00660069> + <0066006C> + <006600660069> + <00660066006C> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33383,7 +34682,7 @@ end endstream endobj -2242 0 obj +2285 0 obj << /Length 2050 >> @@ -33529,16 +34828,16 @@ end endstream endobj -2243 0 obj +2286 0 obj << -/Length 1114 +/Length 1543 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt10-lm-rep-cmtt-0) -%%Title: (TeX-cmtt10-lm-rep-cmtt-0 TeX cmtt10-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt10-builtin-0) +%%Title: (TeX-cmtt10-builtin-0 TeX cmtt10-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33546,21 +34845,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt10-lm-rep-cmtt) +/Ordering (cmtt10-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt10-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt10-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33595,6 +34895,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33605,16 +34941,16 @@ end endstream endobj -2244 0 obj +2287 0 obj << -/Length 1109 +/Length 1538 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt8-lm-rep-cmtt-0) -%%Title: (TeX-cmtt8-lm-rep-cmtt-0 TeX cmtt8-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt8-builtin-0) +%%Title: (TeX-cmtt8-builtin-0 TeX cmtt8-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33622,21 +34958,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt8-lm-rep-cmtt) +/Ordering (cmtt8-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt8-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt8-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33671,6 +35008,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33681,16 +35054,16 @@ end endstream endobj -2245 0 obj +2288 0 obj << -/Length 1109 +/Length 1538 >> stream %!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-cmtt9-lm-rep-cmtt-0) -%%Title: (TeX-cmtt9-lm-rep-cmtt-0 TeX cmtt9-lm-rep-cmtt 0) +%%BeginResource: CMap (TeX-cmtt9-builtin-0) +%%Title: (TeX-cmtt9-builtin-0 TeX cmtt9-builtin 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin @@ -33698,21 +35071,22 @@ stream begincmap /CIDSystemInfo << /Registry (TeX) -/Ordering (cmtt9-lm-rep-cmtt) +/Ordering (cmtt9-builtin) /Supplement 0 >> def -/CMapName /TeX-cmtt9-lm-rep-cmtt-0 def +/CMapName /TeX-cmtt9-builtin-0 def /CMapType 2 def 1 begincodespacerange <00> endcodespacerange -4 beginbfrange +5 beginbfrange <07> <08> <03A5> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> + <03A5> endbfrange -34 beginbfchar +70 beginbfchar <00> <0393> <01> <2206> <02> <0398> @@ -33747,6 +35121,42 @@ endbfrange <27> <2019> <60> <2018> <7F> <00A8> +<80> <2423> + <0020> + <0393> + <2206> + <0398> + <039B> + <039E> + <03A0> + <03A3> + <03A8> + <00AD> + <00A0> + <2126> + <2191> + <2193> + <0027> + <00A1> + <00BF> + <0131> + <0237> + <0060> + <00B4> + <02C7> + <02D8> + <00AF> + <02DA> + <00B8> + <00DF> + <00E6> + <0153> + <00F8> + <00C6> + <0152> + <00D8> + <2423> + <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -33757,7 +35167,7 @@ end endstream endobj -2246 0 obj +2289 0 obj << /Length 853 >> @@ -33815,7 +35225,7 @@ end endstream endobj -2247 0 obj +2290 0 obj << /Length 1113 >> @@ -33893,7 +35303,7 @@ end endstream endobj -2248 0 obj +2291 0 obj << /Length 1477 >> @@ -33996,7 +35406,7 @@ end endstream endobj -2249 0 obj +2292 0 obj << /Length 1477 >> @@ -34099,7 +35509,7 @@ end endstream endobj -2250 0 obj +2293 0 obj << /Length 1482 >> @@ -34202,285 +35612,33 @@ end endstream endobj -2168 0 obj +2250 0 obj << /Type /ObjStm /N 100 -/First 973 -/Length 17544 ->> -stream -606 0 2163 57 2170 151 2172 269 610 328 614 386 618 444 622 502 626 560 630 618 -634 676 638 734 2169 792 2174 886 2176 1004 642 1062 646 1119 650 1176 654 1233 2173 1290 -2178 1384 2180 1502 2177 1561 2182 1629 2184 1747 2185 1805 2186 1863 931 1921 930 1977 890 2034 -891 2091 906 2148 887 2205 888 2262 2187 2319 883 2377 2188 2434 1046 2492 2181 2550 2191 2644 -2193 2762 918 2821 889 2879 886 2937 882 2995 2058 3053 885 3112 2194 3170 884 3229 2042 3287 -2043 3345 2190 3404 2195 3498 2197 3518 2198 3889 2199 3992 2200 4151 2202 4174 2203 4629 2205 4758 -2206 5056 2207 5702 2209 6173 2210 6804 2211 7275 2213 7850 2215 8075 2217 8319 2219 8667 2221 8893 -2223 9124 2225 9409 2227 9934 2229 10179 2231 10638 2233 10981 2235 11460 2237 12036 2208 12465 2196 12906 -2204 13124 2201 13246 1851 13652 1782 13815 1460 14005 915 14166 914 14356 913 14516 970 14706 1016 14895 -1254 15085 1127 15250 665 15420 667 15610 666 15800 668 15990 881 16103 971 16216 1028 16331 1062 16451 -% 606 0 obj -<< -/D [2164 0 R /XYZ 99.895 284.171 null] ->> -% 2163 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2170 0 obj -<< -/Type /Page -/Contents 2171 0 R -/Resources 2169 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2172 0 obj -<< -/D [2170 0 R /XYZ 149.705 753.953 null] ->> -% 610 0 obj -<< -/D [2170 0 R /XYZ 150.705 720.077 null] ->> -% 614 0 obj -<< -/D [2170 0 R /XYZ 150.705 633.991 null] ->> -% 618 0 obj -<< -/D [2170 0 R /XYZ 150.705 559.861 null] ->> -% 622 0 obj -<< -/D [2170 0 R /XYZ 150.705 485.732 null] ->> -% 626 0 obj -<< -/D [2170 0 R /XYZ 150.705 411.602 null] ->> -% 630 0 obj -<< -/D [2170 0 R /XYZ 150.705 325.516 null] ->> -% 634 0 obj -<< -/D [2170 0 R /XYZ 150.705 251.386 null] ->> -% 638 0 obj -<< -/D [2170 0 R /XYZ 150.705 177.256 null] ->> -% 2169 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2174 0 obj -<< -/Type /Page -/Contents 2175 0 R -/Resources 2173 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2176 0 obj -<< -/D [2174 0 R /XYZ 98.895 753.953 null] ->> -% 642 0 obj -<< -/D [2174 0 R /XYZ 99.895 720.077 null] ->> -% 646 0 obj -<< -/D [2174 0 R /XYZ 99.895 650.062 null] ->> -% 650 0 obj -<< -/D [2174 0 R /XYZ 99.895 580.047 null] ->> -% 654 0 obj -<< -/D [2174 0 R /XYZ 99.895 510.033 null] ->> -% 2173 0 obj -<< -/Font << /F59 665 0 R /F67 913 0 R /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2178 0 obj -<< -/Type /Page -/Contents 2179 0 R -/Resources 2177 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2158 0 R ->> -% 2180 0 obj -<< -/D [2178 0 R /XYZ 149.705 753.953 null] ->> -% 2177 0 obj -<< -/Font << /F62 667 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2182 0 obj -<< -/Type /Page -/Contents 2183 0 R -/Resources 2181 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2189 0 R ->> -% 2184 0 obj -<< -/D [2182 0 R /XYZ 98.895 753.953 null] ->> -% 2185 0 obj -<< -/D [2182 0 R /XYZ 99.895 723.717 null] ->> -% 2186 0 obj -<< -/D [2182 0 R /XYZ 99.895 698.792 null] ->> -% 931 0 obj -<< -/D [2182 0 R /XYZ 99.895 638.64 null] ->> -% 930 0 obj -<< -/D [2182 0 R /XYZ 99.895 583.689 null] ->> -% 890 0 obj -<< -/D [2182 0 R /XYZ 99.895 523.438 null] ->> -% 891 0 obj -<< -/D [2182 0 R /XYZ 99.895 479.068 null] ->> -% 906 0 obj -<< -/D [2182 0 R /XYZ 99.895 433.422 null] ->> -% 887 0 obj -<< -/D [2182 0 R /XYZ 99.895 386.501 null] ->> -% 888 0 obj -<< -/D [2182 0 R /XYZ 99.895 340.855 null] ->> -% 2187 0 obj -<< -/D [2182 0 R /XYZ 99.895 295.209 null] ->> -% 883 0 obj -<< -/D [2182 0 R /XYZ 99.895 249.563 null] ->> -% 2188 0 obj -<< -/D [2182 0 R /XYZ 99.895 204.585 null] ->> -% 1046 0 obj -<< -/D [2182 0 R /XYZ 99.895 146.317 null] ->> -% 2181 0 obj -<< -/Font << /F59 665 0 R /F62 667 0 R /F60 666 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2191 0 obj -<< -/Type /Page -/Contents 2192 0 R -/Resources 2190 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 2189 0 R ->> -% 2193 0 obj -<< -/D [2191 0 R /XYZ 149.705 753.953 null] ->> -% 918 0 obj -<< -/D [2191 0 R /XYZ 150.705 716.092 null] ->> -% 889 0 obj -<< -/D [2191 0 R /XYZ 150.705 664.064 null] ->> -% 886 0 obj -<< -/D [2191 0 R /XYZ 150.705 622.283 null] ->> -% 882 0 obj -<< -/D [2191 0 R /XYZ 150.705 577.073 null] ->> -% 2058 0 obj -<< -/D [2191 0 R /XYZ 150.705 543.917 null] ->> -% 885 0 obj -<< -/D [2191 0 R /XYZ 150.705 512.037 null] ->> -% 2194 0 obj -<< -/D [2191 0 R /XYZ 150.705 480.156 null] ->> -% 884 0 obj -<< -/D [2191 0 R /XYZ 150.705 438.971 null] ->> -% 2042 0 obj -<< -/D [2191 0 R /XYZ 150.705 380.53 null] ->> -% 2043 0 obj -<< -/D [2191 0 R /XYZ 150.705 336.754 null] ->> -% 2190 0 obj -<< -/Font << /F62 667 0 R /F60 666 0 R /F67 913 0 R >> -/ProcSet [ /PDF /Text ] ->> -% 2195 0 obj -[1000] -% 2197 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2198 0 obj -[277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] -% 2199 0 obj -[853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881 0 0 0 0 0 0 0 0 0 0 0 0 234 0 881 767] -% 2200 0 obj -[528 542] -% 2202 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2203 0 obj -[531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] -% 2205 0 obj -[388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -% 2206 0 obj -[777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 761.9 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3] -% 2207 0 obj +/First 1019 +/Length 17555 +>> +stream +2249 0 2252 471 2253 1102 2254 1573 2256 2148 2258 2373 2260 2705 2262 2949 2264 3220 2266 3568 +2268 4074 2270 4308 2272 4782 2274 5008 2276 5239 2278 5718 2280 6294 2251 6723 1862 7164 1793 7327 +1471 7490 923 7651 922 7810 921 7970 979 8131 1025 8291 1265 8452 1138 8617 673 8787 675 8977 +674 9167 676 9357 889 9470 980 9583 1037 9699 1072 9819 1103 9939 1145 10059 1191 10179 1233 10299 +1292 10419 1344 10539 1393 10659 1442 10779 1482 10899 1521 11019 1568 11139 1612 11259 1649 11379 1685 11499 +1724 11619 1765 11739 1794 11859 1829 11979 1866 12099 1901 12219 1940 12339 1978 12459 2019 12579 2058 12699 +2116 12819 2212 12939 2294 13059 2295 13177 2296 13298 2297 13419 2298 13540 2299 13661 2300 13736 2301 13841 +663 13910 659 13984 655 14072 651 14160 647 14248 643 14336 639 14424 635 14512 631 14600 627 14688 +623 14776 619 14864 615 14952 611 15040 607 15114 602 15226 598 15300 594 15388 590 15476 586 15550 +582 15675 578 15749 574 15823 570 15948 566 16022 562 16110 558 16198 554 16286 550 16374 546 16462 +% 2249 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -% 2209 0 obj +% 2252 0 obj [605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500] -% 2210 0 obj +% 2253 0 obj [528 545 167 333 556 278 333 333 0 333 606 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 333 250 333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] -% 2211 0 obj +% 2254 0 obj [611 611 167 333 611 333 333 333 0 333 606 0 667 500 333 333 0 0 0 0 0 0 0 0 0 0 0 0 333 227 250 278 402 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 606 333 606 500 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 310 606 310 606 0 0 0 333 500 500 1000 500 500 333 1000 611 389 1000 0 0 0 0 0 0 500 500 606 500 1000] -% 2213 0 obj +% 2256 0 obj << /Type /FontDescriptor /FontName /MNPEHI+CMEX10 @@ -34493,9 +35651,24 @@ stream /StemV 47 /XHeight 431 /CharSet (/radicalbigg) -/FontFile 2212 0 R +/FontFile 2255 0 R +>> +% 2258 0 obj +<< +/Type /FontDescriptor +/FontName /SFGIZH+CMITT10 +/Flags 4 +/FontBBox [11 -233 669 696] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -14 +/StemV 69 +/XHeight 431 +/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) +/FontFile 2257 0 R >> -% 2215 0 obj +% 2260 0 obj << /Type /FontDescriptor /FontName /TPELEW+CMMI10 @@ -34508,129 +35681,114 @@ stream /StemV 72 /XHeight 431 /CharSet (/arrowhookleft/greater/less) -/FontFile 2214 0 R +/FontFile 2259 0 R >> -% 2217 0 obj +% 2262 0 obj << /Type /FontDescriptor -/FontName /VKSUEJ+CMSY10 +/FontName /SOSTRQ+CMR10 /Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 +/FontBBox [-40 -250 1009 750] +/Ascent 694 /CapHeight 683 /Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) -/FontFile 2216 0 R ->> -% 2219 0 obj -<< -/Type /FontDescriptor -/FontName /IKXQUG+PazoMath -/Flags 4 -/FontBBox [-40 -283 878 946] -/Ascent 0 -/CapHeight 0 -/Descent 0 /ItalicAngle 0 -/StemV 95 -/XHeight 0 -/CharSet (/infinity/summation) -/FontFile 2218 0 R ->> -% 2221 0 obj -<< -/Type /FontDescriptor -/FontName /DUJUUF+PazoMath-Italic -/Flags 4 -/FontBBox [-70 -277 902 733] -/Ascent 482 -/CapHeight 0 -/Descent -276 -/ItalicAngle -9 -/StemV 65 -/XHeight 0 -/CharSet (/alpha/beta) -/FontFile 2220 0 R +/StemV 69 +/XHeight 431 +/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) +/FontFile 2261 0 R >> -% 2223 0 obj +% 2264 0 obj << /Type /FontDescriptor -/FontName /NCCVYE+LMRoman10-Regular +/FontName /VKSUEJ+CMSY10 /Flags 4 -/FontBBox [-430 -290 1417 1127] -/Ascent 694 +/FontBBox [-29 -960 1116 775] +/Ascent 750 /CapHeight 683 /Descent -194 -/ItalicAngle 0 -/StemV 69 +/ItalicAngle -14 +/StemV 40 /XHeight 431 -/CharSet (/bracketleft/bracketright/equal/parenleft/parenright/plus) -/FontFile 2222 0 R +/CharSet (/B/H/I/arrowleft/arrowright/asteriskmath/bar/bardbl/braceleft/braceright/element/greaterequal/lessequal/minus/negationslash/radical) +/FontFile 2263 0 R >> -% 2225 0 obj +% 2266 0 obj << /Type /FontDescriptor -/FontName /XKYJEW+LMMono10-Regular +/FontName /XIQVGP+CMTT10 /Flags 4 -/FontBBox [-451 -316 731 1016] +/FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 -/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2224 0 R +/CharSet (/A/B/C/D/E/F/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2265 0 R >> -% 2227 0 obj +% 2268 0 obj << /Type /FontDescriptor -/FontName /XHVBMR+LMMono8-Regular +/FontName /KPZRIA+CMTT8 /Flags 4 -/FontBBox [-456 -320 743 1014] +/FontBBox [-5 -232 545 699] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 76 /XHeight 431 -/CharSet (/b/c/e/i/l/n/p/r/s/t) -/FontFile 2226 0 R +/CharSet (/b/c/d/e/i/l/n/p/r/s/t) +/FontFile 2267 0 R >> -% 2229 0 obj +% 2270 0 obj << /Type /FontDescriptor -/FontName /TWMFXI+LMMono9-Regular +/FontName /FYMOSO+CMTT9 /Flags 4 -/FontBBox [-451 -318 734 1016] +/FontBBox [-6 -233 542 698] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 74 /XHeight 431 -/CharSet (/D/E/I/K/N/P/S/T/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) -/FontFile 2228 0 R +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/ampersand/asterisk/b/c/colon/comma/d/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/quotesingle/r/s/semicolon/six/slash/t/two/u/underscore/v/w/x/y/z/zero) +/FontFile 2269 0 R >> -% 2231 0 obj +% 2272 0 obj << /Type /FontDescriptor -/FontName /XVBOSG+LMMono10-Italic +/FontName /IKXQUG+PazoMath /Flags 4 -/FontBBox [-491 -316 834 1016] -/Ascent 611 -/CapHeight 611 -/Descent -222 -/ItalicAngle -14 -/StemV 69 -/XHeight 431 -/CharSet (/A/C/D/E/H/I/K/L/M/P/T/V/a/c/comma/d/e/exclam/f/g/h/hyphen/i/k/m/n/o/p/parenleft/parenright/period/r/s/slash/t/w/x/y) -/FontFile 2230 0 R +/FontBBox [-40 -283 878 946] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 95 +/XHeight 0 +/CharSet (/infinity/summation) +/FontFile 2271 0 R >> -% 2233 0 obj +% 2274 0 obj +<< +/Type /FontDescriptor +/FontName /DUJUUF+PazoMath-Italic +/Flags 4 +/FontBBox [-70 -277 902 733] +/Ascent 482 +/CapHeight 0 +/Descent -276 +/ItalicAngle -9 +/StemV 65 +/XHeight 0 +/CharSet (/alpha/beta) +/FontFile 2273 0 R +>> +% 2276 0 obj << /Type /FontDescriptor /FontName /BDDEWM+URWPalladioL-Bold @@ -34643,9 +35801,9 @@ stream /StemV 123 /XHeight 471 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2232 0 R +/FontFile 2275 0 R >> -% 2235 0 obj +% 2278 0 obj << /Type /FontDescriptor /FontName /GLTUCO+URWPalladioL-Roma @@ -34658,9 +35816,9 @@ stream /StemV 84 /XHeight 469 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/grave/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/section/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2234 0 R +/FontFile 2277 0 R >> -% 2237 0 obj +% 2280 0 obj << /Type /FontDescriptor /FontName /LHHPET+URWPalladioL-Ital @@ -34673,484 +35831,459 @@ stream /StemV 78 /XHeight 482 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/fi/five/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/plus/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 2236 0 R +/FontFile 2279 0 R >> -% 2208 0 obj +% 2251 0 obj << /Type /Encoding /Differences [2/fi/fl 30/grave 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft 93/bracketright 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 147/quotedblleft/quotedblright/bullet/endash/emdash 167/section] >> -% 2196 0 obj -<< -/Type /Encoding -/Differences [33/exclam 40/parenleft/parenright 44/comma/hyphen/period/slash 65/A 67/C/D/E 72/H/I 75/K/L/M 80/P 84/T 86/V 97/a 99/c/d/e/f/g/h/i 107/k 109/m/n/o/p 114/r/s/t 119/w/x/y] ->> -% 2204 0 obj -<< -/Type /Encoding -/Differences [40/parenleft/parenright 43/plus 61/equal 91/bracketleft 93/bracketright] ->> -% 2201 0 obj -<< -/Type /Encoding -/Differences [13/quotesingle 37/percent/ampersand 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four 54/six 56/eight/nine/colon/semicolon/less/equal/greater 65/A/B/C/D/E/F 72/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 126/asciitilde] ->> -% 1851 0 obj +% 1862 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MNPEHI+CMEX10 -/FontDescriptor 2213 0 R +/FontDescriptor 2256 0 R /FirstChar 114 /LastChar 114 -/Widths 2195 0 R -/ToUnicode 2238 0 R +/Widths 2240 0 R +/ToUnicode 2281 0 R >> -% 1782 0 obj +% 1793 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XVBOSG+LMMono10-Italic -/FontDescriptor 2231 0 R +/BaseFont /SFGIZH+CMITT10 +/FontDescriptor 2258 0 R /FirstChar 33 /LastChar 121 -/Widths 2197 0 R -/Encoding 2196 0 R -/ToUnicode 2239 0 R +/Widths 2241 0 R +/ToUnicode 2282 0 R >> -% 1460 0 obj +% 1471 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TPELEW+CMMI10 -/FontDescriptor 2215 0 R +/FontDescriptor 2260 0 R /FirstChar 44 /LastChar 62 -/Widths 2198 0 R -/ToUnicode 2240 0 R +/Widths 2242 0 R +/ToUnicode 2283 0 R >> -% 915 0 obj +% 923 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /NCCVYE+LMRoman10-Regular -/FontDescriptor 2223 0 R +/BaseFont /SOSTRQ+CMR10 +/FontDescriptor 2262 0 R /FirstChar 40 /LastChar 93 -/Widths 2205 0 R -/Encoding 2204 0 R -/ToUnicode 2241 0 R +/Widths 2247 0 R +/ToUnicode 2284 0 R >> -% 914 0 obj +% 922 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VKSUEJ+CMSY10 -/FontDescriptor 2217 0 R +/FontDescriptor 2264 0 R /FirstChar 0 /LastChar 112 -/Widths 2206 0 R -/ToUnicode 2242 0 R +/Widths 2248 0 R +/ToUnicode 2285 0 R >> -% 913 0 obj +% 921 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XKYJEW+LMMono10-Regular -/FontDescriptor 2225 0 R +/BaseFont /XIQVGP+CMTT10 +/FontDescriptor 2266 0 R /FirstChar 13 /LastChar 126 -/Widths 2207 0 R -/Encoding 2201 0 R -/ToUnicode 2243 0 R +/Widths 2249 0 R +/ToUnicode 2286 0 R >> -% 970 0 obj +% 979 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /XHVBMR+LMMono8-Regular -/FontDescriptor 2227 0 R +/BaseFont /KPZRIA+CMTT8 +/FontDescriptor 2268 0 R /FirstChar 98 /LastChar 116 -/Widths 2203 0 R -/Encoding 2201 0 R -/ToUnicode 2244 0 R +/Widths 2246 0 R +/ToUnicode 2287 0 R >> -% 1016 0 obj +% 1025 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /TWMFXI+LMMono9-Regular -/FontDescriptor 2229 0 R +/BaseFont /FYMOSO+CMTT9 +/FontDescriptor 2270 0 R /FirstChar 13 /LastChar 122 -/Widths 2202 0 R -/Encoding 2201 0 R -/ToUnicode 2245 0 R +/Widths 2245 0 R +/ToUnicode 2288 0 R >> -% 1254 0 obj +% 1265 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IKXQUG+PazoMath -/FontDescriptor 2219 0 R +/FontDescriptor 2272 0 R /FirstChar 165 /LastChar 229 -/Widths 2199 0 R -/ToUnicode 2246 0 R +/Widths 2243 0 R +/ToUnicode 2289 0 R >> -% 1127 0 obj +% 1138 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUJUUF+PazoMath-Italic -/FontDescriptor 2221 0 R +/FontDescriptor 2274 0 R /FirstChar 97 /LastChar 98 -/Widths 2200 0 R -/ToUnicode 2247 0 R +/Widths 2244 0 R +/ToUnicode 2290 0 R >> -% 665 0 obj +% 673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BDDEWM+URWPalladioL-Bold -/FontDescriptor 2233 0 R +/FontDescriptor 2276 0 R /FirstChar 2 /LastChar 151 -/Widths 2211 0 R -/Encoding 2208 0 R -/ToUnicode 2248 0 R +/Widths 2254 0 R +/Encoding 2251 0 R +/ToUnicode 2291 0 R >> -% 667 0 obj +% 675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GLTUCO+URWPalladioL-Roma -/FontDescriptor 2235 0 R +/FontDescriptor 2278 0 R /FirstChar 2 /LastChar 167 -/Widths 2209 0 R -/Encoding 2208 0 R -/ToUnicode 2249 0 R +/Widths 2252 0 R +/Encoding 2251 0 R +/ToUnicode 2292 0 R >> -% 666 0 obj +% 674 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LHHPET+URWPalladioL-Ital -/FontDescriptor 2237 0 R +/FontDescriptor 2280 0 R /FirstChar 2 /LastChar 122 -/Widths 2210 0 R -/Encoding 2208 0 R -/ToUnicode 2250 0 R +/Widths 2253 0 R +/Encoding 2251 0 R +/ToUnicode 2293 0 R >> -% 668 0 obj +% 676 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [658 0 R 671 0 R 717 0 R 774 0 R 821 0 R 861 0 R] +/Parent 2294 0 R +/Kids [666 0 R 679 0 R 726 0 R 782 0 R 829 0 R 870 0 R] >> -% 881 0 obj +% 889 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [879 0 R 898 0 R 910 0 R 923 0 R 935 0 R 940 0 R] +/Parent 2294 0 R +/Kids [887 0 R 906 0 R 918 0 R 931 0 R 943 0 R 948 0 R] >> -% 971 0 obj +% 980 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [953 0 R 975 0 R 986 0 R 994 0 R 1005 0 R 1021 0 R] +/Parent 2294 0 R +/Kids [961 0 R 984 0 R 995 0 R 1003 0 R 1014 0 R 1030 0 R] >> -% 1028 0 obj +% 1037 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [1025 0 R 1030 0 R 1035 0 R 1042 0 R 1049 0 R 1054 0 R] +/Parent 2294 0 R +/Kids [1034 0 R 1039 0 R 1044 0 R 1051 0 R 1058 0 R 1063 0 R] >> -% 1062 0 obj +% 1072 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [1059 0 R 1065 0 R 1069 0 R 1073 0 R 1077 0 R 1083 0 R] +/Parent 2294 0 R +/Kids [1069 0 R 1074 0 R 1078 0 R 1084 0 R 1088 0 R 1094 0 R] >> - -endstream -endobj -2252 0 obj -<< -/Type /ObjStm -/N 100 -/First 923 -/Length 10703 ->> -stream -1092 0 1134 120 1180 240 1222 360 1281 480 1333 600 1382 720 1431 840 1471 960 1510 1080 -1557 1200 1600 1320 1638 1440 1674 1560 1713 1680 1754 1800 1783 1920 1817 2040 1855 2160 1890 2280 -1928 2400 1966 2520 2002 2640 2057 2760 2158 2880 2189 3000 2251 3084 2253 3202 2254 3323 2255 3444 -2256 3565 2257 3686 2258 3761 2259 3866 655 3935 651 4009 647 4097 643 4185 639 4273 635 4361 -631 4449 627 4537 623 4625 619 4713 615 4801 611 4889 607 4977 602 5065 598 5139 594 5251 -590 5325 586 5413 582 5501 578 5575 574 5700 570 5760 566 5885 562 5959 558 6047 554 6135 -550 6223 546 6311 542 6385 538 6510 534 6584 530 6672 526 6760 522 6848 518 6936 514 7010 -510 7135 506 7209 502 7297 498 7385 494 7459 490 7584 486 7658 482 7746 478 7834 474 7922 -470 8010 466 8098 462 8186 458 8274 454 8362 450 8450 446 8538 442 8626 438 8714 434 8802 -430 8890 426 8978 422 9052 418 9178 414 9252 410 9340 406 9428 401 9516 397 9604 393 9692 -% 1092 0 obj +% 1103 0 obj << /Type /Pages /Count 6 -/Parent 2251 0 R -/Kids [1089 0 R 1096 0 R 1103 0 R 1109 0 R 1113 0 R 1124 0 R] +/Parent 2294 0 R +/Kids [1100 0 R 1107 0 R 1114 0 R 1120 0 R 1124 0 R 1135 0 R] >> -% 1134 0 obj +% 1145 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1131 0 R 1141 0 R 1147 0 R 1158 0 R 1164 0 R 1171 0 R] +/Parent 2295 0 R +/Kids [1142 0 R 1152 0 R 1158 0 R 1170 0 R 1175 0 R 1182 0 R] >> -% 1180 0 obj +% 1191 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1176 0 R 1185 0 R 1193 0 R 1198 0 R 1206 0 R 1211 0 R] +/Parent 2295 0 R +/Kids [1187 0 R 1196 0 R 1204 0 R 1209 0 R 1217 0 R 1222 0 R] >> -% 1222 0 obj +% 1233 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1218 0 R 1224 0 R 1237 0 R 1244 0 R 1251 0 R 1262 0 R] +/Parent 2295 0 R +/Kids [1229 0 R 1235 0 R 1248 0 R 1255 0 R 1262 0 R 1274 0 R] >> -% 1281 0 obj +% 1292 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1278 0 R 1285 0 R 1296 0 R 1302 0 R 1313 0 R 1318 0 R] +/Parent 2295 0 R +/Kids [1289 0 R 1296 0 R 1307 0 R 1313 0 R 1324 0 R 1329 0 R] >> -% 1333 0 obj +% 1344 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1329 0 R 1335 0 R 1344 0 R 1350 0 R 1358 0 R 1365 0 R] +/Parent 2295 0 R +/Kids [1340 0 R 1346 0 R 1355 0 R 1361 0 R 1369 0 R 1376 0 R] >> -% 1382 0 obj +% 1393 0 obj << /Type /Pages /Count 6 -/Parent 2253 0 R -/Kids [1379 0 R 1387 0 R 1396 0 R 1404 0 R 1408 0 R 1423 0 R] +/Parent 2295 0 R +/Kids [1390 0 R 1398 0 R 1407 0 R 1415 0 R 1419 0 R 1434 0 R] >> -% 1431 0 obj +% 1442 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1428 0 R 1435 0 R 1442 0 R 1446 0 R 1451 0 R 1457 0 R] +/Parent 2296 0 R +/Kids [1439 0 R 1446 0 R 1453 0 R 1457 0 R 1462 0 R 1468 0 R] >> -% 1471 0 obj +% 1482 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1463 0 R 1474 0 R 1479 0 R 1488 0 R 1496 0 R 1501 0 R] +/Parent 2296 0 R +/Kids [1474 0 R 1485 0 R 1490 0 R 1500 0 R 1507 0 R 1512 0 R] >> -% 1510 0 obj +% 1521 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1507 0 R 1512 0 R 1520 0 R 1525 0 R 1533 0 R 1539 0 R] +/Parent 2296 0 R +/Kids [1518 0 R 1523 0 R 1531 0 R 1536 0 R 1544 0 R 1550 0 R] >> -% 1557 0 obj +% 1568 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1548 0 R 1562 0 R 1566 0 R 1579 0 R 1585 0 R 1592 0 R] +/Parent 2296 0 R +/Kids [1559 0 R 1573 0 R 1577 0 R 1590 0 R 1596 0 R 1603 0 R] >> -% 1600 0 obj +% 1612 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1596 0 R 1604 0 R 1609 0 R 1618 0 R 1626 0 R 1630 0 R] +/Parent 2296 0 R +/Kids [1608 0 R 1616 0 R 1620 0 R 1629 0 R 1637 0 R 1641 0 R] >> -% 1638 0 obj +% 1649 0 obj << /Type /Pages /Count 6 -/Parent 2254 0 R -/Kids [1635 0 R 1640 0 R 1647 0 R 1652 0 R 1658 0 R 1664 0 R] +/Parent 2296 0 R +/Kids [1646 0 R 1651 0 R 1658 0 R 1663 0 R 1669 0 R 1675 0 R] >> -% 1674 0 obj +% 1685 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1670 0 R 1677 0 R 1684 0 R 1691 0 R 1695 0 R 1705 0 R] +/Parent 2297 0 R +/Kids [1681 0 R 1688 0 R 1695 0 R 1702 0 R 1706 0 R 1717 0 R] >> -% 1713 0 obj +% 1724 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1710 0 R 1715 0 R 1728 0 R 1732 0 R 1738 0 R 1744 0 R] +/Parent 2297 0 R +/Kids [1721 0 R 1726 0 R 1739 0 R 1743 0 R 1749 0 R 1755 0 R] >> -% 1754 0 obj +% 1765 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1751 0 R 1756 0 R 1760 0 R 1764 0 R 1768 0 R 1772 0 R] +/Parent 2297 0 R +/Kids [1762 0 R 1767 0 R 1771 0 R 1775 0 R 1779 0 R 1783 0 R] >> -% 1783 0 obj +% 1794 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1776 0 R 1785 0 R 1789 0 R 1796 0 R 1800 0 R 1807 0 R] +/Parent 2297 0 R +/Kids [1787 0 R 1796 0 R 1800 0 R 1807 0 R 1811 0 R 1818 0 R] >> -% 1817 0 obj +% 1829 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1811 0 R 1819 0 R 1824 0 R 1831 0 R 1835 0 R 1842 0 R] +/Parent 2297 0 R +/Kids [1823 0 R 1831 0 R 1835 0 R 1842 0 R 1846 0 R 1853 0 R] >> -% 1855 0 obj +% 1866 0 obj << /Type /Pages /Count 6 -/Parent 2255 0 R -/Kids [1846 0 R 1857 0 R 1862 0 R 1869 0 R 1875 0 R 1879 0 R] +/Parent 2297 0 R +/Kids [1857 0 R 1868 0 R 1873 0 R 1880 0 R 1886 0 R 1890 0 R] >> -% 1890 0 obj +% 1901 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1885 0 R 1892 0 R 1898 0 R 1904 0 R 1909 0 R 1916 0 R] +/Parent 2298 0 R +/Kids [1896 0 R 1903 0 R 1909 0 R 1915 0 R 1920 0 R 1927 0 R] >> -% 1928 0 obj +% 1940 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1923 0 R 1932 0 R 1939 0 R 1946 0 R 1952 0 R 1956 0 R] +/Parent 2298 0 R +/Kids [1935 0 R 1943 0 R 1950 0 R 1957 0 R 1963 0 R 1967 0 R] >> -% 1966 0 obj +% 1978 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1962 0 R 1972 0 R 1976 0 R 1984 0 R 1989 0 R 1993 0 R] +/Parent 2298 0 R +/Kids [1974 0 R 1986 0 R 1990 0 R 1999 0 R 2003 0 R 2011 0 R] >> -% 2002 0 obj +% 2019 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [1999 0 R 2004 0 R 2011 0 R 2022 0 R 2027 0 R 2037 0 R] +/Parent 2298 0 R +/Kids [2016 0 R 2021 0 R 2027 0 R 2031 0 R 2038 0 R 2050 0 R] >> -% 2057 0 obj +% 2058 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [2052 0 R 2062 0 R 2073 0 R 2101 0 R 2121 0 R 2139 0 R] +/Parent 2298 0 R +/Kids [2055 0 R 2064 0 R 2073 0 R 2077 0 R 2087 0 R 2101 0 R] >> -% 2158 0 obj +% 2116 0 obj << /Type /Pages /Count 6 -/Parent 2256 0 R -/Kids [2155 0 R 2160 0 R 2164 0 R 2170 0 R 2174 0 R 2178 0 R] +/Parent 2298 0 R +/Kids [2110 0 R 2122 0 R 2150 0 R 2171 0 R 2189 0 R 2205 0 R] >> -% 2189 0 obj +% 2212 0 obj << /Type /Pages -/Count 2 -/Parent 2257 0 R -/Kids [2182 0 R 2191 0 R] +/Count 6 +/Parent 2299 0 R +/Kids [2209 0 R 2214 0 R 2219 0 R 2223 0 R 2227 0 R 2235 0 R] >> -% 2251 0 obj +% 2294 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [668 0 R 881 0 R 971 0 R 1028 0 R 1062 0 R 1092 0 R] +/Parent 2300 0 R +/Kids [676 0 R 889 0 R 980 0 R 1037 0 R 1072 0 R 1103 0 R] >> -% 2253 0 obj +% 2295 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1134 0 R 1180 0 R 1222 0 R 1281 0 R 1333 0 R 1382 0 R] +/Parent 2300 0 R +/Kids [1145 0 R 1191 0 R 1233 0 R 1292 0 R 1344 0 R 1393 0 R] >> -% 2254 0 obj +% 2296 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1431 0 R 1471 0 R 1510 0 R 1557 0 R 1600 0 R 1638 0 R] +/Parent 2300 0 R +/Kids [1442 0 R 1482 0 R 1521 0 R 1568 0 R 1612 0 R 1649 0 R] >> -% 2255 0 obj +% 2297 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1674 0 R 1713 0 R 1754 0 R 1783 0 R 1817 0 R 1855 0 R] +/Parent 2300 0 R +/Kids [1685 0 R 1724 0 R 1765 0 R 1794 0 R 1829 0 R 1866 0 R] >> -% 2256 0 obj +% 2298 0 obj << /Type /Pages /Count 36 -/Parent 2258 0 R -/Kids [1890 0 R 1928 0 R 1966 0 R 2002 0 R 2057 0 R 2158 0 R] +/Parent 2300 0 R +/Kids [1901 0 R 1940 0 R 1978 0 R 2019 0 R 2058 0 R 2116 0 R] >> -% 2257 0 obj +% 2299 0 obj << /Type /Pages -/Count 2 -/Parent 2258 0 R -/Kids [2189 0 R] +/Count 6 +/Parent 2300 0 R +/Kids [2212 0 R] >> -% 2258 0 obj +% 2300 0 obj << /Type /Pages -/Count 182 -/Kids [2251 0 R 2253 0 R 2254 0 R 2255 0 R 2256 0 R 2257 0 R] +/Count 186 +/Kids [2294 0 R 2295 0 R 2296 0 R 2297 0 R 2298 0 R 2299 0 R] >> -% 2259 0 obj +% 2301 0 obj << /Type /Outlines /First 4 0 R /Last 4 0 R /Count 1 >> +% 663 0 obj +<< +/Title 664 0 R +/A 661 0 R +/Parent 607 0 R +/Prev 659 0 R +>> +% 659 0 obj +<< +/Title 660 0 R +/A 657 0 R +/Parent 607 0 R +/Prev 655 0 R +/Next 663 0 R +>> % 655 0 obj << /Title 656 0 R /A 653 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 651 0 R +/Next 659 0 R >> % 651 0 obj << /Title 652 0 R /A 649 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 647 0 R /Next 655 0 R >> @@ -35158,7 +36291,7 @@ stream << /Title 648 0 R /A 645 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 643 0 R /Next 651 0 R >> @@ -35166,7 +36299,7 @@ stream << /Title 644 0 R /A 641 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 639 0 R /Next 647 0 R >> @@ -35174,7 +36307,7 @@ stream << /Title 640 0 R /A 637 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 635 0 R /Next 643 0 R >> @@ -35182,7 +36315,7 @@ stream << /Title 636 0 R /A 633 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 631 0 R /Next 639 0 R >> @@ -35190,7 +36323,7 @@ stream << /Title 632 0 R /A 629 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 627 0 R /Next 635 0 R >> @@ -35198,7 +36331,7 @@ stream << /Title 628 0 R /A 625 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 623 0 R /Next 631 0 R >> @@ -35206,7 +36339,7 @@ stream << /Title 624 0 R /A 621 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 619 0 R /Next 627 0 R >> @@ -35214,7 +36347,7 @@ stream << /Title 620 0 R /A 617 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 615 0 R /Next 623 0 R >> @@ -35222,7 +36355,7 @@ stream << /Title 616 0 R /A 613 0 R -/Parent 598 0 R +/Parent 607 0 R /Prev 611 0 R /Next 619 0 R >> @@ -35230,92 +36363,91 @@ stream << /Title 612 0 R /A 609 0 R -/Parent 598 0 R -/Prev 607 0 R +/Parent 607 0 R /Next 615 0 R >> % 607 0 obj << /Title 608 0 R /A 604 0 R -/Parent 598 0 R -/Prev 602 0 R -/Next 611 0 R +/Parent 4 0 R +/Prev 586 0 R +/First 611 0 R +/Last 663 0 R +/Count -14 >> % 602 0 obj << /Title 603 0 R /A 600 0 R -/Parent 598 0 R -/Next 607 0 R +/Parent 586 0 R +/Prev 598 0 R >> % 598 0 obj << /Title 599 0 R /A 596 0 R -/Parent 4 0 R -/Prev 578 0 R -/First 602 0 R -/Last 655 0 R -/Count -14 +/Parent 586 0 R +/Prev 594 0 R +/Next 602 0 R >> % 594 0 obj << /Title 595 0 R /A 592 0 R -/Parent 578 0 R +/Parent 586 0 R /Prev 590 0 R +/Next 598 0 R >> % 590 0 obj << /Title 591 0 R /A 588 0 R -/Parent 578 0 R -/Prev 586 0 R +/Parent 586 0 R /Next 594 0 R >> % 586 0 obj << /Title 587 0 R /A 584 0 R -/Parent 578 0 R -/Prev 582 0 R -/Next 590 0 R +/Parent 4 0 R +/Prev 574 0 R +/Next 607 0 R +/First 590 0 R +/Last 602 0 R +/Count -4 >> % 582 0 obj << /Title 583 0 R /A 580 0 R -/Parent 578 0 R -/Next 586 0 R +/Parent 574 0 R +/Prev 578 0 R >> % 578 0 obj << /Title 579 0 R /A 576 0 R -/Parent 4 0 R -/Prev 570 0 R -/Next 598 0 R -/First 582 0 R -/Last 594 0 R -/Count -4 +/Parent 574 0 R +/Next 582 0 R >> % 574 0 obj << /Title 575 0 R /A 572 0 R -/Parent 570 0 R +/Parent 4 0 R +/Prev 542 0 R +/Next 586 0 R +/First 578 0 R +/Last 582 0 R +/Count -2 >> % 570 0 obj << /Title 571 0 R /A 568 0 R -/Parent 4 0 R -/Prev 542 0 R -/Next 578 0 R -/First 574 0 R -/Last 574 0 R -/Count -1 +/Parent 542 0 R +/Prev 566 0 R >> % 566 0 obj << @@ -35323,6 +36455,7 @@ stream /A 564 0 R /Parent 542 0 R /Prev 562 0 R +/Next 570 0 R >> % 562 0 obj << @@ -35363,16 +36496,37 @@ stream /Parent 542 0 R /Next 550 0 R >> + +endstream +endobj +2302 0 obj +<< +/Type /ObjStm +/N 100 +/First 887 +/Length 9760 +>> +stream +542 0 538 125 534 199 530 287 526 375 522 463 518 551 514 625 510 750 506 824 +502 912 498 1000 494 1074 490 1199 486 1273 482 1361 478 1449 474 1537 470 1625 466 1713 +462 1801 458 1889 454 1977 450 2065 446 2153 442 2241 438 2329 434 2417 430 2505 426 2593 +422 2667 418 2793 414 2867 410 2955 406 3043 401 3131 397 3219 393 3307 389 3395 385 3483 +381 3571 377 3659 373 3747 369 3835 365 3923 361 4011 357 4099 353 4187 349 4275 345 4363 +341 4451 337 4539 333 4627 329 4715 325 4803 321 4891 317 4979 313 5067 309 5141 305 5267 +301 5341 297 5429 293 5517 289 5591 285 5716 281 5790 277 5878 273 5966 269 6054 265 6142 +261 6230 257 6318 253 6406 249 6494 245 6582 241 6670 237 6758 233 6846 229 6934 225 7022 +221 7096 217 7221 213 7294 209 7381 205 7455 200 7543 196 7631 192 7719 188 7807 184 7881 +180 8007 176 8081 172 8169 168 8257 164 8345 160 8433 156 8521 152 8609 148 8697 144 8785 % 542 0 obj << /Title 543 0 R /A 540 0 R /Parent 4 0 R /Prev 514 0 R -/Next 570 0 R +/Next 574 0 R /First 546 0 R -/Last 566 0 R -/Count -6 +/Last 570 0 R +/Count -7 >> % 538 0 obj << @@ -35672,27 +36826,6 @@ stream /Prev 389 0 R /Next 397 0 R >> - -endstream -endobj -2260 0 obj -<< -/Type /ObjStm -/N 100 -/First 862 -/Length 9899 ->> -stream -389 0 385 88 381 176 377 264 373 352 369 440 365 528 361 616 357 704 353 792 -349 880 345 968 341 1056 337 1144 333 1232 329 1320 325 1408 321 1496 317 1584 313 1672 -309 1746 305 1872 301 1946 297 2034 293 2122 289 2196 285 2321 281 2395 277 2483 273 2571 -269 2659 265 2747 261 2835 257 2923 253 3011 249 3099 245 3187 241 3275 237 3363 233 3451 -229 3539 225 3627 221 3701 217 3826 213 3899 209 3986 205 4060 200 4148 196 4236 192 4324 -188 4412 184 4486 180 4612 176 4686 172 4774 168 4862 164 4950 160 5038 156 5126 152 5214 -148 5302 144 5390 140 5478 136 5566 132 5654 128 5742 124 5830 120 5918 116 6006 112 6094 -108 6182 104 6256 100 6382 96 6453 92 6536 88 6618 84 6700 80 6782 76 6864 72 6946 -68 7028 64 7110 60 7192 56 7274 52 7356 48 7438 44 7520 40 7589 36 7698 32 7818 -28 7887 24 7943 20 8062 16 8144 12 8213 8 8330 4 8395 2261 8488 2262 8684 2263 8857 % 389 0 obj << /Title 390 0 R @@ -36192,6 +37325,27 @@ stream /Prev 140 0 R /Next 148 0 R >> + +endstream +endobj +2303 0 obj +<< +/Type /ObjStm +/N 100 +/First 951 +/Length 15941 +>> +stream +140 0 136 88 132 176 128 264 124 352 120 440 116 528 112 616 108 704 104 778 +100 904 96 975 92 1058 88 1140 84 1222 80 1304 76 1386 72 1468 68 1550 64 1632 +60 1714 56 1796 52 1878 48 1960 44 2042 40 2111 36 2220 32 2340 28 2409 24 2465 +20 2584 16 2666 12 2735 8 2852 4 2917 2304 3010 2305 3206 2306 3379 2307 3559 2308 3736 +2309 3913 2310 4093 2311 4271 2312 4451 2313 4629 2314 4809 2315 4980 2316 5145 2317 5312 2318 5481 +2319 5650 2320 5822 2321 5992 2322 6164 2323 6334 2324 6506 2325 6676 2326 6848 2327 7018 2328 7190 +2329 7359 2330 7533 2331 7755 2332 7960 2333 8209 2334 8435 2335 8639 2336 8825 2337 9008 2338 9210 +2339 9435 2340 9655 2341 9886 2342 10122 2343 10356 2344 10584 2345 10772 2346 10952 2347 11131 2348 11311 +2349 11489 2350 11667 2351 11847 2352 12026 2353 12206 2354 12385 2355 12565 2356 12744 2357 12924 2358 13103 +2359 13283 2360 13454 2361 13626 2362 13796 2363 13968 2364 14138 2365 14310 2366 14479 2367 14648 2368 14820 % 140 0 obj << /Title 141 0 R @@ -36474,725 +37628,724 @@ stream << /Title 5 0 R /A 1 0 R -/Parent 2259 0 R +/Parent 2301 0 R /First 8 0 R -/Last 598 0 R +/Last 607 0 R /Count -13 >> -% 2261 0 obj +% 2304 0 obj << -/Names [(Doc-Start) 664 0 R (Hfootnote.1) 916 0 R (Hfootnote.2) 917 0 R (Hfootnote.3) 969 0 R (Hfootnote.4) 1965 0 R (Hfootnote.5) 2017 0 R] +/Names [(Doc-Start) 672 0 R (Hfootnote.1) 924 0 R (Hfootnote.2) 925 0 R (Hfootnote.3) 978 0 R (Hfootnote.4) 1977 0 R (Hfootnote.5) 2044 0 R] /Limits [(Doc-Start) (Hfootnote.5)] >> -% 2262 0 obj +% 2305 0 obj << -/Names [(Item.1) 943 0 R (Item.10) 957 0 R (Item.100) 1698 0 R (Item.101) 1699 0 R (Item.102) 1700 0 R (Item.103) 1718 0 R] +/Names [(Item.1) 951 0 R (Item.10) 965 0 R (Item.100) 1692 0 R (Item.101) 1698 0 R (Item.102) 1699 0 R (Item.103) 1709 0 R] /Limits [(Item.1) (Item.103)] >> -% 2263 0 obj +% 2306 0 obj << -/Names [(Item.104) 1719 0 R (Item.105) 1720 0 R (Item.106) 1721 0 R (Item.107) 1722 0 R (Item.108) 1723 0 R (Item.109) 1724 0 R] +/Names [(Item.104) 1710 0 R (Item.105) 1711 0 R (Item.106) 1729 0 R (Item.107) 1730 0 R (Item.108) 1731 0 R (Item.109) 1732 0 R] /Limits [(Item.104) (Item.109)] >> - -endstream -endobj -2265 0 obj -<< -/Type /ObjStm -/N 100 -/First 1037 -/Length 20320 ->> -stream -2264 0 2266 177 2267 354 2268 534 2269 712 2270 892 2271 1070 2272 1247 2273 1412 2274 1578 -2275 1744 2276 1916 2277 2086 2278 2258 2279 2428 2280 2600 2281 2769 2282 2938 2283 3110 2284 3280 -2285 3452 2286 3622 2287 3794 2288 3983 2289 4173 2290 4396 2291 4617 2292 4822 2293 5012 2294 5194 -2295 5390 2296 5615 2297 5835 2298 6066 2299 6302 2300 6534 2301 6745 2302 6922 2303 7100 2304 7280 -2305 7459 2306 7639 2307 7818 2308 7998 2309 8177 2310 8357 2311 8536 2312 8716 2313 8894 2314 9072 -2315 9252 2316 9424 2317 9596 2318 9766 2319 9938 2320 10108 2321 10280 2322 10449 2323 10618 2324 10790 -2325 10960 2326 11132 2327 11302 2328 11474 2329 11644 2330 11816 2331 11986 2332 12182 2333 12379 2334 12575 -2335 12762 2336 12944 2337 13138 2338 13368 2339 13593 2340 13812 2341 14039 2342 14265 2343 14487 2344 14712 -2345 14942 2346 15171 2347 15399 2348 15621 2349 15849 2350 16075 2351 16297 2352 16519 2353 16760 2354 17022 -2355 17278 2356 17544 2357 17814 2358 18076 2359 18338 2360 18548 2361 18728 2362 18904 2363 19073 2364 19169 -% 2264 0 obj +% 2307 0 obj << -/Names [(Item.11) 958 0 R (Item.110) 1725 0 R (Item.111) 1726 0 R (Item.112) 1735 0 R (Item.113) 1736 0 R (Item.114) 1741 0 R] +/Names [(Item.11) 966 0 R (Item.110) 1733 0 R (Item.111) 1734 0 R (Item.112) 1735 0 R (Item.113) 1736 0 R (Item.114) 1737 0 R] /Limits [(Item.11) (Item.114)] >> -% 2266 0 obj +% 2308 0 obj << -/Names [(Item.115) 1742 0 R (Item.116) 1747 0 R (Item.117) 1748 0 R (Item.118) 1749 0 R (Item.119) 1779 0 R (Item.12) 959 0 R] +/Names [(Item.115) 1746 0 R (Item.116) 1747 0 R (Item.117) 1752 0 R (Item.118) 1753 0 R (Item.119) 1758 0 R (Item.12) 967 0 R] /Limits [(Item.115) (Item.12)] >> -% 2267 0 obj +% 2309 0 obj << -/Names [(Item.120) 1780 0 R (Item.121) 1781 0 R (Item.122) 1792 0 R (Item.123) 1793 0 R (Item.124) 1794 0 R (Item.125) 1803 0 R] +/Names [(Item.120) 1759 0 R (Item.121) 1760 0 R (Item.122) 1790 0 R (Item.123) 1791 0 R (Item.124) 1792 0 R (Item.125) 1803 0 R] /Limits [(Item.120) (Item.125)] >> -% 2268 0 obj +% 2310 0 obj << -/Names [(Item.126) 1804 0 R (Item.127) 1805 0 R (Item.128) 1814 0 R (Item.129) 1815 0 R (Item.13) 960 0 R (Item.130) 1816 0 R] +/Names [(Item.126) 1804 0 R (Item.127) 1805 0 R (Item.128) 1814 0 R (Item.129) 1815 0 R (Item.13) 968 0 R (Item.130) 1816 0 R] /Limits [(Item.126) (Item.130)] >> -% 2269 0 obj +% 2311 0 obj << -/Names [(Item.131) 1827 0 R (Item.132) 1828 0 R (Item.133) 1829 0 R (Item.134) 1838 0 R (Item.135) 1839 0 R (Item.136) 1840 0 R] +/Names [(Item.131) 1826 0 R (Item.132) 1827 0 R (Item.133) 1828 0 R (Item.134) 1838 0 R (Item.135) 1839 0 R (Item.136) 1840 0 R] /Limits [(Item.131) (Item.136)] >> -% 2270 0 obj +% 2312 0 obj << -/Names [(Item.137) 1849 0 R (Item.138) 1850 0 R (Item.139) 1852 0 R (Item.14) 961 0 R (Item.140) 1853 0 R (Item.141) 1854 0 R] +/Names [(Item.137) 1849 0 R (Item.138) 1850 0 R (Item.139) 1851 0 R (Item.14) 969 0 R (Item.140) 1860 0 R (Item.141) 1861 0 R] /Limits [(Item.137) (Item.141)] >> -% 2271 0 obj +% 2313 0 obj << -/Names [(Item.142) 1860 0 R (Item.143) 1865 0 R (Item.144) 2066 0 R (Item.145) 2067 0 R (Item.146) 2167 0 R (Item.15) 962 0 R] -/Limits [(Item.142) (Item.15)] +/Names [(Item.142) 1863 0 R (Item.143) 1864 0 R (Item.144) 1865 0 R (Item.145) 1871 0 R (Item.146) 1876 0 R (Item.147) 2114 0 R] +/Limits [(Item.142) (Item.147)] >> -% 2272 0 obj +% 2314 0 obj << -/Names [(Item.16) 963 0 R (Item.17) 964 0 R (Item.18) 965 0 R (Item.19) 966 0 R (Item.2) 944 0 R (Item.20) 967 0 R] -/Limits [(Item.16) (Item.20)] +/Names [(Item.148) 2115 0 R (Item.149) 2217 0 R (Item.15) 970 0 R (Item.16) 971 0 R (Item.17) 972 0 R (Item.18) 973 0 R] +/Limits [(Item.148) (Item.18)] >> -% 2273 0 obj +% 2315 0 obj << -/Names [(Item.21) 968 0 R (Item.22) 978 0 R (Item.23) 979 0 R (Item.24) 980 0 R (Item.25) 981 0 R (Item.26) 982 0 R] -/Limits [(Item.21) (Item.26)] +/Names [(Item.19) 974 0 R (Item.2) 952 0 R (Item.20) 975 0 R (Item.21) 976 0 R (Item.22) 977 0 R (Item.23) 987 0 R] +/Limits [(Item.19) (Item.23)] >> -% 2274 0 obj +% 2316 0 obj << -/Names [(Item.27) 983 0 R (Item.28) 997 0 R (Item.29) 998 0 R (Item.3) 945 0 R (Item.30) 999 0 R (Item.31) 1000 0 R] -/Limits [(Item.27) (Item.31)] +/Names [(Item.24) 988 0 R (Item.25) 989 0 R (Item.26) 990 0 R (Item.27) 991 0 R (Item.28) 992 0 R (Item.29) 1006 0 R] +/Limits [(Item.24) (Item.29)] >> -% 2275 0 obj +% 2317 0 obj << -/Names [(Item.32) 1001 0 R (Item.33) 1008 0 R (Item.34) 1009 0 R (Item.35) 1010 0 R (Item.36) 1011 0 R (Item.37) 1012 0 R] -/Limits [(Item.32) (Item.37)] +/Names [(Item.3) 953 0 R (Item.30) 1007 0 R (Item.31) 1008 0 R (Item.32) 1009 0 R (Item.33) 1010 0 R (Item.34) 1017 0 R] +/Limits [(Item.3) (Item.34)] >> -% 2276 0 obj +% 2318 0 obj << -/Names [(Item.38) 1013 0 R (Item.39) 1014 0 R (Item.4) 946 0 R (Item.40) 1015 0 R (Item.41) 1057 0 R (Item.42) 1150 0 R] -/Limits [(Item.38) (Item.42)] +/Names [(Item.35) 1018 0 R (Item.36) 1019 0 R (Item.37) 1020 0 R (Item.38) 1021 0 R (Item.39) 1022 0 R (Item.4) 954 0 R] +/Limits [(Item.35) (Item.4)] >> -% 2277 0 obj +% 2319 0 obj << -/Names [(Item.43) 1179 0 R (Item.44) 1201 0 R (Item.45) 1227 0 R (Item.46) 1399 0 R (Item.47) 1400 0 R (Item.48) 1401 0 R] -/Limits [(Item.43) (Item.48)] +/Names [(Item.40) 1023 0 R (Item.41) 1024 0 R (Item.42) 1066 0 R (Item.43) 1081 0 R (Item.44) 1082 0 R (Item.45) 1161 0 R] +/Limits [(Item.40) (Item.45)] >> -% 2278 0 obj +% 2320 0 obj << -/Names [(Item.49) 1454 0 R (Item.5) 947 0 R (Item.50) 1461 0 R (Item.51) 1466 0 R (Item.52) 1467 0 R (Item.53) 1468 0 R] -/Limits [(Item.49) (Item.53)] +/Names [(Item.46) 1190 0 R (Item.47) 1212 0 R (Item.48) 1238 0 R (Item.49) 1410 0 R (Item.5) 955 0 R (Item.50) 1411 0 R] +/Limits [(Item.46) (Item.50)] >> -% 2279 0 obj +% 2321 0 obj << -/Names [(Item.54) 1469 0 R (Item.55) 1470 0 R (Item.56) 1482 0 R (Item.57) 1483 0 R (Item.58) 1484 0 R (Item.59) 1491 0 R] -/Limits [(Item.54) (Item.59)] +/Names [(Item.51) 1412 0 R (Item.52) 1465 0 R (Item.53) 1472 0 R (Item.54) 1477 0 R (Item.55) 1478 0 R (Item.56) 1479 0 R] +/Limits [(Item.51) (Item.56)] >> -% 2280 0 obj +% 2322 0 obj +<< +/Names [(Item.57) 1480 0 R (Item.58) 1481 0 R (Item.59) 1493 0 R (Item.6) 956 0 R (Item.60) 1494 0 R (Item.61) 1495 0 R] +/Limits [(Item.57) (Item.61)] +>> +% 2323 0 obj << -/Names [(Item.6) 948 0 R (Item.60) 1515 0 R (Item.61) 1516 0 R (Item.62) 1523 0 R (Item.63) 1528 0 R (Item.64) 1529 0 R] -/Limits [(Item.6) (Item.64)] +/Names [(Item.62) 1503 0 R (Item.63) 1526 0 R (Item.64) 1527 0 R (Item.65) 1534 0 R (Item.66) 1539 0 R (Item.67) 1540 0 R] +/Limits [(Item.62) (Item.67)] >> -% 2281 0 obj +% 2324 0 obj << -/Names [(Item.65) 1530 0 R (Item.66) 1542 0 R (Item.67) 1543 0 R (Item.68) 1544 0 R (Item.69) 1545 0 R (Item.7) 949 0 R] -/Limits [(Item.65) (Item.7)] +/Names [(Item.68) 1541 0 R (Item.69) 1553 0 R (Item.7) 957 0 R (Item.70) 1554 0 R (Item.71) 1555 0 R (Item.72) 1556 0 R] +/Limits [(Item.68) (Item.72)] >> -% 2282 0 obj +% 2325 0 obj << -/Names [(Item.70) 1546 0 R (Item.71) 1551 0 R (Item.72) 1552 0 R (Item.73) 1553 0 R (Item.74) 1554 0 R (Item.75) 1555 0 R] -/Limits [(Item.70) (Item.75)] +/Names [(Item.73) 1557 0 R (Item.74) 1562 0 R (Item.75) 1563 0 R (Item.76) 1564 0 R (Item.77) 1565 0 R (Item.78) 1566 0 R] +/Limits [(Item.73) (Item.78)] >> -% 2283 0 obj +% 2326 0 obj << -/Names [(Item.76) 1556 0 R (Item.77) 1569 0 R (Item.78) 1570 0 R (Item.79) 1571 0 R (Item.8) 950 0 R (Item.80) 1572 0 R] -/Limits [(Item.76) (Item.80)] +/Names [(Item.79) 1567 0 R (Item.8) 958 0 R (Item.80) 1580 0 R (Item.81) 1581 0 R (Item.82) 1582 0 R (Item.83) 1583 0 R] +/Limits [(Item.79) (Item.83)] >> -% 2284 0 obj +% 2327 0 obj << -/Names [(Item.81) 1573 0 R (Item.82) 1574 0 R (Item.83) 1575 0 R (Item.84) 1588 0 R (Item.85) 1599 0 R (Item.86) 1612 0 R] -/Limits [(Item.81) (Item.86)] +/Names [(Item.84) 1584 0 R (Item.85) 1585 0 R (Item.86) 1586 0 R (Item.87) 1599 0 R (Item.88) 1611 0 R (Item.89) 1623 0 R] +/Limits [(Item.84) (Item.89)] >> -% 2285 0 obj +% 2328 0 obj << -/Names [(Item.87) 1613 0 R (Item.88) 1621 0 R (Item.89) 1622 0 R (Item.9) 956 0 R (Item.90) 1643 0 R (Item.91) 1644 0 R] -/Limits [(Item.87) (Item.91)] +/Names [(Item.9) 964 0 R (Item.90) 1624 0 R (Item.91) 1632 0 R (Item.92) 1633 0 R (Item.93) 1654 0 R (Item.94) 1655 0 R] +/Limits [(Item.9) (Item.94)] >> -% 2286 0 obj +% 2329 0 obj << -/Names [(Item.92) 1655 0 R (Item.93) 1661 0 R (Item.94) 1667 0 R (Item.95) 1673 0 R (Item.96) 1680 0 R (Item.97) 1681 0 R] -/Limits [(Item.92) (Item.97)] +/Names [(Item.95) 1666 0 R (Item.96) 1672 0 R (Item.97) 1678 0 R (Item.98) 1684 0 R (Item.99) 1691 0 R (algocf.1) 2120 0 R] +/Limits [(Item.95) (algocf.1)] >> -% 2287 0 obj +% 2330 0 obj << -/Names [(Item.98) 1687 0 R (Item.99) 1688 0 R (algocf.1) 2071 0 R (algocf.2) 2117 0 R (algocfline.1) 2056 0 R (algocfline.2) 2124 0 R] -/Limits [(Item.98) (algocfline.2)] +/Names [(algocf.2) 2166 0 R (algocfline.1) 2105 0 R (algocfline.2) 2174 0 R (cite.2007c) 938 0 R (cite.2007d) 939 0 R (cite.BERTACCINIFILIPPONE) 1993 0 R] +/Limits [(algocf.2) (cite.BERTACCINIFILIPPONE)] >> -% 2288 0 obj +% 2331 0 obj << -/Names [(cite.2007c) 930 0 R (cite.2007d) 931 0 R (cite.BLACS) 906 0 R (cite.BLAS1) 889 0 R (cite.BLAS2) 890 0 R (cite.BLAS3) 891 0 R] -/Limits [(cite.2007c) (cite.BLAS3)] +/Names [(cite.BLACS) 914 0 R (cite.BLAS1) 897 0 R (cite.BLAS2) 898 0 R (cite.BLAS3) 899 0 R (cite.CaFiRo:2014) 2091 0 R (cite.DesPat:11) 892 0 R] +/Limits [(cite.BLACS) (cite.DesPat:11)] >> -% 2289 0 obj +% 2332 0 obj << -/Names [(cite.CaFiRo:2014) 2042 0 R (cite.DesPat:11) 884 0 R (cite.DesignPatterns) 1046 0 R (cite.KIVA3PSBLAS) 2188 0 R (cite.METIS) 918 0 R (cite.MPI1) 2194 0 R] -/Limits [(cite.CaFiRo:2014) (cite.MPI1)] +/Names [(cite.DesignPatterns) 1055 0 R (cite.Filippone:2017:SMM:3034774.3017994) 2239 0 R (cite.KIVA3PSBLAS) 2233 0 R (cite.METIS) 926 0 R (cite.MPI1) 2238 0 R (cite.MRC:11) 2106 0 R] +/Limits [(cite.DesignPatterns) (cite.MRC:11)] >> -% 2290 0 obj +% 2333 0 obj << -/Names [(cite.MRC:11) 2058 0 R (cite.OurTechRep) 2043 0 R (cite.PARA04FOREST) 2186 0 R (cite.PSBLAS) 2187 0 R (cite.RouXiaXu:11) 885 0 R (cite.Sparse03) 883 0 R] -/Limits [(cite.MRC:11) (cite.Sparse03)] +/Names [(cite.OurTechRep) 2092 0 R (cite.PARA04FOREST) 2231 0 R (cite.PSBLAS) 2232 0 R (cite.RouXiaXu:11) 893 0 R (cite.Sparse03) 891 0 R (cite.machiels) 894 0 R] +/Limits [(cite.OurTechRep) (cite.machiels)] >> -% 2291 0 obj +% 2334 0 obj << -/Names [(cite.machiels) 886 0 R (cite.metcalf) 882 0 R (cite.sblas02) 888 0 R (cite.sblas97) 887 0 R (descdata) 989 0 R (equation.4.1) 1265 0 R] -/Limits [(cite.machiels) (equation.4.1)] +/Names [(cite.metcalf) 890 0 R (cite.sblas02) 896 0 R (cite.sblas97) 895 0 R (descdata) 998 0 R (equation.4.1) 1277 0 R (equation.4.2) 1278 0 R] +/Limits [(cite.metcalf) (equation.4.2)] >> -% 2292 0 obj +% 2335 0 obj << -/Names [(equation.4.2) 1266 0 R (equation.4.3) 1267 0 R (figure.1) 900 0 R (figure.2) 926 0 R (figure.3) 1368 0 R (figure.4) 1402 0 R] -/Limits [(equation.4.2) (figure.4)] +/Names [(equation.4.3) 1279 0 R (figure.1) 908 0 R (figure.2) 934 0 R (figure.3) 1379 0 R (figure.4) 1413 0 R (figure.5) 2113 0 R] +/Limits [(equation.4.3) (figure.5)] >> -% 2293 0 obj +% 2336 0 obj << -/Names [(figure.5) 2065 0 R (figure.6) 2060 0 R (figure.7) 2104 0 R (figure.8) 2116 0 R (figure.9) 2142 0 R (listing.1) 1017 0 R] -/Limits [(figure.5) (listing.1)] +/Names [(figure.6) 2108 0 R (figure.7) 2153 0 R (figure.8) 2165 0 R (figure.9) 2192 0 R (listing.1) 1026 0 R (listing.2) 1056 0 R] +/Limits [(figure.6) (listing.2)] >> -% 2294 0 obj +% 2337 0 obj << -/Names [(listing.2) 1047 0 R (listing.3) 1087 0 R (listing.4) 1107 0 R (listing.5) 1872 0 R (listing.6) 1873 0 R (lstlisting.-1) 1228 0 R] -/Limits [(listing.2) (lstlisting.-1)] +/Names [(listing.3) 1098 0 R (listing.4) 1118 0 R (listing.5) 1883 0 R (listing.6) 1884 0 R (lstlisting.-1) 1239 0 R (lstlisting.-10) 1953 0 R] +/Limits [(listing.3) (lstlisting.-10)] >> -% 2295 0 obj +% 2338 0 obj << -/Names [(lstlisting.-10) 1942 0 R (lstlisting.-11) 1949 0 R (lstlisting.-12) 2014 0 R (lstlisting.-13) 2076 0 R (lstlisting.-2) 1882 0 R (lstlisting.-3) 1888 0 R] -/Limits [(lstlisting.-10) (lstlisting.-3)] +/Names [(lstlisting.-11) 1960 0 R (lstlisting.-12) 2041 0 R (lstlisting.-13) 2067 0 R (lstlisting.-14) 2125 0 R (lstlisting.-2) 1893 0 R (lstlisting.-3) 1899 0 R] +/Limits [(lstlisting.-11) (lstlisting.-3)] >> -% 2296 0 obj +% 2339 0 obj << -/Names [(lstlisting.-4) 1895 0 R (lstlisting.-5) 1901 0 R (lstlisting.-6) 1912 0 R (lstlisting.-7) 1919 0 R (lstlisting.-8) 1926 0 R (lstlisting.-9) 1935 0 R] +/Names [(lstlisting.-4) 1906 0 R (lstlisting.-5) 1912 0 R (lstlisting.-6) 1923 0 R (lstlisting.-7) 1930 0 R (lstlisting.-8) 1938 0 R (lstlisting.-9) 1946 0 R] /Limits [(lstlisting.-4) (lstlisting.-9)] >> -% 2297 0 obj +% 2340 0 obj << -/Names [(lstnumber.-1.1) 1229 0 R (lstnumber.-1.2) 1230 0 R (lstnumber.-1.3) 1231 0 R (lstnumber.-1.4) 1232 0 R (lstnumber.-10.1) 1943 0 R (lstnumber.-11.1) 1950 0 R] +/Names [(lstnumber.-1.1) 1240 0 R (lstnumber.-1.2) 1241 0 R (lstnumber.-1.3) 1242 0 R (lstnumber.-1.4) 1243 0 R (lstnumber.-10.1) 1954 0 R (lstnumber.-11.1) 1961 0 R] /Limits [(lstnumber.-1.1) (lstnumber.-11.1)] >> -% 2298 0 obj +% 2341 0 obj << -/Names [(lstnumber.-12.1) 2015 0 R (lstnumber.-12.2) 2016 0 R (lstnumber.-13.1) 2077 0 R (lstnumber.-13.2) 2078 0 R (lstnumber.-13.3) 2079 0 R (lstnumber.-13.4) 2080 0 R] -/Limits [(lstnumber.-12.1) (lstnumber.-13.4)] +/Names [(lstnumber.-12.1) 2042 0 R (lstnumber.-12.2) 2043 0 R (lstnumber.-13.1) 2068 0 R (lstnumber.-13.2) 2069 0 R (lstnumber.-14.1) 2126 0 R (lstnumber.-14.2) 2127 0 R] +/Limits [(lstnumber.-12.1) (lstnumber.-14.2)] >> -% 2299 0 obj +% 2342 0 obj << -/Names [(lstnumber.-13.5) 2081 0 R (lstnumber.-13.6) 2082 0 R (lstnumber.-13.7) 2083 0 R (lstnumber.-2.1) 1883 0 R (lstnumber.-3.1) 1889 0 R (lstnumber.-4.1) 1896 0 R] -/Limits [(lstnumber.-13.5) (lstnumber.-4.1)] +/Names [(lstnumber.-14.3) 2128 0 R (lstnumber.-14.4) 2129 0 R (lstnumber.-14.5) 2130 0 R (lstnumber.-14.6) 2131 0 R (lstnumber.-14.7) 2132 0 R (lstnumber.-2.1) 1894 0 R] +/Limits [(lstnumber.-14.3) (lstnumber.-2.1)] >> -% 2300 0 obj +% 2343 0 obj << -/Names [(lstnumber.-5.1) 1902 0 R (lstnumber.-6.1) 1913 0 R (lstnumber.-7.1) 1920 0 R (lstnumber.-8.1) 1927 0 R (lstnumber.-9.1) 1936 0 R (page.1) 663 0 R] -/Limits [(lstnumber.-5.1) (page.1)] +/Names [(lstnumber.-3.1) 1900 0 R (lstnumber.-4.1) 1907 0 R (lstnumber.-5.1) 1913 0 R (lstnumber.-6.1) 1924 0 R (lstnumber.-7.1) 1931 0 R (lstnumber.-8.1) 1939 0 R] +/Limits [(lstnumber.-3.1) (lstnumber.-8.1)] >> -% 2301 0 obj +% 2344 0 obj << -/Names [(page.10) 996 0 R (page.100) 1654 0 R (page.101) 1660 0 R (page.102) 1666 0 R (page.103) 1672 0 R (page.104) 1679 0 R] -/Limits [(page.10) (page.104)] +/Names [(lstnumber.-9.1) 1947 0 R (page.1) 671 0 R (page.10) 1005 0 R (page.100) 1665 0 R (page.101) 1671 0 R (page.102) 1677 0 R] +/Limits [(lstnumber.-9.1) (page.102)] >> -% 2302 0 obj +% 2345 0 obj << -/Names [(page.105) 1686 0 R (page.106) 1693 0 R (page.107) 1697 0 R (page.108) 1707 0 R (page.109) 1712 0 R (page.11) 1007 0 R] -/Limits [(page.105) (page.11)] +/Names [(page.103) 1683 0 R (page.104) 1690 0 R (page.105) 1697 0 R (page.106) 1704 0 R (page.107) 1708 0 R (page.108) 1719 0 R] +/Limits [(page.103) (page.108)] >> -% 2303 0 obj +% 2346 0 obj << -/Names [(page.110) 1717 0 R (page.111) 1730 0 R (page.112) 1734 0 R (page.113) 1740 0 R (page.114) 1746 0 R (page.115) 1753 0 R] -/Limits [(page.110) (page.115)] +/Names [(page.109) 1723 0 R (page.11) 1016 0 R (page.110) 1728 0 R (page.111) 1741 0 R (page.112) 1745 0 R (page.113) 1751 0 R] +/Limits [(page.109) (page.113)] >> -% 2304 0 obj +% 2347 0 obj << -/Names [(page.116) 1758 0 R (page.117) 1762 0 R (page.118) 1766 0 R (page.119) 1770 0 R (page.12) 1023 0 R (page.120) 1774 0 R] -/Limits [(page.116) (page.120)] +/Names [(page.114) 1757 0 R (page.115) 1764 0 R (page.116) 1769 0 R (page.117) 1773 0 R (page.118) 1777 0 R (page.119) 1781 0 R] +/Limits [(page.114) (page.119)] >> -% 2305 0 obj +% 2348 0 obj << -/Names [(page.121) 1778 0 R (page.122) 1787 0 R (page.123) 1791 0 R (page.124) 1798 0 R (page.125) 1802 0 R (page.126) 1809 0 R] -/Limits [(page.121) (page.126)] +/Names [(page.12) 1032 0 R (page.120) 1785 0 R (page.121) 1789 0 R (page.122) 1798 0 R (page.123) 1802 0 R (page.124) 1809 0 R] +/Limits [(page.12) (page.124)] >> -% 2306 0 obj +% 2349 0 obj << -/Names [(page.127) 1813 0 R (page.128) 1821 0 R (page.129) 1826 0 R (page.13) 1027 0 R (page.130) 1833 0 R (page.131) 1837 0 R] -/Limits [(page.127) (page.131)] +/Names [(page.125) 1813 0 R (page.126) 1820 0 R (page.127) 1825 0 R (page.128) 1833 0 R (page.129) 1837 0 R (page.13) 1036 0 R] +/Limits [(page.125) (page.13)] >> -% 2307 0 obj +% 2350 0 obj << -/Names [(page.132) 1844 0 R (page.133) 1848 0 R (page.134) 1859 0 R (page.135) 1864 0 R (page.136) 1871 0 R (page.137) 1877 0 R] -/Limits [(page.132) (page.137)] +/Names [(page.130) 1844 0 R (page.131) 1848 0 R (page.132) 1855 0 R (page.133) 1859 0 R (page.134) 1870 0 R (page.135) 1875 0 R] +/Limits [(page.130) (page.135)] >> -% 2308 0 obj +% 2351 0 obj << -/Names [(page.138) 1881 0 R (page.139) 1887 0 R (page.14) 1032 0 R (page.140) 1894 0 R (page.141) 1900 0 R (page.142) 1906 0 R] -/Limits [(page.138) (page.142)] +/Names [(page.136) 1882 0 R (page.137) 1888 0 R (page.138) 1892 0 R (page.139) 1898 0 R (page.14) 1041 0 R (page.140) 1905 0 R] +/Limits [(page.136) (page.140)] >> -% 2309 0 obj +% 2352 0 obj << -/Names [(page.143) 1911 0 R (page.144) 1918 0 R (page.145) 1925 0 R (page.146) 1934 0 R (page.147) 1941 0 R (page.148) 1948 0 R] -/Limits [(page.143) (page.148)] +/Names [(page.141) 1911 0 R (page.142) 1917 0 R (page.143) 1922 0 R (page.144) 1929 0 R (page.145) 1937 0 R (page.146) 1945 0 R] +/Limits [(page.141) (page.146)] >> -% 2310 0 obj +% 2353 0 obj << -/Names [(page.149) 1954 0 R (page.15) 1037 0 R (page.150) 1958 0 R (page.151) 1964 0 R (page.152) 1974 0 R (page.153) 1978 0 R] -/Limits [(page.149) (page.153)] +/Names [(page.147) 1952 0 R (page.148) 1959 0 R (page.149) 1965 0 R (page.15) 1046 0 R (page.150) 1969 0 R (page.151) 1976 0 R] +/Limits [(page.147) (page.151)] >> -% 2311 0 obj +% 2354 0 obj << -/Names [(page.154) 1986 0 R (page.155) 1991 0 R (page.156) 1995 0 R (page.157) 2001 0 R (page.158) 2006 0 R (page.159) 2013 0 R] -/Limits [(page.154) (page.159)] +/Names [(page.152) 1988 0 R (page.153) 1992 0 R (page.154) 2001 0 R (page.155) 2005 0 R (page.156) 2013 0 R (page.157) 2018 0 R] +/Limits [(page.152) (page.157)] >> -% 2312 0 obj +% 2355 0 obj << -/Names [(page.16) 1044 0 R (page.160) 2024 0 R (page.161) 2029 0 R (page.162) 2039 0 R (page.163) 2054 0 R (page.164) 2064 0 R] -/Limits [(page.16) (page.164)] +/Names [(page.158) 2023 0 R (page.159) 2029 0 R (page.16) 1053 0 R (page.160) 2033 0 R (page.161) 2040 0 R (page.162) 2052 0 R] +/Limits [(page.158) (page.162)] >> -% 2313 0 obj +% 2356 0 obj << -/Names [(page.165) 2075 0 R (page.166) 2103 0 R (page.167) 2123 0 R (page.168) 2141 0 R (page.169) 2157 0 R (page.17) 1051 0 R] -/Limits [(page.165) (page.17)] +/Names [(page.163) 2057 0 R (page.164) 2066 0 R (page.165) 2075 0 R (page.166) 2079 0 R (page.167) 2089 0 R (page.168) 2103 0 R] +/Limits [(page.163) (page.168)] >> -% 2314 0 obj +% 2357 0 obj << -/Names [(page.170) 2162 0 R (page.171) 2166 0 R (page.172) 2172 0 R (page.173) 2176 0 R (page.174) 2180 0 R (page.175) 2184 0 R] -/Limits [(page.170) (page.175)] +/Names [(page.169) 2112 0 R (page.17) 1060 0 R (page.170) 2124 0 R (page.171) 2152 0 R (page.172) 2173 0 R (page.173) 2191 0 R] +/Limits [(page.169) (page.173)] >> -% 2315 0 obj +% 2358 0 obj << -/Names [(page.176) 2193 0 R (page.18) 1056 0 R (page.19) 1061 0 R (page.2) 673 0 R (page.20) 1067 0 R (page.21) 1071 0 R] -/Limits [(page.176) (page.21)] +/Names [(page.174) 2207 0 R (page.175) 2211 0 R (page.176) 2216 0 R (page.177) 2221 0 R (page.178) 2225 0 R (page.179) 2229 0 R] +/Limits [(page.174) (page.179)] >> -% 2316 0 obj +% 2359 0 obj +<< +/Names [(page.18) 1065 0 R (page.180) 2237 0 R (page.19) 1071 0 R (page.2) 681 0 R (page.20) 1076 0 R (page.21) 1080 0 R] +/Limits [(page.18) (page.21)] +>> +% 2360 0 obj << -/Names [(page.22) 1075 0 R (page.23) 1079 0 R (page.24) 1085 0 R (page.25) 1091 0 R (page.26) 1098 0 R (page.27) 1105 0 R] +/Names [(page.22) 1086 0 R (page.23) 1090 0 R (page.24) 1096 0 R (page.25) 1102 0 R (page.26) 1109 0 R (page.27) 1116 0 R] /Limits [(page.22) (page.27)] >> -% 2317 0 obj +% 2361 0 obj << -/Names [(page.28) 1111 0 R (page.29) 1115 0 R (page.3) 912 0 R (page.30) 1126 0 R (page.31) 1133 0 R (page.32) 1143 0 R] +/Names [(page.28) 1122 0 R (page.29) 1126 0 R (page.3) 920 0 R (page.30) 1137 0 R (page.31) 1144 0 R (page.32) 1154 0 R] /Limits [(page.28) (page.32)] >> -% 2318 0 obj +% 2362 0 obj << -/Names [(page.33) 1149 0 R (page.34) 1160 0 R (page.35) 1166 0 R (page.36) 1173 0 R (page.37) 1178 0 R (page.38) 1187 0 R] +/Names [(page.33) 1160 0 R (page.34) 1172 0 R (page.35) 1177 0 R (page.36) 1184 0 R (page.37) 1189 0 R (page.38) 1198 0 R] /Limits [(page.33) (page.38)] >> -% 2319 0 obj +% 2363 0 obj << -/Names [(page.39) 1195 0 R (page.4) 925 0 R (page.40) 1200 0 R (page.41) 1208 0 R (page.42) 1213 0 R (page.43) 1220 0 R] +/Names [(page.39) 1206 0 R (page.4) 933 0 R (page.40) 1211 0 R (page.41) 1219 0 R (page.42) 1224 0 R (page.43) 1231 0 R] /Limits [(page.39) (page.43)] >> -% 2320 0 obj +% 2364 0 obj << -/Names [(page.44) 1226 0 R (page.45) 1239 0 R (page.46) 1246 0 R (page.47) 1253 0 R (page.48) 1264 0 R (page.49) 1280 0 R] +/Names [(page.44) 1237 0 R (page.45) 1250 0 R (page.46) 1257 0 R (page.47) 1264 0 R (page.48) 1276 0 R (page.49) 1291 0 R] /Limits [(page.44) (page.49)] >> -% 2321 0 obj +% 2365 0 obj << -/Names [(page.5) 937 0 R (page.50) 1287 0 R (page.51) 1298 0 R (page.52) 1304 0 R (page.53) 1315 0 R (page.54) 1320 0 R] +/Names [(page.5) 945 0 R (page.50) 1298 0 R (page.51) 1309 0 R (page.52) 1315 0 R (page.53) 1326 0 R (page.54) 1331 0 R] /Limits [(page.5) (page.54)] >> -% 2322 0 obj +% 2366 0 obj << -/Names [(page.55) 1331 0 R (page.56) 1337 0 R (page.57) 1346 0 R (page.58) 1352 0 R (page.59) 1360 0 R (page.6) 942 0 R] +/Names [(page.55) 1342 0 R (page.56) 1348 0 R (page.57) 1357 0 R (page.58) 1363 0 R (page.59) 1371 0 R (page.6) 950 0 R] /Limits [(page.55) (page.6)] >> -% 2323 0 obj +% 2367 0 obj << -/Names [(page.60) 1367 0 R (page.61) 1381 0 R (page.62) 1389 0 R (page.63) 1398 0 R (page.64) 1406 0 R (page.65) 1410 0 R] +/Names [(page.60) 1378 0 R (page.61) 1392 0 R (page.62) 1400 0 R (page.63) 1409 0 R (page.64) 1417 0 R (page.65) 1421 0 R] /Limits [(page.60) (page.65)] >> -% 2324 0 obj +% 2368 0 obj << -/Names [(page.66) 1425 0 R (page.67) 1430 0 R (page.68) 1437 0 R (page.69) 1444 0 R (page.7) 955 0 R (page.70) 1448 0 R] +/Names [(page.66) 1436 0 R (page.67) 1441 0 R (page.68) 1448 0 R (page.69) 1455 0 R (page.7) 963 0 R (page.70) 1459 0 R] /Limits [(page.66) (page.70)] >> -% 2325 0 obj + +endstream +endobj +2433 0 obj +<< + /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() +/CreationDate (D:20241119121557+01'00') +/ModDate (D:20241119121557+01'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) +>> +endobj +2370 0 obj +<< +/Type /ObjStm +/N 63 +/First 631 +/Length 11675 +>> +stream +2369 0 2371 172 2372 342 2373 514 2374 684 2375 856 2376 1026 2377 1222 2378 1419 2379 1615 +2380 1802 2381 1984 2382 2178 2383 2408 2384 2638 2385 2855 2386 3080 2387 3308 2388 3530 2389 3752 +2390 3982 2391 4211 2392 4441 2393 4665 2394 4891 2395 5119 2396 5341 2397 5563 2398 5794 2399 6056 +2400 6314 2401 6576 2402 6846 2403 7111 2404 7373 2405 7603 2406 7783 2407 7962 2408 8136 2409 8284 +2410 8398 2411 8510 2412 8621 2413 8732 2414 8848 2415 8970 2416 9089 2417 9202 2418 9315 2419 9427 +2420 9538 2421 9653 2422 9776 2423 9902 2424 10028 2425 10159 2426 10284 2427 10358 2428 10477 2429 10599 +2430 10712 2431 10796 2432 10831 +% 2369 0 obj << -/Names [(page.71) 1453 0 R (page.72) 1459 0 R (page.73) 1465 0 R (page.74) 1476 0 R (page.75) 1481 0 R (page.76) 1490 0 R] +/Names [(page.71) 1464 0 R (page.72) 1470 0 R (page.73) 1476 0 R (page.74) 1487 0 R (page.75) 1492 0 R (page.76) 1502 0 R] /Limits [(page.71) (page.76)] >> -% 2326 0 obj +% 2371 0 obj << -/Names [(page.77) 1498 0 R (page.78) 1503 0 R (page.79) 1509 0 R (page.8) 977 0 R (page.80) 1514 0 R (page.81) 1522 0 R] +/Names [(page.77) 1509 0 R (page.78) 1514 0 R (page.79) 1520 0 R (page.8) 986 0 R (page.80) 1525 0 R (page.81) 1533 0 R] /Limits [(page.77) (page.81)] >> -% 2327 0 obj +% 2372 0 obj << -/Names [(page.82) 1527 0 R (page.83) 1535 0 R (page.84) 1541 0 R (page.85) 1550 0 R (page.86) 1564 0 R (page.87) 1568 0 R] +/Names [(page.82) 1538 0 R (page.83) 1546 0 R (page.84) 1552 0 R (page.85) 1561 0 R (page.86) 1575 0 R (page.87) 1579 0 R] /Limits [(page.82) (page.87)] >> -% 2328 0 obj +% 2373 0 obj << -/Names [(page.88) 1581 0 R (page.89) 1587 0 R (page.9) 988 0 R (page.90) 1594 0 R (page.91) 1598 0 R (page.92) 1606 0 R] +/Names [(page.88) 1592 0 R (page.89) 1598 0 R (page.9) 997 0 R (page.90) 1605 0 R (page.91) 1610 0 R (page.92) 1618 0 R] /Limits [(page.88) (page.92)] >> -% 2329 0 obj +% 2374 0 obj << -/Names [(page.93) 1611 0 R (page.94) 1620 0 R (page.95) 1628 0 R (page.96) 1632 0 R (page.97) 1637 0 R (page.98) 1642 0 R] +/Names [(page.93) 1622 0 R (page.94) 1631 0 R (page.95) 1639 0 R (page.96) 1643 0 R (page.97) 1648 0 R (page.98) 1653 0 R] /Limits [(page.93) (page.98)] >> -% 2330 0 obj +% 2375 0 obj << -/Names [(page.99) 1649 0 R (page.i) 719 0 R (page.ii) 776 0 R (page.iii) 823 0 R (page.iv) 863 0 R (precdata) 1106 0 R] +/Names [(page.99) 1660 0 R (page.i) 728 0 R (page.ii) 784 0 R (page.iii) 831 0 R (page.iv) 872 0 R (precdata) 1117 0 R] /Limits [(page.99) (precdata)] >> -% 2331 0 obj +% 2376 0 obj << -/Names [(section*.1) 720 0 R (section*.10) 618 0 R (section*.11) 622 0 R (section*.12) 626 0 R (section*.13) 630 0 R (section*.14) 634 0 R] +/Names [(section*.1) 729 0 R (section*.10) 626 0 R (section*.11) 630 0 R (section*.12) 634 0 R (section*.13) 638 0 R (section*.14) 642 0 R] /Limits [(section*.1) (section*.14)] >> -% 2332 0 obj +% 2377 0 obj << -/Names [(section*.15) 638 0 R (section*.16) 642 0 R (section*.17) 646 0 R (section*.18) 650 0 R (section*.19) 654 0 R (section*.2) 2055 0 R] +/Names [(section*.15) 646 0 R (section*.16) 650 0 R (section*.17) 654 0 R (section*.18) 658 0 R (section*.19) 662 0 R (section*.2) 2104 0 R] /Limits [(section*.15) (section*.2)] >> -% 2333 0 obj +% 2378 0 obj << -/Names [(section*.20) 2185 0 R (section*.3) 2084 0 R (section*.4) 2105 0 R (section*.5) 2125 0 R (section*.6) 601 0 R (section*.7) 606 0 R] +/Names [(section*.20) 2230 0 R (section*.3) 2133 0 R (section*.4) 2154 0 R (section*.5) 2175 0 R (section*.6) 610 0 R (section*.7) 614 0 R] /Limits [(section*.20) (section*.7)] >> -% 2334 0 obj +% 2379 0 obj << -/Names [(section*.8) 610 0 R (section*.9) 614 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 569 0 R (section.12) 577 0 R] +/Names [(section*.8) 618 0 R (section*.9) 622 0 R (section.1) 7 0 R (section.10) 541 0 R (section.11) 573 0 R (section.12) 585 0 R] /Limits [(section*.8) (section.12)] >> -% 2335 0 obj +% 2380 0 obj << -/Names [(section.13) 597 0 R (section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R] +/Names [(section.13) 606 0 R (section.2) 11 0 R (section.3) 35 0 R (section.4) 220 0 R (section.5) 288 0 R (section.6) 308 0 R] /Limits [(section.13) (section.6)] >> -% 2336 0 obj +% 2381 0 obj << -/Names [(section.7) 421 0 R (section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1052 0 R (spdata) 1045 0 R (subsection.10.1) 545 0 R] +/Names [(section.7) 421 0 R (section.8) 493 0 R (section.9) 513 0 R (spbasedata) 1061 0 R (spdata) 1054 0 R (subsection.10.1) 545 0 R] /Limits [(section.7) (subsection.10.1)] >> -% 2337 0 obj +% 2382 0 obj << -/Names [(subsection.10.2) 549 0 R (subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.11.1) 573 0 R] -/Limits [(subsection.10.2) (subsection.11.1)] +/Names [(subsection.10.2) 549 0 R (subsection.10.3) 553 0 R (subsection.10.4) 557 0 R (subsection.10.5) 561 0 R (subsection.10.6) 565 0 R (subsection.10.7) 569 0 R] +/Limits [(subsection.10.2) (subsection.10.7)] >> -% 2338 0 obj +% 2383 0 obj << -/Names [(subsection.12.1) 581 0 R (subsection.12.2) 585 0 R (subsection.12.3) 589 0 R (subsection.12.4) 593 0 R (subsection.2.1) 15 0 R (subsection.2.2) 19 0 R] -/Limits [(subsection.12.1) (subsection.2.2)] +/Names [(subsection.11.1) 577 0 R (subsection.11.2) 581 0 R (subsection.12.1) 589 0 R (subsection.12.2) 593 0 R (subsection.12.3) 597 0 R (subsection.12.4) 601 0 R] +/Limits [(subsection.11.1) (subsection.12.4)] >> -% 2339 0 obj +% 2384 0 obj << -/Names [(subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R (subsection.3.3) 183 0 R (subsection.3.4) 212 0 R] -/Limits [(subsection.2.3) (subsection.3.4)] +/Names [(subsection.2.1) 15 0 R (subsection.2.2) 19 0 R (subsection.2.3) 23 0 R (subsection.2.4) 31 0 R (subsection.3.1) 39 0 R (subsection.3.2) 103 0 R] +/Limits [(subsection.2.1) (subsection.3.2)] >> -% 2340 0 obj +% 2385 0 obj << -/Names [(subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R (subsection.4.12) 268 0 R (subsection.4.13) 272 0 R] -/Limits [(subsection.3.5) (subsection.4.13)] +/Names [(subsection.3.3) 183 0 R (subsection.3.4) 212 0 R (subsection.3.5) 216 0 R (subsection.4.1) 224 0 R (subsection.4.10) 260 0 R (subsection.4.11) 264 0 R] +/Limits [(subsection.3.3) (subsection.4.11)] >> -% 2341 0 obj +% 2386 0 obj << -/Names [(subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R (subsection.4.3) 232 0 R (subsection.4.4) 236 0 R] -/Limits [(subsection.4.14) (subsection.4.4)] +/Names [(subsection.4.12) 268 0 R (subsection.4.13) 272 0 R (subsection.4.14) 276 0 R (subsection.4.15) 280 0 R (subsection.4.16) 284 0 R (subsection.4.2) 228 0 R] +/Limits [(subsection.4.12) (subsection.4.2)] >> -% 2342 0 obj +% 2387 0 obj << -/Names [(subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R (subsection.4.9) 256 0 R (subsection.5.1) 292 0 R] -/Limits [(subsection.4.5) (subsection.5.1)] +/Names [(subsection.4.3) 232 0 R (subsection.4.4) 236 0 R (subsection.4.5) 240 0 R (subsection.4.6) 244 0 R (subsection.4.7) 248 0 R (subsection.4.8) 252 0 R] +/Limits [(subsection.4.3) (subsection.4.8)] >> -% 2343 0 obj +% 2388 0 obj << -/Names [(subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R (subsection.6.10) 348 0 R (subsection.6.11) 352 0 R] -/Limits [(subsection.5.2) (subsection.6.11)] +/Names [(subsection.4.9) 256 0 R (subsection.5.1) 292 0 R (subsection.5.2) 296 0 R (subsection.5.3) 300 0 R (subsection.5.4) 304 0 R (subsection.6.1) 312 0 R] +/Limits [(subsection.4.9) (subsection.6.1)] >> -% 2344 0 obj +% 2389 0 obj << -/Names [(subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R (subsection.6.16) 372 0 R (subsection.6.17) 376 0 R] -/Limits [(subsection.6.12) (subsection.6.17)] +/Names [(subsection.6.10) 348 0 R (subsection.6.11) 352 0 R (subsection.6.12) 356 0 R (subsection.6.13) 360 0 R (subsection.6.14) 364 0 R (subsection.6.15) 368 0 R] +/Limits [(subsection.6.10) (subsection.6.15)] >> -% 2345 0 obj +% 2390 0 obj << -/Names [(subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R (subsection.6.21) 392 0 R (subsection.6.22) 396 0 R] -/Limits [(subsection.6.18) (subsection.6.22)] +/Names [(subsection.6.16) 372 0 R (subsection.6.17) 376 0 R (subsection.6.18) 380 0 R (subsection.6.19) 384 0 R (subsection.6.2) 316 0 R (subsection.6.20) 388 0 R] +/Limits [(subsection.6.16) (subsection.6.20)] >> -% 2346 0 obj +% 2391 0 obj << -/Names [(subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R (subsection.6.27) 417 0 R (subsection.6.3) 320 0 R] -/Limits [(subsection.6.23) (subsection.6.3)] +/Names [(subsection.6.21) 392 0 R (subsection.6.22) 396 0 R (subsection.6.23) 400 0 R (subsection.6.24) 405 0 R (subsection.6.25) 409 0 R (subsection.6.26) 413 0 R] +/Limits [(subsection.6.21) (subsection.6.26)] >> -% 2347 0 obj +% 2392 0 obj << -/Names [(subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R (subsection.6.8) 340 0 R (subsection.6.9) 344 0 R] -/Limits [(subsection.6.4) (subsection.6.9)] +/Names [(subsection.6.27) 417 0 R (subsection.6.3) 320 0 R (subsection.6.4) 324 0 R (subsection.6.5) 328 0 R (subsection.6.6) 332 0 R (subsection.6.7) 336 0 R] +/Limits [(subsection.6.27) (subsection.6.7)] >> -% 2348 0 obj +% 2393 0 obj << -/Names [(subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R (subsection.7.13) 473 0 R (subsection.7.14) 477 0 R] -/Limits [(subsection.7.1) (subsection.7.14)] +/Names [(subsection.6.8) 340 0 R (subsection.6.9) 344 0 R (subsection.7.1) 425 0 R (subsection.7.10) 461 0 R (subsection.7.11) 465 0 R (subsection.7.12) 469 0 R] +/Limits [(subsection.6.8) (subsection.7.12)] >> -% 2349 0 obj +% 2394 0 obj << -/Names [(subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R (subsection.7.3) 433 0 R (subsection.7.4) 437 0 R] -/Limits [(subsection.7.15) (subsection.7.4)] +/Names [(subsection.7.13) 473 0 R (subsection.7.14) 477 0 R (subsection.7.15) 481 0 R (subsection.7.16) 485 0 R (subsection.7.17) 489 0 R (subsection.7.2) 429 0 R] +/Limits [(subsection.7.13) (subsection.7.2)] >> -% 2350 0 obj +% 2395 0 obj << -/Names [(subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R (subsection.7.9) 457 0 R (subsection.8.1) 497 0 R] -/Limits [(subsection.7.5) (subsection.8.1)] +/Names [(subsection.7.3) 433 0 R (subsection.7.4) 437 0 R (subsection.7.5) 441 0 R (subsection.7.6) 445 0 R (subsection.7.7) 449 0 R (subsection.7.8) 453 0 R] +/Limits [(subsection.7.3) (subsection.7.8)] >> -% 2351 0 obj +% 2396 0 obj << -/Names [(subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R (subsection.9.2) 521 0 R (subsection.9.3) 525 0 R] -/Limits [(subsection.8.2) (subsection.9.3)] +/Names [(subsection.7.9) 457 0 R (subsection.8.1) 497 0 R (subsection.8.2) 501 0 R (subsection.8.3) 505 0 R (subsection.8.4) 509 0 R (subsection.9.1) 517 0 R] +/Limits [(subsection.7.9) (subsection.9.1)] >> -% 2352 0 obj +% 2397 0 obj << -/Names [(subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R (subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R] -/Limits [(subsection.9.4) (subsubsection.3.1.10)] +/Names [(subsection.9.2) 521 0 R (subsection.9.3) 525 0 R (subsection.9.4) 529 0 R (subsection.9.5) 533 0 R (subsection.9.6) 537 0 R (subsubsection.2.3.1) 27 0 R] +/Limits [(subsection.9.2) (subsubsection.2.3.1)] >> -% 2353 0 obj +% 2398 0 obj << -/Names [(subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R (subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R] -/Limits [(subsubsection.3.1.11) (subsubsection.3.1.2)] +/Names [(subsubsection.3.1.1) 43 0 R (subsubsection.3.1.10) 79 0 R (subsubsection.3.1.11) 83 0 R (subsubsection.3.1.12) 87 0 R (subsubsection.3.1.13) 91 0 R (subsubsection.3.1.14) 95 0 R] +/Limits [(subsubsection.3.1.1) (subsubsection.3.1.14)] >> -% 2354 0 obj +% 2399 0 obj << -/Names [(subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R (subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R] -/Limits [(subsubsection.3.1.3) (subsubsection.3.1.8)] +/Names [(subsubsection.3.1.15) 99 0 R (subsubsection.3.1.2) 47 0 R (subsubsection.3.1.3) 51 0 R (subsubsection.3.1.4) 55 0 R (subsubsection.3.1.5) 59 0 R (subsubsection.3.1.6) 63 0 R] +/Limits [(subsubsection.3.1.15) (subsubsection.3.1.6)] >> -% 2355 0 obj +% 2400 0 obj << -/Names [(subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R (subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R] -/Limits [(subsubsection.3.1.9) (subsubsection.3.2.13)] +/Names [(subsubsection.3.1.7) 67 0 R (subsubsection.3.1.8) 71 0 R (subsubsection.3.1.9) 75 0 R (subsubsection.3.2.1) 107 0 R (subsubsection.3.2.10) 143 0 R (subsubsection.3.2.11) 147 0 R] +/Limits [(subsubsection.3.1.7) (subsubsection.3.2.11)] >> -% 2356 0 obj +% 2401 0 obj << -/Names [(subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R (subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R] -/Limits [(subsubsection.3.2.14) (subsubsection.3.2.19)] +/Names [(subsubsection.3.2.12) 151 0 R (subsubsection.3.2.13) 155 0 R (subsubsection.3.2.14) 159 0 R (subsubsection.3.2.15) 163 0 R (subsubsection.3.2.16) 167 0 R (subsubsection.3.2.17) 171 0 R] +/Limits [(subsubsection.3.2.12) (subsubsection.3.2.17)] >> -% 2357 0 obj +% 2402 0 obj << -/Names [(subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R (subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R] -/Limits [(subsubsection.3.2.2) (subsubsection.3.2.7)] +/Names [(subsubsection.3.2.18) 175 0 R (subsubsection.3.2.19) 179 0 R (subsubsection.3.2.2) 111 0 R (subsubsection.3.2.3) 115 0 R (subsubsection.3.2.4) 119 0 R (subsubsection.3.2.5) 123 0 R] +/Limits [(subsubsection.3.2.18) (subsubsection.3.2.5)] >> -% 2358 0 obj +% 2403 0 obj << -/Names [(subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R (subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R] -/Limits [(subsubsection.3.2.8) (subsubsection.3.3.4)] +/Names [(subsubsection.3.2.6) 127 0 R (subsubsection.3.2.7) 131 0 R (subsubsection.3.2.8) 135 0 R (subsubsection.3.2.9) 139 0 R (subsubsection.3.3.1) 187 0 R (subsubsection.3.3.2) 191 0 R] +/Limits [(subsubsection.3.2.6) (subsubsection.3.3.2)] >> -% 2359 0 obj +% 2404 0 obj << -/Names [(subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1099 0 R (table.10) 1247 0 R (table.11) 1255 0 R (table.12) 1268 0 R] -/Limits [(subsubsection.3.3.5) (table.12)] +/Names [(subsubsection.3.3.3) 195 0 R (subsubsection.3.3.4) 199 0 R (subsubsection.3.3.5) 204 0 R (subsubsection.3.3.6) 208 0 R (table.1) 1110 0 R (table.10) 1258 0 R] +/Limits [(subsubsection.3.3.3) (table.10)] >> -% 2360 0 obj +% 2405 0 obj << -/Names [(table.13) 1288 0 R (table.14) 1316 0 R (table.15) 1332 0 R (table.16) 1347 0 R (table.17) 1361 0 R (table.18) 1390 0 R] -/Limits [(table.13) (table.18)] +/Names [(table.11) 1266 0 R (table.12) 1280 0 R (table.13) 1299 0 R (table.14) 1327 0 R (table.15) 1343 0 R (table.16) 1358 0 R] +/Limits [(table.11) (table.16)] >> -% 2361 0 obj +% 2406 0 obj << -/Names [(table.19) 1426 0 R (table.2) 1144 0 R (table.20) 1438 0 R (table.21) 2059 0 R (table.3) 1161 0 R (table.4) 1174 0 R] -/Limits [(table.19) (table.4)] +/Names [(table.17) 1372 0 R (table.18) 1401 0 R (table.19) 1437 0 R (table.2) 1155 0 R (table.20) 1449 0 R (table.21) 1979 0 R] +/Limits [(table.17) (table.21)] >> -% 2362 0 obj +% 2407 0 obj << -/Names [(table.5) 1188 0 R (table.6) 1196 0 R (table.7) 1209 0 R (table.8) 1221 0 R (table.9) 1240 0 R (title.0) 3 0 R] -/Limits [(table.5) (title.0)] +/Names [(table.22) 2107 0 R (table.3) 1173 0 R (table.4) 1185 0 R (table.5) 1199 0 R (table.6) 1207 0 R (table.7) 1220 0 R] +/Limits [(table.22) (table.7)] >> -% 2363 0 obj +% 2408 0 obj << -/Names [(vbasedata) 1033 0 R (vdata) 1086 0 R] -/Limits [(vbasedata) (vdata)] +/Names [(table.8) 1232 0 R (table.9) 1251 0 R (title.0) 3 0 R (vbasedata) 1042 0 R (vdata) 1097 0 R] +/Limits [(table.8) (vdata)] >> -% 2364 0 obj +% 2409 0 obj << -/Kids [2261 0 R 2262 0 R 2263 0 R 2264 0 R 2266 0 R 2267 0 R] +/Kids [2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R] /Limits [(Doc-Start) (Item.125)] >> - -endstream -endobj -2388 0 obj -<< - /Title (Parallel Sparse BLAS V. 3.9.0) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() -/CreationDate (D:20240716132003+02'00') -/ModDate (D:20240716132003+02'00') -/Trapped /False -/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Fedora 40) kpathsea version 6.3.5) ->> -endobj -2366 0 obj +% 2410 0 obj << -/Type /ObjStm -/N 22 -/First 209 -/Length 2765 +/Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R] +/Limits [(Item.126) (Item.23)] >> -stream -2365 0 2367 112 2368 223 2369 333 2370 449 2371 573 2372 693 2373 806 2374 918 2375 1029 -2376 1140 2377 1254 2378 1375 2379 1501 2380 1627 2381 1757 2382 1878 2383 1999 2384 2121 2385 2224 -2386 2308 2387 2343 -% 2365 0 obj +% 2411 0 obj << -/Kids [2268 0 R 2269 0 R 2270 0 R 2271 0 R 2272 0 R 2273 0 R] -/Limits [(Item.126) (Item.26)] +/Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R] +/Limits [(Item.24) (Item.56)] >> -% 2367 0 obj +% 2412 0 obj << -/Kids [2274 0 R 2275 0 R 2276 0 R 2277 0 R 2278 0 R 2279 0 R] -/Limits [(Item.27) (Item.59)] +/Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R] +/Limits [(Item.57) (Item.89)] >> -% 2368 0 obj +% 2413 0 obj << -/Kids [2280 0 R 2281 0 R 2282 0 R 2283 0 R 2284 0 R 2285 0 R] -/Limits [(Item.6) (Item.91)] +/Kids [2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R] +/Limits [(Item.9) (cite.machiels)] >> -% 2369 0 obj +% 2414 0 obj << -/Kids [2286 0 R 2287 0 R 2288 0 R 2289 0 R 2290 0 R 2291 0 R] -/Limits [(Item.92) (equation.4.1)] +/Kids [2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R] +/Limits [(cite.metcalf) (lstlisting.-9)] >> -% 2370 0 obj +% 2415 0 obj << -/Kids [2292 0 R 2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R] -/Limits [(equation.4.2) (lstnumber.-11.1)] +/Kids [2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R] +/Limits [(lstnumber.-1.1) (page.108)] >> -% 2371 0 obj +% 2416 0 obj << -/Kids [2298 0 R 2299 0 R 2300 0 R 2301 0 R 2302 0 R 2303 0 R] -/Limits [(lstnumber.-12.1) (page.115)] +/Kids [2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R] +/Limits [(page.109) (page.140)] >> -% 2372 0 obj +% 2417 0 obj << -/Kids [2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R] -/Limits [(page.116) (page.148)] +/Kids [2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R] +/Limits [(page.141) (page.173)] >> -% 2373 0 obj +% 2418 0 obj << -/Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R] -/Limits [(page.149) (page.21)] +/Kids [2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R] +/Limits [(page.174) (page.43)] >> -% 2374 0 obj +% 2419 0 obj << -/Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R] -/Limits [(page.22) (page.54)] +/Kids [2364 0 R 2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R] +/Limits [(page.44) (page.76)] >> -% 2375 0 obj +% 2420 0 obj << -/Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R] -/Limits [(page.55) (page.87)] +/Kids [2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R] +/Limits [(page.77) (section*.14)] >> -% 2376 0 obj +% 2421 0 obj << -/Kids [2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R] -/Limits [(page.88) (section*.7)] +/Kids [2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R] +/Limits [(section*.15) (subsection.10.7)] >> -% 2377 0 obj +% 2422 0 obj << -/Kids [2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R] -/Limits [(section*.8) (subsection.3.4)] +/Kids [2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R] +/Limits [(subsection.11.1) (subsection.6.1)] >> -% 2378 0 obj +% 2423 0 obj << -/Kids [2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R] -/Limits [(subsection.3.5) (subsection.6.22)] +/Kids [2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R] +/Limits [(subsection.6.10) (subsection.7.2)] >> -% 2379 0 obj +% 2424 0 obj << -/Kids [2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R] -/Limits [(subsection.6.23) (subsection.9.3)] +/Kids [2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R 2400 0 R] +/Limits [(subsection.7.3) (subsubsection.3.2.11)] >> -% 2380 0 obj +% 2425 0 obj << -/Kids [2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R] -/Limits [(subsection.9.4) (subsubsection.3.2.7)] +/Kids [2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R] +/Limits [(subsubsection.3.2.12) (table.21)] >> -% 2381 0 obj +% 2426 0 obj << -/Kids [2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R] -/Limits [(subsubsection.3.2.8) (vdata)] +/Kids [2407 0 R 2408 0 R] +/Limits [(table.22) (vdata)] >> -% 2382 0 obj +% 2427 0 obj << -/Kids [2364 0 R 2365 0 R 2367 0 R 2368 0 R 2369 0 R 2370 0 R] -/Limits [(Doc-Start) (lstnumber.-11.1)] +/Kids [2409 0 R 2410 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R] +/Limits [(Doc-Start) (lstlisting.-9)] >> -% 2383 0 obj +% 2428 0 obj << -/Kids [2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R] -/Limits [(lstnumber.-12.1) (section*.7)] +/Kids [2415 0 R 2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R] +/Limits [(lstnumber.-1.1) (section*.14)] >> -% 2384 0 obj +% 2429 0 obj << -/Kids [2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R] -/Limits [(section*.8) (vdata)] +/Kids [2421 0 R 2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R] +/Limits [(section*.15) (vdata)] >> -% 2385 0 obj +% 2430 0 obj << -/Kids [2382 0 R 2383 0 R 2384 0 R] +/Kids [2427 0 R 2428 0 R 2429 0 R] /Limits [(Doc-Start) (vdata)] >> -% 2386 0 obj +% 2431 0 obj << -/Dests 2385 0 R +/Dests 2430 0 R >> -% 2387 0 obj +% 2432 0 obj << /Type /Catalog -/Pages 2258 0 R -/Outlines 2259 0 R -/Names 2386 0 R +/Pages 2300 0 R +/Outlines 2301 0 R +/Names 2431 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels<>2<>6<>]>> -/OpenAction 657 0 R +/OpenAction 665 0 R >> endstream endobj -2389 0 obj +2434 0 obj << /Type /XRef -/Index [0 2390] -/Size 2390 +/Index [0 2435] +/Size 2435 /W [1 3 1] -/Root 2387 0 R -/Info 2388 0 R -/ID [<47BB61B7C67E5662CD653809E7A13A98> <47BB61B7C67E5662CD653809E7A13A98>] -/Length 11950 ->> -stream -]`c#_c-^c5]cA\  -cJ[  Z  YXW3V4U5T6S:R;Q <P!"@O#$AN%&CM'(DL)*HK+,IJ-.JI/0QH12RG34YF56ZE78^D9:_C;<aB=>'A?@'@AB'?CD'>EF'=GH' <IJ' ;KL':MN'9OP'8QR'7ST'6UV'5WX'4YZ' 3[\'&2]^''1_`'(0ab'./c?%'3.'4-'5,'<+'@*  -'J)  'Z( '&%%$1#<"M!T [ !"#$/%&<'(K)*Q+,X-.a /0a)12a234a=56a>78aU9:ab;<=> -?@AB CD& EFA GHQ -IJW KL^MNGOPGQRGSTGUVG!WXG+YZG0[\G6]^G<c_`GBbabGHac}GO`GV_Gc^]\  -[  Z #Y*X.W2V6U:T>SHRRQ \P!"O#$ N%&M'("L)*'K+,.J-.7I/0=H12CG34IF56OE78TD9:[C;<bB=>A?@ @AB?CD>EF"=GH+<IJ6;KL;:MN?9OPE8QRI7STO6UV5WX4YZ 3[\2]^]1_`a0abb/c]x.]]x-]]x,]]x+]]x*] ] -x)] ] x (] ]x -']]x &]]x%]]x$]]x#]]x"]]]]] ]]x\x^x]x_O]#]!]"]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]9];]<]=]>]?]@]A]B]C]E]G]I]J]K]L]M]N]O]P]Q]R]W]U]$w]S]T]8]:]D]F]H]X]Y]Z][]\]]]^]_]`]a]b]c           -                       ! % #]V " & ' ( ) * + , - . / 0 1 2 3 4 5 6 8 9 : ; < = > ? @ A B C D E F G H I J K M N P R W U $5 T 7 L O Q S Y [ ] ^ _ ` a b ccccccccccc c -c c c ccccccccc V}c X Z \ cccccccc c!c"c$cx`x,x#x0x.x+x x!x*xxc*c+c,%c1c/c%c.c&c'c(c)*Dxc2c3c8c05c4xWxVxUc6c7x)c=c>iycBc9V_c?c@c:c;c<xxcDcEcGcCp#cFcUcScHcIcKcLcMcNcOcPcQcRcTcVcWcXcYcZc[c\c]c^c_c`cacbccxXxa   -   /*"#.!G$%&'()*+,xY-017/b2=8vx9xbE>?BKFGMNOTLPSx%W[UVXb\']`'cx'xcb' '1''' -H' ''['''mo''''"'`''!'%')'#`'$'+','/'*e'-'K'1'9'7'0ǽ'2'6';'='8j':'A'>1'?'C'D'E'F'G'H'N'L'B 'Ix['O'P'R'Mr'Q'T'U'V'W'X'\'S'Y'['^'a']0/'_'`'c'bA{  f -  !"#' $&+(-)*-./3,P0264589:>7_;=G?6@ABCDEFIJKOHGLNQRVP`{SUXY]WuZxZ\_`ab^c7  -    _"#%!.$'()*+,-1&@.042]36789:@A>5_G;=C?|BEFGHIMD'JLORNnPTUVbZSWY]ca[Aaa\]^_`aָ -'"aal`aaaa a axa -a akaaaaMaaaaa"aaaa#aa!aaaaaa  xa%a&a'a+a$,a(a*a.a,Mza-a0a6a4a/S@a1a3a7a8a:a5pa9a?a;Na<aAaDa@:aBaCaFaIaE8aGxTaHaQaJvaKaLaMaNaOaPaSaVaRaTaXa]aWIaYaZa[a\a_a`a^ Eaaac=O \)   d {hq# !")'$%*+2(,-./01;3456789: -=>?B<@LCDEFGHIJKNORM&PTUYSVX[\_Z!]]c`9ab GGGGf(GsG -G%GGG G G GGG }GGGGGGGGGGwGGG"GFG  G'G#G$G%G&G)G,G(ξG*G.G2G-MG/G1G4G8G3G5G7G:G>G9G;G=G@GDG?kGAGC GFGKGE#YGGGIGJGMGRGL1GNGPGQGTGWGS?GUG]GXU9GYGZG[G\G_G`GaG^c?Gb   -   ϊr 5'!"$%&+( l)/, U-30 174 $[5;8 *9?< /D=E@ EABCDxSIF Z%GOJ q'KLMNSP QYT UVWX]Z Y[c^ K_`ab 0"F !]  -!) !?3!S!jxR$ !t!#)%!&(+,/*!-2340!`1:5!689@;! -<>?FA"{BDELG"HJKPM"NRWQ"SUVY^X"% Z\]`_"8ac#"k - "|>  """d $"!#&'(),%"*/-".123470"59<8#<:@=#>BCFA#DJG#$HLMVTK#&NPQRSWXY[U#G^Z]_\#c)^ac`#tb%lx1x2  -# $!## x-%#$.0$$&'()*+,-/$+] !$,e"$-[$.e$M?$u89:>1$Vq;<=23456$7$&$$HJ$3FL?$GIK@ABCD$<E$8$H$%&|TWM%UVNO%3PQR%5(S%6$%7D%TOZX%aY^[%dG\x_%`c),x x%[xxx %ݦxxx%xx&x%xxxx"x$x3x'& x(x/x4xOx5x6x7x8xQx9x:xPx;x<x=xNx>x?x@&xA&0xB&NxC&vxD&*xE&xF&xG'kVxH'+xI((xJ(pxK(xL)4xM))){)))>))g)))!)#)%* !*8=abc*_E  -    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc >*. > > > > > > > > >  > - >  >  >  > > > > > > > >**W +/Root 2432 0 R +/Info 2433 0 R +/ID [ ] +/Length 12175 +>> +stream +]#"k'!k1 k9kE  +kN    89:;?@ A!"E#$F%&H'(I)*M +,N -.O /0V +12W 34^56_78c9:+;<+=>+?@+AB+CD+ EF+ cGH+bIJ+aKL+`MN+_OP+^QR+]ST+$\UV+%[WX+&ZYZ+'Y[\+-X]^+.W_`+/Vab+5Uc?%+:T+;S+<R+CQ+GP  ++QO  +aN  ML$K,J8ICHTG[FbE D!"C#$6B%&CA'(R@)*X?+,_>-.h=/0h0<12h9;34hD:56hE978h\89:7;< 6=>5?@4AB"3CD-2EFH1GHX0IJ^/KLF.MNF -OPF,QRF+STF#*UVF()WXF2(YZF7'[\F=&]^FC%_`FI$abFO#c}FV"F]!  +  +  $ *159=AEOY c!" #$%&'())*. +,5 -.> /0D +12J 34P56V78[9:b;<=> ?@ABCD#EF*cGH3bIJ@aKLK`MNP_OPT^QRZ]ST^\UV[WXZYZ-Y[\.X]^5W_`6Vabw!Uc]%w%T]]w&S]]w(R]]w,Q]]w-P] ] +w.O] ] w/N] ]w0M]]w1L]]w2K]]w3J]]w7I]]w8H]]w9G]]w:F]]]] ]$]!]"Ҕ]']%2]&])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]=]?]@]A]B]C]D]E]F]G]I]K]L]M]N]O]P]Q]R]S]T]U]V][]Y](]W]X]<]>]H]J]\]]]^]_]`]a]b]c  +    !"#$%)']Z"&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPRTV[Y(7XNQSUW]_`abckkkkkkkkkk k +k k k kkkkkkkkkkkkkZk\^kkkk k!k"k#k$k%k&k(k wRwIwVwTwQwFwGwPwCwDk.k/k0/Wk5k3k)k2k*k+k,k-4 wEk6k7k<k4?k8k:k;wOkAkBy,kFk=dtkCkDk>k?k@wBwAkHkIkKkGkJkYkWkLkMkOkPkQkRkSkTkUkVkXkZk[k\k]k^k_k`kakbkc!&  +  /%Q| !"#$'(3&j)*+,-./01256<4x7B=>"JCDGPKxLRSTYQ؝UXwN\`Z6[]+ab+d+ +J+#++ +\+ ++t++++++++o++!+"+)+ 7+#+(+,+0+*k++$+2+3+6+1+4+R+8+@+>+7+9+=+B+D+? +A+H+E+F+J+K+L+M+N+O+U+S+I+P+V+W+Y+T;+X%+[+\+]+^+_+c+ZE+`+b /  +  ,l& !"&#%()*.' |+-2/'D01456:3379=;Q<?@AE>T1BD'NFnGHIJKLMPQRVOSUXY]WZ\_`^ac +  +  (+e !"#$%'Kn&)*,(h+./012348-{)57;9:=>?@AGHE<BD)JFWILMNOPTKQSVYUW[\]haZߛ^`Phh bhhchhhYhhI|h h +h *hhhhh <hhh&hhhh%hhhhh)h hhh*h!h(h"h#h$h%h&h' +>3h,h-h.h2h+kh/h1h5h3h4+h7h=h;h6uh8h:h>h?hAh<h@hFhBhChHhKhGhIhJhMhPhLhNhOhXhQ$hRhShThUhVhW,hZh]hY0rh[h_h^Lh`hahbhcS=  +  ]-u $ԉ!#*%&'()0.+T,129/345678B:$;<=>?@A.DEFIC8GSJT:KLMNOPQRUVYTbW[\`Zn ]_bcFa}FFFFF/FF F FļF +FF FFFFFFFF@FFFFFF F:FF$F!*F"F&F)F%F'0F.F*.F+F,F-F0F3F/1LF1F5F9F4H9F6F8F;F?F:U^F<F>FAFEF@i|FBFDFGFKFFvFHFJ1FMFRFLFNFPFQFTFYFSFUFWFXF[F^FZF\F_F`FaFbFc!AA  D 2    =]! >E '" U #%&.( g)+,-2/ y0363 4:7 8>; Y<B? P@FC DLG HIJK4PM NVQ oRSTUZW X`[!Q\]^_a!)qb"S!f5 +!| !  !d!!&! !"#$%6+'" (*0," -/2361"6F49:;7"Qn8A<"zA=?@GB"hCEF7MH"IKLSN"sOQRWT"UY^X"&Z\]`_"ac$""8 + "7  # #)* #F_$!#I+"&'(,%#Nj)+98./0164-#b\295#s7w@;<=>A:# ?DB#>CFGHILE#JNQM#QO:UR#+SWX[V#6Y_\#]ab`$c%=  + $N  $k;$}# $#!$i"%'()*+/$$,&wWwX12%s3%DK=90$478wS?MC:%f>@AB<;<%%VXD%' +LNOPQRSTUWEF%OGHI%PJ%Q%R%p%`abwY%z&cwwZ[\]^%_%%%gw w'LU&)zw +ww& 0w w wwwwww&4w &5&6&P,&\www&[_wwww&www&w&&$&/ww&pww"w&w =w)w#&w$w'w4w*&w+w;w5' dw6wKw<'Kw=w>w?wHwJwZwL'4wMwUwYw[w\w]w^w_w`wawbwc*L'yz'Y'I'V'({ (qM +( (6 (ۓ (O)J))** +X****&*,O*2*6 *:*@*F>?@ABCDE**/#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc B* B B B B B B B B B  B + B  B  B  B B B B B B B B B B B B B B B B B B B  B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/ B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B< B= B>*+& endstream endobj startxref -2800727 +2828019 %%EOF diff --git a/docs/src/biblio.tex b/docs/src/biblio.tex index 5ba3605c..41fa7ddd 100644 --- a/docs/src/biblio.tex +++ b/docs/src/biblio.tex @@ -8,6 +8,11 @@ in J.~Dongarra, K.~Madsen, J.~Wasniewski, editors, Proceedings of PARA~04 Workshop on State of the Art in Scientific Computing, pp.~546--553, Lecture Notes in Computer Science, Springer, 2005. +\bibitem{BERTACCINIFILIPPONE} +D. Bertaccini\ and\ S. Filippone, +{\em Sparse approximate inverse preconditioners on high performance GPU platforms}, +Comput. Math. Appl., 71, (2016), no.~3, 693--711. +% \bibitem{2007d} A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,\newblock 2LEV-D2P4: a package of high-performance preconditioners,\newblock Applicable Algebra in Engineering, Communications and Computing, @@ -183,7 +188,14 @@ MIT Press, 1998. {\em Scientific Programming\/}~{\em 22,\/}~1, 1--19. \bibitem{OurTechRep} D.~Barbieri, V.~Cardellini, A.~Fanfarillo, S.~Filippone, Three storage formats - for sparse matrices on {GPGPUs}, Tech. Rep. DICII RR-15.6, Universit\`a di + for sparse matrices on {GPGPUs}, Tech. Rep. DICII RR-15.6, + Universit\`a di Roma Tor Vergata (February 2015). +\bibitem{Filippone:2017:SMM:3034774.3017994} +S.~Filippone, V.~Cardellini, D.~Barbieri, and A.~Fanfarillo. + Sparse matrix-vector multiplication on {GPGPUs}. + {\em ACM Trans. Math. Softw.}, 43(4):30:1--30:49, 2017. + + \end{thebibliography} diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index 07fb6375..0ef07fa8 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -898,9 +898,7 @@ A variable of type \fortinline|psb_Tspmat_type|. %\addcontentsline{toc}{paragraph}{clean\_zeros} \fortinline|call a%clean_zeros(info)| -Eliminates zero coefficients in the input matrix. Note that depending -on the internal storage format, there may still be some amount of -zero padding in the output. +Eliminates zero coefficients explicitly stored in the input matrix. \begin{description} \item[Type:] Asynchronous. @@ -915,6 +913,13 @@ Scope: {\bf local}.\\ A variable of type \fortinline|psb_Tspmat_type|. \item[info] Return code. \end{description} +{\par\noindent\bfseries Notes} +\begin{enumerate} +\item Depending on the internal storage format, there may still be some amount of + zero padding in the output. +\item Any explicit zeros on the main diagonal are always kept in the + data structure. +\end{enumerate} \subsubsection{get\_diag --- Get main diagonal} %\addcontentsline{toc}{paragraph}{get\_diag} @@ -1317,13 +1322,14 @@ like Diagonal Scaling or Block Jacobi with incomplete factorization ILU(0). A preconditioner is held in the \hypertarget{precdata}{{\tt - psb\_prec\_type}} data structure reported in -figure~\ref{fig:prectype}. The \fortinline|psb_prec_type| + psb\_Tprec\_type}} data structure reported in +figure~\ref{fig:prectype}. The \fortinline|psb_Tprec_type| data type may contain a simple preconditioning matrix with the -associated communication descriptor.%% which may be different than the +associated communication descriptor. +%% which may be different from the %% system communication descriptor in the case of parallel %% preconditioners like the Additive Schwarz one. Then the -%% \fortinline|psb_prec_type| may contain more than one preconditioning matrix +%% \fortinline|psb_Tprec_type| may contain more than one preconditioning matrix %% like in the case of Two-Level (in general Multi-Level) preconditioners. %% The user can choose the type of preconditioner to be used by means of %% the \fortinline|psb_precset| subroutine; once the type of preconditioning @@ -1407,8 +1413,8 @@ Given a heap object, the following methods are defined on it: \item[dump] Print on file; \item[free] Release memory. \end{description} -These objects are used in AMG4PSBLAS to implement the factorization -algorithms. +These objects are used to implement the factorization +and approximate inversion algorithms. %%% Local Variables: %%% mode: latex diff --git a/docs/src/error.tex b/docs/src/error.tex index e6bb0d2d..07d009d8 100644 --- a/docs/src/error.tex +++ b/docs/src/error.tex @@ -1,6 +1,6 @@ -\section{Error handling} +\section{Error handling\label{sec:errors}} The PSBLAS library error handling policy has been completely rewritten in version 2.0. The idea behind the design of this new error handling diff --git a/docs/src/intro.tex b/docs/src/intro.tex index ca0b47ad..cdbe09d5 100644 --- a/docs/src/intro.tex +++ b/docs/src/intro.tex @@ -293,7 +293,7 @@ are classified as: To finish our general description, we define a version string with the constant \[ \verb|psb_version_string_|\] -whose current value is \verb|3.8.0| +whose current value is \verb|3.9.0| \subsection{Application structure} \label{sec:appstruct} @@ -344,24 +344,25 @@ A simple application structure will walk through the index space allocation, matrix/vector creation and linear system solution as follows: \begin{enumerate} -\item Initialize parallel environment with \verb|psb_init| -\item Initialize index space with \verb|psb_cdall| +\item Initialize parallel environment with \verb|psb_init|; +\item Initialize index space with \verb|psb_cdall|; \item Allocate sparse matrix and dense vectors with \verb|psb_spall| - and \verb|psb_geall| + and \verb|psb_geall|; \item Loop over all local rows, generate matrix and vector entries, and insert them with \verb|psb_spins| and \verb|psb_geins| \item Assemble the various entities: \begin{enumerate} -\item \verb|psb_cdasb| -\item \verb|psb_spasb| -\item \verb|psb_geasb| +\item \verb|psb_cdasb|, +\item \verb|psb_spasb|, +\item \verb|psb_geasb|; \end{enumerate} \item Choose the preconditioner to be used with \verb|prec%init| and + \verb|prec%set|, and build it with \verb|prec%build|\footnote{The subroutine style {\tt - psb\_precinit} and {\tt psb\_precbl} are still supported for - backward compatibility}. -\item Call the iterative driver \verb|psb_krylov| with the method of - choice, e.g. \verb|bicgstab|. + psb\_precinit} and {\tt psb\_precbld} are still supported for + backward compatibility}; +\item Call one of the iterative drivers with the method of + choice, e.g. \verb|psb_krylov| with \verb|bicgstab|. \end{enumerate} This is the structure of the sample programs in the directory \verb|test/pargen/|. @@ -372,21 +373,23 @@ multiple time steps, the following structure may be more appropriate: \item Initialize parallel environment with \verb|psb_init| \item Initialize index space with \verb|psb_cdall| \item Loop over the topology of the discretization mesh and build the - descriptor with \verb|psb_cdins| -\item Assemble the descriptor with \verb|psb_cdasb| -\item Allocate the sparse matrices and dense vectors with - \verb|psb_spall| and \verb|psb_geall| + descriptor with \verb|psb_cdins|; +\item Assemble the descriptor with \verb|psb_cdasb|; +\item Allocate the sparse matrices and dense vectors with; + \verb|psb_spall| and \verb|psb_geall|; \item Loop over the time steps: \begin{enumerate} \item If after first time step, reinitialize the sparse matrix with \verb|psb_sprn|; also zero out the dense vectors; \item Loop over the mesh, generate the coefficients and insert/update - them with \verb|psb_spins| and \verb|psb_geins| -\item Assemble with \verb|psb_spasb| and \verb|psb_geasb| -\item Choose and build preconditioner with \verb|prec%init| and - \verb|prec%build| -\item Call the iterative method of choice, e.g. \verb|psb_bicgstab| + them with \verb|psb_spins| and \verb|psb_geins|; +\item Assemble with \verb|psb_spasb| and \verb|psb_geasb|; +\item \item Choose the preconditioner to be used with \verb|prec%init| and + \verb|prec%set|, and + build it with \verb|prec%build|; +\item Call one of the iterative drivers with the method of + choice, e.g. \verb|psb_krylov| with \verb|bicgstab|. \end{enumerate} \end{enumerate} The insertion routines will be called as many times as needed; diff --git a/docs/src/methods.tex b/docs/src/methods.tex index 4b2f8b66..55b7b4e0 100644 --- a/docs/src/methods.tex +++ b/docs/src/methods.tex @@ -2,8 +2,8 @@ \label{sec:methods} In this chapter we provide routines for preconditioners and iterative -methods. The interfaces for Krylov subspace methods are available in -the module \verb|psb_krylov_mod|. +methods. The interfaces for iterative methods are available in +the module \verb|psb_linsolve_mod|. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -146,6 +146,119 @@ An integer value; 0 means no error has been detected. \end{description} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Richardson driver routine +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\clearpage\subsection{psb\_richardson \label{richardson} --- + Richardson Iteration Driver Routine} + +This subroutine is a driver implementig a Richardson iteration +\[ x_{k+1} = M^-1 (b-Ax_k) +x_k,\] +with the preconditioner operator $M$ defined in the previous section. + +The stopping criterion can take the following values: +\begin{description} +\item[1] normwise backward error in the infinity +norm; the iteration is stopped when +\[ err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps \] +\item[2] Relative residual in the 2-norm; the iteration is stopped +when +\[ err = \frac{\|r_i\|}{\|b\|_2} < eps \] +\item[3] Relative residual reduction in the 2-norm; the iteration is stopped +when +\[ err = \frac{\|r_i\|}{\|r_0\|_2} < eps \] +\end{description} +The behaviour is controlled by the istop argument (see +later). In the above formulae, $x_i$ is the tentative solution and +$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. + + +\begin{lstlisting} +call psb_richardson(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) +\end{lstlisting} + +\begin{description} +\item[Type:] Synchronous. +\item[\bf On Entry] +\item[a] the local portion of global sparse matrix +$A$. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a structured data of type \spdata. +\item[prec] The data structure containing the preconditioner.\\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a structured data of type \precdata. +\item[b] The RHS vector. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a rank one array or an object of type \vdata. +\item[x] The initial guess. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf inout}.\\ +Specified as: a rank one array or an object of type \vdata. +\item[eps] The stopping tolerance. \\ +Scope: {\bf global} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a real number. +\item[desc\_a] contains data structures for communications.\\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf in}.\\ +Specified as: a structured data of type \descdata. +\item[itmax] The maximum number of iterations to perform.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf in}.\\ +Default: $itmax = 1000$.\\ +Specified as: an integer variable $itmax \ge 1$. +\item[itrace] If $>0$ print out an informational message about + convergence every $itrace$ iterations. If $=0$ print a message in + case of convergence failure.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf in}.\\ +Default: $itrace = -1$.\\ + +\item[istop] An integer specifying the stopping criterion.\\ +Scope: {\bf global} \\ +Type: {\bf optional}.\\ +Intent: {\bf in}.\\ +Values: 1: use the normwise backward error, 2: use the scaled 2-norm +of the residual, 3: use the residual reduction in the 2-norm. Default: 2. +\item[\bf On Return] +\item[x] The computed solution. \\ +Scope: {\bf local} \\ +Type: {\bf required}\\ +Intent: {\bf inout}.\\ +Specified as: a rank one array or an object of type \vdata. +\item[iter] The number of iterations performed.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf out}.\\ +Returned as: an integer variable. +\item[err] The convergence estimate on exit.\\ +Scope: {\bf global} \\ +Type: {\bf optional}\\ +Intent: {\bf out}.\\ +Returned as: a real number. +\item[info] Error code.\\ +Scope: {\bf local} \\ +Type: {\bf required} \\ +Intent: {\bf out}.\\ +An integer value; 0 means no error has been detected. +\end{description} + + %%% Local Variables: %%% mode: latex %%% TeX-master: "userguide" diff --git a/docs/src/precs.tex b/docs/src/precs.tex index 26492be9..30243827 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -76,14 +76,125 @@ $ptype$ string as follows\footnote{The string is case-insensitive}: \item[DIAG] Diagonal scaling; each entry of the input vector is multiplied by the reciprocal of the sum of the absolute values of the coefficients in the corresponding row of matrix $A$; -\item[BJAC] Precondition by a factorization of the - block-diagonal of matrix $A$, where block boundaries are determined - by the data allocation boundaries for each process; requires no - communication. Only the incomplete factorization $ILU(0)$ is - currently implemented. +\item[BJAC] Precondition by a factorization or an approximante inverse + of the block-diagonal of matrix $A$, where block boundaries are + determined by the data allocation boundaries for each process; + requires no communication. See also Table-\ref{tab:p_subsolve_1}. \end{description} + +\clearpage + +\subsection{Set\label{sec:precset} --- set preconditioner parameters} + +\begin{center} +\fortinline|call p%set(what,val,info)| +\end{center} + +\noindent +This method sets the parameters defining the subdomain solver when the +preconditioner type is \verb|BJAC|. More precisely, the parameter +identified by \fortinline|what| is assigned the value +contained in \fortinline|val|. + +{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip + +\begin{tabular}{p{1.2cm}p{12cm}} +\fortinline|what| & \fortinline|character(len=*)|. \\ + & The parameter to be set. It can be specified through its name; + the string is case-insensitive. See + Table~\ref{tab:p_subsolve_1}.\\ +\fortinline|val | & \fortinline|integer| \emph{or} \fortinline|character(len=*)| \emph{or} + \fortinline|real(psb_spk_)| \emph{or} \fortinline|real(psb_dpk_)|, + \fortinline|intent(in)|.\\ + & The value of the parameter to be set. The list of allowed + values and the corresponding data types is given in + Table~\ref{tab:p_subsolve_1}. + When the value is of type \fortinline|character(len=*)|, + it is also treated as case insensitive.\\ +\fortinline|info| & \fortinline|integer, intent(out)|.\\ + & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} + for details. +\end{tabular} + + +\noindent +A number of subdomain solvers can be chosen with this method; +a list of the parameters that can be set, along with their allowed and +default values, is given in Table-\ref{tab:p_subsolve_1}.\\ + + +\bsideways +\begin{center} +\small +% \begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|} +\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|} +\hline +\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} & +\textsc{comments} \\ \hline + +\fortinline|'SUB_SOLVE'| & \fortinline|character(len=*)| + & \fortinline|'ILU'| \par + \fortinline|'ILUT'| \par + \par \fortinline|'INVT'| \par \fortinline|'INVK'| \par \fortinline|'AINV'| + & + & The local solver to be used with the smoother or one-level + preconditioner ILU($p$), ILU($p,t$), + Approximate Inverses INVK($p,q$), + INVT($p_1,p2,t_1,t_2$) and + AINV($t$); note that approximate inverses + are specifically suited for GPUs since they + do not employ triangular system solve + kernels, + see~\cite{BERTACCINIFILIPPONE}.\\ \hline +\fortinline|'SUB_FILLIN'| & \fortinline|integer| + & Any integer \par number~$\ge 0$ + & 0 + & Fill-in level $p$ of the incomplete LU factorizations. \\ \hline +\fortinline|'SUB_ILUTHRS'| & \fortinline|real(kind_parameter)| + & Any real number~$\ge 0$ + & 0 + & Drop tolerance $t$ in the ILU($p,t$) factorization. \\ \hline +\fortinline|'ILU_ALG'| & \fortinline|character(len=*)| + & \fortinline|'MILU'| + & \fortinline|'NONE'| + & ILU algorithmic variant \\ \hline +\fortinline|'ILUT_SCALE'| & \fortinline|character(len=*)| + & \fortinline|'MAXVAL'| \par + \fortinline|'DIAG'| \par + \fortinline|'ARSWUM'| \par + \fortinline|'ARCSUM'| \par + \fortinline|'ACLSUM'| \par + \fortinline|'NONE'| + & \fortinline|'NONE'| + & ILU scaling strategy \\ \hline +\fortinline|'INV_FILLIN'| & \fortinline|integer| + & Any integer \par number~$\ge 0$ + & 0 + & Second fill-in level $q$ of the INVK($p,q$) + approximate inverse. \\ \hline +\fortinline|'INV_ILUTHRS'| & \fortinline|real(kind_parameter)| + & Any real number~$\ge 0$ + & 0 + & Second drop tolerance $s$ in the + INVT($t,s$) approximate inverse. \\ \hline +\fortinline|'AINV_ALG'| & \fortinline|character(len=*)| + & \fortinline|'LLK'| \par + \fortinline|'SYM-LLK'| \par + \fortinline|'STAB-LLK'| \par + \fortinline|'MLK,LMX'| + & \fortinline|'LLK'| + & AINV algorithmic strategy. \\ \hline +\end{tabular} +\end{center} +\caption{Parameters defining the solver of the BJAC + preconditioner.\label{tab:p_subsolve_1}} + \esideways + + + + \clearpage\subsection{build --- Builds a preconditioner} \begin{verbatim} diff --git a/docs/src/userguide.tex b/docs/src/userguide.tex index 7113ca93..0c18c5dd 100644 --- a/docs/src/userguide.tex +++ b/docs/src/userguide.tex @@ -17,6 +17,8 @@ \newtheorem{theorem}{Theorem} \newtheorem{corollary}{Corollary} \usepackage{listings} +\usepackage{rotating} +\usepackage{microtype} \usepackage{algorithm2e} \usepackage{minted} \usemintedstyle{friendly} @@ -91,12 +93,14 @@ \newcommand{\example}{\stepcounter{example}% \section*{\examplename~\theexample}} -\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}} +\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_Tprec\_type}}} \newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}} \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}} \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} \newcommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}} \newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} +\def\bsideways{\begin{sidewaystable}} +\def\esideways{\end{sidewaystable}} \begin{document} { diff --git a/docs/src/userhtml.tex b/docs/src/userhtml.tex index 770f9194..525fb895 100644 --- a/docs/src/userhtml.tex +++ b/docs/src/userhtml.tex @@ -17,8 +17,14 @@ \newtheorem{theorem}{Theorem} \newtheorem{corollary}{Corollary} \usepackage{listings} -\usepackage{algorithm2e} +\usepackage{rotating} \usepackage{microtype} +\usepackage{algorithm2e} + +\definecolor{bg}{rgb}{0.95,0.95,0.95} +\usepackage{breakurl} +\usepackage{mathpazo} +\usepackage[english]{babel} \ifpdf \newmintinline[fortinline]{fortran}{} \else% @@ -78,12 +84,14 @@ \newcommand{\example}{\stepcounter{example}% \section*{\examplename~\theexample}} -\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}} +\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_Tprec\_type}}} \newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}} \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}} \newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}} \newcommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}} \newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} +\def\bsideways{\begin{table}} +\def\esideways{\end{table}} \begin{document} \lstset{language=Fortran} diff --git a/krylov/Makefile b/krylov/Makefile deleted file mode 100644 index f71dbb1a..00000000 --- a/krylov/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -include ../Make.inc - - -HERE=. -LIBDIR=../lib -INCDIR=../include -MODDIR=../modules - -MODOBJS= psb_base_krylov_conv_mod.o \ - psb_s_krylov_conv_mod.o psb_c_krylov_conv_mod.o \ - psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o \ - psb_krylov_mod.o -F90OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ - psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o \ - psb_dbicg.o psb_dcgstabl.o psb_drgmres.o\ - psb_scgstab.o psb_scg.o psb_sfcg.o psb_sgcr.o psb_scgs.o \ - psb_sbicg.o psb_scgstabl.o psb_srgmres.o\ - psb_ccgstab.o psb_ccg.o psb_cfcg.o psb_cgcr.o psb_ccgs.o \ - psb_cbicg.o psb_ccgstabl.o psb_crgmres.o\ - psb_zcgstab.o psb_zcg.o psb_zfcg.o psb_zgcr.o psb_zcgs.o \ - psb_zbicg.o psb_zcgstabl.o psb_zrgmres.o -OBJS=$(F90OBJS) $(MODOBJS) - -LOCAL_MODS=$(MODOBJS:.o=$(.mod)) -LIBNAME=$(METHDLIBNAME) - -FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) - -objs: $(OBJS) - /bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR) - -lib: objs - $(AR) $(HERE)/$(LIBNAME) $(OBJS) - $(RANLIB) $(HERE)/$(LIBNAME) - /bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR) - - -psb_s_krylov_conv_mod.o psb_c_krylov_conv_mod.o psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o: psb_base_krylov_conv_mod.o -psb_krylov_conv_mod.o: psb_s_krylov_conv_mod.o psb_c_krylov_conv_mod.o psb_d_krylov_conv_mod.o psb_z_krylov_conv_mod.o -$(F90OBJS): $(MODOBJS) -$(OBJS): $(MODDIR)/$(PRECMODNAME)$(.mod) $(MODDIR)/$(BASEMODNAME)$(.mod) - -veryclean: clean - /bin/rm -f $(HERE)/$(LIBNAME) - -clean: - /bin/rm -f $(OBJS) *$(.mod) - diff --git a/linsolve/CMakeLists.txt b/linsolve/CMakeLists.txt new file mode 100644 index 00000000..039ba29d --- /dev/null +++ b/linsolve/CMakeLists.txt @@ -0,0 +1,52 @@ +set(PSB_linsolve_source_files + psb_base_linsolve_conv_mod.f90 + psb_z_linsolve_conv_mod.f90 + impl/psb_crichardson.f90 + impl/psb_zfcg.F90 + impl/psb_zkrylov.f90 + impl/psb_srichardson.f90 + impl/psb_ckrylov.f90 + impl/psb_crgmres.f90 + impl/psb_cgcr.f90 + impl/psb_sbicg.f90 + impl/psb_ccgstabl.f90 + impl/psb_drgmres.f90 + impl/psb_skrylov.f90 + impl/psb_scg.F90 + impl/psb_dcgstabl.f90 + impl/psb_ccg.F90 + impl/psb_zrgmres.f90 + impl/psb_zgcr.f90 + impl/psb_dcg.F90 + impl/psb_dgcr.f90 + impl/psb_scgstabl.f90 + impl/psb_dfcg.F90 + impl/psb_cbicg.f90 + impl/psb_zbicg.f90 + impl/psb_cfcg.F90 + impl/psb_zrichardson.f90 + impl/psb_dkrylov.f90 + impl/psb_ccgstab.f90 + impl/psb_zcg.F90 + impl/psb_dbicg.f90 + impl/psb_srgmres.f90 + impl/psb_zcgstabl.f90 + impl/psb_zcgs.f90 + impl/psb_ccgs.f90 + impl/psb_sgcr.f90 + impl/psb_dcgstab.f90 + impl/psb_scgstab.f90 + impl/psb_dcgs.f90 + impl/psb_drichardson.f90 + impl/psb_scgs.f90 + impl/psb_sfcg.F90 + impl/psb_zcgstab.f90 + psb_linsolve_mod.f90 + psb_linsolve_conv_mod.f90 + psb_c_linsolve_conv_mod.f90 + psb_d_linsolve_conv_mod.f90 + psb_s_linsolve_conv_mod.f90 + ) +foreach(file IN LISTS PSB_linsolve_source_files) + list(APPEND linsolve_source_files ${CMAKE_CURRENT_LIST_DIR}/${file}) +endforeach() diff --git a/linsolve/Makefile b/linsolve/Makefile new file mode 100644 index 00000000..c8fa3ac7 --- /dev/null +++ b/linsolve/Makefile @@ -0,0 +1,48 @@ +include ../Make.inc + + +HERE=. +LIBDIR=../lib +INCDIR=../include +MODDIR=../modules + +MODOBJS= psb_base_linsolve_conv_mod.o \ + psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o \ + psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o \ + psb_linsolve_mod.o + +OBJS=$(MODOBJS) + +LOCAL_MODS=$(MODOBJS:.o=$(.mod)) +LIBNAME=$(METHDLIBNAME) + +FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) + +objs: $(OBJS) impld + /bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR) + +lib: objs + $(MAKE) -C impl lib + $(AR) $(HERE)/$(LIBNAME) $(OBJS) + $(RANLIB) $(HERE)/$(LIBNAME) + /bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR) + + +$(OBJS): $(MODDIR)/$(BASEMODNAME)$(.mod) + +impld: $(OBJS) + $(MAKE) -C impl objs + +psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o: psb_base_linsolve_conv_mod.o +psb_linsolve_conv_mod.o: psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o +$(F90OBJS): $(MODOBJS) +$(OBJS): $(MODDIR)/$(PRECMODNAME)$(.mod) $(MODDIR)/$(BASEMODNAME)$(.mod) + +veryclean: clean + /bin/rm -f $(HERE)/$(LIBNAME) + +iclean: + cd impl && $(MAKE) clean +clean: iclean + /bin/rm -f $(OBJS) *$(.mod) + diff --git a/krylov/CMakeLists.txt b/linsolve/impl/CMakeLists.txt similarity index 100% rename from krylov/CMakeLists.txt rename to linsolve/impl/CMakeLists.txt diff --git a/linsolve/impl/Makefile b/linsolve/impl/Makefile new file mode 100644 index 00000000..62444af7 --- /dev/null +++ b/linsolve/impl/Makefile @@ -0,0 +1,30 @@ +include ../../Make.inc + +LIBDIR=../../lib +INCDIR=../../include +MODDIR=../../modules +HERE=.. +OBJS=psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o \ + psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o \ + psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o \ + psb_dbicg.o psb_dcgstabl.o psb_drgmres.o\ + psb_scgstab.o psb_scg.o psb_sfcg.o psb_sgcr.o psb_scgs.o \ + psb_sbicg.o psb_scgstabl.o psb_srgmres.o\ + psb_ccgstab.o psb_ccg.o psb_cfcg.o psb_cgcr.o psb_ccgs.o \ + psb_cbicg.o psb_ccgstabl.o psb_crgmres.o\ + psb_zcgstab.o psb_zcg.o psb_zfcg.o psb_zgcr.o psb_zcgs.o \ + psb_zbicg.o psb_zcgstabl.o psb_zrgmres.o + +LIBNAME=$(METHDLIBNAME) +COBJS= +FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) + +objs: $(OBJS) +lib: objs + $(AR) $(HERE)/$(LIBNAME) $(OBJS) + $(RANLIB) $(HERE)/$(LIBNAME) + +veryclean: clean + +clean: + /bin/rm -f $(OBJS) $(LOCAL_MODS) diff --git a/krylov/psb_cbicg.f90 b/linsolve/impl/psb_cbicg.f90 similarity index 99% rename from krylov/psb_cbicg.f90 rename to linsolve/impl/psb_cbicg.f90 index c3b4f472..c357054b 100644 --- a/krylov/psb_cbicg.f90 +++ b/linsolve/impl/psb_cbicg.f90 @@ -98,8 +98,8 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/krylov/psb_ccg.F90 b/linsolve/impl/psb_ccg.F90 similarity index 99% rename from krylov/psb_ccg.F90 rename to linsolve/impl/psb_ccg.F90 index fbc550e7..0ba1b5fc 100644 --- a/krylov/psb_ccg.F90 +++ b/linsolve/impl/psb_ccg.F90 @@ -99,8 +99,8 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_ccgs.f90 b/linsolve/impl/psb_ccgs.f90 similarity index 99% rename from krylov/psb_ccgs.f90 rename to linsolve/impl/psb_ccgs.f90 index c25a449a..f7808c0d 100644 --- a/krylov/psb_ccgs.f90 +++ b/linsolve/impl/psb_ccgs.f90 @@ -96,8 +96,8 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_ccgstab.f90 b/linsolve/impl/psb_ccgstab.f90 similarity index 99% rename from krylov/psb_ccgstab.f90 rename to linsolve/impl/psb_ccgstab.f90 index 22d73b85..4ccbaf7a 100644 --- a/krylov/psb_ccgstab.f90 +++ b/linsolve/impl/psb_ccgstab.f90 @@ -96,8 +96,8 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a class(psb_cprec_type), Intent(inout) :: prec diff --git a/krylov/psb_ccgstabl.f90 b/linsolve/impl/psb_ccgstabl.f90 similarity index 99% rename from krylov/psb_ccgstabl.f90 rename to linsolve/impl/psb_ccgstabl.f90 index 86ca5d93..f1463b83 100644 --- a/krylov/psb_ccgstabl.f90 +++ b/linsolve/impl/psb_ccgstabl.f90 @@ -107,8 +107,8 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a class(psb_cprec_type), Intent(inout) :: prec diff --git a/krylov/psb_cfcg.F90 b/linsolve/impl/psb_cfcg.F90 similarity index 99% rename from krylov/psb_cfcg.F90 rename to linsolve/impl/psb_cfcg.F90 index 590ed29d..f28db7de 100644 --- a/krylov/psb_cfcg.F90 +++ b/linsolve/impl/psb_cfcg.F90 @@ -107,8 +107,8 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_cgcr.f90 b/linsolve/impl/psb_cgcr.f90 similarity index 96% rename from krylov/psb_cgcr.f90 rename to linsolve/impl/psb_cgcr.f90 index 91c848a2..5120b102 100644 --- a/krylov/psb_cgcr.f90 +++ b/linsolve/impl/psb_cgcr.f90 @@ -109,8 +109,8 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none diff --git a/krylov/psb_ckrylov.f90 b/linsolve/impl/psb_ckrylov.f90 similarity index 98% rename from krylov/psb_ckrylov.f90 rename to linsolve/impl/psb_ckrylov.f90 index 01228234..39f310fc 100644 --- a/krylov/psb_ckrylov.f90 +++ b/linsolve/impl/psb_ckrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB @@ -83,7 +84,7 @@ Subroutine psb_ckrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_cprec_type - use psb_krylov_mod, psb_protect_name => psb_ckrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_ckrylov_vect character(len=*) :: method Type(psb_cspmat_type), Intent(in) :: a diff --git a/krylov/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 similarity index 97% rename from krylov/psb_crgmres.f90 rename to linsolve/impl/psb_crgmres.f90 index 80aa34c3..e0c0b38d 100644 --- a/krylov/psb_crgmres.f90 +++ b/linsolve/impl/psb_crgmres.f90 @@ -110,8 +110,8 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_c_krylov_conv_mod - use psb_krylov_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_cspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a @@ -344,19 +344,16 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone,w,cone,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -472,10 +471,16 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(cone,w,cone,x,desc_a,info) end if - + + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if + exit restart + end if + end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_crichardson.f90 b/linsolve/impl/psb_crichardson.f90 new file mode 100644 index 00000000..3eb4c263 --- /dev/null +++ b/linsolve/impl/psb_crichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_crichardson +! +! Front-end for the Richardson iterations, complexversion +! +! Arguments: +! +! a - type(psb_cspmat_type) Input: sparse matrix containing A. +! prec - class(psb_cprec_type) Input: preconditioner +! b - complex,dimension(:) Input: vector containing the +! right hand side B +! x - complex,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_c_linsolve_conv_mod + use psb_linsolve_mod, psb_protect_name => psb_crichardson_vect + + Type(psb_cspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type), Intent(inout) :: b + type(psb_c_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + complex(psb_spk_), allocatable, target :: aux(:) + type(psb_c_vect_type), allocatable, target :: wwrk(:) + type(psb_c_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_crichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(cone,b,czero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(cone,z,cone,x,desc_a,info) + call psb_geaxpby(cone,b,czero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_crichardson_vect + diff --git a/krylov/psb_dbicg.f90 b/linsolve/impl/psb_dbicg.f90 similarity index 99% rename from krylov/psb_dbicg.f90 rename to linsolve/impl/psb_dbicg.f90 index 5ac94d3c..ebcc8eb9 100644 --- a/krylov/psb_dbicg.f90 +++ b/linsolve/impl/psb_dbicg.f90 @@ -98,8 +98,8 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/krylov/psb_dcg.F90 b/linsolve/impl/psb_dcg.F90 similarity index 99% rename from krylov/psb_dcg.F90 rename to linsolve/impl/psb_dcg.F90 index 669573be..14c978bb 100644 --- a/krylov/psb_dcg.F90 +++ b/linsolve/impl/psb_dcg.F90 @@ -99,8 +99,8 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_dcgs.f90 b/linsolve/impl/psb_dcgs.f90 similarity index 99% rename from krylov/psb_dcgs.f90 rename to linsolve/impl/psb_dcgs.f90 index 78a3905c..5c2401d1 100644 --- a/krylov/psb_dcgs.f90 +++ b/linsolve/impl/psb_dcgs.f90 @@ -96,8 +96,8 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_dcgstab.f90 b/linsolve/impl/psb_dcgstab.f90 similarity index 99% rename from krylov/psb_dcgstab.f90 rename to linsolve/impl/psb_dcgstab.f90 index bec3329a..749015d7 100644 --- a/krylov/psb_dcgstab.f90 +++ b/linsolve/impl/psb_dcgstab.f90 @@ -96,8 +96,8 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a class(psb_dprec_type), Intent(inout) :: prec diff --git a/krylov/psb_dcgstabl.f90 b/linsolve/impl/psb_dcgstabl.f90 similarity index 99% rename from krylov/psb_dcgstabl.f90 rename to linsolve/impl/psb_dcgstabl.f90 index 01641226..a2ae6164 100644 --- a/krylov/psb_dcgstabl.f90 +++ b/linsolve/impl/psb_dcgstabl.f90 @@ -107,8 +107,8 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a class(psb_dprec_type), Intent(inout) :: prec diff --git a/krylov/psb_dfcg.F90 b/linsolve/impl/psb_dfcg.F90 similarity index 99% rename from krylov/psb_dfcg.F90 rename to linsolve/impl/psb_dfcg.F90 index d3b2c9d2..cb741795 100644 --- a/krylov/psb_dfcg.F90 +++ b/linsolve/impl/psb_dfcg.F90 @@ -107,8 +107,8 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_dgcr.f90 b/linsolve/impl/psb_dgcr.f90 similarity index 96% rename from krylov/psb_dgcr.f90 rename to linsolve/impl/psb_dgcr.f90 index b7480f84..cf2e2b0e 100644 --- a/krylov/psb_dgcr.f90 +++ b/linsolve/impl/psb_dgcr.f90 @@ -109,8 +109,8 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none diff --git a/krylov/psb_dkrylov.f90 b/linsolve/impl/psb_dkrylov.f90 similarity index 98% rename from krylov/psb_dkrylov.f90 rename to linsolve/impl/psb_dkrylov.f90 index d5d40eaf..d858c228 100644 --- a/krylov/psb_dkrylov.f90 +++ b/linsolve/impl/psb_dkrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB @@ -83,7 +84,7 @@ Subroutine psb_dkrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_dprec_type - use psb_krylov_mod, psb_protect_name => psb_dkrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_dkrylov_vect character(len=*) :: method Type(psb_dspmat_type), Intent(in) :: a diff --git a/krylov/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 similarity index 97% rename from krylov/psb_drgmres.f90 rename to linsolve/impl/psb_drgmres.f90 index 1503748a..e0d78382 100644 --- a/krylov/psb_drgmres.f90 +++ b/linsolve/impl/psb_drgmres.f90 @@ -110,8 +110,8 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_d_krylov_conv_mod - use psb_krylov_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_dspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a @@ -344,19 +344,16 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done,w,done,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -472,10 +471,16 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(done,w,done,x,desc_a,info) end if - + + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if + exit restart + end if + end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_drichardson.f90 b/linsolve/impl/psb_drichardson.f90 new file mode 100644 index 00000000..b0a53a4b --- /dev/null +++ b/linsolve/impl/psb_drichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_drichardson +! +! Front-end for the Richardson iterations, realversion +! +! Arguments: +! +! a - type(psb_dspmat_type) Input: sparse matrix containing A. +! prec - class(psb_dprec_type) Input: preconditioner +! b - real,dimension(:) Input: vector containing the +! right hand side B +! x - real,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_d_linsolve_conv_mod + use psb_linsolve_mod, psb_protect_name => psb_drichardson_vect + + Type(psb_dspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_dprec_type), intent(inout) :: prec + type(psb_d_vect_type), Intent(inout) :: b + type(psb_d_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + real(psb_dpk_), allocatable, target :: aux(:) + type(psb_d_vect_type), allocatable, target :: wwrk(:) + type(psb_d_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_drichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(done,b,dzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(done,z,done,x,desc_a,info) + call psb_geaxpby(done,b,dzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_drichardson_vect + diff --git a/krylov/psb_sbicg.f90 b/linsolve/impl/psb_sbicg.f90 similarity index 99% rename from krylov/psb_sbicg.f90 rename to linsolve/impl/psb_sbicg.f90 index 609d3a5f..1b5f1fb8 100644 --- a/krylov/psb_sbicg.f90 +++ b/linsolve/impl/psb_sbicg.f90 @@ -98,8 +98,8 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/krylov/psb_scg.F90 b/linsolve/impl/psb_scg.F90 similarity index 99% rename from krylov/psb_scg.F90 rename to linsolve/impl/psb_scg.F90 index c16dbf6a..d3485db5 100644 --- a/krylov/psb_scg.F90 +++ b/linsolve/impl/psb_scg.F90 @@ -99,8 +99,8 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_scgs.f90 b/linsolve/impl/psb_scgs.f90 similarity index 99% rename from krylov/psb_scgs.f90 rename to linsolve/impl/psb_scgs.f90 index 48fe5372..4034283e 100644 --- a/krylov/psb_scgs.f90 +++ b/linsolve/impl/psb_scgs.f90 @@ -96,8 +96,8 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_scgstab.f90 b/linsolve/impl/psb_scgstab.f90 similarity index 99% rename from krylov/psb_scgstab.f90 rename to linsolve/impl/psb_scgstab.f90 index 2a811b8d..a0b57fa8 100644 --- a/krylov/psb_scgstab.f90 +++ b/linsolve/impl/psb_scgstab.f90 @@ -96,8 +96,8 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a class(psb_sprec_type), Intent(inout) :: prec diff --git a/krylov/psb_scgstabl.f90 b/linsolve/impl/psb_scgstabl.f90 similarity index 99% rename from krylov/psb_scgstabl.f90 rename to linsolve/impl/psb_scgstabl.f90 index c2fc9833..e55d2746 100644 --- a/krylov/psb_scgstabl.f90 +++ b/linsolve/impl/psb_scgstabl.f90 @@ -107,8 +107,8 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a class(psb_sprec_type), Intent(inout) :: prec diff --git a/krylov/psb_sfcg.F90 b/linsolve/impl/psb_sfcg.F90 similarity index 99% rename from krylov/psb_sfcg.F90 rename to linsolve/impl/psb_sfcg.F90 index 3a518bb2..449942cd 100644 --- a/krylov/psb_sfcg.F90 +++ b/linsolve/impl/psb_sfcg.F90 @@ -107,8 +107,8 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_sgcr.f90 b/linsolve/impl/psb_sgcr.f90 similarity index 96% rename from krylov/psb_sgcr.f90 rename to linsolve/impl/psb_sgcr.f90 index dd0aca16..b2d09d3e 100644 --- a/krylov/psb_sgcr.f90 +++ b/linsolve/impl/psb_sgcr.f90 @@ -109,8 +109,8 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none diff --git a/krylov/psb_skrylov.f90 b/linsolve/impl/psb_skrylov.f90 similarity index 98% rename from krylov/psb_skrylov.f90 rename to linsolve/impl/psb_skrylov.f90 index 39aecc36..1a612a12 100644 --- a/krylov/psb_skrylov.f90 +++ b/linsolve/impl/psb_skrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB @@ -83,7 +84,7 @@ Subroutine psb_skrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_sprec_type - use psb_krylov_mod, psb_protect_name => psb_skrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_skrylov_vect character(len=*) :: method Type(psb_sspmat_type), Intent(in) :: a diff --git a/krylov/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 similarity index 97% rename from krylov/psb_srgmres.f90 rename to linsolve/impl/psb_srgmres.f90 index 02836dd7..32129e35 100644 --- a/krylov/psb_srgmres.f90 +++ b/linsolve/impl/psb_srgmres.f90 @@ -110,8 +110,8 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_s_krylov_conv_mod - use psb_krylov_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_sspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a @@ -344,19 +344,16 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone,w,sone,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -472,10 +471,16 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(sone,w,sone,x,desc_a,info) end if - + + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if + exit restart + end if + end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_srichardson.f90 b/linsolve/impl/psb_srichardson.f90 new file mode 100644 index 00000000..660778fc --- /dev/null +++ b/linsolve/impl/psb_srichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_srichardson +! +! Front-end for the Richardson iterations, realversion +! +! Arguments: +! +! a - type(psb_sspmat_type) Input: sparse matrix containing A. +! prec - class(psb_sprec_type) Input: preconditioner +! b - real,dimension(:) Input: vector containing the +! right hand side B +! x - real,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_s_linsolve_conv_mod + use psb_linsolve_mod, psb_protect_name => psb_srichardson_vect + + Type(psb_sspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_sprec_type), intent(inout) :: prec + type(psb_s_vect_type), Intent(inout) :: b + type(psb_s_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + real(psb_spk_), allocatable, target :: aux(:) + type(psb_s_vect_type), allocatable, target :: wwrk(:) + type(psb_s_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_srichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(sone,b,szero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(sone,z,sone,x,desc_a,info) + call psb_geaxpby(sone,b,szero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_srichardson_vect + diff --git a/krylov/psb_zbicg.f90 b/linsolve/impl/psb_zbicg.f90 similarity index 99% rename from krylov/psb_zbicg.f90 rename to linsolve/impl/psb_zbicg.f90 index c22e499a..6a3e0215 100644 --- a/krylov/psb_zbicg.f90 +++ b/linsolve/impl/psb_zbicg.f90 @@ -98,8 +98,8 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a diff --git a/krylov/psb_zcg.F90 b/linsolve/impl/psb_zcg.F90 similarity index 99% rename from krylov/psb_zcg.F90 rename to linsolve/impl/psb_zcg.F90 index a4a521d8..6ca5909c 100644 --- a/krylov/psb_zcg.F90 +++ b/linsolve/impl/psb_zcg.F90 @@ -99,8 +99,8 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_zcgs.f90 b/linsolve/impl/psb_zcgs.f90 similarity index 99% rename from krylov/psb_zcgs.f90 rename to linsolve/impl/psb_zcgs.f90 index 3ccce860..c5140545 100644 --- a/krylov/psb_zcgs.f90 +++ b/linsolve/impl/psb_zcgs.f90 @@ -96,8 +96,8 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_zcgstab.f90 b/linsolve/impl/psb_zcgstab.f90 similarity index 99% rename from krylov/psb_zcgstab.f90 rename to linsolve/impl/psb_zcgstab.f90 index 95ff129a..e04cd7c4 100644 --- a/krylov/psb_zcgstab.f90 +++ b/linsolve/impl/psb_zcgstab.f90 @@ -96,8 +96,8 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a class(psb_zprec_type), Intent(inout) :: prec diff --git a/krylov/psb_zcgstabl.f90 b/linsolve/impl/psb_zcgstabl.f90 similarity index 99% rename from krylov/psb_zcgstabl.f90 rename to linsolve/impl/psb_zcgstabl.f90 index 2cf3a0e5..93abd056 100644 --- a/krylov/psb_zcgstabl.f90 +++ b/linsolve/impl/psb_zcgstabl.f90 @@ -107,8 +107,8 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a class(psb_zprec_type), Intent(inout) :: prec diff --git a/krylov/psb_zfcg.F90 b/linsolve/impl/psb_zfcg.F90 similarity index 99% rename from krylov/psb_zfcg.F90 rename to linsolve/impl/psb_zfcg.F90 index 3c26ad3d..1ab036fe 100644 --- a/krylov/psb_zfcg.F90 +++ b/linsolve/impl/psb_zfcg.F90 @@ -107,8 +107,8 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,istop,cond) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a diff --git a/krylov/psb_zgcr.f90 b/linsolve/impl/psb_zgcr.f90 similarity index 96% rename from krylov/psb_zgcr.f90 rename to linsolve/impl/psb_zgcr.f90 index 2399160c..e48fc4c1 100644 --- a/krylov/psb_zgcr.f90 +++ b/linsolve/impl/psb_zgcr.f90 @@ -109,8 +109,8 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace, irst, istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none diff --git a/krylov/psb_zkrylov.f90 b/linsolve/impl/psb_zkrylov.f90 similarity index 98% rename from krylov/psb_zkrylov.f90 rename to linsolve/impl/psb_zkrylov.f90 index a70cc98a..900e50b6 100644 --- a/krylov/psb_zkrylov.f90 +++ b/linsolve/impl/psb_zkrylov.f90 @@ -42,6 +42,7 @@ ! ! methd - character The specific method; can take the values: ! CG +! FCG ! CGS ! BICG ! BICGSTAB @@ -83,7 +84,7 @@ Subroutine psb_zkrylov_vect(method,a,prec,b,x,eps,desc_a,info,& use psb_base_mod use psb_prec_mod,only : psb_zprec_type - use psb_krylov_mod, psb_protect_name => psb_zkrylov_vect + use psb_linsolve_mod, psb_protect_name => psb_zkrylov_vect character(len=*) :: method Type(psb_zspmat_type), Intent(in) :: a diff --git a/krylov/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 similarity index 97% rename from krylov/psb_zrgmres.f90 rename to linsolve/impl/psb_zrgmres.f90 index 3aaf0032..c6bcc018 100644 --- a/krylov/psb_zrgmres.f90 +++ b/linsolve/impl/psb_zrgmres.f90 @@ -110,8 +110,8 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& & itmax,iter,err,itrace,irst,istop) use psb_base_mod use psb_prec_mod - use psb_z_krylov_conv_mod - use psb_krylov_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod implicit none type(psb_zspmat_type), intent(in) :: a Type(psb_desc_type), Intent(in) :: desc_a @@ -344,19 +344,16 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - if (errnum <= eps*errden) exit restart + if ((errnum <= eps*errden).or.(itx >= litmax)) exit restart if (itrace_ > 0) & & call log_conv(methdname,me,itx,itrace_,errnum,errden,deps) call v(1)%scal(scal) !v(1) = v(1) * scal - if (itx >= litmax) exit restart - ! ! inner iterations ! - inner: Do i=1,nl itx = itx + 1 @@ -446,6 +443,8 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone,w,zone,x,desc_a,info) end if + if (itrace_ > 0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) exit restart end if @@ -472,10 +471,16 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(w1,w,desc_a,info) call psb_geaxpby(zone,w,zone,x,desc_a,info) end if - + + if (itx >= litmax) then + if (itrace_ > 0) then + if (mod(itx,itrace_)/=0) & + & call log_conv(methdname,me,itx,ione,errnum,errden,deps) + end if + exit restart + end if + end do restart - if (itrace_ > 0) & - & call log_conv(methdname,me,itx,ione,errnum,errden,deps) call log_end(methdname,me,itx,itrace_,errnum,errden,deps,err=derr,iter=iter) if (present(err)) err = derr diff --git a/linsolve/impl/psb_zrichardson.f90 b/linsolve/impl/psb_zrichardson.f90 new file mode 100644 index 00000000..4c2bc567 --- /dev/null +++ b/linsolve/impl/psb_zrichardson.f90 @@ -0,0 +1,216 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! +! File: psb_richardson_mod.f90 +! Interfaces for Richardson iterative methods. +! +! +! Subroutine: psb_zrichardson +! +! Front-end for the Richardson iterations, complexversion +! +! Arguments: +! +! a - type(psb_zspmat_type) Input: sparse matrix containing A. +! prec - class(psb_zprec_type) Input: preconditioner +! b - complex,dimension(:) Input: vector containing the +! right hand side B +! x - complex,dimension(:) Input/Output: vector containing the +! initial guess and final solution X. +! eps - real Input: Stopping tolerance; the iteration is +! stopped when the error +! estimate |err| <= eps +! +! desc_a - type(psb_desc_type). Input: The communication descriptor. +! info - integer. Output: Return code +! +! itmax - integer(optional) Input: maximum number of iterations to be +! performed. +! iter - integer(optional) Output: how many iterations have been +! performed. +! err - real (optional) Output: error estimate on exit +! itrace - integer(optional) Input: print an informational message +! with the error estimate every itrace +! iterations +! istop - integer(optional) Input: stopping criterion, or how +! to estimate the error. +! 1: err = |r|/(|a||x|+|b|) +! 2: err = |r|/|b| +! where r is the (preconditioned, recursive +! estimate of) residual +! +Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod + use psb_prec_mod + use psb_z_linsolve_conv_mod + use psb_linsolve_mod, psb_protect_name => psb_zrichardson_vect + + Type(psb_zspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_zprec_type), intent(inout) :: prec + type(psb_z_vect_type), Intent(inout) :: b + type(psb_z_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + + logical :: do_alloc_wrk + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: me,np,err_act + complex(psb_dpk_), allocatable, target :: aux(:) + type(psb_z_vect_type), allocatable, target :: wwrk(:) + type(psb_z_vect_type), pointer :: q, p, r, z, w + real(psb_dpk_) :: derr + integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz + integer(psb_lpk_) :: mglob + integer(psb_ipk_) :: debug_level, debug_unit + type(psb_itconv_type) :: stopdat + character(len=20) :: name + character(len=*), parameter :: methdname='RICHARDSON' + + info = psb_success_ + name = 'psb_zrichardson' + call psb_erractionsave(err_act) + + ctxt=desc_a%get_context() + + call psb_info(ctxt, me, np) + + if (present(itrace)) then + itrace_ = itrace + else + itrace_ = -1 + end if + + if (present(istop)) then + istop_ = istop + else + istop_ = 2 + endif + if (present(itmax)) then + itmax_ = itmax + else + itmax_ = 1000 + endif + + do_alloc_wrk = .not.prec%is_allocated_wrk() + if (do_alloc_wrk) call prec%allocate_wrk(info,vmold=x%v,desc=desc_a) + + if (.not.allocated(b%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + if (.not.allocated(x%v)) then + info = psb_err_invalid_vect_state_ + call psb_errpush(info,name) + goto 9999 + endif + + mglob = desc_a%get_global_rows() + n_row = desc_a%get_local_rows() + n_col = desc_a%get_local_cols() + + call psb_chkvect(mglob,lone,x%get_nrows(),lone,lone,desc_a,info) + if (info == psb_success_)& + & call psb_chkvect(mglob,lone,b%get_nrows(),lone,lone,desc_a,info) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + call psb_errpush(info,name,a_err='psb_chkvect on X/B') + goto 9999 + end if + + naux=4*n_col + allocate(aux(naux), stat=info) + if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) + if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + p => wwrk(1) + q => wwrk(2) + r => wwrk(3) + z => wwrk(4) + w => wwrk(5) + + call psb_geaxpby(zone,b,zzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info /= psb_success_) then + info=psb_err_from_subroutine_non_ + call psb_errpush(info,name) + goto 9999 + end if + + + call psb_init_conv(methdname,istop_,itrace_,itmax_,a,x,b,eps,desc_a,stopdat,info) + if (info /= psb_success_) Then + call psb_errpush(psb_err_from_subroutine_non_,name) + goto 9999 + End If + + loop: do itx=1,itmax_ + call prec%apply(r,z,desc_a,info,work=aux) + call psb_geaxpby(zone,z,zone,x,desc_a,info) + call psb_geaxpby(zone,b,zzero,r,desc_a,info) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop + end do loop + call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) + if (present(err)) err = derr + + if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) + if (info == psb_success_) deallocate(aux,stat=info) + if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) + + if(info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info,name,a_err=trim(methdname)) + goto 9999 + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + +end subroutine psb_zrichardson_vect + diff --git a/krylov/psb_base_krylov_conv_mod.f90 b/linsolve/psb_base_linsolve_conv_mod.f90 similarity index 97% rename from krylov/psb_base_krylov_conv_mod.f90 rename to linsolve/psb_base_linsolve_conv_mod.f90 index be7723f5..8d36fb53 100644 --- a/krylov/psb_base_krylov_conv_mod.f90 +++ b/linsolve/psb_base_linsolve_conv_mod.f90 @@ -30,10 +30,10 @@ ! ! ! -! File: psb_krylov_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_base_linsolve_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -Module psb_base_krylov_conv_mod +Module psb_base_linsolve_conv_mod use psb_const_mod @@ -166,4 +166,4 @@ contains end subroutine psb_d_end_conv -end module psb_base_krylov_conv_mod +end module psb_base_linsolve_conv_mod diff --git a/krylov/psb_c_krylov_conv_mod.f90 b/linsolve/psb_c_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_c_krylov_conv_mod.f90 rename to linsolve/psb_c_linsolve_conv_mod.f90 index 85a2bca7..73db081e 100644 --- a/krylov/psb_c_krylov_conv_mod.f90 +++ b/linsolve/psb_c_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -Module psb_c_krylov_conv_mod +Module psb_c_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_c_init_conv, psb_c_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_c_check_conv_vect -end module psb_c_krylov_conv_mod +end module psb_c_linsolve_conv_mod diff --git a/krylov/psb_d_krylov_conv_mod.f90 b/linsolve/psb_d_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_d_krylov_conv_mod.f90 rename to linsolve/psb_d_linsolve_conv_mod.f90 index 4f9b9f2e..ba59923f 100644 --- a/krylov/psb_d_krylov_conv_mod.f90 +++ b/linsolve/psb_d_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -Module psb_d_krylov_conv_mod +Module psb_d_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_d_init_conv, psb_d_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_d_check_conv_vect -end module psb_d_krylov_conv_mod +end module psb_d_linsolve_conv_mod diff --git a/krylov/psb_krylov_conv_mod.f90 b/linsolve/psb_linsolve_conv_mod.f90 similarity index 86% rename from krylov/psb_krylov_conv_mod.f90 rename to linsolve/psb_linsolve_conv_mod.f90 index 2ec83178..23d6c84c 100644 --- a/krylov/psb_krylov_conv_mod.f90 +++ b/linsolve/psb_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -module psb_krylov_conv_mod - use psb_s_krylov_conv_mod - use psb_d_krylov_conv_mod - use psb_c_krylov_conv_mod - use psb_z_krylov_conv_mod -end module psb_krylov_conv_mod +module psb_linsolve_conv_mod + use psb_s_linsolve_conv_mod + use psb_d_linsolve_conv_mod + use psb_c_linsolve_conv_mod + use psb_z_linsolve_conv_mod +end module psb_linsolve_conv_mod diff --git a/krylov/psb_krylov_mod.f90 b/linsolve/psb_linsolve_mod.f90 similarity index 60% rename from krylov/psb_krylov_mod.f90 rename to linsolve/psb_linsolve_mod.f90 index d8d4d904..c54326f3 100644 --- a/krylov/psb_krylov_mod.f90 +++ b/linsolve/psb_linsolve_mod.f90 @@ -30,10 +30,10 @@ ! ! ! -! File: psb_krylov_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_mod.f90 +! Interfaces for linear solvers. ! -Module psb_krylov_mod +Module psb_linsolve_mod use psb_const_mod public @@ -127,4 +127,88 @@ Module psb_krylov_mod end interface -end module psb_krylov_mod + interface psb_richardson + + Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_sspmat_type, & + & psb_spk_, psb_s_vect_type + use psb_prec_mod, only : psb_sprec_type + + Type(psb_sspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_sprec_type), intent(inout) :: prec + type(psb_s_vect_type), Intent(inout) :: b + type(psb_s_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + end Subroutine psb_srichardson_vect + + Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_cspmat_type, & + & psb_spk_, psb_c_vect_type + use psb_prec_mod, only : psb_cprec_type + + Type(psb_cspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type), Intent(inout) :: b + type(psb_c_vect_type), Intent(inout) :: x + Real(psb_spk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_spk_), Optional, Intent(out) :: err + + end Subroutine psb_crichardson_vect + + Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_dspmat_type, & + & psb_dpk_, psb_d_vect_type + use psb_prec_mod, only : psb_dprec_type + + Type(psb_dspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_dprec_type), intent(inout) :: prec + type(psb_d_vect_type), Intent(inout) :: b + type(psb_d_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + end Subroutine psb_drichardson_vect + + Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,istop) + + use psb_base_mod, only : psb_ipk_, psb_desc_type, psb_zspmat_type, & + & psb_dpk_, psb_z_vect_type + use psb_prec_mod, only : psb_zprec_type + + Type(psb_zspmat_type), Intent(in) :: a + Type(psb_desc_type), Intent(in) :: desc_a + class(psb_zprec_type), intent(inout) :: prec + type(psb_z_vect_type), Intent(inout) :: b + type(psb_z_vect_type), Intent(inout) :: x + Real(psb_dpk_), Intent(in) :: eps + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), Optional, Intent(in) :: itmax, itrace, istop + integer(psb_ipk_), Optional, Intent(out) :: iter + Real(psb_dpk_), Optional, Intent(out) :: err + + end Subroutine psb_zrichardson_vect + + end interface + +end module psb_linsolve_mod diff --git a/krylov/psb_s_krylov_conv_mod.f90 b/linsolve/psb_s_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_s_krylov_conv_mod.f90 rename to linsolve/psb_s_linsolve_conv_mod.f90 index 29713c37..5de6ebb6 100644 --- a/krylov/psb_s_krylov_conv_mod.f90 +++ b/linsolve/psb_s_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -Module psb_s_krylov_conv_mod +Module psb_s_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_s_init_conv, psb_s_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_s_check_conv_vect -end module psb_s_krylov_conv_mod +end module psb_s_linsolve_conv_mod diff --git a/krylov/psb_z_krylov_conv_mod.f90 b/linsolve/psb_z_linsolve_conv_mod.f90 similarity index 98% rename from krylov/psb_z_krylov_conv_mod.f90 rename to linsolve/psb_z_linsolve_conv_mod.f90 index fc88ccf6..6c6276ff 100644 --- a/krylov/psb_z_krylov_conv_mod.f90 +++ b/linsolve/psb_z_linsolve_conv_mod.f90 @@ -30,12 +30,12 @@ ! ! ! -! File: psb_krylov_conv_mod.f90 -! Interfaces for Krylov subspace iterative methods. +! File: psb_linsolve_conv_mod.f90 +! Interfaces for linear solvers' convergence handling. ! -Module psb_z_krylov_conv_mod +Module psb_z_linsolve_conv_mod - use psb_base_krylov_conv_mod + use psb_base_linsolve_conv_mod interface psb_init_conv module procedure psb_z_init_conv, psb_z_init_conv_vect @@ -355,4 +355,4 @@ contains end function psb_z_check_conv_vect -end module psb_z_krylov_conv_mod +end module psb_z_linsolve_conv_mod diff --git a/openacc/Makefile b/openacc/Makefile new file mode 100644 index 00000000..f60a810d --- /dev/null +++ b/openacc/Makefile @@ -0,0 +1,89 @@ +include ../Make.inc + + +#CC=mpicc +#FC=mpif90 +#FCOPT=-O0 -march=native +#OFFLOAD=-fopenacc -foffload=nvptx-none="-march=sm_70" + +LIBDIR=../lib +INCDIR=../include +MODDIR=../modules +IMPLDIR=./impl + +INCLUDES=-I$(LIBDIR) -I$(INCDIR) -I$(MODDIR) +FINCLUDES=$(FMFLAG). $(FMFLAG)$(INCDIR) $(FMFLAG)$(MODDIR) $(FIFLAG). +CINCLUDES= +#LIBS=-L$(LIBDIR) -lpsb_util -lpsb_ext -lpsb_base -lopenblas -lmetis + + +FOBJS= psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o \ + psb_s_oacc_vect_mod.o psb_s_oacc_csr_mat_mod.o \ + psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ + psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ + psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ + psb_s_oacc_ell_mat_mod.o psb_s_oacc_hll_mat_mod.o \ + psb_d_oacc_ell_mat_mod.o psb_d_oacc_hll_mat_mod.o \ + psb_c_oacc_ell_mat_mod.o psb_c_oacc_hll_mat_mod.o \ + psb_z_oacc_ell_mat_mod.o psb_z_oacc_hll_mat_mod.o \ + psb_oacc_mod.o psb_oacc_env_mod.o + + +LIBNAME=libpsb_openacc.a + +OBJS=$(COBJS) $(FOBJS) + + +lib: objs ilib + ar cur $(LIBNAME) $(OBJS) + /bin/cp -p $(LIBNAME) $(LIBDIR) + +objs: $(OBJS) iobjs + /bin/cp -p *$(.mod) $(MODDIR) + +iobjs: $(OBJS) + $(MAKE) -C impl objs + +ilib: $(OBJS) + $(MAKE) -C impl lib + +psb_oacc_mod.o : psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o \ + psb_s_oacc_vect_mod.o psb_s_oacc_csr_mat_mod.o \ + psb_d_oacc_vect_mod.o psb_d_oacc_csr_mat_mod.o \ + psb_c_oacc_vect_mod.o psb_c_oacc_csr_mat_mod.o \ + psb_z_oacc_vect_mod.o psb_z_oacc_csr_mat_mod.o \ + psb_s_oacc_ell_mat_mod.o psb_s_oacc_hll_mat_mod.o \ + psb_d_oacc_ell_mat_mod.o psb_d_oacc_hll_mat_mod.o \ + psb_c_oacc_ell_mat_mod.o psb_c_oacc_hll_mat_mod.o \ + psb_z_oacc_ell_mat_mod.o psb_z_oacc_hll_mat_mod.o \ + psb_oacc_env_mod.o + +psb_s_oacc_vect_mod.o psb_d_oacc_vect_mod.o \ + psb_c_oacc_vect_mod.o psb_z_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_l_oacc_vect_mod.o psb_oacc_env_mod.o +psb_l_oacc_vect_mod.o: psb_i_oacc_vect_mod.o psb_oacc_env_mod.o +psb_i_oacc_vect_mod.o: psb_oacc_env_mod.o + + +psb_s_oacc_csr_mat_mod.o psb_s_oacc_ell_mat_mod.o psb_s_oacc_hll_mat_mod.o: psb_s_oacc_vect_mod.o +psb_d_oacc_csr_mat_mod.o psb_d_oacc_ell_mat_mod.o psb_d_oacc_hll_mat_mod.o: psb_d_oacc_vect_mod.o +psb_c_oacc_csr_mat_mod.o psb_c_oacc_ell_mat_mod.o psb_c_oacc_hll_mat_mod.o: psb_c_oacc_vect_mod.o +psb_z_oacc_csr_mat_mod.o psb_z_oacc_ell_mat_mod.o psb_z_oacc_hll_mat_mod.o: psb_z_oacc_vect_mod.o + + + +clean: cclean iclean + /bin/rm -f $(FOBJS) *$(.mod) *.a *.smod +veryclean: clean +cclean: + /bin/rm -f $(COBJS) +iclean: + $(MAKE) -C impl clean + +.c.o: + $(CC) $(CCOPT) $(CCOPENACC) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXOPENACC) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/openacc/impl/Makefile b/openacc/impl/Makefile new file mode 100755 index 00000000..e460598b --- /dev/null +++ b/openacc/impl/Makefile @@ -0,0 +1,285 @@ +include ../../Make.inc +LIBDIR=../../lib +INCDIR=../../include +MODDIR=../../modules +UP=.. +# +# Compilers and such +# +#CCOPT= -g +FINCLUDES=$(FMFLAG).. $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FIFLAG).. +LIBNAME=libpsb_openacc.a + +OBJS= \ +psb_s_oacc_csr_vect_mv.o \ +psb_s_oacc_csr_inner_vect_sv.o \ +psb_s_oacc_csr_scals.o \ +psb_s_oacc_csr_scal.o \ +psb_s_oacc_csr_allocate_mnnz.o \ +psb_s_oacc_csr_reallocate_nz.o \ +psb_s_oacc_csr_cp_from_coo.o \ +psb_s_oacc_csr_cp_from_fmt.o \ +psb_s_oacc_csr_mv_from_coo.o \ +psb_s_oacc_csr_mv_from_fmt.o \ +psb_s_oacc_csr_mold.o \ +psb_s_oacc_mlt_v_2.o \ +psb_s_oacc_mlt_v.o \ +psb_d_oacc_csr_vect_mv.o \ +psb_d_oacc_csr_inner_vect_sv.o \ +psb_d_oacc_csr_scals.o \ +psb_d_oacc_csr_scal.o \ +psb_d_oacc_csr_allocate_mnnz.o \ +psb_d_oacc_csr_reallocate_nz.o \ +psb_d_oacc_csr_cp_from_coo.o \ +psb_d_oacc_csr_cp_from_fmt.o \ +psb_d_oacc_csr_mv_from_coo.o \ +psb_d_oacc_csr_mv_from_fmt.o \ +psb_d_oacc_csr_mold.o \ +psb_d_oacc_mlt_v_2.o \ +psb_d_oacc_mlt_v.o \ +psb_c_oacc_csr_vect_mv.o \ +psb_c_oacc_csr_inner_vect_sv.o \ +psb_c_oacc_csr_scals.o \ +psb_c_oacc_csr_scal.o \ +psb_c_oacc_csr_allocate_mnnz.o \ +psb_c_oacc_csr_reallocate_nz.o \ +psb_c_oacc_csr_cp_from_coo.o \ +psb_c_oacc_csr_cp_from_fmt.o \ +psb_c_oacc_csr_mv_from_coo.o \ +psb_c_oacc_csr_mv_from_fmt.o \ +psb_c_oacc_csr_mold.o \ +psb_c_oacc_mlt_v_2.o \ +psb_c_oacc_mlt_v.o \ +psb_z_oacc_csr_vect_mv.o \ +psb_z_oacc_csr_inner_vect_sv.o \ +psb_z_oacc_csr_scals.o \ +psb_z_oacc_csr_scal.o \ +psb_z_oacc_csr_allocate_mnnz.o \ +psb_z_oacc_csr_reallocate_nz.o \ +psb_z_oacc_csr_cp_from_coo.o \ +psb_z_oacc_csr_cp_from_fmt.o \ +psb_z_oacc_csr_mv_from_coo.o \ +psb_z_oacc_csr_mv_from_fmt.o \ +psb_z_oacc_csr_mold.o \ +psb_z_oacc_mlt_v_2.o \ +psb_z_oacc_mlt_v.o \ +psb_s_oacc_ell_vect_mv.o \ +psb_s_oacc_ell_inner_vect_sv.o \ +psb_s_oacc_ell_scals.o \ +psb_s_oacc_ell_scal.o \ +psb_s_oacc_ell_reallocate_nz.o \ +psb_s_oacc_ell_allocate_mnnz.o \ +psb_s_oacc_ell_cp_from_coo.o \ +psb_s_oacc_ell_cp_from_fmt.o \ +psb_s_oacc_ell_mv_from_coo.o \ +psb_s_oacc_ell_mv_from_fmt.o \ +psb_s_oacc_ell_mold.o \ +psb_s_oacc_hll_mold.o \ +psb_s_oacc_hll_mv_from_fmt.o \ +psb_s_oacc_hll_mv_from_coo.o \ +psb_s_oacc_hll_cp_from_fmt.o \ +psb_s_oacc_hll_cp_from_coo.o \ +psb_s_oacc_hll_allocate_mnnz.o \ +psb_s_oacc_hll_reallocate_nz.o \ +psb_s_oacc_hll_scal.o \ +psb_s_oacc_hll_scals.o \ +psb_s_oacc_hll_inner_vect_sv.o \ +psb_s_oacc_hll_vect_mv.o \ +psb_d_oacc_ell_vect_mv.o \ +psb_d_oacc_ell_inner_vect_sv.o \ +psb_d_oacc_ell_scals.o \ +psb_d_oacc_ell_scal.o \ +psb_d_oacc_ell_reallocate_nz.o \ +psb_d_oacc_ell_allocate_mnnz.o \ +psb_d_oacc_ell_cp_from_coo.o \ +psb_d_oacc_ell_cp_from_fmt.o \ +psb_d_oacc_ell_mv_from_coo.o \ +psb_d_oacc_ell_mv_from_fmt.o \ +psb_d_oacc_ell_mold.o \ +psb_d_oacc_hll_mold.o \ +psb_d_oacc_hll_mv_from_fmt.o \ +psb_d_oacc_hll_mv_from_coo.o \ +psb_d_oacc_hll_cp_from_fmt.o \ +psb_d_oacc_hll_cp_from_coo.o \ +psb_d_oacc_hll_allocate_mnnz.o \ +psb_d_oacc_hll_reallocate_nz.o \ +psb_d_oacc_hll_scal.o \ +psb_d_oacc_hll_scals.o \ +psb_d_oacc_hll_inner_vect_sv.o \ +psb_d_oacc_hll_vect_mv.o \ +psb_c_oacc_ell_vect_mv.o \ +psb_c_oacc_ell_inner_vect_sv.o \ +psb_c_oacc_ell_scals.o \ +psb_c_oacc_ell_scal.o \ +psb_c_oacc_ell_reallocate_nz.o \ +psb_c_oacc_ell_allocate_mnnz.o \ +psb_c_oacc_ell_cp_from_coo.o \ +psb_c_oacc_ell_cp_from_fmt.o \ +psb_c_oacc_ell_mv_from_coo.o \ +psb_c_oacc_ell_mv_from_fmt.o \ +psb_c_oacc_ell_mold.o \ +psb_c_oacc_hll_mold.o \ +psb_c_oacc_hll_mv_from_fmt.o \ +psb_c_oacc_hll_mv_from_coo.o \ +psb_c_oacc_hll_cp_from_fmt.o \ +psb_c_oacc_hll_cp_from_coo.o \ +psb_c_oacc_hll_allocate_mnnz.o \ +psb_c_oacc_hll_reallocate_nz.o \ +psb_c_oacc_hll_scal.o \ +psb_c_oacc_hll_scals.o \ +psb_c_oacc_hll_inner_vect_sv.o \ +psb_c_oacc_hll_vect_mv.o \ +psb_z_oacc_ell_vect_mv.o \ +psb_z_oacc_ell_inner_vect_sv.o \ +psb_z_oacc_ell_scals.o \ +psb_z_oacc_ell_scal.o \ +psb_z_oacc_ell_reallocate_nz.o \ +psb_z_oacc_ell_allocate_mnnz.o \ +psb_z_oacc_ell_cp_from_coo.o \ +psb_z_oacc_ell_cp_from_fmt.o \ +psb_z_oacc_ell_mv_from_coo.o \ +psb_z_oacc_ell_mv_from_fmt.o \ +psb_z_oacc_ell_mold.o \ +psb_z_oacc_hll_mold.o \ +psb_z_oacc_hll_mv_from_fmt.o \ +psb_z_oacc_hll_mv_from_coo.o \ +psb_z_oacc_hll_cp_from_fmt.o \ +psb_z_oacc_hll_cp_from_coo.o \ +psb_z_oacc_hll_allocate_mnnz.o \ +psb_z_oacc_hll_reallocate_nz.o \ +psb_z_oacc_hll_scal.o \ +psb_z_oacc_hll_scals.o \ +psb_z_oacc_hll_inner_vect_sv.o \ +psb_z_oacc_hll_vect_mv.o \ +psb_z_oacc_ell_vect_mv.o \ +psb_z_oacc_ell_inner_vect_sv.o \ +psb_z_oacc_ell_scals.o \ +psb_z_oacc_ell_scal.o \ +psb_z_oacc_ell_reallocate_nz.o \ +psb_z_oacc_ell_allocate_mnnz.o \ +psb_z_oacc_ell_cp_from_coo.o \ +psb_z_oacc_ell_cp_from_fmt.o \ +psb_z_oacc_ell_mv_from_coo.o \ +psb_z_oacc_ell_mv_from_fmt.o \ +psb_z_oacc_ell_mold.o \ +psb_z_oacc_hll_mold.o \ +psb_z_oacc_hll_mv_from_fmt.o \ +psb_z_oacc_hll_mv_from_coo.o \ +psb_z_oacc_hll_cp_from_fmt.o \ +psb_z_oacc_hll_cp_from_coo.o \ +psb_z_oacc_hll_allocate_mnnz.o \ +psb_z_oacc_hll_reallocate_nz.o \ +psb_z_oacc_hll_scal.o \ +psb_z_oacc_hll_scals.o \ +psb_z_oacc_hll_inner_vect_sv.o \ +psb_z_oacc_hll_vect_mv.o + + +objs: $(OBJS) + +lib: objs + ar cur ../$(LIBNAME) $(OBJS) + +psb_s_oacc_csr_vect_mv.o psb_s_oacc_csr_inner_vect_sv.o \ + psb_s_oacc_csr_scals.o \ + psb_s_oacc_csr_scal.o psb_s_oacc_csr_allocate_mnnz.o \ + psb_s_oacc_csr_reallocate_nz.o psb_s_oacc_csr_cp_from_coo.o \ + psb_s_oacc_csr_cp_from_fmt.o psb_s_oacc_csr_mv_from_coo.o \ + psb_s_oacc_csr_mv_from_fmt.o psb_s_oacc_csr_mold.o: $(UP)/psb_s_oacc_csr_mat_mod.o $(UP)/psb_s_oacc_vect_mod.o + +psb_s_oacc_ell_vect_mv.o psb_s_oacc_ell_inner_vect_sv.o \ + psb_s_oacc_ell_scals.o \ + psb_s_oacc_ell_scal.o psb_s_oacc_ell_allocate_mnnz.o \ + psb_s_oacc_ell_reallocate_nz.o psb_s_oacc_ell_cp_from_coo.o \ + psb_s_oacc_ell_cp_from_fmt.o psb_s_oacc_ell_mv_from_coo.o \ + psb_s_oacc_ell_mv_from_fmt.o psb_s_oacc_ell_mold.o: $(UP)/psb_s_oacc_ell_mat_mod.o $(UP)/psb_s_oacc_vect_mod.o + +psb_s_oacc_hll_vect_mv.o psb_s_oacc_hll_inner_vect_sv.o \ + psb_s_oacc_hll_scals.o \ + psb_s_oacc_hll_scal.o psb_s_oacc_hll_allocate_mnnz.o \ + psb_s_oacc_hll_reallocate_nz.o psb_s_oacc_hll_cp_from_coo.o \ + psb_s_oacc_hll_cp_from_fmt.o psb_s_oacc_hll_mv_from_coo.o \ + psb_s_oacc_hll_mv_from_fmt.o psb_s_oacc_hll_mold.o: $(UP)/psb_s_oacc_hll_mat_mod.o $(UP)/psb_s_oacc_vect_mod.o + + +psb_d_oacc_csr_vect_mv.o psb_d_oacc_csr_inner_vect_sv.o \ + psb_d_oacc_csr_scals.o \ + psb_d_oacc_csr_scal.o psb_d_oacc_csr_allocate_mnnz.o \ + psb_d_oacc_csr_reallocate_nz.o psb_d_oacc_csr_cp_from_coo.o \ + psb_d_oacc_csr_cp_from_fmt.o psb_d_oacc_csr_mv_from_coo.o \ + psb_d_oacc_csr_mv_from_fmt.o psb_d_oacc_csr_mold.o: $(UP)/psb_d_oacc_csr_mat_mod.o $(UP)/psb_d_oacc_vect_mod.o + +psb_d_oacc_ell_vect_mv.o psb_d_oacc_ell_inner_vect_sv.o \ + psb_d_oacc_ell_scals.o \ + psb_d_oacc_ell_scal.o psb_d_oacc_ell_allocate_mnnz.o \ + psb_d_oacc_ell_reallocate_nz.o psb_d_oacc_ell_cp_from_coo.o \ + psb_d_oacc_ell_cp_from_fmt.o psb_d_oacc_ell_mv_from_coo.o \ + psb_d_oacc_ell_mv_from_fmt.o psb_d_oacc_ell_mold.o: $(UP)/psb_d_oacc_ell_mat_mod.o $(UP)/psb_d_oacc_vect_mod.o + +psb_d_oacc_hll_vect_mv.o psb_d_oacc_hll_inner_vect_sv.o \ + psb_d_oacc_hll_scals.o \ + psb_d_oacc_hll_scal.o psb_d_oacc_hll_allocate_mnnz.o \ + psb_d_oacc_hll_reallocate_nz.o psb_d_oacc_hll_cp_from_coo.o \ + psb_d_oacc_hll_cp_from_fmt.o psb_d_oacc_hll_mv_from_coo.o \ + psb_d_oacc_hll_mv_from_fmt.o psb_d_oacc_hll_mold.o: $(UP)/psb_d_oacc_hll_mat_mod.o $(UP)/psb_d_oacc_vect_mod.o + +psb_c_oacc_csr_vect_mv.o psb_c_oacc_csr_inner_vect_sv.o \ + psb_c_oacc_csr_scals.o \ + psb_c_oacc_csr_scal.o psb_c_oacc_csr_allocate_mnnz.o \ + psb_c_oacc_csr_reallocate_nz.o psb_c_oacc_csr_cp_from_coo.o \ + psb_c_oacc_csr_cp_from_fmt.o psb_c_oacc_csr_mv_from_coo.o \ + psb_c_oacc_csr_mv_from_fmt.o psb_c_oacc_csr_mold.o: $(UP)/psb_c_oacc_csr_mat_mod.o $(UP)/psb_c_oacc_vect_mod.o + +psb_c_oacc_ell_vect_mv.o psb_c_oacc_ell_inner_vect_sv.o \ + psb_c_oacc_ell_scals.o \ + psb_c_oacc_ell_scal.o psb_c_oacc_ell_allocate_mnnz.o \ + psb_c_oacc_ell_reallocate_nz.o psb_c_oacc_ell_cp_from_coo.o \ + psb_c_oacc_ell_cp_from_fmt.o psb_c_oacc_ell_mv_from_coo.o \ + psb_c_oacc_ell_mv_from_fmt.o psb_c_oacc_ell_mold.o: $(UP)/psb_c_oacc_ell_mat_mod.o $(UP)/psb_c_oacc_vect_mod.o + +psb_c_oacc_hll_vect_mv.o psb_c_oacc_hll_inner_vect_sv.o \ + psb_c_oacc_hll_scals.o \ + psb_c_oacc_hll_scal.o psb_c_oacc_hll_allocate_mnnz.o \ + psb_c_oacc_hll_reallocate_nz.o psb_c_oacc_hll_cp_from_coo.o \ + psb_c_oacc_hll_cp_from_fmt.o psb_c_oacc_hll_mv_from_coo.o \ + psb_c_oacc_hll_mv_from_fmt.o psb_c_oacc_hll_mold.o: $(UP)/psb_c_oacc_hll_mat_mod.o $(UP)/psb_c_oacc_vect_mod.o + + +psb_z_oacc_csr_vect_mv.o psb_z_oacc_csr_inner_vect_sv.o \ + psb_z_oacc_csr_scals.o \ + psb_z_oacc_csr_scal.o psb_z_oacc_csr_allocate_mnnz.o \ + psb_z_oacc_csr_reallocate_nz.o psb_z_oacc_csr_cp_from_coo.o \ + psb_z_oacc_csr_cp_from_fmt.o psb_z_oacc_csr_mv_from_coo.o \ + psb_z_oacc_csr_mv_from_fmt.o psb_z_oacc_csr_mold.o: $(UP)/psb_z_oacc_csr_mat_mod.o $(UP)/psb_z_oacc_vect_mod.o + +psb_z_oacc_ell_vect_mv.o psb_z_oacc_ell_inner_vect_sv.o \ + psb_z_oacc_ell_scals.o \ + psb_z_oacc_ell_scal.o psb_z_oacc_ell_allocate_mnnz.o \ + psb_z_oacc_ell_reallocate_nz.o psb_z_oacc_ell_cp_from_coo.o \ + psb_z_oacc_ell_cp_from_fmt.o psb_z_oacc_ell_mv_from_coo.o \ + psb_z_oacc_ell_mv_from_fmt.o psb_z_oacc_ell_mold.o: $(UP)/psb_z_oacc_ell_mat_mod.o $(UP)/psb_z_oacc_vect_mod.o + +psb_z_oacc_hll_vect_mv.o psb_z_oacc_hll_inner_vect_sv.o \ + psb_z_oacc_hll_scals.o \ + psb_z_oacc_hll_scal.o psb_z_oacc_hll_allocate_mnnz.o \ + psb_z_oacc_hll_reallocate_nz.o psb_z_oacc_hll_cp_from_coo.o \ + psb_z_oacc_hll_cp_from_fmt.o psb_z_oacc_hll_mv_from_coo.o \ + psb_z_oacc_hll_mv_from_fmt.o psb_z_oacc_hll_mold.o: $(UP)/psb_z_oacc_hll_mat_mod.o $(UP)/psb_z_oacc_vect_mod.o + +psb_s_oacc_mlt_v_2.o psb_s_oacc_mlt_v.o: $(UP)/psb_s_oacc_vect_mod.o +psb_d_oacc_mlt_v_2.o psb_d_oacc_mlt_v.o: $(UP)/psb_d_oacc_vect_mod.o +psb_c_oacc_mlt_v_2.o psb_c_oacc_mlt_v.o: $(UP)/psb_c_oacc_vect_mod.o +psb_z_oacc_mlt_v_2.o psb_z_oacc_mlt_v.o: $(UP)/psb_z_oacc_vect_mod.o + + +clean: + /bin/rm -f $(OBJS) *.smod + +.c.o: + $(CC) $(CCOPT) $(CCOPENACC) $(CINCLUDES) $(CDEFINES) -c $< -o $@ +.f90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) -c $< -o $@ +.F90.o: + $(FC) $(FCOPT) $(FCOPENACC) $(FINCLUDES) $(FDEFINES) -c $< -o $@ +.cpp.o: + $(CXX) $(CXXOPT) $(CXXOPENACC) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@ diff --git a/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..a6fe9b9c --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,29 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_csr_sparse_mat%allocate(m, n, nz) + call a%set_host() + call a%sync_dev_space() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_allocate_mnnz +end submodule psb_c_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..ab5f514b --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_c_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_csr_cp_from_coo +end submodule psb_c_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..c6287cbb --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_c_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_c_oacc_csr_cp_from_fmt +end submodule psb_c_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..833140f4 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_c_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_c_vect_oacc) + select type(yy => y) + type is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_c_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_c_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_c_oacc_csr_inner_vect_sv +end submodule psb_c_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_c_oacc_csr_mold.F90 b/openacc/impl/psb_c_oacc_csr_mold.F90 new file mode 100644 index 00000000..cf32ea94 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_mold(a, b, info) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_c_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_c_oacc_csr_mold +end submodule psb_c_oacc_csr_mold_impl + diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..73f02b84 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_c_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_csr_mv_from_coo +end submodule psb_c_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..853a3269 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_c_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_c_oacc_csr_mv_from_fmt +end submodule psb_c_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..e7dc970a --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='c_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_csr_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_reallocate_nz +end submodule psb_c_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_c_oacc_csr_scal.F90 b/openacc/impl/psb_c_oacc_csr_scal.F90 new file mode 100644 index 00000000..5dece48b --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_scal +end submodule psb_c_oacc_csr_scal_impl diff --git a/openacc/impl/psb_c_oacc_csr_scals.F90 b/openacc/impl/psb_c_oacc_csr_scals.F90 new file mode 100644 index 00000000..aba22d43 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_scals(d, a, info) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_csr_scals +end submodule psb_c_oacc_csr_scals_impl diff --git a/openacc/impl/psb_c_oacc_csr_vect_mv.F90 b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..c1030094 --- /dev/null +++ b/openacc/impl/psb_c_oacc_csr_vect_mv.F90 @@ -0,0 +1,86 @@ +submodule (psb_c_oacc_csr_mat_mod) psb_c_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_c_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_c_oacc_csr_vect_mv +end submodule psb_c_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..5a363434 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_c_ell_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_allocate_mnnz +end submodule psb_c_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..47118e48 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + + info = psb_success_ + call a%free_dev_space() + call a%psb_c_ell_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_ell_cp_from_coo +end submodule psb_c_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..559cb65c --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_c_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_c_oacc_ell_cp_from_fmt +end submodule psb_c_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..cfabcb78 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_c_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_c_vect_oacc) + select type(yy => y) + type is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_c_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_c_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_c_oacc_ell_inner_vect_sv +end submodule psb_c_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_c_oacc_ell_mold.F90 b/openacc/impl/psb_c_oacc_ell_mold.F90 new file mode 100644 index 00000000..88331d1d --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_mold(a, b, info) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_c_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_c_oacc_ell_mold +end submodule psb_c_oacc_ell_mold_impl diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..183be9a5 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_c_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_ell_mv_from_coo +end submodule psb_c_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..d1bd6330 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_c_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_c_oacc_ell_mv_from_fmt +end submodule psb_c_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..24d153f6 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='c_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_ell_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_reallocate_nz +end submodule psb_c_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_c_oacc_ell_scal.F90 b/openacc/impl/psb_c_oacc_ell_scal.F90 new file mode 100644 index 00000000..b3ea90fb --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_scal +end submodule psb_c_oacc_ell_scal_impl diff --git a/openacc/impl/psb_c_oacc_ell_scals.F90 b/openacc/impl/psb_c_oacc_ell_scals.F90 new file mode 100644 index 00000000..f067f253 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_scals(d, a, info) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_ell_scals +end submodule psb_c_oacc_ell_scals_impl diff --git a/openacc/impl/psb_c_oacc_ell_vect_mv.F90 b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..7a39c031 --- /dev/null +++ b/openacc/impl/psb_c_oacc_ell_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_c_oacc_ell_mat_mod) psb_c_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + nc = size(a%ja,2) + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_c_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + + contains + + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nc + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nc + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_c_oacc_ell_vect_mv +end submodule psb_c_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..c90fc652 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,36 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_c_hll_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_allocate_mnnz +end submodule psb_c_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..0eaebf9d --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_c_hll_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_hll_cp_from_coo +end submodule psb_c_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..29b18470 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_c_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_c_oacc_hll_cp_from_fmt +end submodule psb_c_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..4b45f518 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'c_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_c_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_c_vect_oacc) + select type(yy => y) + type is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_c_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_c_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_c_oacc_hll_inner_vect_sv +end submodule psb_c_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_c_oacc_hll_mold.F90 b/openacc/impl/psb_c_oacc_hll_mold.F90 new file mode 100644 index 00000000..f480f3ab --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_mold(a, b, info) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_c_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_c_oacc_hll_mold +end submodule psb_c_oacc_hll_mold_impl diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..193f9753 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_c_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_c_oacc_hll_mv_from_coo +end submodule psb_c_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..1c928067 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,25 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_c_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_c_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + end subroutine psb_c_oacc_hll_mv_from_fmt +end submodule psb_c_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..9290c381 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='c_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_c_hll_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_reallocate_nz +end submodule psb_c_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_c_oacc_hll_scal.F90 b/openacc/impl/psb_c_oacc_hll_scal.F90 new file mode 100644 index 00000000..527a0ec1 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_scal +end submodule psb_c_oacc_hll_scal_impl diff --git a/openacc/impl/psb_c_oacc_hll_scals.F90 b/openacc/impl/psb_c_oacc_hll_scals.F90 new file mode 100644 index 00000000..00f24721 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_scals(d, a, info) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_c_oacc_hll_scals +end submodule psb_c_oacc_hll_scals_impl diff --git a/openacc/impl/psb_c_oacc_hll_vect_mv.F90 b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..494ed149 --- /dev/null +++ b/openacc/impl/psb_c_oacc_hll_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_c_oacc_hll_mat_mod) psb_c_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_c_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_c_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii + complex(psb_spk_) :: tmp + + info = 0 + !$acc parallel loop private(nlc, isz,ir,nr) + do i = 1, nhacks + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = czero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) + end do + end do + end subroutine inner_spmv + end subroutine psb_c_oacc_hll_vect_mv +end submodule psb_c_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_c_oacc_mlt_v.f90 b/openacc/impl/psb_c_oacc_mlt_v.f90 new file mode 100644 index 00000000..e5f215be --- /dev/null +++ b/openacc/impl/psb_c_oacc_mlt_v.f90 @@ -0,0 +1,46 @@ + +subroutine psb_c_oacc_mlt_v(x, y, info) + use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v + + implicit none + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_c_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + call c_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +contains + subroutine c_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine c_inner_oacc_mlt_v +end subroutine psb_c_oacc_mlt_v diff --git a/openacc/impl/psb_c_oacc_mlt_v_2.f90 b/openacc/impl/psb_c_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..ed0fc88e --- /dev/null +++ b/openacc/impl/psb_c_oacc_mlt_v_2.f90 @@ -0,0 +1,91 @@ +subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_c_oacc_vect_mod, psb_protect_name => psb_c_oacc_mlt_v_2 + use psb_string_mod + implicit none + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + class(psb_c_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_, device_done + + conjgx_ = .false. + conjgy_ = .false. + device_done = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_c_vect_oacc) + select type (yy => y) + class is (psb_c_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= czero) .and. (z%is_host())) call z%sync() + call c_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) + call z%set_dev() + device_done = .true. + end select + end select + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= czero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end if + +contains + subroutine c_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * conjg(y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * conjg(y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine c_inner_oacc_mlt_v_2 +end subroutine psb_c_oacc_mlt_v_2 + diff --git a/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..1f210a09 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,29 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_csr_sparse_mat%allocate(m, n, nz) + call a%set_host() + call a%sync_dev_space() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_allocate_mnnz +end submodule psb_d_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..92770e0f --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_d_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_csr_cp_from_coo +end submodule psb_d_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..9da6d861 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_d_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_d_oacc_csr_cp_from_fmt +end submodule psb_d_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..c9a875bc --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_d_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_d_vect_oacc) + select type(yy => y) + type is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_d_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_d_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_d_oacc_csr_inner_vect_sv +end submodule psb_d_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_d_oacc_csr_mold.F90 b/openacc/impl/psb_d_oacc_csr_mold.F90 new file mode 100644 index 00000000..dc9ff711 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_mold(a, b, info) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_d_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_d_oacc_csr_mold +end submodule psb_d_oacc_csr_mold_impl + diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..0f020e06 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_d_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_csr_mv_from_coo +end submodule psb_d_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..cfd7d7dd --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_d_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_d_oacc_csr_mv_from_fmt +end submodule psb_d_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..8f746105 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='d_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_csr_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_reallocate_nz +end submodule psb_d_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_d_oacc_csr_scal.F90 b/openacc/impl/psb_d_oacc_csr_scal.F90 new file mode 100644 index 00000000..cc693fa2 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_scal +end submodule psb_d_oacc_csr_scal_impl diff --git a/openacc/impl/psb_d_oacc_csr_scals.F90 b/openacc/impl/psb_d_oacc_csr_scals.F90 new file mode 100644 index 00000000..157355d8 --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_scals(d, a, info) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_csr_scals +end submodule psb_d_oacc_csr_scals_impl diff --git a/openacc/impl/psb_d_oacc_csr_vect_mv.F90 b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..a2efdc3e --- /dev/null +++ b/openacc/impl/psb_d_oacc_csr_vect_mv.F90 @@ -0,0 +1,86 @@ +submodule (psb_d_oacc_csr_mat_mod) psb_d_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_d_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_d_oacc_csr_vect_mv +end submodule psb_d_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..ca0a0f84 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_d_ell_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_allocate_mnnz +end submodule psb_d_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..384701ce --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + + info = psb_success_ + call a%free_dev_space() + call a%psb_d_ell_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_ell_cp_from_coo +end submodule psb_d_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..6622a642 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_d_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_d_oacc_ell_cp_from_fmt +end submodule psb_d_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..466594fb --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_d_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_d_vect_oacc) + select type(yy => y) + type is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_d_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_d_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_d_oacc_ell_inner_vect_sv +end submodule psb_d_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_d_oacc_ell_mold.F90 b/openacc/impl/psb_d_oacc_ell_mold.F90 new file mode 100644 index 00000000..767e7f13 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_mold(a, b, info) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_d_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_d_oacc_ell_mold +end submodule psb_d_oacc_ell_mold_impl diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..7bddced9 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_d_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_ell_mv_from_coo +end submodule psb_d_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..53e45b98 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_d_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_d_oacc_ell_mv_from_fmt +end submodule psb_d_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..130a931e --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='d_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_ell_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_reallocate_nz +end submodule psb_d_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_d_oacc_ell_scal.F90 b/openacc/impl/psb_d_oacc_ell_scal.F90 new file mode 100644 index 00000000..39948d5f --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_scal +end submodule psb_d_oacc_ell_scal_impl diff --git a/openacc/impl/psb_d_oacc_ell_scals.F90 b/openacc/impl/psb_d_oacc_ell_scals.F90 new file mode 100644 index 00000000..a6292b72 --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_scals(d, a, info) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_ell_scals +end submodule psb_d_oacc_ell_scals_impl diff --git a/openacc/impl/psb_d_oacc_ell_vect_mv.F90 b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..b233669d --- /dev/null +++ b/openacc/impl/psb_d_oacc_ell_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_d_oacc_ell_mat_mod) psb_d_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + nc = size(a%ja,2) + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_d_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + + contains + + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nc + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nc + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_d_oacc_ell_vect_mv +end submodule psb_d_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..a30a0b00 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,36 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_d_hll_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_allocate_mnnz +end submodule psb_d_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..34a31b0b --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_d_hll_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_hll_cp_from_coo +end submodule psb_d_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..7d14f65c --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_d_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_d_oacc_hll_cp_from_fmt +end submodule psb_d_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..ff6a4580 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'd_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_d_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_d_vect_oacc) + select type(yy => y) + type is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_d_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_d_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_d_oacc_hll_inner_vect_sv +end submodule psb_d_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_d_oacc_hll_mold.F90 b/openacc/impl/psb_d_oacc_hll_mold.F90 new file mode 100644 index 00000000..89ead65b --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_mold(a, b, info) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_d_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_d_oacc_hll_mold +end submodule psb_d_oacc_hll_mold_impl diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..0f0ce6f1 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_d_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_d_oacc_hll_mv_from_coo +end submodule psb_d_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..1fcfa4f6 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,25 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_d_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_d_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + end subroutine psb_d_oacc_hll_mv_from_fmt +end submodule psb_d_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..21f5c48a --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='d_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_d_hll_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_reallocate_nz +end submodule psb_d_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_d_oacc_hll_scal.F90 b/openacc/impl/psb_d_oacc_hll_scal.F90 new file mode 100644 index 00000000..c0c284ef --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_scal +end submodule psb_d_oacc_hll_scal_impl diff --git a/openacc/impl/psb_d_oacc_hll_scals.F90 b/openacc/impl/psb_d_oacc_hll_scals.F90 new file mode 100644 index 00000000..1e3457b5 --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_scals(d, a, info) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_d_oacc_hll_scals +end submodule psb_d_oacc_hll_scals_impl diff --git a/openacc/impl/psb_d_oacc_hll_vect_mv.F90 b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..150ade8e --- /dev/null +++ b/openacc/impl/psb_d_oacc_hll_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_d_oacc_hll_mat_mod) psb_d_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_d_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_d_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii + real(psb_dpk_) :: tmp + + info = 0 + !$acc parallel loop private(nlc, isz,ir,nr) + do i = 1, nhacks + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = dzero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) + end do + end do + end subroutine inner_spmv + end subroutine psb_d_oacc_hll_vect_mv +end submodule psb_d_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_d_oacc_mlt_v.f90 b/openacc/impl/psb_d_oacc_mlt_v.f90 new file mode 100644 index 00000000..8b3a05b1 --- /dev/null +++ b/openacc/impl/psb_d_oacc_mlt_v.f90 @@ -0,0 +1,46 @@ + +subroutine psb_d_oacc_mlt_v(x, y, info) + use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v + + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_d_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + call d_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +contains + subroutine d_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine d_inner_oacc_mlt_v +end subroutine psb_d_oacc_mlt_v diff --git a/openacc/impl/psb_d_oacc_mlt_v_2.f90 b/openacc/impl/psb_d_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..7850329a --- /dev/null +++ b/openacc/impl/psb_d_oacc_mlt_v_2.f90 @@ -0,0 +1,91 @@ +subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_d_oacc_vect_mod, psb_protect_name => psb_d_oacc_mlt_v_2 + use psb_string_mod + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_, device_done + + conjgx_ = .false. + conjgy_ = .false. + device_done = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_d_vect_oacc) + select type (yy => y) + class is (psb_d_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= dzero) .and. (z%is_host())) call z%sync() + call d_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) + call z%set_dev() + device_done = .true. + end select + end select + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= dzero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end if + +contains + subroutine d_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine d_inner_oacc_mlt_v_2 +end subroutine psb_d_oacc_mlt_v_2 + diff --git a/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..0d531129 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,29 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_csr_sparse_mat%allocate(m, n, nz) + call a%set_host() + call a%sync_dev_space() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_allocate_mnnz +end submodule psb_s_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..f740cf18 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_s_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_csr_cp_from_coo +end submodule psb_s_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..fc495668 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_s_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_s_oacc_csr_cp_from_fmt +end submodule psb_s_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..b1785b49 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_s_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_s_vect_oacc) + select type(yy => y) + type is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_s_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_s_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_s_oacc_csr_inner_vect_sv +end submodule psb_s_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_s_oacc_csr_mold.F90 b/openacc/impl/psb_s_oacc_csr_mold.F90 new file mode 100644 index 00000000..95bddde8 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_mold(a, b, info) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_s_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_s_oacc_csr_mold +end submodule psb_s_oacc_csr_mold_impl + diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..0c92e476 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_s_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_csr_mv_from_coo +end submodule psb_s_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..1c61eb3b --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_s_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_s_oacc_csr_mv_from_fmt +end submodule psb_s_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..e49bf2c8 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='s_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_csr_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_reallocate_nz +end submodule psb_s_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_s_oacc_csr_scal.F90 b/openacc/impl/psb_s_oacc_csr_scal.F90 new file mode 100644 index 00000000..b9c8a986 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_scal +end submodule psb_s_oacc_csr_scal_impl diff --git a/openacc/impl/psb_s_oacc_csr_scals.F90 b/openacc/impl/psb_s_oacc_csr_scals.F90 new file mode 100644 index 00000000..76ad7cf2 --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_scals(d, a, info) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_csr_scals +end submodule psb_s_oacc_csr_scals_impl diff --git a/openacc/impl/psb_s_oacc_csr_vect_mv.F90 b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..5d3cc30c --- /dev/null +++ b/openacc/impl/psb_s_oacc_csr_vect_mv.F90 @@ -0,0 +1,86 @@ +submodule (psb_s_oacc_csr_mat_mod) psb_s_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_s_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_s_oacc_csr_vect_mv +end submodule psb_s_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..b9c25654 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_s_ell_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_allocate_mnnz +end submodule psb_s_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..5a607370 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + + info = psb_success_ + call a%free_dev_space() + call a%psb_s_ell_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_ell_cp_from_coo +end submodule psb_s_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..47ce5241 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_s_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_s_oacc_ell_cp_from_fmt +end submodule psb_s_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..5fc672d0 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_s_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_s_vect_oacc) + select type(yy => y) + type is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_s_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_s_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_s_oacc_ell_inner_vect_sv +end submodule psb_s_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_s_oacc_ell_mold.F90 b/openacc/impl/psb_s_oacc_ell_mold.F90 new file mode 100644 index 00000000..92f18f25 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_mold(a, b, info) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_s_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_s_oacc_ell_mold +end submodule psb_s_oacc_ell_mold_impl diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..736d4253 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_s_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_ell_mv_from_coo +end submodule psb_s_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..d8d13aa2 --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_s_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_s_oacc_ell_mv_from_fmt +end submodule psb_s_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..34036cdb --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='s_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_ell_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_reallocate_nz +end submodule psb_s_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_s_oacc_ell_scal.F90 b/openacc/impl/psb_s_oacc_ell_scal.F90 new file mode 100644 index 00000000..180d8f9a --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_scal +end submodule psb_s_oacc_ell_scal_impl diff --git a/openacc/impl/psb_s_oacc_ell_scals.F90 b/openacc/impl/psb_s_oacc_ell_scals.F90 new file mode 100644 index 00000000..c1c305af --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_scals(d, a, info) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_ell_scals +end submodule psb_s_oacc_ell_scals_impl diff --git a/openacc/impl/psb_s_oacc_ell_vect_mv.F90 b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..76b1fe5b --- /dev/null +++ b/openacc/impl/psb_s_oacc_ell_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_s_oacc_ell_mat_mod) psb_s_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + nc = size(a%ja,2) + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_s_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + + contains + + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nc + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + real(psb_spk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nc + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_s_oacc_ell_vect_mv +end submodule psb_s_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..1db3e55d --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,36 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_s_hll_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_allocate_mnnz +end submodule psb_s_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..ca4afeb7 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_s_hll_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_hll_cp_from_coo +end submodule psb_s_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..47a41b8d --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_s_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_s_oacc_hll_cp_from_fmt +end submodule psb_s_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..ea81574b --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + real(psb_spk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 's_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_s_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_s_vect_oacc) + select type(yy => y) + type is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_s_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_s_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_s_oacc_hll_inner_vect_sv +end submodule psb_s_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_s_oacc_hll_mold.F90 b/openacc/impl/psb_s_oacc_hll_mold.F90 new file mode 100644 index 00000000..1e43b65b --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_mold(a, b, info) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_s_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_s_oacc_hll_mold +end submodule psb_s_oacc_hll_mold_impl diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..c26c5018 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_s_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_s_oacc_hll_mv_from_coo +end submodule psb_s_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..dd04bbab --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,25 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_s_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_s_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + end subroutine psb_s_oacc_hll_mv_from_fmt +end submodule psb_s_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..242ffe0d --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='s_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_s_hll_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_reallocate_nz +end submodule psb_s_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_s_oacc_hll_scal.F90 b/openacc/impl/psb_s_oacc_hll_scal.F90 new file mode 100644 index 00000000..ae36465e --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_scal +end submodule psb_s_oacc_hll_scal_impl diff --git a/openacc/impl/psb_s_oacc_hll_scals.F90 b/openacc/impl/psb_s_oacc_hll_scals.F90 new file mode 100644 index 00000000..360ea84d --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_scals(d, a, info) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_s_oacc_hll_scals +end submodule psb_s_oacc_hll_scals_impl diff --git a/openacc/impl/psb_s_oacc_hll_vect_mv.F90 b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..e1d42252 --- /dev/null +++ b/openacc/impl/psb_s_oacc_hll_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_s_oacc_hll_mat_mod) psb_s_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_s_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_s_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii + real(psb_spk_) :: tmp + + info = 0 + !$acc parallel loop private(nlc, isz,ir,nr) + do i = 1, nhacks + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = szero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) + end do + end do + end subroutine inner_spmv + end subroutine psb_s_oacc_hll_vect_mv +end submodule psb_s_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_s_oacc_mlt_v.f90 b/openacc/impl/psb_s_oacc_mlt_v.f90 new file mode 100644 index 00000000..11dcac6c --- /dev/null +++ b/openacc/impl/psb_s_oacc_mlt_v.f90 @@ -0,0 +1,46 @@ + +subroutine psb_s_oacc_mlt_v(x, y, info) + use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v + + implicit none + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_s_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + call s_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +contains + subroutine s_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + real(psb_spk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine s_inner_oacc_mlt_v +end subroutine psb_s_oacc_mlt_v diff --git a/openacc/impl/psb_s_oacc_mlt_v_2.f90 b/openacc/impl/psb_s_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..b97f2f08 --- /dev/null +++ b/openacc/impl/psb_s_oacc_mlt_v_2.f90 @@ -0,0 +1,91 @@ +subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_s_oacc_vect_mod, psb_protect_name => psb_s_oacc_mlt_v_2 + use psb_string_mod + implicit none + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_s_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_, device_done + + conjgx_ = .false. + conjgy_ = .false. + device_done = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_s_vect_oacc) + select type (yy => y) + class is (psb_s_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= szero) .and. (z%is_host())) call z%sync() + call s_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) + call z%set_dev() + device_done = .true. + end select + end select + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= szero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end if + +contains + subroutine s_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine s_inner_oacc_mlt_v_2 +end subroutine psb_s_oacc_mlt_v_2 + diff --git a/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 new file mode 100644 index 00000000..b7ba4bad --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_allocate_mnnz.F90 @@ -0,0 +1,29 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_csr_sparse_mat%allocate(m, n, nz) + call a%set_host() + call a%sync_dev_space() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_allocate_mnnz +end submodule psb_z_oacc_csr_allocate_mnnz_impl diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 new file mode 100644 index 00000000..ef1b5b73 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_cp_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_z_csr_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_csr_cp_from_coo +end submodule psb_z_oacc_csr_cp_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 new file mode 100644 index 00000000..7c3470a2 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_cp_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_z_csr_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_z_oacc_csr_cp_from_fmt +end submodule psb_z_oacc_csr_cp_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 new file mode 100644 index 00000000..25715903 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_inner_vect_sv.F90 @@ -0,0 +1,83 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_csr_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_z_csr_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_z_vect_oacc) + select type(yy => y) + type is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val) + yy%v(i) = alpha * a%val(i) * xx%v(a%ja(i)) + beta * yy%v(i) + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_z_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_z_csr_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'csrg_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_z_oacc_csr_inner_vect_sv +end submodule psb_z_oacc_csr_inner_vect_sv_impl + diff --git a/openacc/impl/psb_z_oacc_csr_mold.F90 b/openacc/impl/psb_z_oacc_csr_mold.F90 new file mode 100644 index 00000000..93b6bb17 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_mold.F90 @@ -0,0 +1,35 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_mold_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_mold(a, b, info) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='csr_mold' + logical, parameter :: debug=.false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_z_oacc_csr_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_z_oacc_csr_mold +end submodule psb_z_oacc_csr_mold_impl + diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 new file mode 100644 index 00000000..d2b9ee48 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_mv_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_z_csr_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_csr_mv_from_coo +end submodule psb_z_oacc_csr_mv_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 new file mode 100644 index 00000000..af7fb1da --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_mv_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_z_csr_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_z_oacc_csr_mv_from_fmt +end submodule psb_z_oacc_csr_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 new file mode 100644 index 00000000..4cfea07c --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='z_oacc_csr_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_csr_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_reallocate_nz +end submodule psb_z_oacc_csr_reallocate_nz_impl diff --git a/openacc/impl/psb_z_oacc_csr_scal.F90 b/openacc/impl/psb_z_oacc_csr_scal.F90 new file mode 100644 index 00000000..f09ff595 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_scal.F90 @@ -0,0 +1,53 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_scal_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_scal(d, a, info, side) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop present(a, d) + do i = 1, a%get_nrows() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop present(a, d) + do i = 1, a%get_ncols() + do j = a%irp(i), a%irp(i+1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + !$acc parallel loop present(a, d) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d(i) + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_scal +end submodule psb_z_oacc_csr_scal_impl diff --git a/openacc/impl/psb_z_oacc_csr_scals.F90 b/openacc/impl/psb_z_oacc_csr_scals.F90 new file mode 100644 index 00000000..1fe64951 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_scals.F90 @@ -0,0 +1,34 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_scals_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_scals(d, a, info) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + !$acc parallel loop present(a) + do i = 1, size(a%val) + a%val(i) = a%val(i) * d + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_csr_scals +end submodule psb_z_oacc_csr_scals_impl diff --git a/openacc/impl/psb_z_oacc_csr_vect_mv.F90 b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 new file mode 100644 index 00000000..b312b6b7 --- /dev/null +++ b/openacc/impl/psb_z_oacc_csr_vect_mv.F90 @@ -0,0 +1,86 @@ +submodule (psb_z_oacc_csr_mat_mod) psb_z_oacc_csr_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'ocsrmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, alpha, a%val, a%ja, a%irp, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_z_csr_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, n, alpha, val, ja, irp, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), irp(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = irp(i), irp(i + 1) - 1 + tmp = tmp + val(j) * x(ja(j)) + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_z_oacc_csr_vect_mv +end submodule psb_z_oacc_csr_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 new file mode 100644 index 00000000..aa8a03cd --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_allocate_mnnz.F90 @@ -0,0 +1,35 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_z_ell_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_allocate_mnnz +end submodule psb_z_oacc_ell_allocate_mnnz_impl diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 new file mode 100644 index 00000000..a3129ff6 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_cp_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + + info = psb_success_ + call a%free_dev_space() + call a%psb_z_ell_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_ell_cp_from_coo +end submodule psb_z_oacc_ell_cp_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 new file mode 100644 index 00000000..f9a52d62 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_cp_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_z_ell_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_z_oacc_ell_cp_from_fmt +end submodule psb_z_oacc_ell_cp_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 new file mode 100644 index 00000000..1cbe249c --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_inner_vect_sv.F90 @@ -0,0 +1,85 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_ell_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nzt + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_z_ell_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_z_vect_oacc) + select type(yy => y) + type is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nzt = a%nzt + !$acc parallel loop present(a, xx, yy) + do i = 1, size(a%val, 1) + do j = 1, nzt + yy%v(i) = alpha * a%val(i, j) * xx%v(a%ja(i, j)) + beta * yy%v(i) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_z_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_z_ell_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'ell_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_z_oacc_ell_inner_vect_sv +end submodule psb_z_oacc_ell_inner_vect_sv_impl diff --git a/openacc/impl/psb_z_oacc_ell_mold.F90 b/openacc/impl/psb_z_oacc_ell_mold.F90 new file mode 100644 index 00000000..fcc222de --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_mold_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_mold(a, b, info) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'ell_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_z_oacc_ell_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_z_oacc_ell_mold +end submodule psb_z_oacc_ell_mold_impl diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 new file mode 100644 index 00000000..9abb1a74 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_mv_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_z_ell_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_ell_mv_from_coo +end submodule psb_z_oacc_ell_mv_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 new file mode 100644 index 00000000..eb49b21a --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_mv_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_mv_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_z_ell_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_z_oacc_ell_mv_from_fmt +end submodule psb_z_oacc_ell_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 new file mode 100644 index 00000000..c7c88c65 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_reallocate_nz.F90 @@ -0,0 +1,28 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='z_oacc_ell_reallocate_nz' + logical, parameter :: debug=.false. + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_ell_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_reallocate_nz +end submodule psb_z_oacc_ell_reallocate_nz_impl diff --git a/openacc/impl/psb_z_oacc_ell_scal.F90 b/openacc/impl/psb_z_oacc_ell_scal.F90 new file mode 100644 index 00000000..e3d25ccb --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_scal.F90 @@ -0,0 +1,58 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_scal_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_scal(d, a, info, side) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, m, nzt + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(i) + end do + end do + else if (side == 'R') then + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(a%ja(i, j)) + end do + end do + end if + else + !$acc parallel loop collapse(2) present(a, d) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d(j) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_scal +end submodule psb_z_oacc_ell_scal_impl diff --git a/openacc/impl/psb_z_oacc_ell_scals.F90 b/openacc/impl/psb_z_oacc_ell_scals.F90 new file mode 100644 index 00000000..c382627a --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_scals.F90 @@ -0,0 +1,39 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_scals_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_scals(d, a, info) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name='scal' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: i, j, nzt, m + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + m = a%get_nrows() + nzt = a%nzt + + !$acc parallel loop collapse(2) present(a) + do i = 1, m + do j = 1, nzt + a%val(i, j) = a%val(i, j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_ell_scals +end submodule psb_z_oacc_ell_scals_impl diff --git a/openacc/impl/psb_z_oacc_ell_vect_mv.F90 b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 new file mode 100644 index 00000000..53283689 --- /dev/null +++ b/openacc/impl/psb_z_oacc_ell_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_z_oacc_ell_mat_mod) psb_z_oacc_ell_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nzt, nc + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nzt = a%nzt + nc = size(a%ja,2) + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'oellmv Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, n, nc, alpha, a%val, a%ja, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_z_ell_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + + contains + + subroutine inner_spmv(m, n, nc, alpha, val, ja, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, n, nc + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_) :: val(:,:), x(:), y(:) + integer(psb_ipk_) :: ja(:,:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, ii, isz + complex(psb_dpk_) :: tmp + integer(psb_ipk_), parameter :: vsz = 256 + + info = 0 + + !$acc parallel loop vector_length(vsz) private(isz) + do ii = 1, m, vsz + isz = min(vsz, m - ii + 1) + !$acc loop independent private(tmp) + do i = ii, ii + isz - 1 + tmp = 0.0_psb_dpk_ + !$acc loop seq + do j = 1, nc + if (ja(i,j) > 0) then + tmp = tmp + val(i,j) * x(ja(i,j)) + end if + end do + y(i) = alpha * tmp + beta * y(i) + end do + end do + end subroutine inner_spmv + + end subroutine psb_z_oacc_ell_vect_mv +end submodule psb_z_oacc_ell_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 b/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 new file mode 100644 index 00000000..fb84dfb7 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_allocate_mnnz.F90 @@ -0,0 +1,36 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_allocate_mnnz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_allocate_mnnz(m, n, a, nz) + implicit none + integer(psb_ipk_), intent(in) :: m, n + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in), optional :: nz + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act, nz_ + character(len=20) :: name='allocate_mnnz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + if (present(nz)) then + nz_ = nz + else + nz_ = 10 + end if + + call a%psb_z_hll_sparse_mat%allocate(m, n, nz_) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_allocate_mnnz +end submodule psb_z_oacc_hll_allocate_mnnz_impl diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 new file mode 100644 index 00000000..9fb903ca --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_cp_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_cp_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_cp_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_z_hll_sparse_mat%cp_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_hll_cp_from_coo +end submodule psb_z_oacc_hll_cp_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 new file mode 100644 index 00000000..3a77865d --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_cp_from_fmt.F90 @@ -0,0 +1,26 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_cp_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_cp_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%cp_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_z_hll_sparse_mat%cp_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + + end subroutine psb_z_oacc_hll_cp_from_fmt +end submodule psb_z_oacc_hll_cp_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 b/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 new file mode 100644 index 00000000..a5bd54ad --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_inner_vect_sv.F90 @@ -0,0 +1,86 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_inner_vect_sv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + complex(psb_dpk_), allocatable :: rx(:), ry(:) + logical :: tra + character :: trans_ + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'z_oacc_hll_inner_vect_sv' + logical, parameter :: debug = .false. + integer(psb_ipk_) :: i, j, nhacks, hksz + + call psb_get_erraction(err_act) + info = psb_success_ + + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + + if (.not.a%is_asb()) then + info = psb_err_invalid_mat_state_ + call psb_errpush(info, name) + goto 9999 + endif + + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (tra .or. (beta /= dzero)) then + call x%sync() + call y%sync() + call a%psb_z_hll_sparse_mat%inner_spsm(alpha, x, beta, y, info, trans) + call y%set_host() + else + select type (xx => x) + type is (psb_z_vect_oacc) + select type(yy => y) + type is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (beta /= dzero) then + if (yy%is_host()) call yy%sync() + end if + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + !$acc parallel loop present(a, xx, yy) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i+1) - 1 + yy%v(a%irn(j)) = alpha * a%val(j) * xx%v(a%ja(j)) + beta * yy%v(a%irn(j)) + end do + end do + call yy%set_dev() + class default + rx = xx%get_vect() + ry = y%get_vect() + call a%psb_z_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + class default + rx = x%get_vect() + ry = y%get_vect() + call a%psb_z_hll_sparse_mat%inner_spsm(alpha, rx, beta, ry, info) + call y%bld(ry) + end select + endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + call psb_errpush(info, name, a_err = 'hll_vect_sv') + goto 9999 + endif + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + end subroutine psb_z_oacc_hll_inner_vect_sv +end submodule psb_z_oacc_hll_inner_vect_sv_impl diff --git a/openacc/impl/psb_z_oacc_hll_mold.F90 b/openacc/impl/psb_z_oacc_hll_mold.F90 new file mode 100644 index 00000000..f614ad89 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_mold.F90 @@ -0,0 +1,34 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_mold_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_mold(a, b, info) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'hll_mold' + logical, parameter :: debug = .false. + + call psb_get_erraction(err_act) + + info = 0 + if (allocated(b)) then + call b%free() + deallocate(b, stat=info) + end if + if (info == 0) allocate(psb_z_oacc_hll_sparse_mat :: b, stat=info) + + if (info /= psb_success_) then + info = psb_err_alloc_dealloc_ + call psb_errpush(info, name) + goto 9999 + end if + return + +9999 call psb_error_handler(err_act) + + return + + end subroutine psb_z_oacc_hll_mold +end submodule psb_z_oacc_hll_mold_impl diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 new file mode 100644 index 00000000..46d4d6bd --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_mv_from_coo.F90 @@ -0,0 +1,27 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_mv_from_coo_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_mv_from_coo(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + call a%free_dev_space() + call a%psb_z_hll_sparse_mat%mv_from_coo(b, info) + if (info /= 0) goto 9999 + call a%sync_dev_space() + call a%set_host() + call a%sync() + + return + +9999 continue + info = psb_err_alloc_dealloc_ + return + + end subroutine psb_z_oacc_hll_mv_from_coo +end submodule psb_z_oacc_hll_mv_from_coo_impl diff --git a/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 new file mode 100644 index 00000000..45e9846a --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_mv_from_fmt.F90 @@ -0,0 +1,25 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_mv_from_fmt_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_mv_from_fmt(a, b, info) + implicit none + + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + + info = psb_success_ + + select type(b) + type is (psb_z_coo_sparse_mat) + call a%mv_from_coo(b, info) + class default + call a%free_dev_space() + call a%psb_z_hll_sparse_mat%mv_from_fmt(b, info) + if (info /= 0) return + call a%sync_dev_space() + call a%set_host() + call a%sync() + end select + end subroutine psb_z_oacc_hll_mv_from_fmt +end submodule psb_z_oacc_hll_mv_from_fmt_impl diff --git a/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 b/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 new file mode 100644 index 00000000..7d9589cb --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_reallocate_nz.F90 @@ -0,0 +1,29 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_reallocate_nz_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_reallocate_nz(nz, a) + implicit none + integer(psb_ipk_), intent(in) :: nz + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + integer(psb_ipk_) :: err_act + character(len=20) :: name='z_oacc_hll_reallocate_nz' + logical, parameter :: debug=.false. + integer(psb_ipk_) :: hksz, nhacks + + call psb_erractionsave(err_act) + info = psb_success_ + + call a%psb_z_hll_sparse_mat%reallocate(nz) + call a%sync_dev_space() + call a%set_host() + if (info /= 0) goto 9999 + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_reallocate_nz +end submodule psb_z_oacc_hll_reallocate_nz_impl diff --git a/openacc/impl/psb_z_oacc_hll_scal.F90 b/openacc/impl/psb_z_oacc_hll_scal.F90 new file mode 100644 index 00000000..a2f9aee7 --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_scal.F90 @@ -0,0 +1,62 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_scal_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_scal(d, a, info, side) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: side + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + if (present(side)) then + if (side == 'L') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 + a%val(j) = a%val(j) * d(k) + end do + end do + else if (side == 'R') then + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(a%ja(j)) + end do + end do + end if + else + ! $ a parallel loop collapse(2) present(a, d) + !$acc parallel loop present(a, d) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) + end do + end do + end if + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_scal +end submodule psb_z_oacc_hll_scal_impl diff --git a/openacc/impl/psb_z_oacc_hll_scals.F90 b/openacc/impl/psb_z_oacc_hll_scals.F90 new file mode 100644 index 00000000..888115cd --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_scals.F90 @@ -0,0 +1,40 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_scals_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_scals(d, a, info) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: err_act + character(len=20) :: name = 'scal' + integer(psb_ipk_) :: i, j, k, hksz, nzt, nhacks + + info = psb_success_ + call psb_erractionsave(err_act) + + if (a%is_host()) call a%sync() + + hksz = a%hksz + nhacks = (a%get_nrows() + hksz - 1) / hksz + nzt = a%nzt + + ! $ a parallel loop collapse(2) present(a) + !$acc parallel loop present(a) + do i = 1, nhacks + do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 + a%val(j) = a%val(j) * d + end do + end do + + call a%set_dev() + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + return + + end subroutine psb_z_oacc_hll_scals +end submodule psb_z_oacc_hll_scals_impl diff --git a/openacc/impl/psb_z_oacc_hll_vect_mv.F90 b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 new file mode 100644 index 00000000..350592bc --- /dev/null +++ b/openacc/impl/psb_z_oacc_hll_vect_mv.F90 @@ -0,0 +1,90 @@ +submodule (psb_z_oacc_hll_mat_mod) psb_z_oacc_hll_vect_mv_impl + use psb_base_mod +contains + module subroutine psb_z_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + implicit none + + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + + integer(psb_ipk_) :: m, n, nhacks, hksz + character :: trans_ + logical :: device_done, tra + + info = psb_success_ + m = a%get_nrows() + n = a%get_ncols() + nhacks = size(a%hkoffs) - 1 + hksz = a%hksz + + if ((n > size(x%v)) .or. (m > size(y%v))) then + write(0,*) 'Size error ', m, n, size(x%v), size(y%v) + info = psb_err_invalid_mat_state_ + return + end if + device_done = .false. + if (present(trans)) then + trans_ = trans + else + trans_ = 'N' + end if + tra = (psb_toupper(trans_) == 'T') .or. (psb_toupper(trans_) == 'C') + + if (.not.tra) then + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (a%is_host()) call a%sync() + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + call inner_spmv(m, nhacks, hksz, alpha, a%val, a%ja, a%hkoffs, x%v, beta, y%v, info) + call y%set_dev() + device_done = .true. + end select + end select + end if + + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call a%psb_z_hll_sparse_mat%spmm(alpha, x%v, beta, y%v, info, trans) + call y%set_host() + end if + contains + + subroutine inner_spmv(m, nhacks, hksz, alpha, val, ja, hkoffs, x, beta, y, info) + implicit none + integer(psb_ipk_) :: m, nhacks, hksz + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_) :: val(:), x(:), y(:) + integer(psb_ipk_) :: ja(:), hkoffs(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, j, idx, k, ipnt,ir,nr,nlc,isz,ii + complex(psb_dpk_) :: tmp + + info = 0 + !$acc parallel loop private(nlc, isz,ir,nr) + do i = 1, nhacks + isz = hkoffs(i + 1) - hkoffs(i) + nlc = isz/hksz + ir = (i-1)*hksz + nr = min(hksz,m-ir) + !$acc loop independent private(tmp,ii,ipnt) + do ii = 1, nr + ipnt = hkoffs(i) + ii + tmp = zzero + !$acc loop seq + do j = 1, nlc + tmp = tmp + val(ipnt) * x(ja(ipnt)) + ipnt = ipnt + hksz + end do + y(ii+ir) = alpha * tmp + beta * y(ii+ir) + end do + end do + end subroutine inner_spmv + end subroutine psb_z_oacc_hll_vect_mv +end submodule psb_z_oacc_hll_vect_mv_impl diff --git a/openacc/impl/psb_z_oacc_mlt_v.f90 b/openacc/impl/psb_z_oacc_mlt_v.f90 new file mode 100644 index 00000000..3e8f6030 --- /dev/null +++ b/openacc/impl/psb_z_oacc_mlt_v.f90 @@ -0,0 +1,46 @@ + +subroutine psb_z_oacc_mlt_v(x, y, info) + use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v + + implicit none + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, n + + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + info = 0 + n = min(x%get_nrows(), y%get_nrows()) + select type(xx => x) + class is (psb_z_vect_oacc) + if (y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + call z_inner_oacc_mlt_v(n,xx%v, y%v) +!!$ !$acc parallel loop +!!$ do i = 1, n +!!$ y%v(i) = y%v(i) * xx%v(i) +!!$ end do + call y%set_dev() + class default + if (xx%is_dev()) call xx%sync() + if (y%is_dev()) call y%sync() + do i = 1, n + y%v(i) = y%v(i) * xx%v(i) + end do + call y%set_host() + end select +contains + subroutine z_inner_oacc_mlt_v(n,x, y) + implicit none + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_), intent(inout) :: x(:), y(:) + + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = (x(i)) * (y(i)) + end do + end subroutine z_inner_oacc_mlt_v +end subroutine psb_z_oacc_mlt_v diff --git a/openacc/impl/psb_z_oacc_mlt_v_2.f90 b/openacc/impl/psb_z_oacc_mlt_v_2.f90 new file mode 100644 index 00000000..c13b348c --- /dev/null +++ b/openacc/impl/psb_z_oacc_mlt_v_2.f90 @@ -0,0 +1,91 @@ +subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + use psb_z_oacc_vect_mod, psb_protect_name => psb_z_oacc_mlt_v_2 + use psb_string_mod + implicit none + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + class(psb_z_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + integer(psb_ipk_) :: i, n + logical :: conjgx_, conjgy_, device_done + + conjgx_ = .false. + conjgy_ = .false. + device_done = .false. + if (present(conjgx)) conjgx_ = (psb_toupper(conjgx) == 'C') + if (present(conjgy)) conjgy_ = (psb_toupper(conjgy) == 'C') + + n = min(x%get_nrows(), y%get_nrows(), z%get_nrows()) + info = 0 + select type(xx => x) + class is (psb_z_vect_oacc) + select type (yy => y) + class is (psb_z_vect_oacc) + if (xx%is_host()) call xx%sync() + if (yy%is_host()) call yy%sync() + if ((beta /= zzero) .and. (z%is_host())) call z%sync() + call z_inner_oacc_mlt_v_2(n,alpha, xx%v, yy%v, beta, z%v, info, conjgx_, conjgy_) + call z%set_dev() + device_done = .true. + end select + end select + if (.not.device_done) then + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + if ((beta /= zzero) .and. (z%is_dev())) call z%sync() + if (conjgx_.and.conjgy_) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else if (conjgx_.and.(.not.conjgy_)) then + do i = 1, n + z%v(i) = alpha * conjg(x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + else if ((.not.conjgx_).and.(conjgy_)) then + do i = 1, n + z%v(i) = alpha * (x%v(i)) * conjg(y%v(i)) + beta * z%v(i) + end do + else + do i = 1, n + z%v(i) = alpha * (x%v(i)) * (y%v(i)) + beta * z%v(i) + end do + end if + call z%set_host() + end if + +contains + subroutine z_inner_oacc_mlt_v_2(n,alpha, x, y, beta, z, info, conjgx, conjgy) + implicit none + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(inout) :: x(:), y(:), z(:) + integer(psb_ipk_), intent(out) :: info + logical, intent(in) :: conjgx, conjgy + + integer(psb_ipk_) :: i + if (conjgx.and.conjgy) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * conjg(y(i)) + beta * z(i) + end do + else if (conjgx.and.(.not.conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * conjg(x(i)) * (y(i)) + beta * z(i) + end do + else if ((.not.conjgx).and.(conjgy)) then + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * conjg(y(i)) + beta * z(i) + end do + else + !$acc parallel loop present(x,y,z) + do i = 1, n + z(i) = alpha * (x(i)) * (y(i)) + beta * z(i) + end do + end if + end subroutine z_inner_oacc_mlt_v_2 +end subroutine psb_z_oacc_mlt_v_2 + diff --git a/openacc/psb_c_oacc_csr_mat_mod.F90 b/openacc/psb_c_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..c6461fe3 --- /dev/null +++ b/openacc/psb_c_oacc_csr_mat_mod.F90 @@ -0,0 +1,290 @@ +module psb_c_oacc_csr_mat_mod + + use iso_c_binding + use openacc + use psb_c_mat_mod + use psb_c_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_csr_sparse_mat) :: psb_c_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => c_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => c_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_c_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_csr_inner_vect_sv + procedure, pass(a) :: scals => psb_c_oacc_csr_scals + procedure, pass(a) :: scalv => psb_c_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => c_oacc_csr_free + procedure, pass(a) :: mold => psb_c_oacc_csr_mold + procedure, pass(a) :: all => c_oacc_csr_all + procedure, pass(a) :: is_host => c_oacc_csr_is_host + procedure, pass(a) :: is_sync => c_oacc_csr_is_sync + procedure, pass(a) :: is_dev => c_oacc_csr_is_dev + procedure, pass(a) :: set_host => c_oacc_csr_set_host + procedure, pass(a) :: set_sync => c_oacc_csr_set_sync + procedure, pass(a) :: set_dev => c_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => c_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => c_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => c_oacc_csr_sync + end type psb_c_oacc_csr_sparse_mat + + interface + module subroutine psb_c_oacc_csr_mold(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_mold + end interface + + interface + module subroutine psb_c_oacc_csr_cp_from_fmt(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_c_oacc_csr_mv_from_coo(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_c_oacc_csr_mv_from_fmt(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_c_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_c_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_c_oacc_csr_scals(d, a, info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_scals + end interface + + interface + module subroutine psb_c_oacc_csr_scal(d,a,info,side) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_c_oacc_csr_scal + end interface + + interface + module subroutine psb_c_oacc_csr_reallocate_nz(nz,a) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_c_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_c_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_c_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_c_oacc_csr_cp_from_coo(a,b,info) + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine c_oacc_csr_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) + + return + end subroutine c_oacc_csr_free_dev_space + + subroutine c_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_c_csr_sparse_mat%free() + + return + end subroutine c_oacc_csr_free + + function c_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + (2*psb_sizeof_sp) * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function c_oacc_csr_sizeof + + + function c_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSROA' + end function c_oacc_csr_get_fmt + + subroutine c_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_c_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + call a%free() + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_dev_space() + end subroutine c_oacc_csr_all + + function c_oacc_csr_is_host(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function c_oacc_csr_is_host + + function c_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function c_oacc_csr_is_sync + + function c_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function c_oacc_csr_is_dev + + subroutine c_oacc_csr_set_host(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine c_oacc_csr_set_host + + subroutine c_oacc_csr_set_sync(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine c_oacc_csr_set_sync + + subroutine c_oacc_csr_set_dev(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine c_oacc_csr_set_dev + + subroutine c_oacc_csr_sync_dev_space(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) + end subroutine c_oacc_csr_sync_dev_space + + subroutine c_oacc_csr_sync(a) + implicit none + class(psb_c_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_c_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) + end if + call tmpa%set_sync() + end subroutine c_oacc_csr_sync + +end module psb_c_oacc_csr_mat_mod + diff --git a/openacc/psb_c_oacc_ell_mat_mod.F90 b/openacc/psb_c_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..b2168646 --- /dev/null +++ b/openacc/psb_c_oacc_ell_mat_mod.F90 @@ -0,0 +1,272 @@ +module psb_c_oacc_ell_mat_mod + use iso_c_binding + use openacc + use psb_c_mat_mod + use psb_c_ell_mat_mod + use psb_c_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_ell_sparse_mat) :: psb_c_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => c_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => c_oacc_ell_sizeof + procedure, pass(a) :: is_host => c_oacc_ell_is_host + procedure, pass(a) :: is_sync => c_oacc_ell_is_sync + procedure, pass(a) :: is_dev => c_oacc_ell_is_dev + procedure, pass(a) :: set_host => c_oacc_ell_set_host + procedure, pass(a) :: set_sync => c_oacc_ell_set_sync + procedure, pass(a) :: set_dev => c_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => c_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => c_oacc_ell_sync + procedure, pass(a) :: free_dev_space => c_oacc_ell_free_dev_space + procedure, pass(a) :: free => c_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_c_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_ell_inner_vect_sv + procedure, pass(a) :: scals => psb_c_oacc_ell_scals + procedure, pass(a) :: scalv => psb_c_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_c_oacc_ell_mold + + end type psb_c_oacc_ell_sparse_mat + + interface + module subroutine psb_c_oacc_ell_mold(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_mold + end interface + + interface + module subroutine psb_c_oacc_ell_cp_from_fmt(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_c_oacc_ell_mv_from_coo(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_c_oacc_ell_mv_from_fmt(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_c_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_c_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_c_oacc_ell_scals(d, a, info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_scals + end interface + + interface + module subroutine psb_c_oacc_ell_scal(d,a,info,side) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_c_oacc_ell_scal + end interface + + interface + module subroutine psb_c_oacc_ell_reallocate_nz(nz,a) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_c_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_c_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_c_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_c_oacc_ell_cp_from_coo(a,b,info) + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_ell_cp_from_coo + end interface + +contains + + subroutine c_oacc_ell_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + return + end subroutine c_oacc_ell_free_dev_space + + subroutine c_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_c_ell_sparse_mat%free() + + return + end subroutine c_oacc_ell_free + + function c_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function c_oacc_ell_sizeof + + subroutine c_oacc_ell_sync_dev_space(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + end subroutine c_oacc_ell_sync_dev_space + + function c_oacc_ell_is_host(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function c_oacc_ell_is_host + + function c_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function c_oacc_ell_is_sync + + function c_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function c_oacc_ell_is_dev + + subroutine c_oacc_ell_set_host(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine c_oacc_ell_set_host + + subroutine c_oacc_ell_set_sync(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine c_oacc_ell_set_sync + + subroutine c_oacc_ell_set_dev(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine c_oacc_ell_set_dev + + function c_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELLOA' + end function c_oacc_ell_get_fmt + + subroutine c_oacc_ell_sync(a) + implicit none + class(psb_c_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_c_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + end if + call tmpa%set_sync() + end subroutine c_oacc_ell_sync + +end module psb_c_oacc_ell_mat_mod diff --git a/openacc/psb_c_oacc_hll_mat_mod.F90 b/openacc/psb_c_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..f8c19275 --- /dev/null +++ b/openacc/psb_c_oacc_hll_mat_mod.F90 @@ -0,0 +1,279 @@ +module psb_c_oacc_hll_mat_mod + use iso_c_binding + use openacc + use psb_c_mat_mod + use psb_c_hll_mat_mod + use psb_c_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_hll_sparse_mat) :: psb_c_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => c_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => c_oacc_hll_sizeof + procedure, pass(a) :: is_host => c_oacc_hll_is_host + procedure, pass(a) :: is_sync => c_oacc_hll_is_sync + procedure, pass(a) :: is_dev => c_oacc_hll_is_dev + procedure, pass(a) :: set_host => c_oacc_hll_set_host + procedure, pass(a) :: set_sync => c_oacc_hll_set_sync + procedure, pass(a) :: set_dev => c_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => c_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => c_oacc_hll_sync + procedure, pass(a) :: free_dev_space => c_oacc_hll_free_dev_space + procedure, pass(a) :: free => c_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_c_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_c_oacc_hll_inner_vect_sv + procedure, pass(a) :: scals => psb_c_oacc_hll_scals + procedure, pass(a) :: scalv => psb_c_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_c_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_c_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_c_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_c_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_c_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_c_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_c_oacc_hll_mold + + end type psb_c_oacc_hll_sparse_mat + + interface + module subroutine psb_c_oacc_hll_mold(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + class(psb_c_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_mold + end interface + + interface + module subroutine psb_c_oacc_hll_cp_from_fmt(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_c_oacc_hll_mv_from_coo(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_c_oacc_hll_mv_from_fmt(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_c_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_c_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_c_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_c_oacc_hll_scals(d, a, info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_scals + end interface + + interface + module subroutine psb_c_oacc_hll_scal(d,a,info,side) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_c_oacc_hll_scal + end interface + + interface + module subroutine psb_c_oacc_hll_reallocate_nz(nz,a) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_c_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_c_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_c_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_c_oacc_hll_cp_from_coo(a,b,info) + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_c_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_hll_cp_from_coo + end interface + +contains + + subroutine c_oacc_hll_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) + return + end subroutine c_oacc_hll_free_dev_space + + subroutine c_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_c_hll_sparse_mat%free() + + return + end subroutine c_oacc_hll_free + + function c_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function c_oacc_hll_sizeof + + + + function c_oacc_hll_is_host(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function c_oacc_hll_is_host + + function c_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function c_oacc_hll_is_sync + + function c_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function c_oacc_hll_is_dev + + subroutine c_oacc_hll_set_host(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine c_oacc_hll_set_host + + subroutine c_oacc_hll_set_sync(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine c_oacc_hll_set_sync + + subroutine c_oacc_hll_set_dev(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine c_oacc_hll_set_dev + + function c_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLLOA' + end function c_oacc_hll_get_fmt + + subroutine c_oacc_hll_sync_dev_space(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) + end subroutine c_oacc_hll_sync_dev_space + + + subroutine c_oacc_hll_sync(a) + implicit none + class(psb_c_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_c_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine c_oacc_hll_sync + +end module psb_c_oacc_hll_mat_mod diff --git a/openacc/psb_c_oacc_vect_mod.F90 b/openacc/psb_c_oacc_vect_mod.F90 new file mode 100644 index 00000000..067c571b --- /dev/null +++ b/openacc/psb_c_oacc_vect_mod.F90 @@ -0,0 +1,1004 @@ +module psb_c_oacc_vect_mod + use iso_c_binding + use openacc + use psb_const_mod + use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod + use psb_c_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_c_base_vect_type) :: psb_c_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => c_oacc_get_nrows + procedure, nopass :: get_fmt => c_oacc_get_fmt + + procedure, pass(x) :: all => c_oacc_vect_all + procedure, pass(x) :: zero => c_oacc_zero + procedure, pass(x) :: asb_m => c_oacc_asb_m + procedure, pass(x) :: sync => c_oacc_sync + procedure, pass(x) :: sync_dev_space => c_oacc_sync_dev_space + procedure, pass(x) :: bld_x => c_oacc_bld_x + procedure, pass(x) :: bld_mn => c_oacc_bld_mn + procedure, pass(x) :: free => c_oacc_vect_free + procedure, pass(x) :: free_buffer => c_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => c_oacc_vect_maybe_free_buffer + procedure, pass(x) :: ins_a => c_oacc_ins_a + procedure, pass(x) :: ins_v => c_oacc_ins_v + procedure, pass(x) :: is_host => c_oacc_is_host + procedure, pass(x) :: is_dev => c_oacc_is_dev + procedure, pass(x) :: is_sync => c_oacc_is_sync + procedure, pass(x) :: set_host => c_oacc_set_host + procedure, pass(x) :: set_dev => c_oacc_set_dev + procedure, pass(x) :: set_sync => c_oacc_set_sync + procedure, pass(x) :: set_scal => c_oacc_set_scal + + procedure, pass(x) :: new_buffer => c_oacc_new_buffer + procedure, pass(x) :: gthzv_x => c_oacc_gthzv_x + procedure, pass(x) :: gthzbuf => c_oacc_gthzbuf + procedure, pass(y) :: sctb => c_oacc_sctb + procedure, pass(y) :: sctb_x => c_oacc_sctb_x + procedure, pass(y) :: sctb_buf => c_oacc_sctb_buf + procedure, nopass :: device_wait => c_oacc_device_wait + + procedure, pass(x) :: get_size => c_oacc_get_size + + procedure, pass(x) :: dot_v => c_oacc_vect_dot + procedure, pass(x) :: dot_a => c_oacc_dot_a + procedure, pass(y) :: axpby_v => c_oacc_axpby_v + procedure, pass(y) :: axpby_a => c_oacc_axpby_a + procedure, pass(z) :: upd_xyz => c_oacc_upd_xyz + procedure, pass(y) :: mlt_a => c_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => c_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_c_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_c_oacc_mlt_v_2 + procedure, pass(x) :: scal => c_oacc_scal + procedure, pass(x) :: nrm2 => c_oacc_nrm2 + procedure, pass(x) :: amax => c_oacc_amax + procedure, pass(x) :: asum => c_oacc_asum + procedure, pass(x) :: absval1 => c_oacc_absval1 + procedure, pass(x) :: absval2 => c_oacc_absval2 + final :: c_oacc_final_vect_free + end type psb_c_vect_oacc + + interface + subroutine psb_c_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine psb_c_oacc_mlt_v + end interface + + interface + subroutine psb_c_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + complex(psb_spk_), intent(in) :: alpha, beta + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + class(psb_c_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine psb_c_oacc_mlt_v_2 + end interface + +contains + + subroutine c_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine c_oacc_device_wait + + subroutine c_oacc_absval1(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n + + if (x%is_host()) call x%sync() + n = size(x%v) + call c_inner_oacc_absval1(n,x%v) + call x%set_dev() + contains + subroutine c_inner_oacc_absval1(n,x) + implicit none + complex(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine c_inner_oacc_absval1 + end subroutine c_oacc_absval1 + + subroutine c_oacc_absval2(x, y) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_c_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + call c_inner_oacc_absval2(n,x%v,yy%v) + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_c_base_vect_type%absval(y) + end select + contains + subroutine c_inner_oacc_absval2(n,x,y) + implicit none + complex(psb_spk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine c_inner_oacc_absval2 + end subroutine c_oacc_absval2 + + subroutine c_oacc_scal(alpha, x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + complex(psb_spk_), intent(in) :: alpha + integer(psb_ipk_) :: info + if (x%is_host()) call x%sync() + call c_inner_oacc_scal(alpha, x%v) + call x%set_dev() + contains + subroutine c_inner_oacc_scal(alpha, x) + complex(psb_spk_), intent(in) :: alpha + complex(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine c_inner_oacc_scal + end subroutine c_oacc_scal + + function c_oacc_nrm2(n, x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() +!!$ write(0,*)'oacc_nrm2' + res = c_inner_oacc_nrm2(n, x%v) + contains + function c_inner_oacc_nrm2(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_spk_) :: x(:) + real(psb_spk_) :: res + real(psb_spk_) :: sum, mx + integer(psb_ipk_) :: i + mx = szero + !$acc parallel loop reduction(max:mx) present(x) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + if (mx == szero) then + res = mx + else + sum = szero + !$acc parallel loop reduction(+:sum) present(x) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if + end function c_inner_oacc_nrm2 + end function c_oacc_nrm2 + + function c_oacc_amax(n, x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() + res = c_inner_oacc_amax(n, x%v) + contains + function c_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_spk_) :: x(:) + real(psb_spk_) :: res + real(psb_spk_) :: max_val + integer(psb_ipk_) :: i + max_val = szero + !$acc parallel loop reduction(max:max_val) present(x) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function c_inner_oacc_amax + end function c_oacc_amax + + function c_oacc_asum(n, x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + complex(psb_spk_) :: sum + integer(psb_ipk_) :: i + if (x%is_host()) call x%sync() + res = c_inner_oacc_asum(n, x%v) + contains + function c_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_spk_) :: x(:) + real(psb_spk_) :: res + integer(psb_ipk_) :: i + res = szero + !$acc parallel loop reduction(+:res) present(x) + do i = 1, n + res = res + abs(x(i)) + end do + end function c_inner_oacc_asum + end function c_oacc_asum + + + subroutine c_oacc_mlt_a(x, y, info) + implicit none + complex(psb_spk_), intent(in) :: x(:) + class(psb_c_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync() + !$acc parallel loop present(x,y) + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine c_oacc_mlt_a + + subroutine c_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + complex(psb_spk_), intent(in) :: alpha, beta + complex(psb_spk_), intent(in) :: x(:) + complex(psb_spk_), intent(in) :: y(:) + class(psb_c_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync() + !$acc parallel loop present(x,y,z%v) + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine c_oacc_mlt_a_2 + + subroutine c_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_vect_oacc), intent(inout) :: y + complex(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_c_vect_oacc) + if ((beta /= czero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + call c_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) + end if + call y%set_dev() + class default + if ((alpha /= czero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + contains + subroutine c_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_spk_), intent(inout) :: x(:) + complex(psb_spk_), intent(inout) :: y(:) + complex(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel present(x,y) + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine c_inner_oacc_axpby + end subroutine c_oacc_axpby_v + + subroutine c_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_spk_), intent(in) :: x(:) + class(psb_c_vect_oacc), intent(inout) :: y + complex(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= czero) .and. (y%is_dev())) call y%sync() + + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine c_oacc_axpby_a + + subroutine c_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_c_base_vect_type), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + class(psb_c_vect_oacc), intent(inout) :: z + complex(psb_spk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_c_vect_oacc) + select type(yy => y) + class is (psb_c_vect_oacc) + select type(zz => z) + class is (psb_c_vect_oacc) + if ((beta /= czero) .and. yy%is_host()) call yy%sync() + if ((delta /= czero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop present(xx%v,yy%v,zz%v) + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine c_oacc_upd_xyz + + subroutine c_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_spk_) :: beta + class(psb_c_vect_oacc) :: y + integer(psb_ipk_) :: info, k + logical :: acc_done + if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) + end do + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine c_oacc_sctb_buf + + subroutine c_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_spk_) :: beta, x(:) + class(psb_c_vect_oacc) :: y + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if + end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine c_oacc_sctb_x + + subroutine c_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + complex(psb_spk_) :: beta, x(:) + class(psb_c_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync() + + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine c_oacc_sctb + + subroutine c_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_c_vect_oacc) :: x + integer(psb_ipk_) :: info,k + logical :: acc_done + + info = 0 + acc_done = .false. + + if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if + + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine c_oacc_gthzbuf + + subroutine c_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + complex(psb_spk_) :: y(:) + class(psb_c_vect_oacc):: x + integer(psb_ipk_) :: info, k + logical :: acc_done + + info = 0 + acc_done = .false. + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if + end select + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine c_oacc_gthzv_x + + subroutine c_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_c_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_c_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + !$acc parallel loop present(x%v,virl%v,vval%v) + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync() + end select + select type(vval => val) + type is (psb_c_vect_oacc) + if (vval%is_dev()) call vval%sync() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine c_oacc_ins_v + + subroutine c_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + complex(psb_spk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_c_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + + + end subroutine c_oacc_ins_a + + subroutine c_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'c_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + + end subroutine c_oacc_bld_mn + + + subroutine c_oacc_bld_x(x, this) + use psb_base_mod + implicit none + complex(psb_spk_), intent(in) :: this(:) + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'c_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + x%v(:) = this(:) + call x%set_host() + call x%sync_dev_space() + + end subroutine c_oacc_bld_x + + subroutine c_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_c_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_c_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + end if + end subroutine c_oacc_asb_m + + subroutine c_oacc_set_scal(x, val, first, last) + class(psb_c_vect_oacc), intent(inout) :: x + complex(psb_spk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop present(x%v) + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine c_oacc_set_scal + + subroutine c_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(czero) + end subroutine c_oacc_zero + + function c_oacc_get_nrows(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function c_oacc_get_nrows + + function c_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "cOACC" + + end function c_oacc_get_fmt + + + function c_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + class(psb_c_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_) :: res + integer(psb_ipk_) :: info + + res = czero +!!$ write(0,*) 'oacc_dot_v' + select type(yy => y) + type is (psb_c_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + res = c_inner_oacc_dot(n, x%v, yy%v) + class default + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) + end select + contains + function c_inner_oacc_dot(n, x, y) result(res) + implicit none + complex(psb_spk_), intent(in) :: x(:) + complex(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function c_inner_oacc_dot + end function c_oacc_vect_dot + + function c_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + complex(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_spk_) :: res + complex(psb_spk_), external :: cdot + + if (x%is_dev()) call x%sync() + res = cdot(n, y, 1, x%v, 1) + + end function c_oacc_dot_a + + + subroutine c_oacc_new_buffer(n,x,info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if + call x%psb_c_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) + end if + end subroutine c_oacc_new_buffer + + subroutine c_oacc_sync_dev_space(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) + end subroutine c_oacc_sync_dev_space + + subroutine c_oacc_sync(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + if (psb_size(x%v)>0) call acc_update_self(x%v) + end if + if (x%is_host()) then + if (.not.acc_is_present(x%v)) call c_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) + end if + call x%set_sync() + end subroutine c_oacc_sync + + subroutine c_oacc_set_host(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine c_oacc_set_host + + subroutine c_oacc_set_dev(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine c_oacc_set_dev + + subroutine c_oacc_set_sync(x) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine c_oacc_set_sync + + function c_oacc_is_dev(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function c_oacc_is_dev + + function c_oacc_is_host(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function c_oacc_is_host + + function c_oacc_is_sync(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function c_oacc_is_sync + + subroutine c_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_c_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'c_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + end subroutine c_oacc_vect_all + + subroutine c_oacc_final_vect_free(x) + implicit none + type(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine c_oacc_final_vect_free + + subroutine c_oacc_vect_free(x, info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + call x%psb_c_base_vect_type%free(info) + end subroutine c_oacc_vect_free + + subroutine c_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if + + end subroutine c_oacc_vect_maybe_free_buffer + + subroutine c_oacc_vect_free_buffer(x,info) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info +! write(0,*) 'oacc free_buffer' + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_c_base_vect_type%free_buffer(info) + + end subroutine c_oacc_vect_free_buffer + + function c_oacc_get_size(x) result(res) + implicit none + class(psb_c_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + res = size(x%v) + end function c_oacc_get_size + +end module psb_c_oacc_vect_mod diff --git a/openacc/psb_d_oacc_csr_mat_mod.F90 b/openacc/psb_d_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..21907312 --- /dev/null +++ b/openacc/psb_d_oacc_csr_mat_mod.F90 @@ -0,0 +1,290 @@ +module psb_d_oacc_csr_mat_mod + + use iso_c_binding + use openacc + use psb_d_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_csr_sparse_mat) :: psb_d_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => d_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_d_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_csr_inner_vect_sv + procedure, pass(a) :: scals => psb_d_oacc_csr_scals + procedure, pass(a) :: scalv => psb_d_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => d_oacc_csr_free + procedure, pass(a) :: mold => psb_d_oacc_csr_mold + procedure, pass(a) :: all => d_oacc_csr_all + procedure, pass(a) :: is_host => d_oacc_csr_is_host + procedure, pass(a) :: is_sync => d_oacc_csr_is_sync + procedure, pass(a) :: is_dev => d_oacc_csr_is_dev + procedure, pass(a) :: set_host => d_oacc_csr_set_host + procedure, pass(a) :: set_sync => d_oacc_csr_set_sync + procedure, pass(a) :: set_dev => d_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => d_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => d_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => d_oacc_csr_sync + end type psb_d_oacc_csr_sparse_mat + + interface + module subroutine psb_d_oacc_csr_mold(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mold + end interface + + interface + module subroutine psb_d_oacc_csr_cp_from_fmt(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_csr_mv_from_coo(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_csr_mv_from_fmt(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_d_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_csr_scals(d, a, info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_scals + end interface + + interface + module subroutine psb_d_oacc_csr_scal(d,a,info,side) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_csr_scal + end interface + + interface + module subroutine psb_d_oacc_csr_reallocate_nz(nz,a) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_csr_cp_from_coo(a,b,info) + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine d_oacc_csr_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) + + return + end subroutine d_oacc_csr_free_dev_space + + subroutine d_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_d_csr_sparse_mat%free() + + return + end subroutine d_oacc_csr_free + + function d_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function d_oacc_csr_sizeof + + + function d_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSROA' + end function d_oacc_csr_get_fmt + + subroutine d_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_d_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + call a%free() + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_dev_space() + end subroutine d_oacc_csr_all + + function d_oacc_csr_is_host(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_csr_is_host + + function d_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_csr_is_sync + + function d_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_csr_is_dev + + subroutine d_oacc_csr_set_host(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_csr_set_host + + subroutine d_oacc_csr_set_sync(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_csr_set_sync + + subroutine d_oacc_csr_set_dev(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_csr_set_dev + + subroutine d_oacc_csr_sync_dev_space(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) + end subroutine d_oacc_csr_sync_dev_space + + subroutine d_oacc_csr_sync(a) + implicit none + class(psb_d_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) + end if + call tmpa%set_sync() + end subroutine d_oacc_csr_sync + +end module psb_d_oacc_csr_mat_mod + diff --git a/openacc/psb_d_oacc_ell_mat_mod.F90 b/openacc/psb_d_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..021face3 --- /dev/null +++ b/openacc/psb_d_oacc_ell_mat_mod.F90 @@ -0,0 +1,272 @@ +module psb_d_oacc_ell_mat_mod + use iso_c_binding + use openacc + use psb_d_mat_mod + use psb_d_ell_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_ell_sparse_mat) :: psb_d_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => d_oacc_ell_sizeof + procedure, pass(a) :: is_host => d_oacc_ell_is_host + procedure, pass(a) :: is_sync => d_oacc_ell_is_sync + procedure, pass(a) :: is_dev => d_oacc_ell_is_dev + procedure, pass(a) :: set_host => d_oacc_ell_set_host + procedure, pass(a) :: set_sync => d_oacc_ell_set_sync + procedure, pass(a) :: set_dev => d_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => d_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => d_oacc_ell_sync + procedure, pass(a) :: free_dev_space => d_oacc_ell_free_dev_space + procedure, pass(a) :: free => d_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_d_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_ell_inner_vect_sv + procedure, pass(a) :: scals => psb_d_oacc_ell_scals + procedure, pass(a) :: scalv => psb_d_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_ell_mold + + end type psb_d_oacc_ell_sparse_mat + + interface + module subroutine psb_d_oacc_ell_mold(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mold + end interface + + interface + module subroutine psb_d_oacc_ell_cp_from_fmt(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_ell_mv_from_coo(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_ell_mv_from_fmt(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_d_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_ell_scals(d, a, info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_scals + end interface + + interface + module subroutine psb_d_oacc_ell_scal(d,a,info,side) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_ell_scal + end interface + + interface + module subroutine psb_d_oacc_ell_reallocate_nz(nz,a) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_ell_cp_from_coo(a,b,info) + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_ell_cp_from_coo + end interface + +contains + + subroutine d_oacc_ell_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + return + end subroutine d_oacc_ell_free_dev_space + + subroutine d_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_d_ell_sparse_mat%free() + + return + end subroutine d_oacc_ell_free + + function d_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function d_oacc_ell_sizeof + + subroutine d_oacc_ell_sync_dev_space(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + end subroutine d_oacc_ell_sync_dev_space + + function d_oacc_ell_is_host(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_ell_is_host + + function d_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_ell_is_sync + + function d_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_ell_is_dev + + subroutine d_oacc_ell_set_host(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_ell_set_host + + subroutine d_oacc_ell_set_sync(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_ell_set_sync + + subroutine d_oacc_ell_set_dev(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_ell_set_dev + + function d_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELLOA' + end function d_oacc_ell_get_fmt + + subroutine d_oacc_ell_sync(a) + implicit none + class(psb_d_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + end if + call tmpa%set_sync() + end subroutine d_oacc_ell_sync + +end module psb_d_oacc_ell_mat_mod diff --git a/openacc/psb_d_oacc_hll_mat_mod.F90 b/openacc/psb_d_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..264bbcce --- /dev/null +++ b/openacc/psb_d_oacc_hll_mat_mod.F90 @@ -0,0 +1,279 @@ +module psb_d_oacc_hll_mat_mod + use iso_c_binding + use openacc + use psb_d_mat_mod + use psb_d_hll_mat_mod + use psb_d_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_hll_sparse_mat) :: psb_d_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => d_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => d_oacc_hll_sizeof + procedure, pass(a) :: is_host => d_oacc_hll_is_host + procedure, pass(a) :: is_sync => d_oacc_hll_is_sync + procedure, pass(a) :: is_dev => d_oacc_hll_is_dev + procedure, pass(a) :: set_host => d_oacc_hll_set_host + procedure, pass(a) :: set_sync => d_oacc_hll_set_sync + procedure, pass(a) :: set_dev => d_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => d_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => d_oacc_hll_sync + procedure, pass(a) :: free_dev_space => d_oacc_hll_free_dev_space + procedure, pass(a) :: free => d_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_d_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_d_oacc_hll_inner_vect_sv + procedure, pass(a) :: scals => psb_d_oacc_hll_scals + procedure, pass(a) :: scalv => psb_d_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_d_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_d_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_d_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_d_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_d_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_d_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_d_oacc_hll_mold + + end type psb_d_oacc_hll_sparse_mat + + interface + module subroutine psb_d_oacc_hll_mold(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + class(psb_d_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mold + end interface + + interface + module subroutine psb_d_oacc_hll_cp_from_fmt(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_d_oacc_hll_mv_from_coo(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_d_oacc_hll_mv_from_fmt(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_d_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_d_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_d_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_d_oacc_hll_scals(d, a, info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_scals + end interface + + interface + module subroutine psb_d_oacc_hll_scal(d,a,info,side) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_d_oacc_hll_scal + end interface + + interface + module subroutine psb_d_oacc_hll_reallocate_nz(nz,a) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_d_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_d_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_d_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_d_oacc_hll_cp_from_coo(a,b,info) + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_d_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_hll_cp_from_coo + end interface + +contains + + subroutine d_oacc_hll_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) + return + end subroutine d_oacc_hll_free_dev_space + + subroutine d_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_d_hll_sparse_mat%free() + + return + end subroutine d_oacc_hll_free + + function d_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function d_oacc_hll_sizeof + + + + function d_oacc_hll_is_host(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function d_oacc_hll_is_host + + function d_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function d_oacc_hll_is_sync + + function d_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function d_oacc_hll_is_dev + + subroutine d_oacc_hll_set_host(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine d_oacc_hll_set_host + + subroutine d_oacc_hll_set_sync(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine d_oacc_hll_set_sync + + subroutine d_oacc_hll_set_dev(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine d_oacc_hll_set_dev + + function d_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLLOA' + end function d_oacc_hll_get_fmt + + subroutine d_oacc_hll_sync_dev_space(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) + end subroutine d_oacc_hll_sync_dev_space + + + subroutine d_oacc_hll_sync(a) + implicit none + class(psb_d_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_d_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine d_oacc_hll_sync + +end module psb_d_oacc_hll_mat_mod diff --git a/openacc/psb_d_oacc_vect_mod.F90 b/openacc/psb_d_oacc_vect_mod.F90 new file mode 100644 index 00000000..929066ae --- /dev/null +++ b/openacc/psb_d_oacc_vect_mod.F90 @@ -0,0 +1,1004 @@ +module psb_d_oacc_vect_mod + use iso_c_binding + use openacc + use psb_const_mod + use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod + use psb_d_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_d_base_vect_type) :: psb_d_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => d_oacc_get_nrows + procedure, nopass :: get_fmt => d_oacc_get_fmt + + procedure, pass(x) :: all => d_oacc_vect_all + procedure, pass(x) :: zero => d_oacc_zero + procedure, pass(x) :: asb_m => d_oacc_asb_m + procedure, pass(x) :: sync => d_oacc_sync + procedure, pass(x) :: sync_dev_space => d_oacc_sync_dev_space + procedure, pass(x) :: bld_x => d_oacc_bld_x + procedure, pass(x) :: bld_mn => d_oacc_bld_mn + procedure, pass(x) :: free => d_oacc_vect_free + procedure, pass(x) :: free_buffer => d_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => d_oacc_vect_maybe_free_buffer + procedure, pass(x) :: ins_a => d_oacc_ins_a + procedure, pass(x) :: ins_v => d_oacc_ins_v + procedure, pass(x) :: is_host => d_oacc_is_host + procedure, pass(x) :: is_dev => d_oacc_is_dev + procedure, pass(x) :: is_sync => d_oacc_is_sync + procedure, pass(x) :: set_host => d_oacc_set_host + procedure, pass(x) :: set_dev => d_oacc_set_dev + procedure, pass(x) :: set_sync => d_oacc_set_sync + procedure, pass(x) :: set_scal => d_oacc_set_scal + + procedure, pass(x) :: new_buffer => d_oacc_new_buffer + procedure, pass(x) :: gthzv_x => d_oacc_gthzv_x + procedure, pass(x) :: gthzbuf => d_oacc_gthzbuf + procedure, pass(y) :: sctb => d_oacc_sctb + procedure, pass(y) :: sctb_x => d_oacc_sctb_x + procedure, pass(y) :: sctb_buf => d_oacc_sctb_buf + procedure, nopass :: device_wait => d_oacc_device_wait + + procedure, pass(x) :: get_size => d_oacc_get_size + + procedure, pass(x) :: dot_v => d_oacc_vect_dot + procedure, pass(x) :: dot_a => d_oacc_dot_a + procedure, pass(y) :: axpby_v => d_oacc_axpby_v + procedure, pass(y) :: axpby_a => d_oacc_axpby_a + procedure, pass(z) :: upd_xyz => d_oacc_upd_xyz + procedure, pass(y) :: mlt_a => d_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => d_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_d_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_d_oacc_mlt_v_2 + procedure, pass(x) :: scal => d_oacc_scal + procedure, pass(x) :: nrm2 => d_oacc_nrm2 + procedure, pass(x) :: amax => d_oacc_amax + procedure, pass(x) :: asum => d_oacc_asum + procedure, pass(x) :: absval1 => d_oacc_absval1 + procedure, pass(x) :: absval2 => d_oacc_absval2 + final :: d_oacc_final_vect_free + end type psb_d_vect_oacc + + interface + subroutine psb_d_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine psb_d_oacc_mlt_v + end interface + + interface + subroutine psb_d_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine psb_d_oacc_mlt_v_2 + end interface + +contains + + subroutine d_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine d_oacc_device_wait + + subroutine d_oacc_absval1(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n + + if (x%is_host()) call x%sync() + n = size(x%v) + call d_inner_oacc_absval1(n,x%v) + call x%set_dev() + contains + subroutine d_inner_oacc_absval1(n,x) + implicit none + real(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine d_inner_oacc_absval1 + end subroutine d_oacc_absval1 + + subroutine d_oacc_absval2(x, y) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_d_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + call d_inner_oacc_absval2(n,x%v,yy%v) + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_d_base_vect_type%absval(y) + end select + contains + subroutine d_inner_oacc_absval2(n,x,y) + implicit none + real(psb_dpk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine d_inner_oacc_absval2 + end subroutine d_oacc_absval2 + + subroutine d_oacc_scal(alpha, x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: alpha + integer(psb_ipk_) :: info + if (x%is_host()) call x%sync() + call d_inner_oacc_scal(alpha, x%v) + call x%set_dev() + contains + subroutine d_inner_oacc_scal(alpha, x) + real(psb_dpk_), intent(in) :: alpha + real(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine d_inner_oacc_scal + end subroutine d_oacc_scal + + function d_oacc_nrm2(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() +!!$ write(0,*)'oacc_nrm2' + res = d_inner_oacc_nrm2(n, x%v) + contains + function d_inner_oacc_nrm2(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + real(psb_dpk_) :: sum, mx + integer(psb_ipk_) :: i + mx = dzero + !$acc parallel loop reduction(max:mx) present(x) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + if (mx == dzero) then + res = mx + else + sum = dzero + !$acc parallel loop reduction(+:sum) present(x) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if + end function d_inner_oacc_nrm2 + end function d_oacc_nrm2 + + function d_oacc_amax(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() + res = d_inner_oacc_amax(n, x%v) + contains + function d_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + max_val = dzero + !$acc parallel loop reduction(max:max_val) present(x) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function d_inner_oacc_amax + end function d_oacc_amax + + function d_oacc_asum(n, x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + real(psb_dpk_) :: sum + integer(psb_ipk_) :: i + if (x%is_host()) call x%sync() + res = d_inner_oacc_asum(n, x%v) + contains + function d_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + integer(psb_ipk_) :: i + res = dzero + !$acc parallel loop reduction(+:res) present(x) + do i = 1, n + res = res + abs(x(i)) + end do + end function d_inner_oacc_asum + end function d_oacc_asum + + + subroutine d_oacc_mlt_a(x, y, info) + implicit none + real(psb_dpk_), intent(in) :: x(:) + class(psb_d_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync() + !$acc parallel loop present(x,y) + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine d_oacc_mlt_a + + subroutine d_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + real(psb_dpk_), intent(in) :: alpha, beta + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(in) :: y(:) + class(psb_d_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync() + !$acc parallel loop present(x,y,z%v) + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine d_oacc_mlt_a_2 + + subroutine d_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_vect_oacc), intent(inout) :: y + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_d_vect_oacc) + if ((beta /= dzero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + call d_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) + end if + call y%set_dev() + class default + if ((alpha /= dzero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + contains + subroutine d_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_dpk_), intent(inout) :: x(:) + real(psb_dpk_), intent(inout) :: y(:) + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel present(x,y) + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine d_inner_oacc_axpby + end subroutine d_oacc_axpby_v + + subroutine d_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_dpk_), intent(in) :: x(:) + class(psb_d_vect_oacc), intent(inout) :: y + real(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= dzero) .and. (y%is_dev())) call y%sync() + + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine d_oacc_axpby_a + + subroutine d_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_d_base_vect_type), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_d_vect_oacc), intent(inout) :: z + real(psb_dpk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_d_vect_oacc) + select type(yy => y) + class is (psb_d_vect_oacc) + select type(zz => z) + class is (psb_d_vect_oacc) + if ((beta /= dzero) .and. yy%is_host()) call yy%sync() + if ((delta /= dzero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop present(xx%v,yy%v,zz%v) + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine d_oacc_upd_xyz + + subroutine d_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + real(psb_dpk_) :: beta + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info, k + logical :: acc_done + if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) + end do + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine d_oacc_sctb_buf + + subroutine d_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + real(psb_dpk_) :: beta, x(:) + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if + end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine d_oacc_sctb_x + + subroutine d_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + real(psb_dpk_) :: beta, x(:) + class(psb_d_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync() + + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine d_oacc_sctb + + subroutine d_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_d_vect_oacc) :: x + integer(psb_ipk_) :: info,k + logical :: acc_done + + info = 0 + acc_done = .false. + + if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if + + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine d_oacc_gthzbuf + + subroutine d_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + real(psb_dpk_) :: y(:) + class(psb_d_vect_oacc):: x + integer(psb_ipk_) :: info, k + logical :: acc_done + + info = 0 + acc_done = .false. + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if + end select + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine d_oacc_gthzv_x + + subroutine d_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_d_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_d_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + !$acc parallel loop present(x%v,virl%v,vval%v) + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync() + end select + select type(vval => val) + type is (psb_d_vect_oacc) + if (vval%is_dev()) call vval%sync() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine d_oacc_ins_v + + subroutine d_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + real(psb_dpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_d_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + + + end subroutine d_oacc_ins_a + + subroutine d_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'd_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + + end subroutine d_oacc_bld_mn + + + subroutine d_oacc_bld_x(x, this) + use psb_base_mod + implicit none + real(psb_dpk_), intent(in) :: this(:) + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'd_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + x%v(:) = this(:) + call x%set_host() + call x%sync_dev_space() + + end subroutine d_oacc_bld_x + + subroutine d_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_d_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_d_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + end if + end subroutine d_oacc_asb_m + + subroutine d_oacc_set_scal(x, val, first, last) + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop present(x%v) + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine d_oacc_set_scal + + subroutine d_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(dzero) + end subroutine d_oacc_zero + + function d_oacc_get_nrows(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function d_oacc_get_nrows + + function d_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "dOACC" + + end function d_oacc_get_fmt + + + function d_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + class(psb_d_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + + res = dzero +!!$ write(0,*) 'oacc_dot_v' + select type(yy => y) + type is (psb_d_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + res = d_inner_oacc_dot(n, x%v, yy%v) + class default + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) + end select + contains + function d_inner_oacc_dot(n, x, y) result(res) + implicit none + real(psb_dpk_), intent(in) :: x(:) + real(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function d_inner_oacc_dot + end function d_oacc_vect_dot + + function d_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + real(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + real(psb_dpk_), external :: ddot + + if (x%is_dev()) call x%sync() + res = ddot(n, y, 1, x%v, 1) + + end function d_oacc_dot_a + + + subroutine d_oacc_new_buffer(n,x,info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if + call x%psb_d_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) + end if + end subroutine d_oacc_new_buffer + + subroutine d_oacc_sync_dev_space(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) + end subroutine d_oacc_sync_dev_space + + subroutine d_oacc_sync(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + if (psb_size(x%v)>0) call acc_update_self(x%v) + end if + if (x%is_host()) then + if (.not.acc_is_present(x%v)) call d_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) + end if + call x%set_sync() + end subroutine d_oacc_sync + + subroutine d_oacc_set_host(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine d_oacc_set_host + + subroutine d_oacc_set_dev(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine d_oacc_set_dev + + subroutine d_oacc_set_sync(x) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine d_oacc_set_sync + + function d_oacc_is_dev(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function d_oacc_is_dev + + function d_oacc_is_host(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function d_oacc_is_host + + function d_oacc_is_sync(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function d_oacc_is_sync + + subroutine d_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_d_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'd_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + end subroutine d_oacc_vect_all + + subroutine d_oacc_final_vect_free(x) + implicit none + type(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine d_oacc_final_vect_free + + subroutine d_oacc_vect_free(x, info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + call x%psb_d_base_vect_type%free(info) + end subroutine d_oacc_vect_free + + subroutine d_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if + + end subroutine d_oacc_vect_maybe_free_buffer + + subroutine d_oacc_vect_free_buffer(x,info) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info +! write(0,*) 'oacc free_buffer' + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_d_base_vect_type%free_buffer(info) + + end subroutine d_oacc_vect_free_buffer + + function d_oacc_get_size(x) result(res) + implicit none + class(psb_d_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + res = size(x%v) + end function d_oacc_get_size + +end module psb_d_oacc_vect_mod diff --git a/openacc/psb_i_oacc_vect_mod.F90 b/openacc/psb_i_oacc_vect_mod.F90 new file mode 100644 index 00000000..42cdc18c --- /dev/null +++ b/openacc/psb_i_oacc_vect_mod.F90 @@ -0,0 +1,608 @@ +module psb_i_oacc_vect_mod + use iso_c_binding + use openacc + use psb_const_mod + use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod + use psb_i_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_i_base_vect_type) :: psb_i_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => i_oacc_get_nrows + procedure, nopass :: get_fmt => i_oacc_get_fmt + + procedure, pass(x) :: all => i_oacc_vect_all + procedure, pass(x) :: zero => i_oacc_zero + procedure, pass(x) :: asb_m => i_oacc_asb_m + procedure, pass(x) :: sync => i_oacc_sync + procedure, pass(x) :: sync_dev_space => i_oacc_sync_dev_space + procedure, pass(x) :: bld_x => i_oacc_bld_x + procedure, pass(x) :: bld_mn => i_oacc_bld_mn + procedure, pass(x) :: free => i_oacc_vect_free + procedure, pass(x) :: free_buffer => i_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => i_oacc_vect_maybe_free_buffer + procedure, pass(x) :: ins_a => i_oacc_ins_a + procedure, pass(x) :: ins_v => i_oacc_ins_v + procedure, pass(x) :: is_host => i_oacc_is_host + procedure, pass(x) :: is_dev => i_oacc_is_dev + procedure, pass(x) :: is_sync => i_oacc_is_sync + procedure, pass(x) :: set_host => i_oacc_set_host + procedure, pass(x) :: set_dev => i_oacc_set_dev + procedure, pass(x) :: set_sync => i_oacc_set_sync + procedure, pass(x) :: set_scal => i_oacc_set_scal + + procedure, pass(x) :: new_buffer => i_oacc_new_buffer + procedure, pass(x) :: gthzv_x => i_oacc_gthzv_x + procedure, pass(x) :: gthzbuf => i_oacc_gthzbuf + procedure, pass(y) :: sctb => i_oacc_sctb + procedure, pass(y) :: sctb_x => i_oacc_sctb_x + procedure, pass(y) :: sctb_buf => i_oacc_sctb_buf + procedure, nopass :: device_wait => i_oacc_device_wait + + procedure, pass(x) :: get_size => i_oacc_get_size + + final :: i_oacc_final_vect_free + end type psb_i_vect_oacc + + +contains + + subroutine i_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine i_oacc_device_wait + + + subroutine i_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: beta + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info, k + logical :: acc_done + if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) + end do + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine i_oacc_sctb_buf + + subroutine i_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if + end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine i_oacc_sctb_x + + subroutine i_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + integer(psb_ipk_) :: beta, x(:) + class(psb_i_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync() + + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine i_oacc_sctb + + subroutine i_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_i_vect_oacc) :: x + integer(psb_ipk_) :: info,k + logical :: acc_done + + info = 0 + acc_done = .false. + + if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if + + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine i_oacc_gthzbuf + + subroutine i_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + integer(psb_ipk_) :: y(:) + class(psb_i_vect_oacc):: x + integer(psb_ipk_) :: info, k + logical :: acc_done + + info = 0 + acc_done = .false. + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if + end select + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_ipk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine i_oacc_gthzv_x + + subroutine i_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_i_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_i_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + !$acc parallel loop present(x%v,virl%v,vval%v) + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync() + end select + select type(vval => val) + type is (psb_i_vect_oacc) + if (vval%is_dev()) call vval%sync() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine i_oacc_ins_v + + subroutine i_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_ipk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_i_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + + + end subroutine i_oacc_ins_a + + subroutine i_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'i_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + + end subroutine i_oacc_bld_mn + + + subroutine i_oacc_bld_x(x, this) + use psb_base_mod + implicit none + integer(psb_ipk_), intent(in) :: this(:) + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'i_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + x%v(:) = this(:) + call x%set_host() + call x%sync_dev_space() + + end subroutine i_oacc_bld_x + + subroutine i_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_i_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_i_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + end if + end subroutine i_oacc_asb_m + + subroutine i_oacc_set_scal(x, val, first, last) + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop present(x%v) + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine i_oacc_set_scal + + subroutine i_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(izero) + end subroutine i_oacc_zero + + function i_oacc_get_nrows(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function i_oacc_get_nrows + + function i_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "iOACC" + + end function i_oacc_get_fmt + + + subroutine i_oacc_new_buffer(n,x,info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if + call x%psb_i_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) + end if + end subroutine i_oacc_new_buffer + + subroutine i_oacc_sync_dev_space(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) + end subroutine i_oacc_sync_dev_space + + subroutine i_oacc_sync(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + if (psb_size(x%v)>0) call acc_update_self(x%v) + end if + if (x%is_host()) then + if (.not.acc_is_present(x%v)) call i_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) + end if + call x%set_sync() + end subroutine i_oacc_sync + + subroutine i_oacc_set_host(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine i_oacc_set_host + + subroutine i_oacc_set_dev(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine i_oacc_set_dev + + subroutine i_oacc_set_sync(x) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine i_oacc_set_sync + + function i_oacc_is_dev(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function i_oacc_is_dev + + function i_oacc_is_host(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function i_oacc_is_host + + function i_oacc_is_sync(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function i_oacc_is_sync + + subroutine i_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_i_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'i_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + end subroutine i_oacc_vect_all + + subroutine i_oacc_final_vect_free(x) + implicit none + type(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine i_oacc_final_vect_free + + subroutine i_oacc_vect_free(x, info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + call x%psb_i_base_vect_type%free(info) + end subroutine i_oacc_vect_free + + subroutine i_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if + + end subroutine i_oacc_vect_maybe_free_buffer + + subroutine i_oacc_vect_free_buffer(x,info) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info +! write(0,*) 'oacc free_buffer' + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_i_base_vect_type%free_buffer(info) + + end subroutine i_oacc_vect_free_buffer + + function i_oacc_get_size(x) result(res) + implicit none + class(psb_i_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + res = size(x%v) + end function i_oacc_get_size + +end module psb_i_oacc_vect_mod diff --git a/openacc/psb_l_oacc_vect_mod.F90 b/openacc/psb_l_oacc_vect_mod.F90 new file mode 100644 index 00000000..60cdee35 --- /dev/null +++ b/openacc/psb_l_oacc_vect_mod.F90 @@ -0,0 +1,610 @@ +module psb_l_oacc_vect_mod + use iso_c_binding + use openacc + use psb_const_mod + use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod + use psb_l_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_l_base_vect_type) :: psb_l_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => l_oacc_get_nrows + procedure, nopass :: get_fmt => l_oacc_get_fmt + + procedure, pass(x) :: all => l_oacc_vect_all + procedure, pass(x) :: zero => l_oacc_zero + procedure, pass(x) :: asb_m => l_oacc_asb_m + procedure, pass(x) :: sync => l_oacc_sync + procedure, pass(x) :: sync_dev_space => l_oacc_sync_dev_space + procedure, pass(x) :: bld_x => l_oacc_bld_x + procedure, pass(x) :: bld_mn => l_oacc_bld_mn + procedure, pass(x) :: free => l_oacc_vect_free + procedure, pass(x) :: free_buffer => l_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => l_oacc_vect_maybe_free_buffer + procedure, pass(x) :: ins_a => l_oacc_ins_a + procedure, pass(x) :: ins_v => l_oacc_ins_v + procedure, pass(x) :: is_host => l_oacc_is_host + procedure, pass(x) :: is_dev => l_oacc_is_dev + procedure, pass(x) :: is_sync => l_oacc_is_sync + procedure, pass(x) :: set_host => l_oacc_set_host + procedure, pass(x) :: set_dev => l_oacc_set_dev + procedure, pass(x) :: set_sync => l_oacc_set_sync + procedure, pass(x) :: set_scal => l_oacc_set_scal + + procedure, pass(x) :: new_buffer => l_oacc_new_buffer + procedure, pass(x) :: gthzv_x => l_oacc_gthzv_x + procedure, pass(x) :: gthzbuf => l_oacc_gthzbuf + procedure, pass(y) :: sctb => l_oacc_sctb + procedure, pass(y) :: sctb_x => l_oacc_sctb_x + procedure, pass(y) :: sctb_buf => l_oacc_sctb_buf + procedure, nopass :: device_wait => l_oacc_device_wait + + procedure, pass(x) :: get_size => l_oacc_get_size + + final :: l_oacc_final_vect_free + end type psb_l_vect_oacc + + +contains + + subroutine l_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine l_oacc_device_wait + + + subroutine l_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_lpk_) :: beta + class(psb_l_vect_oacc) :: y + integer(psb_ipk_) :: info, k + logical :: acc_done + if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) + end do + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine l_oacc_sctb_buf + + subroutine l_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + integer(psb_lpk_) :: beta, x(:) + class(psb_l_vect_oacc) :: y + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if + end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine l_oacc_sctb_x + + subroutine l_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + integer(psb_lpk_) :: beta, x(:) + class(psb_l_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync() + + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine l_oacc_sctb + + subroutine l_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_l_vect_oacc) :: x + integer(psb_ipk_) :: info,k + logical :: acc_done + + info = 0 + acc_done = .false. + + if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if + + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine l_oacc_gthzbuf + + subroutine l_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + integer(psb_lpk_) :: y(:) + class(psb_l_vect_oacc):: x + integer(psb_ipk_) :: info, k + logical :: acc_done + + info = 0 + acc_done = .false. + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if + end select + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + integer(psb_lpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine l_oacc_gthzv_x + + subroutine l_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_l_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_l_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + !$acc parallel loop present(x%v,virl%v,vval%v) + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync() + end select + select type(vval => val) + type is (psb_l_vect_oacc) + if (vval%is_dev()) call vval%sync() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine l_oacc_ins_v + + subroutine l_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + integer(psb_lpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_l_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + + + end subroutine l_oacc_ins_a + + subroutine l_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'l_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + + end subroutine l_oacc_bld_mn + + + subroutine l_oacc_bld_x(x, this) + use psb_base_mod + implicit none + integer(psb_lpk_), intent(in) :: this(:) + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'l_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + x%v(:) = this(:) + call x%set_host() + call x%sync_dev_space() + + end subroutine l_oacc_bld_x + + subroutine l_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_l_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_l_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + end if + end subroutine l_oacc_asb_m + + subroutine l_oacc_set_scal(x, val, first, last) + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_lpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop present(x%v) + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine l_oacc_set_scal + + subroutine l_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(lzero) + end subroutine l_oacc_zero + + function l_oacc_get_nrows(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function l_oacc_get_nrows + + function l_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "lOACC" + + end function l_oacc_get_fmt + + + subroutine l_oacc_new_buffer(n,x,info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if + call x%psb_l_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) + end if + end subroutine l_oacc_new_buffer + + subroutine l_oacc_sync_dev_space(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) + end subroutine l_oacc_sync_dev_space + + subroutine l_oacc_sync(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + if (psb_size(x%v)>0) call acc_update_self(x%v) + end if + if (x%is_host()) then + if (.not.acc_is_present(x%v)) call l_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) + end if + call x%set_sync() + end subroutine l_oacc_sync + + subroutine l_oacc_set_host(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine l_oacc_set_host + + subroutine l_oacc_set_dev(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine l_oacc_set_dev + + subroutine l_oacc_set_sync(x) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine l_oacc_set_sync + + function l_oacc_is_dev(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function l_oacc_is_dev + + function l_oacc_is_host(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function l_oacc_is_host + + function l_oacc_is_sync(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function l_oacc_is_sync + + subroutine l_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_l_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'l_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + end subroutine l_oacc_vect_all + + subroutine l_oacc_final_vect_free(x) + implicit none + type(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine l_oacc_final_vect_free + + subroutine l_oacc_vect_free(x, info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + call x%psb_l_base_vect_type%free(info) + end subroutine l_oacc_vect_free + + subroutine l_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if + + end subroutine l_oacc_vect_maybe_free_buffer + + subroutine l_oacc_vect_free_buffer(x,info) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info +! write(0,*) 'oacc free_buffer' + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_l_base_vect_type%free_buffer(info) + + end subroutine l_oacc_vect_free_buffer + + function l_oacc_get_size(x) result(res) + implicit none + class(psb_l_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + res = size(x%v) + end function l_oacc_get_size + +end module psb_l_oacc_vect_mod diff --git a/openacc/psb_oacc_env_mod.F90 b/openacc/psb_oacc_env_mod.F90 new file mode 100644 index 00000000..6d810f74 --- /dev/null +++ b/openacc/psb_oacc_env_mod.F90 @@ -0,0 +1,29 @@ +module psb_oacc_env_mod + use psb_penv_mod + use psb_const_mod + use psb_error_mod + logical, private :: oacc_do_maybe_free_buffer = .false. + +contains + function psb_oacc_get_maybe_free_buffer() result(res) + logical :: res + res = oacc_do_maybe_free_buffer + end function psb_oacc_get_maybe_free_buffer + + subroutine psb_oacc_set_maybe_free_buffer(val) + logical, intent(in) :: val + oacc_do_maybe_free_buffer = val + end subroutine psb_oacc_set_maybe_free_buffer + + subroutine psb_oacc_init(ctxt, dev) + type(psb_ctxt_type), intent(in) :: ctxt + integer, intent(in), optional :: dev + oacc_do_maybe_free_buffer = .false. + end subroutine psb_oacc_init + + subroutine psb_oacc_exit() + integer :: res + + end subroutine psb_oacc_exit + +end module psb_oacc_env_mod diff --git a/openacc/psb_oacc_mod.F90 b/openacc/psb_oacc_mod.F90 new file mode 100644 index 00000000..7d3f9406 --- /dev/null +++ b/openacc/psb_oacc_mod.F90 @@ -0,0 +1,26 @@ +module psb_oacc_mod + use psb_const_mod + + use psb_oacc_env_mod + + use psb_i_oacc_vect_mod + use psb_l_oacc_vect_mod + use psb_s_oacc_vect_mod + use psb_d_oacc_vect_mod + use psb_c_oacc_vect_mod + use psb_z_oacc_vect_mod + + use psb_s_oacc_csr_mat_mod + use psb_d_oacc_csr_mat_mod + use psb_c_oacc_csr_mat_mod + use psb_z_oacc_csr_mat_mod + use psb_s_oacc_ell_mat_mod + use psb_d_oacc_ell_mat_mod + use psb_c_oacc_ell_mat_mod + use psb_z_oacc_ell_mat_mod + use psb_s_oacc_hll_mat_mod + use psb_d_oacc_hll_mat_mod + use psb_c_oacc_hll_mat_mod + use psb_z_oacc_hll_mat_mod + +end module psb_oacc_mod diff --git a/openacc/psb_s_oacc_csr_mat_mod.F90 b/openacc/psb_s_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..d66dca3b --- /dev/null +++ b/openacc/psb_s_oacc_csr_mat_mod.F90 @@ -0,0 +1,290 @@ +module psb_s_oacc_csr_mat_mod + + use iso_c_binding + use openacc + use psb_s_mat_mod + use psb_s_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_csr_sparse_mat) :: psb_s_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => s_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => s_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_s_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_csr_inner_vect_sv + procedure, pass(a) :: scals => psb_s_oacc_csr_scals + procedure, pass(a) :: scalv => psb_s_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => s_oacc_csr_free + procedure, pass(a) :: mold => psb_s_oacc_csr_mold + procedure, pass(a) :: all => s_oacc_csr_all + procedure, pass(a) :: is_host => s_oacc_csr_is_host + procedure, pass(a) :: is_sync => s_oacc_csr_is_sync + procedure, pass(a) :: is_dev => s_oacc_csr_is_dev + procedure, pass(a) :: set_host => s_oacc_csr_set_host + procedure, pass(a) :: set_sync => s_oacc_csr_set_sync + procedure, pass(a) :: set_dev => s_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => s_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => s_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => s_oacc_csr_sync + end type psb_s_oacc_csr_sparse_mat + + interface + module subroutine psb_s_oacc_csr_mold(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_mold + end interface + + interface + module subroutine psb_s_oacc_csr_cp_from_fmt(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_s_oacc_csr_mv_from_coo(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_s_oacc_csr_mv_from_fmt(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_s_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_s_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_s_oacc_csr_scals(d, a, info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_scals + end interface + + interface + module subroutine psb_s_oacc_csr_scal(d,a,info,side) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_s_oacc_csr_scal + end interface + + interface + module subroutine psb_s_oacc_csr_reallocate_nz(nz,a) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_s_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_s_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_s_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_s_oacc_csr_cp_from_coo(a,b,info) + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine s_oacc_csr_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) + + return + end subroutine s_oacc_csr_free_dev_space + + subroutine s_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_s_csr_sparse_mat%free() + + return + end subroutine s_oacc_csr_free + + function s_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_sp * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function s_oacc_csr_sizeof + + + function s_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSROA' + end function s_oacc_csr_get_fmt + + subroutine s_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_s_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + call a%free() + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_dev_space() + end subroutine s_oacc_csr_all + + function s_oacc_csr_is_host(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function s_oacc_csr_is_host + + function s_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function s_oacc_csr_is_sync + + function s_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function s_oacc_csr_is_dev + + subroutine s_oacc_csr_set_host(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine s_oacc_csr_set_host + + subroutine s_oacc_csr_set_sync(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine s_oacc_csr_set_sync + + subroutine s_oacc_csr_set_dev(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine s_oacc_csr_set_dev + + subroutine s_oacc_csr_sync_dev_space(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) + end subroutine s_oacc_csr_sync_dev_space + + subroutine s_oacc_csr_sync(a) + implicit none + class(psb_s_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_s_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) + end if + call tmpa%set_sync() + end subroutine s_oacc_csr_sync + +end module psb_s_oacc_csr_mat_mod + diff --git a/openacc/psb_s_oacc_ell_mat_mod.F90 b/openacc/psb_s_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..600a08a7 --- /dev/null +++ b/openacc/psb_s_oacc_ell_mat_mod.F90 @@ -0,0 +1,272 @@ +module psb_s_oacc_ell_mat_mod + use iso_c_binding + use openacc + use psb_s_mat_mod + use psb_s_ell_mat_mod + use psb_s_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_ell_sparse_mat) :: psb_s_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => s_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => s_oacc_ell_sizeof + procedure, pass(a) :: is_host => s_oacc_ell_is_host + procedure, pass(a) :: is_sync => s_oacc_ell_is_sync + procedure, pass(a) :: is_dev => s_oacc_ell_is_dev + procedure, pass(a) :: set_host => s_oacc_ell_set_host + procedure, pass(a) :: set_sync => s_oacc_ell_set_sync + procedure, pass(a) :: set_dev => s_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => s_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => s_oacc_ell_sync + procedure, pass(a) :: free_dev_space => s_oacc_ell_free_dev_space + procedure, pass(a) :: free => s_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_s_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_ell_inner_vect_sv + procedure, pass(a) :: scals => psb_s_oacc_ell_scals + procedure, pass(a) :: scalv => psb_s_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_s_oacc_ell_mold + + end type psb_s_oacc_ell_sparse_mat + + interface + module subroutine psb_s_oacc_ell_mold(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_mold + end interface + + interface + module subroutine psb_s_oacc_ell_cp_from_fmt(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_s_oacc_ell_mv_from_coo(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_s_oacc_ell_mv_from_fmt(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_s_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_s_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_s_oacc_ell_scals(d, a, info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_scals + end interface + + interface + module subroutine psb_s_oacc_ell_scal(d,a,info,side) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_s_oacc_ell_scal + end interface + + interface + module subroutine psb_s_oacc_ell_reallocate_nz(nz,a) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_s_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_s_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_s_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_s_oacc_ell_cp_from_coo(a,b,info) + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_ell_cp_from_coo + end interface + +contains + + subroutine s_oacc_ell_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + return + end subroutine s_oacc_ell_free_dev_space + + subroutine s_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_s_ell_sparse_mat%free() + + return + end subroutine s_oacc_ell_free + + function s_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function s_oacc_ell_sizeof + + subroutine s_oacc_ell_sync_dev_space(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + end subroutine s_oacc_ell_sync_dev_space + + function s_oacc_ell_is_host(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function s_oacc_ell_is_host + + function s_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function s_oacc_ell_is_sync + + function s_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function s_oacc_ell_is_dev + + subroutine s_oacc_ell_set_host(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine s_oacc_ell_set_host + + subroutine s_oacc_ell_set_sync(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine s_oacc_ell_set_sync + + subroutine s_oacc_ell_set_dev(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine s_oacc_ell_set_dev + + function s_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELLOA' + end function s_oacc_ell_get_fmt + + subroutine s_oacc_ell_sync(a) + implicit none + class(psb_s_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_s_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + end if + call tmpa%set_sync() + end subroutine s_oacc_ell_sync + +end module psb_s_oacc_ell_mat_mod diff --git a/openacc/psb_s_oacc_hll_mat_mod.F90 b/openacc/psb_s_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..33033248 --- /dev/null +++ b/openacc/psb_s_oacc_hll_mat_mod.F90 @@ -0,0 +1,279 @@ +module psb_s_oacc_hll_mat_mod + use iso_c_binding + use openacc + use psb_s_mat_mod + use psb_s_hll_mat_mod + use psb_s_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_hll_sparse_mat) :: psb_s_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => s_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => s_oacc_hll_sizeof + procedure, pass(a) :: is_host => s_oacc_hll_is_host + procedure, pass(a) :: is_sync => s_oacc_hll_is_sync + procedure, pass(a) :: is_dev => s_oacc_hll_is_dev + procedure, pass(a) :: set_host => s_oacc_hll_set_host + procedure, pass(a) :: set_sync => s_oacc_hll_set_sync + procedure, pass(a) :: set_dev => s_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => s_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => s_oacc_hll_sync + procedure, pass(a) :: free_dev_space => s_oacc_hll_free_dev_space + procedure, pass(a) :: free => s_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_s_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_s_oacc_hll_inner_vect_sv + procedure, pass(a) :: scals => psb_s_oacc_hll_scals + procedure, pass(a) :: scalv => psb_s_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_s_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_s_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_s_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_s_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_s_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_s_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_s_oacc_hll_mold + + end type psb_s_oacc_hll_sparse_mat + + interface + module subroutine psb_s_oacc_hll_mold(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + class(psb_s_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_mold + end interface + + interface + module subroutine psb_s_oacc_hll_cp_from_fmt(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_s_oacc_hll_mv_from_coo(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_s_oacc_hll_mv_from_fmt(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_s_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_s_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_s_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_s_oacc_hll_scals(d, a, info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_scals + end interface + + interface + module subroutine psb_s_oacc_hll_scal(d,a,info,side) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + real(psb_spk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_s_oacc_hll_scal + end interface + + interface + module subroutine psb_s_oacc_hll_reallocate_nz(nz,a) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_s_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_s_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_s_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_s_oacc_hll_cp_from_coo(a,b,info) + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_s_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_hll_cp_from_coo + end interface + +contains + + subroutine s_oacc_hll_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) + return + end subroutine s_oacc_hll_free_dev_space + + subroutine s_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_s_hll_sparse_mat%free() + + return + end subroutine s_oacc_hll_free + + function s_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function s_oacc_hll_sizeof + + + + function s_oacc_hll_is_host(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function s_oacc_hll_is_host + + function s_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function s_oacc_hll_is_sync + + function s_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function s_oacc_hll_is_dev + + subroutine s_oacc_hll_set_host(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine s_oacc_hll_set_host + + subroutine s_oacc_hll_set_sync(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine s_oacc_hll_set_sync + + subroutine s_oacc_hll_set_dev(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine s_oacc_hll_set_dev + + function s_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLLOA' + end function s_oacc_hll_get_fmt + + subroutine s_oacc_hll_sync_dev_space(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) + end subroutine s_oacc_hll_sync_dev_space + + + subroutine s_oacc_hll_sync(a) + implicit none + class(psb_s_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_s_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine s_oacc_hll_sync + +end module psb_s_oacc_hll_mat_mod diff --git a/openacc/psb_s_oacc_vect_mod.F90 b/openacc/psb_s_oacc_vect_mod.F90 new file mode 100644 index 00000000..9cb42a95 --- /dev/null +++ b/openacc/psb_s_oacc_vect_mod.F90 @@ -0,0 +1,1004 @@ +module psb_s_oacc_vect_mod + use iso_c_binding + use openacc + use psb_const_mod + use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod + use psb_s_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_s_base_vect_type) :: psb_s_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => s_oacc_get_nrows + procedure, nopass :: get_fmt => s_oacc_get_fmt + + procedure, pass(x) :: all => s_oacc_vect_all + procedure, pass(x) :: zero => s_oacc_zero + procedure, pass(x) :: asb_m => s_oacc_asb_m + procedure, pass(x) :: sync => s_oacc_sync + procedure, pass(x) :: sync_dev_space => s_oacc_sync_dev_space + procedure, pass(x) :: bld_x => s_oacc_bld_x + procedure, pass(x) :: bld_mn => s_oacc_bld_mn + procedure, pass(x) :: free => s_oacc_vect_free + procedure, pass(x) :: free_buffer => s_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => s_oacc_vect_maybe_free_buffer + procedure, pass(x) :: ins_a => s_oacc_ins_a + procedure, pass(x) :: ins_v => s_oacc_ins_v + procedure, pass(x) :: is_host => s_oacc_is_host + procedure, pass(x) :: is_dev => s_oacc_is_dev + procedure, pass(x) :: is_sync => s_oacc_is_sync + procedure, pass(x) :: set_host => s_oacc_set_host + procedure, pass(x) :: set_dev => s_oacc_set_dev + procedure, pass(x) :: set_sync => s_oacc_set_sync + procedure, pass(x) :: set_scal => s_oacc_set_scal + + procedure, pass(x) :: new_buffer => s_oacc_new_buffer + procedure, pass(x) :: gthzv_x => s_oacc_gthzv_x + procedure, pass(x) :: gthzbuf => s_oacc_gthzbuf + procedure, pass(y) :: sctb => s_oacc_sctb + procedure, pass(y) :: sctb_x => s_oacc_sctb_x + procedure, pass(y) :: sctb_buf => s_oacc_sctb_buf + procedure, nopass :: device_wait => s_oacc_device_wait + + procedure, pass(x) :: get_size => s_oacc_get_size + + procedure, pass(x) :: dot_v => s_oacc_vect_dot + procedure, pass(x) :: dot_a => s_oacc_dot_a + procedure, pass(y) :: axpby_v => s_oacc_axpby_v + procedure, pass(y) :: axpby_a => s_oacc_axpby_a + procedure, pass(z) :: upd_xyz => s_oacc_upd_xyz + procedure, pass(y) :: mlt_a => s_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => s_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_s_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_s_oacc_mlt_v_2 + procedure, pass(x) :: scal => s_oacc_scal + procedure, pass(x) :: nrm2 => s_oacc_nrm2 + procedure, pass(x) :: amax => s_oacc_amax + procedure, pass(x) :: asum => s_oacc_asum + procedure, pass(x) :: absval1 => s_oacc_absval1 + procedure, pass(x) :: absval2 => s_oacc_absval2 + final :: s_oacc_final_vect_free + end type psb_s_vect_oacc + + interface + subroutine psb_s_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine psb_s_oacc_mlt_v + end interface + + interface + subroutine psb_s_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + real(psb_spk_), intent(in) :: alpha, beta + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_s_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine psb_s_oacc_mlt_v_2 + end interface + +contains + + subroutine s_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine s_oacc_device_wait + + subroutine s_oacc_absval1(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n + + if (x%is_host()) call x%sync() + n = size(x%v) + call s_inner_oacc_absval1(n,x%v) + call x%set_dev() + contains + subroutine s_inner_oacc_absval1(n,x) + implicit none + real(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine s_inner_oacc_absval1 + end subroutine s_oacc_absval1 + + subroutine s_oacc_absval2(x, y) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_s_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + call s_inner_oacc_absval2(n,x%v,yy%v) + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_s_base_vect_type%absval(y) + end select + contains + subroutine s_inner_oacc_absval2(n,x,y) + implicit none + real(psb_spk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine s_inner_oacc_absval2 + end subroutine s_oacc_absval2 + + subroutine s_oacc_scal(alpha, x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + real(psb_spk_), intent(in) :: alpha + integer(psb_ipk_) :: info + if (x%is_host()) call x%sync() + call s_inner_oacc_scal(alpha, x%v) + call x%set_dev() + contains + subroutine s_inner_oacc_scal(alpha, x) + real(psb_spk_), intent(in) :: alpha + real(psb_spk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine s_inner_oacc_scal + end subroutine s_oacc_scal + + function s_oacc_nrm2(n, x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() +!!$ write(0,*)'oacc_nrm2' + res = s_inner_oacc_nrm2(n, x%v) + contains + function s_inner_oacc_nrm2(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_spk_) :: x(:) + real(psb_spk_) :: res + real(psb_spk_) :: sum, mx + integer(psb_ipk_) :: i + mx = szero + !$acc parallel loop reduction(max:mx) present(x) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + if (mx == szero) then + res = mx + else + sum = szero + !$acc parallel loop reduction(+:sum) present(x) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if + end function s_inner_oacc_nrm2 + end function s_oacc_nrm2 + + function s_oacc_amax(n, x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() + res = s_inner_oacc_amax(n, x%v) + contains + function s_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_spk_) :: x(:) + real(psb_spk_) :: res + real(psb_spk_) :: max_val + integer(psb_ipk_) :: i + max_val = szero + !$acc parallel loop reduction(max:max_val) present(x) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function s_inner_oacc_amax + end function s_oacc_amax + + function s_oacc_asum(n, x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + real(psb_spk_) :: sum + integer(psb_ipk_) :: i + if (x%is_host()) call x%sync() + res = s_inner_oacc_asum(n, x%v) + contains + function s_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + real(psb_spk_) :: x(:) + real(psb_spk_) :: res + integer(psb_ipk_) :: i + res = szero + !$acc parallel loop reduction(+:res) present(x) + do i = 1, n + res = res + abs(x(i)) + end do + end function s_inner_oacc_asum + end function s_oacc_asum + + + subroutine s_oacc_mlt_a(x, y, info) + implicit none + real(psb_spk_), intent(in) :: x(:) + class(psb_s_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync() + !$acc parallel loop present(x,y) + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine s_oacc_mlt_a + + subroutine s_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + real(psb_spk_), intent(in) :: alpha, beta + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(in) :: y(:) + class(psb_s_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync() + !$acc parallel loop present(x,y,z%v) + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine s_oacc_mlt_a_2 + + subroutine s_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_vect_oacc), intent(inout) :: y + real(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_s_vect_oacc) + if ((beta /= szero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + call s_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) + end if + call y%set_dev() + class default + if ((alpha /= szero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + contains + subroutine s_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_spk_), intent(inout) :: x(:) + real(psb_spk_), intent(inout) :: y(:) + real(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel present(x,y) + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine s_inner_oacc_axpby + end subroutine s_oacc_axpby_v + + subroutine s_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + real(psb_spk_), intent(in) :: x(:) + class(psb_s_vect_oacc), intent(inout) :: y + real(psb_spk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= szero) .and. (y%is_dev())) call y%sync() + + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine s_oacc_axpby_a + + subroutine s_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_s_base_vect_type), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_s_vect_oacc), intent(inout) :: z + real(psb_spk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_s_vect_oacc) + select type(yy => y) + class is (psb_s_vect_oacc) + select type(zz => z) + class is (psb_s_vect_oacc) + if ((beta /= szero) .and. yy%is_host()) call yy%sync() + if ((delta /= szero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop present(xx%v,yy%v,zz%v) + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine s_oacc_upd_xyz + + subroutine s_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + real(psb_spk_) :: beta + class(psb_s_vect_oacc) :: y + integer(psb_ipk_) :: info, k + logical :: acc_done + if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) + end do + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine s_oacc_sctb_buf + + subroutine s_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + real(psb_spk_) :: beta, x(:) + class(psb_s_vect_oacc) :: y + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if + end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine s_oacc_sctb_x + + subroutine s_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + real(psb_spk_) :: beta, x(:) + class(psb_s_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync() + + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine s_oacc_sctb + + subroutine s_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_s_vect_oacc) :: x + integer(psb_ipk_) :: info,k + logical :: acc_done + + info = 0 + acc_done = .false. + + if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if + + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine s_oacc_gthzbuf + + subroutine s_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + real(psb_spk_) :: y(:) + class(psb_s_vect_oacc):: x + integer(psb_ipk_) :: info, k + logical :: acc_done + + info = 0 + acc_done = .false. + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if + end select + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + real(psb_spk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine s_oacc_gthzv_x + + subroutine s_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_s_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_s_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + !$acc parallel loop present(x%v,virl%v,vval%v) + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync() + end select + select type(vval => val) + type is (psb_s_vect_oacc) + if (vval%is_dev()) call vval%sync() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine s_oacc_ins_v + + subroutine s_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + real(psb_spk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_s_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + + + end subroutine s_oacc_ins_a + + subroutine s_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 's_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + + end subroutine s_oacc_bld_mn + + + subroutine s_oacc_bld_x(x, this) + use psb_base_mod + implicit none + real(psb_spk_), intent(in) :: this(:) + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 's_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + x%v(:) = this(:) + call x%set_host() + call x%sync_dev_space() + + end subroutine s_oacc_bld_x + + subroutine s_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_s_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_s_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + end if + end subroutine s_oacc_asb_m + + subroutine s_oacc_set_scal(x, val, first, last) + class(psb_s_vect_oacc), intent(inout) :: x + real(psb_spk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop present(x%v) + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine s_oacc_set_scal + + subroutine s_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(szero) + end subroutine s_oacc_zero + + function s_oacc_get_nrows(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function s_oacc_get_nrows + + function s_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "sOACC" + + end function s_oacc_get_fmt + + + function s_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + class(psb_s_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: info + + res = szero +!!$ write(0,*) 'oacc_dot_v' + select type(yy => y) + type is (psb_s_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + res = s_inner_oacc_dot(n, x%v, yy%v) + class default + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) + end select + contains + function s_inner_oacc_dot(n, x, y) result(res) + implicit none + real(psb_spk_), intent(in) :: x(:) + real(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function s_inner_oacc_dot + end function s_oacc_vect_dot + + function s_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + real(psb_spk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + real(psb_spk_) :: res + real(psb_spk_), external :: sdot + + if (x%is_dev()) call x%sync() + res = sdot(n, y, 1, x%v, 1) + + end function s_oacc_dot_a + + + subroutine s_oacc_new_buffer(n,x,info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if + call x%psb_s_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) + end if + end subroutine s_oacc_new_buffer + + subroutine s_oacc_sync_dev_space(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) + end subroutine s_oacc_sync_dev_space + + subroutine s_oacc_sync(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + if (psb_size(x%v)>0) call acc_update_self(x%v) + end if + if (x%is_host()) then + if (.not.acc_is_present(x%v)) call s_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) + end if + call x%set_sync() + end subroutine s_oacc_sync + + subroutine s_oacc_set_host(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine s_oacc_set_host + + subroutine s_oacc_set_dev(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine s_oacc_set_dev + + subroutine s_oacc_set_sync(x) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine s_oacc_set_sync + + function s_oacc_is_dev(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function s_oacc_is_dev + + function s_oacc_is_host(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function s_oacc_is_host + + function s_oacc_is_sync(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function s_oacc_is_sync + + subroutine s_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_s_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 's_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + end subroutine s_oacc_vect_all + + subroutine s_oacc_final_vect_free(x) + implicit none + type(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine s_oacc_final_vect_free + + subroutine s_oacc_vect_free(x, info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + call x%psb_s_base_vect_type%free(info) + end subroutine s_oacc_vect_free + + subroutine s_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if + + end subroutine s_oacc_vect_maybe_free_buffer + + subroutine s_oacc_vect_free_buffer(x,info) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info +! write(0,*) 'oacc free_buffer' + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_s_base_vect_type%free_buffer(info) + + end subroutine s_oacc_vect_free_buffer + + function s_oacc_get_size(x) result(res) + implicit none + class(psb_s_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + res = size(x%v) + end function s_oacc_get_size + +end module psb_s_oacc_vect_mod diff --git a/openacc/psb_z_oacc_csr_mat_mod.F90 b/openacc/psb_z_oacc_csr_mat_mod.F90 new file mode 100644 index 00000000..3b66787a --- /dev/null +++ b/openacc/psb_z_oacc_csr_mat_mod.F90 @@ -0,0 +1,290 @@ +module psb_z_oacc_csr_mat_mod + + use iso_c_binding + use openacc + use psb_z_mat_mod + use psb_z_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_csr_sparse_mat) :: psb_z_oacc_csr_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => z_oacc_csr_get_fmt + procedure, pass(a) :: sizeof => z_oacc_csr_sizeof + procedure, pass(a) :: vect_mv => psb_z_oacc_csr_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_csr_inner_vect_sv + procedure, pass(a) :: scals => psb_z_oacc_csr_scals + procedure, pass(a) :: scalv => psb_z_oacc_csr_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_csr_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_csr_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_csr_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_csr_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_csr_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_csr_mv_from_fmt + procedure, pass(a) :: free => z_oacc_csr_free + procedure, pass(a) :: mold => psb_z_oacc_csr_mold + procedure, pass(a) :: all => z_oacc_csr_all + procedure, pass(a) :: is_host => z_oacc_csr_is_host + procedure, pass(a) :: is_sync => z_oacc_csr_is_sync + procedure, pass(a) :: is_dev => z_oacc_csr_is_dev + procedure, pass(a) :: set_host => z_oacc_csr_set_host + procedure, pass(a) :: set_sync => z_oacc_csr_set_sync + procedure, pass(a) :: set_dev => z_oacc_csr_set_dev + procedure, pass(a) :: free_dev_space => z_oacc_csr_free_dev_space + procedure, pass(a) :: sync_dev_space => z_oacc_csr_sync_dev_space + procedure, pass(a) :: sync => z_oacc_csr_sync + end type psb_z_oacc_csr_sparse_mat + + interface + module subroutine psb_z_oacc_csr_mold(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_mold + end interface + + interface + module subroutine psb_z_oacc_csr_cp_from_fmt(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_cp_from_fmt + end interface + + interface + module subroutine psb_z_oacc_csr_mv_from_coo(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_mv_from_coo + end interface + + interface + module subroutine psb_z_oacc_csr_mv_from_fmt(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_mv_from_fmt + end interface + + interface + module subroutine psb_z_oacc_csr_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_csr_vect_mv + end interface + + interface + module subroutine psb_z_oacc_csr_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_csr_inner_vect_sv + end interface + + interface + module subroutine psb_z_oacc_csr_scals(d, a, info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_scals + end interface + + interface + module subroutine psb_z_oacc_csr_scal(d,a,info,side) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_z_oacc_csr_scal + end interface + + interface + module subroutine psb_z_oacc_csr_reallocate_nz(nz,a) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_z_oacc_csr_reallocate_nz + end interface + + interface + module subroutine psb_z_oacc_csr_allocate_mnnz(m,n,a,nz) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_z_oacc_csr_allocate_mnnz + end interface + + interface + module subroutine psb_z_oacc_csr_cp_from_coo(a,b,info) + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_csr_cp_from_coo + end interface + +contains + + + subroutine z_oacc_csr_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irp)>0) call acc_delete_finalize(a%irp) + + return + end subroutine z_oacc_csr_free_dev_space + + subroutine z_oacc_csr_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_z_csr_sparse_mat%free() + + return + end subroutine z_oacc_csr_free + + function z_oacc_csr_sizeof(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + (2*psb_sizeof_dp) * size(a%val) + res = res + psb_sizeof_ip * size(a%irp) + res = res + psb_sizeof_ip * size(a%ja) + + end function z_oacc_csr_sizeof + + + function z_oacc_csr_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'CSROA' + end function z_oacc_csr_get_fmt + + subroutine z_oacc_csr_all(m, n, nz, a, info) + implicit none + integer(psb_ipk_), intent(in) :: m, n, nz + class(psb_z_oacc_csr_sparse_mat), intent(out) :: a + integer(psb_ipk_), intent(out) :: info + + info = 0 + call a%free() + + call a%set_nrows(m) + call a%set_ncols(n) + + allocate(a%val(nz),stat=info) + allocate(a%ja(nz),stat=info) + allocate(a%irp(m+1),stat=info) + if (info == 0) call a%set_host() + if (info == 0) call a%sync_dev_space() + end subroutine z_oacc_csr_all + + function z_oacc_csr_is_host(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function z_oacc_csr_is_host + + function z_oacc_csr_is_sync(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function z_oacc_csr_is_sync + + function z_oacc_csr_is_dev(a) result(res) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function z_oacc_csr_is_dev + + subroutine z_oacc_csr_set_host(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine z_oacc_csr_set_host + + subroutine z_oacc_csr_set_sync(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine z_oacc_csr_set_sync + + subroutine z_oacc_csr_set_dev(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine z_oacc_csr_set_dev + + subroutine z_oacc_csr_sync_dev_space(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irp)>0) call acc_copyin(a%irp) + end subroutine z_oacc_csr_sync_dev_space + + subroutine z_oacc_csr_sync(a) + implicit none + class(psb_z_oacc_csr_sparse_mat), target, intent(in) :: a + class(psb_z_oacc_csr_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irp)>0) call acc_update_self(a%irp) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irp)>0) call acc_update_device(a%irp) + end if + call tmpa%set_sync() + end subroutine z_oacc_csr_sync + +end module psb_z_oacc_csr_mat_mod + diff --git a/openacc/psb_z_oacc_ell_mat_mod.F90 b/openacc/psb_z_oacc_ell_mat_mod.F90 new file mode 100644 index 00000000..abfb11e3 --- /dev/null +++ b/openacc/psb_z_oacc_ell_mat_mod.F90 @@ -0,0 +1,272 @@ +module psb_z_oacc_ell_mat_mod + use iso_c_binding + use openacc + use psb_z_mat_mod + use psb_z_ell_mat_mod + use psb_z_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_ell_sparse_mat) :: psb_z_oacc_ell_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => z_oacc_ell_get_fmt + procedure, pass(a) :: sizeof => z_oacc_ell_sizeof + procedure, pass(a) :: is_host => z_oacc_ell_is_host + procedure, pass(a) :: is_sync => z_oacc_ell_is_sync + procedure, pass(a) :: is_dev => z_oacc_ell_is_dev + procedure, pass(a) :: set_host => z_oacc_ell_set_host + procedure, pass(a) :: set_sync => z_oacc_ell_set_sync + procedure, pass(a) :: set_dev => z_oacc_ell_set_dev + procedure, pass(a) :: sync_dev_space => z_oacc_ell_sync_dev_space + procedure, pass(a) :: sync => z_oacc_ell_sync + procedure, pass(a) :: free_dev_space => z_oacc_ell_free_dev_space + procedure, pass(a) :: free => z_oacc_ell_free + procedure, pass(a) :: vect_mv => psb_z_oacc_ell_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_ell_inner_vect_sv + procedure, pass(a) :: scals => psb_z_oacc_ell_scals + procedure, pass(a) :: scalv => psb_z_oacc_ell_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_ell_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_ell_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_ell_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_ell_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_ell_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_ell_mv_from_fmt + procedure, pass(a) :: mold => psb_z_oacc_ell_mold + + end type psb_z_oacc_ell_sparse_mat + + interface + module subroutine psb_z_oacc_ell_mold(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_mold + end interface + + interface + module subroutine psb_z_oacc_ell_cp_from_fmt(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_cp_from_fmt + end interface + + interface + module subroutine psb_z_oacc_ell_mv_from_coo(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_mv_from_coo + end interface + + interface + module subroutine psb_z_oacc_ell_mv_from_fmt(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_mv_from_fmt + end interface + + interface + module subroutine psb_z_oacc_ell_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_ell_vect_mv + end interface + + interface + module subroutine psb_z_oacc_ell_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_ell_inner_vect_sv + end interface + + interface + module subroutine psb_z_oacc_ell_scals(d, a, info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_scals + end interface + + interface + module subroutine psb_z_oacc_ell_scal(d,a,info,side) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_z_oacc_ell_scal + end interface + + interface + module subroutine psb_z_oacc_ell_reallocate_nz(nz,a) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_z_oacc_ell_reallocate_nz + end interface + + interface + module subroutine psb_z_oacc_ell_allocate_mnnz(m,n,a,nz) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_z_oacc_ell_allocate_mnnz + end interface + + interface + module subroutine psb_z_oacc_ell_cp_from_coo(a,b,info) + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_ell_cp_from_coo + end interface + +contains + + subroutine z_oacc_ell_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + return + end subroutine z_oacc_ell_free_dev_space + + subroutine z_oacc_ell_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_z_ell_sparse_mat%free() + + return + end subroutine z_oacc_ell_free + + function z_oacc_ell_sizeof(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + + end function z_oacc_ell_sizeof + + subroutine z_oacc_ell_sync_dev_space(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + end subroutine z_oacc_ell_sync_dev_space + + function z_oacc_ell_is_host(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function z_oacc_ell_is_host + + function z_oacc_ell_is_sync(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function z_oacc_ell_is_sync + + function z_oacc_ell_is_dev(a) result(res) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function z_oacc_ell_is_dev + + subroutine z_oacc_ell_set_host(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine z_oacc_ell_set_host + + subroutine z_oacc_ell_set_sync(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine z_oacc_ell_set_sync + + subroutine z_oacc_ell_set_dev(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine z_oacc_ell_set_dev + + function z_oacc_ell_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'ELLOA' + end function z_oacc_ell_get_fmt + + subroutine z_oacc_ell_sync(a) + implicit none + class(psb_z_oacc_ell_sparse_mat), target, intent(in) :: a + class(psb_z_oacc_ell_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + end if + call tmpa%set_sync() + end subroutine z_oacc_ell_sync + +end module psb_z_oacc_ell_mat_mod diff --git a/openacc/psb_z_oacc_hll_mat_mod.F90 b/openacc/psb_z_oacc_hll_mat_mod.F90 new file mode 100644 index 00000000..4c9f1b11 --- /dev/null +++ b/openacc/psb_z_oacc_hll_mat_mod.F90 @@ -0,0 +1,279 @@ +module psb_z_oacc_hll_mat_mod + use iso_c_binding + use openacc + use psb_z_mat_mod + use psb_z_hll_mat_mod + use psb_z_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_hll_sparse_mat) :: psb_z_oacc_hll_sparse_mat + integer(psb_ipk_) :: devstate = is_host + contains + procedure, nopass :: get_fmt => z_oacc_hll_get_fmt + procedure, pass(a) :: sizeof => z_oacc_hll_sizeof + procedure, pass(a) :: is_host => z_oacc_hll_is_host + procedure, pass(a) :: is_sync => z_oacc_hll_is_sync + procedure, pass(a) :: is_dev => z_oacc_hll_is_dev + procedure, pass(a) :: set_host => z_oacc_hll_set_host + procedure, pass(a) :: set_sync => z_oacc_hll_set_sync + procedure, pass(a) :: set_dev => z_oacc_hll_set_dev + procedure, pass(a) :: sync_dev_space => z_oacc_hll_sync_dev_space + procedure, pass(a) :: sync => z_oacc_hll_sync + procedure, pass(a) :: free_dev_space => z_oacc_hll_free_dev_space + procedure, pass(a) :: free => z_oacc_hll_free + procedure, pass(a) :: vect_mv => psb_z_oacc_hll_vect_mv + procedure, pass(a) :: in_vect_sv => psb_z_oacc_hll_inner_vect_sv + procedure, pass(a) :: scals => psb_z_oacc_hll_scals + procedure, pass(a) :: scalv => psb_z_oacc_hll_scal + procedure, pass(a) :: reallocate_nz => psb_z_oacc_hll_reallocate_nz + procedure, pass(a) :: allocate_mnnz => psb_z_oacc_hll_allocate_mnnz + procedure, pass(a) :: cp_from_coo => psb_z_oacc_hll_cp_from_coo + procedure, pass(a) :: cp_from_fmt => psb_z_oacc_hll_cp_from_fmt + procedure, pass(a) :: mv_from_coo => psb_z_oacc_hll_mv_from_coo + procedure, pass(a) :: mv_from_fmt => psb_z_oacc_hll_mv_from_fmt + procedure, pass(a) :: mold => psb_z_oacc_hll_mold + + end type psb_z_oacc_hll_sparse_mat + + interface + module subroutine psb_z_oacc_hll_mold(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + class(psb_z_base_sparse_mat), intent(inout), allocatable :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_mold + end interface + + interface + module subroutine psb_z_oacc_hll_cp_from_fmt(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_cp_from_fmt + end interface + + interface + module subroutine psb_z_oacc_hll_mv_from_coo(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_mv_from_coo + end interface + + interface + module subroutine psb_z_oacc_hll_mv_from_fmt(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_base_sparse_mat), intent(inout) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_mv_from_fmt + end interface + + interface + module subroutine psb_z_oacc_hll_vect_mv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x, y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_hll_vect_mv + end interface + + interface + module subroutine psb_z_oacc_hll_inner_vect_sv(alpha, a, x, beta, y, info, trans) + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x,y + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: trans + end subroutine psb_z_oacc_hll_inner_vect_sv + end interface + + interface + module subroutine psb_z_oacc_hll_scals(d, a, info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_scals + end interface + + interface + module subroutine psb_z_oacc_hll_scal(d,a,info,side) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + complex(psb_dpk_), intent(in) :: d(:) + integer(psb_ipk_), intent(out) :: info + character, optional, intent(in) :: side + end subroutine psb_z_oacc_hll_scal + end interface + + interface + module subroutine psb_z_oacc_hll_reallocate_nz(nz,a) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: nz + end subroutine psb_z_oacc_hll_reallocate_nz + end interface + + interface + module subroutine psb_z_oacc_hll_allocate_mnnz(m,n,a,nz) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_), intent(in) :: m,n + integer(psb_ipk_), intent(in), optional :: nz + end subroutine psb_z_oacc_hll_allocate_mnnz + end interface + + interface + module subroutine psb_z_oacc_hll_cp_from_coo(a,b,info) + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + class(psb_z_coo_sparse_mat), intent(in) :: b + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_hll_cp_from_coo + end interface + +contains + + subroutine z_oacc_hll_free_dev_space(a) + use psb_base_mod + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_delete_finalize(a%val) + if (psb_size(a%ja)>0) call acc_delete_finalize(a%ja) + if (psb_size(a%irn)>0) call acc_delete_finalize(a%irn) + if (psb_size(a%idiag)>0) call acc_delete_finalize(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_delete_finalize(a%hkoffs) + return + end subroutine z_oacc_hll_free_dev_space + + subroutine z_oacc_hll_free(a) + use psb_base_mod + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + integer(psb_ipk_) :: info + + call a%free_dev_space() + call a%psb_z_hll_sparse_mat%free() + + return + end subroutine z_oacc_hll_free + + function z_oacc_hll_sizeof(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + integer(psb_epk_) :: res + + if (a%is_dev()) call a%sync() + + res = 8 + res = res + psb_sizeof_dp * size(a%val) + res = res + psb_sizeof_ip * size(a%ja) + res = res + psb_sizeof_ip * size(a%irn) + res = res + psb_sizeof_ip * size(a%idiag) + res = res + psb_sizeof_ip * size(a%hkoffs) + end function z_oacc_hll_sizeof + + + + function z_oacc_hll_is_host(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_host) + end function z_oacc_hll_is_host + + function z_oacc_hll_is_sync(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_sync) + end function z_oacc_hll_is_sync + + function z_oacc_hll_is_dev(a) result(res) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(in) :: a + logical :: res + + res = (a%devstate == is_dev) + end function z_oacc_hll_is_dev + + subroutine z_oacc_hll_set_host(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_host + end subroutine z_oacc_hll_set_host + + subroutine z_oacc_hll_set_sync(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_sync + end subroutine z_oacc_hll_set_sync + + subroutine z_oacc_hll_set_dev(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + a%devstate = is_dev + end subroutine z_oacc_hll_set_dev + + function z_oacc_hll_get_fmt() result(res) + implicit none + character(len=5) :: res + res = 'HLLOA' + end function z_oacc_hll_get_fmt + + subroutine z_oacc_hll_sync_dev_space(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), intent(inout) :: a + + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (psb_size(a%val)>0) call acc_copyin(a%val) + if (psb_size(a%ja)>0) call acc_copyin(a%ja) + if (psb_size(a%irn)>0) call acc_copyin(a%irn) + if (psb_size(a%idiag)>0) call acc_copyin(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_copyin(a%hkoffs) + end subroutine z_oacc_hll_sync_dev_space + + + subroutine z_oacc_hll_sync(a) + implicit none + class(psb_z_oacc_hll_sparse_mat), target, intent(in) :: a + class(psb_z_oacc_hll_sparse_mat), pointer :: tmpa + integer(psb_ipk_) :: info + + tmpa => a + ! + ! Note: at least on GNU, if an array is allocated + ! but with size 0, then CREATE,UPDATE and DELETE + ! will fail + ! + if (a%is_dev()) then + if (psb_size(a%val)>0) call acc_update_self(a%val) + if (psb_size(a%ja)>0) call acc_update_self(a%ja) + if (psb_size(a%irn)>0) call acc_update_self(a%irn) + if (psb_size(a%idiag)>0) call acc_update_self(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_self(a%hkoffs) + else if (a%is_host()) then + if (psb_size(a%val)>0) call acc_update_device(a%val) + if (psb_size(a%ja)>0) call acc_update_device(a%ja) + if (psb_size(a%irn)>0) call acc_update_device(a%irn) + if (psb_size(a%idiag)>0) call acc_update_device(a%idiag) + if (psb_size(a%hkoffs)>0) call acc_update_device(a%hkoffs) + end if + call tmpa%set_sync() + end subroutine z_oacc_hll_sync + +end module psb_z_oacc_hll_mat_mod diff --git a/openacc/psb_z_oacc_vect_mod.F90 b/openacc/psb_z_oacc_vect_mod.F90 new file mode 100644 index 00000000..90ddcf0d --- /dev/null +++ b/openacc/psb_z_oacc_vect_mod.F90 @@ -0,0 +1,1004 @@ +module psb_z_oacc_vect_mod + use iso_c_binding + use openacc + use psb_const_mod + use psb_error_mod + use psb_realloc_mod + use psb_oacc_env_mod + use psb_z_vect_mod + use psb_i_vect_mod + use psb_i_oacc_vect_mod + + integer(psb_ipk_), parameter, private :: is_host = -1 + integer(psb_ipk_), parameter, private :: is_sync = 0 + integer(psb_ipk_), parameter, private :: is_dev = 1 + + type, extends(psb_z_base_vect_type) :: psb_z_vect_oacc + integer :: state = is_host + + contains + procedure, pass(x) :: get_nrows => z_oacc_get_nrows + procedure, nopass :: get_fmt => z_oacc_get_fmt + + procedure, pass(x) :: all => z_oacc_vect_all + procedure, pass(x) :: zero => z_oacc_zero + procedure, pass(x) :: asb_m => z_oacc_asb_m + procedure, pass(x) :: sync => z_oacc_sync + procedure, pass(x) :: sync_dev_space => z_oacc_sync_dev_space + procedure, pass(x) :: bld_x => z_oacc_bld_x + procedure, pass(x) :: bld_mn => z_oacc_bld_mn + procedure, pass(x) :: free => z_oacc_vect_free + procedure, pass(x) :: free_buffer => z_oacc_vect_free_buffer + procedure, pass(x) :: maybe_free_buffer => z_oacc_vect_maybe_free_buffer + procedure, pass(x) :: ins_a => z_oacc_ins_a + procedure, pass(x) :: ins_v => z_oacc_ins_v + procedure, pass(x) :: is_host => z_oacc_is_host + procedure, pass(x) :: is_dev => z_oacc_is_dev + procedure, pass(x) :: is_sync => z_oacc_is_sync + procedure, pass(x) :: set_host => z_oacc_set_host + procedure, pass(x) :: set_dev => z_oacc_set_dev + procedure, pass(x) :: set_sync => z_oacc_set_sync + procedure, pass(x) :: set_scal => z_oacc_set_scal + + procedure, pass(x) :: new_buffer => z_oacc_new_buffer + procedure, pass(x) :: gthzv_x => z_oacc_gthzv_x + procedure, pass(x) :: gthzbuf => z_oacc_gthzbuf + procedure, pass(y) :: sctb => z_oacc_sctb + procedure, pass(y) :: sctb_x => z_oacc_sctb_x + procedure, pass(y) :: sctb_buf => z_oacc_sctb_buf + procedure, nopass :: device_wait => z_oacc_device_wait + + procedure, pass(x) :: get_size => z_oacc_get_size + + procedure, pass(x) :: dot_v => z_oacc_vect_dot + procedure, pass(x) :: dot_a => z_oacc_dot_a + procedure, pass(y) :: axpby_v => z_oacc_axpby_v + procedure, pass(y) :: axpby_a => z_oacc_axpby_a + procedure, pass(z) :: upd_xyz => z_oacc_upd_xyz + procedure, pass(y) :: mlt_a => z_oacc_mlt_a + procedure, pass(z) :: mlt_a_2 => z_oacc_mlt_a_2 + procedure, pass(y) :: mlt_v => psb_z_oacc_mlt_v + procedure, pass(z) :: mlt_v_2 => psb_z_oacc_mlt_v_2 + procedure, pass(x) :: scal => z_oacc_scal + procedure, pass(x) :: nrm2 => z_oacc_nrm2 + procedure, pass(x) :: amax => z_oacc_amax + procedure, pass(x) :: asum => z_oacc_asum + procedure, pass(x) :: absval1 => z_oacc_absval1 + procedure, pass(x) :: absval2 => z_oacc_absval2 + final :: z_oacc_final_vect_free + end type psb_z_vect_oacc + + interface + subroutine psb_z_oacc_mlt_v(x, y, info) + import + implicit none + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + end subroutine psb_z_oacc_mlt_v + end interface + + interface + subroutine psb_z_oacc_mlt_v_2(alpha, x, y, beta, z, info, conjgx, conjgy) + import + implicit none + complex(psb_dpk_), intent(in) :: alpha, beta + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + class(psb_z_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + character(len=1), intent(in), optional :: conjgx, conjgy + end subroutine psb_z_oacc_mlt_v_2 + end interface + +contains + + subroutine z_oacc_device_wait() + implicit none + call acc_wait_all() + end subroutine z_oacc_device_wait + + subroutine z_oacc_absval1(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: n + + if (x%is_host()) call x%sync() + n = size(x%v) + call z_inner_oacc_absval1(n,x%v) + call x%set_dev() + contains + subroutine z_inner_oacc_absval1(n,x) + implicit none + complex(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, n + x(i) = abs(x(i)) + end do + end subroutine z_inner_oacc_absval1 + end subroutine z_oacc_absval1 + + subroutine z_oacc_absval2(x, y) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + + n = min(size(x%v), size(y%v)) + select type (yy => y) + class is (psb_z_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + call z_inner_oacc_absval2(n,x%v,yy%v) + class default + if (x%is_dev()) call x%sync() + if (y%is_dev()) call y%sync() + call x%psb_z_base_vect_type%absval(y) + end select + contains + subroutine z_inner_oacc_absval2(n,x,y) + implicit none + complex(psb_dpk_), intent(inout) :: x(:),y(:) + integer(psb_ipk_) :: n + integer(psb_ipk_) :: i + !$acc parallel loop present(x,y) + do i = 1, n + y(i) = abs(x(i)) + end do + end subroutine z_inner_oacc_absval2 + end subroutine z_oacc_absval2 + + subroutine z_oacc_scal(alpha, x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + complex(psb_dpk_), intent(in) :: alpha + integer(psb_ipk_) :: info + if (x%is_host()) call x%sync() + call z_inner_oacc_scal(alpha, x%v) + call x%set_dev() + contains + subroutine z_inner_oacc_scal(alpha, x) + complex(psb_dpk_), intent(in) :: alpha + complex(psb_dpk_), intent(inout) :: x(:) + integer(psb_ipk_) :: i + !$acc parallel loop present(x) + do i = 1, size(x) + x(i) = alpha * x(i) + end do + end subroutine z_inner_oacc_scal + end subroutine z_oacc_scal + + function z_oacc_nrm2(n, x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() +!!$ write(0,*)'oacc_nrm2' + res = z_inner_oacc_nrm2(n, x%v) + contains + function z_inner_oacc_nrm2(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + real(psb_dpk_) :: sum, mx + integer(psb_ipk_) :: i + mx = dzero + !$acc parallel loop reduction(max:mx) present(x) + do i = 1, n + if (abs(x(i)) > mx) mx = abs(x(i)) + end do + if (mx == dzero) then + res = mx + else + sum = dzero + !$acc parallel loop reduction(+:sum) present(x) + do i = 1, n + sum = sum + abs(x(i)/mx)**2 + end do + res = mx*sqrt(sum) + end if + end function z_inner_oacc_nrm2 + end function z_oacc_nrm2 + + function z_oacc_amax(n, x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + + if (x%is_host()) call x%sync() + res = z_inner_oacc_amax(n, x%v) + contains + function z_inner_oacc_amax(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + real(psb_dpk_) :: max_val + integer(psb_ipk_) :: i + max_val = dzero + !$acc parallel loop reduction(max:max_val) present(x) + do i = 1, n + if (abs(x(i)) > max_val) max_val = abs(x(i)) + end do + res = max_val + end function z_inner_oacc_amax + end function z_oacc_amax + + function z_oacc_asum(n, x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + real(psb_dpk_) :: res + integer(psb_ipk_) :: info + complex(psb_dpk_) :: sum + integer(psb_ipk_) :: i + if (x%is_host()) call x%sync() + res = z_inner_oacc_asum(n, x%v) + contains + function z_inner_oacc_asum(n, x) result(res) + integer(psb_ipk_) :: n + complex(psb_dpk_) :: x(:) + real(psb_dpk_) :: res + integer(psb_ipk_) :: i + res = dzero + !$acc parallel loop reduction(+:res) present(x) + do i = 1, n + res = res + abs(x(i)) + end do + end function z_inner_oacc_asum + end function z_oacc_asum + + + subroutine z_oacc_mlt_a(x, y, info) + implicit none + complex(psb_dpk_), intent(in) :: x(:) + class(psb_z_vect_oacc), intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (y%is_dev()) call y%sync() + !$acc parallel loop present(x,y) + do i = 1, size(x) + y%v(i) = y%v(i) * x(i) + end do + call y%set_host() + end subroutine z_oacc_mlt_a + + subroutine z_oacc_mlt_a_2(alpha, x, y, beta, z, info) + implicit none + complex(psb_dpk_), intent(in) :: alpha, beta + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(in) :: y(:) + class(psb_z_vect_oacc), intent(inout) :: z + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i, n + + info = 0 + if (z%is_dev()) call z%sync() + !$acc parallel loop present(x,y,z%v) + do i = 1, size(x) + z%v(i) = alpha * x(i) * y(i) + beta * z%v(i) + end do + call z%set_host() + end subroutine z_oacc_mlt_a_2 + + subroutine z_oacc_axpby_v(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_vect_oacc), intent(inout) :: y + complex(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, i + + info = psb_success_ + + select type(xx => x) + type is (psb_z_vect_oacc) + if ((beta /= zzero) .and. y%is_host()) call y%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(y%v) + if ((nx < m) .or. (ny < m)) then + info = psb_err_internal_error_ + else + call z_inner_oacc_axpby(m, alpha, x%v, beta, y%v, info) + end if + call y%set_dev() + class default + if ((alpha /= zzero) .and. (x%is_dev())) call x%sync() + call y%axpby(m, alpha, x%v, beta, info) + end select + contains + subroutine z_inner_oacc_axpby(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_dpk_), intent(inout) :: x(:) + complex(psb_dpk_), intent(inout) :: y(:) + complex(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + !$acc parallel present(x,y) + !$acc loop + do i = 1, m + y(i) = alpha * x(i) + beta * y(i) + end do + !$acc end parallel + end subroutine z_inner_oacc_axpby + end subroutine z_oacc_axpby_v + + subroutine z_oacc_axpby_a(m, alpha, x, beta, y, info) + !use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + complex(psb_dpk_), intent(in) :: x(:) + class(psb_z_vect_oacc), intent(inout) :: y + complex(psb_dpk_), intent(in) :: alpha, beta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: i + + if ((beta /= zzero) .and. (y%is_dev())) call y%sync() + + do i = 1, m + y%v(i) = alpha * x(i) + beta * y%v(i) + end do + call y%set_host() + end subroutine z_oacc_axpby_a + + subroutine z_oacc_upd_xyz(m, alpha, beta, gamma, delta, x, y, z, info) + use psi_serial_mod + implicit none + integer(psb_ipk_), intent(in) :: m + class(psb_z_base_vect_type), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + class(psb_z_vect_oacc), intent(inout) :: z + complex(psb_dpk_), intent(in) :: alpha, beta, gamma, delta + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_) :: nx, ny, nz, i + logical :: gpu_done + + info = psb_success_ + gpu_done = .false. + + select type(xx => x) + class is (psb_z_vect_oacc) + select type(yy => y) + class is (psb_z_vect_oacc) + select type(zz => z) + class is (psb_z_vect_oacc) + if ((beta /= zzero) .and. yy%is_host()) call yy%sync() + if ((delta /= zzero) .and. zz%is_host()) call zz%sync() + if (xx%is_host()) call xx%sync() + nx = size(xx%v) + ny = size(yy%v) + nz = size(zz%v) + if ((nx < m) .or. (ny < m) .or. (nz < m)) then + info = psb_err_internal_error_ + else + !$acc parallel loop present(xx%v,yy%v,zz%v) + do i = 1, m + yy%v(i) = alpha * xx%v(i) + beta * yy%v(i) + zz%v(i) = gamma * yy%v(i) + delta * zz%v(i) + end do + end if + call yy%set_dev() + call zz%set_dev() + gpu_done = .true. + end select + end select + end select + + if (.not. gpu_done) then + if (x%is_host()) call x%sync() + if (y%is_host()) call y%sync() + if (z%is_host()) call z%sync() + call y%axpby(m, alpha, x, beta, info) + call z%axpby(m, gamma, y, delta, info) + end if + end subroutine z_oacc_upd_xyz + + subroutine z_oacc_sctb_buf(i, n, idx, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_dpk_) :: beta + class(psb_z_vect_oacc) :: y + integer(psb_ipk_) :: info, k + logical :: acc_done + if (.not.allocated(y%combuf)) then + write(0,*) 'allocation error for y%combuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'sctb_buf') + return + end if + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + call inner_sctb(n,y%combuf(i:i+n-1),beta,y%v,ii%v(i:i+n-1)) + call y%set_dev() + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + y%combuf(k) + end do + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: beta,x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine z_oacc_sctb_buf + + subroutine z_oacc_sctb_x(i, n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_):: i, n + class(psb_i_base_vect_type) :: idx + complex(psb_dpk_) :: beta, x(:) + class(psb_z_vect_oacc) :: y + integer(psb_ipk_) :: info, ni, k + logical :: acc_done + + acc_done = .false. + select type(ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (y%is_host()) call y%sync() + if (acc_is_present(x)) then + call inner_sctb(n,x(i:i+n-1),beta,y%v,idx%v(i:i+n-1)) + acc_done = .true. + call y%set_dev() + end if + end select + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (y%is_dev()) call y%sync() + do k = 1, n + y%v(idx%v(k+i-1)) = beta * y%v(idx%v(k+i-1)) + x(k+i-1) + end do + call y%set_host() + end if + + contains + subroutine inner_sctb(n,x,beta,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: beta, x(:), y(:) + integer(psb_ipk_) :: k + !$acc update device(x(1:n)) + !$acc parallel loop present(x,y) + do k = 1, n + y(idx(k)) = x(k) + beta *y(idx(k)) + end do + !$acc end parallel loop + end subroutine inner_sctb + + end subroutine z_oacc_sctb_x + + subroutine z_oacc_sctb(n, idx, x, beta, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: n + integer(psb_ipk_) :: idx(:) + complex(psb_dpk_) :: beta, x(:) + class(psb_z_vect_oacc) :: y + integer(psb_ipk_) :: info + integer(psb_ipk_) :: i + + if (n == 0) return + if (y%is_dev()) call y%sync() + + do i = 1, n + y%v(idx(i)) = beta * y%v(idx(i)) + x(i) + end do + + call y%set_host() + end subroutine z_oacc_sctb + + subroutine z_oacc_gthzbuf(i, n, idx, x) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type) :: idx + class(psb_z_vect_oacc) :: x + integer(psb_ipk_) :: info,k + logical :: acc_done + + info = 0 + acc_done = .false. + + if (.not.allocated(x%combuf)) then + write(0,*) 'oacc allocation error combuf gthzbuf ' + call psb_errpush(psb_err_alloc_dealloc_, 'gthzbuf') + return + end if + + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + call inner_gth(n,x%v,x%combuf(i:i+n-1),ii%v(i:i+n-1)) + acc_done = .true. + end select + + if (.not.acc_done) then + if (idx%is_dev()) call idx%sync() + if (x%is_dev()) call x%sync() + do k = 1, n + x%combuf(k+i-1) = x%v(idx%v(k+i-1)) + end do + end if + + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine z_oacc_gthzbuf + + subroutine z_oacc_gthzv_x(i, n, idx, x, y) + use psb_base_mod + implicit none + integer(psb_ipk_) :: i, n + class(psb_i_base_vect_type):: idx + complex(psb_dpk_) :: y(:) + class(psb_z_vect_oacc):: x + integer(psb_ipk_) :: info, k + logical :: acc_done + + info = 0 + acc_done = .false. + select type (ii => idx) + class is (psb_i_vect_oacc) + if (ii%is_host()) call ii%sync() + if (x%is_host()) call x%sync() + if (acc_is_present(y)) then + call inner_gth(n,x%v,y(i:),ii%v(i:)) + acc_done=.true. + end if + end select + if (.not.acc_done) then + if (x%is_dev()) call x%sync() + if (idx%is_dev()) call idx%sync() + do k = 1, n + y(k+i-1) = x%v(idx%v(k+i-1)) + !write(0,*) 'oa gthzv ',k+i-1,idx%v(k+i-1),k,y(k) + end do + end if + contains + subroutine inner_gth(n,x,y,idx) + integer(psb_ipk_) :: n, idx(:) + complex(psb_dpk_) :: x(:), y(:) + integer(psb_ipk_) :: k + ! + !$acc parallel loop present(x,y) + do k = 1, n + y(k) = x(idx(k)) + end do + !$acc end parallel loop + !$acc update self(y(1:n)) + end subroutine inner_gth + end subroutine z_oacc_gthzv_x + + subroutine z_oacc_ins_v(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + class(psb_i_base_vect_type), intent(inout) :: irl + class(psb_z_base_vect_type), intent(inout) :: val + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i, isz + logical :: done_oacc + + info = 0 + if (psb_errstatus_fatal()) return + + done_oacc = .false. + select type(virl => irl) + type is (psb_i_vect_oacc) + select type(vval => val) + type is (psb_z_vect_oacc) + if (vval%is_host()) call vval%sync() + if (virl%is_host()) call virl%sync() + if (x%is_host()) call x%sync() + !$acc parallel loop present(x%v,virl%v,vval%v) + do i = 1, n + x%v(virl%v(i)) = vval%v(i) + end do + call x%set_dev() + done_oacc = .true. + end select + end select + + if (.not.done_oacc) then + select type(virl => irl) + type is (psb_i_vect_oacc) + if (virl%is_dev()) call virl%sync() + end select + select type(vval => val) + type is (psb_z_vect_oacc) + if (vval%is_dev()) call vval%sync() + end select + call x%ins(n, irl%v, val%v, dupl, info) + end if + + if (info /= 0) then + call psb_errpush(info, 'oacc_vect_ins') + return + end if + + end subroutine z_oacc_ins_v + + subroutine z_oacc_ins_a(n, irl, val, dupl, x, info) + use psi_serial_mod + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n, dupl + integer(psb_ipk_), intent(in) :: irl(:) + complex(psb_dpk_), intent(in) :: val(:) + integer(psb_ipk_), intent(out) :: info + + integer(psb_ipk_) :: i + + info = 0 + if (x%is_dev()) call x%sync() + call x%psb_z_base_vect_type%ins(n, irl, val, dupl, info) + call x%set_host() + + + end subroutine z_oacc_ins_a + + subroutine z_oacc_bld_mn(x, n) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call x%all(n, info) + if (info /= 0) then + call psb_errpush(info, 'z_oacc_bld_mn', i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + + end subroutine z_oacc_bld_mn + + + subroutine z_oacc_bld_x(x, this) + use psb_base_mod + implicit none + complex(psb_dpk_), intent(in) :: this(:) + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + + call x%free(info) + call psb_realloc(size(this), x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'z_oacc_bld_x', & + i_err=(/size(this), izero, izero, izero, izero/)) + return + end if + x%v(:) = this(:) + call x%set_host() + call x%sync_dev_space() + + end subroutine z_oacc_bld_x + + subroutine z_oacc_asb_m(n, x, info) + use psb_base_mod + implicit none + integer(psb_mpk_), intent(in) :: n + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + integer(psb_mpk_) :: nd + + info = psb_success_ + + if (x%is_dev()) then + nd = size(x%v) + if (nd < n) then + call x%sync() + call x%psb_z_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + else + if (size(x%v) < n) then + call x%psb_z_base_vect_type%asb(n, info) + if (info == psb_success_) call x%sync() + call x%set_host() + end if + end if + end subroutine z_oacc_asb_m + + subroutine z_oacc_set_scal(x, val, first, last) + class(psb_z_vect_oacc), intent(inout) :: x + complex(psb_dpk_), intent(in) :: val + integer(psb_ipk_), optional :: first, last + + integer(psb_ipk_) :: first_, last_ + first_ = 1 + last_ = x%get_nrows() + if (present(first)) first_ = max(1, first) + if (present(last)) last_ = min(last, last_) + + !$acc parallel loop present(x%v) + do i = first_, last_ + x%v(i) = val + end do + !$acc end parallel loop + + call x%set_dev() + end subroutine z_oacc_set_scal + + subroutine z_oacc_zero(x) + use psi_serial_mod + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + call x%set_dev() + call x%set_scal(zzero) + end subroutine z_oacc_zero + + function z_oacc_get_nrows(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + integer(psb_ipk_) :: res + + if (allocated(x%v)) res = size(x%v) + end function z_oacc_get_nrows + + function z_oacc_get_fmt() result(res) + implicit none + character(len=5) :: res + res = "zOACC" + + end function z_oacc_get_fmt + + + function z_oacc_vect_dot(n, x, y) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + class(psb_z_base_vect_type), intent(inout) :: y + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_) :: res + integer(psb_ipk_) :: info + + res = zzero +!!$ write(0,*) 'oacc_dot_v' + select type(yy => y) + type is (psb_z_vect_oacc) + if (x%is_host()) call x%sync() + if (yy%is_host()) call yy%sync() + res = z_inner_oacc_dot(n, x%v, yy%v) + class default + if (x%is_dev()) call x%sync() + res = y%dot(n, x%v) + end select + contains + function z_inner_oacc_dot(n, x, y) result(res) + implicit none + complex(psb_dpk_), intent(in) :: x(:) + complex(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_) :: res + integer(psb_ipk_) :: i + + !$acc parallel loop reduction(+:res) present(x, y) + do i = 1, n + res = res + x(i) * y(i) + end do + !$acc end parallel loop + end function z_inner_oacc_dot + end function z_oacc_vect_dot + + function z_oacc_dot_a(n, x, y) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + complex(psb_dpk_), intent(in) :: y(:) + integer(psb_ipk_), intent(in) :: n + complex(psb_dpk_) :: res + complex(psb_dpk_), external :: zdot + + if (x%is_dev()) call x%sync() + res = zdot(n, y, 1, x%v, 1) + + end function z_oacc_dot_a + + + subroutine z_oacc_new_buffer(n,x,info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), intent(out) :: info + + !write(0,*) 'oacc new_buffer',n,psb_size(x%combuf) + if (n > psb_size(x%combuf)) then + !write(0,*) 'oacc new_buffer: reallocating ' + if (allocated(x%combuf)) then + !if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + !$acc exit data delete(x%combuf) + end if + call x%psb_z_base_vect_type%new_buffer(n,info) + !$acc enter data copyin(x%combuf) + ! call acc_copyin(x%combuf) + end if + end subroutine z_oacc_new_buffer + + subroutine z_oacc_sync_dev_space(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x +!!$ write(0,*) 'oacc sync_dev_space' + if (psb_size(x%v)>0) call acc_copyin(x%v) + end subroutine z_oacc_sync_dev_space + + subroutine z_oacc_sync(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + if (x%is_dev()) then + if (psb_size(x%v)>0) call acc_update_self(x%v) + end if + if (x%is_host()) then + if (.not.acc_is_present(x%v)) call z_oacc_sync_dev_space(x) + if (psb_size(x%v)>0) call acc_update_device(x%v) + end if + call x%set_sync() + end subroutine z_oacc_sync + + subroutine z_oacc_set_host(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + + x%state = is_host + end subroutine z_oacc_set_host + + subroutine z_oacc_set_dev(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + + x%state = is_dev + end subroutine z_oacc_set_dev + + subroutine z_oacc_set_sync(x) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + + x%state = is_sync + end subroutine z_oacc_set_sync + + function z_oacc_is_dev(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_dev) + end function z_oacc_is_dev + + function z_oacc_is_host(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_host) + end function z_oacc_is_host + + function z_oacc_is_sync(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(in) :: x + logical :: res + + res = (x%state == is_sync) + end function z_oacc_is_sync + + subroutine z_oacc_vect_all(n, x, info) + use psi_serial_mod + use psb_realloc_mod + implicit none + integer(psb_ipk_), intent(in) :: n + class(psb_z_vect_oacc), intent(out) :: x + integer(psb_ipk_), intent(out) :: info + + call psb_realloc(n, x%v, info) + if (info /= 0) then + info = psb_err_alloc_request_ + call psb_errpush(info, 'z_oacc_all', & + i_err=(/n, n, n, n, n/)) + end if + call x%set_host() + call x%sync_dev_space() + end subroutine z_oacc_vect_all + + subroutine z_oacc_final_vect_free(x) + implicit none + type(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: info + info = 0 +!!$ write(0,*) 'oacc final_vect_free' + call x%free_buffer(info) + if (allocated(x%v)) then + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + deallocate(x%v, stat=info) + end if + + end subroutine z_oacc_final_vect_free + + subroutine z_oacc_vect_free(x, info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + info = 0 +!!$ write(0,*) 'oacc vect_free' + call x%free_buffer(info) + if (acc_is_present(x%v)) call acc_delete_finalize(x%v) + call x%psb_z_base_vect_type%free(info) + end subroutine z_oacc_vect_free + + subroutine z_oacc_vect_maybe_free_buffer(x,info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + + info = 0 + if (psb_oacc_get_maybe_free_buffer()) then + !write(0,*) 'psb_oacc_get_maybe_free_buffer() ',psb_oacc_get_maybe_free_buffer() + call x%free_buffer(info) + end if + + end subroutine z_oacc_vect_maybe_free_buffer + + subroutine z_oacc_vect_free_buffer(x,info) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_), intent(out) :: info +! write(0,*) 'oacc free_buffer' + info = 0 + if (acc_is_present(x%combuf)) call acc_delete_finalize(x%combuf) + call x%psb_z_base_vect_type%free_buffer(info) + + end subroutine z_oacc_vect_free_buffer + + function z_oacc_get_size(x) result(res) + implicit none + class(psb_z_vect_oacc), intent(inout) :: x + integer(psb_ipk_) :: res + + res = size(x%v) + end function z_oacc_get_size + +end module psb_z_oacc_vect_mod diff --git a/test/cudakern/Makefile b/test/cudakern/Makefile index 41cef197..4b8091d5 100755 --- a/test/cudakern/Makefile +++ b/test/cudakern/Makefile @@ -41,3 +41,8 @@ lib: (cd ../../; make library) verycleanlib: (cd ../../; make veryclean) + +%.o: %.F90 + $(FC) $(FFLAGS) $(FINCLUDES) $(FCUDEFINES) -c $< -o $@ +%.o: %.f90 + $(FC) $(FFLAGS) $(FINCLUDES) $(FCUDEFINES) -c $< -o $@ diff --git a/test/cudakern/dpdegenmv.F90 b/test/cudakern/dpdegenmv.F90 index 85059e81..a5463f0b 100644 --- a/test/cudakern/dpdegenmv.F90 +++ b/test/cudakern/dpdegenmv.F90 @@ -594,7 +594,7 @@ program pdgenmv ! solver parameters integer(psb_epk_) :: amatsize, precsize, descsize, annz, nbytes - real(psb_dpk_) :: err, eps + real(psb_dpk_) :: err, eps, tnv, tng,tdot, dnrm2,ddot integer, parameter :: ntests=200, ngpu=50, ncnv=20 type(psb_d_coo_sparse_mat), target :: acoo type(psb_d_csr_sparse_mat), target :: acsr @@ -745,7 +745,7 @@ program pdgenmv call psb_geall(x0,desc_a,info) do i=1, nr call desc_a%l2g(i,ig,info) - x0(i) = 1.0 + (1.0*ig)/nrg + x0(i) = 1.0 + (1.0*ig)/(nrg**2) end do call a%cscnv(aux_a,info,mold=acoo) tcnvcsr = 0 @@ -843,6 +843,12 @@ program pdgenmv call bg%sync() x1 = bv%get_vect() x2 = bg%get_vect() + tnv = psb_genrm2(bv,desc_a,info) + tng = psb_genrm2(bg,desc_a,info) + tdot = psb_gedot(bg,bg,desc_a,info) + write(0,*) ' bv ',tnv,' bg ',tng, ' dot ',tdot,eps,& + & dnrm2(desc_a%get_local_rows(),x2,1),& + & ddot(desc_a%get_local_rows(),x1,1,x2,1) call psb_geaxpby(-done,bg,+done,bv,desc_a,info) eps = psb_geamax(bv,desc_a,info) diff --git a/test/cudakern/spdegenmv.F90 b/test/cudakern/spdegenmv.F90 index f953e163..fbce6726 100644 --- a/test/cudakern/spdegenmv.F90 +++ b/test/cudakern/spdegenmv.F90 @@ -580,7 +580,7 @@ program pdgenmv ! solver parameters integer(psb_epk_) :: amatsize, precsize, descsize, annz, nbytes - real(psb_spk_) :: err, eps + real(psb_spk_) :: err, eps, tnv, tng,tdot, snrm2,sdot integer, parameter :: ntests=200, ngpu=50, ncnv=20 type(psb_s_coo_sparse_mat), target :: acoo type(psb_s_csr_sparse_mat), target :: acsr @@ -728,7 +728,7 @@ program pdgenmv call psb_geall(x0,desc_a,info) do i=1, nr call desc_a%l2g(i,ig,info) - x0(i) = 1.0 + (1.0*ig)/nrg + x0(i) = 1.0 + (1.0*ig)/(nrg**2) end do call a%cscnv(aux_a,info,mold=acoo) tcnvcsr = 0 @@ -826,10 +826,16 @@ program pdgenmv call psb_amx(ctxt,gt2) call bg%sync() x1 = bv%get_vect() - x2 = bg%get_vect() + x2 = bg%get_vect() + tnv = psb_genrm2(bv,desc_a,info) + tng = psb_genrm2(bg,desc_a,info) + tdot = psb_gedot(bg,bg,desc_a,info) + write(0,*) ' bv ',tnv,' bg ',tng, ' dot ',tdot,eps,& + & snrm2(desc_a%get_local_rows(),x2,1),& + & sdot(desc_a%get_local_rows(),x1,1,x2,1) call psb_geaxpby(-sone,bg,+sone,bv,desc_a,info) eps = psb_geamax(bv,desc_a,info) - + call psb_amx(ctxt,t2) eps = maxval(abs(x1(1:nr)-x2(1:nr))) call psb_amx(ctxt,eps) diff --git a/test/fileread/Makefile b/test/fileread/Makefile index 132a2e15..a7afaabc 100644 --- a/test/fileread/Makefile +++ b/test/fileread/Makefile @@ -6,7 +6,7 @@ include $(INCDIR)/Make.inc.psblas # Libraries used # LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/fileread/psb_cf_sample.f90 b/test/fileread/psb_cf_sample.f90 index 3c0ce8f9..01d9a10b 100644 --- a/test/fileread/psb_cf_sample.f90 +++ b/test/fileread/psb_cf_sample.f90 @@ -32,7 +32,7 @@ program psb_cf_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/fileread/psb_df_sample.f90 b/test/fileread/psb_df_sample.f90 index 25a121a4..b186241d 100644 --- a/test/fileread/psb_df_sample.f90 +++ b/test/fileread/psb_df_sample.f90 @@ -32,7 +32,7 @@ program psb_df_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/fileread/psb_sf_sample.f90 b/test/fileread/psb_sf_sample.f90 index 8d9ccb0a..da0fe6b4 100644 --- a/test/fileread/psb_sf_sample.f90 +++ b/test/fileread/psb_sf_sample.f90 @@ -32,7 +32,7 @@ program psb_sf_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/fileread/psb_zf_sample.f90 b/test/fileread/psb_zf_sample.f90 index 3c024606..eefe0901 100644 --- a/test/fileread/psb_zf_sample.f90 +++ b/test/fileread/psb_zf_sample.f90 @@ -32,7 +32,7 @@ program psb_zf_sample use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use getp implicit none diff --git a/test/hello/Makefile b/test/hello/Makefile index cbdd358f..dd04768d 100644 --- a/test/hello/Makefile +++ b/test/hello/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(BASEDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such diff --git a/test/kernel/Makefile b/test/kernel/Makefile index 21851beb..7e413092 100644 --- a/test/kernel/Makefile +++ b/test/kernel/Makefile @@ -6,7 +6,7 @@ INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/omp/Makefile b/test/omp/Makefile index c35431c5..3eca17de 100644 --- a/test/omp/Makefile +++ b/test/omp/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(INSTALLDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such diff --git a/test/omp/psb_tomp.F90 b/test/omp/psb_tomp.F90 index 79097ca8..a2b21ef7 100644 --- a/test/omp/psb_tomp.F90 +++ b/test/omp/psb_tomp.F90 @@ -658,7 +658,7 @@ end module psb_d_pde3d_mod program psb_d_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde3d_mod #if defined(OPENMP) diff --git a/test/openacc/Makefile b/test/openacc/Makefile new file mode 100644 index 00000000..16673b35 --- /dev/null +++ b/test/openacc/Makefile @@ -0,0 +1,53 @@ +TOPDIR=../.. +include $(TOPDIR)/Make.inc + +LIBDIR=$(TOPDIR)/lib/ +PSBLIBDIR=$(TOPDIR)/lib/ +PSBINCDIR=$(TOPDIR)/include +PSBMODDIR=$(TOPDIR)/modules +INCDIR=$(TOPDIR)/include +MODDIR=$(TOPDIR)/modules +EXEDIR=./runs + +PSBLAS_LIB= -L$(LIBDIR) -L$(PSBLIBDIR) -lpsb_openacc -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base +LDLIBS=$(PSBGPULDLIBS) + +FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(FMFLAG). $(FMFLAG)$(PSBMODDIR) $(FMFLAG)$(PSBINCDIR) $(LIBRSB_DEFINES) + +FFLAGS=-O0 -march=native -fopenacc -foffload=nvptx-none="-march=sm_70" +CFLAGS=-O0 -march=native + +VTC=vectoacc.o +DVT=datavect.o +CSRC=timers.c + +OBJS=$(SRCS:.F90=.o) $(CSRC:.c=.o) + +all: dir psb_d_oacc_pde3d + +#$(OBJS) +# $(FC) $(FFLAGS) $(OBJS) -o datavect $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) +# /bin/mv datavect $(EXEDIR) + +dir: + @if test ! -d $(EXEDIR); then mkdir $(EXEDIR); fi + +%: %.o timers.o + $(FC) $(FFLAGS) $^ -o $@ $(FINCLUDES) $(PSBLAS_LIB) $(LDLIBS) + /bin/mv $@ $(EXEDIR) + +%.o: %.F90 + $(FC) $(FFLAGS) $(FINCLUDES) -c $< -o $@ + +%.o: %.c + $(CC) $(CFLAGS) $(FINCLUDES) -c $< -o $@ + +psb_d_oacc_pde3d: + mpifort -fallow-argument-mismatch -frecursive -g -O3 -frecursive -I../../modules/ -I. -DOPENACC -DHAVE_LAPACK -DHAVE_FLUSH_STMT -DLPK8 -DIPK4 -DMPI_MOD -c psb_d_oacc_pde3d.F90 -o psb_d_oacc_pde3d.o + $(FLINK) -fopenacc -DOPENACC psb_d_oacc_pde3d.o -o psb_d_oacc_pde3d $(PSBLAS_LIB) $(LDLIBS) + /bin/mv psb_d_oacc_pde3d $(EXEDIR) + +clean: + /bin/rm -fr *.o *.mod $(EXEDIR)/* + +.PHONY: all dir clean diff --git a/test/openacc/datavect.F90 b/test/openacc/datavect.F90 new file mode 100644 index 00000000..b78a65d9 --- /dev/null +++ b/test/openacc/datavect.F90 @@ -0,0 +1,84 @@ +program datavect + use psb_base_mod + use psb_oacc_mod + implicit none + + type(psb_d_vect_oacc) :: v3, v4, v5 + integer(psb_ipk_) :: info, n, i, old_percentage, percentage + real(psb_dpk_) :: alpha, dot_dev, dot_host, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev + double precision, external :: etime + double precision :: time_start, time_end + integer, parameter :: min_size = 1000, max_size = 100000000, step_size = 1000000 + integer, parameter :: ntests = 80, ngpu = 20 + integer :: size + character(len=20) :: filename + + open(unit=10, file='performance_data.csv', status='unknown') + write(10, '(A, A, A, A, A)') 'Size,Alloc_Host,Alloc_Dev,Calc_Host,Calc_Dev' + + write(*, *) 'Test of the vector operations with OpenACC' + + alpha = 2.0 + old_percentage = 0 + + do size = min_size, max_size, step_size + n = size + percentage = int(real(size - min_size) / real(max_size - min_size) * 100.0) + if (percentage /= old_percentage) then + write(*, '(A,I3,A)', advance='no') 'Progress: ', percentage, '%' + write(*,'(A)', advance='no') char(13) + old_percentage = percentage + end if + + time_start = etime() + call v3%all(n, info) + call v4%all(n, info) + call v5%all(n, info) + time_end = etime() + t_alloc_host = (time_end - time_start) + + do i = 1, n + v3%v(i) = real(i, psb_dpk_) + v4%v(i) = real(n - i, psb_dpk_) + end do + + call v3%scal(alpha) + + call v3%set_host() + call v4%set_host() + + time_start = etime() + do i = 1, ntests + dot_host = sum(v3%v * v4%v) + end do + time_end = etime() + t_calc_host = (time_end - time_start) / real(ntests) + + time_start = etime() + call v3%set_dev() + call v4%set_dev() + call v3%sync_space() + call v4%sync_space() + time_end = etime() + t_alloc_dev = (time_end - time_start) + + time_start = etime() + do i = 1, ntests + dot_dev = v3%dot_v(n, v4) + end do + !$acc wait + time_end = etime() + t_calc_dev = (time_end - time_start) / real(ntests) + + write(10, '(I10, 1X, ES12.5, 1X, ES12.5, 1X, ES12.5, 1X, ES12.5)') size, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev + + call v3%free(info) + call v4%free(info) + call v5%free(info) + end do + + close(10) + write(*, *) 'Performance data written to performance_data.csv' + + +end program datavect diff --git a/test/openacc/psb_d_oacc_pde3d.F90 b/test/openacc/psb_d_oacc_pde3d.F90 new file mode 100644 index 00000000..bc889b1f --- /dev/null +++ b/test/openacc/psb_d_oacc_pde3d.F90 @@ -0,0 +1,1074 @@ +! +! Parallel Sparse BLAS version 3.5 +! (C) Copyright 2006-2018 +! Salvatore Filippone +! Alfredo Buttari +! +! Redistribution and use in source and binary forms, with or without +! modification, are permitted provided that the following conditions +! are met: +! 1. Redistributions of source code must retain the above copyright +! notice, this list of conditions and the following disclaimer. +! 2. Redistributions in binary form must reproduce the above copyright +! notice, this list of conditions, and the following disclaimer in the +! documentation and/or other materials provided with the distribution. +! 3. The name of the PSBLAS group or the names of its contributors may +! not be used to endorse or promote products derived from this +! software without specific written permission. +! +! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS +! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +! POSSIBILITY OF SUCH DAMAGE. +! +! +! File: psb_d_pde3d.f90 +! +! Program: psb_d_pde3d +! This sample program solves a linear system obtained by discretizing a +! PDE with Dirichlet BCs. +! +! +! The PDE is a general second order equation in 3d +! +! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u) +! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f +! dxdx dydy dzdz dx dy dz +! +! with Dirichlet boundary conditions +! u = g +! +! on the unit cube 0<=x,y,z<=1. +! +! +! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation. +! +! There are three choices available for data distribution: +! 1. A simple BLOCK distribution +! 2. A ditribution based on arbitrary assignment of indices to processes, +! typically from a graph partitioner +! 3. A 3D distribution in which the unit cube is partitioned +! into subcubes, each one assigned to a process. +! +! +module psb_d_pde3d_mod + + + use psb_base_mod, only : psb_dpk_, psb_ipk_, psb_lpk_, psb_desc_type,& + & psb_dspmat_type, psb_d_vect_type, dzero,& + & psb_d_base_sparse_mat, psb_d_base_vect_type, & + & psb_i_base_vect_type, psb_l_base_vect_type + + interface + function d_func_3d(x,y,z) result(val) + import :: psb_dpk_ + real(psb_dpk_), intent(in) :: x,y,z + real(psb_dpk_) :: val + end function d_func_3d + end interface + + interface psb_gen_pde3d + module procedure psb_d_gen_pde3d + end interface psb_gen_pde3d + +contains + + function d_null_func_3d(x,y,z) result(val) + + real(psb_dpk_), intent(in) :: x,y,z + real(psb_dpk_) :: val + + val = dzero + + end function d_null_func_3d + ! + ! functions parametrizing the differential equation + ! + + ! + ! Note: b1, b2 and b3 are the coefficients of the first + ! derivative of the unknown function. The default + ! we apply here is to have them zero, so that the resulting + ! matrix is symmetric/hermitian and suitable for + ! testing with CG and FCG. + ! When testing methods for non-hermitian matrices you can + ! change the B1/B2/B3 functions to e.g. done/sqrt((3*done)) + ! + function b1(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b1 + real(psb_dpk_), intent(in) :: x,y,z + b1=dzero + end function b1 + function b2(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b2 + real(psb_dpk_), intent(in) :: x,y,z + b2=dzero + end function b2 + function b3(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: b3 + real(psb_dpk_), intent(in) :: x,y,z + b3=dzero + end function b3 + function c(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: c + real(psb_dpk_), intent(in) :: x,y,z + c=dzero + end function c + function a1(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a1 + real(psb_dpk_), intent(in) :: x,y,z + a1=done/80 + end function a1 + function a2(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a2 + real(psb_dpk_), intent(in) :: x,y,z + a2=done/80 + end function a2 + function a3(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: a3 + real(psb_dpk_), intent(in) :: x,y,z + a3=done/80 + end function a3 + function g(x,y,z) + use psb_base_mod, only : psb_dpk_, done, dzero + implicit none + real(psb_dpk_) :: g + real(psb_dpk_), intent(in) :: x,y,z + g = dzero + if (x == done) then + g = done + else if (x == dzero) then + g = exp(y**2-z**2) + end if + end function g + + + ! + ! subroutine to allocate and fill in the coefficient matrix and + ! the rhs. + ! + subroutine psb_d_gen_pde3d(ctxt,idim,a,bv,xv,desc_a,afmt,info,& + & f,amold,vmold,imold,partition,nrl,iv) + use psb_base_mod + use psb_util_mod +#if defined(OPENMP) + use omp_lib +#endif + ! + ! Discretizes the partial differential equation + ! + ! a1 dd(u) a2 dd(u) a3 dd(u) b1 d(u) b2 d(u) b3 d(u) + ! - ------ - ------ - ------ + ----- + ------ + ------ + c u = f + ! dxdx dydy dzdz dx dy dz + ! + ! with Dirichlet boundary conditions + ! u = g + ! + ! on the unit cube 0<=x,y,z<=1. + ! + ! + ! Note that if b1=b2=b3=c=0., the PDE is the Laplace equation. + ! + implicit none + integer(psb_ipk_) :: idim + type(psb_dspmat_type) :: a + type(psb_d_vect_type) :: xv,bv + type(psb_desc_type) :: desc_a + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: info + character(len=*) :: afmt + procedure(d_func_3d), optional :: f + class(psb_d_base_sparse_mat), optional :: amold + class(psb_d_base_vect_type), optional :: vmold + class(psb_i_base_vect_type), optional :: imold + integer(psb_ipk_), optional :: partition, nrl,iv(:) + + ! Local variables. + + integer(psb_ipk_), parameter :: nb=20 + type(psb_d_csc_sparse_mat) :: acsc + type(psb_d_coo_sparse_mat) :: acoo + type(psb_d_csr_sparse_mat) :: acsr + real(psb_dpk_) :: zt(nb),x,y,z + integer(psb_ipk_) :: nnz,nr,nlr,i,j,ii,ib,k, partition_, mysz + integer(psb_lpk_) :: m,n,glob_row,nt + integer(psb_ipk_) :: ix,iy,iz,ia,indx_owner + ! For 3D partition + ! Note: integer control variables going directly into an MPI call + ! must be 4 bytes, i.e. psb_mpk_ + integer(psb_mpk_) :: npdims(3), npp, minfo + integer(psb_ipk_) :: npx,npy,npz, iamx,iamy,iamz,mynx,myny,mynz + integer(psb_ipk_), allocatable :: bndx(:),bndy(:),bndz(:) + ! Process grid + integer(psb_ipk_) :: np, iam + integer(psb_ipk_) :: icoeff + integer(psb_lpk_), allocatable :: myidx(:) + ! deltah dimension of each grid cell + ! deltat discretization time + real(psb_dpk_) :: deltah, sqdeltah, deltah2 + real(psb_dpk_), parameter :: rhs=dzero,one=done,zero=dzero + real(psb_dpk_) :: t0, t1, t2, t3, tasb, talc, ttot, tgen, tcdasb + integer(psb_ipk_) :: err_act + procedure(d_func_3d), pointer :: f_ + character(len=20) :: name, ch_err,tmpfmt + + info = psb_success_ + name = 'create_matrix' + call psb_erractionsave(err_act) + + call psb_info(ctxt, iam, np) + + + if (present(f)) then + f_ => f + else + f_ => d_null_func_3d + end if + + deltah = done/(idim+1) + sqdeltah = deltah*deltah + deltah2 = (2*done)* deltah + + if (present(partition)) then + if ((1<= partition).and.(partition <= 3)) then + partition_ = partition + else + write(*,*) 'Invalid partition choice ',partition,' defaulting to 3' + partition_ = 3 + end if + else + partition_ = 3 + end if + + ! initialize array descriptor and sparse matrix storage. provide an + ! estimate of the number of non zeroes + + m = (1_psb_lpk_*idim)*idim*idim + n = m + nnz = ((n*7)/(np)) + if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n + t0 = psb_wtime() + select case(partition_) + case(1) + ! A BLOCK partition + if (present(nrl)) then + nr = nrl + else + ! + ! Using a simple BLOCK distribution. + ! + nt = (m+np-1)/np + nr = max(0,min(nt,m-(iam*nt))) + end if + + nt = nr + call psb_sum(ctxt,nt) + if (nt /= m) then + write(psb_err_unit,*) iam, 'Initialization error ',nr,nt,m + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + + ! + ! First example of use of CDALL: specify for each process a number of + ! contiguous rows + ! + call psb_cdall(ctxt,desc_a,info,nl=nr) + myidx = desc_a%get_global_indices() + nlr = size(myidx) + + case(2) + ! A partition defined by the user through IV + + if (present(iv)) then + if (size(iv) /= m) then + write(psb_err_unit,*) iam, 'Initialization error: wrong IV size',size(iv),m + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + else + write(psb_err_unit,*) iam, 'Initialization error: IV not present' + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end if + + ! + ! Second example of use of CDALL: specify for each row the + ! process that owns it + ! + call psb_cdall(ctxt,desc_a,info,vg=iv) + myidx = desc_a%get_global_indices() + nlr = size(myidx) + + case(3) + ! A 3-dimensional partition + + ! A nifty MPI function will split the process list + npdims = 0 +#if defined(SERIAL_MPI) + npdims = 1 +#else + call mpi_dims_create(np,3,npdims,info) +#endif + npx = npdims(1) + npy = npdims(2) + npz = npdims(3) + + allocate(bndx(0:npx),bndy(0:npy),bndz(0:npz)) + ! We can reuse idx2ijk for process indices as well. + call idx2ijk(iamx,iamy,iamz,iam,npx,npy,npz,base=0) + ! Now let's split the 3D cube in hexahedra + call dist1Didx(bndx,idim,npx) + mynx = bndx(iamx+1)-bndx(iamx) + call dist1Didx(bndy,idim,npy) + myny = bndy(iamy+1)-bndy(iamy) + call dist1Didx(bndz,idim,npz) + mynz = bndz(iamz+1)-bndz(iamz) + + ! How many indices do I own? + nlr = mynx*myny*mynz + allocate(myidx(nlr)) + ! Now, let's generate the list of indices I own + nr = 0 + do i=bndx(iamx),bndx(iamx+1)-1 + do j=bndy(iamy),bndy(iamy+1)-1 + do k=bndz(iamz),bndz(iamz+1)-1 + nr = nr + 1 + call ijk2idx(myidx(nr),i,j,k,idim,idim,idim) + end do + end do + end do + if (nr /= nlr) then + write(psb_err_unit,*) iam,iamx,iamy,iamz, 'Initialization error: NR vs NLR ',& + & nr,nlr,mynx,myny,mynz + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + end if + + ! + ! Third example of use of CDALL: specify for each process + ! the set of global indices it owns. + ! + call psb_cdall(ctxt,desc_a,info,vl=myidx) + + ! + ! Specify process topology + ! + block + ! + ! Use adjcncy methods + ! + integer(psb_mpk_), allocatable :: neighbours(:) + integer(psb_mpk_) :: cnt + logical, parameter :: debug_adj=.true. + if (debug_adj.and.(np > 1)) then + cnt = 0 + allocate(neighbours(np)) + if (iamx < npx-1) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx+1,iamy,iamz,npx,npy,npz,base=0) + end if + if (iamy < npy-1) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy+1,iamz,npx,npy,npz,base=0) + end if + if (iamz < npz-1) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy,iamz+1,npx,npy,npz,base=0) + end if + if (iamx >0) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx-1,iamy,iamz,npx,npy,npz,base=0) + end if + if (iamy >0) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy-1,iamz,npx,npy,npz,base=0) + end if + if (iamz >0) then + cnt = cnt + 1 + call ijk2idx(neighbours(cnt),iamx,iamy,iamz-1,npx,npy,npz,base=0) + end if + call psb_realloc(cnt, neighbours,info) + call desc_a%set_p_adjcncy(neighbours) + !write(0,*) iam,' Check on neighbours: ',desc_a%get_p_adjcncy() + end if + end block + + case default + write(psb_err_unit,*) iam, 'Initialization error: should not get here' + info = -1 + call psb_barrier(ctxt) + call psb_abort(ctxt) + return + end select + + + if (info == psb_success_) call psb_spall(a,desc_a,info,nnz=nnz, & + & bldmode=psb_matbld_remote_,dupl=psb_dupl_add_) + ! define rhs from boundary conditions; also build initial guess + if (info == psb_success_) call psb_geall(xv,desc_a,info) + if (info == psb_success_) call psb_geall(bv,desc_a,info,& + & bldmode=psb_matbld_remote_,dupl=psb_dupl_add_) + + call psb_barrier(ctxt) + talc = psb_wtime()-t0 + + if (info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='allocation rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + call psb_barrier(ctxt) + t1 = psb_wtime() + !$omp parallel shared(deltah,myidx,a,desc_a) + ! + block + integer(psb_ipk_) :: i,j,k,ii,ib,icoeff, ix,iy,iz, ith,nth + integer(psb_lpk_) :: glob_row + integer(psb_lpk_), allocatable :: irow(:),icol(:) + real(psb_dpk_), allocatable :: val(:) + real(psb_dpk_) :: x,y,z, zt(nb) +#if defined(OPENMP) + nth = omp_get_num_threads() + ith = omp_get_thread_num() +#else + nth = 1 + ith = 0 +#endif + allocate(val(20*nb),irow(20*nb),& + &icol(20*nb),stat=info) + if (info /= psb_success_ ) then + info=psb_err_alloc_dealloc_ + call psb_errpush(info,name) + !goto 9999 + endif + + !$omp do schedule(dynamic) + ! + do ii=1, nlr, nb + if(info /= psb_success_) cycle + ib = min(nb,nlr-ii+1) + !ib = min(nb,mysz-ii+1) + icoeff = 1 + do k=1,ib + i=ii+k-1 + ! local matrix pointer + glob_row=myidx(i) + ! compute gridpoint coordinates + call idx2ijk(ix,iy,iz,glob_row,idim,idim,idim) + ! x, y, z coordinates + x = (ix-1)*deltah + y = (iy-1)*deltah + z = (iz-1)*deltah + zt(k) = f_(x,y,z) + ! internal point: build discretization + ! + ! term depending on (x-1,y,z) + ! + val(icoeff) = -a1(x,y,z)/sqdeltah-b1(x,y,z)/deltah2 + if (ix == 1) then + zt(k) = g(dzero,y,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix-1,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y-1,z) + val(icoeff) = -a2(x,y,z)/sqdeltah-b2(x,y,z)/deltah2 + if (iy == 1) then + zt(k) = g(x,dzero,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy-1,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y,z-1) + val(icoeff)=-a3(x,y,z)/sqdeltah-b3(x,y,z)/deltah2 + if (iz == 1) then + zt(k) = g(x,y,dzero)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy,iz-1,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + + ! term depending on (x,y,z) + val(icoeff)=(2*done)*(a1(x,y,z)+a2(x,y,z)+a3(x,y,z))/sqdeltah & + & + c(x,y,z) + call ijk2idx(icol(icoeff),ix,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + ! term depending on (x,y,z+1) + val(icoeff)=-a3(x,y,z)/sqdeltah+b3(x,y,z)/deltah2 + if (iz == idim) then + zt(k) = g(x,y,done)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy,iz+1,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x,y+1,z) + val(icoeff)=-a2(x,y,z)/sqdeltah+b2(x,y,z)/deltah2 + if (iy == idim) then + zt(k) = g(x,done,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix,iy+1,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + ! term depending on (x+1,y,z) + val(icoeff)=-a1(x,y,z)/sqdeltah+b1(x,y,z)/deltah2 + if (ix==idim) then + zt(k) = g(done,y,z)*(-val(icoeff)) + zt(k) + else + call ijk2idx(icol(icoeff),ix+1,iy,iz,idim,idim,idim) + irow(icoeff) = glob_row + icoeff = icoeff+1 + endif + + end do +#if defined(OPENMP) +!!$ write(0,*) omp_get_thread_num(),' Check insertion ',& +!!$ & irow(1:icoeff-1),':',icol(1:icoeff-1) +#endif + call psb_spins(icoeff-1,irow,icol,val,a,desc_a,info) + if(info /= psb_success_) cycle + call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),bv,desc_a,info) + if(info /= psb_success_) cycle + zt(:)=dzero + call psb_geins(ib,myidx(ii:ii+ib-1),zt(1:ib),xv,desc_a,info) + if(info /= psb_success_) cycle + end do + !$omp end do + deallocate(val,irow,icol) + end block + !$omp end parallel + + tgen = psb_wtime()-t1 + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='insert rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + + + call psb_barrier(ctxt) + t1 = psb_wtime() + call psb_cdasb(desc_a,info,mold=imold) + tcdasb = psb_wtime()-t1 + + call psb_barrier(ctxt) + t1 = psb_wtime() + if (info == psb_success_) then + if (present(amold)) then + call psb_spasb(a,desc_a,info,mold=amold) + else + call psb_spasb(a,desc_a,info,afmt=afmt) + end if + end if + call psb_barrier(ctxt) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='asb rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + if (info == psb_success_) call psb_geasb(xv,desc_a,info,mold=vmold) + if (info == psb_success_) call psb_geasb(bv,desc_a,info,mold=vmold) + if(info /= psb_success_) then + info=psb_err_from_subroutine_ + ch_err='asb rout.' + call psb_errpush(info,name,a_err=ch_err) + goto 9999 + end if + tasb = psb_wtime()-t1 + call psb_barrier(ctxt) + ttot = psb_wtime() - t0 + + call psb_amx(ctxt,talc) + call psb_amx(ctxt,tgen) + call psb_amx(ctxt,tasb) + call psb_amx(ctxt,ttot) + if(iam == psb_root_) then + tmpfmt = a%get_fmt() + write(psb_out_unit,'("The matrix has been generated and assembled in ",a3," format.")')& + & tmpfmt + write(psb_out_unit,'("-allocation time : ",es12.5)') talc + write(psb_out_unit,'("-coeff. gen. time : ",es12.5)') tgen + write(psb_out_unit,'("-desc asbly time : ",es12.5)') tcdasb + write(psb_out_unit,'("- mat asbly time : ",es12.5)') tasb + write(psb_out_unit,'("-total time : ",es12.5)') ttot + + end if + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(ctxt,err_act) + + return + end subroutine psb_d_gen_pde3d + function outside(i,j,k,bndx,bndy,bndz,iamx,iamy,iamz) result(res) + logical :: res + integer(psb_ipk_), intent(in) :: i,j,k,iamx,iamy,iamz + integer(psb_ipk_), intent(in) :: bndx(0:),bndy(0:),bndz(0:) + + res = (i=bndx(iamx+1)) & + & .or.(j=bndy(iamy+1)) & + & .or.(k=bndz(iamz+1)) + end function outside +end module psb_d_pde3d_mod + +program psb_d_oacc_pde3d + use psb_base_mod + use psb_prec_mod + use psb_linsolve_mod + use psb_util_mod + use psb_d_pde3d_mod +#if defined(OPENACC) + use psb_oacc_mod +#endif + implicit none + + ! input parameters + character(len=20) :: kmethd, ptype + character(len=5) :: afmt, agfmt + integer(psb_ipk_) :: idim + integer(psb_epk_) :: system_size + + ! miscellaneous + real(psb_dpk_), parameter :: one = done + real(psb_dpk_) :: t1, t2, tprec + + ! sparse matrix and preconditioner + type(psb_dspmat_type) :: a, agpu + type(psb_dprec_type) :: prec + ! descriptor + type(psb_desc_type) :: desc_a + ! dense vectors + type(psb_d_vect_type), target :: xxv, bv, xg, bg +#ifdef OPENACC + type(psb_d_vect_oacc) :: vmold + type(psb_i_vect_oacc) :: imold + type(psb_d_oacc_csr_sparse_mat) :: acsrg +#endif + real(psb_dpk_), allocatable :: x0(:) + ! parallel environment + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: iam, np, nth + + ! solver parameters + integer(psb_ipk_) :: iter, itmax, itrace, istopc, irst, ipart + integer(psb_epk_) :: amatsize, precsize, descsize, d2size + real(psb_dpk_) :: err, eps + + ! Parameters for solvers in Block-Jacobi preconditioner + type ainvparms + character(len=12) :: alg, orth_alg, ilu_alg, ilut_scale + integer(psb_ipk_) :: fill, inv_fill + real(psb_dpk_) :: thresh, inv_thresh + end type ainvparms + type(ainvparms) :: parms + + ! other variables + integer(psb_ipk_) :: info, i + character(len=20) :: name, ch_err + character(len=40) :: fname + + info = psb_success_ + + call psb_init(ctxt) + call psb_info(ctxt, iam, np) + +#if defined(OPENACC) + call psb_oacc_init(ctxt) +#endif + + nth = 1 + + if (iam < 0) then + ! This should not happen, but just in case + call psb_exit(ctxt) + stop + endif + if (psb_errstatus_fatal()) goto 9999 + name = 'pde3d90_oacc' + call psb_set_errverbosity(itwo) + + ! Hello world + if (iam == psb_root_) then + write(*,*) 'Welcome to PSBLAS version: ', psb_version_string_ + write(*,*) 'This is the ', trim(name), ' sample program' + end if + + ! get parameters + call get_parms(ctxt, kmethd, ptype, afmt, agfmt, idim, istopc,& + & itmax, itrace, irst, ipart, parms) + + ! allocate and fill in the coefficient matrix, rhs and initial guess + call psb_barrier(ctxt) + t1 = psb_wtime() + call psb_gen_pde3d(ctxt, idim, a, bv, xxv, desc_a, afmt, info, partition = ipart) + call psb_barrier(ctxt) + t2 = psb_wtime() - t1 + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'psb_gen_pde3d' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + if (iam == psb_root_) write(psb_out_unit, '("Overall matrix creation time : ", es12.5)') t2 + if (iam == psb_root_) write(psb_out_unit, '(" ")') + +#ifdef OPENACC + ! Convert matrix to GPU format + call a%cscnv(agpu, info, mold = acsrg) + if ((info /= 0) .or. (psb_get_errstatus() /= 0)) then + write(0,*) 'From cscnv ', info + call psb_error() + stop + end if + call desc_a%cnv(mold = imold) + call psb_geasb(bg, desc_a, info, scratch = .true., mold = vmold) + call psb_geasb(xg, desc_a, info, scratch = .true., mold = vmold) +#endif + + ! prepare the preconditioner. + if (iam == psb_root_) write(psb_out_unit, '("Setting preconditioner to : ", a)') ptype + call prec%init(ctxt, ptype, info) + + ! Set the options for the BJAC preconditioner + if (psb_toupper(ptype) == "BJAC") then + call prec%set('sub_solve', parms%alg, info) + select case (psb_toupper(parms%alg)) + case ("ILU") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('ilu_alg', parms%ilu_alg, info) + case ("ILUT") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('sub_iluthrs', parms%thresh, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + case ("AINV") + call prec%set('inv_thresh', parms%inv_thresh, info) + call prec%set('inv_fillin', parms%inv_fill, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + call prec%set('ainv_alg', parms%orth_alg, info) + case ("INVK") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('inv_fillin', parms%inv_fill, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + case ("INVT") + call prec%set('sub_fillin', parms%fill, info) + call prec%set('inv_fillin', parms%inv_fill, info) + call prec%set('sub_iluthrs', parms%thresh, info) + call prec%set('inv_thresh', parms%inv_thresh, info) + call prec%set('ilut_scale', parms%ilut_scale, info) + case default + ! Do nothing, use default setting in the init routine + end select + else + ! nothing to set for NONE or DIAG preconditioner + end if + + call psb_barrier(ctxt) + t1 = psb_wtime() + call prec%build(a, desc_a, info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'psb_precbld' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + + tprec = psb_wtime() - t1 + + call psb_amx(ctxt, tprec) + + if (iam == psb_root_) write(psb_out_unit, '("Preconditioner time : ", es12.5)') tprec + if (iam == psb_root_) write(psb_out_unit, '(" ")') + call prec%descr(info) + + ! iterative method parameters + if (iam == psb_root_) write(psb_out_unit, '("Calling iterative method ", a)') kmethd + call psb_barrier(ctxt) + t1 = psb_wtime() + eps = 1.d-6 + +#ifdef OPENACC + call psb_krylov(kmethd, agpu, prec, bv, xxv, eps, desc_a, info, & + itmax = itmax, iter = iter, err = err, itrace = itrace, istop = istopc, irst = irst) +#else + call psb_krylov(kmethd, a, prec, bv, xxv, eps, desc_a, info, & + itmax = itmax, iter = iter, err = err, itrace = itrace, istop = istopc, irst = irst) +#endif + + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'solver routine' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + + call psb_barrier(ctxt) + t2 = psb_wtime() - t1 + call psb_amx(ctxt, t2) + amatsize = a%sizeof() + descsize = desc_a%sizeof() + precsize = prec%sizeof() + system_size = desc_a%get_global_rows() + call psb_sum(ctxt, amatsize) + call psb_sum(ctxt, descsize) + call psb_sum(ctxt, precsize) + + if (iam == psb_root_) then + write(psb_out_unit, '(" ")') + write(psb_out_unit, '("Number of processes : ", i12)') np + write(psb_out_unit, '("Number of threads : ", i12)') nth + write(psb_out_unit, '("Total number of tasks : ", i12)') nth * np + write(psb_out_unit, '("Linear system size : ", i12)') system_size + write(psb_out_unit, '("Time to solve system : ", es12.5)') t2 + write(psb_out_unit, '("Time per iteration : ", es12.5)') t2 / iter + write(psb_out_unit, '("Number of iterations : ", i12)') iter + write(psb_out_unit, '("Convergence indicator on exit : ", es12.5)') err + write(psb_out_unit, '("Info on exit : ", i12)') info + write(psb_out_unit, '("Total memory occupation for A: ", i12)') amatsize + write(psb_out_unit, '("Total memory occupation for PREC: ", i12)') precsize + write(psb_out_unit, '("Total memory occupation for DESC_A: ", i12)') descsize + write(psb_out_unit, '("Storage format for A: ", a)') a%get_fmt() + write(psb_out_unit, '("Storage format for DESC_A: ", a)') desc_a%get_fmt() + end if + + ! cleanup storage and exit + call psb_gefree(bv, desc_a, info) + call psb_gefree(xxv, desc_a, info) + call psb_spfree(a, desc_a, info) + call prec%free(info) + call psb_cdfree(desc_a, info) + if (info /= psb_success_) then + info = psb_err_from_subroutine_ + ch_err = 'free routine' + call psb_errpush(info, name, a_err = ch_err) + goto 9999 + end if + +#ifdef OPENACC + call psb_oacc_exit() +#endif + call psb_exit(ctxt) + stop + +9999 call psb_error(ctxt) + + stop + +contains + ! get iteration parameters from standard input + subroutine get_parms(ctxt, kmethd, ptype, afmt, agfmt, idim, istopc, itmax, itrace, irst, ipart, parms) + type(psb_ctxt_type) :: ctxt + character(len = *) :: kmethd, ptype, afmt, agfmt + integer(psb_ipk_) :: idim, istopc, itmax, itrace, irst, ipart + integer(psb_ipk_) :: np, iam + integer(psb_ipk_) :: ip, inp_unit + character(len = 1024) :: filename + type(ainvparms) :: parms + + call psb_info(ctxt, iam, np) + + if (iam == 0) then + if (command_argument_count() > 0) then + call get_command_argument(1, filename) + inp_unit = 30 + open(inp_unit, file = filename, action = 'read', iostat = info) + if (info /= 0) then + write(psb_err_unit, *) 'Could not open file ', filename, ' for input' + call psb_abort(ctxt) + stop + else + write(psb_err_unit, *) 'Opened file ', trim(filename), ' for input' + end if + else + inp_unit = psb_inp_unit + end if + read(inp_unit, *) ip + if (ip >= 3) then + read(inp_unit, *) kmethd + read(inp_unit, *) ptype + read(inp_unit, *) afmt + read(inp_unit, *) agfmt + read(inp_unit, *) idim + if (ip >= 4) then + read(inp_unit, *) ipart + else + ipart = 3 + endif + if (ip >= 5) then + read(inp_unit, *) istopc + else + istopc = 1 + endif + if (ip >= 6) then + read(inp_unit, *) itmax + else + itmax = 500 + endif + if (ip >= 7) then + read(inp_unit, *) itrace + else + itrace = -1 + endif + if (ip >= 8) then + read(inp_unit, *) irst + else + irst = 1 + endif + if (ip >= 9) then + read(inp_unit, *) parms%alg + read(inp_unit, *) parms%ilu_alg + read(inp_unit, *) parms%ilut_scale + read(inp_unit, *) parms%fill + read(inp_unit, *) parms%inv_fill + read(inp_unit, *) parms%thresh + read(inp_unit, *) parms%inv_thresh + read(inp_unit, *) parms%orth_alg + else + parms%alg = 'ILU' ! Block Solver ILU, ILUT, INVK, AINVT, AORTH + parms%ilu_alg = 'NONE' ! If ILU : MILU or NONE otherwise ignored + parms%ilut_scale = 'NONE' ! If ILUT: NONE, MAXVAL, DIAG, ARWSUM, ACLSUM, ARCSUM + parms%fill = 0 ! Level of fill for forward factorization + parms%inv_fill = 1 ! Level of fill for inverse factorization (only INVK) + parms%thresh = 1E-1_psb_dpk_ ! Threshold for forward factorization + parms%inv_thresh = 1E-1_psb_dpk_ ! Threshold for inverse factorization + parms%orth_alg = 'LLK' ! What orthogonalization algorithm? + endif + + write(psb_out_unit, '("Solving matrix : ell1")') + write(psb_out_unit, & + '("Grid dimensions : ", i4, " x ", i4, " x ", i4)') & + idim, idim, idim + write(psb_out_unit, '("Number of processors : ", i0)') np + select case (ipart) + case (1) + write(psb_out_unit, '("Data distribution : BLOCK")') + case (3) + write(psb_out_unit, '("Data distribution : 3D")') + case default + ipart = 3 + write(psb_out_unit, '("Unknown data distrbution, defaulting to 3D")') + end select + write(psb_out_unit, '("Preconditioner : ", a)') ptype + if (psb_toupper(ptype) == "BJAC") then + write(psb_out_unit, '("Block subsolver : ", a)') parms%alg + select case (psb_toupper(parms%alg)) + case ('ILU') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("MILU : ", a)') parms%ilu_alg + case ('ILUT') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("Threshold : ", es12.5)') parms%thresh + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case ('INVK') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("Invese Fill in : ", i0)') parms%inv_fill + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case ('INVT') + write(psb_out_unit, '("Fill in : ", i0)') parms%fill + write(psb_out_unit, '("Threshold : ", es12.5)') parms%thresh + write(psb_out_unit, '("Invese Fill in : ", i0)') parms%inv_fill + write(psb_out_unit, '("Inverse Threshold : ", es12.5)') parms%inv_thresh + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case ('AINV', 'AORTH') + write(psb_out_unit, '("Inverse Threshold : ", es12.5)') parms%inv_thresh + write(psb_out_unit, '("Invese Fill in : ", i0)') parms%inv_fill + write(psb_out_unit, '("Orthogonalization : ", a)') parms%orth_alg + write(psb_out_unit, '("Scaling : ", a)') parms%ilut_scale + case default + write(psb_out_unit, '("Unknown diagonal solver")') + end select + end if + write(psb_out_unit, '("Iterative method : ", a)') kmethd + write(psb_out_unit, '(" ")') + else + ! wrong number of parameter, print an error message and exit + call pr_usage(izero) + call psb_abort(ctxt) + stop 1 + endif + if (inp_unit /= psb_inp_unit) then + close(inp_unit) + end if + end if + ! broadcast parameters to all processors + call psb_bcast(ctxt, kmethd) + call psb_bcast(ctxt, afmt) + call psb_bcast(ctxt, agfmt) + call psb_bcast(ctxt, ptype) + call psb_bcast(ctxt, idim) + call psb_bcast(ctxt, ipart) + call psb_bcast(ctxt, istopc) + call psb_bcast(ctxt, itmax) + call psb_bcast(ctxt, itrace) + call psb_bcast(ctxt, irst) + call psb_bcast(ctxt, parms%alg) + call psb_bcast(ctxt, parms%fill) + call psb_bcast(ctxt, parms%inv_fill) + call psb_bcast(ctxt, parms%thresh) + call psb_bcast(ctxt, parms%inv_thresh) + call psb_bcast(ctxt, parms%orth_alg) + call psb_bcast(ctxt, parms%ilut_scale) + + return + + end subroutine get_parms + + ! print an error message + subroutine pr_usage(iout) + integer(psb_ipk_) :: iout + write(iout, *) 'incorrect parameter(s) found' + write(iout, *) ' usage: pde3d90 methd prec dim &' + write(iout, *) '[istop itmax itrace]' + write(iout, *) ' where:' + write(iout, *) ' methd: cgstab cgs rgmres bicgstabl' + write(iout, *) ' prec : bjac diag none' + write(iout, *) ' dim number of points along each axis' + write(iout, *) ' the size of the resulting linear ' + write(iout, *) ' system is dim**3' + write(iout, *) ' ipart data partition 1 3 ' + write(iout, *) ' istop stopping criterion 1, 2 ' + write(iout, *) ' itmax maximum number of iterations [500] ' + write(iout, *) ' itrace <=0 (no tracing, default) or ' + write(iout, *) ' >= 1 do tracing every itrace' + write(iout, *) ' iterations ' + end subroutine pr_usage + +end program psb_d_oacc_pde3d diff --git a/test/openacc/timers.c b/test/openacc/timers.c new file mode 100644 index 00000000..12fa4f56 --- /dev/null +++ b/test/openacc/timers.c @@ -0,0 +1,97 @@ +#include +#include +#include + +double wtime() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec)*1.0e3 + ((double)tt.tv_usec)*1.0e-3; + return(temp); +} + +double timef_() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec)*1.0e3 + ((double)tt.tv_usec)*1.0e-3; + return(temp); +} + +double timef() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec)*1.0e3 + ((double)tt.tv_usec)*1.0e-3; + return(temp); +} + +double etime() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + +double etime_() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + +double etimef() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + +double etimef_() +{ + struct timeval tt; + struct timezone tz; + double temp; + if (gettimeofday(&tt,&tz) != 0) { + fprintf(stderr,"Fatal error for gettimeofday ??? \n"); + exit(-1); + } + temp = ((double)tt.tv_sec) + ((double)tt.tv_usec)*1.0e-6; + return(temp); +} + + + diff --git a/test/openacc/vectoacc.F90 b/test/openacc/vectoacc.F90 new file mode 100644 index 00000000..639a2a67 --- /dev/null +++ b/test/openacc/vectoacc.F90 @@ -0,0 +1,99 @@ +program vectoacc + use psb_base_mod + use psb_oacc_mod + implicit none + + type(psb_d_vect_oacc) :: v3, v4, v5 + integer(psb_ipk_) :: info, n, i + real(psb_dpk_) :: alpha, beta, result + double precision, external :: etime + + real(psb_dpk_) :: dot_host, dot_dev, t_host, t_dev, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev + double precision :: time_start, time_end + integer(psb_ipk_), parameter :: ntests=80, ngpu=20 + + write(*, *) 'Test of the vector operations with OpenACC' + + write(*, *) 'Enter the size of the vectors' + read(*, *) n + alpha = 2.0 + beta = 0.5 + + time_start = etime() + call v3%all(n, info) + call v4%all(n, info) + call v5%all(n, info) + time_end = etime() + t_alloc_host = time_end - time_start + write(*, *) 'Allocation time on host: ', t_alloc_host, ' sec' + + do i = 1, n + v3%v(i) = real(i, psb_dpk_) + v4%v(i) = real(n - i, psb_dpk_) + end do + + call v3%set_dev() + call v4%set_dev() + + call v3%scal(alpha) + call v3%sync() + + do i = 1, n + if (v3%v(i) /= alpha * real(i, psb_dpk_)) then + write(*, *) 'Scal error : index', i + end if + end do + write(*, *) 'Scal test passed' + + result = v3%dot_v(n, v4) + call v3%sync() + call v4%sync() + if (result /= sum(v3%v * v4%v)) then + write(*, *) 'Dot_v error, expected result:', sum(v3%v * v4%v), 'instead of :', result + end if + write(*, *) 'Dot_v test passed' + + result = v3%nrm2(n) + call v3%sync() + if (result /= sqrt(sum(v3%v ** 2))) then + write(*, *) 'nrm2 error, expected result:', sqrt(sum(v3%v ** 2)), 'instead of :', result + end if + write(*, *) 'nrm2 test passed' + + call v3%set_host() + call v4%set_host() + + time_start = etime() + do i = 1, ntests + dot_host = sum(v3%v * v4%v) + end do + time_end = etime() + t_calc_host = (time_end - time_start) / real(ntests) + write(*, *) 'Host calculation time: ', t_calc_host, ' sec' + + call v3%set_dev() + call v4%set_dev() + + time_start = etime() + call v3%sync_space() + call v4%sync_space() + time_end = etime() + t_alloc_dev = time_end - time_start + write(*, *) 'Allocation time on device: ', t_alloc_dev, ' sec' + + time_start = etime() + do i = 1, ntests + dot_dev = v3%dot_v(n, v4) + end do + !$acc wait + time_end = etime() + t_calc_dev = (time_end - time_start) / real(ntests) + write(*, *) 'Device calculation time: ', t_calc_dev, ' sec' + + + call v3%free(info) + call v4%free(info) + call v5%free(info) + +end program vectoacc + \ No newline at end of file diff --git a/test/pargen/Makefile b/test/pargen/Makefile index 20a95c0b..ecbda5d1 100644 --- a/test/pargen/Makefile +++ b/test/pargen/Makefile @@ -5,7 +5,7 @@ include $(INCDIR)/Make.inc.psblas # # Libraries used LIBDIR=$(INSTALLDIR)/lib -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) # # Compilers and such @@ -25,7 +25,6 @@ psb_d_pde3d: psb_d_pde3d.o $(FLINK) psb_d_pde3d.o -o psb_d_pde3d $(PSBLAS_LIB) $(LDLIBS) /bin/mv psb_d_pde3d $(EXEDIR) - psb_s_pde3d: psb_s_pde3d.o $(FLINK) psb_s_pde3d.o -o psb_s_pde3d $(PSBLAS_LIB) $(LDLIBS) /bin/mv psb_s_pde3d $(EXEDIR) @@ -41,7 +40,7 @@ psb_s_pde2d: psb_s_pde2d.o clean: - /bin/rm -f psb_d_pde3d.o psb_s_pde3d.o psb_d_pde2d.o psb_s_pde2d.o *$(.mod) \ + /bin/rm -f psb_d_pde3d.o psb_d_oacc_pde3d.o psb_s_pde3d.o psb_d_pde2d.o psb_s_pde2d.o *$(.mod) \ $(EXEDIR)/psb_d_pde3d $(EXEDIR)/psb_s_pde3d $(EXEDIR)/psb_d_pde2d $(EXEDIR)/psb_s_pde2d verycleanlib: (cd ../..; make veryclean) diff --git a/test/pargen/psb_d_pde2d.F90 b/test/pargen/psb_d_pde2d.F90 index 11777b19..a7de0585 100644 --- a/test/pargen/psb_d_pde2d.F90 +++ b/test/pargen/psb_d_pde2d.F90 @@ -595,7 +595,7 @@ end module psb_d_pde2d_mod program psb_d_pde2d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde2d_mod #if defined(OPENMP) @@ -757,8 +757,22 @@ program psb_d_pde2d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/psb_d_pde3d.F90 b/test/pargen/psb_d_pde3d.F90 index 6e895c00..d634f245 100644 --- a/test/pargen/psb_d_pde3d.F90 +++ b/test/pargen/psb_d_pde3d.F90 @@ -653,7 +653,7 @@ end module psb_d_pde3d_mod program psb_d_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_d_pde3d_mod #if defined(OPENMP) @@ -814,8 +814,22 @@ program psb_d_pde3d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/psb_s_pde2d.F90 b/test/pargen/psb_s_pde2d.F90 index f14d2cb4..14b45a0f 100644 --- a/test/pargen/psb_s_pde2d.F90 +++ b/test/pargen/psb_s_pde2d.F90 @@ -595,7 +595,7 @@ end module psb_s_pde2d_mod program psb_s_pde2d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_s_pde2d_mod #if defined(OPENMP) @@ -757,8 +757,22 @@ program psb_s_pde2d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/psb_s_pde3d.F90 b/test/pargen/psb_s_pde3d.F90 index 2938a4ff..51c6e849 100644 --- a/test/pargen/psb_s_pde3d.F90 +++ b/test/pargen/psb_s_pde3d.F90 @@ -653,7 +653,7 @@ end module psb_s_pde3d_mod program psb_s_pde3d use psb_base_mod use psb_prec_mod - use psb_krylov_mod + use psb_linsolve_mod use psb_util_mod use psb_s_pde3d_mod #if defined(OPENMP) @@ -814,8 +814,22 @@ program psb_s_pde3d call psb_barrier(ctxt) t1 = psb_wtime() eps = 1.d-6 - call psb_krylov(kmethd,a,prec,bv,xxv,eps,desc_a,info,& - & itmax=itmax,iter=iter,err=err,itrace=itrace,istop=istopc,irst=irst) + select case(psb_toupper(trim(kmethd))) + case('RICHARDSON') + call psb_richardson(a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,& + & err=err,itrace=itrace,& + & istop=istopc) + case('BICGSTAB','BICGSTABL','BICG','CG','CGS','FCG','GCR','RGMRES') + call psb_krylov(kmethd,a,prec,bv,xxv,eps,& + & desc_a,info,itmax=itmax,iter=iter,err=err,itrace=itrace,& + & istop=istopc,irst=irst) + case default + write(psb_err_unit,*) 'Unknown method :"',trim(kmethd),'"' + info=psb_err_invalid_input_ + call psb_errpush(info,name) + goto 9999 + end select if(info /= psb_success_) then info=psb_err_from_subroutine_ diff --git a/test/pargen/runs/ppde.inp b/test/pargen/runs/ppde.inp index 470bcf58..ae8bfe8f 100644 --- a/test/pargen/runs/ppde.inp +++ b/test/pargen/runs/ppde.inp @@ -1,5 +1,5 @@ 17 Number of entries below this -BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES FCG CGR +BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES FCG CGR RICHARDSON BJAC Preconditioner NONE DIAG BJAC CSR Storage format for matrix A: CSR COO 200 Domain size (acutal system is this**3 (pde3d) or **2 (pde2d) ) @@ -8,11 +8,11 @@ CSR Storage format for matrix A: CSR COO 0200 MAXIT 10 ITRACE 002 IRST restart for RGMRES and BiCGSTABL -INVK Block Solver ILU,ILUT,INVK,AINVT,AORTH +INVK Block Solver ILU,ILUT,INVK,INVT,AINV NONE If ILU : MILU or NONE othewise ignored NONE Scaling if ILUT: NONE, MAXVAL otherwise ignored 0 Level of fill for forward factorization -1 Level of fill for inverse factorization (only INVK) +1 Level of fill for inverse factorization (only INVK,INVT) 1E-1 Threshold for forward factorization -1E-1 Threshold for inverse factorization (Only INVK, AINVT) -LLK What orthogonalization algorithm? (Only AINVT) +1E-1 Threshold for inverse factorization (Only INVK, INVT) +LLK What orthogonalization algorithm? (Only AINV) diff --git a/test/serial/Makefile b/test/serial/Makefile index 0136949a..e714de4c 100644 --- a/test/serial/Makefile +++ b/test/serial/Makefile @@ -6,7 +6,7 @@ INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/torture/Makefile b/test/torture/Makefile index 8a98657e..a6dd3165 100644 --- a/test/torture/Makefile +++ b/test/torture/Makefile @@ -3,7 +3,7 @@ INCDIR=$(INSTALLDIR)/include/ MODDIR=$(INSTALLDIR)/modules/ include $(INCDIR)/Make.inc.psblas LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) CCOPT= -g FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). diff --git a/test/util/Makefile b/test/util/Makefile index 404170fb..5dbf305f 100644 --- a/test/util/Makefile +++ b/test/util/Makefile @@ -6,7 +6,7 @@ include $(INCDIR)/Make.inc.psblas # Libraries used # LIBDIR=$(INSTALLDIR)/lib/ -PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base +PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_linsolve -lpsb_prec -lpsb_base LDLIBS=$(PSBLDLIBS) FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG).