Skip to content

clEsperanto/CLIc_prototype

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CLIc

Build & test CI-Tests Codecov License GitHub release (latest by date including pre-releases) CppStd OpenCL Website GitHub issues GitHub stars GitHub forks

CLIc is a prototype backend library for CLesperanto - a multi-language framework for GPU-accelerated image processing. It uses the OpenCL kernels from CLIJ

It is a preliminary projet and mainly focussed on running a kernel using the OpenCL C++ API from Khronos.

Usage example

#include "clesperanto.h"  // CLIc include

int main( int argc, char** argv)
{
    // Initialisation of clEsperanto with default device
    cle::Clesperanto cle;

    // store data to process in vector
    std::array<size_t,3> dimensions = {width, height, depth};
    std::vector<float> data (width * height * depth); 

    /*
     * ... fill input with data to process  
     */

    // push data from host to device
    auto gpu_src = cle.Push<float>(data, dimensions);
    // allocate space on device
    auto gpu_dst = cle.Create<float>(dimensions);
    // apply filter with parameters
    cle.AddImageAndScalar(gpu_src, gpu_dst, 10);
    // pull output from device to host
    auto output = cle.Pull<float>(gpu_dst); 

    return EXIT_SUCCESS;
}

See more complete example on usage by looking at the kernels tests.

Installation

Requirements

CLIc rely on OpenCL language for parallelisation and CMake for configuration and build.
Follow the installation guide for helps on compilation and installation.

Quick install

Clone the repository and update the submodules

git clone git@github.com:clEsperanto/CLIc_prototype.git
cd CLIc_prototype

Create a build folder and configure cmake to generate the adapted makefile. Then compile the library and install it at specified location on your system.

cmake -S . -B ./build -D CMAKE_INSTALL_PREFIX=/path/to/installation/folder
cmake --build ./build --parallel 10 --target install

You can modify installation location using -D CMAKE_INSTALL_PREFIX=/path/to/installation/folder. If not specify, the default location is /usr/local.

CLIc can be uninstall by running the following command

cmake --build ./build --target uninstall

Kernels

CLIc filters rely on the clEsperanto branch of CLIj OpenCL kernels. They are managed as a submodule of this repository.

Contributing

Contributions are very welcome. Before spending effort on coding and filing a pull-request, please get in touch, file an issue, and let's discuss your potential contribution. More information on how to add new kernels to the library can be found in the documentation.

Feedback welcome!

clEsperanto is developed in the open because we believe in the open source community. Feel free to drop feedback as github issue or via image.sc.
And if you liked our work, star the repository, share it with your friends, and use it to make cool stuff!