{"id":13419714,"url":"https://github.com/hughperkins/coriander","last_synced_at":"2026-04-08T04:01:29.576Z","repository":{"id":11357642,"uuid":"69413282","full_name":"hughperkins/coriander","owner":"hughperkins","description":"Build NVIDIA® CUDA™ code for OpenCL™ 1.2 devices","archived":false,"fork":false,"pushed_at":"2025-04-23T13:16:38.000Z","size":8184,"stargazers_count":866,"open_issues_count":40,"forks_count":87,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-10-20T05:50:19.154Z","etag":null,"topics":["amd","coriander","gpu","intel","mac","nvidia","opencl","radeon","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"LLVM","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hughperkins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"buy_me_a_coffee":"rlhugh"}},"created_at":"2016-09-28T01:28:05.000Z","updated_at":"2025-10-20T05:49:51.000Z","dependencies_parsed_at":"2024-06-21T23:18:45.134Z","dependency_job_id":"305b4b40-69b8-4b8b-bca2-fbf65277246b","html_url":"https://github.com/hughperkins/coriander","commit_stats":{"total_commits":1929,"total_committers":10,"mean_commits":192.9,"dds":"0.014515292897874565","last_synced_commit":"7c6b65bc08a25a6bce21efe7b86be8fa985597af"},"previous_names":["hughperkins/cuda-on-cl"],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/hughperkins/coriander","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughperkins%2Fcoriander","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughperkins%2Fcoriander/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughperkins%2Fcoriander/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughperkins%2Fcoriander/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hughperkins","download_url":"https://codeload.github.com/hughperkins/coriander/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughperkins%2Fcoriander/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31539229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amd","coriander","gpu","intel","mac","nvidia","opencl","radeon","ubuntu"],"created_at":"2024-07-30T22:01:19.718Z","updated_at":"2026-04-08T04:01:29.553Z","avatar_url":"https://github.com/hughperkins.png","language":"LLVM","funding_links":["https://buymeacoffee.com/rlhugh"],"categories":["TODO scan for Android support in followings","LLVM"],"sub_categories":[],"readme":"# Coriander\n\nBuild applications written in NVIDIA® CUDA™ code for OpenCL™ 1.2 devices.\n\n## Concept\n\n- leave applications in NVIDIA® CUDA™\n- compile into OpenCL 1.2\n- run on any OpenCL 1.2 GPU\n\n## How to use\n\n- Write an NVIDIA® CUDA™ sourcecode file, or find an existing one\n- Let's use [cuda_sample.cu](https://github.com/hughperkins/Coriander/blob/76a849d9510276bc67167c9a7676d64ff04c3e4a/test/cuda_sample.cu)\n- Compile, using `cocl`:\n```\n$ cocl_py cuda_sample.cu\n   ...\n   ... (bunch of compily stuff) ...\n   ...\n\n    ./cuda_sample.cu compiled into ./cuda_sample\n\n```\nRun:\n```\n$ ./cuda_sample\nUsing Intel , OpenCL platform: Intel Gen OCL Driver\nUsing OpenCL device: Intel(R) HD Graphics 5500 BroadWell U-Processor GT2\nhostFloats[2] 123\nhostFloats[2] 222\nhostFloats[2] 444\n```\n\n\u003cimg src=\"doc/img/mac_run_cuda_sample.png?raw=true\" /\u003e\n\n[Options](doc/options.md)\n\n## What Coriander provides\n\n- compiler for host-side code, including memory allocation, copy, streams, kernel launches\n- compiler for device-side code, handling templated C++ code, converting it into bog-standard OpenCL 1.2 code\n- cuBLAS API implementations for GEMM, GEMV, SCAL, SAXPY (using Cedric Nugteren's [CLBlast](https://github.com/cnugteren/CLBlast))\n- cuDNN API implementations for: convolutions (using `im2col` algorithm over Cedric Nugteren's [CLBlast](https://github.com/cnugteren/CLBlast), pooling, ReLU, tanh, and sigmoid\n\n## How Coriander works\n\nKernel compilation proceeds in two steps:\n\n\u003cimg src=\"doc/img/kernelcompilation.png?raw=true\" /\u003e\n\nSlides on the [IWOCL](http://iwocl.org) website, [here](http://www.iwocl.org/wp-content/uploads/iwocl2017-hugh-perkins-cuda-cl.pdf)\n\n## Installation\n\nCoriander development is carried out using the following platforms:\n- Ubuntu 16.04, with:\n  - NVIDIA K80 GPU and/or NVIDIA K520 GPU (via aws)\n- Mac Book Pro 4th generation (thank you [ASAPP](http://asapp.com) :-) ), with:\n  - Intel HD Graphics 530\n  - Radeon Pro 450\n  - Sierra OS\n\nOther systems should work too, ideally.  You will need at a minimum at least one OpenCL-enabled GPU,\nand appropriate OpenCL drivers installed, for the GPU. Both linux and Mac systems stand a reasonable chance of working ok.\n\nFor installation, please see [installation](doc/installation.md)\n\n## Plugins\n\nYou can install the following plugins:\n\n- [Coriander-clblast](https://github.com/hughperkins/coriander-clblast): just do `cocl_plugins.py install --repo-url https://github.com/hughperkins/coriander-clblast`\n- [Coriander-dnn](https://github.com/hughperkins/coriander-dnn): just do `cocl_plugins.py install --repo-url https://github.com/hughperkins/coriander-dnn`\n- Your plugin here?\n\n[How to create a plugin](doc/plugins.md)\n\n## Add to your own `cmake` project\n\n- use `cocl_add_executable` and `cocl_add_library`\n- see [cmake usage](doc/cmake_usage.md)\n\n## Testing\n\nSee [testing](doc/testing.md)\n\n## Assumptions/relaxations made by Coriander\n\nSee [assumptions](doc/assumptions.md)\n\n## Roadmap\n\n\u003cimg src=\"doc/img/roadmap.png?raw=true\" /\u003e\n\n## Libraries\n\nCoriander uses the following libraries:\n\n- [clang/llvm](http://llvm.org/): c/c++ parser/compiler; many contributors\n- [thrust](https://github.com/thrust/thrust): parallel GPU library, from NVIDIA®\n- [yaml-cpp](https://github.com/jbeder/yaml-cpp): yaml for c++, by Jesse Beder\n- [EasyCL](https://github.com/hughperkins/EasyCL): wrapper for OpenCL 1.2 boilerplate\n- [argparsecpp](https://github.com/hughperkins/argparsecpp): command-line parser for c++\n- [gtest](https://github.com/google/googletest): unit tests for c++, from Google\n\n## Related projects\n\n- [Eigen-CL](https://bitbucket.org/hughperkins/eigen/commits/branch/eigen-cl): Minimally-tweaked fork of Eigen, for OpenCL 1.2\n- [tf-coriander](https://github.com/hughperkins/tf-coriander): Tensorflow for OpenCL-1.2\n\n## How to Cite\n\nPlease cite: [CUDA-on-CL: a compiler and runtime for running NVIDIA® CUDA™ C++11 applications on OpenCL™ 1.2 Devices](http://dl.acm.org/citation.cfm?id=3078156)\n\n## License\n\n[Apache 2.0](LICENSE)\n\n## News\n\n- June 23:\n  - factorized CLBlast implementation of NVIDIA® CUDA™ cuBLAS API, into new plugin [coriander-clblast](https://github.com/hughperkins/coriander-clblast)\n- June 21:\n  - created a new release [v6.0.0](https://github.com/hughperkins/coriander/releases/tag/v6.0.0), that marks a bunch of changes:\n    - incorporates of course the earlier changes:\n      - took some big steps towards portability and Windows compilation, ie using python 2.7 scripts, rather than bash scripts, and fixing many Windows-related compilation issues\n      - the plugin architecture\n      - factorizing the partial NVIDIA® CUDA™ cuDNN API implementation into a new plugin [coriander-dnn](https://github.com/hughperkins/coriander-dnn)\n    - moved the default installation directory from `/usr/local` to `~/coriander`\n      - this means that plugins can be installed without `sudo`\n      - it also makes it relatively easy to wipe and reinstall, for more effective jenkins testing\n    - `install_distro.py` is now considerably more tested than a few days ago, and handles downloading `llvm-4.0` automatically\n- [Older news](doc/news.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhughperkins%2Fcoriander","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhughperkins%2Fcoriander","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhughperkins%2Fcoriander/lists"}