PETSc |
Projects: Big and Small |
|
|
|
This is the PETSc to-do list; any help on these would be greatly
appreciatedOptimizationschange the numbering of vector elements for DA ordering to run over the z then y then x rather than the current x, then y, then z. This is to match the way the MPI cartesian communicator orders things. See petsc-users mail from Sean Dettrick. Should not change the user interface. Change mpibaij and mpisbaij to use the lastcol1,2 stuff as in mpiaij matsetvalues[blocked] for faster insertion DONE - added DASetMatPreallocateOnly(), not tested. Add flag to DA that allows setting the preallocation for the matrices generated but not the zero values (this option can only be used if not doing FD or AD computation of the Jacobian using color, so try to add error checking to prevent users from screwing up. (Priority 1) Use blocksize in MPIAIJ to pass in getsubmatrices for faster in ASM. Fix MatGet/RestoreRow/ColumnIJ() to have an additional flag indicating if one may change the ia and ja data. Then the reoordering codes need to check that flag since Sparsepack corrupts the data. Missing functionality (for a particular data storage or size)Convert the Tufo-Fischer parallel direct solver to its own PC extend to other matrix typesAdd support for MatLoad() for Matlab .mat files; we already have the view. Fix all MatPartitioners to optionally turn on edge weights from the matrix values. Currently the are ignored for all partitioners except parmetis, where they are incorrectly always used. Add MatMatMult() to dense matrices Provide support for shared libraries with gcc on cygwin: http://cygwin.com/cygwin-ug-net/dll.html New functionalityAdd PetscConsistent(MPI_Comm,...) error check macros checks thatall processors in comm set the same value; for example the alpha in VecAXPY() etc etc. When solving F(x) = 0, I would like to be able to scale both the solution vector x and the residual function vector F, simply by specifying scaling vectors, sx and sf, say. (These vectors would be the diagonal entries of scaling matrices Dx and Df.) I realize this can be achieved, at least in part, within the user residual function. This is what I had been doing, until I looked at Denis and Schnabel (sp?), Brown and Saad, and the KINSOL user guide. It seems one has to take the scaling matrices into account when computing various norms, when applying the preconditioner, and when computing the step size, \sigma. No doubt there are other things I have missed that also need to be done. Make PetscBagLoad() machine independent by requiring the user to register the entire bag before calling PetscBagLoad() add GMRESR Add PCCreate_LRC() see MatCreateLRC() (Priority 1) Add DAVecGetArrayf90() Hmmm, thought I did this a long time ago? Support overlapping finite difference grids using DA, see src/dm/da/examples/tutorials/ex6.c introduce geometric ghost points in DA, two sets of global vectors for DA's with and without the geometric ghost points, generate matrix vector to interpolate from global non-geometric ghosted to global geometric ghosted (this can be done by each processor sending its geometric ghost positions to all processors, then local search, what about duplicates?), then do DAGlobalToLocal on the DA's to get local vectors to have all correct ghosted values. Easy. Add MatSolveForward/Back() per Jose petsc-maint 9785 Make a Mat type of PC and KSP. allow matrix to share another matrices stuff and its stored numerical values petscmaint 12168 Interface for vectors to fftw. (Priority 1) Add new KSP that allows reordering unknowns (parallel or sequential) for better performance and then calls regular KSP. Or should this be PC? (Priority 2) General mechanism for DMGetMatrix() etc ...for composite matrices Make all KSP (if possible) use either preconditioned or unpreconditioned norms for monitoring & convergence (e.g. BCGSL) I like the idea of having an optional usage logging facility in PetscInitialize() and PetscFinalize(). A mysql database on a server somewhere sounds good. Kind of like how we use FLEXLM for licensed software. * this could be used to log -log_summary, -snes_view etc results. Cleaner codeMake common header for the four PC_Factor types and common PCSetFromOptions_Factor for common options.(Priority 2) Add more PetscMallocXXX() in MatGetOverlap() and getsubmatrices etc() (Priority 0) Fix bad macros with inline functions, which ones? Make binary file and socket viewers subclass off a common binary viewer Better user interfaceFix GMRES and SYMMLQ so that if they detect happy breakdown the proper cleanup is done and the converged reason is set to KSP_CONVERGED_HAPPY_BREAKDOWN. Currently it is done in ad hoc ways.Add SETERR(MPI_Comm,) for errors that happen on ALL processes in the comm so that error message and stack trace are printed only by 0th process in comm Add -draw_ps_filename <name> to allow controlling the ps filename opened by for example -mat_view_draw -draw_type ps Add -draw_ps_monochrome (and function interface) to allow generating black and white ps It would be nice if an error detected in PetscSplitOwnership() could properly point back (somehow) the error in VecSetValues(), MatSetValues etc that caused the problem. (Priority 1) Change setfromoptions for sor to use Enum for setting symmetric, local etc (Priority 1) Allow setting precision of printed numbers in ASCII viewers. (Priority 1) add DAVecGatherAll and DAVecGather (Piority 1) Add option to KSP to generate error when convergence fails, rather than continuing with ConvergedReason Take out calls to SETERRQ directly in KSP solvers and replace with correct ConvergedReason (Priority 1) Add option to SNES to generate error when convergence fails, rather than continuing with ConvergedReason (Priority 2) Remove VecLoadIntoVector() and change VecLoad() to take a Vec as input allow setting type before sizes provide VecSetMap() (Priority 2) Change MatLoad() to take a matrix, move sizes out of MatCreate(), add MatSetMaps(), allow setting type before sizes Also allow loading matrices with the same nonzero pattern efficiently. (Priority 1) Modify PC_MG to allow setters and fold DMMG and ML (and maybe hypre) into it????? Add MatOption POSITIVE_DEFINITE and have KSP default to CG if that plus symmetric set Add PetscCommSet/GetName(), make autodefaults for world and self. Now objects when printed will be able to print the communicator they live on simply by pulling the name out. Algorithmic improvementsFigure out why gmres as smoother for one iteration can be some much betterthan Richardson? Is it computing some good damping factor? Make LSQR properly handle nonzero initial guess by simply computing the residual right hand side; solving that and then adding back the initial guess. Add support for point block diagonal scaling the matrix before calling KSPSolve. TestingTest everywhere with Lam PetscInt long long configure for all packages, with install option for as many as possible Test support for requesting 32 bit or 64 bit code Test that the Fortran preprocessor actually preprocesses somehow Test for --with-precision=longdouble We should have performance benchmarking to make sure code performance is not decreased by changes Interfaces to external packagesAn almost linear time LU solver for second order ellipticoperators (http://www.math.uni-leipzig.de/~bebendorf/AHMED.html) Another software library on Hierarchical Matrices for Elliptic Differential equations (AHMED) An approximate LU decomposition can be computed in the algebra of hierarchical matrices with almost linear time complexity and with the same robustness as the classical LU decomposition method. DUNE, the Distributed and Unified Numerics Environment (http://hal.iwr.uni-heidelberg.de/dune) DUNE aims to reach the following goals: - Distributed development - Unified access to different grid managers (ALBERTA , UG), visualization tools (Grape), solvers, etc. - high level abstraction through Operator concept ILUPACK www.math.tu-berlin.de/ilupack QHULL OpenDX PRAdd all PETSc user publications we find from scholar.google.comDocumentationadd support to lgrind to map char string tokens with htmlmap. Cannot do it before applying lgrind cause it cannot parse tex. Cannot do it after lgrind because maplatexnames.py cannot handle the yucky latex lgrind generates. Should be easy cannibalizing stuff from Bill's sowing.keywords in maual pages should get listed in help topic list need python tool to find all manual page functions that are missing in the users manual. Add troubleshooting entries and error messages with web address for common errors. config/configure.pyConfigure: Look for classes in libraries instead of just functionsConfigure needs to set the right compiler for linking!! [PETSC #12367] When should it use C++ to link fortran, when C when Fortran??? We need to have MPI.py properly detect if the MPI macros in PETSc can be used and turn them off if they cannot. Better to add a new flag like PETSC_USE_MPI_MACROS If shared libraries is turned on, need configure test that each external package can go into shared library. Trouble on Mac Check for broken Windows sed. Does anyone here have this broken sed. The signal is all spaces are missing from the petscmachineinfo.h declaration. It would be nice if someday configure could get the "compute nodes" to see that they have the appropriate shared libraries that are used when compiling or otherwise the static libraries are used.
|
|
|
|
|
|