Commit Graph

51 Commits

Author SHA1 Message Date
Francois Coppens
bff7e0c389 More performance enhancements to WB2 and WB3. 2021-07-12 16:36:42 +02:00
François Coppens
fa61b50bb0 - Optimize WB3 by inlining matmuls and simplifying copies
- Occasional code restyling with 'clang-formant --style=LLVM'.
2021-07-12 08:13:58 +02:00
Francois Coppens
43b996dad9 - Added tests/fnu_test_h5.cpp that takes its input cycle numbers from a file instead of from the command line.
- Suppressed all debug output so as to not polute performance measurements.
2021-07-09 14:30:37 +02:00
Pablo Oliveira
c30967e63d Optimize WB2 by inlining matmuls and simplifying copies 2021-07-08 12:53:50 +02:00
François Coppens
67f5379bea - Moved check on determinants in Woodbury kernels before inversion of B that was there by mistake.
- Split SM2 into SM2 and SM2star so that keeps all updates for later when used in combination with the Woodbury kernels to improve the numerical accuracy to the same level as that of SM2.
2021-07-07 12:06:31 +02:00
François Coppens
f6f8746bef Optimised matrix multiplication with V. 2021-07-01 13:44:28 +02:00
François Coppens
7b9b176545 - Replaced the copy-arrays in the combined SMWB kernels with pointers
- Added loop in test_cycle() to repeat a single update cycle n-times for performance testing.
2021-06-23 17:28:29 +02:00
Francois Coppens
837e160f17 - Added various Sherman-Morrison-Woodbury kernels
- Separated debug information into 2 different debug levels.
2021-06-21 14:33:35 +02:00
Francois Coppens
22590b7684 * Woodburry 3x3 kernel fixed
* Written Unified Sherman-Morrison-Woodbury kernel that partitions
  the updates in blocks of 3 and tries them with Woodbury 3x3.
  The remainder of 2 or one are attempted with Woodbury 2x2 and SM2.

For now the unified kernel gives fails where pure SM2 does not.
I suspect there is something going wrong in how the updates are partitioned.
2021-06-15 11:53:04 +02:00
François Coppens
b6efc97233 Woodbury 2x2 kernel fixed and working. 2021-06-14 15:05:39 +02:00
Francois Coppens
573947fe2d Woodbury debugging... 2021-06-11 08:46:39 +02:00
Francois Coppens
61844da5d3 Corrected array initialisations. 2021-06-10 11:25:31 +02:00
Francois Coppens
efe96cbeea First implementation of Woodbury 2x2 and 3x3 kernels. 2021-06-10 08:46:40 +02:00
François Coppens
288bc83e19 Created Woodbery kernel infrastructure and started wrinting Woodbery 2x2 kernel. 2021-06-04 16:50:49 +02:00
François Coppens
c8df88b4ef Made lapack/MKL inclusion in code dependent on preprocessor macro 'MKL'. Automatic build should now succeed. 2021-05-21 11:54:57 +02:00
François Coppens
6c9c68c93d Added LAPACK option to test_h5.cpp to compare residuals and number of operations. 2021-05-20 19:21:59 +02:00
François Coppens
0e5bbbbffb Replaced inappropriate std::abs() occurences with std::fabs() in C++ code. 2021-05-12 16:11:47 +02:00
François Coppens
5693e177ba Re-applied code formatting on C++ code with clang-format --style=llvm. 2021-05-10 14:50:45 +02:00
Francois Coppens
adf893ed6f - Various fixes
- Merged MaponiA3 and MaponiA3S into one file.
2021-05-07 17:11:04 +02:00
Pablo Oliveira
f4becac4c0 First implementation of SM4
SM4: Sherman Morrison, mix between SM3 + SM2
Leave zero denominators for later (SM3), and when none are left then split (SM2)
2021-05-06 10:51:42 +02:00
François Coppens
3ee4d3b56d - Added a small 3x3 example that will always become singular regardles the order of the applied updates. This example is added to test Maponi A3 augmented with Slagel-splitting.
- Slagel-splitting in Maponi A3 is now working. A thourough analysis on the QMC=Chem datasets still has te be done.
- Acceptance tollerance  in 'test_h5' on the residuals can be set at runtime now.
2021-05-05 11:59:00 +02:00
Francois Coppens
e3815267fb * Added SM{1,2,3} algorithms to Fortran module
* Deleted final ylk array in MaponiA3(S)
* Output of Valgrind seem to suggest there are no major memory problems.
2021-05-05 11:59:00 +02:00
François Coppens
fb3ed9ce0c In Maponi A3, converted divisions into multiplications. 2021-05-05 11:59:00 +02:00
François Coppens
af64b91ca6 Started debugging Slagel-splitting in MaponiA3. 2021-05-05 11:59:00 +02:00
François Coppens
7cef89e2b5 Slagel-splitting implemented but not tested yet. 2021-05-05 11:59:00 +02:00
Francois Coppens
b863d40c05 - Setting break-down threshold trough smvars.sh
- Fixed SM3 to escape infinite update-loop
2021-04-15 18:13:26 +02:00
Francois Coppens
e5648f7485 Ran: clang-format --style=LLVM on *.cpp and *.hpp files. 2021-04-15 14:38:42 +02:00
Francois Coppens
fad8eb2e89 - Fixed small dataset cycle 8169 to transform to replacement updates and regenerated the hdf5 file.
- Simplified makefiles.
2021-04-15 12:17:12 +02:00
Francois Coppens
1201718f28 Preped files, headers, functions, test_h5 and Makefiles for MaponiA3S. 2021-04-14 17:18:31 +02:00
Francois Coppens
991f40a605 Moved common MaponiA3 functions to SM_Helpers.{cpp,hpp} to prepare for MaponiA3+Slagel splitting. 2021-04-14 16:19:49 +02:00
Francois Coppens
ab9d13180a Small restructuring and cleaning up spurious includes and and namespaces. 2021-04-14 15:32:54 +02:00
Francois Coppens
c2f643ad8f - Updated cleaning target in Makefile
- Updated gitignore
- Added python script to compute basic statistical observables from testruns
- Added test bash script to automate test_h5: the cycles in the dataset are not continues and test_h5 crashes if a cycle number is not present in the dataset.
- Added common threshold for all 3 standard SM algos.
2021-04-09 17:23:14 +02:00
Francois Coppens
7caf12c296 Cleaned up: datasets, test-program name, Makefiles. Use column numbers in SM_Standard.cpp. 2021-04-06 16:17:42 +02:00
Francois Coppens
6cd9fb1072 - Moved transposing of Slater_inv to HDF5 conversion tool and removed it from the test program.
- Let Maponi A3 continue, even after the algorithm breaks down.
2021-03-18 14:06:06 +01:00
Pablo Oliveira
c10ded9cdd Add version name to tests 2021-03-15 16:00:16 +01:00
Pablo Oliveira
f096db6411 New implementations for Sherman Morisson
- SM2: Slagel splitting implementation
    (http://hdl.handle.net/10919/52966)

  - SM3: Keep close to zero denominators for later

  - Update tests to show the squared residual
2021-03-15 14:01:38 +01:00
François Coppens
6012b9decf 4x4 with 2 updates example is working again after adding update cycle 8169 dataset but with replacement updates instead of additive updates. 2021-03-12 15:49:02 +01:00
François Coppens
ef97b40196 Changed code to treat the dataset as replacement updates, instead of additive updates. Before the updates are used to compute the inverse they are transformed accordingly.
However, this breaks the 4x4 example in update cycle 8169.
2021-03-12 12:38:50 +01:00
François Coppens
081fbfc1d8 Loop merge successful.
Next step: reduce the number of indices of ylk by not keeping
all the previous solutions.
2021-03-10 16:56:22 +01:00
François Coppens
e18e80ff5c Removed matMul() from Helpers.hpp and renamed matMul2() to matMul(). 2021-03-10 15:27:53 +01:00
François Coppens
ffbde8f88c More changes to debug output. 2021-03-10 12:18:08 +01:00
François Coppens
de8e89df75 Change in debug output. 2021-03-10 11:54:43 +01:00
François Coppens
3b3567040b Added more debug output. 2021-03-10 11:41:34 +01:00
François Coppens
a9604b3838 Cleaned-up main loop. 2021-03-09 10:43:00 +01:00
François Coppens
066e50914c Regularised main loop. 2021-03-09 10:43:00 +01:00
Francois Coppens
9c82092cff Removed dependence on a breakdown array. 2021-03-09 10:40:47 +01:00
Francois Coppens
b2c6847ed8 Add debug comments 2021-03-09 10:39:58 +01:00
Francois Coppens
3f60779700 Cleanup 2021-03-09 10:39:58 +01:00
François Coppens
983f87d504 Rewrote matMul function so it doesn't declare memory inside. 2021-03-09 10:39:58 +01:00
Pablo Oliveira
4bd61dd76c Add a standard Sherman-Morisson implementation
- It can serve as a baseline reference

- It can serve as a starting point for including the pivot
  and splitting techniques from Maponi and Slaggel without the full
  complexity of the MaponiA3 algorithm
2021-03-05 17:00:48 +01:00