Getting Started
Prerequisites
Vulkan SDK 1.3+ (provides
glslccompiler andvulkan.h)CMake 3.20+
GCC 13+ or Clang 17+ (C++20)
xxd(part of vim-common on Linux, Git Bash on Windows)
Building
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
This builds the vc_core static library, plus vc_filter and vc_cast
stubs. Production builds omit tests and benchmarks.
Note
vc_create_context, vc_create_column, vc_read_column,
vc_filter, and vc_cast are currently stubs that return NULL.
Only vc_dtype_size is functional.
Running Tests
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DVC_BUILD_TESTS=ON
cmake --build build
cd build && ctest --output-on-failure
Debug builds enable Vulkan validation layers automatically. Tests should pass with zero validation errors.
Hello Compute
Verify your Vulkan toolchain with the standalone sandbox spike:
cmake -B build -DVC_SANDBOX=ON \
-DVulkan_INCLUDE_DIR=$VULKAN_SDK/Include \
-DVulkan_LIBRARY=$VULKAN_SDK/Lib/vulkan-1.lib
cmake --build build --target hello_compute
./build/sandbox/hello_compute
Expected output:
GPU: AMD Radeon RX 9070 (Vulkan 1.4.329)
PASS: All 1024 elements correctly incremented.
Library Usage (C API)
#include "vulkan_columnar/vc_context.h"
#include <stdio.h>
int main() {
printf("U32 element size: %u bytes\n", vc_dtype_size(VC_DTYPE_U32));
printf("F64 element size: %u bytes\n", vc_dtype_size(VC_DTYPE_F64));
return 0;
}