dev:todo
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
dev:todo [2015/09/22 08:04] – [Youthful Folly] oschuett | dev:todo [2017/02/10 09:34] – oschuett | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Nice to Haves ====== | ====== Nice to Haves ====== | ||
- | This is a list of nice to have features or changes in CP2K that nobody got around to do, yet ;-) | + | This is a list of nice to have features or changes in CP2K that nobody got around to do, yet. ;-) They are noted down here so we don't [[http:// |
Some of them may be suitable for one or more [[https:// | Some of them may be suitable for one or more [[https:// | ||
- | ====== | + | ====== |
- | * Add support | + | * Use [[https:// |
+ | * Use the [[https://atztogo.github.io/spglib/|Space Group Library]] for handling crystal symmetries. | ||
+ | * Use BigDFTs wavelet Poisson solvers. | ||
====== Input / Output ====== | ====== Input / Output ====== | ||
* Refactor '' | * Refactor '' | ||
+ | * Make it clear in the output at which nesting level the output is happening. For example, print " | ||
* Evolve the printkey into a real logging mechanism. If the '' | * Evolve the printkey into a real logging mechanism. If the '' | ||
+ | * A lone keyword of type logical should always shortcut to YES. This should be hard coded. | ||
====== Missing features ====== | ====== Missing features ====== | ||
* Cut-off auto-calibration (Is it possible to provide good cut-off default values based on basis sets and desired precision?) | * Cut-off auto-calibration (Is it possible to provide good cut-off default values based on basis sets and desired precision?) | ||
+ | * Estimation of time remaining until the simulation is done. Probably easy to do for MD using FIST. Order of magnitude estimation could possibly be provided using parameters from the input file with a good cost model, heuristics will likely be needed for more precise estimation. | ||
+ | * Estimation of disk size simulation output files will take. | ||
* Support [[https:// | * Support [[https:// | ||
* Alternatively, | * Alternatively, | ||
* Support [[http:// | * Support [[http:// | ||
+ | * Support [[http:// | ||
* Provide a cp2k library/ | * Provide a cp2k library/ | ||
* Due to the [[https:// | * Due to the [[https:// | ||
Line 23: | Line 30: | ||
* [[http:// | * [[http:// | ||
* Automatic generation of the LD version script and/or C-bindings/ | * Automatic generation of the LD version script and/or C-bindings/ | ||
+ | * Extend the preprocessor to accept @ELSE in the existing '@IF @ENDIF' | ||
- | ====== | + | ====== |
+ | * Investigate performance delta of MM code in CP2K compared to another state of the art open source software (e.g. GROMACS). See if there are interesting ideas there which can be used. | ||
+ | |||
+ | ====== Testing | ||
* The [[http:// | * The [[http:// | ||
+ | * Setup a regtester with the [[https:// | ||
+ | * Performance regression testing. Requires an empty machine for reproducibility. Test each kernel (FFT, LA, grid,...) in different regimes (compute-, communication-, | ||
+ | |||
+ | ====== Wiki ====== | ||
+ | * Add support for CP2K input-files to [[https:// | ||
====== Dev Tools ====== | ====== Dev Tools ====== | ||
* A Fortran parser library for Python. As a starting point one could take the [[https:// | * A Fortran parser library for Python. As a starting point one could take the [[https:// | ||
- | * prettify of the entire code, not just headers. | ||
* static code analysis | * static code analysis | ||
* generation of nice API docs | * generation of nice API docs | ||
Line 36: | Line 51: | ||
* ALLOCATEs in OMP-regions or tight loops | * ALLOCATEs in OMP-regions or tight loops | ||
* ALLOCATABLEs / POINTERs that could go in the stack. | * ALLOCATABLEs / POINTERs that could go in the stack. | ||
+ | * Fuzzy testing: Generate randomly valid input files, then check that they either run successfully for a few seconds or quit with a proper error message. The fuzzing could be extended to other settings, e.g. mpi, openmp, arch-file, | ||
====== Youthful Folly ====== | ====== Youthful Folly ====== | ||
- | * de-POINTER-ify | + | * Remove reference counting wherever possible. It leads to super-hard to find bugs, and most objects in CP2K have an obvious //owner//. This ownership assignment can be enforced by using ALLOCATABLEs in derived types. |
- | * Switch local procedure variables from POINTER -> ALLOCATABLE if they are | + | |
- | * not passed to a procedure with explicit POINTER dummy arguments | + | === Turn POINTERs into ALLOCATABLEs === |
- | * not used in a pointer assignment | + | Allocatables lead to faster code, can not lead to leaks, and are less prone to programming errors. This would be easier with a (not-yet-existing) -Wneedless-pointer warning in gfortran. In order of difficulty : |
- | * ... ? It probably holds that the code is correct if it compiles. | + | * Switch local procedure variables from POINTER -> ALLOCATABLE if they are |
- | * special treatment might be useful for NULLIFY and ASSOCIATED | + | * not passed to a procedure with explicit POINTER dummy arguments |
- | * Remove POINTER attribute of dummy arguments | + | * not used in a pointer assignment |
- | * needs to be careful with INTENT(IN) pointers | + | * ... ? It probably holds that the code is correct if it compiles. |
- | * Switch derived type members from POINTER to ALLOCATABLE | + | * special treatment might be useful for NULLIFY and ASSOCIATED |
- | * Remove reference counting wherever possible. It leads to super-hard to find bugs, and most objects in CP2K have an obvious //owner//. The ownership assignment can be enforced by using ALLOCATABLE in derived types. | + | * Remove POINTER attribute of dummy arguments |
+ | * needs to be careful with INTENT(IN) pointers | ||
+ | * Switch derived type members from POINTER to ALLOCATABLE | ||
====== DBCSR ====== | ====== DBCSR ====== | ||
==== Removals ==== | ==== Removals ==== | ||
- | * Remove '' | ||
- | * Remove '' | ||
* Remove '' | * Remove '' | ||
* Remove various init-routines, | * Remove various init-routines, | ||
Line 75: | Line 91: | ||
* Expose dbcsr' | * Expose dbcsr' | ||
* MIC port (integrate) | * MIC port (integrate) | ||
- | * finish | + | * Finish |
+ | * Use the CUDA [[http:// |
dev/todo.txt · Last modified: 2020/11/19 17:46 by tmueller