@@ -57,7 +57,25 @@ namespace hsolver {
5757 hipErrcheck (hipMemcpy (_vcc, vcc.data (), sizeof (double ) * vcc.size (), hipMemcpyHostToDevice));
5858
5959 // Copy eigenvalues back to device
60+ <<<<<<< HEAD
6061 hipErrcheck (hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(doubl int * fail_info)
62+ =======
63+ hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double ) * eigenvalue.size(), hipMemcpyHostToDevice));
64+ }
65+ #endif // __LCAO
66+
67+ // GPU implementation of generalized eigenvalue solver for single precision complex
68+ template <>
69+ void dngvd_op<std::complex <float >, base_device::DEVICE_GPU >::operator ()(
70+ const base_device::DEVICE_GPU * ctx,
71+ const int nstart,
72+ const int ldh,
73+ const std::complex <float >* _hcc,
74+ const std::complex <float >* _scc,
75+ float * _eigenvalue,
76+ std::complex <float >* _vcc,
77+ int * fail_info)
78+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
6179 {
6280 // Allocate host memory for complex matrices
6381 std::vector<std::complex <float >> hcc (ldh * nstart, {0 , 0 });
@@ -66,7 +84,25 @@ namespace hsolver {
6684 std::vector<float > eigenvalue (nstart, 0 );
6785
6886 // Copy complex Hamiltonian matrix from device to host
87+ <<<<<<< HEAD
6988 hipErrcheck (hipMemcpy(hcc.data(), _hcc, sizeof(std::complex <float >) * hcc.size(), hipMemcpyDevice eigenvalue.data(),
89+ =======
90+ hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex <float >) * hcc.size(), hipMemcpyDeviceToHost));
91+
92+ // Copy complex overlap matrix from device to host
93+ hipErrcheck (hipMemcpy(scc.data(), _scc, sizeof(std::complex <float >) * scc.size(), hipMemcpyDeviceToHost));
94+
95+ base_device::DEVICE_CPU * cpu_ctx = {};
96+
97+ // Call CPU solver for complex single precision
98+ dngvd_op<std::complex <float >, base_device::DEVICE_CPU >()(
99+ cpu_ctx,
100+ nstart,
101+ ldh,
102+ hcc.data(),
103+ scc.data(),
104+ eigenvalue.data(),
105+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
70106 vcc.data (),
71107 fail_info);
72108
@@ -77,7 +113,24 @@ namespace hsolver {
77113 hipErrcheck (hipMemcpy (_eigenvalue, eigenvalue.data (), sizeof (float ) * eigenvalue.size (), hipMemcpyHostToDevice));
78114 }
79115
116+ <<<<<<< HEAD
80117 // GPU implementation of generalized eigenvalue solver for double precision compt, {0, 0});
118+ =======
119+ // GPU implementation of generalized eigenvalue solver for double precision complex
120+ template <>
121+ void dngvd_op<std::complex <double >, base_device::DEVICE_GPU >::operator ()(
122+ const base_device::DEVICE_GPU * ctx,
123+ const int nstart,
124+ const int ldh,
125+ const std::complex <double >* _hcc,
126+ const std::complex <double >* _scc,
127+ double * _eigenvalue,
128+ std::complex <double >* _vcc,
129+ int * fail_info)
130+ {
131+ // Allocate host memory for double complex matrices
132+ std::vector<std::complex <double >> hcc (ldh * nstart, {0 , 0 });
133+ >>>>>>> 8c430373269e0a744ed2fda32b97d3b3df6a0188
81134 std::vector<std::complex <double >> scc (ldh * nstart, {0 , 0 });
82135 std::vector<std::complex <double >> vcc (ldh * nstart, {0 , 0 });
83136 std::vector<double > eigenvalue (nstart, 0 );
@@ -86,7 +139,11 @@ namespace hsolver {
86139 hipErrcheck (hipMemcpy (hcc.data (), _hcc, sizeof (std::complex <double >) * hcc.size (), hipMemcpyDeviceToHost));
87140
88141 // Copy double complex overlap matrix from device to host
142+ <<<<<<< HEAD
89143 hipErrcheck (hipMemcpy(scc.data(), _scc, eigenvectors back to device
144+ =======
145+ hipErrcheck(hipMemcpy( eigenvectors back to device
146+ >>>>>>> 8c430373269e0a744ed2fda32b97d3b3df6a0188
90147 hipErrcheck (hipMemcpy(_vcc, vcc.data(), sizeof(std::complex <double >) * vcc.size(), hipMemcpyHostToDevice));
91148
92149 // Copy eigenvalues back to device
@@ -97,7 +154,11 @@ namespace hsolver {
97154 // GPU implementation of standard eigenvalue solver for double precision
98155 template <>
99156 void dnevx_op<double , base_device::DEVICE_GPU >::operator ()(
157+ <<<<<<< HEAD
100158 const base_device:: _hcc, sizeof (double ) * hcc.size(), hipMemcpyDeviceToHost));
159+ =======
160+ c _hcc, sizeof (double ) * hcc.size(), hipMemcpyDeviceToHost));
161+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
101162
102163 base_device::DEVICE_CPU * cpu_ctx = {};
103164
@@ -108,7 +169,11 @@ namespace hsolver {
108169 hipErrcheck (hipMemcpy(_vcc, vcc.data(), sizeof(double ) * vcc.size(), hipMemcpyHostToDevice));
109170
110171 // Copy eigenvalues back to device
172+ <<<<<<< HEAD
111173 hipErrcheck (hipMemcpy(envalue,
174+ =======
175+ hipEenvalue,
176+ >>>>>>> 8c430373269e0a744ed2fda32b97d3b3df6a0188
112177 std::complex <float >* _vcc)
113178 {
114179 // Allocate host memory for complex matrices
@@ -119,9 +184,13 @@ namespace hsolver {
119184 // Copy complex Hamiltonian matrix from device to host
120185 hipErrcheck (hipMemcpy (hcc.data (), _hcc, sizeof (std::complex <float >) * hcc.size (), hipMemcpyDeviceToHost));
121186
187+ <<<<<<< HEAD
122188 base_device::DEVICE_CPU * cpu_ctx = {};
123189
124190 // Copy eigenvalues back to device
191+ =======
192+ base_device::DEVICE_CPU * cpu_ctx = // Copy eigenvalues back to device
193+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
125194 hipErrcheck (hipMemcpy (_eigenvalue, eigenvalue.data (), sizeof (float ) * eigenvalue.size (), hipMemcpyHostToDevice));
126195 }
127196
@@ -133,8 +202,12 @@ namespace hsolver {
133202 const int ldh,
134203 const std::complex <double >* _hcc,
135204 const int m,
205+ <<<<<<< HEAD
136206 double * _eigenvalue,
137207 std::cot));
208+ =======
209+ double * _eigenvalut));
210+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
138211
139212 base_device::DEVICE_CPU * cpu_ctx = {};
140213
@@ -150,8 +223,12 @@ namespace hsolver {
150223
151224 // Copy double complex eigenvectors back to device
152225 hipErrcheck (hipMemcpy(_vcc, vcc.data(), sizeof(std::complex <double >) * vcc.size(), hipMemcpyHostToDevice));
226+ <<<<<<< HEAD
153227
154228 // lex<float>* hcc,
229+ =======
230+ lex<float >* hcc,
231+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
155232 std::complex <float >* scc,
156233 const int m,
157234 float * eigenvalue,
@@ -169,7 +246,11 @@ namespace hsolver {
169246 std::complex <double >* hcc,
170247 std::complex <double >* scc,
171248 const int m,
249+ <<<<<<< HEAD
172250 double * eigenvle* vcc,
251+ =======
252+ le* vcc,
253+ >>> >>> > 8c430373269e0a744ed2fda32b97d3b3df6a0188
173254 int * fail_info)
174255 {
175256 }
0 commit comments