All Projects → codeplaysoftware → Computecpp Sdk

codeplaysoftware / Computecpp Sdk

Licence: other
Collection of samples and utilities for using ComputeCpp, Codeplay's SYCL implementation

Programming Languages

c
50402 projects - #5 most used programming language
cpp
1120 projects
cplusplus
227 projects
cpp11
221 projects

Projects that are alternatives of or similar to Computecpp Sdk

Openclpapers
A Collection of Articles and other OpenCL Papers
Stars: ✭ 37 (-84.52%)
Mutual labels:  gpgpu, opencl
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (-3.77%)
Mutual labels:  gpgpu, opencl
Sycl Dnn
SYCL-DNN is a library implementing neural network algorithms written using SYCL
Stars: ✭ 67 (-71.97%)
Mutual labels:  gpgpu, opencl
Clinfo
Print all known information about all available OpenCL platforms and devices in the system
Stars: ✭ 186 (-22.18%)
Mutual labels:  gpgpu, opencl
Hashcat
World's fastest and most advanced password recovery utility
Stars: ✭ 11,014 (+4508.37%)
Mutual labels:  gpgpu, opencl
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 (+231.8%)
Mutual labels:  gpgpu, opencl
Compute
A C++ GPU Computing Library for OpenCL
Stars: ✭ 1,192 (+398.74%)
Mutual labels:  gpgpu, opencl
Arrayfire Rust
Rust wrapper for ArrayFire
Stars: ✭ 525 (+119.67%)
Mutual labels:  gpgpu, 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 (-61.51%)
Mutual labels:  gpgpu, opencl
Knlmeanscl
An optimized OpenCL implementation of the Non-local means de-noising algorithm
Stars: ✭ 92 (-61.51%)
Mutual labels:  gpgpu, opencl
Opencl Intercept Layer
Intercept Layer for Debugging and Analyzing OpenCL Applications
Stars: ✭ 189 (-20.92%)
Mutual labels:  gpgpu, opencl
Spoc
Stream Processing with OCaml
Stars: ✭ 115 (-51.88%)
Mutual labels:  gpgpu, opencl
Vexcl
VexCL is a C++ vector expression template library for OpenCL/CUDA/OpenMP
Stars: ✭ 626 (+161.92%)
Mutual labels:  gpgpu, opencl
Neanderthal
Fast Clojure Matrix Library
Stars: ✭ 927 (+287.87%)
Mutual labels:  gpgpu, opencl
Compute Runtime
Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver
Stars: ✭ 593 (+148.12%)
Mutual labels:  gpgpu, opencl
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (-70.29%)
Mutual labels:  gpgpu, opencl
Tornadovm
TornadoVM: A practical and efficient heterogeneous programming framework for managed languages
Stars: ✭ 479 (+100.42%)
Mutual labels:  gpgpu, opencl
John
John the Ripper jumbo - advanced offline password cracker, which supports hundreds of hash and cipher types, and runs on many operating systems, CPUs, GPUs, and even some FPGAs
Stars: ✭ 5,656 (+2266.53%)
Mutual labels:  gpgpu, opencl
Cekirdekler
Multi-device OpenCL kernel load balancer and pipeliner API for C#. Uses shared-distributed memory model to keep GPUs updated fast while using same kernel on all devices(for simplicity).
Stars: ✭ 76 (-68.2%)
Mutual labels:  gpgpu, opencl
Futhark
💥💻💥 A data-parallel functional programming language
Stars: ✭ 1,641 (+586.61%)
Mutual labels:  gpgpu, opencl

ComputeCpp™

ComputeCpp SDK Readme

Build Status

Introduction

This is the README for the ComputeCpp SDK, a collection of sample code, utilities and tools for Codeplay’s ComputeCpp, an implementation of the SYCL programming standard. You can find more information at:

Contents

  • CMakeLists.txt
    • The entry point for this project’s CMake configuration. Adds samples/ subdirectory and optionally adds tests.
  • LICENSE.txt
    • The license this package is available under: Apache 2.0
  • README.md
    • This readme file
  • cmake/
    • Contains a CMake module for integrating ComputeCpp with existing projects. See later in this document for a description of the CMake module provided. There are also toolchains for generic GCC-like setups as well as the poky toolchain.
  • include/
    • add this directory to your include search path to be able to use SDK code in your own projects (for example, the virtual pointer utility).
  • samples/
    • A collection of sample SYCL code, tested on ComputeCpp, provided as a learning resource and starting point for new SYCL software. The samples are built with CMake.
  • tests/
    • Tests for the utilities in the SDK.
  • tools/
    • Useful tools for working with SYCL code and ComputeCpp. Includes a simple driver script for compiling SYCL code with ComputeCpp, an example Makefile and other utilities.
  • util/
    • Example utility code that we expect will be useful for other projects as a starting point.

Supported Platforms

The master branch of computecpp-sdk is regularly tested with the "Supported" hardware listed on the ComputeCpp Supported Platforms page.

Pre-requisites

  • The samples should work with any SYCL 1.2.1 implementation, though have only been tested with ComputeCpp.
  • OpenCL 1.2-capable hardware and drivers with SPIR 1.2/SPIR-V support
  • C++11-compliant compiler and libstdc++ on GNU/Linux (GCC 4.9+, Clang 3.6+)
  • Microsoft Visual C++ 2015/2017 on Windows
  • CMake 3.4.3 and newer

Getting Started

On the Codeplay website there is a step-by-step guide to building and running the ComputeCpp SDK samples. There is also a guide to SYCL that serves as an introduction to SYCL development. Additionally, there is an Integration guide should you wish to add ComputeCpp to existing projects.

Setup

CMake files are provided as a build system for this software. CMake version 3.4.3 is required at minimum, though later versions of CMake should continue to be compatible.

At minimum, one CMake variable is required to get the sample code building - ComputeCpp_DIR. This variable should point to the root directory of the ComputeCpp install (i.e. the directory with the the folders bin, include, lib and so on). You can also specify COMPUTECPP_SDK_BUILD_TESTS to add the tests/ subdirectory to the build, which will build Gtest-based programs testing the legacy pointer and virtual pointer classes. Some samples have optional OpenMP support. You can enable it by setting COMPUTECPP_SDK_USE_OPENMP to ON in CMake.

You can additionally specify CMAKE_BUILD_TYPE and CMAKE_INSTALL_PREFIX to choose a Debug or Release build and the location you’d like to be used when the "install" target is built. The install target currently will copy all the sample binaries to the directory of your choosing.

Lastly, the SDK will build targeting spir64 IR by default. This will work on most devices, but won’t work on NVIDIA (for example). To that end, you can specify -DCOMPUTECPP_BITCODE=target, which can be any of spir[64], spirv[64] or ptx64. It is possible to specify multiple targets to COMPUTECPP_BITCODE, as a CMake list. Note that only the Professional Edition of ComputeCpp supports building multiple device targets.

If you would like to crosscompile the SDK targeting some other platform, there are toolchain files available in the cmake/toolchains directory. They require certain variables pointing to the root of the toolchain you are using to be set in the environment. They cannot be specificed in the CMake cache. The toolchains will identify which variables have not been set when used.

Troubleshooting

The sample code should compile without error on our supported platforms. If you run into trouble, or think you have found a bug, we have a support forum available through the ComputeCpp website.

Maintainers

This SDK is maintained by Codeplay Software Ltd. If you have any problems, please contact [email protected].

Acknowledgements

This repository contains code written by Sean Barrett (stb_image code in the Gaussian blur sample) and Charles Salvia (the stack allocator used in the smart pointer sample). Please see the files for their respective licences.

Contributions

This SDK is licensed under the Apache 2.0 license. Patches are very welcome! If you have an idea for a new sample, different build system integration or even a fix for something that is broken, please get in contact.

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