GithubHelp home page GithubHelp logo

cl-plusplus's People

Contributors

hadrieng2 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

cl-plusplus's Issues

Finish documentation

At the moment, the platform layer is pretty well documented, but the runtime layer is only documented in code. This needs changing.

Special attention should be paid to CLplusplus concepts that do not exist in the OpenCL spec, such as the PropertyList class or event-based asynchronous program builds.

Concepts which are currently only exposed through code TODOs, WARNINGs and NOTEs will also need to be exposed more prominently.

Coding conventions should also be documented for developers.

Add a small website

It could be a good idea to create a small website for this project using gh-pages. Said website should provide direct access to the documentation written as part of #2.

Add higher-level abstractions

Right now, this library very closely matches the core OpenCL abstractions, and this is by design. However, longer-term, it would be nice to introduce some more usable higher-level abstractions, acknowledging some common use cases such as the one where a large buffer object is actually an array. In general, removing the remaining void* lying around would be a good thing.

Another step towards making buffer objects more usable would be to automate data motion a bit, like e.g. ArrayFire does. SVM might help with this, so perhaps we should make this feature OpenCL 2 specific in the beginning.

Advertise!

Once OpenCL 1.2 support is feature-complete, this project will become interesting to other OpenCL developers. At this stage, I should probably advertise it on OpenCL-related websites, such as StreamComputing or the Khronos forums, in order to attract users and collect some feedback on what should be done next.

This would be best done after #3.

Fix memory leak in operator=

As it stands, the operator= of most classes representing OpenCL objects fails to release() the original object. One way to do it is as follows:

if(source.internal_id == internal_id) return *this;
release();
internal_id = source.internal_id;
retain();
return *this;

Finish OpenCL 1.2 runtime

While the most important functionality is there, there are still a number of things missing before I can call this a feature-complete OpenCL 1.2 implementation:

  • Image objects (groundwork is there, a lot is still missing)
  • Sampler objects
  • Kernel object image/sampler argument setup
  • Separate program object compilation
  • Native kernels

Support OpenCL 1.2 extensions

Some OpenCL extensions require some runtime support, and would thus be more usable if CLplusplus supported them. For OpenCL 1.2, the following extensions are concerned (page numbers refer to revision 22 of the OpenCL 1.2 extension specification).

Core functionality

  • "Creating a 2D image from a buffer" (pp. 129-130)
  • "Local and Private Memory Initialization" (p. 131) [just 1 context object property!]
  • "Terminating OpenCL contexts" (pp. 132-134)
  • "SPIR binaries" (pp. 135-136)
  • "OpenCL Installable Client Driver (ICD)" (pp. 137-141)
  • "Intermediate Language Programs" (pp. 153-157)

Interoperability with graphics APIs

  • "Creating CL context from a GL context or share group" (pp 41-49)
  • "Sharing Memory Objects with OpenGL / OpenGL ES" (pp. 50-62)
  • "Creating CL event objects from GL sync objects" (pp. 63-67)
  • "Sharing Memory Objects with Direct3D 10" (pp 68-84)
  • "DX9 Media Surface Sharing" (pp. 85-98)
  • "Sharing Memory Objects with Direct3D 11" (pp. 99-114)
  • "Depth and Depth-Stencil Images" (pp. 115-121)
  • "Sharing of CL/GL MSAA Textures" (pp. 122-128)
  • "Creating CL image objects from EGL images" (pp. 142-149)
  • "Creating CL event objects from EGL sync objects" (pp. 150-153)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.