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 <arrayfire.h>
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
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
Reproducible Code and/or Steps
System Information
Checklist