Database architecture

I’m trying to understand Omnisci’s architecture of using GPU. First, when does it load the data to GPU? Is it loading all the data to GPU when it ingest data, for example, using COPY FROM command? Or, is it load the data to GPU when I execute the first query?

Second, What will happen if the GPU memory is full? Does it use both GPU and CPU memory? I’m using K80 GPU which has 24GB GPU memory. Approximately how much GB data I can ingest without utilizing the CPU memory?

Normally, OmniSciDB manages memory for you automatically by using a 3-tier architecture consisting of disk storage, CPU memory, and GPU memory.

The COPY FROM command loads data into the database’s disk storage and will be automatically pulled up to CPU memory and/or GPU memory when needed to answer queries.

see also: OmniSciDB

Hi @Youan_Lu,

Using a regular table and copy command from omnisql, the data is written directly into the Disk Tier; at first glance, it looks like a not so smart thing, but when you load a table with 20 columns, and you are using 5 or 6 columns for your most frequently run queries, it’s a smart thing to have loaded into memory just the columns involved in queries.

If you run queries during a load of a table, just the delta since the last execution has to be read from the Disk Tier into CPU Memory Tier and GPU Memory Tier.

The Nvidia K80 you are using isn’t precisely one GPU with 24GB of VRAM, but it’s a board with two GPUs with 12GB VRAM, so you should take care of spreading the data evenly between the two GPUs (as an example sharding the tables you are querying).

The optimizer will fall back to CPU Execution, when for a single query

Hi, for Nvidia K80, when I run command nvidia-smi, it only shows one GPU with 12GB memory. How can I see another K80 GPU? Does Omnisci only use one K80 GPU at that case? When will be necessary to sharding the table? Is it necessary to sharing the table if the query only takes about 1400 MB or 3000MB of GPU memory ?

If you are using an Aws instance that state it has a k80 Gpu, you will be getting half of a physical k80, so just 1 Gpu with 12gb of Vram. ( I understand why you are confused, I don’t like the attitude to give specs this way… Also the VCPUs aren’t full core but just 1 thread, so an half core)

In this case Omnisci database is able to use the full Gpu without the need of sharing tables.