Quick start for Linux

The following chapter presents an installation of each of the GPUBox components on a simple, exemplary infrastructure. If you want to read more about different installation types you can skip this chapter and go right to the Installation section.

The aim of the Quick start chapter is to successfully launch the GPUBox software as soon as possible using default parameters. Do not treat this section as the summary of the documentation.

Scenario details

The following step-by-step tutorial will be performed on the exemplary infrastructure consisting of two systems working within the same TCP/IP network:
OS GPUBox component Additional hardware IP address
System #1 Linux OServer and GPUServer At least 1 x GPU 203.0.113.1
System #2 Linux or Windows Client - 203.0.113.50
System #1 fulfills the role of OServer and GPUServer in the GPUBox infrastructure. System #2 is a Client and can also be installed on a virtual machine. We will demonstrate the GPUBox Client installation on the Linux and Windows operating systems. The exemplary application that will be run on system #2 is Blender.
In this scenario for OServer and GPUServer, we will use the command-line installation from the root account.

By using the command-line installation mode, you accept the End User Licence Agreement. automatically.

Before you start - checklist

Assure that every item on the list is fulfilled:
  • All systems are 64-bit.
  • Systems are working within the same network address space
  • You have root privileges on the Linux operating system and administrator privileges on the Windows system
  • Prepare license details.
  • System #1 must have installed at least one GPU and it must be CUDA-enabled
  • Installed wget application on System #1
  • You will the following ports available and open on firewall:
    • On System #1:
      • Output: TCP:6555,8080,8081,8082,9393 and UDP:53
      • Input: TCP:8080,8081,8082,9393-9500
    • On System #2:
      • Output: TCP:8081,8082,9393-9500

    If some of the listed ports are not open, the gpubox_firewall.sh script used in this tutorial will open them for you. Please be aware, that new configuration is not saved and all changes introduced by the script will be removed at the system's restart.

Install and run OServer

  • Download the OServer installation package on System #1

    The gpubox-oserver-<VERSION>.run can be downloaded from the link provided to you in an email after purchasing the license. Download it on System #1 to serve as the OServer in the infrastructure. Save it in $HOME directory.

  • Prepare the OServer parameters file
    • Create the $HOME/oserver.prm file on System #1.
    • Copy and paste the following content to $HOME/oserver.prm:
    • oserver_security_plugin="security1"
      oserver_security_config="/usr/local/gpubox-oserver/data/security.conf"
      oserver_accounting_plugin="defaultAccounting"
      oserver_accounting_config="/usr/local/gpubox-oserver/data/accounting.conf"
      oserver_rest_bind="0.0.0.0:8081,8082s"
      oserver_ssl_cert_path="/usr/local/gpubox-oserver/etc/ssl_cert_example.pem"
      auth_token="d6e459844365274877ca5949b144f076"
      oserver_db_path="/usr/local/gpubox-oserver/data/oserver.db"
      oserver_log_path="/usr/local/gpubox-oserver/log/oserver.log"
      auth_token="d6e459844365274877ca5949b144f076"
      oserver_db_path="/usr/local/gpubox-oserver/data/oserver.db"
      oserver_log_path="/usr/local/gpubox-oserver/log/oserver.log"
      oserver_log_level="TRACE"
      oserver_max_gpu_per_user=10
      oserver_max_users_per_gpu=5
      oserver_max_gpu_per_user_per_ip=10
      oserver_gpu_count_info="yes"
      oserver_allocation_option="free"
      oserver_webfiles_path="/usr/local/gpubox-oserver/webui"
      oserver_installfiles_path="/usr/local/gpubox-oserver/install"
      oserver_datafiles_path="/usr/local/gpubox-oserver/data"
      daemon_user=gpubox
      system_type=Generic
      oserver_license_uid="license-uid" #CHANGE ME
      oserver_license_key="00000000000000000000000000000000" #CHANGE ME
      
    • Set the parameters marked with #CHANGE ME accordingly to the IP address of System #1 and your license details and save the changes.
  • Install OServer using the prepared parameters file:
    Issue the command from the root account:
  • # sh $HOME/gpubox-oserver-<VERSION>.run -- -c $HOME/oserver.prm -s
  • If there is an active firewall on System #1 run the gpubox_firewall.sh script for OServer
    Issue the command to set the firewall rule:
  • # sh /usr/local/gpubox-oserver/bin/gpubox_firewall.sh oserver
  • Start OServer:
  • OServer was installed for Generic Linux with the system_type=Generic parameter. To start OServer issue command:
    # /usr/local/gpubox-oserver/bin/oserverd.sh
    
  • Verify if OServer is running:
  • # ps -Af | grep oserver    
    gpubox    8965     1  8 11:42 ?        00:00:31 /usr/local/gpubox-oserver/bin/oserver -d -u gpubox
    
    # cat /usr/local/gpubox-oserver/log/oserver.log
    [2013-08-01 11:49:56.056713] <INFO    > OSVC-SL-50A oserver_log_path  = /usr/local/gpubox-oserver/log/oserver.log
    [2013-08-01 11:49:56.056753] <INFO    > OSVC-SL-50B oserver_log_level = TRACE
    [2013-08-01 11:49:56.056781] <INFO    > OSVC-SL-50C Logging started
    [2013-08-01 11:49:56.058137] <NOTICE  > OSVC-IC-000 Version: 0.8.900
    [2013-08-01 11:49:56.058375] <INFO    > OSVC-IC-50C oserver_rest_bind = 0.0.0.0:8081,8082s
    [2013-08-01 11:49:56.058405] <INFO    > OSVC-IC-50D oserver_security_plugin = security1
    [2013-08-01 11:49:56.058433] <INFO    > OSVC-IC-50W oserver_security_config = /usr/local/gpubox-oserver/data/security.conf
    [2013-08-01 11:49:56.058459] <INFO    > OSVC-IC-50S oserver_accounting_plugin = defaultAccounting
    [2013-08-01 11:49:56.058487] <INFO    > OSVC-IC-50Q oserver_accounting_config = /usr/local/gpubox-oserver/data/accounting.conf
    [2013-08-01 11:49:56.058513] <INFO    > OSVC-IC-50E oserver_max_gpu_per_user = 10
    [2013-08-01 11:49:56.058552] <INFO    > OSVC-IC-50F oserver_max_gpu_per_user_per_ip = 10
    [2013-08-01 11:49:56.058580] <INFO    > OSVC-IC-50G oserver_max_users_per_gpu = 5
    [2013-08-01 11:49:56.058607] <INFO    > OSVC-IC-50H Infrastructure token presented
    [2013-08-01 11:49:56.058634] <INFO    > OSVC-IC-50I oserver_gpu_count_info = yes
    [2013-08-01 11:49:56.058661] <INFO    > OSVC-IC-50K oserver_webfiles_path = /usr/local/gpubox-oserver/webui
    [2013-08-01 11:49:56.058688] <INFO    > OSVC-IC-50L oserver_installfiles_path = /usr/local/gpubox-oserver/install
    [2013-08-01 11:49:56.058714] <INFO    > OSVC-IC-50M oserver_allocation_option = free
    [2013-08-01 11:49:56.058740] <INFO    > OSVC-IC-50R oserver_datafiles_path = /usr/local/gpubox-oserver/data
    [2013-08-01 11:49:56.058827] <INFO    > OSVC-OS-52I oserver_ssl_cert_path = /usr/local/gpubox-oserver/etc/ssl_cert_example.pem
    [2013-08-01 11:49:56.317951] <NOTICE  > OSVC-OD-610 Connected to database /usr/local/gpubox-oserver/data/oserver.db
    [2013-08-01 11:49:56.318745] <TRACE   > DBHC-CK-050 Database checked successfully
    [2013-08-01 11:49:56.318789] <INFO    > OSVC-OD-50Z Database configuration has been checked successfully
    [2013-08-01 11:49:56.320523] <INFO    > OSVC-PS-500 Plugin security1 loaded
    [2013-08-01 11:49:57.321241] <INFO    > OSVC-PS-510 The security plugin security1 received the configuration
    [2013-08-01 11:49:57.322132] <NOTICE  > OSVC-IC-69A Infrastructure token belongs to userid: gpubox, username: GPUBox administrator
    [2013-08-01 11:49:57.460729] <INFO    > OSVC-PA-500 Plugin defaultAccounting loaded
    [2013-08-01 11:49:57.460819] <INFO    > DACC-WA-59A Accounting output file opened successfully: /usr/local/gpubox-oserver/data/accounting.conf
    [2013-08-01 11:49:57.460872] <INFO    > OSVC-PA-510 Accounting plugin defaultAccounting received the configuration
    [2013-08-01 11:50:00.499761] <NOTICE  > OSVC-OS-600 OServer is ready to accept connections
    [2013-08-01 11:50:00.500238] <INFO    > OSVC-M1-50B Directory /usr/local/gpubox-oserver/data/monitor1 for Monitor1 created
    [2013-08-01 11:50:00.500272] <INFO    > OSVC-M1-50A Monitor1 started
    
  • Verify if OServer is listening on dedicated ports:
  • # lsof -i -P | grep oserver
    oserver   11261  gpubox    4u  IPv4 58162673      0t0  TCP *:8081 (LISTEN)
    oserver   11261  gpubox    5u  IPv4 58162674      0t0  TCP *:8082 (LISTEN)
    

    Install and run GPUServer

  • Download the GPUServer installation package on System #1

  • Issue the command to download the GPUServer installation package from OServer (in this scenario the OServer IP address is 203.0.113.1:8081):
    # wget --header="X-Auth-Token: d6e459844365274877ca5949b144f076" http://203.0.113.1:8081/install/admin/gpubox-gpuserver-<VERSION>.run
    Save it in your $HOME directory.
  • Prepare the GPUServer parameters file

    • Create the $HOME/gpuserver.prm file on System #1.
    • Copy and paste the following content to $HOME/gpuserver.prm:
    • gpuserver_bind_port=9393
      gpuserver_bind_ip="203.0.103.1" #CHANGE ME
      gpuserver_rest_bind="203.0.103.1:8080" #CHANGE ME
      gpuserver_rest_oserver_address="http://203.0.103.1:8081" #CHANGE ME
      auth_token="d6e459844365274877ca5949b144f076"
      gpuserver_gpus="all"
      gpuserver_log_path="/usr/local/gpubox-gpuserver/log/gpuserver.log"
      gpuserver_log_level="TRACE"
      gpuserver_install_dir="/usr/local/gpubox-gpuserver"
      gpuserver_infiniband_enabled="yes"
      daemon_user="gpubox"
      system_type="Generic"
      
    • Set the parameters marked with #CHANGE ME accordingly to the IP address of System #1
  • Install GPUServer using the prepared parameters file:
    Issue the command from the root account:
  • # sh $HOME/gpubox-gpuserver-<VERSION>.run -- -c -$HOME/gpuserver.prm -s
  • If there is an active firewall on System #1 run the gpubox_firewall.sh script from the OServer installation directory for GPUServer
    Issue the command to set the firewall rule:
  • # sh /usr/local/gpubox-oserver/bin/gpubox_firewall.sh gpuserver
  • Start GPUServer:
  • GPUServer was installed for Generic Linux with the system_type=Generic parameter. To start GPUServer issue command:
    # /usr/local/gpubox-gpuserver/bin/gpuserverd.sh
    
  • Verify if GPUServer is running:
  • The following command should show two processes: the primary server (pid: 16901) and the secondary server (pid: 16902).
    # ps -Af | grep gpuserver    
    gpubox   16901     1  0 12:05 ?        00:00:00 /usr/local/gpubox-gpuserver/bin/gpuserver -d -u gpubox
    gpubox   16902 16901  0 12:05 ?        00:00:00 /usr/local/gpubox-gpuserver/bin/gpuserver -d -u gpubox
    
  • Verify if the GPU devices are registered to OServer:
  • # cat /usr/local/gpubox-gpuserver/log/gpuserver.log 
    [2013-08-01 12:05:35.583151] <INFO    > GBSC-SL-50A [P:16901] gpuserver_log_path  = /usr/local/gpubox-gpuserver/log/gpuserver.log
    [2013-08-01 12:05:35.583191] <INFO    > GBSC-SL-50B [P:16901] gpuserver_log_level = TRACE
    [2013-08-01 12:05:35.583273] <INFO    > GBSC-CF-51B [P:16901] Configuration file: /usr/local/gpubox-gpuserver/log/gpuserver.log
    [2013-08-01 12:05:35.583300] <NOTICE  > GBSC-GI-600 [P:16901] Version: 0.8.900
    [2013-08-01 12:05:35.583452] <INFO    > GBSC-GI-51A [P:16901] GPUServer's hostname = SYSTEM1
    [2013-08-01 12:05:35.583480] <INFO    > GBSC-GI-51B [P:16901] gpuserver_bind_ip = 203.0.103.1
    [2013-08-01 12:05:35.583511] <INFO    > GBSC-GI-51C [P:16901] gpuserver_bind_port = 9393
    [2013-08-01 12:05:35.583548] <INFO    > GBSC-GI-51D [P:16901] gpuserver_rest_bind = 203.0.103.1:8080
    [2013-08-01 12:05:35.583577] <INFO    > GBSC-GI-51F [P:16901] gpuserver_rest_oserver_address = http://203.0.103.1:8081/
    [2013-08-01 12:05:35.583604] <INFO    > GBSC-GI-51G [P:16901] gpuserver_infiniband_enabled = yes
    [2013-08-01 12:05:35.583662] <INFO    > GBSC-GI-52B [P:16901] All GPUs will be used
    [2013-08-01 12:05:35.584604] <DEBUG   > GBSC-SR-30A [R:16902] Starting RESTful service on:203.0.103.1:8080
    [2013-08-01 12:05:35.590511] <NOTICE  > GBSC-SR-60A [R:16902] Rest service bound on:203.0.103.1:8080, PID: 16902
    [2013-08-01 12:05:35.683795] <NOTICE  > GBSC-SC-60A [C:16903] Found GPU device ID:0, name: GeForce GTX 690
    [2013-08-01 12:05:35.725344] <NOTICE  > GBSC-SC-60A [C:16903] Found GPU device ID:1, name: GeForce GTX 690
    [2013-08-01 12:05:36.584641] <NOTICE  > GBSC-SG-61D [P:16901] GPUServer is ready
    [2013-08-01 12:05:37.365719] <NOTICE  > GBSC-SC-61A [C:16903] Initial GPUs configuration sent to OServer: http://203.0.103.1:8081/
    [2013-08-01 12:05:37.381379] <INFO    > GBSC-CX-50A [P:16901] Subprocess 16903 ended
    [2013-08-01 12:05:40.317418] <INFO    > GBSC-SG-50A [P:16901:0000001] Connection accepted from:203.0.103.1:33151
    [2013-08-01 12:05:40.317500] <INFO    > GBSC-SG-52A [P:16901:0000001] Heartbeat to 203.0.103.1 started
    
    # cat /usr/local/gpubox-oserver/log/oserver.log 
    [2013-08-01 11:50:00.904038] <INFO    > ROSC-HH-500 [0000001] New session [139868804400896]: put:http://203.0.103.1:8081/gpu, IP: 203.0.103.1:58216
    [2013-08-01 11:50:00.905314] <INFO    > ROSC-AX-51A [0000001] Access granted to superuser gpubox, GPUBox administrator
    [2013-08-01 11:50:02.412499] <TRACE   > DBHC-GS-05A GPU device 0 from IP 203.0.103.1 changed status to FREE
    [2013-08-01 11:50:02.540322] <TRACE   > DBHC-GS-05A GPU device 1 from IP 203.0.103.1 changed status to FREE
    [2013-08-01 11:50:02.540788] <DEBUG   > ROSC-CW-35X [0000001] HTTP Status Code 201
    

    Install Client and download token

    When System #2 is Linux

    In this part we are going to use a non-root account for every action except for the firewall settings.

  • Download the Client installation package on System #2

  • Issue the command to download the GPUServer installation package from OServer (in this scenario the OServer IP address is 203.0.113.1:8081):
    $ wget http://203.0.113.1:8081/install/gpubox-client-<VERSION>.run

    Save it in your $HOME directory.

  • Install Client from the command line in the $HOME/gpubox-client directory
  • $ sh $HOME/gpubox-client-<VERSION>.run -- -d $HOME/gpubox-client -s
  • If there is an active firewall on System #2 copy the gpubox_firewall.sh script from the usr/local/gpubox-oserver/bin/ directory on System #1 and launch it.
    If you copy it to the $HOME directory issue the command to set the firewall rule:
  • # sh $HOME/gpubox_firewall.sh client
  • Download token for the default gpubox user account with password gpubox

    Open the new terminal session and issue the command:

    $ gpubox token -u=gpubox -o=https://203.0.113.1:8082
    Enter password: ******
    File /home/bob/.gpubox does not exist and it will be created
    Login successful.
  • When System #2 is Windows

  • Download the installation package

    Open the web browser with the address https://203.0.113.1:8082, login with the userid gpubox and the password gpubox.

    Default OServer's SSL certificate is self-signed, this may require to accept the certificate.

    go to OServer and then display Files

    and download the gpubox_client_<VERSION>.exe.

  • Install Client for Windows
    Open the gpubox_client_install_<VERSION>.exe installation package as an administrator, you should see the first screen of the installation dialog:
    Press Next to move to the next step, which is the License Agreement:
    Read the terms of the EULA. If you agree, accept by pressing I Agree to proceed to the Choose Components step.
    Check the components you wish install (Base Components are required) and proceed to the Choose Install Location step by pressing Next.
    Press Install to use the default \Program files\Renegatt\GPUBox Client directory and finish the installation.

    Once the installation is completed you can Close the installer.

  • Download the token for the default gpubox user account with password gpubox
    Launch the gpubox.bat file from the \Program files\Renegatt\GPUBox\ directory and issue the command :
    > gpubox token -u=gpubox -o=http://203.0.113.1:8081
    File C:\Users\bob\AppData\Local\config.gpubox does not exist and it will be created
    Login successful.
  • Allocate the GPUs

    When System #2 is Linux

    Issue the gpubox a 1 [NUMBER] command where [NUMBER] is a number of the GPUs from GPUServer. If there are 4 GPUs provided by GPUServer the command would be:
    $ gpubox a 1 4
    +--+------------------+-------------+--------------+----------+--------------------+
    |ID|GPU name          |PCI          |Client's IP   |Status    |Since               |
    +--+------------------+-------------+--------------+----------+--------------------+
    |1 |GeForce GTX 690   |710C:03:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    |2 |GeForce GTX 690   |710C:04:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    |3 |GeForce GTX 690   |710C:07:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    |4 |GeForce GTX 690   |710C:08:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    +--+------------------+-------------+--------------+----------+--------------------+

    When System #2 is Windows

    Launch the gpubox.bat file from the \Program files\Renegatt\GPUBox\ directory and issue the gpubox a 1 [NUMBER] command where [NUMBER] is a number of the GPUs from GPUServer. If there are 4 GPUs provided by GPUServer the command would be:
    > gpubox a 1 4
    +--+------------------+-------------+--------------+----------+--------------------+
    |ID|GPU name          |PCI          |Client's IP   |Status    |Since               |
    +--+------------------+-------------+--------------+----------+--------------------+
    |1 |GeForce GTX 690   |710C:03:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    |2 |GeForce GTX 690   |710C:04:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    |3 |GeForce GTX 690   |710C:07:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    |4 |GeForce GTX 690   |710C:08:00.0 |203.0.113.154 |SHARED    |2013-07-24 13:36:49 |
    +--+------------------+-------------+--------------+----------+--------------------+

    Run a supported application

    In this scenario we are going to use Blender as an exemplary supported application. If you do not have Blender installed, download the installation package from the website http://www.blender.org/download/ and install it on System #2 accordingly to the instruction.

    When System #2 is Linux

  • Run Blender.
  • Go to File,User preferences and open the System tab.
  • Previously allocated GPUs should be visible in the CUDA device list and ready to be used.
  • When System #2 is Windows

    Version 0.8.833
  • Copy <CLIENT_INSTALLATION_DIR>\lib\nvcuda.dll to Blender installation directory, for example c:\Program files\Blender Foundation\Blender
  • Run Blender.
  • Go to File,User preferences and open the System tab.
  • Previously allocated GPUs should be visible in the CUDA device list and ready to be used.