@@ -624,7 +624,7 @@ int colvaratoms_gpu::add_calc_fit_gradients_nodes(
624624 std::vector<cudaGraphNode_t> dependencies_main;
625625 error_code |= colvars_gpu::prepare_dependencies (
626626 {{" clear_atoms_grad" , false },
627- {" prepare_rotation_derivative" , false },
627+ {" prepare_rotation_derivative" , true },
628628 {" copy_grad_HtoD" , true }}, dependencies_main,
629629 nodes_map, " calc_fit_gradients_loop1" );
630630 cudaGraphNode_t calc_fit_forces_loop1_node;
@@ -645,8 +645,7 @@ int colvaratoms_gpu::add_calc_fit_gradients_nodes(
645645 cudaGraphNode_t calc_fit_forces_loop2_node;
646646 std::vector<cudaGraphNode_t> dependencies_fit_gradients;
647647 error_code |= colvars_gpu::prepare_dependencies (
648- {{" calc_fit_gradients_loop1" , false },
649- {" prepare_rotation_derivative" , false }},
648+ {{" calc_fit_gradients_loop1" , false }},
650649 dependencies_fit_gradients, nodes_map, " calc_fit_gradients_loop2" );
651650 error_code |= colvars_gpu::calc_fit_gradients_impl_loop2 (
652651 group_for_fit->gpu_atom_group ->gpu_buffers .d_fit_gradients , rot_deriv_gpu,
@@ -777,6 +776,11 @@ int colvaratoms_gpu::add_apply_force_nodes(
777776 graph, dependencies);
778777 nodes_map[" apply_force_with_inverse_rotation" ] =
779778 apply_force_with_inverse_rotation_node;
779+ // Prepare the derivative with respect to fit gradients
780+ if (rot_deriv_gpu) {
781+ error_code |= rot_deriv_gpu->add_prepare_derivative_nodes (
782+ rotation_derivative_dldq::use_dq, graph, nodes_map);
783+ }
780784 } else {
781785 // Just add the forces to proxy
782786 cudaGraphNode_t apply_force_main_node;
@@ -792,24 +796,13 @@ int colvaratoms_gpu::add_apply_force_nodes(
792796 // Compute the forces on the fitting group and add them to proxy
793797 // Clear the temporary variables
794798 cudaGraphNode_t clear_atoms_grad_node;
795- cudaGraphNode_t clear_sum_dxdq_node;
796- cudaGraphNode_t clear_tbcount_node;
797799 error_code |= colvars_gpu::add_clear_array_node (
798800 calc_fit_forces_gpu_info.d_atom_grad ,
799801 1 , clear_atoms_grad_node, graph, {});
800- error_code |= colvars_gpu::add_clear_array_node (
801- calc_fit_forces_gpu_info.d_sum_dxdq ,
802- 1 , clear_sum_dxdq_node, graph, {});
803- error_code |= colvars_gpu::add_clear_array_node (
804- calc_fit_forces_gpu_info.d_tbcount ,
805- 1 , clear_tbcount_node, graph, {});
806802 nodes_map[" clear_atoms_grad" ] = clear_atoms_grad_node;
807- nodes_map[" clear_sum_dxdq" ] = clear_sum_dxdq_node;
808- nodes_map[" clear_tbcount" ] = clear_tbcount_node;
809803 error_code |= colvars_gpu::prepare_dependencies (
810804 {{" clear_atoms_grad" , false },
811- {" clear_sum_dxdq" , false },
812- {" clear_tbcount" , false }},
805+ {" prepare_rotation_derivative" , true }},
813806 dependencies, nodes_map, " calc_fit_forces_loop1" );
814807 cudaGraphNode_t calc_fit_forces_loop1_node;
815808 error_code |= colvars_gpu::calc_fit_forces_impl_loop1 (
0 commit comments