Log GPU memory usage information. Args: head (str): A descriptive header for the memory usage log message. logger (logging.Logger, optional): Logger instance to use for logging. If None, prints to stdout. level: Logging level to use. Defaults to logging.DEBUG. ra
(head: str, logger: logging.Logger = None, level=logging.DEBUG, rank: int = 0)
| 61 | |
| 62 | |
| 63 | def log_gpu_memory_usage(head: str, logger: logging.Logger = None, level=logging.DEBUG, rank: int = 0): |
| 64 | """Log GPU memory usage information. |
| 65 | |
| 66 | Args: |
| 67 | head (str): A descriptive header for the memory usage log message. |
| 68 | logger (logging.Logger, optional): Logger instance to use for logging. If None, prints to stdout. |
| 69 | level: Logging level to use. Defaults to logging.DEBUG. |
| 70 | rank (int): The rank of the process to log memory for. Defaults to 0. |
| 71 | """ |
| 72 | if (not dist.is_initialized()) or (rank is None) or (dist.get_rank() == rank): |
| 73 | mem_allocated, mem_reserved, mem_used, mem_total = _get_current_mem_info() |
| 74 | message = ( |
| 75 | f"{head}, memory allocated (GB): {mem_allocated}, memory reserved (GB): {mem_reserved}, " |
| 76 | f"device memory used/total (GB): {mem_used}/{mem_total}" |
| 77 | ) |
| 78 | |
| 79 | if logger is None: |
| 80 | print(message) |
| 81 | else: |
| 82 | logger.log(msg=message, level=level) |
| 83 | |
| 84 | |
| 85 | class GPUMemoryLogger(DecoratorLoggerBase): |