|
14 | 14 |
|
15 | 15 | # nv_qldpc_decoder_config tests |
16 | 16 |
|
| 17 | + |
| 18 | +def is_nv_qldpc_decoder_available(): |
| 19 | + """ |
| 20 | + Helper function to check if the NV-QLDPC decoder is available. |
| 21 | + """ |
| 22 | + try: |
| 23 | + # First check to sure a GPU is available. |
| 24 | + result = subprocess.run(["nvidia-smi"], capture_output=True, timeout=2) |
| 25 | + if result.returncode != 0: |
| 26 | + return False |
| 27 | + # Now make sure that the NV-QLDPC decoder is available. |
| 28 | + H_list = [[1, 0, 0, 1, 0, 1, 1], [0, 1, 0, 1, 1, 0, 1], |
| 29 | + [0, 0, 1, 0, 1, 1, 1]] |
| 30 | + H_np = np.array(H_list, dtype=np.uint8) |
| 31 | + nv_dec_gpu_and_cpu = qec.get_decoder("nv-qldpc-decoder", H_np) |
| 32 | + return True |
| 33 | + except Exception as e: |
| 34 | + return False |
| 35 | + |
| 36 | + |
17 | 37 | FIELDS = { |
18 | 38 | "use_sparsity": (bool, True, False), |
19 | 39 | "error_rate": (float, 1e-3, 5e-2), |
@@ -284,6 +304,9 @@ def test_configure_decoders_from_str_smoke(): |
284 | 304 | decoder_config.H_sparse = [1, 2, 3, -1, 6, 7, 8, -1, -1] |
285 | 305 | decoder_config.set_decoder_custom_args(nv) |
286 | 306 | yaml_str = decoder_config.to_yaml_str() |
| 307 | + # Do not instantiate the decoder if it is not available. |
| 308 | + if not is_nv_qldpc_decoder_available(): |
| 309 | + return |
287 | 310 | status = qec.configure_decoders_from_str(yaml_str) |
288 | 311 | assert isinstance(status, int) |
289 | 312 | qec.finalize_decoders() |
|
0 commit comments