Brahma.FSharp
2.0.0-alpha9.6
See the version list below for details.
dotnet add package Brahma.FSharp --version 2.0.0-alpha9.6
NuGet\Install-Package Brahma.FSharp -Version 2.0.0-alpha9.6
<PackageReference Include="Brahma.FSharp" Version="2.0.0-alpha9.6" />
paket add Brahma.FSharp --version 2.0.0-alpha9.6
#r "nuget: Brahma.FSharp, 2.0.0-alpha9.6"
// Install Brahma.FSharp as a Cake Addin #addin nuget:?package=Brahma.FSharp&version=2.0.0-alpha9.6&prerelease // Install Brahma.FSharp as a Cake Tool #tool nuget:?package=Brahma.FSharp&version=2.0.0-alpha9.6&prerelease
Brahma.FSharp
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.
- Fine-grained memory management and kernels compilation process.
- Mailbox processor based interface for communication with devices.
More details are available here. Examples of usage are available here.
Installation
Install Brahma.FSharp by running:
dotnet add package Brahma.FSharp
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.
License
This project licensed under EPL-1.0 License. License text can be found in the license file.
FAQ
Setup BRAHMA_OCL_PATH environment variable
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. 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 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. |
-
net5.0
- Brahma.FSharp.OpenCL.Printer (>= 2.0.0-alpha9.6)
- Brahma.FSharp.OpenCL.Shared (>= 2.0.0-alpha9.6)
- Brahma.FSharp.OpenCL.Translator (>= 2.0.0-alpha9.6)
- FSharp.Core (>= 5.0.1)
- FSharp.Quotations.Evaluator (>= 2.1.0)
- YC.OpenCL.NET (>= 2.0.0-alpha9.6)
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 |
---|---|---|
3.0.0-alpha1.5 | 181 | 4/17/2024 |
3.0.0-alpha1.3 | 70 | 4/12/2024 |
3.0.0-alpha1.2 | 58 | 4/12/2024 |
3.0.0-alpha1.1 | 64 | 4/9/2024 |
2.0.5 | 2,096 | 2/10/2023 |
2.0.4 | 366 | 1/13/2023 |
2.0.3 | 527 | 1/4/2023 |
2.0.2 | 313 | 12/28/2022 |
2.0.1 | 3,181 | 8/5/2022 |
2.0.0 | 485 | 7/5/2022 |
2.0.0-alpha9.6 | 203 | 6/3/2022 |
2.0.0-alpha9.5 | 157 | 5/7/2022 |
2.0.0-alpha9.4 | 155 | 4/8/2022 |
2.0.0-alpha9.3 | 148 | 3/24/2022 |
2.0.0-alpha9.2 | 1,360 | 11/26/2021 |
2.0.0-alpha9.1 | 326 | 10/16/2021 |
2.0.0-alpha9 | 257 | 10/15/2021 |
2.0.0-alpha8 | 261 | 9/27/2021 |
2.0.0-alpha7.1 | 188 | 7/18/2021 |
2.0.0-alpha7 | 326 | 5/19/2021 |
2.0.0-alpha6.2 | 234 | 5/19/2021 |
2.0.0-alpha6.1 | 280 | 3/22/2021 |
2.0.0-alpha6 | 252 | 3/22/2021 |
2.0.0-alpha5 | 416 | 1/27/2021 |
2.0.0-alpha4 | 386 | 12/27/2020 |
2.0.0-alpha3 | 347 | 11/27/2020 |
2.0.0-alpha2 | 374 | 11/11/2020 |
1.1.5 | 1,558 | 11/10/2017 |
1.1.4 | 996 | 11/2/2017 |
1.1.3 | 1,104 | 7/16/2017 |
1.1.2 | 1,085 | 7/5/2017 |
1.1.1 | 1,058 | 7/5/2017 |
1.1.0 | 1,057 | 6/21/2017 |
1.1.0-alpha4 | 826 | 5/30/2017 |
1.1.0-alpha3 | 895 | 5/9/2017 |
1.1.0-alpha2 | 819 | 5/9/2017 |
1.1.0-alpha1 | 949 | 5/6/2017 |
1.0.1 | 1,893 | 7/15/2016 |
1.0.0 | 1,244 | 7/14/2016 |
0.3.5 | 1,936 | 6/27/2014 |
0.3.0.1 | 1,228 | 6/18/2014 |
0.2.4 | 2,193 | 3/28/2014 |
0.2.3 | 1,325 | 3/14/2014 |
0.2.2 | 1,315 | 3/11/2014 |
0.2.0 | 2,784 | 12/2/2013 |
0.1.4992 | 1,345 | 9/2/2013 |
0.1.4989 | 1,300 | 8/30/2013 |
0.1.4926 | 2,306 | 6/28/2013 |
0.0.0.3 | 1,440 | 6/28/2013 |
0.0.0.2 | 1,408 | 5/31/2013 |
0.0.0.1 | 1,365 | 5/30/2013 |
## [2.0.0-alpha9.6] - 2022-06-03
[2.0.0-alpha9.6]: https://github.com/YaccConstructor/Brahma.FSharp/compare/v1.1.5...v2.0.0-alpha9.6
### Fixed
- Blittable types transfer
- Performance issues