diff --git a/device/kernel_fire.cl b/device/kernel_fire.cl index 169530cd..d6216625 100644 --- a/device/kernel_fire.cl +++ b/device/kernel_fire.cl @@ -226,6 +226,9 @@ gradient_minFire( #endif // Enable this for debugging FIRE from a defined initial genotype + // WARNING: hardcoded has priority over LGA genotype. + // That means, if DEBUG_INITIAL_2BRT is defined, then + // LGA genotype is not used (only for debugging purposes) #if defined (DEBUG_FIRE_INITIAL_2BRT) if (tidx == 0) { // 2brt @@ -251,79 +254,19 @@ gradient_minFire( genotype[19] = 0.0f; genotype[20] = 0.0f; } - // Evaluating candidate - barrier(CLK_LOCAL_MEM_FENCE); - - // ============================================================= - gpu_calc_energy(dockpars_rotbondlist_length, - dockpars_num_of_atoms, - dockpars_true_ligand_atoms, - dockpars_gridsize_x, - dockpars_gridsize_y, - dockpars_gridsize_z, - // g1 = gridsize_x - dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y - dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z - dockpars_fgrids, - dockpars_num_of_atypes, - dockpars_num_of_map_atypes, - dockpars_num_of_intraE_contributors, - dockpars_grid_spacing, - dockpars_coeff_elec, - dockpars_elec_min_distance, - dockpars_qasp, - dockpars_coeff_desolv, - dockpars_smooth, - - genotype, /*WARNING: calculating the energy of the hardcoded genotype*/ - &energy, - &run_id, - // Some OpenCL compilers don't allow declaring - // local variables within non-kernel functions. - // These local variables must be declared in a kernel, - // and then passed to non-kernel functions. - calc_coords, - partial_energies, - #if defined (DEBUG_ENERGY_KERNEL) - partial_interE, - partial_intraE, - #endif -#if 0 - true, -#endif - kerconst_interintra, - kerconst_intracontrib, - kerconst_intra, - kerconst_rotlist, - kerconst_conform - ); - // ============================================================= - - // WARNING: hardcoded has priority over LGA genotype. - // That means, if DEBUG_INITIAL_2BRT is defined, then - // LGA genotype is not used (only for debugging purposes) - if (tidx == 0) - { - printf("\n"); - printf("%20s \n", "hardcoded genotype: "); - printf("%20s %.6f\n", "initial energy: ", energy); - } - barrier(CLK_LOCAL_MEM_FENCE); #endif - // Calculating gradient barrier(CLK_LOCAL_MEM_FENCE); - // ============================================================= - gpu_calc_gradient(dockpars_rotbondlist_length, + gpu_calc_energrad(dockpars_rotbondlist_length, dockpars_num_of_atoms, dockpars_true_ligand_atoms, dockpars_gridsize_x, dockpars_gridsize_y, dockpars_gridsize_z, - // g1 = gridsize_x - dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y - dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z + // g1 = gridsize_x + dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y + dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z dockpars_fgrids, dockpars_num_of_atypes, dockpars_num_of_map_atypes, @@ -342,6 +285,11 @@ gradient_minFire( &energy, &run_id, calc_coords, + partial_energies, + #if defined (DEBUG_ENERGY_KERNEL) + partial_interE, + partial_intraE, + #endif kerconst_interintra, kerconst_intracontrib, kerconst_intra, @@ -357,6 +305,16 @@ gradient_minFire( gradient ); // ============================================================= + barrier(CLK_LOCAL_MEM_FENCE); + + #if defined (DEBUG_FIRE_INITIAL_2BRT) + if (tidx == 0) + { + printf("\n"); + printf("%20s \n", "hardcoded genotype: "); + printf("%20s %.6f\n", "initial energy: ", energy); + } + #endif // FIRE counters __local float velocity [ACTUAL_GENOTYPE_LENGTH]; // velocity @@ -452,116 +410,9 @@ gradient_minFire( candidate_genotype [gene_counter] = genotype [gene_counter] + dt * velocity [gene_counter]; } -// Replacing separate gradient and energy -// calculations with a single & unified -// gpu_calc_energrad() function -// IMPORTANT: be careful with input/output (RE) assignment -// of genotypes, energy, and gradients -#if 0 - // ============================================================= - // Calculating (candidate) gradient - // from "candidate_genotype" - barrier(CLK_LOCAL_MEM_FENCE); - - gpu_calc_gradient(dockpars_rotbondlist_length, - dockpars_num_of_atoms, - dockpars_true_ligand_atoms, - dockpars_gridsize_x, - dockpars_gridsize_y, - dockpars_gridsize_z, - // g1 = gridsize_x - dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y - dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z - dockpars_fgrids, - dockpars_num_of_atypes, - dockpars_num_of_map_atypes, - dockpars_num_of_intraE_contributors, - dockpars_grid_spacing, - dockpars_coeff_elec, - dockpars_elec_min_distance, - dockpars_qasp, - dockpars_coeff_desolv, - dockpars_smooth, - // Some OpenCL compilers don't allow declaring - // local variables within non-kernel functions. - // These local variables must be declared in a kernel, - // and then passed to non-kernel functions. - candidate_genotype, - &candidate_energy, - &run_id, - calc_coords, - kerconst_interintra, - kerconst_intracontrib, - kerconst_intra, - kerconst_rotlist, - kerconst_conform, - rotbonds_const, - rotbonds_atoms_const, - num_rotating_atoms_per_rotbond_const, - // Gradient-related arguments - dockpars_num_of_genes, - gradient_x, gradient_y, gradient_z, - f_gradient_x, f_gradient_y, f_gradient_z, - candidate_gradient - ); - // ============================================================= - - // Evaluating (candidate) genotype - // i.e. get (candidate) energy - barrier(CLK_LOCAL_MEM_FENCE); - - // ============================================================= - gpu_calc_energy(dockpars_rotbondlist_length, - dockpars_num_of_atoms, - dockpars_true_ligand_atoms, - dockpars_gridsize_x, - dockpars_gridsize_y, - dockpars_gridsize_z, - // g1 = gridsize_x - dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y - dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z - dockpars_fgrids, - dockpars_num_of_atypes, - dockpars_num_of_map_atypes, - dockpars_num_of_intraE_contributors, - dockpars_grid_spacing, - dockpars_coeff_elec, - dockpars_elec_min_distance, - dockpars_qasp, - dockpars_coeff_desolv, - dockpars_smooth, - - candidate_genotype, /*WARNING: calculating the energy of the hardcoded genotype*/ - &candidate_energy, - &run_id, - // Some OpenCL compilers don't allow declaring - // local variables within non-kernel functions. - // These local variables must be declared in a kernel, - // and then passed to non-kernel functions. - calc_coords, - partial_energies, - #if defined (DEBUG_ENERGY_KERNEL) - partial_interE, - partial_intraE, - #endif -#if 0 - true, -#endif - kerconst_interintra, - kerconst_intracontrib, - kerconst_intra, - kerconst_rotlist, - kerconst_conform - ); - // ============================================================= -#endif - - // ============================================================= - // ============================================================= // ============================================================= // Calculating energy & gradient barrier(CLK_LOCAL_MEM_FENCE); - gpu_calc_energrad(dockpars_rotbondlist_length, dockpars_num_of_atoms, dockpars_true_ligand_atoms, @@ -609,8 +460,6 @@ gradient_minFire( candidate_gradient ); // ============================================================= - // ============================================================= - // ============================================================= // Calculating power // power is force * velocity. diff --git a/host/inc/stringify.h b/host/inc/stringify.h index 2fdc969f..b216c35d 100644 --- a/host/inc/stringify.h +++ b/host/inc/stringify.h @@ -4872,6 +4872,9 @@ const char *calcenergy_ocl = " #endif\n" "\n" " // Enable this for debugging FIRE from a defined initial genotype\n" +" // WARNING: hardcoded has priority over LGA genotype.\n" +" // That means, if DEBUG_INITIAL_2BRT is defined, then\n" +" // LGA genotype is not used (only for debugging purposes)\n" " #if defined (DEBUG_FIRE_INITIAL_2BRT)\n" " if (tidx == 0) {\n" " // 2brt\n" @@ -4897,79 +4900,19 @@ const char *calcenergy_ocl = " genotype[19] = 0.0f;\n" " genotype[20] = 0.0f;\n" " }\n" -" // Evaluating candidate\n" -" barrier(CLK_LOCAL_MEM_FENCE);\n" -"\n" -" // =============================================================\n" -" gpu_calc_energy(dockpars_rotbondlist_length,\n" -" dockpars_num_of_atoms,\n" -" dockpars_true_ligand_atoms,\n" -" dockpars_gridsize_x,\n" -" dockpars_gridsize_y,\n" -" dockpars_gridsize_z,\n" -" // g1 = gridsize_x\n" -" dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y\n" -" dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z\n" -" dockpars_fgrids,\n" -" dockpars_num_of_atypes,\n" -" dockpars_num_of_map_atypes,\n" -" dockpars_num_of_intraE_contributors,\n" -" dockpars_grid_spacing,\n" -" dockpars_coeff_elec,\n" -" dockpars_elec_min_distance,\n" -" dockpars_qasp,\n" -" dockpars_coeff_desolv,\n" -" dockpars_smooth,\n" -" \n" -" genotype, /*WARNING: calculating the energy of the hardcoded genotype*/\n" -" &energy,\n" -" &run_id,\n" -" // Some OpenCL compilers don't allow declaring\n" -" // local variables within non-kernel functions.\n" -" // These local variables must be declared in a kernel,\n" -" // and then passed to non-kernel functions.\n" -" calc_coords,\n" -" partial_energies,\n" -" #if defined (DEBUG_ENERGY_KERNEL)\n" -" partial_interE,\n" -" partial_intraE,\n" -" #endif\n" -"#if 0\n" -" true,\n" -"#endif\n" -" kerconst_interintra,\n" -" kerconst_intracontrib,\n" -" kerconst_intra,\n" -" kerconst_rotlist,\n" -" kerconst_conform\n" -" );\n" -" // =============================================================\n" -"\n" -" // WARNING: hardcoded has priority over LGA genotype.\n" -" // That means, if DEBUG_INITIAL_2BRT is defined, then\n" -" // LGA genotype is not used (only for debugging purposes)\n" -" if (tidx == 0)\n" -" {\n" -" printf(\"\\n\");\n" -" printf(\"%20s \\n\", \"hardcoded genotype: \");\n" -" printf(\"%20s %.6f\\n\", \"initial energy: \", energy);\n" -" }\n" -" barrier(CLK_LOCAL_MEM_FENCE);\n" " #endif\n" "\n" -" // Calculating gradient\n" " barrier(CLK_LOCAL_MEM_FENCE);\n" -"\n" " // =============================================================\n" -" gpu_calc_gradient(dockpars_rotbondlist_length,\n" +" gpu_calc_energrad(dockpars_rotbondlist_length,\n" " dockpars_num_of_atoms,\n" " dockpars_true_ligand_atoms,\n" " dockpars_gridsize_x,\n" " dockpars_gridsize_y,\n" " dockpars_gridsize_z,\n" -" // g1 = gridsize_x\n" -" dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y\n" -" dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z\n" +" // g1 = gridsize_x\n" +" dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y\n" +" dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z\n" " dockpars_fgrids,\n" " dockpars_num_of_atypes,\n" " dockpars_num_of_map_atypes,\n" @@ -4988,6 +4931,11 @@ const char *calcenergy_ocl = " &energy,\n" " &run_id,\n" " calc_coords,\n" +" partial_energies,\n" +" #if defined (DEBUG_ENERGY_KERNEL)\n" +" partial_interE,\n" +" partial_intraE,\n" +" #endif\n" " kerconst_interintra,\n" " kerconst_intracontrib,\n" " kerconst_intra,\n" @@ -5003,6 +4951,16 @@ const char *calcenergy_ocl = " gradient\n" " );\n" " // =============================================================\n" +" barrier(CLK_LOCAL_MEM_FENCE);\n" +"\n" +" #if defined (DEBUG_FIRE_INITIAL_2BRT)\n" +" if (tidx == 0)\n" +" {\n" +" printf(\"\\n\");\n" +" printf(\"%20s \\n\", \"hardcoded genotype: \");\n" +" printf(\"%20s %.6f\\n\", \"initial energy: \", energy);\n" +" }\n" +" #endif\n" "\n" " // FIRE counters\n" " __local float velocity [ACTUAL_GENOTYPE_LENGTH]; // velocity\n" @@ -5098,116 +5056,9 @@ const char *calcenergy_ocl = " candidate_genotype [gene_counter] = genotype [gene_counter] + dt * velocity [gene_counter];\n" " }\n" "\n" -"// Replacing separate gradient and energy \n" -"// calculations with a single & unified\n" -"// gpu_calc_energrad() function\n" -"// IMPORTANT: be careful with input/output (RE) assignment\n" -"// of genotypes, energy, and gradients\n" -"#if 0\n" -" // =============================================================\n" -" // Calculating (candidate) gradient\n" -" // from \"candidate_genotype\"\n" -" barrier(CLK_LOCAL_MEM_FENCE);\n" -"\n" -" gpu_calc_gradient(dockpars_rotbondlist_length,\n" -" dockpars_num_of_atoms,\n" -" dockpars_true_ligand_atoms,\n" -" dockpars_gridsize_x,\n" -" dockpars_gridsize_y,\n" -" dockpars_gridsize_z,\n" -" // g1 = gridsize_x\n" -" dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y\n" -" dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z\n" -" dockpars_fgrids,\n" -" dockpars_num_of_atypes,\n" -" dockpars_num_of_map_atypes,\n" -" dockpars_num_of_intraE_contributors,\n" -" dockpars_grid_spacing,\n" -" dockpars_coeff_elec,\n" -" dockpars_elec_min_distance,\n" -" dockpars_qasp,\n" -" dockpars_coeff_desolv,\n" -" dockpars_smooth,\n" -" // Some OpenCL compilers don't allow declaring\n" -" // local variables within non-kernel functions.\n" -" // These local variables must be declared in a kernel,\n" -" // and then passed to non-kernel functions.\n" -" candidate_genotype,\n" -" &candidate_energy,\n" -" &run_id,\n" -" calc_coords,\n" -" kerconst_interintra,\n" -" kerconst_intracontrib,\n" -" kerconst_intra,\n" -" kerconst_rotlist,\n" -" kerconst_conform,\n" -" rotbonds_const,\n" -" rotbonds_atoms_const,\n" -" num_rotating_atoms_per_rotbond_const,\n" -" // Gradient-related arguments\n" -" dockpars_num_of_genes,\n" -" gradient_x, gradient_y, gradient_z,\n" -" f_gradient_x, f_gradient_y, f_gradient_z,\n" -" candidate_gradient\n" -" );\n" -" // =============================================================\n" -"\n" -" // Evaluating (candidate) genotype\n" -" // i.e. get (candidate) energy\n" -" barrier(CLK_LOCAL_MEM_FENCE);\n" -"\n" -" // =============================================================\n" -" gpu_calc_energy(dockpars_rotbondlist_length,\n" -" dockpars_num_of_atoms,\n" -" dockpars_true_ligand_atoms,\n" -" dockpars_gridsize_x,\n" -" dockpars_gridsize_y,\n" -" dockpars_gridsize_z,\n" -" // g1 = gridsize_x\n" -" dockpars_gridsize_x_times_y, // g2 = gridsize_x * gridsize_y\n" -" dockpars_gridsize_x_times_y_times_z, // g3 = gridsize_x * gridsize_y * gridsize_z\n" -" dockpars_fgrids,\n" -" dockpars_num_of_atypes,\n" -" dockpars_num_of_map_atypes,\n" -" dockpars_num_of_intraE_contributors,\n" -" dockpars_grid_spacing,\n" -" dockpars_coeff_elec,\n" -" dockpars_elec_min_distance,\n" -" dockpars_qasp,\n" -" dockpars_coeff_desolv,\n" -" dockpars_smooth,\n" -" \n" -" candidate_genotype, /*WARNING: calculating the energy of the hardcoded genotype*/\n" -" &candidate_energy,\n" -" &run_id,\n" -" // Some OpenCL compilers don't allow declaring\n" -" // local variables within non-kernel functions.\n" -" // These local variables must be declared in a kernel,\n" -" // and then passed to non-kernel functions.\n" -" calc_coords,\n" -" partial_energies,\n" -" #if defined (DEBUG_ENERGY_KERNEL)\n" -" partial_interE,\n" -" partial_intraE,\n" -" #endif\n" -"#if 0\n" -" true,\n" -"#endif\n" -" kerconst_interintra,\n" -" kerconst_intracontrib,\n" -" kerconst_intra,\n" -" kerconst_rotlist,\n" -" kerconst_conform\n" -" );\n" -" // =============================================================\n" -"#endif\n" -"\n" -" // =============================================================\n" -" // =============================================================\n" " // =============================================================\n" " // Calculating energy & gradient\n" " barrier(CLK_LOCAL_MEM_FENCE);\n" -"\n" " gpu_calc_energrad(dockpars_rotbondlist_length,\n" " dockpars_num_of_atoms,\n" " dockpars_true_ligand_atoms,\n" @@ -5255,8 +5106,6 @@ const char *calcenergy_ocl = " candidate_gradient\n" " );\n" " // =============================================================\n" -" // =============================================================\n" -" // =============================================================\n" "\n" " // Calculating power\n" " // power is force * velocity.\n"