Skip to content

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

Description

@villekf

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

  • Using the latest available ArrayFire release
  • GPU drivers are up to date

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions