Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
from rbc.omniscidb import RemoteOmnisci
omnisci = RemoteOmnisci(user='admin', password='HyperInteractive',
host='127.0.0.1', port=6274, dbname='omnisci')omnisci = RemoteOmnisci(connection=con)omnisci.sql_execute('drop table if exists simple_table')
omnisci.sql_execute('create table if not exists simple_table (x FLOAT, i INT);');
omnisci.load_table_columnar('simple_table',
x = [1.1, 1.2, 1.3, 1.4, 1.5],
i = [0, 1, 2, 3, 4])@omnisci('float(float)', 'int(int)')
def myincr(x):
return x + 1omnisci.register()descr, result = omnisci.sql_execute('SELECT x, myincr(x) FROM simple_table')
for x, x1 in result:
print(f'x={x:.4}, x1={x1:.4}')x=1.1, x1=2.1
x=1.2, x1=2.2
x=1.3, x1=2.3
x=1.4, x1=2.4
x=1.5, x1=2.5@omnisci('int(Cursor<float>, float, RowMultiplier, OutputColumn<float>)')
def incrby(x, dx, m, y):
for i in range(len(x)):
y[i] = x[i] + dx
return len(x)
omnisci.register()descr, result = omnisci.sql_execute('''
SELECT * FROM TABLE(INCRBY(CURSOR(SELECT x FROM simple_table),
CAST(2.3 AS FLOAT), 1))
''')
for y, in result:
print(f'y={y:.4}')y=3.4
y=3.5
y=3.6
y=3.7
y=3.8conda install -c conda-forge rbc
# or to install rbc to a new environemnt, run
conda create -n rbc -c conda-forge rbc
conda activate rbc
# check if rbc installed succesfully
python -c 'import rbc; print(rbc.__version__)'pip install rbc-project
# check if rbc installed succesfully
python -c 'import rbc; print(rbc.__version__)'conda create -n omniscidb omniscidb
conda activate omniscidb
# or for CUDA enabled omniscidb, use
conda create -n omniscidb-cuda omniscidb=*_cuda
conda activate omniscidb-cudaomnisci_server --version# Create DB, run only once
mkdir -p omnisci_data
omnisci_initdb omnisci_data
# Start server:
omnisci_server --data=omnisci_data --enable-runtime-udf --enable-table-functions
# CPU version
# https://hub.docker.com/r/omnisci/core-os-cpu
docker run \
-d \
--name omnisci \
-p 6274:6274 \
-v /home/username/omnisci-storage:/omnisci-storage \
omnisci/core-os-cpu
# GPU version
# https://hub.docker.com/r/omnisci/core-os-cuda
docker run \
--runtime=nvidia \
-d \
--name omnisci \
-p 6274:6274 \
-v /home/username/omnisci-storage:/omnisci-storage \
omnisci/core-os-cudafrom rbc.omniscidb import RemoteOmnisci
omnisci = RemoteOmnisci(user='admin', password='HyperInteractive',
host='127.0.0.1', port=6274, dbname='omnisci')@omnisci('int32(int32)')
def incr(i):
return i + 1wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
source $HOME/miniconda3/bin/activate
conda init bash # or zsh when on macOS Catalinaconda env create -n rbc-dev \
-f https://raw.githubusercontent.com/Quansight/pearu-sandbox/master/conda-envs/rbc-dev.yamlconda env create -n omniscidb-dev \
-f https://raw.githubusercontent.com/Quansight/pearu-sandbox/master/conda-envs/omniscidb-dev.yamlconda env create -n omniscidb-cuda-dev \
-f https://raw.githubusercontent.com/Quansight/pearu-sandbox/master/conda-envs/omniscidb-dev.yamlsudo mkdir -p /usr/local/src/cuda-installers
cd /usr/local/src/cuda-installers
sudo wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run
sudo bash cuda_11.0.3_450.51.06_linux.run --toolkit --toolkitpath=/usr/local/cuda-11.0.3/ --installpath=/usr/local/cuda-11.0.3/ --override --no-opengl-libs --no-man-page --no-drm --silent
sudo sh /usr/local/src/cuda-installers/cuda_11.0.3_450.51.06_linux.run
┌──────────────────────────────────────────────────────────────────────────────┐
│ CUDA Installer │
│ - [X] Driver │
│ [X] 450.51.06 │
│ + [ ] CUDA Toolkit 11.0 │
│ [ ] CUDA Samples 11.0 │
│ [ ] CUDA Demo Suite 11.0 │
│ [ ] CUDA Documentation 11.0 │
│ Options │
│ Install │
...
# ^--- X-select only Driver and PRESS Install
mkdir -p ~/git/xnd-project
cd ~/git/xnd-project
# If you are a member of xnd-project organization, use
git clone git@github.com:xnd-project/rbc.git
# else fork https://github.com/xnd-project/rbc and clone your rbc fork,
# or use
git clone https://github.com/xnd-project/rbc.gitmkdir -p ~/git/omnisci
cd ~/git/omnisci
# If you are a member of omnisci organization, use
git clone git@github.com:omnisci/omniscidb-internal.git
# Otherwise, fork https://github.com/omnisci/omniscidb and clone the fork.
#
# Or use
git clone https://github.com/omnisci/omniscidb.gitcd ~/git/omnisci/
wget https://raw.githubusercontent.com/Quansight/pearu-sandbox/master/working-envs/activate-omniscidb-internal-dev.shcd ~/git/omnisci/
wget https://raw.githubusercontent.com/Quansight/pearu-sandbox/master/set_cuda_env.sh
sudo ln -s ~/git/omnisci/set_cuda_env.sh /usr/local/cuda/env.shcd ~/git/xnd-project/rbc
conda activate rbc-dev
python setup.py develop
# Possible commands for running rbc tests
pytest -sv -r A rbc/tests
pytest -sv -r A rbc/tests -x -k <test function># File: client.conf
[user]
# OmniSciDB user name
name: admin
# OmniSciDB user password
password: HyperInteractive
[server]
# OmniSciDB server host name or IP
host: localhost
# OmniSciDB server port
port: 6274# Linux, macOS:
OMNISCI_CLIENT_CONF=$HOME/.config/omnisci/client.conf
# Windows:
OMNISCI_CLIENT_CONF=%UserProfile/.config/omnisci/client.conf
OMNISCI_CLIENT_CONF=%AllUsersProfile/.config/omnisci/client.confcd ~/git/omnisci/omniscidb-internal # or git/omnisci/omniscidb
source ~/git/omnisci/activate-omniscidb-internal-dev.sh
mkdir -p build && cd build
cmake -Wno-dev $CMAKE_OPTIONS_CUDA ..
make -j $NCORESmkdir tmp && bin/initdb tmp
make sanity_testsmkdir data && bin/initdb data
bin/omnisci_server --enable-runtime-udf --enable-table-functionstypedef struct {
T* data; // contiguous memory block
int64_t size;
int8 is_null; // boolean values in omniscidb are represented as int8 variables
} Array;from numba import types as nb_types
from rbc.omnisci_backend import Array
@omnisci('double[](int64)')
def create_array(size):
array = Array(size, nb_types.double)
for i in range(size):
array[i] = nb_types.double(i)
return array@omnisci('double(double[], int64)')
def get_array_member(array, idx):
return array[idx]from numba import types as nb_types
import rbc.omnisci_backend as omni
@omnisci('double[](int64)')
def zero_array(size):
return omni.zeros(size, nb_types.double)@omnisci('int64(double[])')
def get_array_size(array):
return len(array)@omnisci('int8(double[])')
def is_array_null(array):
return array.is_null()
@omnisci('int8(double[], int64)')
def is_array_null(array, idx):
return array.is_null(idx)