@@ -40,9 +40,14 @@ static int CeedBasisApplyCore_Cuda(CeedBasis basis, bool apply_add, const CeedIn
4040
4141 // Clear v for transpose operation
4242 if (is_transpose && !apply_add ) {
43+ CeedInt num_comp , q_comp , num_nodes , num_qpts ;
4344 CeedSize length ;
4445
45- CeedCallBackend (CeedVectorGetLength (v , & length ));
46+ CeedCallBackend (CeedBasisGetNumComponents (basis , & num_comp ));
47+ CeedCallBackend (CeedBasisGetNumQuadratureComponents (basis , eval_mode , & q_comp ));
48+ CeedCallBackend (CeedBasisGetNumNodes (basis , & num_nodes ));
49+ CeedCallBackend (CeedBasisGetNumQuadraturePoints (basis , & num_qpts ));
50+ length = (CeedSize )num_elem * (CeedSize )num_comp * (t_mode == CEED_TRANSPOSE ? (CeedSize )num_nodes : ((CeedSize )num_qpts * (CeedSize )q_comp ));
4651 CeedCallCuda (ceed , cudaMemset (d_v , 0 , length * sizeof (CeedScalar )));
4752 }
4853 CeedCallBackend (CeedBasisGetNumQuadraturePoints1D (basis , & Q_1d ));
@@ -206,9 +211,14 @@ static int CeedBasisApplyAtPointsCore_Cuda(CeedBasis basis, bool apply_add, cons
206211
207212 // Clear v for transpose operation
208213 if (is_transpose && !apply_add ) {
214+ CeedInt num_comp , q_comp , num_nodes ;
209215 CeedSize length ;
210216
211- CeedCallBackend (CeedVectorGetLength (v , & length ));
217+ CeedCallBackend (CeedBasisGetNumComponents (basis , & num_comp ));
218+ CeedCallBackend (CeedBasisGetNumQuadratureComponents (basis , eval_mode , & q_comp ));
219+ CeedCallBackend (CeedBasisGetNumNodes (basis , & num_nodes ));
220+ length =
221+ (CeedSize )num_elem * (CeedSize )num_comp * (t_mode == CEED_TRANSPOSE ? (CeedSize )num_nodes : ((CeedSize )max_num_points * (CeedSize )q_comp ));
212222 CeedCallCuda (ceed , cudaMemset (d_v , 0 , length * sizeof (CeedScalar )));
213223 }
214224
@@ -283,9 +293,12 @@ static int CeedBasisApplyNonTensorCore_Cuda(CeedBasis basis, bool apply_add, con
283293
284294 // Clear v for transpose operation
285295 if (is_transpose && !apply_add ) {
296+ CeedInt num_comp , q_comp ;
286297 CeedSize length ;
287298
288- CeedCallBackend (CeedVectorGetLength (v , & length ));
299+ CeedCallBackend (CeedBasisGetNumComponents (basis , & num_comp ));
300+ CeedCallBackend (CeedBasisGetNumQuadratureComponents (basis , eval_mode , & q_comp ));
301+ length = (CeedSize )num_elem * (CeedSize )num_comp * (t_mode == CEED_TRANSPOSE ? (CeedSize )num_nodes : ((CeedSize )num_qpts * (CeedSize )q_comp ));
289302 CeedCallCuda (ceed , cudaMemset (d_v , 0 , length * sizeof (CeedScalar )));
290303 }
291304
0 commit comments