arrayfire / arrayfire/arrayfire

[BUG] Norm doesn't work with more than 2^32/2 elements

Open
#3,571 2 comments 0 reactions 1 assignee Claimed by @christophe-murphy View on GitHub
bug
Dominant language
C++
Stars
4.9k
Forks
555
Avg merge
1h 24m
Merged PRs (30d)
1

Description

If one-dimensional array has more than 2^32/2 elements, norm doesn't work. For OpenCL, computing the norm leads to a crash while CPU just gives 0. Haven't been able to try CUDA backend. CPU backend though seems to give wrong results even for the working one.

Description
===========
* Norm fails when computed with more than 2 147 483 648 elements
* CPU and OpenCL backends at least
* Official AF installer on Windows 10

Reproducible Code and/or Steps
------------------------------

```
#include

using namespace af;

int main(int argc, char* argv[]) {
// Works
array vec1 = constant(1.f, 2107483648);
const double norm1 = af::norm(vec1);
printf("%f\n", norm1);
// Doesn't work
array vec2 = constant(1.f, 4294867296);
const double norm2 = af::norm(vec2);
printf("%f\n", norm2);

return 0;
}
```

System Information
------------------
```
ArrayFire v3.9.0 (OpenCL, 64-bit Windows, build b59a1ae53)
[0] AMD: gfx1036, 24568 MB
-1- AMD: gfx1100, 20464 MB
-2- INTEL: AMD Ryzen 5 7600X 6-Core Processor , 64662 MB
-3- INTEL: AMD Ryzen 5 7600X 6-Core Processor , 64662 MB
```

Checklist
---------

- [x] Using the latest available ArrayFire release
- [x] GPU drivers are up to date

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.