Skip to content

Rust library to handle dynamic load of the OpenCL shared library

License

Notifications You must be signed in to change notification settings

passware/opencl-dynamic-sys-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Rust library to handle dynamic load of the OpenCL shared library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages