From e65360c9a4fde5d7e35c958f25450ecbd87f2a99 Mon Sep 17 00:00:00 2001 From: Ajay Panyala Date: Sat, 27 Apr 2024 23:10:02 -0700 Subject: [PATCH] remove duplicated code in parser [CD] add skip_cd option, change write_cv option syntax [CC] cleanup profiling header --- ci/reference_output/ch4.def2-tzvp.ccsd_t.json | 3 +- ci/reference_output/co.cc-pvdz.gfccsd.json | 3 +- .../h2o_ducc.cc-pvdz.ducc.json | 3 +- .../h2o_eom.cc-pvdz.eomccsd.json | 3 +- .../ubiquitin_dgrtl.6-31g.ccsd_t.json | 3 +- .../ubiquitin_dgrtl.cc-pvdz.ccsd_t.json | 3 +- docs/schema/input_schema.json | 18 ++-- docs/user_guide/cholesky_decomposition.rst | 8 +- exachem/cc/cc2/cd_cc2_cs.cpp | 5 +- exachem/cc/cc2/cd_cc2_os.cpp | 5 +- exachem/cc/ccsd/ccsd_util.cpp | 36 ++++--- exachem/cc/ccsd/cd_ccsd_cs_ann.cpp | 31 +++--- exachem/cc/ccsd/cd_ccsd_os_ann.cpp | 31 +++--- exachem/cc/cd_svd/cd_svd.cpp | 17 ++-- exachem/cc/rteom/rt_eom_cd_ccsd.cpp | 5 +- exachem/common/chemenv.cpp | 4 +- exachem/common/options/input_options.cpp | 8 +- exachem/common/options/input_options.hpp | 12 +-- exachem/common/options/parse_ccsd_options.cpp | 98 ------------------- exachem/common/options/parse_cd_options.cpp | 23 +---- .../common/options/parse_common_options.cpp | 27 +---- .../common/options/parse_common_options.hpp | 6 +- exachem/common/options/parse_gw_options.cpp | 24 ----- exachem/common/options/parse_options.cpp | 18 ++-- exachem/common/options/parse_scf_options.cpp | 98 ++----------------- exachem/common/options/parse_task_options.cpp | 28 ------ exachem/scf/scf_main.hpp | 1 - inputs/example.json | 5 +- 28 files changed, 134 insertions(+), 392 deletions(-) diff --git a/ci/reference_output/ch4.def2-tzvp.ccsd_t.json b/ci/reference_output/ch4.def2-tzvp.ccsd_t.json index 25332f6..552e0b8 100644 --- a/ci/reference_output/ch4.def2-tzvp.ccsd_t.json +++ b/ci/reference_output/ch4.def2-tzvp.ccsd_t.json @@ -461,8 +461,7 @@ "CD": { "diagtol": 1e-12, "itilesize": 1000, - "write_cv": false, - "write_vcount": 5000, + "write_cv": [false, 5000], "max_cvecs_factor": 40 }, "CCSD": { diff --git a/ci/reference_output/co.cc-pvdz.gfccsd.json b/ci/reference_output/co.cc-pvdz.gfccsd.json index 2e6ac0c..2e3e50b 100644 --- a/ci/reference_output/co.cc-pvdz.gfccsd.json +++ b/ci/reference_output/co.cc-pvdz.gfccsd.json @@ -466,8 +466,7 @@ "CD": { "diagtol": 1e-08, "itilesize": 1000, - "write_cv": false, - "write_vcount": 5000, + "write_cv": [false, 5000], "max_cvecs_factor": 12 }, "CCSD": { diff --git a/ci/reference_output/h2o_ducc.cc-pvdz.ducc.json b/ci/reference_output/h2o_ducc.cc-pvdz.ducc.json index 965a68c..c30d0ed 100644 --- a/ci/reference_output/h2o_ducc.cc-pvdz.ducc.json +++ b/ci/reference_output/h2o_ducc.cc-pvdz.ducc.json @@ -260,8 +260,7 @@ "CD": { "diagtol": 1e-12, "itilesize": 1000, - "write_cv": false, - "write_vcount": 5000, + "write_cv": [false, 5000], "max_cvecs_factor": 40 }, "CCSD": { diff --git a/ci/reference_output/h2o_eom.cc-pvdz.eomccsd.json b/ci/reference_output/h2o_eom.cc-pvdz.eomccsd.json index 276f4d5..8792ece 100644 --- a/ci/reference_output/h2o_eom.cc-pvdz.eomccsd.json +++ b/ci/reference_output/h2o_eom.cc-pvdz.eomccsd.json @@ -622,8 +622,7 @@ "CD": { "diagtol": 1e-12, "itilesize": 1000, - "write_cv": false, - "write_vcount": 5000, + "write_cv": [false, 5000], "max_cvecs_factor": 40 }, "CCSD": { diff --git a/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.6-31g.ccsd_t.json b/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.6-31g.ccsd_t.json index 3e6500d..cd2d5ac 100644 --- a/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.6-31g.ccsd_t.json +++ b/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.6-31g.ccsd_t.json @@ -314,8 +314,7 @@ "CD": { "diagtol": 1e-05, "itilesize": 1000, - "write_cv": true, - "write_vcount": 5000, + "write_cv": [true, 5000], "max_cvecs_factor": 12 }, "CCSD": { diff --git a/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.cc-pvdz.ccsd_t.json b/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.cc-pvdz.ccsd_t.json index 0e2f040..57e2f9b 100644 --- a/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.cc-pvdz.ccsd_t.json +++ b/ci/reference_output/ubiquitin_dgrtl/ubiquitin_dgrtl.cc-pvdz.ccsd_t.json @@ -306,8 +306,7 @@ "CD": { "diagtol": 1e-05, "itilesize": 1000, - "write_cv": true, - "write_vcount": 5000, + "write_cv": [true, 5000], "max_cvecs_factor": 12 }, "CCSD": { diff --git a/docs/schema/input_schema.json b/docs/schema/input_schema.json index b8f7ac3..70101a9 100644 --- a/docs/schema/input_schema.json +++ b/docs/schema/input_schema.json @@ -108,15 +108,15 @@ "writem": { "type": "number" }, - "riscf": { - "type": "string" - }, "restart": { "type": "boolean" }, "noscf": { "type": "boolean" }, + "direct_df": { + "type": "boolean" + }, "guess": { "type": "array", "sad": { @@ -211,11 +211,17 @@ "diagtol": { "type": "number" }, - "write_vcount": { - "type": "number" + "skip_cd": { + "type": "array", + "items": { + "type": "string" + } }, "write_cv": { - "type": "boolean" + "type": "array", + "items": { + "type": "string" + } }, "itilesize": { "type": "number" diff --git a/docs/user_guide/cholesky_decomposition.rst b/docs/user_guide/cholesky_decomposition.rst index c40ff74..33a6595 100644 --- a/docs/user_guide/cholesky_decomposition.rst +++ b/docs/user_guide/cholesky_decomposition.rst @@ -24,8 +24,7 @@ Options used in the Cholesky decomposition of atomic-orbital based two-electron "CD": { "diagonal": 1e-5, "itilesize": 1000, - "write_cv": false, - "write_vcount": 5000 + "write_cv": [false,5000] } :diagonal: ``[default=1e-5]`` The diagonal threshold used to terminate the decomposition procedure and truncate the Cholesky vectors. @@ -34,7 +33,6 @@ Options used in the Cholesky decomposition of atomic-orbital based two-electron The following options are applicable only for calculations involving :math:`\geq` 1000 basis functions. They are used for restarting the cholesky decomposition procedure. -:write_cv: ``[default=false]`` When enabled, it performs parallel IO to write the tensor containing the AO cholesky vectors to disk. Enabling this option implies restart. - -:write_vcount: ``[default=5000]`` The cholesky vectors are written to disk after every *write_vcount* vectors are computed. +:write_cv: ``[default=[false,5000]]`` When enabled, it performs parallel IO to write the tensor containing the AO cholesky vectors to disk. Enabling this option implies restart. +The integer represents a count, indicating that the Cholesky vectors should be written to disk after every *count* vectors are computed. diff --git a/exachem/cc/cc2/cd_cc2_cs.cpp b/exachem/cc/cc2/cd_cc2_cs.cpp index afdaeaf..4ef106f 100644 --- a/exachem/cc/cc2/cd_cc2_cs.cpp +++ b/exachem/cc/cc2/cd_cc2_cs.cpp @@ -517,10 +517,7 @@ std::tuple cc2_cs::cd_cc2_cs_driver( std::string profile_csv = cd_cc2_fp + "_profile.csv"; std::ofstream pds(profile_csv, std::ios::out); if(!pds) std::cerr << "Error opening file " << profile_csv << std::endl; - std::string header = "ID;Level;OP;total_op_time_min;total_op_time_max;total_op_time_avg;"; - header += "get_time_min;get_time_max;get_time_avg;gemm_time_min;"; - header += "gemm_time_max;gemm_time_avg;acc_time_min;acc_time_max;acc_time_avg"; - pds << header << std::endl; + pds << ec.get_profile_header() << std::endl; pds << ec.get_profile_data().str() << std::endl; pds.close(); } diff --git a/exachem/cc/cc2/cd_cc2_os.cpp b/exachem/cc/cc2/cd_cc2_os.cpp index 1719eee..4d473eb 100644 --- a/exachem/cc/cc2/cd_cc2_os.cpp +++ b/exachem/cc/cc2/cd_cc2_os.cpp @@ -688,10 +688,7 @@ std::tuple cc2_os::cd_cc2_os_driver( std::string profile_csv = cc2_fp + "_profile.csv"; std::ofstream pds(profile_csv, std::ios::out); if(!pds) std::cerr << "Error opening file " << profile_csv << std::endl; - std::string header = "ID;Level;OP;total_op_time_min;total_op_time_max;total_op_time_avg;"; - header += "get_time_min;get_time_max;get_time_avg;gemm_time_min;"; - header += "gemm_time_max;gemm_time_avg;acc_time_min;acc_time_max;acc_time_avg"; - pds << header << std::endl; + pds << ec.get_profile_header() << std::endl; pds << ec.get_profile_data().str() << std::endl; pds.close(); } diff --git a/exachem/cc/ccsd/ccsd_util.cpp b/exachem/cc/ccsd/ccsd_util.cpp index 1558ab2..5195af6 100644 --- a/exachem/cc/ccsd/ccsd_util.cpp +++ b/exachem/cc/ccsd/ccsd_util.cpp @@ -512,7 +512,9 @@ exachem::cd_svd::cd_svd_driver(ChemEnv& chem_env, ExecutionContext& ec, TiledInd std::string files_dir = out_fp + chem_env.ioptions.scf_options.scf_type; std::string lcaofile = files_dir + "/" + sys_data.output_file_prefix + ".lcao"; - if(!readv2) { + auto skip_cd = cd_options.skip_cd; + + if(!readv2 && !skip_cd.first) { two_index_transform(chem_env, ec, C_AO, F_AO, C_beta_AO, F_beta_AO, d_f1, shells, lcao, is_dlpno || !is_mso); if(!is_dlpno) @@ -520,13 +522,24 @@ exachem::cd_svd::cd_svd_driver(ChemEnv& chem_env, ExecutionContext& ec, TiledInd write_to_disk(lcao, lcaofile); } else { - std::ifstream in(cholfile, std::ios::in); - int rstatus = 0; - if(in.is_open()) rstatus = 1; - if(rstatus == 1) in >> chol_count; - else tamm_terminate("Error reading " + cholfile); - - if(rank == 0) cout << "Number of cholesky vectors to be read = " << chol_count << endl; + if(!skip_cd.first) { + std::ifstream in(cholfile, std::ios::in); + int rstatus = 0; + if(in.is_open()) rstatus = 1; + if(rstatus == 1) in >> chol_count; + else tamm_terminate("Error reading " + cholfile); + + if(rank == 0) + cout << "Number of cholesky vectors to be read from disk = " << chol_count << endl; + } + else { + chol_count = skip_cd.second; + if(rank == 0) + cout << endl + << "Skipping Cholesky Decomposition... using user provided cholesky vector count of " + << chol_count << endl + << endl; + } if(!is_dlpno) update_sysdata(chem_env, MO, is_mso); @@ -537,17 +550,18 @@ exachem::cd_svd::cd_svd_driver(ChemEnv& chem_env, ExecutionContext& ec, TiledInd cholVpr = {{N, N, CI}, {SpinPosition::upper, SpinPosition::lower, SpinPosition::ignore}}; if(!is_dlpno) Tensor::allocate(&ec, cholVpr); // Scheduler{ec}(cholVpr()=0).execute(); - read_from_disk(lcao, lcaofile); + if(!skip_cd.first) read_from_disk(lcao, lcaofile); } auto hf_t2 = std::chrono::high_resolution_clock::now(); double cd_svd_time = std::chrono::duration_cast>((hf_t2 - hf_t1)).count(); - if(rank == 0) + if(rank == 0 && !skip_cd.first) std::cout << std::endl << "Total Time taken for Cholesky Decomposition: " << std::fixed - << std::setprecision(2) << cd_svd_time << " secs" << std::endl; + << std::setprecision(2) << cd_svd_time << " secs" << std::endl + << std::endl; Tensor::deallocate(C_AO, F_AO); if(sys_data.is_unrestricted) Tensor::deallocate(C_beta_AO, F_beta_AO); diff --git a/exachem/cc/ccsd/cd_ccsd_cs_ann.cpp b/exachem/cc/ccsd/cd_ccsd_cs_ann.cpp index 08f1736..4a3ee4a 100644 --- a/exachem/cc/ccsd/cd_ccsd_cs_ann.cpp +++ b/exachem/cc/ccsd/cd_ccsd_cs_ann.cpp @@ -275,7 +275,9 @@ void exachem::cc::ccsd::ccsd_t2_cs(Scheduler& sch, const TiledIndexSpace& MO, auto btensor = rhs2_.tensor(); // for(auto itval=loop_nest.begin(); itval!=loop_nest.end(); ++itval) {} - auto compute_v4_term = [=](const IndexVector& cblkid, span cbuf) { + auto& oprof = tamm::OpProfiler::instance(); + + auto compute_v4_term = [=, &oprof](const IndexVector& cblkid, span cbuf) { auto& memHostPool = tamm::RMMMemoryManager::getInstance().getHostMemoryPool(); // compute blockids from the loop indices. itval is the loop index @@ -404,18 +406,21 @@ void exachem::cc::ccsd::ccsd_t2_cs(Scheduler& sch, const TiledIndexSpace& MO, static_cast(memDevicePool.allocate(asize * sizeof(TensorElType2))); bbuf_dev = static_cast(memDevicePool.allocate(bsize * sizeof(TensorElType3))); - + TimerGuard tg_copy{&oprof.multOpCopyTime}; gpuMemcpyAsync(abuf_dev, abuf, asize, gpuMemcpyHostToDevice, thandle); gpuMemcpyAsync(bbuf_dev, bbuf, bsize, gpuMemcpyHostToDevice, thandle); } #endif - - kernels::block_multiply( + { + TimerGuard tg_dgemm{&oprof.multOpDgemmTime}; + kernels::block_multiply( #if defined(USE_CUDA) || defined(USE_HIP) || defined(USE_DPCPP) - abuf_dev, bbuf_dev, + abuf_dev, bbuf_dev, #endif - thandle, 1.0, abuf, adims_sz, rhs1_int_labels_, bbuf, bdims_sz, rhs2_int_labels_, cscale, - cbuf.data(), cdims_sz, lhs_int_labels_, hw, false, cbuf_dev_ptr, cbuf_tmp_dev_ptr); + thandle, 1.0, abuf, adims_sz, rhs1_int_labels_, bbuf, bdims_sz, rhs2_int_labels_, + cscale, cbuf.data(), cdims_sz, lhs_int_labels_, hw, false, cbuf_dev_ptr, + cbuf_tmp_dev_ptr); + } #if(defined(USE_CUDA) || defined(USE_HIP) || defined(USE_DPCPP)) if(hw == ExecutionHW::GPU) { @@ -437,8 +442,11 @@ void exachem::cc::ccsd::ccsd_t2_cs(Scheduler& sch, const TiledIndexSpace& MO, TensorElType1* cbuf_tmp{nullptr}; cbuf_tmp = static_cast(memHostPool.allocate(csize * sizeof(TensorElType1))); std::memset(cbuf_tmp, 0, csize * sizeof(TensorElType1)); - gpuMemcpyAsync(cbuf_tmp, cbuf_dev_ptr, csize, gpuMemcpyDeviceToHost, - thandle); + { + TimerGuard tg_copy{&oprof.multOpCopyTime}; + gpuMemcpyAsync(cbuf_tmp, cbuf_dev_ptr, csize, gpuMemcpyDeviceToHost, + thandle); + } // cbuf+=cbuf_tmp gpuStreamSynchronize(thandle); blas::axpy(csize, TensorElType1{1}, cbuf_tmp, 1, cbuf.data(), 1); @@ -786,10 +794,7 @@ std::tuple exachem::cc::ccsd::cd_ccsd_cs_driver( std::string profile_csv = ccsd_fp + "_profile.csv"; std::ofstream pds(profile_csv, std::ios::out); if(!pds) std::cerr << "Error opening file " << profile_csv << std::endl; - std::string header = "ID;Level;OP;total_op_time_min;total_op_time_max;total_op_time_avg;"; - header += "get_time_min;get_time_max;get_time_avg;gemm_time_min;"; - header += "gemm_time_max;gemm_time_avg;acc_time_min;acc_time_max;acc_time_avg"; - pds << header << std::endl; + pds << ec.get_profile_header() << std::endl; pds << ec.get_profile_data().str() << std::endl; pds.close(); } diff --git a/exachem/cc/ccsd/cd_ccsd_os_ann.cpp b/exachem/cc/ccsd/cd_ccsd_os_ann.cpp index 4b0e8f6..ec6eaa0 100644 --- a/exachem/cc/ccsd/cd_ccsd_os_ann.cpp +++ b/exachem/cc/ccsd/cd_ccsd_os_ann.cpp @@ -248,8 +248,10 @@ void ccsd_t2_os(Scheduler& sch, const TiledIndexSpace& MO, const TiledIndexSpace // "_a022( abab )(p3_va,p4_vb,p2_va,p1_vb) = 1.0 * _a021_os( aa )(p3_va,p2_va,cind) * // _a021_os( bb )(p4_vb,p1_vb,cind)") - int a22_flag = 0; - auto compute_v4_term = [=, &a22_flag](const IndexVector& cblkid, span cbuf) { + int a22_flag = 0; + auto& oprof = tamm::OpProfiler::instance(); + + auto compute_v4_term = [=, &a22_flag, &oprof](const IndexVector& cblkid, span cbuf) { Tensor a22_tmp; LabeledTensor*lhsp_{nullptr}, *rhs1p_{nullptr}, *rhs2p_{nullptr}; @@ -520,13 +522,16 @@ void ccsd_t2_os(Scheduler& sch, const TiledIndexSpace& MO, const TiledIndexSpace abptr->abuf_ = abuf; abptr->bbuf_ = bbuf; - kernels::block_multiply( + { + TimerGuard tg_dgemm{&oprof.multOpDgemmTime}; + kernels::block_multiply( #if defined(USE_CUDA) || defined(USE_HIP) || defined(USE_DPCPP) - abptr->ta_, abptr->tb_, + abptr->ta_, abptr->tb_, #endif - thandle, 1.0, abptr->abuf_, adims_sz, rhs1_int_labels_, abptr->bbuf_, bdims_sz, - rhs2_int_labels_, cscale, cbuf.data(), cdims_sz, lhs_int_labels_, hw, false, cbuf_dev_ptr, - cbuf_tmp_dev_ptr); + thandle, 1.0, abptr->abuf_, adims_sz, rhs1_int_labels_, abptr->bbuf_, bdims_sz, + rhs2_int_labels_, cscale, cbuf.data(), cdims_sz, lhs_int_labels_, hw, false, + cbuf_dev_ptr, cbuf_tmp_dev_ptr); + } #if(defined(USE_CUDA) || defined(USE_HIP) || defined(USE_DPCPP)) if(hw == ExecutionHW::GPU) { @@ -548,8 +553,11 @@ void ccsd_t2_os(Scheduler& sch, const TiledIndexSpace& MO, const TiledIndexSpace TensorElType1* cbuf_tmp{nullptr}; cbuf_tmp = static_cast(memHostPool.allocate(csize * sizeof(TensorElType1))); std::memset(cbuf_tmp, 0, csize * sizeof(TensorElType1)); - gpuMemcpyAsync(cbuf_tmp, cbuf_dev_ptr, csize, gpuMemcpyDeviceToHost, - thandle); + { + TimerGuard tg_copy{&oprof.multOpCopyTime}; + gpuMemcpyAsync(cbuf_tmp, cbuf_dev_ptr, csize, gpuMemcpyDeviceToHost, + thandle); + } // cbuf+=cbuf_tmp gpuStreamSynchronize(thandle); blas::axpy(csize, TensorElType1{1}, cbuf_tmp, 1, cbuf.data(), 1); @@ -1119,10 +1127,7 @@ cd_ccsd_os_driver(ChemEnv& chem_env, ExecutionContext& ec, const TiledIndexSpace std::string profile_csv = ccsd_fp + "_profile.csv"; std::ofstream pds(profile_csv, std::ios::out); if(!pds) std::cerr << "Error opening file " << profile_csv << std::endl; - std::string header = "ID;Level;OP;total_op_time_min;total_op_time_max;total_op_time_avg;"; - header += "get_time_min;get_time_max;get_time_avg;gemm_time_min;"; - header += "gemm_time_max;gemm_time_avg;acc_time_min;acc_time_max;acc_time_avg"; - pds << header << std::endl; + pds << ec.get_profile_header() << std::endl; pds << ec.get_profile_data().str() << std::endl; pds.close(); } diff --git a/exachem/cc/cd_svd/cd_svd.cpp b/exachem/cc/cd_svd/cd_svd.cpp index f87d860..d3c6460 100644 --- a/exachem/cc/cd_svd/cd_svd.cpp +++ b/exachem/cc/cd_svd/cd_svd.cpp @@ -276,12 +276,11 @@ exachem::cd_svd::cd_svd(ChemEnv& chem_env, ExecutionContext& ec, TiledIndexSpace using libint2::Operator; using libint2::Shell; - SystemData& sys_data = chem_env.sys_data; - const auto cd_options = chem_env.ioptions.cd_options; - const bool write_cv = cd_options.write_cv; - const double diagtol = cd_options.diagtol; - const int write_vcount = cd_options.write_vcount; - const tamm::Tile itile_size = cd_options.itilesize; + SystemData& sys_data = chem_env.sys_data; + const auto cd_options = chem_env.ioptions.cd_options; + const auto write_cv = cd_options.write_cv; + const double diagtol = cd_options.diagtol; + const tamm::Tile itile_size = cd_options.itilesize; // const TAMM_GA_SIZE northo = sys_data.nbf; const TAMM_GA_SIZE nao = sys_data.nbf_orig; @@ -405,7 +404,7 @@ exachem::cd_svd::cd_svd(ChemEnv& chem_env, ExecutionContext& ec, TiledIndexSpace Engine engine(Operator::coulomb, max_nprim(shells), max_l(shells), 0); const auto& buf = engine.results(); - bool cd_restart = write_cv && fs::exists(diag_ao_file) && fs::exists(chol_ao_file) && + bool cd_restart = write_cv.first && fs::exists(diag_ao_file) && fs::exists(chol_ao_file) && fs::exists(cv_count_file); auto compute_diagonals = [&](const IndexVector& blockid) { @@ -830,7 +829,7 @@ exachem::cd_svd::cd_svd(ChemEnv& chem_env, ExecutionContext& ec, TiledIndexSpace #if !defined(USE_UPCXX) // Restart - if(write_cv && count % write_vcount == 0 && nbf > 1000) { write_chol_vectors(); } + if(write_cv.first && count % write_cv.second == 0 && nbf > 1000) { write_chol_vectors(); } #endif } // while @@ -838,7 +837,7 @@ exachem::cd_svd::cd_svd(ChemEnv& chem_env, ExecutionContext& ec, TiledIndexSpace if(rank == 0) std::cout << endl << "- Total number of cholesky vectors = " << count << std::endl; #if !defined(USE_UPCXX) - if(write_cv && nbf > 1000) write_chol_vectors(); + if(write_cv.first && nbf > 1000) write_chol_vectors(); #endif Tensor::deallocate(g_d_tamm, g_r_tamm); diff --git a/exachem/cc/rteom/rt_eom_cd_ccsd.cpp b/exachem/cc/rteom/rt_eom_cd_ccsd.cpp index 1d9d58b..39fd95a 100644 --- a/exachem/cc/rteom/rt_eom_cd_ccsd.cpp +++ b/exachem/cc/rteom/rt_eom_cd_ccsd.cpp @@ -956,10 +956,7 @@ void rt_eom_cd_ccsd(ChemEnv& chem_env, ExecutionContext& ec, const TiledIndexSpa std::string profile_csv = rt_eom_fp + "_profile.csv"; std::ofstream pds(profile_csv, std::ios::out); if(!pds) std::cerr << "Error opening file " << profile_csv << std::endl; - std::string header = "ID;Level;OP;total_op_time_min;total_op_time_max;total_op_time_avg;"; - header += "get_time_min;get_time_max;get_time_avg;gemm_time_min;"; - header += "gemm_time_max;gemm_time_avg;acc_time_min;acc_time_max;acc_time_avg"; - pds << header << std::endl; + pds << ec.get_profile_header() << std::endl; pds << ec.get_profile_data().str() << std::endl; pds.close(); } diff --git a/exachem/common/chemenv.cpp b/exachem/common/chemenv.cpp index 1761449..5098fd5 100644 --- a/exachem/common/chemenv.cpp +++ b/exachem/common/chemenv.cpp @@ -85,8 +85,8 @@ void ChemEnv::write_json_data(const std::string cmodule) { // CD options results["input"]["CD"]["diagtol"] = cd.diagtol; results["input"]["CD"]["itilesize"] = cd.itilesize; + results["input"]["CD"]["skip_cd"] = cd.skip_cd; results["input"]["CD"]["write_cv"] = cd.write_cv; - results["input"]["CD"]["write_vcount"] = cd.write_vcount; results["input"]["CD"]["max_cvecs_factor"] = cd.max_cvecs_factor; } @@ -241,4 +241,4 @@ void ChemEnv::sinfo() { if(rank == 0) write_sinfo(); ec.flush_and_sync(); -} \ No newline at end of file +} diff --git a/exachem/common/options/input_options.cpp b/exachem/common/options/input_options.cpp index 6ec2df0..92a23a2 100644 --- a/exachem/common/options/input_options.cpp +++ b/exachem/common/options/input_options.cpp @@ -301,9 +301,11 @@ void CDOptions::print() { std::cout << std::endl << "CD Options" << std::endl; std::cout << "{" << std::endl; std::cout << std::boolalpha << " debug = " << debug << std::endl; - std::cout << std::boolalpha << " write_cv = " << write_cv << std::endl; + std::cout << std::boolalpha << " skip_cd = [" << skip_cd.first << "," << skip_cd.second + << "]" << std::endl; + std::cout << std::boolalpha << " write_cv = [" << write_cv.first << "," << write_cv.second + << "]" << std::endl; std::cout << " diagtol = " << diagtol << std::endl; - std::cout << " write_vcount = " << write_vcount << std::endl; std::cout << " itilesize = " << itilesize << std::endl; std::cout << " max_cvecs_factor = " << max_cvecs_factor << std::endl; std::cout << "}" << std::endl; @@ -355,4 +357,4 @@ void TaskOptions::print() { std::cout << " dlpno_ccsd: " << dlpno_ccsd.first << ", " << dlpno_ccsd.second << "\n"; std::cout << " dlpno_ccsd_t " << dlpno_ccsd_t.first << ", " << dlpno_ccsd_t.second << "\n"; std::cout << "}" << std::endl; -} \ No newline at end of file +} diff --git a/exachem/common/options/input_options.hpp b/exachem/common/options/input_options.hpp index 5727ff6..91af26e 100644 --- a/exachem/common/options/input_options.hpp +++ b/exachem/common/options/input_options.hpp @@ -42,11 +42,9 @@ class SCFOptions: public CommonOptions { bool direct_df{false}; int restart_size{2000}; // read/write orthogonalizer, schwarz, etc matrices when N>=restart_size int scalapack_nb{256}; - int riscf{0}; // 0 for JK, 1 for J, 2 for K int nnodes{1}; int scalapack_np_row{0}; int scalapack_np_col{0}; - std::string riscf_str{"JK"}; std::string moldenfile{""}; int n_lindep{0}; int writem{1}; @@ -170,11 +168,13 @@ class CDOptions: public CommonOptions { double diagtol{1e-5}; int itilesize{1000}; int max_cvecs_factor{12}; + + // skip cholesky and use the value specified as the cholesky vector count. + std::pair skip_cd{false, 100}; + // enabled only if set to true and nbf > 1000 // write to disk after every count number of vectors are computed. - // enabled only if write_cv=true and nbf>1000 - bool write_cv{false}; - int write_vcount{5000}; - void print(); + std::pair write_cv{false, 5000}; + void print(); }; class FCIOptions: public CommonOptions { diff --git a/exachem/common/options/parse_ccsd_options.cpp b/exachem/common/options/parse_ccsd_options.cpp index cd36041..ec9b390 100644 --- a/exachem/common/options/parse_ccsd_options.cpp +++ b/exachem/common/options/parse_ccsd_options.cpp @@ -155,101 +155,3 @@ void ParseCCSDOptions::update_common_options(ChemEnv& chem_env) { cc_options.file_prefix = common_options.file_prefix; cc_options.ext_data_path = common_options.ext_data_path; } - -void ParseCCSDOptions::print(ChemEnv& chem_env) { - std::cout << std::defaultfloat; - std::cout << std::endl << "CCSD Options" << std::endl; - std::cout << "{" << std::endl; - - CCSDOptions& cc_options = chem_env.ioptions.ccsd_options; - std::cout << " cache_size = " << cc_options.cache_size << std::endl; - std::cout << " ccsdt_tilesize = " << cc_options.ccsdt_tilesize << std::endl; - - std::cout << " ndiis = " << cc_options.ndiis << std::endl; - std::cout << " threshold = " << cc_options.threshold << std::endl; - std::cout << " tilesize = " << cc_options.tilesize << std::endl; - if(cc_options.nactive > 0) - std::cout << " nactive = " << cc_options.nactive << std::endl; - if(cc_options.pcore > 0) std::cout << " pcore = " << cc_options.pcore << std::endl; - std::cout << " ccsd_maxiter = " << cc_options.ccsd_maxiter << std::endl; - txt_utils::print_bool(" freeze_atomic ", cc_options.freeze_atomic); - std::cout << " freeze_core = " << cc_options.freeze_core << std::endl; - std::cout << " freeze_virtual = " << cc_options.freeze_virtual << std::endl; - if(cc_options.lshift != 0) - std::cout << " lshift = " << cc_options.lshift << std::endl; - if(cc_options.gf_nprocs_poi > 0) - std::cout << " gf_nprocs_poi = " << cc_options.gf_nprocs_poi << std::endl; - txt_utils::print_bool(" readt ", cc_options.readt); - txt_utils::print_bool(" writet ", cc_options.writet); - txt_utils::print_bool(" writev ", cc_options.writev); - // txt_utils::print_bool(" computeTData ", computeTData); - std::cout << " writet_iter = " << cc_options.writet_iter << std::endl; - txt_utils::print_bool(" profile_ccsd ", cc_options.profile_ccsd); - txt_utils::print_bool(" balance_tiles ", cc_options.balance_tiles); - - if(!cc_options.dlpno_dfbasis.empty()) - std::cout << " dlpno_dfbasis = " << cc_options.dlpno_dfbasis << std::endl; - if(!cc_options.doubles_opt_eqns.empty()) { - std::cout << " doubles_opt_eqns = ["; - for(auto x: cc_options.doubles_opt_eqns) std::cout << x << ","; - std::cout << "]" << std::endl; - } - - if(!cc_options.ext_data_path.empty()) { - std::cout << " ext_data_path = " << cc_options.ext_data_path << std::endl; - } - - if(cc_options.eom_nroots > 0) { - std::cout << " eom_nroots = " << cc_options.eom_nroots << std::endl; - std::cout << " eom_microiter = " << cc_options.eom_microiter << std::endl; - std::cout << " eom_threshold = " << cc_options.eom_threshold << std::endl; - } - - if(cc_options.gf_p_oi_range > 0) { - std::cout << " gf_p_oi_range = " << cc_options.gf_p_oi_range << std::endl; - txt_utils::print_bool(" gf_ip ", cc_options.gf_ip); - txt_utils::print_bool(" gf_ea ", cc_options.gf_ea); - txt_utils::print_bool(" gf_os ", cc_options.gf_os); - txt_utils::print_bool(" gf_cs ", cc_options.gf_cs); - txt_utils::print_bool(" gf_restart ", cc_options.gf_restart); - txt_utils::print_bool(" gf_profile ", cc_options.gf_profile); - txt_utils::print_bool(" gf_itriples ", cc_options.gf_itriples); - std::cout << " gf_ndiis = " << cc_options.gf_ndiis << std::endl; - std::cout << " gf_ngmres = " << cc_options.gf_ngmres << std::endl; - std::cout << " gf_maxiter = " << cc_options.gf_maxiter << std::endl; - std::cout << " gf_eta = " << cc_options.gf_eta << std::endl; - std::cout << " gf_lshift = " << cc_options.gf_lshift << std::endl; - std::cout << " gf_preconditioning = " << cc_options.gf_preconditioning << std::endl; - std::cout << " gf_damping_factor = " << cc_options.gf_damping_factor << std::endl; - - // std::cout << " gf_omega = " << gf_omega < 0) { - std::cout << " gf_analyze_level = " << cc_options.gf_analyze_level << std::endl; - std::cout << " gf_analyze_num_omega = " << cc_options.gf_analyze_num_omega << std::endl; - std::cout << " gf_analyze_omega = ["; - for(auto x: cc_options.gf_analyze_omega) std::cout << x << ","; - std::cout << "]" << std::endl; - } - if(cc_options.gf_extrapolate_level > 0) - std::cout << " gf_extrapolate_level = " << cc_options.gf_extrapolate_level << std::endl; - } - - txt_utils::print_bool(" debug ", cc_options.debug); - std::cout << "}" << std::endl; -} \ No newline at end of file diff --git a/exachem/common/options/parse_cd_options.cpp b/exachem/common/options/parse_cd_options.cpp index de0ae89..5c272bd 100644 --- a/exachem/common/options/parse_cd_options.cpp +++ b/exachem/common/options/parse_cd_options.cpp @@ -11,8 +11,8 @@ ParseCDOptions::ParseCDOptions(ChemEnv& chem_env) { } void ParseCDOptions::parse_check(json& jinput) { - const std::vector valid_cd{"comments", "debug", "itilesize", "diagtol", - "write_cv", "write_vcount", "max_cvecs", "ext_data_path"}; + const std::vector valid_cd{"comments", "debug", "itilesize", "diagtol", + "write_cv", "skip_cd", "max_cvecs", "ext_data_path"}; for(auto& el: jinput["CD"].items()) { if(std::find(valid_cd.begin(), valid_cd.end(), el.key()) == valid_cd.end()) tamm_terminate("INPUT FILE ERROR: Invalid CD option [" + el.key() + "] in the input file"); @@ -24,23 +24,8 @@ void ParseCDOptions::parse(ChemEnv& chem_env) { parse_option(chem_env.ioptions.cd_options.debug, jcd, "debug"); parse_option(chem_env.ioptions.cd_options.itilesize, jcd, "itilesize"); parse_option(chem_env.ioptions.cd_options.diagtol, jcd, "diagtol"); - parse_option(chem_env.ioptions.cd_options.write_cv, jcd, "write_cv"); - parse_option(chem_env.ioptions.cd_options.write_vcount, jcd, "write_vcount"); + parse_option>(chem_env.ioptions.cd_options.skip_cd, jcd, "skip_cd"); + parse_option>(chem_env.ioptions.cd_options.write_cv, jcd, "write_cv"); parse_option(chem_env.ioptions.cd_options.max_cvecs_factor, jcd, "max_cvecs"); parse_option(chem_env.ioptions.cd_options.ext_data_path, jcd, "ext_data_path"); } - -void ParseCDOptions::print(ChemEnv& chem_env) { - std::cout << std::defaultfloat; - std::cout << std::endl << "CD Options" << std::endl; - std::cout << "{" << std::endl; - std::cout << std::boolalpha << " debug = " << chem_env.ioptions.cd_options.debug - << std::endl; - std::cout << std::boolalpha << " write_cv = " << chem_env.ioptions.cd_options.write_cv - << std::endl; - std::cout << " diagtol = " << chem_env.ioptions.cd_options.diagtol << std::endl; - std::cout << " write_vcount = " << chem_env.ioptions.cd_options.write_vcount << std::endl; - std::cout << " itilesize = " << chem_env.ioptions.cd_options.itilesize << std::endl; - std::cout << " max_cvecs_factor = " << chem_env.ioptions.cd_options.max_cvecs_factor << std::endl; - std::cout << "}" << std::endl; -} \ No newline at end of file diff --git a/exachem/common/options/parse_common_options.cpp b/exachem/common/options/parse_common_options.cpp index d2530a9..29c09ee 100644 --- a/exachem/common/options/parse_common_options.cpp +++ b/exachem/common/options/parse_common_options.cpp @@ -1,10 +1,10 @@ #include "parse_common_options.hpp" -void ParseCOptions::operator()(ChemEnv& chem_env) { parse(chem_env); } +void ParseCommonOptions::operator()(ChemEnv& chem_env) { parse(chem_env); } -ParseCOptions::ParseCOptions(ChemEnv& chem_env) { parse(chem_env); } +ParseCommonOptions::ParseCommonOptions(ChemEnv& chem_env) { parse(chem_env); } -void ParseCOptions::parse(ChemEnv& chem_env) { +void ParseCommonOptions::parse(ChemEnv& chem_env) { json jinput = chem_env.jinput; CommonOptions& common_options = chem_env.ioptions.common_options; @@ -37,24 +37,3 @@ void ParseCOptions::parse(ChemEnv& chem_env) { parse_option(common_options.debug, jinput["common"], "debug"); parse_option(common_options.file_prefix, jinput["common"], "file_prefix"); } - -void ParseCOptions::print(ChemEnv& chem_env) { - std::cout << std::defaultfloat; - std::cout << std::endl << "Common Options" << std::endl; - std::cout << "{" << std::endl; - - CommonOptions& common_options = chem_env.ioptions.common_options; - std::cout << " maxiter = " << common_options.maxiter << std::endl; - std::cout << " basis = " << common_options.basis << " "; - std::cout << common_options.gaussian_type; - std::cout << std::endl; - if(!common_options.dfbasis.empty()) - std::cout << " dfbasis = " << common_options.dfbasis << std::endl; - if(!common_options.basisfile.empty()) - std::cout << " basisfile = " << common_options.basisfile << std::endl; - std::cout << " geom_units = " << common_options.geom_units << std::endl; - txt_utils::print_bool(" debug ", common_options.debug); - if(!common_options.file_prefix.empty()) - std::cout << " file_prefix = " << common_options.file_prefix << std::endl; - std::cout << "}" << std::endl; -} \ No newline at end of file diff --git a/exachem/common/options/parse_common_options.hpp b/exachem/common/options/parse_common_options.hpp index 42fd762..dbd7562 100644 --- a/exachem/common/options/parse_common_options.hpp +++ b/exachem/common/options/parse_common_options.hpp @@ -1,13 +1,13 @@ #include "common/chemenv.hpp" #include "common/options/parser_utils.hpp" -class ParseCOptions: public ParserUtils { +class ParseCommonOptions: public ParserUtils { private: void parse(ChemEnv& chem_env); public: - ParseCOptions() = default; - ParseCOptions(ChemEnv& chem_env); + ParseCommonOptions() = default; + ParseCommonOptions(ChemEnv& chem_env); void operator()(ChemEnv& chem_env); void print(ChemEnv& chem_env); }; diff --git a/exachem/common/options/parse_gw_options.cpp b/exachem/common/options/parse_gw_options.cpp index 623e25d..d23911a 100644 --- a/exachem/common/options/parse_gw_options.cpp +++ b/exachem/common/options/parse_gw_options.cpp @@ -44,27 +44,3 @@ void ParseGWOptions::update_common_options(ChemEnv& chem_env) { gw_options.file_prefix = common_options.file_prefix; gw_options.ext_data_path = common_options.ext_data_path; } - -void ParseGWOptions::print(ChemEnv& chem_env) { - std::cout << std::defaultfloat; - std::cout << std::endl << "GW Options" << std::endl; - GWOptions& gw_options = chem_env.ioptions.gw_options; - - std::cout << "{" << std::endl; - std::cout << " ngl = " << gw_options.ngl << std::endl; - std::cout << " noqpa = " << gw_options.noqpa << std::endl; - std::cout << " noqpb = " << gw_options.noqpb << std::endl; - std::cout << " nvqpa = " << gw_options.nvqpa << std::endl; - std::cout << " nvqp/b = " << gw_options.nvqpb << std::endl; - std::cout << " ieta = " << gw_options.ieta << std::endl; - std::cout << " maxnewton = " << gw_options.maxnewton << std::endl; - std::cout << " maxev = " << gw_options.maxev << std::endl; - std::cout << " method = " << gw_options.method << std::endl; - std::cout << " cdbasis = " << gw_options.cdbasis << std::endl; - txt_utils::print_bool(" evgw ", gw_options.evgw); - txt_utils::print_bool(" evgw0 ", gw_options.evgw0); - txt_utils::print_bool(" core ", gw_options.core); - txt_utils::print_bool(" minres ", gw_options.minres); - txt_utils::print_bool(" debug ", gw_options.debug); - std::cout << "}" << std::endl; -} \ No newline at end of file diff --git a/exachem/common/options/parse_options.cpp b/exachem/common/options/parse_options.cpp index 3257dd9..298389f 100644 --- a/exachem/common/options/parse_options.cpp +++ b/exachem/common/options/parse_options.cpp @@ -85,12 +85,12 @@ void ECOptionParser::initialize(ChemEnv& chem_env) { } void ECOptionParser::parse_all_options(ChemEnv& chem_env) { - ParseCOptions parse_common_options(chem_env); - ParseSCFOptions parse_scf_options(chem_env); - ParseCDOptions parse_cd_options(chem_env); - ParseGWOptions parse_gw_options(chem_env); - ParseCCSDOptions parse_ccsd_options(chem_env); - ParseFCIOptions parse_fci_options(chem_env); - ParseTaskOptions parse_task_options(chem_env); - IniSystemData ini_sys_data(chem_env); -} \ No newline at end of file + ParseCommonOptions parse_common_options(chem_env); + ParseSCFOptions parse_scf_options(chem_env); + ParseCDOptions parse_cd_options(chem_env); + ParseGWOptions parse_gw_options(chem_env); + ParseCCSDOptions parse_ccsd_options(chem_env); + ParseFCIOptions parse_fci_options(chem_env); + ParseTaskOptions parse_task_options(chem_env); + IniSystemData ini_sys_data(chem_env); +} diff --git a/exachem/common/options/parse_scf_options.cpp b/exachem/common/options/parse_scf_options.cpp index 2bb214b..9468acb 100644 --- a/exachem/common/options/parse_scf_options.cpp +++ b/exachem/common/options/parse_scf_options.cpp @@ -15,7 +15,7 @@ void ParseSCFOptions::parse_check(json& jinput) { const std::vector valid_scf{"charge", "multiplicity", "lshift", "tol_int", "tol_sch", "tol_lindep", "conve", "convd", "diis_hist","force_tilesize","tilesize","df_tilesize", "damp","writem","nnodes","restart","noscf","moldenfile", "guess", - "debug","scf_type","xc_type", "xc_grid_type", "n_lindep","restart_size","scalapack_nb","riscf", + "debug","scf_type","xc_type", "xc_grid_type", "n_lindep","restart_size","scalapack_nb", "scalapack_np_row","scalapack_np_col","ext_data_path","PRINT", "qed_omegas","qed_lambdas","qed_volumes","qed_polvecs","direct_df","comments"}; // clang-format on @@ -71,6 +71,12 @@ void ParseSCFOptions::parse(ChemEnv& chem_env) { scf_options.guess_atom_options[element_symbol] = atom_opt; } + json jscf_analysis = jscf["PRINT"]; + parse_option(scf_options.mos_txt, jscf_analysis, "mos_txt"); + parse_option(scf_options.mulliken_analysis, jscf_analysis, "mulliken"); + parse_option>(scf_options.mo_vectors_analysis, jscf_analysis, + "mo_vectors"); + if(scf_options.nnodes < 1 || scf_options.nnodes > 100) { tamm_terminate("INPUT FILE ERROR: SCF option nnodes should be a number between 1 and 100"); } @@ -101,93 +107,3 @@ void ParseSCFOptions::update_common_options(ChemEnv& chem_env) { scf_options.file_prefix = common_options.file_prefix; scf_options.ext_data_path = common_options.ext_data_path; } - -void ParseSCFOptions::print(ChemEnv& chem_env) { - std::cout << std::defaultfloat; - std::cout << std::endl << "SCF Options" << std::endl; - std::cout << "{" << std::endl; - - SCFOptions& scf_options = chem_env.ioptions.scf_options; - std::cout << " charge = " << scf_options.charge << std::endl; - std::cout << " multiplicity = " << scf_options.multiplicity << std::endl; - std::cout << " level shift = " << scf_options.lshift << std::endl; - std::cout << " tol_int = " << scf_options.tol_int << std::endl; - std::cout << " tol_sch = " << scf_options.tol_sch << std::endl; - std::cout << " tol_lindep = " << scf_options.tol_lindep << std::endl; - std::cout << " conve = " << scf_options.conve << std::endl; - std::cout << " convd = " << scf_options.convd << std::endl; - std::cout << " diis_hist = " << scf_options.diis_hist << std::endl; - std::cout << " AO_tilesize = " << scf_options.AO_tilesize << std::endl; - std::cout << " writem = " << scf_options.writem << std::endl; - std::cout << " damp = " << scf_options.damp << std::endl; - if(!scf_options.moldenfile.empty()) { - std::cout << " moldenfile = " << scf_options.moldenfile << std::endl; - // std::cout << " n_lindep = " << n_lindep << std::endl; - } - - std::cout << " scf_type = " << scf_options.scf_type << std::endl; - - // QED - if(!scf_options.qed_omegas.empty()) { - std::cout << " qed_omegas = ["; - for(auto x: scf_options.qed_omegas) { std::cout << x << ","; } - std::cout << "\b]" << std::endl; - } - - if(!scf_options.qed_lambdas.empty()) { - std::cout << " qed_lambdas = ["; - for(auto x: scf_options.qed_lambdas) { std::cout << x << ","; } - std::cout << "\b]" << std::endl; - } - - if(!scf_options.qed_volumes.empty()) { - std::cout << " qed_volumes = ["; - for(auto x: scf_options.qed_volumes) { std::cout << x << ","; } - std::cout << "\b]" << std::endl; - } - - if(!scf_options.qed_polvecs.empty()) { - std::cout << " qed_polvecs = ["; - for(auto x: scf_options.qed_polvecs) { - std::cout << "["; - for(auto y: x) { std::cout << y << ","; } - std::cout << "\b],"; - } - std::cout << "\b]" << std::endl; - } - - if(!scf_options.xc_type.empty()) { - std::cout << " xc_type = [ "; - for(auto xcfunc: scf_options.xc_type) { std::cout << " \"" << xcfunc << "\","; } - std::cout << "\b ]" << std::endl; - std::cout << " xc_grid_type = " << scf_options.xc_grid_type << std::endl; - } - - if(scf_options.scalapack_np_row > 0 && scf_options.scalapack_np_col > 0) { - std::cout << " scalapack_np_row = " << scf_options.scalapack_np_row << std::endl; - std::cout << " scalapack_np_col = " << scf_options.scalapack_np_col << std::endl; - if(scf_options.scalapack_nb > 1) - std::cout << " scalapack_nb = " << scf_options.scalapack_nb << std::endl; - } - std::cout << " restart_size = " << scf_options.restart_size << std::endl; - txt_utils::print_bool(" restart ", scf_options.restart); - txt_utils::print_bool(" debug ", scf_options.debug); - if(scf_options.restart) txt_utils::print_bool(" noscf ", scf_options.noscf); - // txt_utils::print_bool(" sad ", scf_options.sad); - if(scf_options.mulliken_analysis || scf_options.mos_txt || - scf_options.mo_vectors_analysis.first) { - std::cout << " PRINT {" << std::endl; - if(scf_options.mos_txt) - std::cout << std::boolalpha << " mos_txt = " << scf_options.mos_txt << std::endl; - if(scf_options.mulliken_analysis) - std::cout << std::boolalpha << " mulliken_analysis = " << scf_options.mulliken_analysis - << std::endl; - if(scf_options.mo_vectors_analysis.first) { - std::cout << " mo_vectors_analysis = [" << std::boolalpha - << scf_options.mo_vectors_analysis.first; - std::cout << "," << scf_options.mo_vectors_analysis.second << "]" << std::endl; - } - std::cout << " }" << std::endl; - } - std::cout << "}" << std::endl; -} diff --git a/exachem/common/options/parse_task_options.cpp b/exachem/common/options/parse_task_options.cpp index c4663a9..1498c94 100644 --- a/exachem/common/options/parse_task_options.cpp +++ b/exachem/common/options/parse_task_options.cpp @@ -60,31 +60,3 @@ void ParseTaskOptions::update_common_options(ChemEnv& chem_env) { task_options.file_prefix = common_options.file_prefix; task_options.ext_data_path = common_options.ext_data_path; } - -void ParseTaskOptions::print(ChemEnv& chem_env) { - std::cout << std::endl << "Task Options" << std::endl; - std::cout << "{" << std::endl; - - TaskOptions& task_options = chem_env.ioptions.task_options; - txt_utils::print_bool(" sinfo ", task_options.sinfo); - txt_utils::print_bool(" scf ", task_options.scf); - txt_utils::print_bool(" mp2 ", task_options.mp2); - txt_utils::print_bool(" gw ", task_options.gw); - txt_utils::print_bool(" cc2 ", task_options.cc2); - txt_utils::print_bool(" fci ", task_options.fci); - txt_utils::print_bool(" fcidump ", task_options.fcidump); - txt_utils::print_bool(" cd_2e ", task_options.cd_2e); - txt_utils::print_bool(" ducc ", task_options.ducc); - txt_utils::print_bool(" ccsd ", task_options.ccsd); - txt_utils::print_bool(" ccsd_sf ", task_options.ccsd_sf); - txt_utils::print_bool(" ccsd_lambda ", task_options.ccsd_lambda); - txt_utils::print_bool(" eom_ccsd ", task_options.eom_ccsd); - txt_utils::print_bool(" rteom_cc2 ", task_options.rteom_cc2); - txt_utils::print_bool(" rteom_ccsd ", task_options.rteom_ccsd); - txt_utils::print_bool(" gfccsd ", task_options.gfccsd); - std::cout << " dlpno_ccsd: " << task_options.dlpno_ccsd.first << ", " - << task_options.dlpno_ccsd.second << "\n"; - std::cout << " dlpno_ccsd_t " << task_options.dlpno_ccsd_t.first << ", " - << task_options.dlpno_ccsd_t.second << "\n"; - std::cout << "}" << std::endl; -} \ No newline at end of file diff --git a/exachem/scf/scf_main.hpp b/exachem/scf/scf_main.hpp index 0f85441..e80de14 100644 --- a/exachem/scf/scf_main.hpp +++ b/exachem/scf/scf_main.hpp @@ -34,7 +34,6 @@ #include #include "common/chemenv.hpp" -#include "scf/scf_main.hpp" #include "scf/scf_taskmap.hpp" using libint2::BasisSet; diff --git a/inputs/example.json b/inputs/example.json index ac326e4..eecfd7f 100644 --- a/inputs/example.json +++ b/inputs/example.json @@ -48,7 +48,6 @@ "damp": 100, "nnodes": 1, "writem": 10, - "riscf": "JK", "restart": false, "noscf": false, "scf_type": "restricted", @@ -83,8 +82,8 @@ "debug": false, "diagtol": 1e-5, "itilesize": 1000, - "write_cv": false, - "write_vcount": 5000 + "skip_cd": [false,100], + "write_cv": [false,5000] }, "GW": {