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