Brahma.FSharp 2.0.1

.NET 5.0
Install-Package Brahma.FSharp -Version 2.0.1
dotnet add package Brahma.FSharp --version 2.0.1
<PackageReference Include="Brahma.FSharp" Version="2.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Brahma.FSharp --version 2.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Brahma.FSharp, 2.0.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Brahma.FSharp as a Cake Addin
#addin nuget:?package=Brahma.FSharp&version=2.0.1

// Install Brahma.FSharp as a Cake Tool
#tool nuget:?package=Brahma.FSharp&version=2.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Brahma.FSharp

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.

Features

  • 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 ot 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.

Installation

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 ->
        kernel
        <| Range1D(1024, 256)
        <| buffer

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

Contributing

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

Build

Make sure the following requirements are installed on your system:

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

To build and run all tests:

  • on Windows
build.cmd 
  • on Linux/macOS
./build.sh 

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

License

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

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

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

Package Downloads
Brahman.Substrings

Brahman is a set of snippets, algorithms and solution for end users based on Brahma.FSharp. Brahman.Substrings is a library for substrings matching."

Brahma.FSharp.OpenCL.WorkflowBuilder

Brahma.FSharp does the thing!

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.1 25 8/5/2022
2.0.0 77 7/5/2022
2.0.0-alpha9.6 72 6/3/2022
2.0.0-alpha9.5 76 5/7/2022
2.0.0-alpha9.4 70 4/8/2022
2.0.0-alpha9.3 70 3/24/2022
2.0.0-alpha9.2 1,279 11/26/2021
2.0.0-alpha9.1 228 10/16/2021
2.0.0-alpha9 163 10/15/2021
2.0.0-alpha8 152 9/27/2021
2.0.0-alpha7.1 107 7/18/2021
2.0.0-alpha7 230 5/19/2021
2.0.0-alpha6.2 162 5/19/2021
2.0.0-alpha6.1 201 3/22/2021
2.0.0-alpha6 176 3/22/2021
2.0.0-alpha5 342 1/27/2021
2.0.0-alpha4 289 12/27/2020
2.0.0-alpha3 272 11/27/2020
2.0.0-alpha2 252 11/11/2020
1.1.5 1,275 11/10/2017
1.1.4 733 11/2/2017
1.1.3 836 7/16/2017
1.1.2 826 7/5/2017
1.1.1 785 7/5/2017
1.1.0 799 6/21/2017
1.1.0-alpha4 687 5/30/2017
1.1.0-alpha3 744 5/9/2017
1.1.0-alpha2 695 5/9/2017
1.1.0-alpha1 802 5/6/2017
1.0.1 1,609 7/15/2016
1.0.0 974 7/14/2016
0.3.5 1,671 6/27/2014
0.3.0.1 979 6/18/2014
0.2.4 1,965 3/28/2014
0.2.3 1,091 3/14/2014
0.2.2 1,049 3/11/2014
0.2.0 1,415 12/2/2013
0.1.4992 1,104 9/2/2013
0.1.4989 1,044 8/30/2013
0.1.4926 1,436 6/28/2013
0.0.0.3 1,193 6/28/2013
0.0.0.2 1,169 5/31/2013
0.0.0.1 1,117 5/30/2013

## [2.0.1] - 2022-08-05

[2.0.1]: https://github.com/YaccConstructor/Brahma.FSharp/compare/v2.0.0...v2.0.1

### Fixed
- Multiple local values in atomic operation