Partr - Parallel Tasks Runtime

Overview

Parallel Tasks Runtime

A parallel task execution runtime that uses parallel depth-first (PDF) scheduling [1].

[1] Shimin Chen, Phillip B. Gibbons, Michael Kozuch, Vasileios Liaskovitis, Anastassia Ailamaki, Guy E. Blelloch, Babak Falsafi, Limor Fix, Nikos Hardavellas, Todd C. Mowry, and Chris Wilkerson. 2007. Scheduling threads for constructive cache sharing on CMPs. In Proceedings of the nineteenth annual ACM symposium on Parallel algorithms and architectures (SPAA '07). ACM, New York, NY, USA, 105-115. DOI=http://dx.doi.org/10.1145/1248377.1248396

Issues
  • Segfault on fib 16

    Segfault on fib 16

    On my fairly powerful machine, I can reliably segfault the Fibonacci test when changing n to 16. n = 15 sometimes work and sometimes segfault.

    The issue seems to be in libconcurrent, the backtrace is quite long so I'm pasting just the end:

      heap 11 is full
      thread 2 resuming task 0x7ffff7b9f590
      thread 2 task 0x7ffff7b9f590 sync on task 0x7ffff57a5290
      thread 2 resuming task 0x7ffff7b85990
      thread 2 completed task 0x7ffff7b85990
      thread 2 adding from task 0x7ffff7b85990's CQ: 0x7ffff7ba0e10
      thread 2 resuming task 0x7ffff7ba4710
      thread 2 completed task 0x7ffff7ba4710
      thread 2 adding from task 0x7ffff7ba4710's CQ: 0x7ffff7ba4190
      thread 2 resuming task 0x7ffff57a1d90
      thread 2 task 0x7ffff57a1d90 spawned task 0x7ffff7b85c10
      thread 2 had task 0x7ffff57a1d90 yield
      heap 11 is full
      thread 2 resuming task 0x7ffff7b82390
      thread 2 task 0x7ffff7b82390 sync on task 0x7ffff57a1890
      thread 2 resuming task 0x7ffff7b81b10
      thread 2 task 0x7ffff7b81b10 sync on task 0x7ffff57a2190
      thread 2 resuming task 0x7ffff7ba0e10
      thread 2 task 0x7ffff7ba0e10 sync on task 0x7ffff7ba2190
    
    Thread 1 "fib" received signal SIGSEGV, Segmentation fault.
    0x000055555555a37a in partr_sync ()
    (gdb) bt
    #0  0x000055555555a37a in partr_sync ()
    #1  0x000055555555676d in fib (start=<optimized out>, end=<optimized out>, arg_=0x2) at fib.c:14
    #2  fib (arg_=0x2, start=<optimized out>, end=<optimized out>) at fib.c:5
    #3  0x000055555555827b in partr_coro ()
    #4  0x000055555555c71b in concurrent_arch_trampoline_to_caller ()
    #5  0x0000555555591e40 in ?? ()
    #6  0x0000555555591e40 in ?? ()
    #7  0x0000000000000000 in ?? ()
    

    Note that Julia 1.3.0-rc4 does not exhibit this issue (but has scalability issues, will open another issue on Julia repo).

    opened by mratsim 2
Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all

concurrencpp, the C++ concurrency library concurrencpp is a tasking library for C++ allowing developers to write highly concurrent applications easily

David Haim 993 Jul 28, 2022
Smart queue that executes tasks in threadpool-like manner

execq execq is kind of task-based approach of processing data using threadpool idea with extended features. It supports different task sources and mai

Vladimir (Alkenso) 32 May 24, 2022
Bistro: A fast, flexible toolkit for scheduling and running distributed tasks

Bistro is a flexible distributed scheduler, a high-performance framework supporting multiple paradigms while retaining ease of configuration, management, and monitoring.

Facebook 1k Jul 10, 2022
A General-purpose Parallel and Heterogeneous Task Programming System

Taskflow Taskflow helps you quickly write parallel and heterogeneous tasks programs in modern C++ Why Taskflow? Taskflow is faster, more expressive, a

Taskflow 7.1k Aug 5, 2022
Kokkos C++ Performance Portability Programming EcoSystem: The Programming Model - Parallel Execution and Memory Abstraction

Kokkos: Core Libraries Kokkos Core implements a programming model in C++ for writing performance portable applications targeting all major HPC platfor

Kokkos 1.1k Jul 30, 2022
Powerful multi-threaded coroutine dispatcher and parallel execution engine

Quantum Library : A scalable C++ coroutine framework Quantum is a full-featured and powerful C++ framework build on top of the Boost coroutine library

Bloomberg 447 Jul 25, 2022
An optimized C library for math, parallel processing and data movement

PAL: The Parallel Architectures Library The Parallel Architectures Library (PAL) is a compact C library with optimized routines for math, synchronizat

Parallella 296 Jul 24, 2022
Material for the UIBK Parallel Programming Lab (2021)

UIBK PS Parallel Systems (703078, 2021) This repository contains material required to complete exercises for the Parallel Programming lab in the 2021

null 12 May 6, 2022
Shared-Memory Parallel Graph Partitioning for Large K

KaMinPar The graph partitioning software KaMinPar -- Karlsruhe Minimal Graph Partitioning. KaMinPar is a shared-memory parallel tool to heuristically

Karlsruhe High Quality Graph Partitioning 14 Jul 5, 2022
A General-purpose Parallel and Heterogeneous Task Programming System

Taskflow Taskflow helps you quickly write parallel and heterogeneous task programs in modern C++ Why Taskflow? Taskflow is faster, more expressive, an

Taskflow 7.1k Aug 5, 2022
C++-based high-performance parallel environment execution engine for general RL environments.

EnvPool is a highly parallel reinforcement learning environment execution engine which significantly outperforms existing environment executors. With

Sea AI Lab 571 Aug 5, 2022
Parallel algorithms (quick-sort, merge-sort , enumeration-sort) implemented by p-threads and CUDA

程序运行方式 一、编译程序,进入sort-project(cuda-sort-project),输入命令行 make 程序即可自动编译为可以执行文件sort(cudaSort)。 二、运行可执行程序,输入命令行 ./sort 或 ./cudaSort 三、删除程序 make clean 四、指定线程

Fu-Yun Wang 3 May 30, 2022
Cpp-taskflow - Modern C++ Parallel Task Programming Library

Cpp-Taskflow A fast C++ header-only library to help you quickly write parallel programs with complex task dependencies Why Cpp-Taskflow? Cpp-Taskflow

null 4 Mar 30, 2021
Thrust - The C++ parallel algorithms library.

Thrust: Code at the speed of light Thrust is a C++ parallel programming library which resembles the C++ Standard Library. Thrust's high-level interfac

NVIDIA Corporation 4.1k Jul 29, 2022
EnkiTS - A permissively licensed C and C++ Task Scheduler for creating parallel programs. Requires C++11 support.

Support development of enkiTS through Github Sponsors or Patreon enkiTS Master branch Dev branch enki Task Scheduler A permissively licensed C and C++

Doug Binks 1.3k Aug 6, 2022
Parallel-hashmap - A family of header-only, very fast and memory-friendly hashmap and btree containers.

The Parallel Hashmap Overview This repository aims to provide a set of excellent hash map implementations, as well as a btree alternative to std::map

Gregory Popovitch 1.5k Aug 9, 2022
ParallelComputingPlayground - Shows different programming techniques for parallel computing on CPU and GPU

ParallelComputingPlayground Shows different programming techniques for parallel computing on CPU and GPU. Purpose The idea here is to compute a Mandel

Morten Nobel-Jørgensen 2 May 16, 2020
KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software

KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.

KratosMultiphysics 707 Jul 29, 2022
Parallel implementation of Dijkstra's shortest path algorithm using MPI

Parallel implementation of Dijkstra's shortest path algorithm using MPI

Alex Diop 1 Jan 21, 2022