Installation Guide - GPU
Copyright © 2021 by Symetry, Inc. 14 Pine Street, Ste 6 Morristown, NJ 07960 All Rights Reserved April 15th, 2021
Introduction
Assumptions
You have a working installation of SymetryML with Jetty. For information about performing this task, refer to the Installation Guide.
Your SymetryML license allows you to use GPU or MultiGPU SymetryML projects.
GPU Support Requirements
Requirement
Description
CUDA Library
The SymetryML software is currently certified CUDA Version 10.x
Operating System
CentOS 7.x or Amazon Linux based on RedHat 7.x.
Supported GPUs
NVIDIA GPU with Compute Capability >= 3.5
Configuration Information
SymetryML is a Java software that relies on certain native library (.so files) to work in tandem with NVIDIA GPU.
Using SymetryML Native Library
As mentioned in the Installation Guide once you decompress the symetry.tar.gz
archive into /opt/symetry
, you will install the necessary libraries to use NVIDIA gpus into the /opt/symetry/nativelib
folder. Your /opt/symetry/nativelib
folder should look like that:
├── nativelib
│ ├── libblas.so -> libmkl_rt.so
│ ├── libblas.so.3 -> libmkl_rt.so
│ ├── libiomp5.so
│ ├── liblapack.so -> libmkl_rt.so
│ ├── liblapack.so.3 -> libmkl_rt.so
│ ├── libmkl_avx.so
│ ├── libmkl_core.so
│ ├── libmkl_def.so
│ ├── libmkl_gnu_thread.so
│ ├── libmkl_intel_lp64.so
│ ├── libmkl_intel_thread.so
│ ├── libmkl_rt.so
│ └── libsym-gpu.so
Additionally To make SymetryML works with GPU perform the following:
Download CUDA 10 or 11 from NVIDIA
Install CUDA, and then use the
nvidia-smi
command to verify that CUDA is working. Example for Centos 7:
# download cuda
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
# run the installer
chmod +x cuda_10.2.89_440.33.01_linux.run
./cuda_10.2.89_440.33.01_linux.run
# verify that CUDA was correctly installed
nvdia-smi
After a successful CUDA installation
nvidia-smi
should output something like:
[user@symetry ~]# nvidia-smi
Fri May 26 11:32:04 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... On | 00000000:00:1E.0 Off | 0 |
| N/A 41C P0 27W / 300W | 0MiB / 16384MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Be sure that
jetty
userLD_LIBRARY_PATH
is set correctly.
# edit /home/jetty/.bashrc
sudo su jetty
cd
emacs .bashrc
# Add the following lines to /home/jetty/.bashrc
ANT_HOME=/opt/ant
export ANT_HOME
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/opt/symetry/nativelib
export LD_LIBRARY_PATH
If you encounter problem please do the following:
Use tool like
ldd /opt/system/nativelib/lib-symgpu.so
to pinpoint dynamic any linker problems. Make sure to run the command as thejetty
user.Make sure the
jetty
userLD_LIBRARY_PATH
environment variable is correctly set.
SymetryML Memory Requirements
Please consults the Technical Requirements for more information on memory requirement for various project sizes. Note that with SymetryML, project size is determined by the number of attributes not the number of rows.
SymetryML Configuration and GPU
As documented in the Installation Guide, the /opt/symetry/symetry-rest.txt
configuration file contains various properties that alter the SymetryML behavior. The following table lists the properties that are relevant to using SymetryML with NVIDIA GPUs.
Property
Description
rtlm.option.rtlm.gpu.matrix.minsize
Minimum matrix size to use GPU. Matrix operations like multiplication, inversion, etc are used when SymetryML builds models. Other operation like PCA and SVD also can leverage GPU. Recommended values : 512
rtlm.option.rtlm.gpu.update.minsize
Minimum size to use GPU when updating a SymetryML project. Recommended values:64 to 128
rtlm.mgpu.num.gpus
The maximum number of GPUs that can be used on a server in a MultiGPU project.
rtlm.mgpu.runon.one
Enabling that specifies that a MultiGPU project can run on a server with only 1 GPU. '1' enables and '0' disables. Default: '0'
Last updated