Brahma.FSharp.OpenCL.Shared 3.0.0-alpha1.1

This is a prerelease version of Brahma.FSharp.OpenCL.Shared.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Brahma.FSharp.OpenCL.Shared --version 3.0.0-alpha1.1                
NuGet\Install-Package Brahma.FSharp.OpenCL.Shared -Version 3.0.0-alpha1.1                
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="Brahma.FSharp.OpenCL.Shared" Version="3.0.0-alpha1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Brahma.FSharp.OpenCL.Shared --version 3.0.0-alpha1.1                
#r "nuget: Brahma.FSharp.OpenCL.Shared, 3.0.0-alpha1.1"                
#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.
// Install Brahma.FSharp.OpenCL.Shared as a Cake Addin
#addin nuget:?package=Brahma.FSharp.OpenCL.Shared&version=3.0.0-alpha1.1&prerelease

// Install Brahma.FSharp.OpenCL.Shared as a Cake Tool
#tool nuget:?package=Brahma.FSharp.OpenCL.Shared&version=3.0.0-alpha1.1&prerelease                


FAKE Build NuGet Badge NuGet Badge License

Brahma.FSharp provides a way to utilize GPGPU in your F# programs. It is based on F# quotations to OpenCL translation.


  • Utilization of OpenCL for communication with GPU. So, you can work not only with NVIDIA devices but with any device which supports OpenCL (e.g. with AMD or Intel devices).
  • Not only primitive types, but also discriminated unions, structs, records are supported.
  • Pattern matching, mutable and immutable bindings, nested bindings are supported.
  • Custom atomics.
  • Fine-grained memory management and kernels compilation process.
  • Mailbox processor based interface for communication with devices.

More details are available here.


Install Brahma.FSharp by running:

dotnet add package Brahma.FSharp

Setup BRAHMA_OCL_PATH environment variable to opencl.dll location if it differs from default.

Quick Start

open Brahma.FSharp

let device = ClDevice.GetFirstAppropriateDevice()
let context = RuntimeContext(device)

let kernel =
        fun (range: Range1D) (buffer: int clarray) ->
            let gid = range.GlobalID0
            buffer.[gid] <- buffer.[gid] + 1

opencl {
    use! buffer = ClArray.alloc<int> 1024
    do! runCommand kernel <| fun kernel ->
        <| Range1D(1024, 256)
        <| buffer

    return! ClArray.toHost buffer
|> ClTask.runSync context


Contributions, issues and feature requests are welcome. Feel free to check issues page if you want to contribute.


Make sure the following requirements are installed on your system:

  • dotnet SDK 7.0 or higher
  • OpenCL-compatible device and respective OpenCL driver

To build and run all tests:

  • on Windows
  • on Linux/macOS

To find more options look at MiniScaffold. We use it in our project.


The release process is automated: NuGet packages publishing process is triggered by tag pushing to any branch. To release new vesion one should

  1. Add relese notes to CHANGELOG
  2. Run ./ Release [version] (on local machine)


This project licensed under EPL-1.0 License. License text can be found in the license file.

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Brahma.FSharp.OpenCL.Shared:

Package Downloads

Core components of Brahma.FSharp.


F# quotations to OpenCL C translator.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.0-alpha1.5 169 4/17/2024
3.0.0-alpha1.3 54 4/12/2024
3.0.0-alpha1.2 49 4/12/2024
3.0.0-alpha1.1 50 4/9/2024
2.0.5 2,709 2/10/2023
2.0.4 1,005 1/13/2023
2.0.3 3,316 1/4/2023
2.0.2 948 12/28/2022
2.0.1 2,220 8/5/2022
2.0.0 1,680 7/5/2022
2.0.0-alpha9.6 178 6/3/2022
2.0.0-alpha9.5 145 5/7/2022
2.0.0-alpha9.4 137 4/8/2022
2.0.0-alpha9.3 133 3/24/2022
2.0.0-alpha9.2 1,401 11/26/2021

## [3.0.0-alpha1.1] - 2024-04-09


### Added
- MailboxProcessor replaced with custom agent on System.Threading.Channels.