def METHOD_NAME(device_type: dace.dtypes.DeviceType):
    '''
    Runs azimint-hist for the given device
    :return: the SDFG
    '''
    # Initialize data (npbench S size)
    N, npt = (400000, 1000)
    data, radius = initialize(N)
    if device_type in {dace.dtypes.DeviceType.CPU, dace.dtypes.DeviceType.GPU}:
        # Parse the SDFG and apply autopot
        sdfg = dace_azimint_hist.to_sdfg()
        sdfg = auto_optimize(sdfg, device_type)
        val = sdfg(data=data, radius=radius, N=N, npt=npt)
    elif device_type == dace.dtypes.DeviceType.FPGA:
        # Parse SDFG and apply FPGA friendly optimization
        sdfg = dace_azimint_hist.to_sdfg(simplify=True)
        applied = sdfg.apply_transformations([FPGATransformSDFG])
        assert applied == 1
        sdfg.apply_transformations_repeated([InlineSDFG], print_report=True)
        sdfg.specialize(dict(N=N, npt=npt))
        val = sdfg(data=data, radius=radius)
    # Compute ground truth and Validate result
    ref = numpy_azimint_hist(data, radius, npt)
    # NOTE: On GPU there are very small errors on the boundaries of the bins which propagate to larger errors.
    err = 1e-10
    if device_type is dace.dtypes.DeviceType.GPU:
        err = 1e-3
    assert (np.allclose(val, ref) or relerror(val, ref) < err)
    return sdfg