Foundry/docs/progress.md

2.1 KiB

progress

Progress bar and training metrics reporting. Python counterpart: tqdm.

Header: progress/progress.h Source: progress/progress.c Status: API Complete - Pending Verification


Overview

The progress module provides:

  • Terminal progress bars with ETA
  • Training state logging
  • Nested progress bars
  • Rate calculation

Quick Start

#include "progress/progress.h"

// Create progress bar
fp_progress* pbar = fp_new(1000, "Training");

// Update progress
for (int i = 0; i < 1000; i++) {
    // ... do work ...
    fp_update(pbar, 1);
    fp_set_postfix(pbar, "loss=%.4f", loss);
}

// Finish
fp_close(pbar);
fp_free(pbar);

API Reference

Creation

fp_progress* fp_new(int64_t total, const char* desc);
fp_progress* fp_new_nested(fp_progress* parent, int64_t total, const char* desc);
void fp_free(fp_progress* p);

Updates

void fp_update(fp_progress* p, int64_t n);          // Increment by n
void fp_set(fp_progress* p, int64_t n);             // Set absolute position
void fp_set_postfix(fp_progress* p, const char* fmt, ...);  // Set postfix text
void fp_close(fp_progress* p);                       // Finish and print final

Accessors

int64_t fp_total(fp_progress* p);
int64_t fp_current(fp_progress* p);
double fp_elapsed(fp_progress* p);   // Seconds elapsed
double fp_rate(fp_progress* p);      // Items per second
double fp_eta(fp_progress* p);       // Estimated time remaining
float fp_percent(fp_progress* p);    // Completion percentage

Training Logging

typedef struct {
    int epoch;
    int step;
    float loss;
    float lr;
    float throughput;  // samples/sec or tokens/sec
} fp_train_state;

void fp_log_step(fp_train_state* state);
void fp_log_epoch(fp_train_state* state);

Configuration

void fp_set_width(fp_progress* p, int width);
void fp_set_unit(fp_progress* p, const char* unit);
void fp_disable(fp_progress* p);
void fp_refresh(fp_progress* p);

See Also

  • optim - Optimizer for training loops
  • swarm - Distributed training