#Region "Microsoft.VisualBasic::2e8d9e242aa1480243ef5ae298fcd2b3, Distribute_computing\HPC_cluster\Taskhost.vb" ' Author: ' ' asuka (amethyst.asuka@gcmodeller.org) ' xie (genetics@smrucc.org) ' xieguigang (xie.guigang@live.com) ' ' Copyright (c) 2018 GPL3 Licensed ' ' ' GNU GENERAL PUBLIC LICENSE (GPL3) ' ' ' This program is free software: you can redistribute it and/or modify ' it under the terms of the GNU General Public License as published by ' the Free Software Foundation, either version 3 of the License, or ' (at your option) any later version. ' ' This program is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU General Public License for more details. ' ' You should have received a copy of the GNU General Public License ' along with this program. If not, see . ' /********************************************************************************/ ' Summaries: ' Class Taskhost_d ' ' Constructor: (+1 Overloads) Sub New ' Function: FromEnvironment ' ' ' /********************************************************************************/ #End Region Imports System.Runtime.CompilerServices Imports System.Text Imports Microsoft.VisualBasic.CommandLine Imports Microsoft.VisualBasic.CommandLine.InteropService Imports Microsoft.VisualBasic.ApplicationServices ' Microsoft VisualBasic CommandLine Code AutoGenerator ' assembly: ..\build\Taskhost.d.exe ' ' // ' // Taskhost.d Daemon Process ' // ' // VERSION: 1.0.0.0 ' // ASSEMBLY: Taskhost.d, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ' // COPYRIGHT: Copyright (c) I@xieguigang.me 2016 ' // GUID: 9de7a49c-d3fe-4993-9014-7f5f000e5314 ' // BUILT: 1/1/2000 12:00:00 AM ' // ' ' ' < sciBASIC.ComputingServices.Taskhost.Daemon.Program > ' ' ' SYNOPSIS ' Taskhost.d command [/argument argument-value...] [/@set environment-variable=value...] ' ' All of the command that available in this program has been list below: ' ' /deploy: ' /parallel: Run task parallel ' ' ' ---------------------------------------------------------------------------------------------------- ' ' 1. You can using "Taskhost.d ??" for getting more details command help. ' 2. Using command "Taskhost.d /CLI.dev [---echo]" for CLI pipeline development. ' 3. Using command "Taskhost.d /i" for enter interactive console mode. Namespace CLI ''' ''' sciBASIC.ComputingServices.Taskhost.Daemon.Program ''' ''' Public Class Taskhost_d : Inherits InteropService Public Const App$ = "Taskhost.d.exe" Sub New(App$) MyBase._executableAssembly = App$ End Sub ''' ''' Create an internal CLI pipeline invoker from a given environment path. ''' ''' A directory path that contains the target application ''' Public Shared Function FromEnvironment(directory As String) As Taskhost_d Return New Taskhost_d(App:=directory & "/" & Taskhost_d.App) End Function ''' ''' ```bash ''' /deploy ''' ``` ''' ''' Public Function Deployed() As Integer Dim cli = GetDeployedCommandLine(internal_pipelineMode:=True) Dim proc As IIORedirectAbstract = RunDotNetApp(cli) Return proc.Run() End Function Public Function GetDeployedCommandLine(Optional internal_pipelineMode As Boolean = True) As String Dim CLI As New StringBuilder("/deploy") Call CLI.Append(" ") Call CLI.Append($"/@set --internal_pipeline={internal_pipelineMode.ToString.ToUpper()} ") Return CLI.ToString() End Function ''' ''' ```bash ''' /parallel --master <port> [--host <localhost, default=localhost> --socket <tempdir> --imageName <docker_imageName>] ''' ``` ''' Run task parallel ''' ''' ''' The host location of the master node, default is localhost, means parallel computing on one host node, different host ip means cluster computing. ''' ''' The tcp port of the master node that opened to current parallel slave node. ''' ''' A data location on shared storage of your cluster nodes if run parallel in cluster computing mode. ''' ''' The docker image name if your cluster application is deployed via docker. ''' Public Function Parallel(master As String, Optional host As String = "localhost", Optional socket As String = "", Optional imagename As String = "") As Integer Dim cli = GetParallelCommandLine(master:=master, host:=host, socket:=socket, imagename:=imagename, internal_pipelineMode:=True) Dim proc As IIORedirectAbstract = RunDotNetApp(cli) Return proc.Run() End Function Public Function GetParallelCommandLine(master As String, Optional host As String = "localhost", Optional socket As String = "", Optional imagename As String = "", Optional internal_pipelineMode As Boolean = True) As String Dim CLI As New StringBuilder("/parallel") Call CLI.Append(" ") Call CLI.Append("--master " & """" & master & """ ") If Not host.StringEmpty Then Call CLI.Append("--host " & """" & host & """ ") End If If Not socket.StringEmpty Then Call CLI.Append("--socket " & """" & socket & """ ") End If If Not imagename.StringEmpty Then Call CLI.Append("--imagename " & """" & imagename & """ ") End If Call CLI.Append($"/@set --internal_pipeline={internal_pipelineMode.ToString.ToUpper()} ") Return CLI.ToString() End Function End Class End Namespace