All Projects → doe300 → Vc4c

doe300 / Vc4c

Licence: mit
Compiler for the VC4CL OpenCL implementation

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Vc4c

Glsl
GLSL parser for Rust
Stars: ✭ 145 (+43.56%)
Mutual labels:  compiler, spir-v
Reshade
A generic post-processing injector for games and video software.
Stars: ✭ 2,285 (+2162.38%)
Mutual labels:  compiler, spir-v
Futhark
💥💻💥 A data-parallel functional programming language
Stars: ✭ 1,641 (+1524.75%)
Mutual labels:  compiler, opencl
Floor
A C++ Compute/Graphics Library and Toolchain enabling same-source CUDA/Host/Metal/OpenCL/Vulkan C++ programming and execution.
Stars: ✭ 166 (+64.36%)
Mutual labels:  spir-v, opencl
Vc4cl
OpenCL implementation running on the VideoCore IV GPU of the Raspberry Pi models
Stars: ✭ 611 (+504.95%)
Mutual labels:  raspberry, opencl
Amplifier.net
Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
Stars: ✭ 92 (-8.91%)
Mutual labels:  compiler, opencl
Glslang
Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
Stars: ✭ 2,034 (+1913.86%)
Mutual labels:  compiler, spir-v
sycl-bench
SYCL Benchmark Suite
Stars: ✭ 30 (-70.3%)
Mutual labels:  opencl, spir-v
Bytecoder
Rich Domain Model for JVM Bytecode and Framework to interpret and transpile it.
Stars: ✭ 401 (+297.03%)
Mutual labels:  compiler, opencl
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (+270.3%)
Mutual labels:  compiler, opencl
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+1034.65%)
Mutual labels:  compiler, spir-v
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+7319.8%)
Mutual labels:  compiler, opencl
Spvgentwo
SpvGenTwo is a SPIR-V building and parsing library written in plain C++17 without any dependencies. No STL or other 3rd-Party library needed.
Stars: ✭ 74 (-26.73%)
Mutual labels:  compiler, opencl
Evm2wasm
[ORPHANED] Transcompiles EVM code to eWASM
Stars: ✭ 96 (-4.95%)
Mutual labels:  compiler
Pyast64
Compile a subset of the Python AST to x64-64 assembler
Stars: ✭ 93 (-7.92%)
Mutual labels:  compiler
Selfie
An educational software system of a tiny self-compiling C compiler, a tiny self-executing RISC-V emulator, and a tiny self-hosting RISC-V hypervisor.
Stars: ✭ 1,318 (+1204.95%)
Mutual labels:  compiler
Bqn
An APL-like programming language. Self-hosted!
Stars: ✭ 100 (-0.99%)
Mutual labels:  compiler
Fetlang
Fetish-themed programming language
Stars: ✭ 1,337 (+1223.76%)
Mutual labels:  compiler
Knlmeanscl
An optimized OpenCL implementation of the Non-local means de-noising algorithm
Stars: ✭ 92 (-8.91%)
Mutual labels:  opencl
Scheje
A little scheme implementation on top of Clojure
Stars: ✭ 92 (-8.91%)
Mutual labels:  compiler

Status

CircleCI

VC4C

Compiler for the VC4CL OpenCL-implementation. This compiler supports OpenCL C (via LLVM or SPIRV-LLVM), LLVM-IR and SPIR-V code, depending on the build configuration.

Required software

  • A C++14 capable compiler (Raspbian stretch ships with GCC 6.x, which is supported. GCC 4.9 used by Raspbian jessie is no longer supported! The clang from the Raspbian repository is also okay and can double as OpenCL compiler, see below)
  • CMake in version >= 3.13
  • A suitable OpenCL 1.2 compiler. Supported versions are the "original" LLVM/CLang (version 3.9 and up, using this one is recommended), which can be found in the Raspbian repositories, the Khronos SPIRV-LLVM Translator built on top of the "original" LLVM/CLang or the deprecated Khronos SPIRV-LLVM with the Khronos SPIR-V compiler front-end (only the tools clang and llvm-spirv need to be built).
  • The source-code for VC4CLStdLib for the GPU-side standard-library

Build

The following configuration variables can be set in CMake:

  • BUILD_TESTING toggles building of test program
  • CMAKE_BUILD_TYPE set to Debug, Release, asan, tsan or usbsan to build for the given debug/release mode or with sanitizers enabled
  • MULTI_THREADED toggles building with multi-threaded support
  • VERIFY_OUTPUT toggles the usage of vc4asm to validate the generated machine code
  • VC4CL_STDLIB_DIR specifies an optional folder where the development headers for the GPU-side VC4CLStdLib are located, by default looks in ../VC4CLStdLib/include/
  • CROSS_COMPILE toggles whether to cross-compile for the Raspberry Pi. NOTE: The Raspberry Pi cross-compiler is no longer supported, since it is based on an ancient GCC 4.9
  • CROSS_COMPILER_PATH sets the root path to the cross compiler to use
  • SPIRV_FRONTEND toggles building of the SPIR-V front-end, requires SPIRV-LLVM
  • SPIRV_COMPILER_ROOT sets the root-path to binaries of the SPIRV-LLVM compiler, defaults to /opt/SPIRV-LLVM/build/bin/
  • SPIRV_TRANSLATOR_ROOT sets the root path to the binaries of the SPIRV-LLVM Translator compiler, defaults to /opt/SPIRV-LLVM-Translator/build/tools/llvm-spirv/. This takes precedence over SPIRV_COMPILER_ROOT
  • LLVMLIB_FRONTEND enables the LLVM library front-end which uses the LLVM library to parse the LLVM IR module generated by the pre-compilation (recommended!)

Package

Run cpack -G DEB to create a debian package.

NOTE: Any compilation error when packaging can be ignored!

Environment Variables

  • VC4C_OPT can add compilation options, which is passed to Clang opt. Mainly for performance experiments.

Known Issues

If the VC4CLStdLib is updated, the LLVM pre-compiled header (PCH) needs to be rebuilt. For this to happen, simply delete the file VC4CLStdLib.h.pch (located in the source/installation directory of the VC4CLStdLib project, depending on whether it was installed) and rebuild the VC4C compiler (or just the vc4cl-stdlib target).

When BUILD_TESTING is on, some of the files (TestConversionFunctions.cpp.o) have to be compiled in one thread (make -j 1).

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