Skip to main content

nncc - Neural Network to C Compiler

A minimal, dependency-free compiler that converts PyTorch models into portable C99 code for inference.

Features

  • Python-First Workflow: Compile directly from your Python training script using nncc.compile().
  • Zero-Dependency Inference: Generated C code only requires <math.h> and <stdlib.h>.
  • Embedded Weights: Weights are embedded directly into the generated C header/source, making it a single-file solution.
  • Dynamic & Portable: Supports arbitrary model architectures and runs on any C99-compliant compiler (GCC, Clang, MSVC).

Installation

pip install nncc

Quick Start

1. Compile directly from PyTorch

import torch
import torch.nn as nn
import nncc

# 1. Define your model
model = nn.Sequential(
    nn.Linear(10, 64),
    nn.ReLU(),
    nn.Linear(64, 2),
    nn.Softmax(dim=-1)
)

# 2. Compile to C source code
# We pass a sample input to infer shapes
c_code = nncc.compile(model, torch.randn(1, 10), name="my_model")

# 3. Save to file
with open("model.c", "w") as f:
    f.write(c_code)

print("Saved model.c!")

2. Use the generated C code

The generated file is a single-header library. You can include it directly in your C application.

// main.c
#define NNCC_IMPLEMENTATION // Define this in exactly one .c file
#include "model.c"

#include <stdio.h>

int main() {
    // Input matches the shape provided during compilation (1, 10)
    float input[10] = {0.5f, -0.2f, /* ... */};
    float output[2];
    
    // Run inference
    my_model_inference(input, output);
    
    printf("Class 0: %f\n", output[0]);
    printf("Class 1: %f\n", output[1]);
    
    return 0;
}

Compile it with standard tools:

gcc -O3 main.c -o app -lm

Supported Layers

Category Operations
Linear Linear (GEMM)
Conv Conv2d
Pool MaxPool2d, AvgPool2d, AdaptiveAvgPool2d (Global)
Act ReLU, ReLU6,, Sigmoid, Tanh, Softmax
Norm BatchNorm2d
Shape Flatten, Dropout (No-op)

Advanced / Manual Usage

CLI Tool

If you prefer the command-line interface or want to work with raw files:

  1. Export Model: Use scripts/export_model.py to generate .safetensors and .nnmodel files.
  2. Compile:
    nncc model.safetensors model.nnmodel -o model.c
    

Building from Source

To build the nncc compiler and shared library from source:

Windows (MinGW/Git Bash):

make

Windows (MSVC):

cl /O2 /Fe:nncc.exe src/main.c src/model.c src/loader.c src/codegen.c

Linux/macOS:

make

Project Structure

nncc/
├── nncc/              # Python package
│   ├── __init__.py
│   ├── compiler.py    # Python API & Ctypes bindings
│   └── nncc.dll       # Pre-compiled core
├── src/               # C Compiler Core
│   ├── libnncc.c      # Shared library entry point
│   ├── main.c         # CLI entry point
│   ├── model.c        # Graph IR
│   └── codegen.c      # C99 Generator
├── examples/          # Usage examples
└── setup.py           # Packaging config

License

MIT License

Metadata

Release files for nncc 2.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nncc 2.0.9
File Size Uploaded
nncc-2.0.9.tar.gz 85.0 kB Details

Release files / nncc-2.0.9.tar.gz

Download URL nncc-2.0.9.tar.gz
Size 85.0 kB
Tags Source
SHA-256 checksum
How to use checksums
43ac25a868254724bd2df6ef8f3376ba17a232ab5dad3250a42892038307ebd1
BLAKE2b-256 checksum
How to use checksums
f83958f1bef264ec223bf37f80239707ff1dbe9f2b93925a39f7a851056726a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

2.0.9 This release

1 release file

2.0.8

1 release file

2.0.7

1 release file

2.0.6

1 release file

2.0.5

1 release file

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page