alps_rel_cache Module

Rank-0 caller only. Cache errors are recoverable; live arrays change only on a valid hit. Native IEEE binary64 stream format; Linux build discovery and POSIX atomic publication.


Uses

  • module~~alps_rel_cache~~UsesGraph module~alps_rel_cache alps_rel_cache ieee_arithmetic ieee_arithmetic module~alps_rel_cache->ieee_arithmetic iso_c_binding iso_c_binding module~alps_rel_cache->iso_c_binding iso_fortran_env iso_fortran_env module~alps_rel_cache->iso_fortran_env module~alps_cache_sha256 alps_cache_sha256 module~alps_rel_cache->module~alps_cache_sha256 module~alps_cache_sha256->iso_fortran_env

Used by

  • module~~alps_rel_cache~~UsedByGraph module~alps_rel_cache alps_rel_cache proc~derivative_f0_rel derivative_f0_rel proc~derivative_f0_rel->module~alps_rel_cache

Variables

Type Visibility Attributes Name Initial
integer(kind=int64), private, parameter :: format_version = 1
integer(kind=int64), private, parameter :: algorithm_revision = 1
integer, private, parameter :: header_size = 312
integer, private, parameter :: trailer_size = 80
character(len=16), private, parameter :: magic = 'ALPS_REL_CACHE'
character(len=16), private, parameter :: complete = 'ALPS_REL_DONE'
logical, private, save :: build_attempted = .false.
logical, private, save :: build_ok = .false.
character(len=64), private, save :: build_hash = ''
character(len=256), private, save :: build_reason = ''

Interfaces

interface

  • private function posix_mkstemp(template) result(fd) bind(C,name='mkstemp'))

    Arguments

    Type IntentOptional Attributes Name
    character(len=c_char), intent(inout) :: template(*)

    Return Value integer(kind=c_int)

interface

  • private function posix_close(fd) result(status) bind(C,name='close'))

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=c_int), value :: fd

    Return Value integer(kind=c_int)

interface

  • private function posix_rename(old, new) result(status) bind(C,name='rename'))

    Arguments

    Type IntentOptional Attributes Name
    character(len=c_char), intent(in) :: old(*)
    character(len=c_char), intent(in) :: new(*)

    Return Value integer(kind=c_int)

interface

  • private function posix_unlink(path) result(status) bind(C,name='unlink'))

    Arguments

    Type IntentOptional Attributes Name
    character(len=c_char), intent(in) :: path(*)

    Return Value integer(kind=c_int)


Derived Types

type, public ::  rel_cache_identity

Validated construction identity produced by cache_identity, never read from a filename.

Components

Type Visibility Attributes Name Initial
character(len=64), public :: key = ''

Lowercase SHA-256 input key and strict executable/library/environment compatibility digest.

character(len=64), public :: build = ''

Lowercase SHA-256 input key and strict executable/library/environment compatibility digest.

integer, public :: dims(4) = 0

Source nperp/npar and target ngamma/npparbar interval counts, excluding species index.

real(kind=real64), public :: settings(4) = 0

Exact construction parameters; smoothing is currently zero.


Functions

private function cache_path(directory, id) result(path)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: directory
type(rel_cache_identity), intent(in) :: id

Return Value character(len=:), allocatable

private function metadata(id) result(items)

Arguments

Type IntentOptional Attributes Name
type(rel_cache_identity), intent(in) :: id

Return Value integer(kind=int64), (16)

private function header(id, normalization) result(bytes)

Arguments

Type IntentOptional Attributes Name
type(rel_cache_identity), intent(in) :: id
real(kind=real64), intent(in) :: normalization

Return Value character(len=header_size)

private function valid_values(values, normalization) result(ok)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: values(0:,0:,:)
real(kind=real64), intent(in) :: normalization

Return Value logical


Subroutines

private subroutine discover_build()

Fail closed if executable/library/CPU identity cannot be established.

Arguments

None

private subroutine framed(state, text)

Arguments

Type IntentOptional Attributes Name
type(sha256_state), intent(inout) :: state
character(len=*), intent(in) :: text

public subroutine cache_identity(coordinates, source, mass, va, pi, ngamma, npparbar, id, ok, reason)

Hash all consumed source data and construction settings, never species index or filename.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: coordinates(0:,0:,:)
real(kind=real64), intent(in) :: source(0:,0:)
real(kind=real64), intent(in) :: mass
real(kind=real64), intent(in) :: va
real(kind=real64), intent(in) :: pi
integer, intent(in) :: ngamma
integer, intent(in) :: npparbar
type(rel_cache_identity), intent(out) :: id
logical, intent(out) :: ok
character(len=*), intent(out) :: reason

private subroutine read_entry(path, id, values, normalization, ok, reason)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: path
type(rel_cache_identity), intent(in) :: id
real(kind=real64), intent(out), allocatable :: values(:,:,:)
real(kind=real64), intent(out) :: normalization
logical, intent(out) :: ok
character(len=*), intent(out) :: reason

public subroutine cache_load(directory, id, gamma, parallel, distribution, derivatives, normalization, hit, reason)

Transactional load: rejected entries never modify caller arrays. Arrays retain zero-based target-grid bounds; derivative component bounds are 1:2. On hit, normalization is the saved pre-division integral, not a new integration. The caller must use an identity from cache_identity and matching destination shapes.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: directory
type(rel_cache_identity), intent(in) :: id
real(kind=real64), intent(inout) :: gamma(0:,0:)
real(kind=real64), intent(inout) :: parallel(0:,0:)
real(kind=real64), intent(inout) :: distribution(0:,0:)
real(kind=real64), intent(inout) :: derivatives(0:,0:,:)
real(kind=real64), intent(out) :: normalization
logical, intent(out) :: hit
character(len=*), intent(out) :: reason

public subroutine cache_save(directory, id, gamma, parallel, distribution, derivatives, normalization, ok, reason)

Write/close/verify a unique same-directory temporary entry before atomic POSIX rename. Inputs are read-only. Failure returns ok=false and leaves an existing entry untouched. Uses libc via ISO_C_BINDING; no C source or additional library is required on Linux.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: directory
type(rel_cache_identity), intent(in) :: id
real(kind=real64), intent(in) :: gamma(0:,0:)
real(kind=real64), intent(in) :: parallel(0:,0:)
real(kind=real64), intent(in) :: distribution(0:,0:)
real(kind=real64), intent(in) :: derivatives(0:,0:,:)
real(kind=real64), intent(in) :: normalization
logical, intent(out) :: ok
character(len=*), intent(out) :: reason