Skip to main content
`Ctrl`+`K`

# PetscPreLoadBegin

Begin a segment of code that may be preloaded (run twice) to get accurate timings

## Synopsis

    #include <petsclog.h>
    void PetscPreLoadBegin(PetscBool flag, char *name);

Not Collective

## Input Parameters

- flag - `PETSC_TRUE` to run twice, `PETSC_FALSE` to run once, may be overridden with command line option `-preload true|false`

- name - name of first stage (lines of code timed separately with `-log_view`) to be preloaded

## Example Usage

      PetscPreLoadBegin(PETSC_TRUE, "first stage");
      // lines of code
      PetscPreLoadStage("second stage");
      // lines of code
      PetscPreLoadEnd();

## Note

Only works in C/C++, not Fortran

Flags available within the macro:

- PetscPreLoadingUsed - `PETSC_TRUE` if we are or have done preloading

- PetscPreLoadingOn - `PETSC_TRUE` if it is CURRENTLY doing preload

- PetscPreLoadIt - `0` for the first computation (with preloading turned off it is only `0`) `1` for the second

- PetscPreLoadMax - number of times it will do the computation, only one when preloading is turned on

The first two variables are available throughout the program, the second two only between the `PetscPreLoadBegin()` and `PetscPreLoadEnd()`

## See Also

Profiling, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`, `PetscPreLoadEnd()`, `PetscPreLoadStage()`

## Level

intermediate

## Location

src/sys/logging/plog.c

## Examples

src/ksp/ksp/tutorials/ex10.c

Index of all Profiling routines
Table of Contents for all manual pages
Index of all manual pages