hadrieng2 / cl-plusplus Goto Github PK
View Code? Open in Web Editor NEWA more modern C++ wrapper to OpenCL
License: GNU General Public License v3.0
A more modern C++ wrapper to OpenCL
License: GNU General Public License v3.0
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.
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).
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.
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.
Work is needed in order to determine what should be done in order to support OpenCL 2.0.
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;
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.
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:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.