Skip to content

Commit 12f85b8

Browse files
committed
fix: prepare the rotation derivative for vector CVs
1 parent b034389 commit 12f85b8

1 file changed

Lines changed: 8 additions & 15 deletions

File tree

src/colvaratoms_gpu.cpp

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)