Since ~April 2024, I've been swapping out the OpenBLAS installed with xTB for Apple Accelerate. It's sped up my workflows ~3x, especially for small systems, with under 1000 basis functions or orbitals. I see no reason this should not be the default library.
cd ../
rm -rf xtb
git clone https://github.com/grimme-lab/xtb
# Build using CMake because meson 1.8.2 still has errors
cd xtb
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="gcc-15" \
-DCMAKE_Fortran_COMPILER="gfortran-15" \
-DWITH_TBLITE=OFF \
-DWITH_CPCMX=OFF \
-DBLA_VENDOR="Apple"
make -C build -j8
make -C build test
All tests pass:
With OpenBLAS
Running tests...
Test project /Users/philipturner/Documents/MolecularRenderer/xtb/build
Start 1: mctc-lib/cutoff
1/70 Test #1: mctc-lib/cutoff .................. Passed 0.32 sec
Start 2: mctc-lib/data
2/70 Test #2: mctc-lib/data .................... Passed 0.01 sec
Start 3: mctc-lib/math
3/70 Test #3: mctc-lib/math .................... Passed 0.01 sec
Start 4: mctc-lib/ncoord
4/70 Test #4: mctc-lib/ncoord .................. Passed 0.64 sec
Start 5: mctc-lib/read
5/70 Test #5: mctc-lib/read .................... Passed 0.01 sec
Start 6: mctc-lib/read-aims
6/70 Test #6: mctc-lib/read-aims ............... Passed 0.01 sec
Start 7: mctc-lib/read-cjson
7/70 Test #7: mctc-lib/read-cjson .............. Passed 0.01 sec
Start 8: mctc-lib/read-ctfile
8/70 Test #8: mctc-lib/read-ctfile ............. Passed 0.01 sec
Start 9: mctc-lib/read-gaussian
9/70 Test #9: mctc-lib/read-gaussian ........... Passed 0.01 sec
Start 10: mctc-lib/read-genformat
10/70 Test #10: mctc-lib/read-genformat .......... Passed 0.01 sec
Start 11: mctc-lib/read-pdb
11/70 Test #11: mctc-lib/read-pdb ................ Passed 0.01 sec
Start 12: mctc-lib/read-qchem
12/70 Test #12: mctc-lib/read-qchem .............. Passed 0.01 sec
Start 13: mctc-lib/read-qcschema
13/70 Test #13: mctc-lib/read-qcschema ........... Passed 0.01 sec
Start 14: mctc-lib/read-turbomole
14/70 Test #14: mctc-lib/read-turbomole .......... Passed 0.01 sec
Start 15: mctc-lib/read-vasp
15/70 Test #15: mctc-lib/read-vasp ............... Passed 0.01 sec
Start 16: mctc-lib/read-xyz
16/70 Test #16: mctc-lib/read-xyz ................ Passed 0.01 sec
Start 17: mctc-lib/symbols
17/70 Test #17: mctc-lib/symbols ................. Passed 0.01 sec
Start 18: mctc-lib/write
18/70 Test #18: mctc-lib/write ................... Passed 0.01 sec
Start 19: mctc-lib/write-aims
19/70 Test #19: mctc-lib/write-aims .............. Passed 0.01 sec
Start 20: mctc-lib/write-cjson
20/70 Test #20: mctc-lib/write-cjson ............. Passed 0.01 sec
Start 21: mctc-lib/write-ctfile
21/70 Test #21: mctc-lib/write-ctfile ............ Passed 0.01 sec
Start 22: mctc-lib/write-gaussian
22/70 Test #22: mctc-lib/write-gaussian .......... Passed 0.01 sec
Start 23: mctc-lib/write-genformat
23/70 Test #23: mctc-lib/write-genformat ......... Passed 0.01 sec
Start 24: mctc-lib/write-pdb
24/70 Test #24: mctc-lib/write-pdb ............... Passed 0.01 sec
Start 25: mctc-lib/write-qchem
25/70 Test #25: mctc-lib/write-qchem ............. Passed 0.01 sec
Start 26: mctc-lib/write-qcschema
26/70 Test #26: mctc-lib/write-qcschema .......... Passed 0.01 sec
Start 27: mctc-lib/write-turbomole
27/70 Test #27: mctc-lib/write-turbomole ......... Passed 0.01 sec
Start 28: mctc-lib/write-vasp
28/70 Test #28: mctc-lib/write-vasp .............. Passed 0.01 sec
Start 29: mctc-lib/write-xyz
29/70 Test #29: mctc-lib/write-xyz ............... Passed 0.01 sec
Start 30: test-drive/all-tests
30/70 Test #30: test-drive/all-tests ............. Passed 0.16 sec
Start 31: test-drive/check
31/70 Test #31: test-drive/check ................. Passed 0.01 sec
Start 32: test-drive/select
32/70 Test #32: test-drive/select ................ Passed 0.01 sec
Start 33: xtb/CAPI
33/70 Test #33: xtb/CAPI ......................... Passed 0.54 sec
Start 34: xtb/atomlist
34/70 Test #34: xtb/atomlist ..................... Passed 0.22 sec
Start 35: xtb/coordinationnumber
35/70 Test #35: xtb/coordinationnumber ........... Passed 0.08 sec
Start 36: xtb/coulomb
36/70 Test #36: xtb/coulomb ...................... Passed 0.38 sec
Start 37: xtb/dftd3
37/70 Test #37: xtb/dftd3 ........................ Passed 0.46 sec
Start 38: xtb/dftd4
38/70 Test #38: xtb/dftd4 ........................ Passed 0.46 sec
Start 39: xtb/docking
39/70 Test #39: xtb/docking ...................... Passed 2.99 sec
Start 40: xtb/eeq
40/70 Test #40: xtb/eeq .......................... Passed 0.09 sec
Start 41: xtb/gfn0
41/70 Test #41: xtb/gfn0 ......................... Passed 0.41 sec
Start 42: xtb/gfn1
42/70 Test #42: xtb/gfn1 ......................... Passed 3.07 sec
Start 43: xtb/gfn2
43/70 Test #43: xtb/gfn2 ......................... Passed 4.60 sec
Start 44: xtb/gfnff
44/70 Test #44: xtb/gfnff ........................ Passed 5.21 sec
Start 45: xtb/hessian
45/70 Test #45: xtb/hessian ...................... Passed 0.06 sec
Start 46: xtb/iff
46/70 Test #46: xtb/iff .......................... Passed 0.32 sec
Start 47: xtb/latticepoint
47/70 Test #47: xtb/latticepoint ................. Passed 0.01 sec
Start 48: xtb/molecule
48/70 Test #48: xtb/molecule ..................... Passed 0.01 sec
Start 49: xtb/oniom
49/70 Test #49: xtb/oniom ........................ Passed 0.10 sec
Start 50: xtb/dipro
50/70 Test #50: xtb/dipro ........................ Passed 0.01 sec
Start 51: xtb/pbc-tools
51/70 Test #51: xtb/pbc-tools .................... Passed 0.01 sec
Start 52: xtb/peeq
52/70 Test #52: xtb/peeq ......................... Passed 0.10 sec
Start 53: xtb/repulsion
53/70 Test #53: xtb/repulsion .................... Passed 0.25 sec
Start 54: xtb/symmetry
54/70 Test #54: xtb/symmetry ..................... Passed 0.06 sec
Start 55: xtb/tblite
55/70 Test #55: xtb/tblite ....................... Passed 0.01 sec
Start 56: xtb/thermo
56/70 Test #56: xtb/thermo ....................... Passed 0.01 sec
Start 57: xtb/vertical
57/70 Test #57: xtb/vertical ..................... Passed 0.09 sec
Start 58: xtb/wsc
58/70 Test #58: xtb/wsc .......................... Passed 0.01 sec
Start 59: xtb/cpx
59/70 Test #59: xtb/cpx .......................... Passed 0.01 sec
Start 60: xtb/ptb
60/70 Test #60: xtb/ptb .......................... Passed 0.01 sec
Start 61: xtb/Argparser_print_version
61/70 Test #61: xtb/Argparser_print_version ...... Passed 0.22 sec
Start 62: xtb/Argparser_print_help
62/70 Test #62: xtb/Argparser_print_help ......... Passed 0.01 sec
Start 63: xtb/Argparser_print_license
63/70 Test #63: xtb/Argparser_print_license ...... Passed 0.01 sec
Start 64: xtb/Info
64/70 Test #64: xtb/Info ......................... Passed 0.02 sec
Start 65: xtb/Singlepoint
65/70 Test #65: xtb/Singlepoint .................. Passed 0.09 sec
Start 66: xtb/IP/EA
66/70 Test #66: xtb/IP/EA ........................ Passed 0.16 sec
Start 67: xtb/GFN0-xTB
67/70 Test #67: xtb/GFN0-xTB ..................... Passed 0.04 sec
Start 68: xtb/GFN1-xTB
68/70 Test #68: xtb/GFN1-xTB ..................... Passed 0.08 sec
Start 69: xtb/GFN2-xTB/GBSA
69/70 Test #69: xtb/GFN2-xTB/GBSA ................ Passed 0.07 sec
Start 70: xtb/GFN2-FF
70/70 Test #70: xtb/GFN2-FF ...................... Passed 0.03 sec
100% tests passed, 0 tests failed out of 70
Total Test time (real) = 21.74 sec
With Accelerate
Running tests...
Test project /Users/philipturner/Documents/MolecularRenderer/xtb/build
Start 1: mctc-lib/cutoff
1/70 Test #1: mctc-lib/cutoff .................. Passed 0.25 sec
Start 2: mctc-lib/data
2/70 Test #2: mctc-lib/data .................... Passed 0.01 sec
Start 3: mctc-lib/math
3/70 Test #3: mctc-lib/math .................... Passed 0.01 sec
Start 4: mctc-lib/ncoord
4/70 Test #4: mctc-lib/ncoord .................. Passed 0.65 sec
Start 5: mctc-lib/read
5/70 Test #5: mctc-lib/read .................... Passed 0.01 sec
Start 6: mctc-lib/read-aims
6/70 Test #6: mctc-lib/read-aims ............... Passed 0.01 sec
Start 7: mctc-lib/read-cjson
7/70 Test #7: mctc-lib/read-cjson .............. Passed 0.01 sec
Start 8: mctc-lib/read-ctfile
8/70 Test #8: mctc-lib/read-ctfile ............. Passed 0.01 sec
Start 9: mctc-lib/read-gaussian
9/70 Test #9: mctc-lib/read-gaussian ........... Passed 0.01 sec
Start 10: mctc-lib/read-genformat
10/70 Test #10: mctc-lib/read-genformat .......... Passed 0.01 sec
Start 11: mctc-lib/read-pdb
11/70 Test #11: mctc-lib/read-pdb ................ Passed 0.01 sec
Start 12: mctc-lib/read-qchem
12/70 Test #12: mctc-lib/read-qchem .............. Passed 0.01 sec
Start 13: mctc-lib/read-qcschema
13/70 Test #13: mctc-lib/read-qcschema ........... Passed 0.01 sec
Start 14: mctc-lib/read-turbomole
14/70 Test #14: mctc-lib/read-turbomole .......... Passed 0.01 sec
Start 15: mctc-lib/read-vasp
15/70 Test #15: mctc-lib/read-vasp ............... Passed 0.01 sec
Start 16: mctc-lib/read-xyz
16/70 Test #16: mctc-lib/read-xyz ................ Passed 0.01 sec
Start 17: mctc-lib/symbols
17/70 Test #17: mctc-lib/symbols ................. Passed 0.01 sec
Start 18: mctc-lib/write
18/70 Test #18: mctc-lib/write ................... Passed 0.01 sec
Start 19: mctc-lib/write-aims
19/70 Test #19: mctc-lib/write-aims .............. Passed 0.01 sec
Start 20: mctc-lib/write-cjson
20/70 Test #20: mctc-lib/write-cjson ............. Passed 0.01 sec
Start 21: mctc-lib/write-ctfile
21/70 Test #21: mctc-lib/write-ctfile ............ Passed 0.01 sec
Start 22: mctc-lib/write-gaussian
22/70 Test #22: mctc-lib/write-gaussian .......... Passed 0.01 sec
Start 23: mctc-lib/write-genformat
23/70 Test #23: mctc-lib/write-genformat ......... Passed 0.01 sec
Start 24: mctc-lib/write-pdb
24/70 Test #24: mctc-lib/write-pdb ............... Passed 0.01 sec
Start 25: mctc-lib/write-qchem
25/70 Test #25: mctc-lib/write-qchem ............. Passed 0.01 sec
Start 26: mctc-lib/write-qcschema
26/70 Test #26: mctc-lib/write-qcschema .......... Passed 0.01 sec
Start 27: mctc-lib/write-turbomole
27/70 Test #27: mctc-lib/write-turbomole ......... Passed 0.01 sec
Start 28: mctc-lib/write-vasp
28/70 Test #28: mctc-lib/write-vasp .............. Passed 0.01 sec
Start 29: mctc-lib/write-xyz
29/70 Test #29: mctc-lib/write-xyz ............... Passed 0.01 sec
Start 30: test-drive/all-tests
30/70 Test #30: test-drive/all-tests ............. Passed 0.15 sec
Start 31: test-drive/check
31/70 Test #31: test-drive/check ................. Passed 0.01 sec
Start 32: test-drive/select
32/70 Test #32: test-drive/select ................ Passed 0.01 sec
Start 33: xtb/CAPI
33/70 Test #33: xtb/CAPI ......................... Passed 0.38 sec
Start 34: xtb/atomlist
34/70 Test #34: xtb/atomlist ..................... Passed 0.18 sec
Start 35: xtb/coordinationnumber
35/70 Test #35: xtb/coordinationnumber ........... Passed 0.03 sec
Start 36: xtb/coulomb
36/70 Test #36: xtb/coulomb ...................... Passed 0.17 sec
Start 37: xtb/dftd3
37/70 Test #37: xtb/dftd3 ........................ Passed 0.33 sec
Start 38: xtb/dftd4
38/70 Test #38: xtb/dftd4 ........................ Passed 0.29 sec
Start 39: xtb/docking
39/70 Test #39: xtb/docking ...................... Passed 2.10 sec
Start 40: xtb/eeq
40/70 Test #40: xtb/eeq .......................... Passed 0.02 sec
Start 41: xtb/gfn0
41/70 Test #41: xtb/gfn0 ......................... Passed 0.14 sec
Start 42: xtb/gfn1
42/70 Test #42: xtb/gfn1 ......................... Passed 0.96 sec
Start 43: xtb/gfn2
43/70 Test #43: xtb/gfn2 ......................... Passed 2.06 sec
Start 44: xtb/gfnff
44/70 Test #44: xtb/gfnff ........................ Passed 3.88 sec
Start 45: xtb/hessian
45/70 Test #45: xtb/hessian ...................... Passed 0.03 sec
Start 46: xtb/iff
46/70 Test #46: xtb/iff .......................... Passed 0.16 sec
Start 47: xtb/latticepoint
47/70 Test #47: xtb/latticepoint ................. Passed 0.01 sec
Start 48: xtb/molecule
48/70 Test #48: xtb/molecule ..................... Passed 0.01 sec
Start 49: xtb/oniom
49/70 Test #49: xtb/oniom ........................ Passed 0.04 sec
Start 50: xtb/dipro
50/70 Test #50: xtb/dipro ........................ Passed 0.01 sec
Start 51: xtb/pbc-tools
51/70 Test #51: xtb/pbc-tools .................... Passed 0.01 sec
Start 52: xtb/peeq
52/70 Test #52: xtb/peeq ......................... Passed 0.04 sec
Start 53: xtb/repulsion
53/70 Test #53: xtb/repulsion .................... Passed 0.05 sec
Start 54: xtb/symmetry
54/70 Test #54: xtb/symmetry ..................... Passed 0.03 sec
Start 55: xtb/tblite
55/70 Test #55: xtb/tblite ....................... Passed 0.01 sec
Start 56: xtb/thermo
56/70 Test #56: xtb/thermo ....................... Passed 0.01 sec
Start 57: xtb/vertical
57/70 Test #57: xtb/vertical ..................... Passed 0.05 sec
Start 58: xtb/wsc
58/70 Test #58: xtb/wsc .......................... Passed 0.01 sec
Start 59: xtb/cpx
59/70 Test #59: xtb/cpx .......................... Passed 0.01 sec
Start 60: xtb/ptb
60/70 Test #60: xtb/ptb .......................... Passed 0.01 sec
Start 61: xtb/Argparser_print_version
61/70 Test #61: xtb/Argparser_print_version ...... Passed 0.26 sec
Start 62: xtb/Argparser_print_help
62/70 Test #62: xtb/Argparser_print_help ......... Passed 0.02 sec
Start 63: xtb/Argparser_print_license
63/70 Test #63: xtb/Argparser_print_license ...... Passed 0.01 sec
Start 64: xtb/Info
64/70 Test #64: xtb/Info ......................... Passed 0.01 sec
Start 65: xtb/Singlepoint
65/70 Test #65: xtb/Singlepoint .................. Passed 0.03 sec
Start 66: xtb/IP/EA
66/70 Test #66: xtb/IP/EA ........................ Passed 0.07 sec
Start 67: xtb/GFN0-xTB
67/70 Test #67: xtb/GFN0-xTB ..................... Passed 0.02 sec
Start 68: xtb/GFN1-xTB
68/70 Test #68: xtb/GFN1-xTB ..................... Passed 0.02 sec
Start 69: xtb/GFN2-xTB/GBSA
69/70 Test #69: xtb/GFN2-xTB/GBSA ................ Passed 0.03 sec
Start 70: xtb/GFN2-FF
70/70 Test #70: xtb/GFN2-FF ...................... Passed 0.01 sec
100% tests passed, 0 tests failed out of 70
Total Test time (real) = 12.88 sec
Time taken to execute test suite:
| Linear Algebra Library |
Time |
| OpenBLAS |
21.74 sec |
| Accelerate |
12.88 sec |
Related: #1102
Since ~April 2024, I've been swapping out the OpenBLAS installed with xTB for Apple Accelerate. It's sped up my workflows ~3x, especially for small systems, with under 1000 basis functions or orbitals. I see no reason this should not be the default library.
All tests pass:
With OpenBLAS
With Accelerate
Time taken to execute test suite:
Related: #1102