#opencl #shared #api #dlopen #gpgpu

opencl-dynamic-sys

Rust library to handle the dynamic load of the OpenCL shared library

2 releases

new 0.1.1 Nov 12, 2024
0.1.0 Nov 12, 2024

#170 in Hardware support

Download history 202/week @ 2024-11-09

202 downloads per month

MIT license

260KB
5.5K SLoC

OpenCL 3.0 Rust

Rust library to handle the dynamic load of the OpenCL shared library.

Description

This library in general is a rewritten version of the opencl-sys-rs library. The main difference is a way in which the OpenCL library will be linked to the program: it will be loaded dynamically in the runtime during the first call to the OpenCL API with the help of the dlopen2 library.

If the OpenCL library not found, the error code CL_RUNTIME_LOAD_FAILED = -2000 will be returned.

If the OpenCL library doesn't have some API functions (such as clCreateBufferWithProperties, it is v3.0 API function), the error code CL_FUNCTION_NOT_AVAILABLE = -2001 will be returned.

Usage

You do not need to install any OpenCL hardware driver(s) to run your code which depends on opencl-dynamic-sys library.

Just include the library in the dependencies section in your Cargo.toml file:

[dependencies]
opencl-dynamic-sys = "0.1"

Search path

By default, the OpenCL shared library is searched as follows:

  • on Windows: OpenCL.dll
  • on macOS: /System/Library/Frameworks/OpenCL.framework/OpenCL
  • otherwise: libOpenCL.so

If you have the OpenCL shared library in non-standard place, you can use an environment variable OPENCL_DYLIB_PATH to define where to look for the library (the value of the variable is a comma-separated string):

OPENCL_DYLIB_PATH=/usr/lib/libOpenCL.so;/var/lib/OpenCL;%DESKTOP%/OpenCL.dll

If the OpenCL shared library is found, then the call of opencl-dynamic-sys::is_opencl_runtime_available() will return true.

License

This library is distributed under the terms of the MIT license, see LICENSE for details.

Dependencies

~110–340KB