All Projects → jonysy → Parenchyma

jonysy / Parenchyma

An extensible HPC framework for CUDA, OpenCL and native CPU.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Parenchyma

Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (+426.76%)
Mutual labels:  nvidia, intel, amd, gpu, gpgpu, opencl, cuda
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+1012.68%)
Mutual labels:  nvidia, amd, parallel-computing, gpu, opencl, cuda
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (+223.94%)
Mutual labels:  gpu, gpgpu, opencl, cuda, hpc
Arrayfire
ArrayFire: a general purpose GPU library.
Stars: ✭ 3,693 (+5101.41%)
Mutual labels:  gpu, gpgpu, opencl, cuda, hpc
Arrayfire Python
Python bindings for ArrayFire: A general purpose GPU library.
Stars: ✭ 358 (+404.23%)
Mutual labels:  gpu, gpgpu, opencl, cuda, hpc
Arrayfire Rust
Rust wrapper for ArrayFire
Stars: ✭ 525 (+639.44%)
Mutual labels:  gpu, gpgpu, opencl, cuda, hpc
Coriander
Build NVIDIA® CUDA™ code for OpenCL™ 1.2 devices
Stars: ✭ 665 (+836.62%)
Mutual labels:  nvidia, intel, amd, gpu, opencl
Futhark
💥💻💥 A data-parallel functional programming language
Stars: ✭ 1,641 (+2211.27%)
Mutual labels:  gpu, gpgpu, opencl, cuda, hpc
Onemkl
oneAPI Math Kernel Library (oneMKL) Interfaces
Stars: ✭ 122 (+71.83%)
Mutual labels:  intel, parallel-computing, gpu, cuda, hpc
darknet
Darknet on OpenCL Convolutional Neural Networks on OpenCL on Intel & NVidia & AMD & Mali GPUs for macOS & GNU/Linux
Stars: ✭ 160 (+125.35%)
Mutual labels:  amd, opencl, intel, nvidia
Compute Runtime
Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver
Stars: ✭ 593 (+735.21%)
Mutual labels:  intel, gpu, gpgpu, opencl
Tf Coriander
OpenCL 1.2 implementation for Tensorflow
Stars: ✭ 775 (+991.55%)
Mutual labels:  nvidia, intel, gpu, opencl
Srmd Ncnn Vulkan
SRMD super resolution implemented with ncnn library
Stars: ✭ 186 (+161.97%)
Mutual labels:  nvidia, intel, amd, gpu
MatX
An efficient C++17 GPU numerical computing library with Python-like syntax
Stars: ✭ 418 (+488.73%)
Mutual labels:  hpc, gpu, cuda, gpgpu
Realsr Ncnn Vulkan
RealSR super resolution implemented with ncnn library
Stars: ✭ 357 (+402.82%)
Mutual labels:  nvidia, intel, amd, gpu
learn-gpgpu
Algorithms implemented in CUDA + resources about GPGPU
Stars: ✭ 37 (-47.89%)
Mutual labels:  opencl, parallel-computing, nvidia, gpgpu
Hipsycl
Implementation of SYCL for CPUs, AMD GPUs, NVIDIA GPUs
Stars: ✭ 377 (+430.99%)
Mutual labels:  gpu, gpgpu, opencl, cuda
Neanderthal
Fast Clojure Matrix Library
Stars: ✭ 927 (+1205.63%)
Mutual labels:  gpu, gpgpu, opencl, cuda
Bitcracker
BitCracker is the first open source password cracking tool for memory units encrypted with BitLocker
Stars: ✭ 463 (+552.11%)
Mutual labels:  gpu, gpgpu, opencl, cuda
Waifu2x Ncnn Vulkan
waifu2x converter ncnn version, runs fast on intel / amd / nvidia GPU with vulkan
Stars: ✭ 1,258 (+1671.83%)
Mutual labels:  nvidia, intel, amd, gpu

parenchyma

Join the chat Project Status License parenchyma

Parenchyma started off as a hard fork of Collenchyma (hence the name), an extensible HPC framework developed by the Autumn team as well as an amazing group of contributors. Aside from the name and overall design, the two libraries are quite dissimilar to each other (e.g., auto-sync (thanks to @alexandermorozov), async transfers, the fallback mechanism, etc.). Therefore, before migrating over, one should go through the documentation carefully as to not make the mistake of misusing the framework. Not doing so may result in unintended behavior for which Parenchyma developers/contributors are not responsible.

Many of the original comments used for documentation purposes remain in the code base along with a few necessary additions/modifications.

Disclaimer: Parenchyma is currently undergoing extensive refactoring and improvement. Therefore, it is likely that many of the features available in the original Collenchyma project may not yet be available in the Parenchyma project. It is also likely that certain features may never be available in the Parenchyma project, as the different approaches that are currently being considered may prove to be better than the original approach.

Tensor creation

The easiest way to create a tensor is to use the array macro:

#[macro_use(array)]
extern crate parenchyma;

use parenchyma::prelude::*;

let t: SharedTensor<i32> = array![
    [
        [1,2,3],
        [4,5,6]
    ],
    [
        [11,22,33],
        [44,55,66]
    ],
    [
        [111,222,333],
        [444,555,666]
    ],
    [
        [1111,2222,3333],
        [4444,5555,6666]
    ]
].into();

println!("{:?}", t);

// shape=[4, 2, 3], strides=[6, 3, 1], layout=C (0x1), type=i32
//
// [[[1, 2, 3],
//   [4, 5, 6]],
//  [[11, 22, 33],
//   [44, 55, 66]],
//  [[111, 222, 333],
//   [444, 555, 666]],
//  [[1111, 2222, 3333],
//   [4444, 5555, 6666]]]

Synchronizing Data

Synchronizing data across multiple compute devices and backends is straightforward.

#[macro_use(array)]
extern crate parenchyma;

use parenchyma::prelude::*;

let ref cuda: Backend = Backend::new::<Cuda>()?;

let t = array![[1.5, 2.3, 3.7], [4.8, 5.2, 6.9]].into();

t.synchronize(cuda)?;

License

Dual licensed under

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