template class xf::hpc::rtm::RTM2D

#include "rtm2d.hpp"

Overview

RTM2D class defines the basic operations for 2D RTM2D .

Parameters:

t_DataType the basic wavefield datatype
t_Order the spatial discretization order
t_MaxDim the maximum height this kernel can process
t_PE the number of processing elements
template <
    typename t_DataType,
    int t_Order,
    int t_MaxDim = 1024,
    int t_MaxB = 40,
    int t_PE = t_Order / 2
    >
class RTM2D: public xf::hpc::rtm::Stencil2D

// typedefs

typedef Stencil2D <t_DataType, t_Order, t_MaxDim, t_PE>::t_PairType t_PairType
typedef Stencil2D <t_DataType, t_Order, t_MaxDim, t_PE>::t_WideType t_WideType
typedef t_WideType::t_TypeInt t_InType
typedef t_PairType::t_TypeInt t_PairInType
typedef blas::WideType <t_InType, t_HalfOrder/t_PE> t_UpbType
typedef t_UpbType::t_TypeInt t_UpbInType

Inherited Members

// typedefs

typedef blas::WideType <t_DataType, t_PE> t_WideType
typedef t_WideType::t_TypeInt t_InType
typedef blas::WideType <t_InType, t_NumData, t_WideType::t_TypeWidth> t_PairType
typedef t_PairType::t_TypeInt t_PairInType

// fields

static const unsigned int t_NumData
static const unsigned int t_HalfOrder
static const unsigned int t_FifoDepth

Methods

forward

void forward (
    const t_DataType p_src,
    hls::stream <t_UpbInType>& p_upb,
    hls::stream <t_InType>& p_v2dt2,
    hls::stream <t_InType>& p_vt,
    hls::stream <t_PairInType>& p_p0,
    hls::stream <t_PairInType>& p_p1
    )

forward defines the forward streaming module

Parameters:

p_src is the source wavefield at given time stamp
p_upb is the upper boundary to be saved
p_v2dt2 is the pow(v * dt, 2)
p_vt is a copy of p_v2dt2
p_p0 is the stream of input wavefield p(t-1) and p(t)
p_p1 is the stream of output wavefield p(t) and p(t+1)

backwardF

void backwardF (
    hls::stream <t_UpbInType>& p_upb,
    hls::stream <t_InType>& p_v2dt2,
    hls::stream <t_InType>& p_vt,
    hls::stream <t_PairInType>& p_p0,
    hls::stream <t_PairInType>& p_p1,
    hls::stream <t_InType>& p_p,
    bool p_t = false
    )

backwardF defines the backward streaming module for source wavefield

Parameters:

p_upb the stream of upper boundary to be restored
p_v2dt2 the pow(v * dt, 2)
p_vt a copy of p_v2dt2
p_p0 the stream of input wavefield p(t+1) and p(t)
p_p1 the stream of output wavefield p(t) and p(t-1)
p_p the stream of wavefield p(t-1) for cross-correlation
p_t switch to swap p(t) and p(t-1) memory

backwardR

void backwardR (
    hls::stream <t_DataType>& p_rec,
    hls::stream <t_InType>& p_v2dt2,
    hls::stream <t_InType>& p_vt,
    hls::stream <t_PairInType>& p_r0,
    hls::stream <t_PairInType>& p_r1,
    hls::stream <t_InType>& p_r
    )

backwardR defines the backward streaming module for receiver wavefield

Parameters:

p_rec the stream of the data from receivers
p_v2dt2 the pow(v * dt, 2)
p_vt a copy of p_v2dt2
p_r0 the stream of input wavefield r(t+1) and r(t)
p_r1 the stream of output wavefield r(t) and r(t-1)
p_r the stream of wavefield r(t-1) for cross-correlation

crossCorrelation

void crossCorrelation (
    hls::stream <t_InType>& p_p,
    hls::stream <t_InType>& p_r,
    hls::stream <t_InType>& p_imgIn,
    hls::stream <t_InType>& p_imgOut
    )

crossCorrelation constructs the detecting area images

Parameters:

p_p the stream of wavefield p(t) for cross-correlation
p_r the stream of wavefield r(t) for cross-correlation
p_imgIn the stream of input image
p_imgOut the stream of output image