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