def METHOD_NAME(readcsv=read_csv, method="randomDense"):
    infile = os.path.join("..", "data", "batch", "kmeans_dense.csv")
    nClusters = 20
    maxIter = 5
    # Load the data
    data = readcsv(infile, range(20), t=np.float32)
    # Using of the classic way (computations on CPU)
    result_classic = compute(data, nClusters, maxIter, method)
    data = to_numpy(data)
    # It is possible to specify to make the computations on GPU
    if gpu_available:
        with sycl_context("gpu"):
            sycl_data = sycl_buffer(data)
            result_gpu = compute(sycl_data, nClusters, maxIter, method)
        assert np.allclose(result_classic.centroids, result_gpu.centroids)
        assert np.allclose(result_classic.assignments, result_gpu.assignments)
        assert np.isclose(result_classic.objectiveFunction, result_gpu.objectiveFunction)
    # It is possible to specify to make the computations on CPU
    with sycl_context("cpu"):
        sycl_data = sycl_buffer(data)
        result_cpu = compute(sycl_data, nClusters, maxIter, method)
    # Kmeans result objects provide assignments (if requested),
    # centroids, goalFunction, nIterations and objectiveFunction
    assert result_classic.centroids.shape[0] == nClusters
    assert result_classic.assignments.shape == (data.shape[0], 1)
    assert result_classic.nIterations <= maxIter
    assert np.allclose(result_classic.centroids, result_cpu.centroids)
    assert np.allclose(result_classic.assignments, result_cpu.assignments)
    assert np.isclose(result_classic.objectiveFunction, result_cpu.objectiveFunction)
    assert result_classic.nIterations == result_cpu.nIterations
    return result_classic