Installing XCOMPUTE-SERVER#

XCOMPUTE-SERVER is built to run on recent Linux/x86-64 systems. Packages are built to directly install on Debian-based systems like Ubuntu, but compressed tarfiles are available to attempt installation on non-Debian Linux systems.

Prerequisites#

XCOMPUTE Account#

If you have not done so already, use your email address to sign up for an XCOMPUTE account. You will need it later to obtain a cryptographic license to enable use of XCOMPUTE-SERVER.

Hardware Requirements#

The CPU must be an x86-64 running v3 or v4 microarchitecture. V3 supports CPU features like AVX2, MOVBE, and FMA. V4 supports CPU features like AVX512. On Linux systems, to check the microarchitecture version, such as the AVX instructions provided by the CPU:

grep flags /proc/cpuinfo | head -1 | grep avx

At least one GPU (or equivalent co-processor) is required on each server host with hardware and software support for OpenCL v1.2 or later. Double-precision (FP64) support is required for both CPU and GPU, driving performance for many numerical methods.

Support for OpenCL is provided by the GPU hardware vendor and bundled with GPU support software.

NVIDIA CUDA or AMD ROCm distribute an Installable Client Driver (ICD) providing OpenCL support. The list of hardware supporting OpenCL is listed by:

 clinfo -l

Without the -l flag, the clinfo command lists detailed OpenCL features of the hardware. If it is not already installed, it is available from most package managers such as: sudo apt install clinfo or equivalent.

For details installing OpenCL for Nvidia, AMD, or Intel, see Appendix A: Installing OpenCL Drivers below.

Software Requirements#

Currently, XCOMPUTE-SERVER is provided as a Debian package for recent Debian/Ubuntu systems, specifically Ubuntu 20.04 or later, or Debian 11 or later. A compressed tarfile is also provided for those who want to attempt installation on Fedora or other Linux/Unix variants; using the tarfile will require moving some files or providing symlinks to locations expected by the specific variant. XCOMPUTE-SERVER has minimal runtime library requirements, but require modern GLIBC and POSIX implementations.

You can check the Linux distro and version by the following:

egrep 'ID=|VERSION_ID=' /etc/os-release

Download Package#

Login to your XCOMPUTE account. On the Download page, review the End-User License Agreement (EULA), if you have not done so, and select a version of XCOMPUTE-SERVER that is appropriate for your server host. (Note that XCOMPUTE-SERVER comes in two editions: Standard and Educational.)

License Key and Fingerprint#

As your XCOMPUTE-SERVER download completes, you will be asked whether to continue to the subscription page for XCOMPUTE-SERVER. Unless you already have an unassigned license key, select “OK” to continue. Complete the purchase of the XCOMPUTE-SERVER subscription. You will be notified by email of a new license key, including the a 32-byte fingerprint to identify the key.

The licenses that you have available to you will be listed on your user profile account page. Each has the license type (e.g., XCOMPUTE-SERVER-STD), license key fingerprint, and (if assigned) machine ID.

Alongside the package, the generated license and key file acts as a unique network identifier and can only be used on one machine. These files must be copied into a specific location to activate the software. See configuration details.

Selecting a package#

XCOMPUTE-SERVER is currently available in two forms. On the download page, they are given generic names:

  • Debian packages (.deb) for Ubuntu, Debian, and other Debian-derived systems, e.g., xcompute-server-std_25.1-latest-linux-u20_amd64.deb.

  • Compressed tarfiles (.tar.xz) for other Linux systems: xcompute-server-std_25.1-latest-linux-u20_amd64.tar.xz.

These packages were built against Ubuntu 20.04, 22.04, and 24.04, the last several long-term support (LTS) releases of Ubuntu. The specific release is denoted in the name by u20, u22, and u24. The downloaded file will have the full version ID in the filename. For example, xcompute-server-std_25.1-0319.7eb02f19-u24_amd64.deb is a Debian package with version ID 25.1-0319.7eb02f19 and built on Ubuntu 24.04.

For non-Ubuntu or Ubuntu non-LTS releases, one of the most significant factors is finding the appropriate version of libc.so.6 (found on Debian/Ubuntu systems as /lib/x86_64-linux-gnu/libc.so.6). Host-native binary executable programs on Linux depend on the versions of C library functions provided. Specifically, this means the GNU C Library (GlibC).

The Debian packages are managed by the Debian package management system, and thus may utilize pre- and post-install scripts as well as pre- and post-remove scripts.

The content of the of compressed tarfiles is the same the Debian packages, but pre/post-install/remove scripts are not executed. Thus, they require additional manual intervention.

In both cases, the packages require administrator privileges on the host system.

Installation: Ubuntu/Debian#

If a Debian package is selected for download, its name will have the form:

xcompute-server-std_25.1-...-amd64.deb

The package can be installed using apt, aptitude, or dpkg. example,

sudo apt install ./xcompute-server-std_24.1-1023.0aba1702-u20_amd64.deb

Note that for apt, the ./ in front of the package filename is mandatory. Otherwise it will try to download the package in the Debian or Ubuntu online repositories, but not find it.

When installed, the XCOMPUTE-SERVER software itself will reside under /opt/xcompute/xcserver. The user xcompute is created with home directory at /var/opt/xcompute/xcserver.

Configuration#

The installation process will generate messages like the following:

Creating system user XCOMPUTE system user ...
Config file compute.cfg is newly installed. Check its attributes in:
  /var/opt/xcompute/xcserver/compute.cfg
Config file server.cfg is newly installed. Check its attributes in:
  /var/opt/xcompute/xcserver/server.cfg
log directory created: /var/opt/xcompute/xcserver/log

These messages inform you that:

  • a user xcompute has been added to the host as a system user; that is, it has no login shell and is used for a system service.

  • new configuration files have been installed or changed.

  • a log directory has been set.

The messages relating to configuration files are highlighted in a different color so that they stand out.

A new compute.cfg will have default values for computation that you can use until you feel the need to tune them.

A new server.cfg file will show several empty fields, including admin= and fingerprint=. These must be filled in before XCOMPUTE-SERVER can be used. The admin field should be set to email address of the adminstrator or primary user of the host machine. The fingerprint will be as described above and available in the user account profile page. Optionally, you can set the input and output directories that will be used for project files provided to or synthesized by XCOMPUTE-SERVER. For example,

admin=myexample@example.com     # your registered email address (required) 
fingerprint=auth/e2718281828459045235360287471352 # your assigned fingerprint (required)
input=/home/projectdisk1        # load directory for project (recommended)
output=/home/projectdisk1       # save directory for project (recommended)

Starting the service#

As an installed Ubuntu/Debian package, XCOMPUTE runs as a service under the management of systemd via the systemctl command . Checking the status of the service can be done without admin privilege.

systemctl status xcompute

To start it,

sudo systemctl start xcompute

The start subcommand itself produces no messages. To see if it was successful, use the status subcommand. For example:

$ systemctl status xcompute
● xcompute.service - XCOMPUTE Service
     Loaded: loaded (/etc/systemd/system/xcompute.service; linked; vendor preset: enabled)
     Active: active (running) since Sat 2025-03-29 18:32:35 PDT; 18min ago
   Main PID: 233561 (xcompute-server)
      Tasks: 13 (limit: 18988)
     Memory: 21.4M
     CGroup: /system.slice/xcompute.service
             └─233561 /opt/xcompute/xcserver/bin/xcompute-server

The output should show Active: active (running). Additionally, as it starts up, the running xcompute-server process will write messages to logfiles in /var/opt/xcompute/xcserver/log. Normal informational messages are written to xcserver.log, error messages to xcserver.err. If the service does not start, the latter is a good place to look for clues. For example,

$ cd var/opt/xcompute/xcserver/log
$ tail xcserver.err
Cannot authenticate without a fingerprint. Aborting.
Authentication Failed.
A valid certificate is required to launch xcompute-server...
See https://xplicitcomputing.com/help.html for details

If it starts successfully, xcserver.log will show the software version (e.g., 25.1-...), license certificate loading, launching XCOMPUTE-SERVER, and CPU and OpenCL resources that are available. For example, the last few lines of the start-up may include:

Model name:                           Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz
CPU(s):                               16
NUMA node0 CPU(s):                    0-15
...
compute platform: NVIDIA CUDA
OpenCL 3.0 CUDA 12.4.131 (FULL_PROFILE)
...

Adding Users#

[DESCRIBE] User fingerprints.

[DESCRIBE] Guests.

Appendix A: Installing OpenCL Drivers#

OpenCL 1.2+ must be installed on your desired compute platform to run xcompute-server. An Installable Client Driver (ICD) is required to map the hardware to the OpenCL context.

It is recommended to install ‘clinfo’ first as to always know the OpenCL platform and device state (but it is also bundled with xcompute-server).

sudo apt install clinfo ocl-icd-libopencl1

Once clinfo is installed, often check the OpenCL status:

clinfo

The initial output of clinfo may look something like this:

Number of platforms                               1
  Platform Name                                   NVIDIA CUDA
  Platform Vendor                                 NVIDIA Corporation
  Platform Version                                OpenCL 3.0 CUDA 11.4.158
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_global_int32_base_atomics ...

Note that the correct vendor platform(s) and device(s) appear. If they do not, don’t panic!

Processor vendors (Intel, AMD, NVIDIA, etc) provide the ICD “drivers” for most modern CPUs and GPUs, often available for download on their website and/or through package mananagers and ppa’s.

OpenCL drivers are vendor-specific. If you’ve got a dedicated GPU, you’ll probably want to use that for compute. If you’ve got a many-core CPU and a light-weight VGA adapter, you’ll probably want CPU for compute. Sometimes both works well. There are other types of devices that also support OpenCL (such as FPGA) though those installers aren’t included here (see Xilinx, etc).

AMD’s GPU ICD#

Find and download the latest AMD-GPU-PRO package: https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-20-30

Navigate to the folder and install from command line with the following options:

./amdgpu-pro-install -y --opencl=rocm

If deploying on a headless compute-only server, it is recommended to include the --headless option to omit graphics drivers.

Following installation, it is necessary to add user xcompute (and/or $LOGNAME) to the video and render groups to enable GPU access:

sudo usermod -a -G video xcompute
sudo usermod -a -G render xcompute

NVIDIA’s GPU ICD#

For new Ubuntu versions with NVIDIA, if you have not previously installed the driver and CUDA packages, ‘clinfo’ may not show your hardware. The remedy requires a two-step process:

  1. Install the Ubuntu CUDA package:

sudo apt install nvidia-cuda-toolkit
  1. Add the Ubuntu PPA (personal package archive) for graphics drivers, and then install the NVIDIA driver.

sudo apt-add-repository ppa:graphics-drivers/ppa
sudo apt update; sudo apt upgrade
sudo apt install nvidia-driver-NNN

For Ubuntu 20.04, NNN = 470 has worked. (For Ubuntu 18.04, NNN = 396 has worked.) However, this may be card and OS-dependent. A good initial approach is to install the vendor-recommended graphics adapter driver version, and then match the OpenCL driver.

Drivers can be downloaded via https://www.nvidia.com/drivers or installed through a package manager for the corresponding NNN driver number, such as:

sudo apt install nvidia-opencl-icd-NNN

Remove old/bad drivers and reinstall:

sudo apt purge nvidia*

followed by

sudo apt install nvidia-NNN

Intel’s CPU ICD#

Please see https://software.intel.com/en-us/articles/opencl-drivers for more information.

Generally, Mesa compatibility drivers are strongly not recommended for compute.

Often changes to GPU drivers will require reboot for changes to take effect.