From 35795a9c350385ea68065711ab6da4ecf4f7e0ea Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 30 Dec 2024 00:00:05 +0100 Subject: [PATCH] Update determinant test such that last chunk is smaller (100 dets in 7 chunks) --- tests/io_determinant.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/tests/io_determinant.c b/tests/io_determinant.c index bd861d2..d9784dd 100644 --- a/tests/io_determinant.c +++ b/tests/io_determinant.c @@ -5,7 +5,7 @@ #include #define SIZE 100 -#define N_CHUNKS 5 +#define N_CHUNKS 7 #define STATE_TEST 2 static int test_write_determinant (const char* file_name, const back_end_t backend, const int64_t offset, const int mo_num) { @@ -54,7 +54,7 @@ static int test_write_determinant (const char* file_name, const back_end_t backe } // write dataset chunks of sparse data in the file (including FAKE statements) - uint64_t chunk_size = (uint64_t) SIZE/N_CHUNKS; + uint64_t chunk_size = (uint64_t) (SIZE-1)/N_CHUNKS+1; uint64_t offset_f = 0UL; uint64_t offset_d = 0UL; if (offset != 0L) offset_f += offset; @@ -67,7 +67,10 @@ static int test_write_determinant (const char* file_name, const back_end_t backe // write n_chunks times using write_sparse for(int i=0; i SIZE) { + chunk_size = SIZE % chunk_size; + } + printf("chunk_size: %ld | %ld\n", chunk_size, offset_f+chunk_size); rc = trexio_write_determinant_list(file, offset_f, chunk_size, &det_list[2*int_num*offset_d]); assert(rc == TREXIO_SUCCESS); @@ -166,7 +169,7 @@ static int test_read_determinant (const char* file_name, const back_end_t backen int64_t* det_list_read; double* det_coef_read; double check_diff; - uint64_t size_r = 40L; + uint64_t size_r = SIZE; det_list_read = (int64_t*) calloc(2*int_num*size_r,sizeof(int64_t)); det_coef_read = (double*) calloc(size_r,sizeof(double)); @@ -222,6 +225,8 @@ static int test_read_determinant (const char* file_name, const back_end_t backen } */ assert(rc == TREXIO_END); + printf("%d %d\n", (int) chunk_read, (int) eof_read_size_check); + fflush(stdout); assert(chunk_read == eof_read_size_check); chunk_read = read_size_check; @@ -254,7 +259,26 @@ static int test_read_determinant (const char* file_name, const back_end_t backen int32_t* orb_list_dn = (int32_t*) calloc(size_list, sizeof(int32_t)); int32_t occ_num_up, occ_num_dn; - rc = trexio_read_determinant_list(file, 0L, &chunk_read, &det_list_read[0L]); +// rc = trexio_read_determinant_list(file, 0L, &chunk_read, &det_list_read[0L]); + // read n_chunks times using read_sparse + uint64_t chunk_size = (uint64_t) (SIZE-1)/N_CHUNKS+1; + uint64_t offset_f = 0UL; + uint64_t offset_d = 0UL; + for(int i=0; i SIZE) { + chunk_size = SIZE % chunk_size; + } + printf("chunk_size: %ld | %ld\n", chunk_size, offset_f+chunk_size); + rc = trexio_read_determinant_list(file, offset_f, &chunk_size, &det_list_read[2*int_num*offset_d]); + assert(rc == TREXIO_SUCCESS); + + rc = trexio_read_determinant_coefficient(file, offset_f, &chunk_size, &det_coef_read[offset_d]); + assert(rc == TREXIO_SUCCESS); + + offset_d += chunk_size; + offset_f += chunk_size; + } + assert (rc == TREXIO_SUCCESS); rc = trexio_to_orbital_list_up_dn (int_num, &det_list_read[0], orb_list_up, orb_list_dn, &occ_num_up, &occ_num_dn);