All Projects → vosen → Zluda

vosen / Zluda

Licence: other
CUDA on Intel GPUs

Programming Languages

rust
11053 projects

Labels

Projects that are alternatives of or similar to Zluda

Marian
Fast Neural Machine Translation in C++
Stars: ✭ 777 (-17.08%)
Mutual labels:  cuda
Cudadbclustering
Clustering via Graphics Processor, using NVIDIA CUDA sdk to preform database clustering on the massively parallel graphics card processor
Stars: ✭ 6 (-99.36%)
Mutual labels:  cuda
Cudajacobi
CUDA implementation of the Jacobi method
Stars: ✭ 19 (-97.97%)
Mutual labels:  cuda
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (-15.69%)
Mutual labels:  cuda
Pytorch Loss
label-smooth, amsoftmax, focal-loss, triplet-loss, lovasz-softmax. Maybe useful
Stars: ✭ 812 (-13.34%)
Mutual labels:  cuda
Gmatrix
R package for unleashing the power of NVIDIA GPU's
Stars: ✭ 16 (-98.29%)
Mutual labels:  cuda
Accelerate
Embedded language for high-performance array computations
Stars: ✭ 751 (-19.85%)
Mutual labels:  cuda
Thor
Atmospheric fluid dynamics solver optimized for GPUs.
Stars: ✭ 23 (-97.55%)
Mutual labels:  cuda
Libcudarange
An interval arithmetic and affine arithmetic library for NVIDIA CUDA
Stars: ✭ 5 (-99.47%)
Mutual labels:  cuda
Libomptarget
Stars: ✭ 18 (-98.08%)
Mutual labels:  cuda
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (-15.37%)
Mutual labels:  cuda
Scikit Cuda
Python interface to GPU-powered libraries
Stars: ✭ 803 (-14.3%)
Mutual labels:  cuda
Wheels
Performance-optimized wheels for TensorFlow (SSE, AVX, FMA, XLA, MPI)
Stars: ✭ 891 (-4.91%)
Mutual labels:  cuda
Numba
NumPy aware dynamic Python compiler using LLVM
Stars: ✭ 7,090 (+656.67%)
Mutual labels:  cuda
Sepconv Slomo
an implementation of Video Frame Interpolation via Adaptive Separable Convolution using PyTorch
Stars: ✭ 918 (-2.03%)
Mutual labels:  cuda
Ethereum nvidia miner
💰 USB flash drive ISO image for Ethereum, Zcash and Monero mining with NVIDIA graphics cards and Ubuntu GNU/Linux (headless)
Stars: ✭ 772 (-17.61%)
Mutual labels:  cuda
Ddsh Tip2018
source code for paper "Deep Discrete Supervised Hashing"
Stars: ✭ 16 (-98.29%)
Mutual labels:  cuda
Neanderthal
Fast Clojure Matrix Library
Stars: ✭ 927 (-1.07%)
Mutual labels:  cuda
Lattice net
Fast Point Cloud Segmentation Using Permutohedral Lattices
Stars: ✭ 23 (-97.55%)
Mutual labels:  cuda
Neuralsuperresolution
Real-time video quality improvement for applications such as video-chat using Perceptual Losses
Stars: ✭ 18 (-98.08%)
Mutual labels:  cuda

Notice: Due to private reasons I am currently unable to continue developing this project. If you want to take it over, fork it and contact me at [email protected]

ZLUDA

ZLUDA is a drop-in replacement for CUDA on Intel GPU. ZLUDA allows to run unmodified CUDA applications using Intel GPUs with near-native performance (more below). It works with current integrated Intel UHD GPUs and will work with future Intel Xe GPUs

Performance

ZLUDA performance has been measured with GeekBench 5.2.3 on Intel UHD 630.
One measurement has been done using OpenCL and another measurement has been done using CUDA with Intel GPU masquerading as a (relatively slow) NVIDIA GPU with the help of ZLUDA. Both measurements use the same GPU.

Performance below is normalized to OpenCL performance. 110% means that ZLUDA-implemented CUDA is 10% faster on Intel UHD 630.

Performance graph

ZLUDA - detailed results on Geekbench.com

OpenCL - detailed results on Geekbench.com

Overall, ZLUDA is slower in GeekBench by roughly 2%.

Explanation of the results

  • Why is ZLUDA faster in some benchmarks?
    This has not been precisely pinpointed to one thing or another but it's likely a combination of things:
    • ZLUDA uses Level 0, which in general is a more low level, high performance API than OpenCL
    • Tying to the previous point, currently ZLUDA does not support asynchronous execution. This gives us an unfair advantage in a benchmark like GeekBench. GeekBench exclusively uses CUDA synchronous APIs
    • There is a set of GPU instructions which are available on both NVIDIA hardware and Intel hardware, but are not exposed through OpenCL. We are comparing NVIDIA GPU optimized code with the more general OpenCL code. It's a lucky coincidence (and a credit to the underlying Intel Graphics Compiler) that this code also works well on an Intel GPU
  • Why is OpenCL faster in Canny and Horizon Detection?
    Authors of CUDA benchmarks used CUDA functions atomicInc and atomicDec which have direct hardware support on NVIDIA cards, but no hardware support on Intel cards. They have to be emulated in software, which limits performance
  • Why is ZLUDA slower in the remaining benchmarks?
    The reason is unknown. Most likely, in some tests we compile from suboptimal NVIDIA GPU code and in other tests ZLUDA itself is emitting suboptimal Intel GPU code. For example, SFFT used to be even slower before PR #22

Details

  • Is ZLUDA a drop-in replacement for CUDA?
    Yes, but certain applications use CUDA in ways which make it incompatible with ZLUDA
  • What is the status of the project?
    This project is a Proof of Concept. About the only thing that works currently is Geekbench. It's amazingly buggy and incomplete. You should not rely on it for anything serious
  • Is it an Intel project? Is it an NVIDIA project?
    No, it's a private project
  • What is the performance?
    Performance can be close to the performance of similarly written OpenCL code (see GeekBench results in the previous section). NVIDIA GPUs and Intel GPUs have different architecture and feature set. Consequently, certain NVIDIA features have to be emulated in ZLUDA with performance penalty. Additionally, performance of ZLUDA will be always lower than the performance of code specifically optimized for Intel GPUs
  • How it's different from AMD HIP or Intel DPC++ Compatibility toolkit?
    Both are porting toolkits which require programmer's effort to port applications to the API in question. With ZLUDA existing applications "just work" on an Intel GPU (if you are lucky and ZLUDA supports the particular subset of CUDA)
  • Which Intel GPU are supported?
    Intel Gen9 and newer (Skylake and newer) which are supported by Intel Level 0
  • Does ZLUDA support AMD GPUs?
    Certainly not currently, but it might be technically possible

Usage

Warning: this is a very incomplete proof of concept. It's probably not going to work with your application. ZLUDA currently works only with applications which use CUDA Driver API or statically-linked CUDA Runtime API - dynamically-linked CUDA Runtime API is not supported at all

Windows

You should have the most recent Intel GPU drivers installed.
Run your application like this:

<ZLUDA_DIRECTORY>\zluda_with.exe -- <APPLICATION> <APPLICATIONS_ARGUMENTS>

Linux

You should install most recent run-time driver packages as outlined here: https://dgpu-docs.intel.com/installation-guides/index.html.
Run your application like this:

LD_LIBRARY_PATH=<ZLUDA_DIRECTORY> <APPLICATION> <APPLICATIONS_ARGUMENTS>

Building

You should have a relatively recent version of Rust installed, then you just do:

cargo build --release

in the main directory of the project.

Linux

You should install most recent run-time an developer driver packages as outlined here: https://dgpu-docs.intel.com/installation-guides/index.html. Additionally, you should have ocl-icd-opencl-dev (or equivalent) installed.
If you are building on Linux you must also symlink (or rename) the ZLUDA output binaries after ZLUDA build finishes:

ln -s libnvcuda.so target/release/libcuda.so
ln -s libcuda.so target/release/libcuda.so.1

Contributing

If you want to develop ZLUDA itself, read CONTRIBUTING.md, it contains instructions how to set up dependencies and run tests

License

This software is dual-licensed under either the Apache 2.0 license or the MIT license. See LICENSE-APACHE or LICENSE-MIT for details

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].