Commit Graph

53 Commits

Author SHA1 Message Date
Francois Coppens
579bb50dca Added QMCkl as a git submodule in /home/fcoppens/code/Sherman-Morrison/qmckl. #25 2021-07-19 14:33:25 +02:00
Francois Coppens
2ec8fb278c Minor modifications to test programs. 2021-07-17 11:40:59 +02:00
François Coppens
2a39aabaf0 Cleanup 1 2021-07-15 17:56:33 +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
François Coppens
4f0aaa5763 Cosmetics 2021-07-09 16:00:29 +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
Aurélien Delval
0114fd7b14 Remove source code of vfc_ci and improve vfc_test_h5.cpp
Since vfc_ci has been merged wih the main verificarlo repository and is
now available in Verificarlo's Docker, the source code of vfc_ci can
now be removed.

Also, vfc_test_h5.cpp has been modified so that every algorithm is
called directly. This results in a much shorter vfc_tests_config.json
since we don't need to vall vfc_test_h5 with all algorithms as
arguments.
2021-06-17 16:50:42 +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
Francois Coppens
573947fe2d Woodbury debugging... 2021-06-11 08:46:39 +02:00
François Coppens
288bc83e19 Created Woodbery kernel infrastructure and started wrinting Woodbery 2x2 kernel. 2021-06-04 16:50:49 +02:00
Aurélien Delval
b283f403dc Update Verificarlo CI test variables
Tests are now using squared Frobenius norm and res2
2021-05-25 09:56:34 +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
17c8a1c7a0 Code restyled. Added restyling script. Code for determinant is not working because it gets stuck in an infinite recursion loop. 2021-05-19 15:23:19 +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
Aurélien Delval
99b297435c Add squared Frobenius norm to vfc_test_h5
Besides the new variable addition, vfc_test_h5 has also be made simpler
by executing directly all the possible lagorithms (instead of requiring
argument). This results in a much more concise vfc_tests_config.json,
since only one executable invocation is required.
2021-05-07 13:23:50 +02:00
Pablo Oliveira
ada8cd6888 Fix typo 2021-05-06 11:01:07 +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
Aurélien Delval
d81777e347 Add CI dataset and the tool to generate it.
Since the dataset must be accessible from the CI runner, the best
solution is probably to commit a small dataset containing only the
required cycles. It's included in this commit, and can be generated by
extract-from-h5.py using the same cycles list as the one used by
vfc_test_h5.cpp.

Moreover, the probes exported by vfc_test_h5.cpp are now 0-padded, which
will result in a better sorting in the results.
2021-05-03 13:59:43 +02:00
Aurélien Delval
18d1e2b785 Move Makefile.vfc_ci to Makefile.verificarlo
With the current setup, the CI should be able to be deployed correcly.

However, we still ned to find the best solution to pull the dataset on
the runner so the tests can be executed on it.
2021-04-30 11:22:22 +02:00
Aurélien Delval
1d1da00931 Integration of vfc_ci
The vfc_ci tool has been directly added to the repository, since it's
not integrated into Verificarlo yet. The vfc_test_h5.cpp file defines a
test inspired by test_h5.cpp that reads a list of cycles and dump the
vfc_probes for these cycles.
2021-04-29 23:41:23 +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
ab9d13180a Small restructuring and cleaning up spurious includes and and namespaces. 2021-04-14 15:32:54 +02:00
Francois Coppens
152093dd7c - Added python program that computes general properties of a given Slater-matrix.
- Added a Verificarlo option to smvars.sh that sets the Verificarlo backend and uses LLVM for compilation.
- Fixed residual_max() to give the Max-norm.
2021-04-14 11:42:45 +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
4e7c4de0e8 tests/test_internal_h5 and test_external_h5 updated to use replacement updates instead of additive updates. 2021-03-12 16:18:03 +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
a1c77a22c8 Replaced old matMul() function calls. 2021-03-11 15:04:35 +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
François Coppens
f5a2e635cf Added environment variables source script. Added test script that loops over update cycles. Added test program that loops internally over test cycles. 2021-02-28 09:28:42 +01:00
François Coppens
8e0aef7717 Restructuring complete. Updated makefile. 2021-02-27 12:25:55 +01:00
François Coppens
5d4a7af01a File tree restructured. Written build script build.sh. TODO: convert buld script into Makefile. 2021-02-26 17:28:52 +01:00
François Coppens
00fcaf2309 Replaced dataset. 2021-02-25 13:00:17 +01:00
François Coppens
3df8d33bfa Problems with MaponiA3 when calling from C++ with HDF5 datasets is fixed. Bug was caused by uninitialised values of NEWed variables at several places. There are still a few remaining memory leaks. Explore with:
valgrind --track-origins=yes --leak-check=full --show-leak-kinds=all
2021-02-25 12:17:45 +01:00
François Coppens
225c841a88 * Fixed the 3x3 MaponiA3 C++ example. Update_index vector cannot have values that are smaller than 1 because the first colums in Fortran is stored at 1 and not 0.
* Started debugging reading from HDF5 formatted datasets. Slater_inv needs to be transposed before sent to Maponi. Algo fails at the last step. Correct Slater and Inverse fail to produce the identity matrix. Suspect that the matMul function is not working correctly eventhough it looks like it does.
2021-02-24 18:41:48 +01:00
François Coppens
28f6de48ee TO BE AMENDED 2021-02-23 08:28:09 +01:00