diff --git a/include/gauxc/basisset.hpp b/include/gauxc/basisset.hpp index 55a7d1bf..9cef7ee7 100644 --- a/include/gauxc/basisset.hpp +++ b/include/gauxc/basisset.hpp @@ -23,17 +23,26 @@ namespace GauXC { */ template struct BasisSet : public std::vector> { - +private: + /// Tests if the base class can be constructed from @p Args + template + static constexpr auto can_construct_base_v = + std::is_constructible_v>, Args...>; + +public: /** * @brief Construct a BasisSet object - * + * * Delegates to std::vector>::vector * - * @tparam Args Parameter pack for arguements that are passed to + * @tparam Args Parameter pack for arguments that are passed to * base constructor + * @tparam Used to disable this method via SFINAE if the base + * class can not be constructed from @p Args */ - template - BasisSet( Args&&... args ) : + template >> + explicit BasisSet( Args&&... args ) : std::vector>( std::forward(args)... ) { } /// Copy a BasisSet object diff --git a/include/gauxc/shell.hpp b/include/gauxc/shell.hpp index c0e84562..f75a4949 100644 --- a/include/gauxc/shell.hpp +++ b/include/gauxc/shell.hpp @@ -131,8 +131,8 @@ class alignas(256) Shell { Shell( PrimSize nprim, AngularMomentum l, SphericalType pure, prim_array alpha, prim_array coeff, cart_array O, bool _normalize = true ) : - nprim_( nprim.get() ), l_( l.get() ), pure_( pure.get() ), - alpha_( alpha ), coeff_( coeff ), O_( O ) { + alpha_( alpha ), coeff_( coeff ), O_( O ), + nprim_( nprim.get() ), l_( l.get() ), pure_( pure.get() ) { if( _normalize ) normalize(); compute_shell_cutoff(); diff --git a/include/gauxc/util/real_solid_harmonics.hpp b/include/gauxc/util/real_solid_harmonics.hpp index f381934b..9501e557 100644 --- a/include/gauxc/util/real_solid_harmonics.hpp +++ b/include/gauxc/util/real_solid_harmonics.hpp @@ -108,13 +108,11 @@ inline constexpr double real_solid_harmonic_coeff( int l, int m, int lx, int ly, class SphericalHarmonicTransform { - int max_l_; std::vector< std::vector > table_; public: - inline SphericalHarmonicTransform( int max_l ) : - max_l_(max_l) { + inline SphericalHarmonicTransform( int max_l ) { table_.resize(max_l+1); for( auto l = 0; l <= max_l; ++ l ) { diff --git a/src/external/hdf5_read.cxx b/src/external/hdf5_read.cxx index 5ae22391..cae9c865 100644 --- a/src/external/hdf5_read.cxx +++ b/src/external/hdf5_read.cxx @@ -83,7 +83,7 @@ void read_hdf5_record( std::vector& mol, std::string fname, std::string ds } -void read_hdf5_record( int32_t M, int32_t N, double* A, int32_t LDA, +void read_hdf5_record( int32_t /*M*/, int32_t /*N*/, double* /*A*/, int32_t /*LDA*/, std::string fname, std::string dset ) { diff --git a/src/load_balancer/rebalance.cxx b/src/load_balancer/rebalance.cxx index c66086dd..91898b24 100644 --- a/src/load_balancer/rebalance.cxx +++ b/src/load_balancer/rebalance.cxx @@ -58,7 +58,7 @@ auto rebalance(TaskIterator begin, TaskIterator end, const CostFunctor& cost, MP std::vector task_outgoing; auto it = local_prefix_sum.begin(); for( int i = 0; i < world_size; ++i) { - auto n_it = std::lower_bound(it, local_prefix_sum.end(), i, + auto n_it = std::lower_bound(it, local_prefix_sum.end(), (size_t)i, [=](auto a, auto b) { return a / task_avg < b+1; }); size_t st_idx = std::distance(local_prefix_sum.begin(), it ); size_t en_idx = std::distance(local_prefix_sum.begin(), n_it); @@ -255,8 +255,8 @@ auto rebalance(TaskIterator begin, TaskIterator end, const CostFunctor& cost, MP auto lps_begin = local_prefix_sum.begin(); auto lps_end = local_prefix_sum.end(); auto local_begin = - world_rank ? std::lower_bound(lps_begin,lps_end,world_rank-1,func) : lps_begin; - auto local_end = std::lower_bound(local_begin, lps_end, world_rank,func); + world_rank ? std::lower_bound(lps_begin,lps_end,(size_t)(world_rank-1),func) : lps_begin; + auto local_end = std::lower_bound(local_begin, lps_end, (size_t)world_rank,func); size_t st_idx = std::distance(lps_begin, local_begin); size_t en_idx = std::distance(lps_begin, local_end ); @@ -371,7 +371,6 @@ void LoadBalancerImpl::rebalance_weights() { void LoadBalancerImpl::rebalance_exc_vxc() { #ifdef GAUXC_HAS_MPI auto& tasks = get_tasks(); - const size_t natoms = molecule().natoms(); auto cost = [=](const auto& task){ return task.cost_exc_vxc(1); }; auto new_tasks = rebalance( tasks.begin(), tasks.end(), cost, runtime_.comm()); tasks = std::move(new_tasks); diff --git a/src/xc_integrator/local_work_driver/host/obara_saika/src/config_obara_saika.hpp b/src/xc_integrator/local_work_driver/host/obara_saika/src/config_obara_saika.hpp index 5959ee74..42be0db0 100644 --- a/src/xc_integrator/local_work_driver/host/obara_saika/src/config_obara_saika.hpp +++ b/src/xc_integrator/local_work_driver/host/obara_saika/src/config_obara_saika.hpp @@ -252,11 +252,6 @@ namespace XCPU { // Scalar SIMD Emulation #else -#ifdef __GNUC__ - #warning "Warning: ISA Not Specified: Using Scalar Code" -#else - #pragma message "Warning: ISA Not Specified: Using Scalar Code" -#endif #define SIMD_TYPE double #define SIMD_LENGTH 1 diff --git a/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4.cxx b/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4.cxx index c34fe185..714ef6d1 100644 --- a/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4.cxx +++ b/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4.cxx @@ -17,7 +17,7 @@ namespace XCPU { void integral_4(size_t npts, double *_points, point rA, - point rB, + point /*rB*/, int nprim_pairs, prim_pair *prim_pairs, double *Xi, diff --git a/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4_0.cxx b/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4_0.cxx index 94243802..6c6a4ebc 100644 --- a/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4_0.cxx +++ b/src/xc_integrator/local_work_driver/host/obara_saika/src/integral_4_0.cxx @@ -16,7 +16,7 @@ namespace XCPU { void integral_4_0(size_t npts, double *_points, - point rA, + point /*rA*/, point /*rB*/, int nprim_pairs, prim_pair *prim_pairs, diff --git a/src/xc_integrator/local_work_driver/host/reference_local_host_work_driver.cxx b/src/xc_integrator/local_work_driver/host/reference_local_host_work_driver.cxx index faf7b9fe..c83d3800 100644 --- a/src/xc_integrator/local_work_driver/host/reference_local_host_work_driver.cxx +++ b/src/xc_integrator/local_work_driver/host/reference_local_host_work_driver.cxx @@ -1166,7 +1166,6 @@ void ReferenceLocalHostWorkDriver::eval_zmat_gga_vxc_gks( size_t npts, size_t nb cou_offsets_map[shell_list[i]] = cou_cart_sizes[i]; } - size_t ndo = 0; { #if 0 //size_t ioff_cart = 0; @@ -1186,7 +1185,6 @@ void ReferenceLocalHostWorkDriver::eval_zmat_gga_vxc_gks( size_t npts, size_t nb const size_t joff_cart = cou_cart_sizes[j] * npts; XCPU::point ket_origin{ket.O()[0],ket.O()[1],ket.O()[2]}; if(!need_sp(ish,jsh)) continue; - ++ndo; auto sh_pair = shpairs.at(ish,jsh); auto prim_pair_data = sh_pair.prim_pairs(); @@ -1225,7 +1223,6 @@ void ReferenceLocalHostWorkDriver::eval_zmat_gga_vxc_gks( size_t npts, size_t nb auto prim_pair_data = sh_pair.prim_pairs(); auto nprim_pair = sh_pair.nprim_pairs(); - ndo++; XCPU::compute_integral_shell_pair( ish == jsh, npts, _points_transposed.data(), bra.l(), ket.l(), bra_origin, ket_origin, @@ -1236,7 +1233,6 @@ void ReferenceLocalHostWorkDriver::eval_zmat_gga_vxc_gks( size_t npts, size_t nb } #endif } - //std::cout << "NDO " << ndo << " " << ndo / double(nshells*(nshells+1)/2) << std::endl; for( auto i = 0ul; i < nbe_cart; ++i ) for( auto j = 0ul; j < npts; ++j ) { diff --git a/src/xc_integrator/replicated/host/replicated_xc_host_integrator.cxx b/src/xc_integrator/replicated/host/replicated_xc_host_integrator.cxx index 13953dd4..4fd53aef 100644 --- a/src/xc_integrator/replicated/host/replicated_xc_host_integrator.cxx +++ b/src/xc_integrator/replicated/host/replicated_xc_host_integrator.cxx @@ -56,7 +56,7 @@ typename ReplicatedXCHostIntegratorFactory::ptr_return_t } -template class ReplicatedXCHostIntegratorFactory; +template struct ReplicatedXCHostIntegratorFactory; } // namespace GauXC::detail diff --git a/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc.hpp b/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc.hpp index baadc265..4635336a 100644 --- a/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc.hpp +++ b/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc.hpp @@ -34,7 +34,7 @@ void ShellBatchedReplicatedXCIntegratorload_balancer_->basis(); diff --git a/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc_vxc.hpp b/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc_vxc.hpp index 4b56692b..5a65be8e 100644 --- a/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc_vxc.hpp +++ b/src/xc_integrator/shell_batched/shell_batched_replicated_xc_integrator_exc_vxc.hpp @@ -38,7 +38,7 @@ void ShellBatchedReplicatedXCIntegratorload_balancer_->basis(); diff --git a/tests/basisset_test.cxx b/tests/basisset_test.cxx index d8aec9d0..5e556d10 100644 --- a/tests/basisset_test.cxx +++ b/tests/basisset_test.cxx @@ -194,6 +194,23 @@ TEST_CASE("BasisSet", "[basisset]") { Molecule mol = make_water(); BasisSet basis = make_631Gd(mol, SphericalType(test_spherical)); + SECTION("Copy Ctor"){ + + BasisSet basis_copy(basis); + CHECK( basis_copy.nshells() == 10 ); + CHECK( basis_copy.nbf() == (test_spherical ? 18 : 19) ); + + } + + SECTION("Move Ctor"){ + + BasisSet basis_copy(basis); + BasisSet basis_move(std::move(basis_copy)); + CHECK( basis_move.nshells() == 10 ); + CHECK( basis_move.nbf() == (test_spherical ? 18 : 19) ); + + } + CHECK( basis.nshells() == 10 ); CHECK( basis.nbf() == (test_spherical ? 18 : 19) ); BasisSetMap basis_map( basis, mol );