> For the complete documentation index, see [llms.txt](https://silicon.brain4j.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://silicon.brain4j.org/silicon.md).

# Silicon

Welcome to the official documentation of **Silicon**. Here you will find explanations, practical examples, and detailed references covering the core features and design principles of the framework.

### What's Silicon?

Silicon is an open source library designed to connect Java to GPU computing. It's minimal, portable and easy to use.

The project is packed into multiple components:

* **silicon-api**: Defines the rules and the execution flow.
* **silicon-cuda**: API implementation using CUDA, for NVIDIA GPUs.
* **silicon-metal**: API implementation using Metal, for Apple GPUs.
* **silicon-opencl**: API implementation using OpenCL, for all other GPUs.

### Why choose Silicon?

* **Memory safe by design**: GPU programming is notoriously error-prone, Silicon ensures memory safety by logging every buffer change, making use-after-free or double-free impossible.
* **Performant**: Silicon operates with a very thin abstraction layer, minimizing the overhead keeping the overhead as close to zero as possible.
* **Simple**: The API is extremely simple and concise that can be learned in minutes, eliminating the common boilerplate and complex code.
* **Portable**: Modern GPU programming is heavily fragmented, CUDA, Metal and OpenCL all expose different APIs, toolchains, shading languages and execution models. Silicon unifies everything over a simple abstraction layer, eliminating the need to duplicate code or kernels
