pytc.solver.test.test_jax_xtc_ccsd.TestShouldForceHostAccumulators

class pytc.solver.test.test_jax_xtc_ccsd.TestShouldForceHostAccumulators(methodName='runTest')[source]

Bases: TestCase

Regression tests for _should_force_host_accumulators.

The OVVV/VOVV pipelines below _update_amps cannot keep accumulators GPU-resident under three independent conditions: multi-GPU, HDF5-backed ovvv, or HDF5-backed vovv. The original early override only checked the multi-GPU case, so a single-GPU run on a system large enough to spill ovvv to disk hit a misleading AssertionError further down:

AssertionError: use_gpu_acc must be False for the HDF5-backed
OVVV multi-GPU path; set by _n_devices_local > 1 check above

The helper centralises the predicate so the inline override and these tests stay in sync. Each combination of (n_devices_local, ovvv in RAM, vovv in RAM) is checked explicitly so future edits cannot silently weaken any branch.

Methods

__call__

Call self as a function.

__delattr__

Implement delattr(self, name).

__dir__

Default dir() implementation.

__eq__

Return self==value.

__format__

Default object formatter.

__ge__

Return self>=value.

__getattribute__

Return getattr(self, name).

__getstate__

Helper for pickle.

__gt__

Return self>value.

__hash__

Return hash(self).

__init__

Create an instance of the class that will use the named test method when executed.

__init_subclass__

This method is called when a class is subclassed.

__le__

Return self<=value.

__lt__

Return self<value.

__ne__

Return self!=value.

__new__

__reduce__

Helper for pickle.

__reduce_ex__

Helper for pickle.

__repr__

Return repr(self).

__setattr__

Implement setattr(self, name, value).

__sizeof__

Size of object in memory, in bytes.

__str__

Return str(self).

__subclasshook__

Abstract classes can override this to customize issubclass().

_addDuration

_addExpectedFailure

_addUnexpectedSuccess

_baseAssertEqual

The default assertEqual implementation, not type specific.

_callCleanup

_callSetUp

_callTearDown

_callTestMethod

_formatMessage

Honour the longMessage attribute when generating failure messages.

_getAssertEqualityFunc

Get a detailed comparison function for the types of the two args.

_truncateMessage

addClassCleanup

Same as addCleanup, except the cleanup items are called even if setUpClass fails (unlike tearDownClass).

addCleanup

Add a function, with arguments, to be called when the test is completed.

addTypeEqualityFunc

Add a type specific assertEqual style function to compare a type.

assertAlmostEqual

Fail if the two objects are unequal as determined by their difference rounded to the given number of decimal places (default 7) and comparing to zero, or by comparing that the difference between the two objects is more than the given delta.

assertCountEqual

Asserts that two iterables have the same elements, the same number of times, without regard to order.

assertDictEqual

assertEqual

Fail if the two objects are unequal as determined by the '==' operator.

assertFalse

Check that the expression is false.

assertGreater

Just like self.assertTrue(a > b), but with a nicer default message.

assertGreaterEqual

Just like self.assertTrue(a >= b), but with a nicer default message.

assertIn

Just like self.assertTrue(a in b), but with a nicer default message.

assertIs

Just like self.assertTrue(a is b), but with a nicer default message.

assertIsInstance

Same as self.assertTrue(isinstance(obj, cls)), with a nicer default message.

assertIsNone

Same as self.assertTrue(obj is None), with a nicer default message.

assertIsNot

Just like self.assertTrue(a is not b), but with a nicer default message.

assertIsNotNone

Included for symmetry with assertIsNone.

assertLess

Just like self.assertTrue(a < b), but with a nicer default message.

assertLessEqual

Just like self.assertTrue(a <= b), but with a nicer default message.

assertListEqual

A list-specific equality assertion.

assertLogs

Fail unless a log message of level level or higher is emitted on logger_name or its children.

assertMultiLineEqual

Assert that two multi-line strings are equal.

assertNoLogs

Fail unless no log messages of level level or higher are emitted on logger_name or its children.

assertNotAlmostEqual

Fail if the two objects are equal as determined by their difference rounded to the given number of decimal places (default 7) and comparing to zero, or by comparing that the difference between the two objects is less than the given delta.

assertNotEqual

Fail if the two objects are equal as determined by the '!=' operator.

assertNotIn

Just like self.assertTrue(a not in b), but with a nicer default message.

assertNotIsInstance

Included for symmetry with assertIsInstance.

assertNotRegex

Fail the test if the text matches the regular expression.

assertRaises

Fail unless an exception of class expected_exception is raised by the callable when invoked with specified positional and keyword arguments.

assertRaisesRegex

Asserts that the message in a raised exception matches a regex.

assertRegex

Fail the test unless the text matches the regular expression.

assertSequenceEqual

An equality assertion for ordered sequences (like lists and tuples).

assertSetEqual

A set-specific equality assertion.

assertTrue

Check that the expression is true.

assertTupleEqual

A tuple-specific equality assertion.

assertWarns

Fail unless a warning of class warnClass is triggered by the callable when invoked with specified positional and keyword arguments.

assertWarnsRegex

Asserts that the message in a triggered warning matches a regexp.

countTestCases

debug

Run the test without collecting errors in a TestResult

defaultTestResult

doClassCleanups

Execute all class cleanup functions.

doCleanups

Execute all cleanup functions.

enterClassContext

Same as enterContext, but class-wide.

enterContext

Enters the supplied context manager.

fail

Fail immediately, with the given message.

id

run

setUp

Hook method for setting up the test fixture before exercising it.

setUpClass

Hook method for setting up class fixture before running tests in the class.

shortDescription

Returns a one-line description of the test, or None if no description has been provided.

skipTest

Skip this test.

subTest

Return a context manager that will return the enclosed block of code in a subtest identified by the optional message and keyword parameters.

tearDown

Hook method for deconstructing the test fixture after testing it.

tearDownClass

Hook method for deconstructing the class fixture after running all tests in the class.

test_multi_gpu_hdf5_both_forces_host

Multi-GPU + both HDF5: every condition fires; sanity check the OR.

test_multi_gpu_in_ram_forces_host

Multi-GPU + in-RAM ovvv/vovv: round-robin needs a shared host buffer.

test_single_gpu_both_hdf5_forces_host

The realistic large-system case: both ovvv and vovv on disk.

test_single_gpu_hdf5_ovvv_forces_host

Regression: 1 GPU + HDF5-backed ovvv must force host accumulators.

test_single_gpu_hdf5_vovv_forces_host

Same regression on the VOVV side: 1 GPU + HDF5-backed vovv.

test_single_gpu_in_ram_keeps_gpu_accumulators

The only configuration where GPU-resident accumulators are safe.

test_zero_devices_treated_as_single_device

n_devices_local == 0 (CPU-only fallback) is not multi-GPU and must not by itself force host accumulators when ovvv/vovv are in RAM.

Attributes

__annotations__

__dict__

__doc__

__module__

__weakref__

list of weak references to the object

_classSetupFailed

_class_cleanups

_diffThreshold

longMessage

maxDiff

setUp()[source]

Hook method for setting up the test fixture before exercising it.

test_single_gpu_in_ram_keeps_gpu_accumulators()[source]

The only configuration where GPU-resident accumulators are safe.

test_multi_gpu_in_ram_forces_host()[source]

Multi-GPU + in-RAM ovvv/vovv: round-robin needs a shared host buffer.

test_single_gpu_hdf5_ovvv_forces_host()[source]

Regression: 1 GPU + HDF5-backed ovvv must force host accumulators. Before the fix this passed the early check (n_devices_local==1) and crashed at the HDF5-OVVV branch.

test_single_gpu_hdf5_vovv_forces_host()[source]

Same regression on the VOVV side: 1 GPU + HDF5-backed vovv.

test_single_gpu_both_hdf5_forces_host()[source]

The realistic large-system case: both ovvv and vovv on disk.

test_multi_gpu_hdf5_both_forces_host()[source]

Multi-GPU + both HDF5: every condition fires; sanity check the OR.

test_zero_devices_treated_as_single_device()[source]

n_devices_local == 0 (CPU-only fallback) is not multi-GPU and must not by itself force host accumulators when ovvv/vovv are in RAM.