QVAL Manual (User)

Contents

  1. Overview
  2. Running
  3. Config layout
  4. YAML schema
  5. Parameter fields
  6. Expression helpers
  7. Compilation options
  8. I/O
  9. Report generation
  10. Examples
  11. Tests
  12. Suite runner
  13. Multi-objective optimization
  14. Precision control
  15. Platform notes
  16. Integer compute mode
  17. Console output and verbosity

1. Overview

QVAL is a GPU-accelerated function evaluator and optimizer. It runs thousands to millions of parameter variants in parallel on the GPU and writes results (CSV/XLSX) and human-readable reports (txt/md/html/json). It supports multiple samplers, probability distributions, multi-dimensional parameters, and optimizers (CEM, DE).

You define your objective as a simple math expression string (expr), or, for advanced logic, as a C-like expression file (OpenCL code) via expr_file. QVAL compiles this into fast device code under the hood; you typically don’t need to write low-level kernels unless you want to.

Why GPU parallelism matters:

2. Running

List devices (look for GPU):

3. Config layout (config)

config/
├── example/                    # Real-world usage examples
│   ├── basic/                  # Basic optimization example
│   ├── batch/                  # Batch processing examples
│   ├── engineering/            # Engineering optimization
│   ├── finance/                # Financial modeling
│   ├── functions/              # Mathematical functions
│   ├── md/                     # Multi-dimensional examples
│   ├── multi/                  # Multi-objective optimization
│   ├── optimizers/             # Optimization algorithms
│   └── samplers/               # Sampling strategies
├── test/                       # Fast validation tests
│   ├── basic/                  # Basic functionality tests
│   ├── batch/                  # Batch processing tests
│   ├── builtins/               # Built-in function tests
│   ├── compilation/            # Compilation tests
│   ├── config/                 # Configuration tests
│   ├── dists/                  # Distribution tests
│   ├── expr/                   # Expression tests
│   ├── functions/              # Function tests
│   ├── gpu_verification/       # GPU verification tests
│   ├── int/                    # Integer parameter tests
│   ├── io/                     # Input/output tests
│   ├── md/                     # Multi-dimensional tests
│   ├── optimizers/             # Optimizer tests
│   ├── samplers/               # Sampler tests
│   └── verify/                 # Verification tests
├── test_slow/                  # Slow/GPU load tests
│   └── gpu_load/               # GPU stress tests
├── tutorial/                   # Step-by-step tutorials
│   ├── 00_minimal/             # Minimal example
│   ├── 01_expr_file/           # Expression files
│   ├── 02_csv_by_index/        # CSV input by index
│   ├── 03_csv_by_name/         # CSV input by name
│   ├── 04_categorical_enum/    # Categorical parameters
│   ├── 05_md_tensor/           # Multi-dimensional tensors
│   ├── 06_sampler_lhs/         # Latin Hypercube Sampling
│   ├── 07_verify_outputs/      # Output verification
│   ├── 08_cem_optimize/        # Cross-Entropy Method
│   ├── 09_de_optimize/         # Differential Evolution
│   ├── 10_precision_cosine/    # Precision control
│   ├── 11_builtins/            # Built-in functions
│   ├── data/                   # Tutorial data files
│   ├── expr/                   # Tutorial expressions
│   └── lay_people/             # Non-technical examples
└── user/                       # User-defined configurations
    └── README.md               # User guide

Example paths:

4. YAML schema (brief)

expr | expr_file samples, top_k, goal, seed platform_id, device_id (optional)

Example:

evaluate:
  expr: "X^2 + Y^2"
  samples: 1000
  top_k: 5
  goal: min
  sampler: lhs
  out_csv: "report/example/functions/quadratic/min.csv"
  params:
    - { name: X, type: float, dist: uniform, min: -2.0, max: 2.0, per_variation: true }
    - { name: Y, type: float, dist: uniform, min: -2.0, max: 2.0, per_variation: true }

5. Parameter fields

Examples:

6. Expression helpers

Examples:

7. Compilation options (OpenCL)

Examples:

See also: doc/advanced.md for more details.

8. I/O

Examples:

8. Report generation

Examples:

9. Examples

10. Tests (small)

Example run:

11. Suite runner

Quick Sanity Checks (in main directory)

Comprehensive Testing (in util directory)

Legacy Suite Commands

GPU Verification

The GPU verification script runs two comprehensive tests:

  1. Comprehensive Test: 50K samples with multiple parameter types and distributions
  2. Stress Test: 100K samples with complex mathematical operations

Both tests verify that your GPU is working correctly with QVAL and provide pass/fail feedback.

12. Multi-objective (weighted sum)

13. Precision control

Examples:

13. Platform notes (macOS fp64)

14. Integer compute mode

Examples:

15. Console output and verbosity

Examples: