# Multiple Loops in Julia

**URL:** <https://discourse.julialang.org/t/multiple-loops-in-julia/127814>\
**Category:** New to Julia\
**Tags:** first-steps, cuda, loops, cudajl, julia\
**Created:** [April 7, 2025, 7:27pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814 "2025-04-07T19:27:38Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarcoBPCode](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marcobpcode/32/216198_2.png) [@MarcoBPCode](https://discourse.julialang.org/u/MarcoBPCode)\
**Post date:** [April 7, 2025, 7:27pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/1 "2025-04-07T19:27:38Z")

</div>

HI, I’m writing a code that need multiples loops inside each other and i want to make parallelization it.

> Loop1{  
> Loop2{  
> Loop3{  
> Loop4{  
> …  
> }  
> }  
> }  
> }

Can recommended some techique ? o maybe something to read o implemented

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [April 7, 2025, 8:07pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/2 "2025-04-07T20:07:44Z")

</div>

Take a look into the Base.Cartesian standard library:

> **[Base.Cartesian · The Julia Language](https://docs.julialang.org/en/v1/devdocs/cartesian/)**
>
> Documentation for The Julia Language.

---

<div class="post-metadata">

**Author:** ![mikmoore](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mikmoore/32/31109_2.png) [@mikmoore](https://discourse.julialang.org/u/mikmoore)\
**Post date:** [April 7, 2025, 8:15pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/3 "2025-04-07T20:15:02Z")

</div>

While `Base.Cartesian` has some nifty macros, I haven’t ever had much need for it _specifically_. In most cases I’ve been able to instead simply loop over `CartesianIndices` to perform the multiple loops as I disassemble the resulting `CartesianIndex` at each iteration to get what I need for each dimension.

Check out [this blog post](https://julialang.org/blog/2016/02/iteration/) for some examples.

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [April 7, 2025, 8:26pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/4 "2025-04-07T20:26:12Z")

</div>

Same here. I tend to use `CartesianIndices`.

The macros in `Base.Cartesian` can be useful to unroll loops manually (e.g., performance).

---

<div class="post-metadata">

**Author:** ![MarcoBPCode](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marcobpcode/32/216198_2.png) [@MarcoBPCode](https://discourse.julialang.org/u/MarcoBPCode)\
**Post date:** [April 7, 2025, 9:08pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/5 "2025-04-07T21:08:58Z")

</div>

Thanks for you suggestions, but How can I do when I work with CUDA Julia and need the loops?

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [April 7, 2025, 9:29pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/6 "2025-04-07T21:29:35Z")

</div>

CUDA isn’t a straightforward way to generally parallelize heavily nested loops, it really depends on what you’re doing in those loops.

---

<div class="post-metadata">

**Author:** ![MarcoBPCode](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marcobpcode/32/216198_2.png) [@MarcoBPCode](https://discourse.julialang.org/u/MarcoBPCode)\
**Post date:** [April 7, 2025, 9:38pm UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/7 "2025-04-07T21:38:56Z")

</div>

Thanks, let me explain more.  
The three inner loops is for a 3D Matrix to calculate field values and the external loop is for other iteration in this calculate.

Can I paralyze this loops with CUDA?

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [April 8, 2025, 7:47am UTC](https://discourse.julialang.org/t/multiple-loops-in-julia/127814/8 "2025-04-08T07:47:31Z")

</div>

> [@MarcoBPCode](#):
>
> Can I paralyze this loops with CUDA?

You can probably parallelize the inner triple loop, either with [array programming](https://cuda.juliagpu.org/stable/usage/array/) or with [kernel programming](https://cuda.juliagpu.org/stable/development/kernel/)
