AiDotNet.Tensors 0.150.0

dotnet add package AiDotNet.Tensors --version 0.150.0
                    
NuGet\Install-Package AiDotNet.Tensors -Version 0.150.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AiDotNet.Tensors" Version="0.150.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AiDotNet.Tensors" Version="0.150.0" />
                    
Directory.Packages.props
<PackageReference Include="AiDotNet.Tensors" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AiDotNet.Tensors --version 0.150.0
                    
#r "nuget: AiDotNet.Tensors, 0.150.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AiDotNet.Tensors@0.150.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AiDotNet.Tensors&version=0.150.0
                    
Install as a Cake Addin
#tool nuget:?package=AiDotNet.Tensors&version=0.150.0
                    
Install as a Cake Tool

AiDotNet.Tensors

NuGet CI License

A high-performance .NET tensor library with hand-written AVX2/AVX-512 SIMD kernels in SimdKernels.cs / SimdGemm.cs / SimdConvHelper.cs. Every hot path runs through our own managed-C# kernels — we do NOT call into System.Numerics.Tensors, MKL.NET, or oneDNN through the standard wrappers. In the latest benchmark run on a Threadripper 3990X (see CPU Benchmarks for every number, the versions compared and the losses), AiDotNet.Tensors was faster than TorchSharp 0.107 (libtorch) in 73 of 82 measurements, than ML.NET 5.0 and TensorFlow.NET 0.150 in all of them, than NumSharp 0.70 in 45 of 48 and than MathNet.Numerics 5.0 in all 33.

Note on dependencies. The AiDotNet.Tensors package depends on AiDotNet.Evolution, Microsoft.Extensions.Logging.Abstractions, K4os.Compression.LZ4 (LZ4 compression for serialized tensor blobs), BouncyCastle.Cryptography and Silk.NET.Shaderc.Native (the shaderc GLSL to SPIR-V compiler the Vulkan backend uses), plus BCL polyfills on .NET Framework and .NET Standard (System.Text.Json, System.Threading.Channels, and on netstandard2.0 System.Reflection.Emit). It ships no native CPU math library: OpenBLAS and Intel MKL were removed under #368, and by default every CPU GEMM runs the managed kernels.

When oneDNN is used. Intel oneDNN is never bundled with AiDotNet.Tensors; it ships separately as AiDotNet.Native.OneDNN (oneDNN 3.2, dnnl.dll for win-x64). On net8.0 and net10.0 only (the oneDNN path is compiled out of the net471, net462 and netstandard2.0 builds), when a dnnl library can be loaded - from that package, the application directory, or the system library search path - the CPU engine tries oneDNN first for float32 Conv2D forward, in-place ReLU and sigmoid, softmax, and large element-wise add and multiply. GEMM stays on the managed kernels unless AIDOTNET_ONEDNN_GEMM=1 is set. Any call oneDNN declines falls back to the managed kernel, and so does every call in deterministic mode or while another thread is already inside oneDNN. AIDOTNET_DISABLE_ONEDNN=1 turns oneDNN off even when the library is present.

Performance numbers above assume net8.0+. On net471 the SIMD/intrinsics helpers are excluded (System.Runtime.Intrinsics is unavailable pre-net6); a custom net471 SIMD path to replace System.Numerics.Vector<T> there is on the roadmap as Phase 5.

Features

  • Zero Allocations: In-place operations with ArrayPool<T> and Span<T> for hot paths
  • Hand-Tuned SIMD: Custom AVX2/FMA kernels with 4-way loop unrolling, not just Vector<T> wrappers
  • JIT-Compiled Kernels: Runtime x86-64 machine code generation for size-specialized operations
  • BLIS-Style GEMM: Tiled matrix multiply with FMA micro-kernel, cache-aware panel packing
  • GPU Acceleration: Optional CUDA, HIP/ROCm, OpenCL, Metal, Vulkan, and WebGPU support via separate packages, with CPU-vs-GPU op-parity validated across every backend (#775)
  • Native ANN Index: Dependency-free approximate-nearest-neighbour search (Flat / IVF / PQ / IVFPQ) via AnnIndex, with fused IAnnBackend GPU kernels across all seven backends — no FAISS / MKL dependency (#824)
  • Multi-Target: net10.0, net8.0, net471, net462 and netstandard2.0
  • Generic Math: Works with any numeric type via INumericOperations<T> interface

Installation

# Core package (CPU SIMD acceleration)
dotnet add package AiDotNet.Tensors


# Optional: CLBlast for OpenCL GPU acceleration (AMD/Intel/NVIDIA)
dotnet add package AiDotNet.Native.CLBlast

# Optional: CUDA for NVIDIA GPU acceleration (requires NVIDIA GPU)
dotnet add package AiDotNet.Native.CUDA

Published packages

These packages are published to nuget.org:

Package Contents
AiDotNet.Tensors The library (managed code only)
AiDotNet.Native.CLBlast CLBlast 1.6.3 for OpenCL, win-x64
AiDotNet.Native.CUDA NVIDIA CUDA 12 runtime (cudart, cuBLAS, cuBLASLt, nvRTC), win-x64, delivered through the AiDotNet.Native.CUDA.Fragments.N packages it depends on
AiDotNet.Native.ROCm AMD rocBLAS, hipBLAS and the HIP runtime, win-x64
AiDotNet.Native.OneDNN Intel oneDNN 3.2, win-x64
AiDotNet.Native.MoltenVK MoltenVK 1.4.1 for Vulkan on macOS (x64 and arm64)

Each AiDotNet.Native.* package carries the upstream licence text of what it redistributes and a NATIVE-MANIFEST.json listing the upstream version, licence and SHA-256 of every native file. For CUDA, the licence and manifest are in the AiDotNet.Native.CUDA package itself: its AiDotNet.Native.CUDA.Fragments.N dependencies carry only byte chunks of the DLLs, which the meta package reassembles and whose SHA-256 the manifest records. hipblas.dll in AiDotNet.Native.ROCm states no version of its own, so its entry names the HIP SDK release it came from. The one licence exception is the Windows HIP runtime in AiDotNet.Native.ROCm (amdhip64_6.dll): it is closed source under AMD's HIP SDK licence, which AMD does not publish as a text file, so its text is not bundled; the package's LICENSE.txt names the binary, its version and SHA-256, and where AMD shows the licence.

The NuGet licence of each AiDotNet.Native.* GPU package (CUDA, its CUDA.Fragments.N packages, and ROCm) is that bundled LICENSE.txt, not this repository's licence, because the binaries are NVIDIA's and AMD's. Only the packaging glue (MSBuild targets and scripts) is under this repository's licence.

AiDotNet.Tensors.Gpu, AiDotNet.Tensors.Onnx, AiDotNet.Tensors.Cli and AiDotNet.Tensors.Analyzers are built from this repository but are not published to NuGet. The analyzers run only when this repository builds.

Quick Start

using AiDotNet.Tensors.LinearAlgebra;

// Create vectors
var v1 = new Vector<double>(new[] { 1.0, 2.0, 3.0, 4.0 });
var v2 = new Vector<double>(new[] { 5.0, 6.0, 7.0, 8.0 });

// SIMD-accelerated operations
var sum = v1 + v2;
var dot = v1.Dot(v2);

// Create matrices
var m1 = new Matrix<double>(3, 3);
var m2 = Matrix<double>.Identity(3);

// Matrix operations
var product = m1 * m2;
var transpose = m1.Transpose();

CPU Benchmarks

Every number below comes from two BenchmarkDotNet runs on one machine on 2026-10-08: --vs-all at commit dcb0926f and --linalg at commit 587358ed, using the suites in this repository. AiDotNet.Tensors runs its own managed C# SIMD kernels; the comparison libraries run their native backends (libtorch for TorchSharp, the TensorFlow runtime for TensorFlow.NET).

Machine: AMD Ryzen Threadripper 3990X (64 cores / 128 threads, AVX2 + FMA, no AVX-512), Windows 11, .NET 10.0.401, BenchmarkDotNet 0.15.8. BenchmarkDotNet confines each benchmark process to one 64-thread processor group.

Versions compared: TorchSharp 0.107.0 (its bundled libtorch CPU build), ML.NET 5.0.0, TensorFlow.NET 0.150.0 (TensorFlow runtime 2.16.0), NumSharp 0.70.0, MathNet.Numerics 5.0.0.

Summary of this run (a cell is a win when AiDotNet's mean time is lower):

Compared with Wins Losses
TorchSharp (41 ops, steady state and cold call) 73 9
ML.NET 6 0
TensorFlow.NET 11 0
NumSharp 45 3
MathNet.Numerics 33 0

Reproduce:

dotnet run -c Release --project tests/AiDotNet.Tensors.Benchmarks --framework net10.0 -- --vs-all   # TorchSharp, ML.NET, TensorFlow.NET
dotnet run -c Release --project tests/AiDotNet.Tensors.Benchmarks --framework net10.0 -- --linalg   # NumSharp, MathNet

--vs-all-filter <glob> and --linalg-filter <glob> run a subset.

The BenchmarkDotNet reports behind every table are in tests/AiDotNet.Tensors.Benchmarks/Results/2026-10-08-threadripper-3990x/; python tests/AiDotNet.Tensors.Benchmarks/make_readme_tables.py <reports> <reports> regenerates the tables from them.

Updating these numbers. --vs-all and --linalg also write manifest.json (the competitor versions that ran, the commit and runtime) beside the reports. Copy the reports and the manifest into a new Results/<run>/ folder, point the link above at it and paste the regenerated tables. CI runs check_benchmark_claims.py on every pull request: it fails if a table row, count or speedup in this README is not what the reports produce, if a competitor's version differs from the one that ran, or if the package or repository description quotes a speed number.

How to read these numbers

  • Steady state is BenchmarkDotNet's normal mode: many calls per iteration, averaged.
  • Cold call times one call per iteration with a forced garbage collection before it, which is what an op costs when it runs occasionally. Both libraries' first call (JIT and library start-up) is excluded.
  • Each arm matches the competitor's allocation behaviour. Where the other library reuses or frees its output (ML.NET writes into a preallocated destination; TorchSharp disposes its result), the AiDotNet arm returns its result to the tensor pool. Where the other library allocates a fresh result every call (TensorFlow.NET, NumSharp, MathNet), so does the AiDotNet arm. The same op can therefore show very different absolute times in different tables.
  • Speedup is the other library's time divided by AiDotNet's; above 1× means AiDotNet is faster.

vs TorchSharp (libtorch CPU)

Operation Shape AiDotNet steady TorchSharp steady Speedup AiDotNet cold call TorchSharp cold call Speedup
Abs 1M 8.2 µs 18 µs 2.26× 25 µs 41 µs 1.63×
Add 100K 31 µs 39 µs 1.25× 34 µs 39 µs 1.15×
Add 1M 162 µs 221 µs 1.37× 187 µs 216 µs 1.15×
Attention Q·Kᵀ 512×64 · 64×512 77 µs 115 µs 1.49× 92 µs 147 µs 1.59×
BatchNorm 32×64×32×32 62 µs 187 µs 3.04× 94 µs 380 µs 4.03×
Conv2D 1×16×64×64 → 32, 3×3 174 µs 277 µs 1.59× 280 µs 327 µs 1.17×
Conv2D (double) 1×3×32×32 → 16, 3×3 49 µs 115 µs 2.36× 68 µs 111 µs 1.63×
Divide 1M 12 µs 21 µs 1.86× 24 µs 58 µs 2.36×
Exp 1M 27 µs 44 µs 1.65× 57 µs 72 µs 1.26×
Exp (double) 1M 55 µs 79 µs 1.43× 106 µs 136 µs 1.28×
GELU 1M 36 µs 56 µs 1.54× 75 µs 117 µs 1.55×
GELU (double) 1M 134 µs 207 µs 1.54× 147 µs 364 µs 2.49×
GroupNorm 32×64×32×32, 32 groups 54 µs 67 µs 1.24× 81 µs 101 µs 1.24×
LayerNorm 32768×64 72 µs 81 µs 1.13× 187 µs 142 µs 0.76× (slower)
LeakyReLU 1M 8.5 µs 21 µs 2.42× 21 µs 45 µs 2.13×
Log 1M 47 µs 46 µs 0.98× (slower) 96 µs 77 µs 0.80× (slower)
Log (double) 1M 114 µs 94 µs 0.83× (slower) 172 µs 214 µs 1.25×
LogSoftmax 512×1024 19 µs 32 µs 1.64× 59 µs 81 µs 1.37×
MatMul 256×256 26 µs 67 µs 2.54× 86 µs 106 µs 1.24×
MatMul 512×512 146 µs 213 µs 1.46× 566 µs 508 µs 0.90× (slower)
MatMul (double) 256×256 54 µs 119 µs 2.22× 143 µs 199 µs 1.39×
Max 1M 6.4 µs 12 µs 1.93× 11 µs 29 µs 2.70×
MaxPool2D 1×32×64×64, 3×3 / 2 14 µs 54 µs 3.82× 26 µs 100 µs 3.86×
Mean 1M 5.9 µs 32 µs 5.49× 18 µs 65 µs 3.56×
Min 1M 6.2 µs 13 µs 2.02× 11 µs 31 µs 2.84×
Mish 1M 997 µs 1.02 ms 1.02× 980 µs 905 µs 0.92× (slower)
Mish (double) 1M 347 µs 2.16 ms 6.22× 357 µs 1.86 ms 5.22×
Multiply 100K 28 µs 40 µs 1.44× 32 µs 37 µs 1.17×
Multiply 1M 179 µs 228 µs 1.27× 171 µs 199 µs 1.16×
ReLU 1M 221 µs 206 µs 0.93× (slower) 218 µs 219 µs 1.00×
Sigmoid 1M 183 µs 189 µs 1.03× 181 µs 199 µs 1.10×
Sigmoid (double) 1M 72 µs 150 µs 2.08× 103 µs 282 µs 2.73×
Sigmoid backward 1M 12 µs 64 µs 5.41× 40 µs 111 µs 2.76×
Softmax 512×1024 16 µs 29 µs 1.80× 50 µs 59 µs 1.19×
Softmax (double) 512×1024 60 µs 56 µs 0.93× (slower) 76 µs 138 µs 1.81×
Sqrt 1M 14 µs 29 µs 2.04× 21 µs 47 µs 2.31×
Subtract 1M 12 µs 21 µs 1.86× 33 µs 51 µs 1.56×
Sum 1M 6.1 µs 24 µs 3.96× 20 µs 49 µs 2.44×
Tanh 1M 61 µs 90 µs 1.47× 134 µs 124 µs 0.93× (slower)
Tanh (double) 1M 86 µs 163 µs 1.91× 119 µs 275 µs 2.31×
Tanh backward 1M 12 µs 64 µs 5.13× 37 µs 113 µs 3.08×

Where AiDotNet is behind: float and double Log, the double Softmax steady state, ReLU steady state, and the cold call of LayerNorm, Log, Tanh, Mish and the 512×512 MatMul. Most are within 10%; the largest gap is the LayerNorm cold call at 1.32×.

vs ML.NET

Operation Shape AiDotNet ML.NET 5.0.0 Speedup
Add 100K 5.9 µs 50 µs 8.46×
Add 1M 12 µs 521 µs 42.20×
Mean 1M 5.3 µs 89 µs 16.79×
Multiply 100K 5.7 µs 51 µs 8.89×
Multiply 1M 12 µs 546 µs 45.61×
Sum 1M 8.0 µs 168 µs 20.91×

vs TensorFlow.NET

Operation Shape AiDotNet TensorFlow.NET 0.150.0 Speedup
Add 100K 86 µs 117 µs 1.36×
Add 1M 583 µs 1.41 ms 2.42×
Conv2D 1×16×64×64 → 32, 3×3 398 µs 490 µs 1.23×
MatMul 256×256 309 µs 480 µs 1.55×
MatMul 512×512 444 µs 1.25 ms 2.82×
Mean 1M 6.0 µs 106 µs 17.50×
Multiply 100K 86 µs 118 µs 1.37×
Multiply 1M 577 µs 1.34 ms 2.31×
ReLU 1M 585 µs 1.48 ms 2.54×
Sigmoid 1M 642 µs 1.62 ms 2.51×
Sum 1M 6.8 µs 136 µs 19.98×

vs NumSharp and MathNet.Numerics (double precision)

Operation N AiDotNet NumSharp 0.70.0 MathNet 5.0.0 Speedup vs NumSharp Speedup vs MathNet
Dot Product 100 21 ns 949 ns 80 ns 45.29× 3.81×
Dot Product 500 57 ns 720 ns 355 ns 12.64× 6.23×
Dot Product 1000 102 ns 766 ns 696 ns 7.47× 6.79×
L2 Norm 100 14 ns 1.2 µs 962 ns 86.44× 69.04×
L2 Norm 500 44 ns 1.3 µs 4.9 µs 28.30× 110.09×
L2 Norm 1000 81 ns 1.3 µs 9.8 µs 15.67× 120.48×
Matrix Add 100 3.1 µs 6.7 µs 5.5 µs 2.13× 1.74×
Matrix Add 500 248 µs 298 µs 504 µs 1.20× 2.03×
Matrix Add 1000 1.80 ms 2.13 ms 3.48 ms 1.19× 1.93×
Matrix Multiply 100 52 µs 126 µs 199 µs 2.44× 3.85×
Matrix Multiply 500 3.54 ms 9.74 ms 6.87 ms 2.75× 1.94×
Matrix Multiply 1000 18.67 ms 74.84 ms 35.88 ms 4.01× 1.92×
Matrix Scalar Multiply 100 2.6 µs 7.9 µs 5.1 µs 3.10× 2.00×
Matrix Scalar Multiply 500 253 µs 213 µs 338 µs 0.84× (slower) 1.34×
Matrix Scalar Multiply 1000 1.09 ms 1.17 ms 2.02 ms 1.07× 1.85×
Matrix Subtract 100 3.7 µs 8.7 µs 7.0 µs 2.32× 1.87×
Matrix Subtract 500 252 µs 242 µs 427 µs 0.96× (slower) 1.69×
Matrix Subtract 1000 1.52 ms 1.65 ms 2.46 ms 1.08× 1.62×
Transpose 100 5.2 µs 10 µs 13 µs 2.00× 2.56×
Transpose 500 283 µs 568 µs 540 µs 2.01× 1.91×
Transpose 1000 1.68 ms 1.57 ms 4.53 ms 0.94× (slower) 2.69×
Transpose (view) 100 84 ns 479 ns — 5.70× —
Transpose (view) 500 104 ns 599 ns — 5.76× —
Transpose (view) 1000 114 ns 445 ns — 3.90× —
Vector Add 100 85 ns 914 ns 121 ns 10.81× 1.43×
Vector Add 500 322 ns 1.4 µs 338 ns 4.37× 1.05×
Vector Add 1000 599 ns 1.6 µs 652 ns 2.68× 1.09×
Vector Scalar Multiply 100 52 ns 1.6 µs 81 ns 30.38× 1.57×
Vector Scalar Multiply 500 227 ns 1.9 µs 274 ns 8.25× 1.20×
Vector Scalar Multiply 1000 322 ns 2.1 µs 518 ns 6.46× 1.61×
Vector Subtract 100 65 ns 837 ns 104 ns 12.81× 1.59×
Vector Subtract 500 262 ns 1.1 µs 292 ns 4.28× 1.11×
Vector Subtract 1000 391 ns 1.4 µs 592 ns 3.63× 1.51×

The three NumSharp losses (Matrix Scalar Multiply and Matrix Subtract at N=500, Transpose at N=1000) are benchmarks that allocate a 2–8 MB result and discard it on every call. Each fresh result lands in memory the OS has to fault in and zero again (about 210 page faults per 2 MB result; the first write costs about twice a rewrite), and the large-object churn triggers gen-2 collections; NumSharp's results are unmanaged and stay out of the GC heap. The computation itself is not the gap: writing into an existing matrix takes 22 µs for the N=500 scalar multiply, and TransposeInPlace at N=1000 takes 125 µs. Recycling discarded result buffers is the follow-up change that addresses this.

Element-wise (vs NumSharp, double):

Operation N AiDotNet NumSharp 0.70.0 Speedup vs NumSharp
Exp 1000 2.1 µs 5.4 µs 2.64×
Exp 10000 16 µs 58 µs 3.60×
Exp 100000 114 µs 610 µs 5.35×
Max 1000 123 ns 1.3 µs 10.37×
Max 10000 906 ns 2.3 µs 2.53×
Max 100000 5.0 µs 12 µs 2.45×
Multiply 1000 858 ns 1.5 µs 1.76×
Multiply 10000 4.9 µs 9.5 µs 1.93×
Multiply 100000 59 µs 91 µs 1.53×
Sum 1000 91 ns 1.2 µs 13.19×
Sum 10000 684 ns 1.7 µs 2.44×
Sum 100000 4.1 µs 9.8 µs 2.40×

Small matrix multiply (double):

Operation N AiDotNet NumSharp 0.70.0 MathNet 5.0.0 Speedup vs NumSharp Speedup vs MathNet
16x16 Multiply 654 ns 1.9 µs 3.0 µs 2.90× 4.57×
32x32 Multiply 2.7 µs 5.8 µs 25 µs 2.14× 9.39×
4x4 Multiply 112 ns 1.0 µs 138 ns 9.00× 1.23×

SIMD Instruction Support

The library automatically detects and uses the best available SIMD instructions:

Instruction Set Vector Width Supported
AVX-512 512-bit (16 floats) .NET 8+
AVX2 + FMA 256-bit (8 floats) .NET 6+
AVX 256-bit (8 floats) .NET 6+
SSE4.2 128-bit (4 floats) .NET 6+
ARM NEON 128-bit (4 floats) .NET 6+

Check Available Acceleration

using AiDotNet.Tensors.Engines;

var caps = PlatformDetector.Capabilities;

// SIMD capabilities
Console.WriteLine($"AVX2: {caps.HasAVX2}");
Console.WriteLine($"AVX-512: {caps.HasAVX512F}");

// GPU support
Console.WriteLine($"CUDA: {caps.HasCudaSupport}");
Console.WriteLine($"OpenCL: {caps.HasOpenCLSupport}");

// Native library availability
Console.WriteLine($"CLBlast: {caps.HasClBlast}");

// Or get a full status summary
Console.WriteLine(NativeLibraryDetector.GetStatusSummary());

Optional Acceleration Packages

AiDotNet.Native.CLBlast

Provides GPU acceleration via OpenCL (works on AMD, Intel, and NVIDIA GPUs):

dotnet add package AiDotNet.Native.CLBlast

Performance: not benchmarked yet, so no speedup is published for it.

AiDotNet.Native.CUDA

Provides GPU acceleration via NVIDIA CUDA (NVIDIA GPUs only):

dotnet add package AiDotNet.Native.CUDA

Performance: not benchmarked yet, so no speedup is published for it.

Requirements:

  • NVIDIA GPU (GeForce, Quadro, or Tesla)
  • NVIDIA display driver 525.60+ (includes CUDA driver)

Usage with helpful error messages:

using AiDotNet.Tensors.Engines.DirectGpu.CUDA;

// Recommended: throws beginner-friendly exception if CUDA unavailable
using var cuda = CudaBackend.CreateOrThrow();

// Or check availability first
if (CudaBackend.IsCudaAvailable)
{
    using var backend = new CudaBackend();
    // Use CUDA acceleration
}

If CUDA is not available, you'll get detailed troubleshooting steps explaining exactly what's missing and how to fix it.

Requirements

  • .NET 8.0 or later, .NET Framework 4.6.2 or later, or another runtime that implements .NET Standard 2.0
  • Windows x64, Linux x64, or macOS x64/arm64

License

AiDotNet.Tensors is licensed under the Business Source License 1.1 (BSL 1.1), with CrowdTrainer LLC as Licensor. Its Additional Use Grant allows any non-commercial use (education, research, personal projects and internal evaluation), and training and inference operations are unrestricted regardless of license status. Each version converts to the Apache License 2.0 four years after its release. See aidotnet.dev/license for the license tiers, including the free Community license.

The BSL applies to versions released after this change (0.145.0 and later). Versions published before it remain under the Apache License 2.0.

Parts derived from CLBlast and ONNX remain under the Apache License 2.0; see THIRD-PARTY-NOTICES.txt. The AiDotNet.Native.* packages carry their vendors' licences.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 is compatible.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on AiDotNet.Tensors:

Package Downloads
AiDotNet

A comprehensive .NET library for machine learning, deep learning, NLP, computer vision, and AI model serving. Licensed under BSL 1.1 — free for non-commercial use, community license available at aidotnet.dev. Model save/load requires a free or paid license after a 10-operation trial. Optional anonymous telemetry (opt-in via AIDOTNET_TELEMETRY=true) collects usage metrics — no PII or model data is collected.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.150.0 1,319 11/10/2026
0.149.0 2,236 11/9/2026
0.148.1 92 11/7/2026
0.148.0 1,513 11/6/2026
0.147.0 196 11/5/2026
0.146.0 716 11/4/2026
0.145.0 105 11/3/2026
0.144.2 988 10/29/2026
0.144.1 12,588 10/29/2026
0.144.0 571 10/28/2026
0.143.0 2,526 10/26/2026
0.142.0 102 10/23/2026
0.141.0 1,713 10/21/2026
0.140.0 4,482 10/19/2026
0.139.2 997 10/17/2026
0.139.1 103 10/17/2026
0.139.0 445 10/16/2026
0.138.1 682 10/14/2026
0.138.0 112 10/14/2026
0.137.1 121 10/13/2026
Loading failed