def METHOD_NAME(datatype, nrows, column_info, precompute, normalize):
    ncols, n_info = column_info
    X_train, X_test, y_train, y_test = make_regression_dataset(
        datatype, nrows, ncols, n_info
    )
    if precompute == "precompute" or not normalize:
        # Apply normalization manually, because the solver expects normalized
        # input data
        X_train, y_train, x_mean, x_scale, y_mean = normalize_data(
            X_train, y_train
        )
        y_test = y_test - y_mean
        X_test = (X_test - x_mean) / x_scale
    if precompute == "precompute":
        precompute = np.dot(X_train.T, X_train)
    params = {"precompute": precompute, "normalize": normalize}
    # Initialization of cuML's LARS
    culars = cuLars(**params)
    # fit and predict cuml LARS
    culars.fit(X_train, y_train)
    cu_score_train = culars.score(X_train, y_train)
    cu_score_test = culars.score(X_test, y_test)
    if nrows < 500000:
        # sklearn model initialization, fit and predict
        sklars = skLars(**params)
        sklars.fit(X_train, y_train)
        # Set tolerance to include the 95% confidence interval around
        # scikit-learn accuracy.
        accuracy_target = sklars.score(X_test, y_test)
        tol = 1.96 * np.sqrt(accuracy_target * (1.0 - accuracy_target) / 100.0)
        if tol < 0.001:
            tol = 0.001  # We allow at least 0.1% tolerance
        print(cu_score_train, cu_score_test, accuracy_target, tol)
        assert cu_score_train >= sklars.score(X_train, y_train) - tol
        assert cu_score_test >= accuracy_target - tol
    else:
        assert cu_score_test > 0.95