Skip to content
This repository was archived by the owner on Jan 28, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add page for alternative wrappers
  • Loading branch information
dertseha committed Aug 15, 2022
commit c9107786f724483db62443cae716ed15755116ac
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ It serves as the central information source, issue tracker, and discussion space
## How-To guides

* [How to install the OpenCL SDK](how-to-install-sdk.md)

## Questions and general information

* [Alternative wrapper libraries](faq-alternatives.md)
74 changes: 74 additions & 0 deletions faq-alternatives.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Alternatives to opencl-go

This page collects alternatives to the provided wrappers of [opencl-go](https://github.com/opencl-go).

Listed properties may become out-of date, so double-check with the linked projects about their current state.

> As a general observation, unless otherwise noted, the found projects appeared in an incomplete state and apparently abandoned.

## samuel/go-opencl

* URL: https://github.com/samuel/go-opencl
* Last check of properties: 2022-08
* Last update of project: 2017-11
* Supported OpenCL version(s): 1.1 and 1.2 (one repository, build tags)

This repository comes up high in search results. With over 60 forks and 140 stars, it seems to be a common go-to repository.

Object-details such as properties during creation or info-query are not supported. Several TODO marker in the source base.

> This page will ignore most of the forks, unless they have a particular new property.


## microo8/blackcl

* URL: https://gitlab.com/microo8/blackcl
* Last check of properties: 2022-08
* Last update of project: 2019-02
* Supported OpenCL version(s): ?

Originally on [GitHub](https://github.com/microo8/blackcl) and derived from samuel/go-opencl, this is a project with "highly opinionated OpenCL bindings for Go with some black magic".

This project is a more high-level wrapper as it hides some of OpenCL's concepts (such as Platform, Context, or Queue), to provide a more simplified approach.

## MasterOfBinary/go-opencl

* URL: https://github.com/MasterOfBinary/go-opencl
* Last check of properties: 2022-08
* Last update of project: 2016-12
* Supported OpenCL version(s): 2.0

Event waitList / return objects are not supported for `Enqueue*` calls;
`EnqueueNDRangeKernel()` does not support specification of global offsets or local work sizes.

## rainliu/gocl

* URL: https://github.com/rainliu/gocl
* Last check of properties: 2022-08
* Last update of project: 2016-09
* Supported OpenCL version(s): 1.1, 1.2, 2.0 (one repository, build tags)

On one hand a low-level wrapper that matches closely the C-API, yet also performs parameter checks on its own.
As such, extensions may not be supported.

TODO marker in the source as some features are not implemented, for example pipes.

It contains several examples and demo applications.

## Patagonicus/opencl

* URL: https://github.com/Patagonicus/opencl
* Last check of properties: 2022-08
* Last update of project: 2017-03
* Supported OpenCL version(s): 1.2

A low-level wrapper. The readme shows a list of intended functions, which is about half finished.

## go-gl/cl

* URL: https://github.com/go-gl/cl
* Last check of properties: 2022-08
* Last update of project: 2016-04
* Supported OpenCL version(s): 1.0, 1.1, 1.2 (one repository, different sub-packages)

This wrapper seems to be based on some auto-generated code that directly forwards pointers to the Go-API.