core.simd and dynamic arrays
Johan
j at j.nl
Sun Jan 26 16:43:19 UTC 2025
On Sunday, 26 January 2025 at 12:45:11 UTC, John C. wrote:
> Hello everyone. I am complete newbie in D and programming at
> all and I can't understand why dynamic arrays can't be used
> within following D code:
> ```d
> import std.random : uniform01;
> import core.simd;
>
> void main() {
> align(32) float[] a = new float[128];
> ...
> ```
The `align(32)` applies to the slice `a`, not the contents of `a`
(where `a` points to).
Some things to try:
- What exactly is the error reported? An out-of-bounds read/write
would not result in a segfault. (but perhaps with optimization
and UB for unaligned float8 access...)
- Print out the pointer to `a[0]` to verify what the actual
alignment is.
- Does it work when you create an array of `float8`? (`float8[]
a = new float8[128/8];`)
By the way, `a[i], b[i] = uniform01(), uniform01();` does not do
what you think it does. Rewrite to
```
a[i] = uniform01();
b[i] = uniform01();
```
cheers,
Johan
More information about the Digitalmars-d-learn
mailing list