diff --git a/src/xc_integrator/local_work_driver/device/local_device_work_driver.cxx b/src/xc_integrator/local_work_driver/device/local_device_work_driver.cxx index 919f2c60..de42fefb 100644 --- a/src/xc_integrator/local_work_driver/device/local_device_work_driver.cxx +++ b/src/xc_integrator/local_work_driver/device/local_device_work_driver.cxx @@ -44,12 +44,18 @@ FWD_TO_PIMPL(eval_uvvar_gga_rks) // U/VVar GGA (density + grad, gamma FWD_TO_PIMPL(eval_uvvar_lda_uks) // U/VVar LDA (density) FWD_TO_PIMPL(eval_uvvar_gga_uks) // U/VVar GGA (density + grad, gamma) +FWD_TO_PIMPL(eval_uvvar_lda_gks) // U/VVar LDA (density) +FWD_TO_PIMPL(eval_uvvar_gga_gks) // U/VVar GGA (density + grad, gamma) + FWD_TO_PIMPL(eval_zmat_lda_vxc_rks) // Eval Z Matrix LDA VXC FWD_TO_PIMPL(eval_zmat_gga_vxc_rks) // Eval Z Matrix GGA VXC FWD_TO_PIMPL(eval_zmat_lda_vxc_uks) // Eval Z Matrix LDA VXC FWD_TO_PIMPL(eval_zmat_gga_vxc_uks) // Eval Z Matrix GGA VXC +FWD_TO_PIMPL(eval_zmat_lda_vxc_gks) // Eval Z Matrix LDA VXC +FWD_TO_PIMPL(eval_zmat_gga_vxc_gks) // Eval Z Matrix GGA VXC + FWD_TO_PIMPL(eval_exx_fmat) // Eval EXX F Matrix //FWD_TO_PIMPL(eval_exx_gmat) // Eval EXX G Matrix diff --git a/src/xc_integrator/local_work_driver/device/local_device_work_driver.hpp b/src/xc_integrator/local_work_driver/device/local_device_work_driver.hpp index ad7f230c..37be7d33 100644 --- a/src/xc_integrator/local_work_driver/device/local_device_work_driver.hpp +++ b/src/xc_integrator/local_work_driver/device/local_device_work_driver.hpp @@ -69,6 +69,9 @@ class LocalDeviceWorkDriver : public LocalWorkDriver { void eval_uvvar_lda_uks( XCDeviceData* ); void eval_uvvar_gga_uks( XCDeviceData* ); + void eval_uvvar_lda_gks( XCDeviceData* ); + void eval_uvvar_gga_gks( XCDeviceData* ); + void eval_kern_exc_vxc_lda( const functional_type&, XCDeviceData* ); void eval_kern_exc_vxc_gga( const functional_type&, XCDeviceData* ); @@ -78,6 +81,9 @@ class LocalDeviceWorkDriver : public LocalWorkDriver { void eval_zmat_lda_vxc_uks( XCDeviceData* ); void eval_zmat_gga_vxc_uks( XCDeviceData* ); + void eval_zmat_lda_vxc_gks( XCDeviceData* ); + void eval_zmat_gga_vxc_gks( XCDeviceData* ); + void eval_exx_fmat( XCDeviceData* ); void eval_exx_gmat( XCDeviceData*, const BasisSetMap& ); diff --git a/src/xc_integrator/local_work_driver/device/local_device_work_driver_pimpl.hpp b/src/xc_integrator/local_work_driver/device/local_device_work_driver_pimpl.hpp index 6d416777..0c0f1817 100644 --- a/src/xc_integrator/local_work_driver/device/local_device_work_driver_pimpl.hpp +++ b/src/xc_integrator/local_work_driver/device/local_device_work_driver_pimpl.hpp @@ -41,12 +41,16 @@ struct LocalDeviceWorkDriverPIMPL { virtual void eval_uvvar_gga_rks( XCDeviceData* ) = 0; virtual void eval_uvvar_lda_uks( XCDeviceData* ) = 0; virtual void eval_uvvar_gga_uks( XCDeviceData* ) = 0; + virtual void eval_uvvar_lda_gks( XCDeviceData* ) = 0; + virtual void eval_uvvar_gga_gks( XCDeviceData* ) = 0; virtual void eval_kern_exc_vxc_lda( const functional_type&, XCDeviceData* ) = 0; virtual void eval_kern_exc_vxc_gga( const functional_type&, XCDeviceData* ) = 0; virtual void eval_zmat_lda_vxc_rks( XCDeviceData* ) = 0; virtual void eval_zmat_gga_vxc_rks( XCDeviceData* ) = 0; virtual void eval_zmat_lda_vxc_uks( XCDeviceData* ) = 0; virtual void eval_zmat_gga_vxc_uks( XCDeviceData* ) = 0; + virtual void eval_zmat_lda_vxc_gks( XCDeviceData* ) = 0; + virtual void eval_zmat_gga_vxc_gks( XCDeviceData* ) = 0; virtual void inc_exc( XCDeviceData* ) = 0; virtual void inc_nel( XCDeviceData* ) = 0; virtual void inc_vxc( XCDeviceData* ) = 0; diff --git a/src/xc_integrator/local_work_driver/device/scheme1_base.cxx b/src/xc_integrator/local_work_driver/device/scheme1_base.cxx index 5b0380e0..ecc7b33d 100644 --- a/src/xc_integrator/local_work_driver/device/scheme1_base.cxx +++ b/src/xc_integrator/local_work_driver/device/scheme1_base.cxx @@ -288,6 +288,18 @@ void AoSScheme1Base::eval_zmat_gga_vxc_uks( XCDeviceData* ){ } +void AoSScheme1Base::eval_zmat_lda_vxc_gks( XCDeviceData* ){ + + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); + +} + +void AoSScheme1Base::eval_zmat_gga_vxc_gks( XCDeviceData* ){ + + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); + +} + void AoSScheme1Base::eval_collocation( XCDeviceData* _data ) { auto* data = dynamic_cast(_data); @@ -489,6 +501,18 @@ void AoSScheme1Base::eval_uvvar_gga_uks( XCDeviceData* ){ } +void AoSScheme1Base::eval_uvvar_lda_gks( XCDeviceData* ){ + + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); + +} + +void AoSScheme1Base::eval_uvvar_gga_gks( XCDeviceData* ){ + + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); + +} + void AoSScheme1Base::eval_kern_exc_vxc_lda( const functional_type& func, XCDeviceData* _data ) { diff --git a/src/xc_integrator/local_work_driver/device/scheme1_base.hpp b/src/xc_integrator/local_work_driver/device/scheme1_base.hpp index fe49c8c9..1596818c 100644 --- a/src/xc_integrator/local_work_driver/device/scheme1_base.hpp +++ b/src/xc_integrator/local_work_driver/device/scheme1_base.hpp @@ -27,6 +27,11 @@ struct AoSScheme1Base : public detail::LocalDeviceWorkDriverPIMPL { void eval_zmat_lda_vxc_uks( XCDeviceData* ) override final; void eval_zmat_gga_vxc_uks( XCDeviceData* ) override final; + void eval_uvvar_lda_gks( XCDeviceData* ) override final; + void eval_uvvar_gga_gks( XCDeviceData* ) override final; + void eval_zmat_lda_vxc_gks( XCDeviceData* ) override final; + void eval_zmat_gga_vxc_gks( XCDeviceData* ) override final; + void eval_kern_exc_vxc_lda( const functional_type&, XCDeviceData* ) override final; void eval_kern_exc_vxc_gga( const functional_type&, XCDeviceData* ) override final; void inc_exc( XCDeviceData* ) override final; diff --git a/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator.hpp b/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator.hpp index 6697c9f6..44bd4414 100644 --- a/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator.hpp +++ b/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator.hpp @@ -33,7 +33,7 @@ class IncoreReplicatedXCDeviceIntegrator : void eval_exc_vxc_( int64_t m, int64_t n, const value_type* P, int64_t ldp, value_type* VXC, int64_t ldvxc, - value_type* EXC ) override; + value_type* EXC, const IntegratorSettingsEXC& settings) override; void eval_exc_vxc_( int64_t m, int64_t n, const value_type* Ps, int64_t ldps, @@ -41,7 +41,21 @@ class IncoreReplicatedXCDeviceIntegrator : int64_t ldpz, value_type* VXCs, int64_t ldvxcs, value_type* VXCz, int64_t ldvxcz, - value_type* EXC ) override; + value_type* EXC, const IntegratorSettingsEXC& settings ) override; + + void eval_exc_vxc_( int64_t m, int64_t n, const value_type* Ps, + int64_t ldps, + const value_type* Pz, + int64_t ldpz, + const value_type* Py, + int64_t ldpy, + const value_type* Px, + int64_t ldpx, + value_type* VXCs, int64_t ldvxcs, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, + value_type* EXC, const IntegratorSettingsEXC& settings ) override; void eval_exc_grad_( int64_t m, int64_t n, const value_type* P, @@ -78,6 +92,24 @@ class IncoreReplicatedXCDeviceIntegrator : host_task_iterator task_begin, host_task_iterator task_end, XCDeviceData& device_data ); + void exc_vxc_local_work_( const basis_type& basis, const value_type* Ps, int64_t ldps, + const value_type* Pz, int64_t ldpz, + const value_type* Py, int64_t ldpy, + const value_type* Px, int64_t ldpx, + host_task_iterator task_begin, host_task_iterator task_end, + XCDeviceData& device_data ); + + void exc_vxc_local_work_( const basis_type& basis, const value_type* Ps, int64_t ldps, + const value_type* Pz, int64_t ldpz, + const value_type* Py, int64_t ldpy, + const value_type* Px, int64_t ldpx, + value_type* VXC, int64_t ldvxc, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, value_type* EXC, value_type *N_EL, + host_task_iterator task_begin, host_task_iterator task_end, + XCDeviceData& device_data ); + void eval_exc_grad_local_work_( const basis_type& basis, const value_type* P, int64_t ldp, host_task_iterator task_begin, host_task_iterator task_end, XCDeviceData& device_data ); diff --git a/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator_exc_vxc.hpp b/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator_exc_vxc.hpp index 947ef739..4ccac8be 100644 --- a/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator_exc_vxc.hpp +++ b/src/xc_integrator/replicated/device/incore_replicated_xc_device_integrator_exc_vxc.hpp @@ -19,7 +19,7 @@ template void IncoreReplicatedXCDeviceIntegrator:: eval_exc_vxc_( int64_t m, int64_t n, const value_type* P, int64_t ldp, value_type* VXC, int64_t ldvxc, - value_type* EXC ) { + value_type* EXC, const IntegratorSettingsEXC& settings ) { const auto& basis = this->load_balancer_->basis(); @@ -115,11 +115,31 @@ void IncoreReplicatedXCDeviceIntegrator:: int64_t ldpz, value_type* VXCs, int64_t ldvxcs, value_type* VXCz, int64_t ldvxcz, - value_type* EXC ) { - GauXC::util::unused(m,n,Ps,ldps,Pz,ldpz,VXCs,ldvxcs,VXCz,ldvxcz,EXC); + value_type* EXC, const IntegratorSettingsEXC& settings ) { + GauXC::util::unused(m,n,Ps,ldps,Pz,ldpz,VXCs,ldvxcs,VXCz,ldvxcz,EXC,settings); GAUXC_GENERIC_EXCEPTION("UKS NOT YET IMPLEMENTED FOR DEVICE"); } +template +void IncoreReplicatedXCDeviceIntegrator:: + eval_exc_vxc_( int64_t m, int64_t n, const value_type* Ps, + int64_t ldps, + const value_type* Pz, + int64_t ldpz, + const value_type* Py, + int64_t ldpy, + const value_type* Px, + int64_t ldpx, + value_type* VXCs, int64_t ldvxcs, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, + value_type* EXC, const IntegratorSettingsEXC& settings ) { + GauXC::util::unused(m,n,Ps,ldps,Pz,ldpz,Py,ldpy,Px,ldpx,VXCs,ldvxcs,VXCz,ldvxcz,VXCy,ldvxcy,VXCx,ldvxcx,EXC,settings); + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); +} + + template void IncoreReplicatedXCDeviceIntegrator:: exc_vxc_local_work_( const basis_type& basis, const value_type* P, int64_t ldp, @@ -284,6 +304,36 @@ void IncoreReplicatedXCDeviceIntegrator:: GAUXC_GENERIC_EXCEPTION("UKS NOT YET IMPLEMENTED FOR DEVICE"); } +template +void IncoreReplicatedXCDeviceIntegrator:: + exc_vxc_local_work_( const basis_type& basis, const value_type* Ps, int64_t ldps, + const value_type* Pz, int64_t ldpz, + const value_type* Py, int64_t ldpy, + const value_type* Px, int64_t ldpx, + host_task_iterator task_begin, host_task_iterator task_end, + XCDeviceData& device_data ) { + GauXC::util::unused(basis,Ps,ldps,Pz,ldpz,Py,ldpy,Px,ldpx,task_begin,task_end,device_data); + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); +} + +template +void IncoreReplicatedXCDeviceIntegrator:: + exc_vxc_local_work_( const basis_type& basis, const value_type* Ps, int64_t ldps, + const value_type* Pz, int64_t ldpz, + const value_type* Py, int64_t ldpy, + const value_type* Px, int64_t ldpx, + value_type* VXCs, int64_t ldvxcs, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, value_type* EXC, value_type *N_EL, + host_task_iterator task_begin, host_task_iterator task_end, + XCDeviceData& device_data ) { + + GauXC::util::unused(basis,Ps,ldps,Pz,ldpz,Py,ldpy,Px,ldpx,VXCs,ldvxcs,VXCz,ldvxcz,VXCy,ldvxcy,VXCx,ldvxcx,EXC,N_EL,task_begin,task_end,device_data); + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); +} + + } } diff --git a/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator.hpp b/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator.hpp index 85ac8737..cabdbc50 100644 --- a/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator.hpp +++ b/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator.hpp @@ -44,7 +44,7 @@ class ShellBatchedReplicatedXCDeviceIntegrator : void eval_exc_vxc_( int64_t m, int64_t n, const value_type* P, int64_t ldp, value_type* VXC, int64_t ldvxc, - value_type* EXC ) override; + value_type* EXC, const IntegratorSettingsEXC& settings ) override; void eval_exc_vxc_( int64_t m, int64_t n, const value_type* Ps, int64_t ldps, @@ -52,7 +52,21 @@ class ShellBatchedReplicatedXCDeviceIntegrator : int64_t ldpz, value_type* VXCs, int64_t ldvxcs, value_type* VXCz, int64_t ldvxcz, - value_type* EXC ) override; + value_type* EXC, const IntegratorSettingsEXC& settings ) override; + + void eval_exc_vxc_( int64_t m, int64_t n, const value_type* Ps, + int64_t ldps, + const value_type* Pz, + int64_t ldpz, + const value_type* Py, + int64_t ldpy, + const value_type* Px, + int64_t ldpx, + value_type* VXCs, int64_t ldvxcs, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, + value_type* EXC, const IntegratorSettingsEXC& settings ) override; void eval_exc_grad_( int64_t m, int64_t n, const value_type* P, int64_t ldp, value_type* EXC_GRAD ) override; @@ -74,6 +88,17 @@ class ShellBatchedReplicatedXCDeviceIntegrator : host_task_iterator task_begin, host_task_iterator task_end, XCDeviceData& device_data ); + void exc_vxc_local_work_( const basis_type& basis, const value_type* Ps, int64_t ldps, + const value_type* Pz, int64_t ldpz, + const value_type* Py, int64_t ldpy, + const value_type* Px, int64_t ldpx, + value_type* VXC, int64_t ldvxc, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, value_type* EXC, value_type *N_EL, + host_task_iterator task_begin, host_task_iterator task_end, + XCDeviceData& device_data ); + void eval_exc_grad_local_work_( int64_t m, int64_t n, const value_type* P, int64_t ldp, value_type* EXC_GRAD, host_task_iterator task_begin, host_task_iterator task_end, diff --git a/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator_exc_vxc.hpp b/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator_exc_vxc.hpp index d0f6c122..c5381553 100644 --- a/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator_exc_vxc.hpp +++ b/src/xc_integrator/replicated/device/shellbatched_replicated_xc_device_integrator_exc_vxc.hpp @@ -28,7 +28,7 @@ template void ShellBatchedReplicatedXCDeviceIntegrator:: eval_exc_vxc_( int64_t m, int64_t n, const value_type* P, int64_t ldp, value_type* VXC, int64_t ldvxc, - value_type* EXC ) { + value_type* EXC, const IntegratorSettingsEXC& settings ) { const auto& basis = this->load_balancer_->basis(); @@ -93,12 +93,33 @@ void ShellBatchedReplicatedXCDeviceIntegrator:: int64_t ldpz, value_type* VXCs, int64_t ldvxcs, value_type* VXCz, int64_t ldvxcz, - value_type* EXC ) { + value_type* EXC, const IntegratorSettingsEXC& settings ) { - GauXC::util::unused(m,n,Ps,ldps,Pz,ldpz,VXCs,ldvxcs,VXCz,ldvxcz,EXC); + GauXC::util::unused(m,n,Ps,ldps,Pz,ldpz,VXCs,ldvxcs,VXCz,ldvxcz,EXC,settings); GAUXC_GENERIC_EXCEPTION("UKS NOT YET IMPLEMENTED FOR DEVICE"); } + +template +void ShellBatchedReplicatedXCDeviceIntegrator:: + eval_exc_vxc_( int64_t m, int64_t n, const value_type* Ps, + int64_t ldps, + const value_type* Pz, + int64_t ldpz, + const value_type* Py, + int64_t ldpy, + const value_type* Px, + int64_t ldpx, + value_type* VXCs, int64_t ldvxcs, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, + value_type* EXC, const IntegratorSettingsEXC& settings ) { + GauXC::util::unused(m,n,Ps,ldps,Pz,ldpz,Py,ldpy,Px,ldpx,VXCs,ldvxcs,VXCz,ldvxcz,VXCy,ldvxcy,VXCx,ldvxcx,EXC,settings); + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); +} + + template void ShellBatchedReplicatedXCDeviceIntegrator:: exc_vxc_local_work_( const basis_type& basis, const value_type* P, int64_t ldp, @@ -206,6 +227,24 @@ void ShellBatchedReplicatedXCDeviceIntegrator:: GAUXC_GENERIC_EXCEPTION("UKS NOT YET IMPLEMENTED FOR DEVICE"); } +template +void ShellBatchedReplicatedXCDeviceIntegrator:: + exc_vxc_local_work_( const basis_type& basis, const value_type* Ps, int64_t ldps, + const value_type* Pz, int64_t ldpz, + const value_type* Py, int64_t ldpy, + const value_type* Px, int64_t ldpx, + value_type* VXCs, int64_t ldvxcs, + value_type* VXCz, int64_t ldvxcz, + value_type* VXCy, int64_t ldvxcy, + value_type* VXCx, int64_t ldvxcx, value_type* EXC, value_type *N_EL, + host_task_iterator task_begin, host_task_iterator task_end, + XCDeviceData& device_data ) { + + GauXC::util::unused(basis,Ps,ldps,Pz,ldpz,Py,ldpy,Px,ldpx,VXCs,ldvxcs,VXCz,ldvxcz,VXCy,ldvxcy,VXCx,ldvxcx,EXC,N_EL,task_begin,task_end,device_data); + GAUXC_GENERIC_EXCEPTION("GKS NOT YET IMPLEMENTED FOR DEVICE"); +} + + template typename ShellBatchedReplicatedXCDeviceIntegrator::incore_device_task ShellBatchedReplicatedXCDeviceIntegrator::