Giter Club home page Giter Club logo

umpalumpa's Introduction

CMake Quality Gate Status

Umpalumpa

Umpalumpa is a framework which aims to manage complex workloads on heterogeneous computers. Umpalumpa combines three aspects that ease programming and optimize code performance.

Firstly, it implements data-centric design, where data are described by their physical properties (e. g. , location in memory, size) and logical properties (e.g. , dimensionality, shape, padding).

Secondly, Umpalumpa utilizes task-based parallelism to schedule tasks on heterogeneous nodes.

Thirdly, tasks can be dynamically autotuned on a source code level according to the hardware where the task is executed and the processed data.

Altogether, Umpalumpa allows for the implementation of a complex workload, which is automatically executed on CPUs and accelerators, and which allows autotuning to maximize the performance with the given hardware and data input. Umpalumpa focuses on image processing workloads, but the concept is generic and can be extended to different types of workloads.

We demonstrated the usability of the proposed framework on two previously accelerated applications from cryogenic electron microscopy: 3D Fourier reconstruction and Movie alignment. Compared to the original implementations, Umpalumpa reduces the complexity and improves the maintainability of the main applications' loops while improving performance through automatic memory management and autotuning of the GPU kernels.

Publication

Submitted

Dependencies

Cmake 3.14 or newer

CUDA

FFTW

C++17 compatible compiler

StarPU (optional but highly recommended)

spdlog (automatically fetched)

KTT (automatically fetched)

libtbb (for tests)

Instalation

source path_to_starpu_installation/bin/starpu_env
export CUDACXX=path_to_CUDA_installation/bin/nvcc
mkdir build
cd build
cmake ..
make

Keywords

image processing, task-based systems, auto-tuning, data-aware architecture, CUDA

umpalumpa's People

Contributors

dstrelak avatar

Stargazers

 avatar

Watchers

 avatar  avatar

umpalumpa's Issues

FRStarPUTest failing

Branch: master

When running AFR tests, sometimes (maybe missing sync / race condition) I see

/home/david/git/umpalumpa/tests/operations/fourier_reconstruction/afr_common.hpp:276: Failure
Expected: (v.real()) != (0.f), actual: 0 vs 0
volume at 3 6 3
[  FAILED  ] FRCUDATest.YZPlaneFastDynamic (16641 ms)

Notice that volume coordinates tend to differ and multiple voxels are affected.
Those values should not be empty, so maybe the result is not properly fetched back to main memory.

Other examples:

/home/david/git/umpalumpa/tests/algorithms/fourier_reconstruction/afr_common.hpp:276: Failure
Expected: (v.real()) != (0.f), actual: 0 vs 0
volume at 4 6 4
[  FAILED  ] FRStarPUTest.YZPlanePreciseDynamic (6 ms)
/home/david/git/umpalumpa/tests/algorithms/fourier_reconstruction/afr_common.hpp:276: Failure
Expected: (v.real()) != (0.f), actual: 0 vs 0
volume at 3 6 3
[  FAILED  ] FRStarPUTest.XYPlaneFastDynamic (5 ms)

libumpalumpa/operations/initialization/cuda.cpp not implemented properly

Branch: master

When running tests, cuda and starpu versions crash with

[Info] Initializing tuner for device NVIDIA GeForce RTX 2060 with Max-Q Design
unknown file: Failure
C++ exception with description "vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)" thrown in the test body.

Also, it can only set values to 0 now, which is limiting

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.