diff --git a/python/build_pyqmckl.sh b/python/build_pyqmckl.sh index 0dbd8fe..4736206 100755 --- a/python/build_pyqmckl.sh +++ b/python/build_pyqmckl.sh @@ -3,6 +3,8 @@ set -e set -x +cp ../include/qmckl.h . + # check if qmckl header exists if [[ ! -f 'qmckl.h' ]]; then echo "qmckl.h NOT FOUND" diff --git a/python/test/test_api.py b/python/test/test_api.py index 1d55690..4efb9cc 100644 --- a/python/test/test_api.py +++ b/python/test/test_api.py @@ -1,11 +1,52 @@ -import pyqmckl as pq +""" +This is the test of the Python API of the QMCkl library. +It is the `bench_mos.c` C code adapted from the `qmckl_bench` +repo and translated into Python with some modifications. +""" -from data.data import coord from os.path import join +import time + +import pyqmckl as pq +from data.data import coord + + +walk_num = 100 +elec_num = 158 + +ITERMAX = 10 ctx = pq.qmckl_context_create() fname = join('data', 'Alz_small.h5') rc = pq.qmckl_trexio_read(ctx, fname) +assert rc==0 print(pq.qmckl_string_of_error(rc)) + +rc = pq.qmckl_set_electron_walk_num(ctx, walk_num) +assert rc==0 + +rc, mo_num = pq.qmckl_get_mo_basis_mo_num(ctx) +assert rc==0 + +rc = pq.qmckl_set_electron_coord(ctx, 'T', coord) +assert rc==0 + +size_max = 5*walk_num*elec_num*mo_num + + + +rc, mo_vgl = pq.qmckl_get_mo_basis_mo_vgl(ctx, size_max) +assert rc==0 + +start = time.clock_gettime_ns(time.CLOCK_REALTIME) + +for _ in range(ITERMAX): + rc, mo_vgl_in = pq.qmckl_get_mo_basis_mo_vgl_inplace(ctx, size_max) + assert rc==0 + +end = time.clock_gettime_ns(time.CLOCK_REALTIME) + +print(f'Time for the calculation of 1 step : {(end-start)*.000001/ITERMAX} ms') +