You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At the last group meeting, we discussed the issue with Parallel Gibbon relying on the Cilk library, which is not as easily available as it once used to be when it was a part of the GCC 7 distribution. As a consequence of this Cilk issue, we don't test anything about Parallel Gibbon in CI.
Our options for modernizing Parallel Gibbon and liberating from the GCCV 7 dependency seem to be:
Seemingly the most straightforward option but there's a catch: it's huge and compiling it means, among other things, compiling (a fork of) LLVM. Also, it's not packaged in nixpkgs , see Package request: OpenCilk NixOS/nixpkgs#144256
Switch to a Cilk alternative that's lighter than OpenCilk. E.g
OpenMP @vollmerm says that it's not trivial because the new library should allow us to observe steals
Do nothing and wait until OpenCilk becomes more approachable
Roll out our own work-stealing task parallelism on top of Pthreads or similar. May be a good student project.
@vollmerm regarding the issue with observing steals that you mentioned: I dived a little into the implementation, and it looks like the current way to observe steals is to record the thread ID (and the ICFP'21 paper confirms it):
Getting the thread ID seems like a pretty basic operation that most alternatives would be capable of (e.g. OpenMP has omp_get_thread_num) Is that right?
At the last group meeting, we discussed the issue with Parallel Gibbon relying on the Cilk library, which is not as easily available as it once used to be when it was a part of the GCC 7 distribution. As a consequence of this Cilk issue, we don't test anything about Parallel Gibbon in CI.
Our options for modernizing Parallel Gibbon and liberating from the GCCV 7 dependency seem to be:
nixpkgs
, see Package request: OpenCilk NixOS/nixpkgs#144256@vollmerm says that it's not trivial because the new library should allow us to observe steals
@vollmerm regarding the issue with observing steals that you mentioned: I dived a little into the implementation, and it looks like the current way to observe steals is to record the thread ID (and the ICFP'21 paper confirms it):
gibbon/gibbon-compiler/src/Gibbon/Passes/ParAlloc.hs
Lines 243 to 248 in 32723ed
Getting the thread ID seems like a pretty basic operation that most alternatives would be capable of (e.g. OpenMP has
omp_get_thread_num
) Is that right?/cc @ckoparkar @rrnewton
The text was updated successfully, but these errors were encountered: