arrayfire / arrayfire/arrayfire
[BUG] Norm doesn't work with more than 2^32/2 elements
- 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
Assessment
This issue has not been assessed yet.