|
| 1 | +import numpy as np |
| 2 | + |
| 3 | +try: |
| 4 | + from mock import patch, Mock, MagicMock |
| 5 | +except ImportError: |
| 6 | + from unittest.mock import patch, Mock |
| 7 | + |
| 8 | +from kernel_tuner.nvml import get_nvml_pwr_limits, get_nvml_gr_clocks, get_nvml_mem_clocks, get_idle_power |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | +def setup_mock(nvml): |
| 13 | + nvml.return_value.configure_mock(pwr_constraints=(90000, 150000), |
| 14 | + supported_mem_clocks=[2100], |
| 15 | + supported_gr_clocks={2100: [1000, 2000, 3000]}, |
| 16 | + pwr_usage=lambda : 5000) |
| 17 | + |
| 18 | + return nvml |
| 19 | + |
| 20 | + |
| 21 | +@patch('kernel_tuner.nvml.nvml') |
| 22 | +def test_get_nvml_pwr_limits(nvml): |
| 23 | + nvml = setup_mock(nvml) |
| 24 | + result = get_nvml_pwr_limits(0, quiet=True) |
| 25 | + assert result['nvml_pwr_limit'] == [90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150] |
| 26 | + |
| 27 | + result = get_nvml_pwr_limits(0, n=5, quiet=True) |
| 28 | + assert len(result['nvml_pwr_limit']) == 5 |
| 29 | + assert result['nvml_pwr_limit'][0] == 90 |
| 30 | + assert result['nvml_pwr_limit'][-1] == 150 |
| 31 | + |
| 32 | + |
| 33 | +@patch('kernel_tuner.nvml.nvml') |
| 34 | +def test_get_nvml_gr_clocks(nvml): |
| 35 | + nvml = setup_mock(nvml) |
| 36 | + result = get_nvml_gr_clocks(0, quiet=True) |
| 37 | + assert result['nvml_gr_clock'] == [1000, 2000, 3000] |
| 38 | + |
| 39 | + result = get_nvml_gr_clocks(0, n=2, quiet=True) |
| 40 | + assert result['nvml_gr_clock'] == [1000, 3000] |
| 41 | + |
| 42 | + |
| 43 | +@patch('kernel_tuner.nvml.nvml') |
| 44 | +def test_get_nvml_mem_clocks(nvml): |
| 45 | + nvml = setup_mock(nvml) |
| 46 | + result = get_nvml_mem_clocks(0, quiet=False) |
| 47 | + print(result) |
| 48 | + assert result['nvml_mem_clock'] == [2100] |
| 49 | + |
| 50 | + |
| 51 | +@patch('kernel_tuner.nvml.nvml') |
| 52 | +def test_get_idle_power(nvml): |
| 53 | + nvml = setup_mock(nvml) |
| 54 | + result = get_idle_power(0) |
| 55 | + assert np.isclose(result, 5) |
| 56 | + |
0 commit comments