petsc-3.7.1 2016-05-15
Report Typos and Errors

PetscPrefetchBlock

Prefetches a block of memory

Synopsis

#include <petscsys.h>
void PetscPrefetchBlock(const anytype *a,size_t n,int rw,int t)
Not Collective Many br

Input Parameters

a - pointer to first element to fetch (any type but usually PetscInt or PetscScalar) Many br
n - number of elements to fetch Many br
rw - 1 if the memory will be written to, otherwise 0 (ignored by many processors) Many br
t - temporal locality (PETSC_PREFETCH_HINT_{NTA,T0,T1,T2}), see note Many br

Many br

Notes

The last two arguments (rw and t) must be compile-time constants. Many br

Adopting Intel's x86/x86-64 conventions, there are four levels of temporal locality. Not all architectures offer Many brequivalent locality hints, but the following macros are always defined to their closest analogue. Many br

PETSC_PREFETCH_HINT_NTA - Non-temporal. Prefetches directly to L1, evicts to memory (skips higher level cache unless it was already there when prefetched). Many br
PETSC_PREFETCH_HINT_T0 - Fetch to all levels of cache and evict to the closest level. Use this when the memory will be reused regularly despite necessary eviction from L1. Many br
PETSC_PREFETCH_HINT_T1 - Fetch to level 2 and higher (not L1). Many br
PETSC_PREFETCH_HINT_T2 - Fetch to high-level cache only. (On many systems, T0 and T1 are equivalent.) Many br

This function does nothing on architectures that do not support prefetch and never errors (even if passed an invalid Many braddress). Many br


Location:include/petscsys.h
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages