Runs a job on asked nodes that meet certain processor and memory criteria.
strClusterName = "localhost" 'Change to name of cluster if not run locally. intProcessors = 1 'Number of processors required for job intMemory = 10 'MB of memory required for job strCommandLine = "mpiexec batchpi" strWorkDir = "c:\scripts\" strUsername = "" 'If empty string, script prompts for username. strPassword = "" 'If empty string, script prompts for password. blnIsConsole = True 'True = cmd-line, False = GUI intHandle = 0 Set objComputeCluster = CreateObject("Microsoft.ComputeCluster.Cluster") objComputeCluster.Connect(strClusterName) WScript.Echo "Compute Cluster Name: " & objComputeCluster.Name & vbCrLf & _ "Node criteria:" & vbCrLf & _ " Number of processors: " & intProcessors & vbCrLf & _ " Physical memory: " & intMemory & " MB" & vbCrLf & _ "Compute Cluster Nodes:" Set colNodes = objComputeCluster.ComputeNodes strSelectedNodes = "" For Each objNode In colNodes If objNode.NumberOfProcessors >= intProcessors And _ objNode.Memory >= intMemory And _ objNode.Status = 0 Then 'Node is Ready. WScript.Echo vbCrLf & " Name: " & objNode.Name & vbCrLf & _ " Number of Processors: " & objNode.NumberOfProcessors & vbCrLf & _ " Memory: " & objNode.Memory & " MB" strSelectedNodes = strSelectedNodes & objNode.Name & "," Else WScript.Echo vbCrLf & " Name: " & objNode.Name & vbCrLf & _ " Node does not meet criteria." End If Next If strSelectedNodes <> "" Then If Right(strSelectedNodes, 1) = "," Then strSelectedNodes = Left(strSelectedNodes, Len(strSelectedNodes) - 1) End If Set objJob = objComputeCluster.CreateJob objJob.Name = "Test-" & Date & "-" & Time objJob.AskedNodes = strSelectedNodes objJob.MaximumNumberOfProcessors = intProcessors objJob.MinimumNumberOfProcessors = intProcessors objJob.Priority = 2 objJob.IsExclusive = False intJobID = objComputeCluster.AddJob((objJob)) WScript.Echo "Job ID: " & intJobID Set objTask = objComputeCluster.CreateTask objTask.Name = "Task1" objTask.CommandLine = strCommandLine objTask.Stdout = strWorkDir & strNode & "-Task1Out.txt" objTask.Stderr = strWorkDir & strNode & "-Task1Err.txt" objTask.WorkDirectory = strWorkDir intTaskID = objComputeCluster.AddTask(objJob.ID, (objTask)) WScript.Echo "Task ID: " & intTaskID objComputeCluster.SubmitJob intJobID, strUsername, strPassword, _ blnIsConsole, intHandle WScript.Echo vbCrLf & "Submitted Job: " & intJobID & " " & objJob.Name & _ " on the following nodes:" arrNodes = Split(strSelectedNodes, ",") For Each strNode In arrNodes WScript.Echo " " & strNode Next Else WScript.Echo vbCrLf & "No nodes met criteria. Job not submitted." End If
strClusterName = "localhost" 'Change to name of cluster if not run locally. intProcessors = 1 'Number of processors required for job intMemory = 10 'MB of memory required for job strCommandLine = "mpiexec batchpi" strWorkDir = "c:\scripts\" strUsername = "" 'If empty string, script prompts for username. strPassword = "" 'If empty string, script prompts for password. blnIsConsole = True 'True = cmd-line, False = GUI intHandle = 0 Set objComputeCluster = CreateObject("Microsoft.ComputeCluster.Cluster") objComputeCluster.Connect(strClusterName) WScript.Echo "Compute Cluster Name: " & objComputeCluster.Name & vbCrLf & _ "Node criteria:" & vbCrLf & _ " Number of processors: " & intProcessors & vbCrLf & _ " Physical memory: " & intMemory & " MB" & vbCrLf & _ "Compute Cluster Nodes:" Set colNodes = objComputeCluster.ComputeNodes strSelectedNodes = "" For Each objNode In colNodes If objNode.NumberOfProcessors >= intProcessors And _ objNode.Memory >= intMemory And _ objNode.Status = 0 Then 'Node is Ready. WScript.Echo vbCrLf & " Name: " & objNode.Name & vbCrLf & _ " Number of Processors: " & objNode.NumberOfProcessors & vbCrLf & _ " Memory: " & objNode.Memory & " MB" strSelectedNodes = strSelectedNodes & objNode.Name & "," Else WScript.Echo vbCrLf & " Name: " & objNode.Name & vbCrLf & _ " Node does not meet criteria." End If Next If strSelectedNodes <> "" Then If Right(strSelectedNodes, 1) = "," Then strSelectedNodes = Left(strSelectedNodes, Len(strSelectedNodes) - 1) End If Set objJob = objComputeCluster.CreateJob objJob.Name = "Test-" & Date & "-" & Time objJob.AskedNodes = strSelectedNodes objJob.MaximumNumberOfProcessors = intProcessors objJob.MinimumNumberOfProcessors = intProcessors objJob.Priority = 2 objJob.IsExclusive = False intJobID = objComputeCluster.AddJob((objJob)) WScript.Echo "Job ID: " & intJobID Set objTask = objComputeCluster.CreateTask objTask.Name = "Task1" objTask.CommandLine = strCommandLine objTask.Stdout = strWorkDir & strNode & "-Task1Out.txt" objTask.Stderr = strWorkDir & strNode & "-Task1Err.txt" objTask.WorkDirectory = strWorkDir intTaskID = objComputeCluster.AddTask(objJob.ID, (objTask)) WScript.Echo "Task ID: " & intTaskID objComputeCluster.SubmitJob intJobID, strUsername, strPassword, _ blnIsConsole, intHandle WScript.Echo vbCrLf & "Submitted Job: " & intJobID & " " & objJob.Name & _ " on the following nodes:" arrNodes = Split(strSelectedNodes, ",") For Each strNode In arrNodes WScript.Echo " " & strNode Next Else WScript.Echo vbCrLf & "No nodes met criteria. Job not submitted." End If