# Dynamic nested threads pre-1.8

**URL:** <https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787>\
**Category:** General Usage\
**Tags:** multithreading\
**Created:** [May 10, 2022, 12:50am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787 "2022-05-10T00:50:06Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 10, 2022, 12:50am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/1 "2022-05-10T00:50:06Z")

</div>

It’s wonderful that 1.8 provides dynamic scheduling in @threads that can (?) be nested. How can I obtain this functionality using Julia 1.7?

I know that I can do @sync for and then @spawn. What other possibilities exist? At an extreme, would I be able to use parts of the 1.8 multithreading source code, rename the macros and functions in it, and use that until 1.8 is released?

Thanks!

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 10, 2022, 3:00am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/2 "2022-05-10T03:00:27Z")

</div>

Why couldn’t you use 1.8?

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [May 10, 2022, 4:42am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/4 "2022-05-10T04:42:04Z")

</div>

I think [GitHub - JuliaFolds/Folds.jl: A unified interface for sequential, threaded, and distributed fold](https://github.com/JuliaFolds/Folds.jl) provides this functionality

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 10, 2022, 6:37am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/5 "2022-05-10T06:37:54Z")

</div>

Because other packages that I use are not available for it.

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 10, 2022, 6:38am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/6 "2022-05-10T06:38:22Z")

</div>

I’ll have a look, thanks

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 10, 2022, 11:40am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/7 "2022-05-10T11:40:26Z")

</div>

Folds does not look like what i was hoping for, but thanks.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [May 10, 2022, 1:04pm UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/8 "2022-05-10T13:04:34Z")

</div>

Then you can probably check out the other packages of the organization [JuliaFolds · GitHub](https://github.com/JuliaFolds), from what I understand they provide similar functionalities but with different paradigms

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 10, 2022, 1:34pm UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/9 "2022-05-10T13:34:29Z")

</div>

Thanks. I’m aware of those packages, but am just looking for something that allows and exploits for generic nested multithreading.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 10, 2022, 2:03pm UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/10 "2022-05-10T14:03:40Z")

</div>

But wouldn’t it be easier to bring the packages that you need up to speed?

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 10, 2022, 4:14pm UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/11 "2022-05-10T16:14:55Z")

</div>

I hope not!

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 10, 2022, 5:07pm UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/12 "2022-05-10T17:07:51Z")

</div>

Sorry: why?

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 11, 2022, 12:43am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/13 "2022-05-11T00:43:23Z")

</div>

There are quite a few and I don’t know in what sense they are not yet compatible with 1.8.

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [May 11, 2022, 12:53am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/14 "2022-05-11T00:53:31Z")

</div>

Which packages are they? 1.7 to 1.8 shouldn’t have any breaking changes (at least if the packages aren’t using Julia internals), so if packages aren’t working with 1.8, we want to know.

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 11, 2022, 12:57am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/15 "2022-05-11T00:57:00Z")

</div>

Thanks @Oscar_Smith . Trying to install CSV, I get

```julia
[Info: Precompiling CSV [336ed68f-0bac-5ca0-87d4-7b16caf5d00b]
ERROR: LoadError: ccall method definition: argument 1 type doesn't correspond to a C type
Stacktrace:
 [1] top-level scope
   @ ~/.julia/packages/SentinelArrays/iHRpO/src/SentinelArrays.jl:209
 [2] include
   @ ./Base.jl:422 [inlined]
 [3] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
   @ Base ./loading.jl:1400
 [4] top-level scope
   @ stdin:1
in expression starting at /home/joris/.julia/packages/SentinelArrays/iHRpO/src/SentinelArrays.jl:1
in expression starting at stdin:1
ERROR: LoadError: Failed to precompile SentinelArrays [91c51154-3ec4-41a3-a24f-3f23e20d615c] to /home/joris/.julia/compiled/v1.8/SentinelArrays/jl_kfzQoP.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
    @ Base ./loading.jl:1551
  [3] compilecache
    @ ./loading.jl:1495 [inlined]
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1199
  [5] _require_prelocked(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1084
  [6] macro expansion
    @ ./loading.jl:1064 [inlined]
  [7] macro expansion
    @ ./lock.jl:223 [inlined]
  [8] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:1028
  [9] include
    @ ./Base.jl:422 [inlined]
 [10] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1400
 [11] top-level scope
    @ stdin:1
in expression starting at /home/joris/.julia/packages/CSV/nofYz/src/CSV.jl:1
in expression starting at stdin:1
ERROR: Failed to precompile CSV [336ed68f-0bac-5ca0-87d4-7b16caf5d00b] to /home/joris/.julia/compiled/v1.8/CSV/jl_oBVra2.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
   @ Base ./loading.jl:1551
 [3] compilecache
   @ ./loading.jl:1495 [inlined]
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1199
 [5] _require_prelocked(uuidkey::Base.PkgId)
   @ Base ./loading.jl:1084
 [6] macro expansion
   @ ./loading.jl:1064 [inlined]
 [7] macro expansion
   @ ./lock.jl:223 [inlined]
 [8] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1028

```

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 11, 2022, 12:58am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/16 "2022-05-11T00:58:42Z")

</div>

my version of Julia 1.8 is from March 29, but that’s the latest

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 11, 2022, 1:03am UTC](https://discourse.julialang.org/t/dynamic-nested-threads-pre-1-8/80787/17 "2022-05-11T01:03:56Z")

</div>

with a little tinkering, it now appears to be working: thanks @PetrKryslUCSD and @Oscar_Smith !
