Brahma.FSharp.OpenCL.Printer 2.0.5

.NET 7.0
dotnet add package Brahma.FSharp.OpenCL.Printer --version 2.0.5
NuGet\Install-Package Brahma.FSharp.OpenCL.Printer -Version 2.0.5
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.Printer" Version="2.0.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Brahma.FSharp.OpenCL.Printer --version 2.0.5
#r "nuget: Brahma.FSharp.OpenCL.Printer, 2.0.5"
#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.Printer as a Cake Addin
#addin nuget:?package=Brahma.FSharp.OpenCL.Printer&version=2.0.5

// Install Brahma.FSharp.OpenCL.Printer as a Cake Tool
#tool nuget:?package=Brahma.FSharp.OpenCL.Printer&version=2.0.5


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. 
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Brahma.FSharp.OpenCL.Printer:

Package Downloads

Core components of Brahma.FSharp.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.5 1,306 2/10/2023
2.0.4 286 1/13/2023
2.0.3 467 1/4/2023
2.0.2 258 12/28/2022
2.0.1 3,196 8/5/2022
2.0.0 598 7/5/2022
2.0.0-alpha9.6 161 6/3/2022
2.0.0-alpha9.5 131 5/7/2022
2.0.0-alpha9.4 122 4/8/2022
2.0.0-alpha9.3 117 3/24/2022
2.0.0-alpha9.2 1,351 11/26/2021
2.0.0-alpha9.1 289 10/16/2021
2.0.0-alpha9 235 10/15/2021
2.0.0-alpha8 219 9/27/2021
2.0.0-alpha7.1 163 7/18/2021
2.0.0-alpha7 310 5/19/2021
2.0.0-alpha6.2 203 5/19/2021
2.0.0-alpha6.1 244 3/22/2021
2.0.0-alpha6 261 3/22/2021
2.0.0-alpha5 411 1/27/2021
2.0.0-alpha4 366 12/27/2020
2.0.0-alpha3 363 11/27/2020
2.0.0-alpha2 383 11/11/2020
1.0.0 539 11/27/2020

## [2.0.5] - 2023-02-10


### Added
- Typed device extensions.