# Data structures for threaded computing

**URL:** https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131
**Category:** Performance
**Created:** [October 21, 2019, 12:07pm UTC](https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131 "2019-10-21T12:07:47Z")
**Posts on this page:** 4
**Page:** 2

<div class="post-metadata">

### Author: ![dataDiver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datadiver/32/8174_2.png) [@dataDiver](https://discourse.julialang.org/u/dataDiver)
#### Post date: [October 23, 2019, 3:57am UTC](https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131/21 "2019-10-23T03:57:44Z")

</div>

> [@foobar\_lv2](#):
>
> Try `LinearAlgebra.mul!(z[Threads.threadid()], x[i]', x[i], true, true)` instead.

Thanks, it fixed the speed issue right up:

```julia
@time threadedGram2(x);
# 0.728811 seconds (117 allocations: 947.766 KiB)

```

---

<div class="post-metadata">

### Author: ![dataDiver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datadiver/32/8174_2.png) [@dataDiver](https://discourse.julialang.org/u/dataDiver)
#### Post date: [October 23, 2019, 4:15am UTC](https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131/22 "2019-10-23T04:15:36Z")

</div>

Slightly off topic but I think it would probably be useful to have this in Base:

```julia
import Base.zeros
"""
  x = rand(Float64, (4,4))
  zeros(x)
"""
function zeros(x::AbstractArray)
  T = eltype(x)
  dim = size(x)
  return zeros(T, dim)
end

import Base.ones
"""
  x = rand(Float64, (4,4))
  ones(x)
"""
function ones(x::AbstractArray)
  T = eltype(x)
  dim = size(x)
  return ones(T, dim)
end

```

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [October 23, 2019, 6:58am UTC](https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131/23 "2019-10-23T06:58:58Z")

</div>

you can simply do:

```julia
zero(x)

" Get the additive identity element for the type of `x`"

```

although, `one(x)` would give you identity matrix, not sure if you want that or not (because it’s the multiplicative identity, if not, you can always `fill(one(eltype(x)), size(x))` or what you’re already doing.

---

<div class="post-metadata">

### Author: ![dataDiver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datadiver/32/8174_2.png) [@dataDiver](https://discourse.julialang.org/u/dataDiver)
#### Post date: [October 23, 2019, 7:32am UTC](https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131/24 "2019-10-23T07:32:25Z")

</div>

> [@jling](#):
>
> you can simply do:

Thanks. I didn’t know about `zero`.

[Previous page](https://discourse.julialang.org/t/data-structures-for-threaded-computing/30131.md?page=1)
