| from __future__ import annotations | |
| import os | |
| from subsystems.htm import HTMLayer, _resolve_use_gpu | |
| def _bare_layer(*, learn=True, training=True, learn_every=1): | |
| layer = HTMLayer.__new__(HTMLayer) | |
| layer.learn = learn | |
| layer.learning_enabled = True | |
| layer._learn_every = learn_every | |
| layer._forward_counter = 0 | |
| layer.training = training | |
| return layer | |
| def test_htm_learn_flag_requires_training_and_learning_enabled(): | |
| layer = _bare_layer(training=True) | |
| assert layer._next_learn_flag() is True | |
| layer.training = False | |
| assert layer._next_learn_flag() is False | |
| layer.training = True | |
| layer.learning_enabled = False | |
| assert layer._next_learn_flag() is False | |
| def test_htm_forward_async_uses_same_learn_gate_as_forward(): | |
| layer = _bare_layer(training=True, learn_every=3) | |
| assert layer._next_learn_flag() is False | |
| assert layer._next_learn_flag() is False | |
| assert layer._next_learn_flag() is True | |
| layer.training = False | |
| assert layer._next_learn_flag() is False | |
| def test_htm_use_gpu_env_can_force_cpu_even_if_cuda_available(monkeypatch): | |
| monkeypatch.setenv("HYDRA_HTM_USE_GPU", "0") | |
| assert _resolve_use_gpu(True, cuda_available=True) is False | |