"src/vscode:/vscode.git/clone" did not exist on "f0e3296232a98be70dc420977a3c5c5d731771ba"
test_dual.py 1.01 KB
Newer Older
1
# coding: utf-8
2
3
4
5
6
7
8
9
"""Tests for dual GPU+CPU support."""

import os
import pytest

import lightgbm as lgb
import numpy as np

10
from sklearn.metrics import log_loss
11

12
from .utils import load_breast_cancer
13
14
15
16
17
18


@pytest.mark.skipif(
    os.environ.get("LIGHTGBM_TEST_DUAL_CPU_GPU", None) is None,
    reason="Only run if appropriate env variable is set",
)
19
20
21
22
23
24
25
26
27
28
29
def test_cpu_and_gpu_work():
    # If compiled appropriately, the same installation will support both GPU and CPU.
    X, y = load_breast_cancer(return_X_y=True)
    data = lgb.Dataset(X, y)

    params_cpu = {"verbosity": -1, "num_leaves": 31, "objective": "binary", "device": "cpu"}
    cpu_bst = lgb.train(params_cpu, data, num_boost_round=10)
    cpu_score = log_loss(y, cpu_bst.predict(X))

    params_gpu = params_cpu.copy()
    params_gpu["device"] = "gpu"
30
    params_gpu["gpu_use_dp"] = True
31
32
33
    gpu_bst = lgb.train(params_gpu, data, num_boost_round=10)
    gpu_score = log_loss(y, gpu_bst.predict(X))

34
35
    np.testing.assert_allclose(cpu_score, gpu_score)
    assert gpu_score < 0.242