README
1Simint
2----------------------------------------------------
3Horizontally-vectorized electron repulsion integrals
4
5
6----------
7WARNING
8----------
9This is still a somewhat experimental library.
10I've validated it as much as possible, but there still may be bugs. In addition,
11the API may change in the future.
12
13----------
14WARNING 2
15----------
16This currently supports only up to (7 7 | 7 7) integrals.
17Any permutation of angular momentum *is* supported
18
19
20-------------
21Requirements
22-------------
23
24Compiler:
25 Intel Compiler v15 or above
26 GCC v4.9 or above
27
28CMake 3.0.2 or above
29Intel CPU (may work on others, but not tested)
30
31
32---------------------------
33Configuring
34---------------------------
35
36Configuration and building is done via CMake (www.cmake.org).
37Generally, from within the extracted directory:
38
39 mkdir build; cd build
40 CC=icc CXX=icpc cmake (...other options...) ../
41
42Most importantly, you need to select which feature set to compile with.
43This is done with the SIMINT_VECTOR variable
44
45 -DSIMINT_VECTOR=sse
46 Intel CPUs with SSSE3 support
47 * Basically any CPU make in the last 10 years
48
49 -DSIMINT_VECTOR=avx
50 Intel CPUs with AVX support
51 * Sandy Bridge (not tested)
52 * Ivy Bridge
53 * Haswell (if you want)
54
55 -DSIMINT_VECTOR=avx2
56 Intel CPUs with AVX and FMA support
57 * Haswell
58
59 -DSIMINT_VECTOR=micavx512
60 Intel KNL (experimental)
61
62Scalar (unvectorized) versions of the code can be compiled that still
63use a particular instruction set. This is done by prepending "scalar-"
64to the given type. For example, "scalar-avx2" will enable AVX2, but
65still disable vectorization.
66
67Other options:
68
69 -DENABLE_TESTS:Bool=Off
70 Disable building tests
71
72 -DSIMINT_MAXAM=[integer]
73 Only compile angular momentum up to [integer]
74
75 -DBUILD_SHARED_LIBS:Bool=True
76 Build shared library, rather than a static library (default is static library)
77
78 -DSIMINT_STANDALONE:Bool=True
79 Create a standalone dynamic library (make as self-contained as possible
80 by linking in external libraries).
81
82
83 -DSIMINT_C_FLAGS="flag1;flag2"
84 -DSIMINT_TESTS_CXX_FLAGS="flag1;flag2"
85
86 Additional flags to pass to Simint and the testing features, respectively.
87
88
89---------------------------
90Building
91---------------------------
92
93make and make install, as usual
94
95
96---------------------------
97Tests
98---------------------------
99
100Can run tests from the build directory. See tests/dat for available
101molecules and basis sets.
102
103
104 OMP_NUM_THREADS=1 test_eri - Validate accuracy
105 OMP_NUM_THREADS=1 benchmark_eri - Benchmark simint
106
107You can of course change the number of threads to whatever you want. By default,
108it will use all available threads/cores.
109
110Examples (run from the build directory):
111
112 OMP_NUM_THREADS=4 test/test_eri ../test/dat/water.sto-3g.mol
113 OMP_NUM_THREADS=4 test/test_eri ../test/dat/ethane.aug-cc-pvtz.mol
114 OMP_NUM_THREADS=4 test/benchmark_eri ../test/dat/benzene.roos-ano-tz.mol
115
116
117
118---------------------------
119Code examples
120---------------------------
121
122Some simple examples of using the library are in the "examples" subdirectory.
123They are built by default.
124
125 examples/example1
126
127
128