V library to develop Artificial Intelligence and High-Performance Scientific Computations
401
stars
1,310
commits
V
primary language
Jul 26, 2026
updated
import vsl.la as la
mut a := la.Matrix.new[f64](2, 2)
a.set(0, 0, 1.0)
a.set(1, 1, 2.0)
println(a.get(1, 1))
// 2.0
VSL is a V library for AI and high-performance scientific computing.
[!IMPORTANT] The pure-V QR path (
geqrf/orgqr) is still being aligned; the related test is temporarily skipped. Other BLAS/LAPACK routines pass, and C backends (-d vsl_blas_cblas -d vsl_lapack_lapacke) are recommended when you need QR correctness today.
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
Visit VSL Documentation to explore all supported features and APIs.
| Need | Go to |
|---|---|
| Scientific computing overview | Docs index |
| Working examples | Examples catalog |
| ML/GPU release status | ML roadmap |
| CUDA backend | cuda/README.md |
| Vulkan backend | vulkan/README.md |
| Benchmarks | benchmarks/README.md |
| Tensor/autograd/NN layer | VTL |
VSL is a comprehensive Scientific Computing Library offering a rich ecosystem of mathematical and computational modules. The library provides both pure-V implementations and optional high-performance backends through established C and Fortran libraries.
VSL provides flexible performance options:
Pure V BLAS/LAPACK implementations deliver competitive performance while eliminating external dependencies. Benchmark results demonstrate excellent performance characteristics across a wide range of problem sizes.
Each module clearly documents compilation flags and backend requirements, allowing users to choose the optimal configuration for their specific use case.
VSL compute backends are organized with a unified structure:
vsl/compute — backend-agnostic dispatch APIvsl/vcl/compute — OpenCL/VCL backend implementationvsl/vulkan/compute — Vulkan backend implementationvsl/cuda/compute — CUDA/cuBLAS/cuDNN backend (-d cuda; see cuda/README)The recommended integration point for downstream libraries is vsl.compute.
For the V ML beta, the stable integration contract is the portable scientific
and vsl.compute surface used by downstream libraries. CUDA, Vulkan, and VCL
remain opt-in acceleration backends; they are valuable for early adopters, but
are not required for the default CPU beta path.
| Backend | Build flag | Highlights | Downstream use |
|---|---|---|---|
| Pure V | none | Portable BLAS/LAPACK-style routines, gemm/gemv, elementwise ops, softmax, LayerNorm | Default path |
| C BLAS/LAPACK | -d vsl_blas_cblas, -d vsl_lapack_lapacke | Optimized CPU kernels | Heavy linear algebra |
| OpenCL/VCL | module-specific | Cross-vendor GPU kernels and examples; not a beta gate | Experimental GPU path |
| CUDA | -d cuda | cuBLAS/cuDNN GEMM, activations, softmax, Conv2D, LayerNorm | VTL CUDA training |
| Vulkan | -d vulkan | GEMM, Conv2D im2col, elementwise ops, fused Adam shader | VTL f32 Vulkan training |
For neural networks, use VTL: VSL owns the compute primitives, and VTL owns tensors, autograd, layers, losses, optimizers, datasets, and training loops.
VSL supports multiple installation methods and deployment options to fit different development workflows.
Via V's built-in package manager:
v install vsl
Via vpkg:
vpkg get https://github.com/vlang/vsl
For a pre-configured development environment with optional scientific dependencies:
Install Docker on your system
Clone the starter template:
git clone https://github.com/ulises-jeremias/hello-vsl
cd hello-vsl
Follow the setup instructions in the template's README
This approach provides:
For enhanced performance, you can install optional system libraries:
Refer to individual module documentation for specific compilation flags.
Use scoped tests during development to avoid compiling the whole scientific stack at once:
v test vsl/blas vsl/la vsl/compute
VSL_TEST_VULKAN=1 VJOBS=1 v -prod -d vulkan test vsl/vulkan/compute/adam_step_vulkan_test.v
For the repository test harness and optional GPU paths, see docs/ML_ROADMAP.md and vulkan/README.md.
VSL includes comprehensive performance benchmarks using V's built-in benchmark module:
# Run all BLAS benchmarks
v run benchmarks/blas_bench.v
# Run all LAPACK benchmarks
v run benchmarks/lapack_bench.v
# Compare pure V vs C backends
v -d vsl_blas_cblas run benchmarks/compare_backends.v
Benchmark results show performance characteristics for:
See benchmarks/README.md for detailed benchmark documentation.
Made with contributors-img.
(top 30 of 37)
V
90.3%
C
8.3%
V library to develop Artificial Intelligence and High-Performance Scientific Computations
401
stars
1,310
commits
V
primary language
Jul 26, 2026
updated
import vsl.la as la
mut a := la.Matrix.new[f64](2, 2)
a.set(0, 0, 1.0)
a.set(1, 1, 2.0)
println(a.get(1, 1))
// 2.0
VSL is a V library for AI and high-performance scientific computing.
[!IMPORTANT] The pure-V QR path (
geqrf/orgqr) is still being aligned; the related test is temporarily skipped. Other BLAS/LAPACK routines pass, and C backends (-d vsl_blas_cblas -d vsl_lapack_lapacke) are recommended when you need QR correctness today.
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
Visit VSL Documentation to explore all supported features and APIs.
| Need | Go to |
|---|---|
| Scientific computing overview | Docs index |
| Working examples | Examples catalog |
| ML/GPU release status | ML roadmap |
| CUDA backend | cuda/README.md |
| Vulkan backend | vulkan/README.md |
| Benchmarks | benchmarks/README.md |
| Tensor/autograd/NN layer | VTL |
VSL is a comprehensive Scientific Computing Library offering a rich ecosystem of mathematical and computational modules. The library provides both pure-V implementations and optional high-performance backends through established C and Fortran libraries.
VSL provides flexible performance options:
Pure V BLAS/LAPACK implementations deliver competitive performance while eliminating external dependencies. Benchmark results demonstrate excellent performance characteristics across a wide range of problem sizes.
Each module clearly documents compilation flags and backend requirements, allowing users to choose the optimal configuration for their specific use case.
VSL compute backends are organized with a unified structure:
vsl/compute — backend-agnostic dispatch APIvsl/vcl/compute — OpenCL/VCL backend implementationvsl/vulkan/compute — Vulkan backend implementationvsl/cuda/compute — CUDA/cuBLAS/cuDNN backend (-d cuda; see cuda/README)The recommended integration point for downstream libraries is vsl.compute.
For the V ML beta, the stable integration contract is the portable scientific
and vsl.compute surface used by downstream libraries. CUDA, Vulkan, and VCL
remain opt-in acceleration backends; they are valuable for early adopters, but
are not required for the default CPU beta path.
| Backend | Build flag | Highlights | Downstream use |
|---|---|---|---|
| Pure V | none | Portable BLAS/LAPACK-style routines, gemm/gemv, elementwise ops, softmax, LayerNorm | Default path |
| C BLAS/LAPACK | -d vsl_blas_cblas, -d vsl_lapack_lapacke | Optimized CPU kernels | Heavy linear algebra |
| OpenCL/VCL | module-specific | Cross-vendor GPU kernels and examples; not a beta gate | Experimental GPU path |
| CUDA | -d cuda | cuBLAS/cuDNN GEMM, activations, softmax, Conv2D, LayerNorm | VTL CUDA training |
| Vulkan | -d vulkan | GEMM, Conv2D im2col, elementwise ops, fused Adam shader | VTL f32 Vulkan training |
For neural networks, use VTL: VSL owns the compute primitives, and VTL owns tensors, autograd, layers, losses, optimizers, datasets, and training loops.
VSL supports multiple installation methods and deployment options to fit different development workflows.
Via V's built-in package manager:
v install vsl
Via vpkg:
vpkg get https://github.com/vlang/vsl
For a pre-configured development environment with optional scientific dependencies:
Install Docker on your system
Clone the starter template:
git clone https://github.com/ulises-jeremias/hello-vsl
cd hello-vsl
Follow the setup instructions in the template's README
This approach provides:
For enhanced performance, you can install optional system libraries:
Refer to individual module documentation for specific compilation flags.
Use scoped tests during development to avoid compiling the whole scientific stack at once:
v test vsl/blas vsl/la vsl/compute
VSL_TEST_VULKAN=1 VJOBS=1 v -prod -d vulkan test vsl/vulkan/compute/adam_step_vulkan_test.v
For the repository test harness and optional GPU paths, see docs/ML_ROADMAP.md and vulkan/README.md.
VSL includes comprehensive performance benchmarks using V's built-in benchmark module:
# Run all BLAS benchmarks
v run benchmarks/blas_bench.v
# Run all LAPACK benchmarks
v run benchmarks/lapack_bench.v
# Compare pure V vs C backends
v -d vsl_blas_cblas run benchmarks/compare_backends.v
Benchmark results show performance characteristics for:
See benchmarks/README.md for detailed benchmark documentation.
Made with contributors-img.
(top 30 of 37)
V
90.3%
C
8.3%