All Projects → hughperkins → Coriander

hughperkins / Coriander

Licence: apache-2.0
Build NVIDIA® CUDA™ code for OpenCL™ 1.2 devices

Projects that are alternatives of or similar to Coriander

Tf Coriander
OpenCL 1.2 implementation for Tensorflow
Stars: ✭ 775 (+16.54%)
Mutual labels:  nvidia, intel, gpu, opencl, ubuntu, mac
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (-89.32%)
Mutual labels:  nvidia, intel, amd, gpu, opencl
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (-43.76%)
Mutual labels:  nvidia, intel, amd, gpu, opencl
Srmd Ncnn Vulkan
SRMD super resolution implemented with ncnn library
Stars: ✭ 186 (-72.03%)
Mutual labels:  nvidia, intel, amd, gpu
Realsr Ncnn Vulkan
RealSR super resolution implemented with ncnn library
Stars: ✭ 357 (-46.32%)
Mutual labels:  nvidia, intel, amd, gpu
Waifu2x Ncnn Vulkan
waifu2x converter ncnn version, runs fast on intel / amd / nvidia GPU with vulkan
Stars: ✭ 1,258 (+89.17%)
Mutual labels:  nvidia, intel, amd, gpu
gpu-passthrough
A GPU passthrough tutorial using libvirt and KVM on GNU/Linux
Stars: ✭ 57 (-91.43%)
Mutual labels:  ubuntu, amd, intel, nvidia
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+18.8%)
Mutual labels:  nvidia, amd, gpu, opencl
darknet
Darknet on OpenCL Convolutional Neural Networks on OpenCL on Intel & NVidia & AMD & Mali GPUs for macOS & GNU/Linux
Stars: ✭ 160 (-75.94%)
Mutual labels:  amd, opencl, intel, nvidia
Rainbowminer
GPU/CPU Mining script with intelligent profit-switching between miningpools, algorithms, miners, using all possible combinations of devices (NVIDIA, AMD, CPU). Features: actively maintained, uses the top actual miner programs (Bminer, Ccminer, Claymore, Dstm, EnemyZ, Sgminer, T-rex and more) easy setup wizard, webinterface, auto update.
Stars: ✭ 158 (-76.24%)
Mutual labels:  nvidia, amd, gpu
Staxrip
StaxRip is a video encoding app for Windows with a unrivaled feature set and usability.
Stars: ✭ 629 (-5.41%)
Mutual labels:  nvidia, intel, amd
Libcudacxx
The C++ Standard Library for your entire system.
Stars: ✭ 1,861 (+179.85%)
Mutual labels:  nvidia, llvm, gpu
Ocl
OpenCL for Rust
Stars: ✭ 453 (-31.88%)
Mutual labels:  nvidia, intel, amd
Shadowreplay Linux
Shadowplay's Replay Feature On Linux For Nvidia, AMD and Intel
Stars: ✭ 79 (-88.12%)
Mutual labels:  nvidia, intel, amd
Macos Egpu Cuda Guide
Set up CUDA for machine learning (and gaming) on macOS using a NVIDIA eGPU
Stars: ✭ 187 (-71.88%)
Mutual labels:  nvidia, gpu, mac
Autodesk-Fusion-360-for-Linux
This is a project, where I give you a way to use Autodesk Fusion 360 on Linux!
Stars: ✭ 810 (+21.8%)
Mutual labels:  amd, intel, nvidia
nix-install-vendor-gl
Ensure that a system-compatible OpenGL driver is available for `nix-shell`-encapsulated programs.
Stars: ✭ 22 (-96.69%)
Mutual labels:  amd, intel, nvidia
docker-nvidia-glx-desktop
MATE Desktop container designed for Kubernetes supporting OpenGL GLX and Vulkan for NVIDIA GPUs with WebRTC and HTML5, providing an open source remote cloud graphics or game streaming platform. Spawns its own fully isolated X Server instead of using the host X server, therefore not requiring /tmp/.X11-unix host sockets or host configuration.
Stars: ✭ 47 (-92.93%)
Mutual labels:  ubuntu, gpu, nvidia
gpustats
Statistics on GPUs
Stars: ✭ 21 (-96.84%)
Mutual labels:  amd, gpu, nvidia
Nplusminer
NPlusMiner + GUI | NVIDIA/AMD/CPU miner | AI | Autoupdate | MultiRig remote management
Stars: ✭ 75 (-88.72%)
Mutual labels:  nvidia, amd, gpu

Coriander

Build applications written in NVIDIA® CUDA™ code for OpenCL™ 1.2 devices.

Concept

  • leave applications in NVIDIA® CUDA™
  • compile into OpenCL 1.2
  • run on any OpenCL 1.2 GPU

How to use

  • Write an NVIDIA® CUDA™ sourcecode file, or find an existing one
  • Let's use cuda_sample.cu
  • Compile, using cocl:
$ cocl_py cuda_sample.cu
   ...
   ... (bunch of compily stuff) ...
   ...

    ./cuda_sample.cu compiled into ./cuda_sample

Run:

$ ./cuda_sample
Using Intel , OpenCL platform: Intel Gen OCL Driver
Using OpenCL device: Intel(R) HD Graphics 5500 BroadWell U-Processor GT2
hostFloats[2] 123
hostFloats[2] 222
hostFloats[2] 444

Options

What Coriander provides

  • compiler for host-side code, including memory allocation, copy, streams, kernel launches
  • compiler for device-side code, handling templated C++ code, converting it into bog-standard OpenCL 1.2 code
  • cuBLAS API implementations for GEMM, GEMV, SCAL, SAXPY (using Cedric Nugteren's CLBlast)
  • cuDNN API implementations for: convolutions (using im2col algorithm over Cedric Nugteren's CLBlast, pooling, ReLU, tanh, and sigmoid

How Coriander works

Kernel compilation proceeds in two steps:

Slides on the IWOCL website, here

Installation

Coriander development is carried out using the following platforms:

  • Ubuntu 16.04, with:
    • NVIDIA K80 GPU and/or NVIDIA K520 GPU (via aws)
  • Mac Book Pro 4th generation (thank you ASAPP :-) ), with:
    • Intel HD Graphics 530
    • Radeon Pro 450
    • Sierra OS

Other systems should work too, ideally. You will need at a minimum at least one OpenCL-enabled GPU, and appropriate OpenCL drivers installed, for the GPU. Both linux and Mac systems stand a reasonable chance of working ok.

For installation, please see installation

Plugins

You can install the following plugins:

  • Coriander-clblast: just do cocl_plugins.py install --repo-url https://github.com/hughperkins/coriander-clblast
  • Coriander-dnn: just do cocl_plugins.py install --repo-url https://github.com/hughperkins/coriander-dnn
  • Your plugin here?

How to create a plugin

Add to your own cmake project

  • use cocl_add_executable and cocl_add_library
  • see cmake usage

Testing

See testing

Assumptions/relaxations made by Coriander

See assumptions

Roadmap

Libraries

Coriander uses the following libraries:

  • clang/llvm: c/c++ parser/compiler; many contributors
  • thrust: parallel GPU library, from NVIDIA®
  • yaml-cpp: yaml for c++, by Jesse Beder
  • EasyCL: wrapper for OpenCL 1.2 boilerplate
  • argparsecpp: command-line parser for c++
  • gtest: unit tests for c++, from Google

Related projects

How to Cite

Please cite: CUDA-on-CL: a compiler and runtime for running NVIDIA® CUDA™ C++11 applications on OpenCL™ 1.2 Devices

License

Apache 2.0

News

  • June 23:
    • factorized CLBlast implementation of NVIDIA® CUDA™ cuBLAS API, into new plugin coriander-clblast
  • June 21:
    • created a new release v6.0.0, that marks a bunch of changes:
      • incorporates of course the earlier changes:
        • 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
        • the plugin architecture
        • factorizing the partial NVIDIA® CUDA™ cuDNN API implementation into a new plugin coriander-dnn
      • moved the default installation directory from /usr/local to ~/coriander
        • this means that plugins can be installed without sudo
        • it also makes it relatively easy to wipe and reinstall, for more effective jenkins testing
      • install_distro.py is now considerably more tested than a few days ago, and handles downloading llvm-4.0 automatically
  • Older news
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].