********>Bugfix 4: Author: Scott Brozell and Terry Lang, reported by Grzegorz Popowicz Date: July 27, 2007 Program: dock6.mpi Description: parallel dock should emit an error message when num_primary_scored_conformers_rescored > 1, num_secondary_scored_conformers_written > 1, or num_scored_conformers_written > 1 otherwise performance can be substantially degraded. Fix: make the following changes to the file src/dock/library_file.cpp ------------------------------------------------------------------------- *** src/dock/library_file.cpp 15 Dec 2006 01:34:39 -0000 1.13.2.8 --- src/dock/library_file.cpp 27 Jul 2007 21:50:26 -0000 *************** *** 603,609 **** exit(0); } if (num_scored_poses > 1) { ! write_conformers = true; cluster_ranked_poses = (parm.query_param("cluster_primary_conformations", "yes", "yes no") == "yes") ? true : false; --- 603,617 ---- exit(0); } if (num_scored_poses > 1) { ! if ( ! USE_MPI ) ! write_conformers = true; ! else { ! cout << ! "ERROR: DOCK cannot write conformations while running in parallel." ! << endl; ! finalize_mpi(); ! exit(0); ! } cluster_ranked_poses = (parm.query_param("cluster_primary_conformations", "yes", "yes no") == "yes") ? true : false; *************** *** 624,631 **** if(!rank_secondary_ligands) { num_secondary_scored_poses = atoi(parm.query_param("num_secondary_scored_conformers_written", "1").c_str()); ! if(num_secondary_scored_poses > 1) ! write_secondary_conformers = true; if(num_secondary_scored_poses > num_scored_poses){ cout << "ERROR: Number of secondary poses written cannot exceed number of primary "; cout << "poses rescored. Program will terminate." << endl; --- 632,648 ---- if(!rank_secondary_ligands) { num_secondary_scored_poses = atoi(parm.query_param("num_secondary_scored_conformers_written", "1").c_str()); ! if(num_secondary_scored_poses > 1) { ! if ( ! USE_MPI ) ! write_secondary_conformers = true; ! else { ! cout << ! "ERROR: DOCK cannot write conformations while running in parallel." ! << endl; ! finalize_mpi(); ! exit(0); ! } ! } if(num_secondary_scored_poses > num_scored_poses){ cout << "ERROR: Number of secondary poses written cannot exceed number of primary "; cout << "poses rescored. Program will terminate." << endl; *************** *** 650,656 **** exit(0); } if (num_scored_poses > 1) { ! write_conformers = true; cluster_ranked_poses = (parm.query_param("cluster_conformations", "yes", "yes no") == "yes") ? true : false; --- 667,681 ---- exit(0); } if (num_scored_poses > 1) { ! if ( ! USE_MPI ) ! write_conformers = true; ! else { ! cout << ! "ERROR: DOCK cannot write conformations while running in parallel." ! << endl; ! finalize_mpi(); ! exit(0); ! } cluster_ranked_poses = (parm.query_param("cluster_conformations", "yes", "yes no") == "yes") ? true : false; -------------------------------------------------------------------------- Workaround: none.