(accel_obj)
| 26 | |
| 27 | |
| 28 | def _validate_accelerator(accel_obj): |
| 29 | # because abstract_accelerator has different path during |
| 30 | # build time (accelerator.abstract_accelerator) |
| 31 | # and run time (deepspeed.accelerator.abstract_accelerator) |
| 32 | # and extension would import the |
| 33 | # run time abstract_accelerator/DeepSpeedAccelerator as its base |
| 34 | # class, so we need to compare accel_obj with both base class. |
| 35 | # if accel_obj is instance of DeepSpeedAccelerator in one of |
| 36 | # accelerator.abstractor_accelerator |
| 37 | # or deepspeed.accelerator.abstract_accelerator, consider accel_obj |
| 38 | # is a conforming object |
| 39 | if not ((dsa1 is not None and isinstance(accel_obj, dsa1)) or (dsa2 is not None and isinstance(accel_obj, dsa2))): |
| 40 | raise AssertionError(f"{accel_obj.__class__.__name__} accelerator is not subclass of DeepSpeedAccelerator") |
| 41 | |
| 42 | # TODO: turn off is_available test since this breaks tests |
| 43 | # assert accel_obj.is_available(), \ |
| 44 | # f'{accel_obj.__class__.__name__} accelerator fails is_available() test' |
| 45 | |
| 46 | |
| 47 | def is_current_accelerator_supported(): |
no outgoing calls
no test coverage detected
searching dependent graphs…