diff --git a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/QSettings.scala b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/QSettings.scala index 86457fb49..7574518ef 100644 --- a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/QSettings.scala +++ b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/QSettings.scala @@ -98,4 +98,9 @@ class QSettings { @Argument(fullName="log_directory", shortName="logDir", doc="Directory to write log files into.", required=false) var logDirectory: File = _ + + /** + * If set, use Broad-specific cluster settings in the GridEngine job runner. Activated via the -qsub-broad argument in QGraphSettings. + */ + var useBroadClusterSettings: Boolean = false } diff --git a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraph.scala b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraph.scala index 7d09bf561..31cdef904 100644 --- a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraph.scala +++ b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraph.scala @@ -395,12 +395,18 @@ class QGraph extends Logging { */ private def runJobs() { try { - if (settings.bsub) + if (settings.bsub) { settings.jobRunner = "Lsf706" - else if (settings.qsub) + } + else if (settings.qsub || settings.qsubBroad) { settings.jobRunner = "GridEngine" - else if (settings.jobRunner == null) + if ( settings.qsubBroad ) { + settings.qSettings.useBroadClusterSettings = true + } + } + else if (settings.jobRunner == null) { settings.jobRunner = "Shell" + } commandLineManager = commandLinePluginManager.createByName(settings.jobRunner) for (mgr <- managers) { diff --git a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraphSettings.scala b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraphSettings.scala index 49dace949..7f5177101 100644 --- a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraphSettings.scala +++ b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/QGraphSettings.scala @@ -46,6 +46,9 @@ class QGraphSettings { @Argument(fullName="qsub", shortName="qsub", doc="Equivalent to -jobRunner GridEngine", required=false) var qsub = false + @Argument(fullName="qsub-broad", shortName="qsub-broad", doc="Equivalent to -qsub, but uses GridEngine parameters specific to the Broad GridEngine cluster", required=false) + var qsubBroad = false + @Argument(fullName="status",shortName="status",doc="Get status of jobs for the qscript",required=false) var getStatus = false diff --git a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/gridengine/GridEngineJobRunner.scala b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/gridengine/GridEngineJobRunner.scala index b21f43b17..8ddda6c97 100644 --- a/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/gridengine/GridEngineJobRunner.scala +++ b/public/gatk-queue/src/main/scala/org/broadinstitute/gatk/queue/engine/gridengine/GridEngineJobRunner.scala @@ -58,8 +58,14 @@ class GridEngineJobRunner(session: Session, function: CommandLineFunction) exten nativeSpec += " -l %s=%dM".format(function.qSettings.residentRequestParameter, function.residentRequest.map(_ * 1024).get.ceil.toInt) // If the resident set size limit is defined specify the memory limit - if (function.residentLimit.isDefined) - nativeSpec += " -l h_rss=%dM".format(function.residentLimit.map(_ * 1024).get.ceil.toInt) + if (function.residentLimit.isDefined) { + var memoryLimitParameter : String = "h_rss" + if (function.qSettings.useBroadClusterSettings) { + memoryLimitParameter = "h_vmem" + } + + nativeSpec += " -l %s=%dM".format(memoryLimitParameter, function.residentLimit.map(_ * 1024).get.ceil.toInt) + } // If more than 1 core is requested, set the proper request // if we aren't being jerks and just stealing cores (previous behavior) @@ -82,7 +88,7 @@ class GridEngineJobRunner(session: Session, function: CommandLineFunction) exten if (priority.isDefined) nativeSpec += " -p " + priority.get - logger.debug("Native spec is: %s".format(nativeSpec)) + logger.info("Native spec is: %s".format(nativeSpec)) (nativeSpec + " " + super.functionNativeSpec).trim() } }