![]() |
kspaceFirstOrder3D-CUDA
1.1
The CUDA/C++ implementation of the k-wave toolbox for the time-domain simulation of acoustic wave fields in 3D
|
List of cuda kernels used k-space first order 3D solver. More...
Functions | |
int | GetCUDACodeVersion () |
Get the CUDA architecture and GPU code version the code was compiled with. More... | |
void | ComputeVelocity (TRealMatrix &ux_sgx, TRealMatrix &uy_sgy, TRealMatrix &uz_sgz, const TRealMatrix &ifft_x, const TRealMatrix &ifft_y, const TRealMatrix &ifft_z, const TRealMatrix &dt_rho0_sgx, const TRealMatrix &dt_rho0_sgy, const TRealMatrix &dt_rho0_sgz, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z) |
Compute acoustic velocity for default case (heterogeneous). More... | |
void | ComputeVelocityScalarUniform (TRealMatrix &ux_sgx, TRealMatrix &uy_sgy, TRealMatrix &uz_sgz, const TRealMatrix &ifft_x, const TRealMatrix &ifft_y, const TRealMatrix &ifft_z, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z) |
Compute acoustic velocity, scalar and uniform case. More... | |
void | ComputeVelocityScalarNonuniform (TRealMatrix &ux_sgx, TRealMatrix &uy_sgy, TRealMatrix &uz_sgz, const TRealMatrix &ifft_x, const TRealMatrix &ifft_y, const TRealMatrix &ifft_z, const TRealMatrix &dxudxn_sgx, const TRealMatrix &dyudyn_sgy, const TRealMatrix &dzudzn_sgz, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z) |
Compute acoustic velocity, scalar, non-uniform case. More... | |
void | AddTransducerSource (TRealMatrix &ux_sgx, const TIndexMatrix &u_source_index, TIndexMatrix &delay_mask, const TRealMatrix &transducer_signal) |
Add transducer data source to X component. More... | |
void | AddVelocitySource (TRealMatrix &uxyz_sgxyz, const TRealMatrix &u_source_input, const TIndexMatrix &u_source_index, const size_t t_index) |
Add in velocity source terms. More... | |
void | AddPressureSource (TRealMatrix &rhox, TRealMatrix &rhoy, TRealMatrix &rhoz, const TRealMatrix &p_source_input, const TIndexMatrix &p_source_index, const size_t t_index) |
Add in pressure source term. More... | |
void | Compute_p0_Velocity (TRealMatrix &ux_sgx, TRealMatrix &uy_sgy, TRealMatrix &uz_sgz, const TRealMatrix &dt_rho0_sgx, const TRealMatrix &dt_rho0_sgy, const TRealMatrix &dt_rho0_sgz) |
Compute velocity for the initial pressure problem. More... | |
void | Compute_p0_Velocity (TRealMatrix &ux_sgx, TRealMatrix &uy_sgy, TRealMatrix &uz_sgz) |
Compute acoustic velocity for initial pressure problem, if rho0_sgx is scalar, uniform grid. More... | |
void | Compute_p0_VelocityScalarNonUniform (TRealMatrix &ux_sgx, TRealMatrix &uy_sgy, TRealMatrix &uz_sgz, const TRealMatrix &dxudxn_sgx, const TRealMatrix &dyudyn_sgy, const TRealMatrix &dzudzn_sgz) |
Compute acoustic velocity for initial pressure problem, if rho0_sgx is scalar, non uniform grid, x component. More... | |
void | ComputePressurelGradient (TCUFFTComplexMatrix &fft_x, TCUFFTComplexMatrix &fft_y, TCUFFTComplexMatrix &fft_z, const TRealMatrix &kappa, const TComplexMatrix &ddx, const TComplexMatrix &ddy, const TComplexMatrix &ddz) |
Compute part of the new velocity - gradient of p. More... | |
void | ComputeVelocityGradient (TCUFFTComplexMatrix &fft_x, TCUFFTComplexMatrix &fft_y, TCUFFTComplexMatrix &fft_z, const TRealMatrix &kappa, const TComplexMatrix &ddx_k_shift_neg, const TComplexMatrix &ddy_k_shift_neg, const TComplexMatrix &ddz_k_shift_neg) |
Compute gradient of acoustic velocity on uniform grid. More... | |
void | ComputeVelocityGradientNonuniform (TRealMatrix &duxdx, TRealMatrix &duydy, TRealMatrix &duzdz, const TRealMatrix &dxudxn, const TRealMatrix &dyudyn, const TRealMatrix &dzudzn) |
Shift gradient of acoustic velocity on non-uniform grid. More... | |
void | Compute_p0_AddInitialPressure (TRealMatrix &p, TRealMatrix &rhox, TRealMatrix &rhoy, TRealMatrix &rhoz, const TRealMatrix &p0, const bool Is_c2_scalar, const float *c2) |
Add initial pressure to p0 (as p0 source). More... | |
void | ComputeDensityNonlinearHomogeneous (TRealMatrix &rhox, TRealMatrix &rhoy, TRealMatrix &rhoz, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z, const TRealMatrix &duxdx, const TRealMatrix &duydy, const TRealMatrix &duzdz) |
Calculate acoustic density for non-linear case, homogenous case. More... | |
void | ComputeDensityNonlinearHeterogeneous (TRealMatrix &rhox, TRealMatrix &rhoy, TRealMatrix &rhoz, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z, const TRealMatrix &duxdx, const TRealMatrix &duydy, const TRealMatrix &duzdz, const TRealMatrix &rho0) |
Calculate acoustic density for non-linear case, heterogenous case. | |
void | ComputeDensityLinearHomogeneous (TRealMatrix &rhox, TRealMatrix &rhoy, TRealMatrix &rhoz, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z, const TRealMatrix &duxdx, const TRealMatrix &duydy, const TRealMatrix &duzdz) |
Calculate acoustic density for linear case, homogenous case. More... | |
void | ComputeDensityLinearHeterogeneous (TRealMatrix &rhox, TRealMatrix &rhoy, TRealMatrix &rhoz, const TRealMatrix &pml_x, const TRealMatrix &pml_y, const TRealMatrix &pml_z, const TRealMatrix &duxdx, const TRealMatrix &duydy, const TRealMatrix &duzdz, const TRealMatrix &rho0) |
Calculate acoustic density for linear case, heterogeneous case. | |
void | ComputePressurePartsNonLinear (TRealMatrix &rho_sum, TRealMatrix &BonA_sum, TRealMatrix &du_sum, const TRealMatrix &rhox, const TRealMatrix &rhoy, const TRealMatrix &rhoz, const TRealMatrix &duxdx, const TRealMatrix &duydy, const TRealMatrix &duzdz, const bool is_BonA_scalar, const float *BonA_matrix, const bool is_rho0_scalar, const float *rho0_matrix) |
Calculate three temporary sums in the new pressure formula, non-linear absorbing case. More... | |
void | ComputeAbsorbtionTerm (TCUFFTComplexMatrix &fft1, TCUFFTComplexMatrix &fft2, const TRealMatrix &absorb_nabla1, const TRealMatrix &absorb_nabla2) |
Compute absorbing term with abosrb_nabla1 and absorb_nabla2. More... | |
void | SumPressureTermsNonlinear (TRealMatrix &p, const TRealMatrix &BonA_temp, const bool is_c2_scalar, const float *c2_matrix, const bool is_tau_eta_scalar, const float *absorb_tau, const float *tau_matrix, const float *absorb_eta, const float *eta_matrix) |
Sum sub-terms to calculate new pressure, non-linear case. More... | |
void | SumPressureTermsLinear (TRealMatrix &p, const TRealMatrix &absorb_tau_temp, const TRealMatrix &absorb_eta_temp, const TRealMatrix &sum_rhoxyz, const bool is_c2_scalar, const float *c2_matrix, const bool is_tau_eta_scalar, const float *tau_matrix, const float *eta_matrix) |
Sum sub-terms to calculate new pressure, linear case. More... | |
void | SumPressureNonlinearLossless (TRealMatrix &p, const TRealMatrix &rhox, const TRealMatrix &rhoy, const TRealMatrix &rhoz, const bool is_c2_scalar, const float *c2_matrix, const bool is_BonA_scalar, const float *BonA_matrix, const bool is_rho0_scalar, const float *rho0_matrix) |
Sum sub-terms for new p, linear lossless case. More... | |
void | ComputePressurePartsLinear (TRealMatrix &sum_rhoxyz, TRealMatrix &sum_rho0_du, const TRealMatrix &rhox, const TRealMatrix &rhoy, const TRealMatrix &rhoz, const TRealMatrix &duxdx, const TRealMatrix &duydy, const TRealMatrix &duzdz, const bool is_rho0_scalar, const float *rho0_matrix) |
Calculate two temporary sums in the new pressure formula, linear absorbing case. More... | |
void | SumPressureLinearLossless (TRealMatrix &p, const TRealMatrix &rhox, const TRealMatrix &rhoy, const TRealMatrix &rhoz, const bool is_c2_scalar, const float *c2_matrix) |
Sum sub-terms for new p, linear lossless case. More... | |
void | TrasposeReal3DMatrixXY (float *outputMatrix, const float *inputMatrix, const dim3 &dimSizes) |
Transpose a real 3D matrix in the X-Y direction. More... | |
void | TrasposeReal3DMatrixXZ (float *outputMatrix, const float *inputMatrix, const dim3 &dimSizes) |
Transpose a real 3D matrix in the X-Y direction. More... | |
void | ComputeVelocityShiftInX (TCUFFTComplexMatrix &cufft_shift_temp, const TComplexMatrix &x_shift_neg_r) |
Compute the velocity shift in Fourier space over the X axis. More... | |
void | ComputeVelocityShiftInY (TCUFFTComplexMatrix &cufft_shift_temp, const TComplexMatrix &y_shift_neg_r) |
Compute the velocity shift in Fourier space over the Y axis. More... | |
void | ComputeVelocityShiftInZ (TCUFFTComplexMatrix &cufft_shift_temp, const TComplexMatrix &z_shift_neg_r) |
Compute the velocity shift in Fourier space over the Z axis. More... | |
List of cuda kernels used k-space first order 3D solver
void SolverCUDAKernels::AddPressureSource | ( | TRealMatrix & | rhox, |
TRealMatrix & | rhoy, | ||
TRealMatrix & | rhoz, | ||
const TRealMatrix & | p_source_input, | ||
const TIndexMatrix & | p_source_index, | ||
const size_t | t_index | ||
) |
Interface to kernel which adds in pressure source (to acoustic density).
[out] | rhox | - Acoustic density |
[out] | rhoy | - Acoustic density |
[out] | rhoz | - Acoustic density |
[in] | p_source_input | - Source input to add |
[in] | p_source_index | - Index matrix with source |
[in] | t_index | - Actual timestep |
Definition at line 666 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::AddTransducerSource | ( | TRealMatrix & | ux_sgx, |
const TIndexMatrix & | u_source_index, | ||
TIndexMatrix & | delay_mask, | ||
const TRealMatrix & | transducer_signal | ||
) |
Interface to kernel adding transducer data to ux_sgx.
[in,out] | ux_sgx | - Here we add the signal |
[in] | u_source_index | - Where to add the signal (source) |
[in,out] | delay_mask | - Delay mask to push the signal in the domain (incremented per invocation) |
[in] | transducer_signal | - Transducer signal |
Definition at line 495 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::AddVelocitySource | ( | TRealMatrix & | uxyz_sgxyz, |
const TRealMatrix & | u_source_input, | ||
const TIndexMatrix & | u_source_index, | ||
const size_t | t_index | ||
) |
Interface to CUDA kernel adding in velocity source terms.
[in,out] | uxyz_sgxyz | - Velocity matrix to update |
[in] | u_source_input | - Source input to add |
[in] | u_source_index | - Index matrix |
[in] | t_index | - Actual time step |
Definition at line 563 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::Compute_p0_AddInitialPressure | ( | TRealMatrix & | p, |
TRealMatrix & | rhox, | ||
TRealMatrix & | rhoy, | ||
TRealMatrix & | rhoz, | ||
const TRealMatrix & | p0, | ||
const bool | Is_c2_scalar, | ||
const float * | c2 | ||
) |
Interface for kernel to add initial pressure p0 into p, rhox, rhoy, rhoz.
[out] | p | - Pressure |
[out] | rhox | - Density component |
[out] | rhoy | - Density component |
[out] | rhoz | - Density component |
[in] | p0 | - intial pressure |
[in] | Is_c2_scalar | - Scalar or vector? |
[in] | c2 | - Sound speed |
Definition at line 1111 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::Compute_p0_Velocity | ( | TRealMatrix & | ux_sgx, |
TRealMatrix & | uy_sgy, | ||
TRealMatrix & | uz_sgz, | ||
const TRealMatrix & | dt_rho0_sgx, | ||
const TRealMatrix & | dt_rho0_sgy, | ||
const TRealMatrix & | dt_rho0_sgz | ||
) |
Interface to CUDA Compute u = dt ./ rho0_sgx .* ifft(FFT).
[in,out] | ux_sgx | - data stored in u matrix |
[in,out] | uy_sgy | - data stored in u matrix |
[in,out] | uz_sgz | - data stored in u matrix |
[in] | dt_rho0_sgx | - inner member of the equation |
[in] | dt_rho0_sgy | - inner member of the equation |
[in] | dt_rho0_sgz | - inner member of the equation |
Definition at line 750 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::Compute_p0_Velocity | ( | TRealMatrix & | ux_sgx, |
TRealMatrix & | uy_sgy, | ||
TRealMatrix & | uz_sgz | ||
) |
Interface to CUDA Compute u = dt ./ rho0_sgx .* ifft(FFT). if rho0_sgx is scalar, uniform case.
[in,out] | ux_sgx | - Data stored in u matrix |
[in,out] | uy_sgy | - Data stored in u matrix |
[in,out] | uz_sgz | - Data stored in u matrix |
Definition at line 779 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::Compute_p0_VelocityScalarNonUniform | ( | TRealMatrix & | ux_sgx, |
TRealMatrix & | uy_sgy, | ||
TRealMatrix & | uz_sgz, | ||
const TRealMatrix & | dxudxn_sgx, | ||
const TRealMatrix & | dyudyn_sgy, | ||
const TRealMatrix & | dzudzn_sgz | ||
) |
Interface to CUDA kernel to Compute u = dt./rho0_sgy .* ifft (FFT). if rho0_sgx is scalar, nonuniform non uniform Compute_ddx_kappa_fft_pgrid, y component.
[in,out] | ux_sgx | |
[in,out] | uy_sgy | |
[in,out] | uz_sgz | |
[in] | dxudxn_sgx | |
[in] | dyudyn_sgy | |
[in] | dzudzn_sgz |
Definition at line 841 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeAbsorbtionTerm | ( | TCUFFTComplexMatrix & | fft1, |
TCUFFTComplexMatrix & | fft2, | ||
const TRealMatrix & | absorb_nabla1, | ||
const TRealMatrix & | absorb_nabla2 | ||
) |
Interface to kernel which computes absorbing term with abosrb_nabla1 and absorb_nabla2.
Calculate fft_1 = absorb_nabla1 .* fft_1
Calculate fft_2 = absorb_nabla2 .* fft_2
[in,out] | fft1 | - Nabla1 part |
[in,out] | fft2 | - Nabla2 part |
[in] | absorb_nabla1 | |
[in] | absorb_nabla2 |
Definition at line 1668 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeDensityLinearHomogeneous | ( | TRealMatrix & | rhox, |
TRealMatrix & | rhoy, | ||
TRealMatrix & | rhoz, | ||
const TRealMatrix & | pml_x, | ||
const TRealMatrix & | pml_y, | ||
const TRealMatrix & | pml_z, | ||
const TRealMatrix & | duxdx, | ||
const TRealMatrix & | duydy, | ||
const TRealMatrix & | duzdz | ||
) |
Interface to kernel which calculate new values of rho (acoustic density). Linear, homogenous case.
[out] | rhox | - density x |
[out] | rhoy | - density y |
[out] | rhoz | - density y |
[in] | pml_x | - pml x |
[in] | pml_y | - pml y |
[in] | pml_z | - pml z |
[in] | duxdx | - gradient of velocity x |
[in] | duydy | - gradient of velocity x |
[in] | duzdz | - gradient of velocity z |
Definition at line 1369 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeDensityNonlinearHomogeneous | ( | TRealMatrix & | rhox, |
TRealMatrix & | rhoy, | ||
TRealMatrix & | rhoz, | ||
const TRealMatrix & | pml_x, | ||
const TRealMatrix & | pml_y, | ||
const TRealMatrix & | pml_z, | ||
const TRealMatrix & | duxdx, | ||
const TRealMatrix & | duydy, | ||
const TRealMatrix & | duzdz | ||
) |
Interface to kernel which calculate new values of rho (acoustic density). Non-linear, homogenous case.
[out] | rhox | - density x |
[out] | rhoy | - density y |
[out] | rhoz | - density y |
[in] | pml_x | - pml x |
[in] | pml_y | - pml y |
[in] | pml_z | - pml z |
[in] | duxdx | - gradient of velocity x |
[in] | duydy | - gradient of velocity x |
[in] | duzdz | - gradient of velocity z |
Definition at line 1204 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputePressurelGradient | ( | TCUFFTComplexMatrix & | fft_x, |
TCUFFTComplexMatrix & | fft_y, | ||
TCUFFTComplexMatrix & | fft_z, | ||
const TRealMatrix & | kappa, | ||
const TComplexMatrix & | ddx, | ||
const TComplexMatrix & | ddy, | ||
const TComplexMatrix & | ddz | ||
) |
Interface to kernel which computes the spectral part of pressure gradient calculation bsxfun(@times, ddx_k_shift_pos, kappa .* p_k).
[out] | fft_x | - matrix to store input for iFFT (p) /dx |
[out] | fft_y | - matrix to store input for iFFT (p) /dy |
[out] | fft_z | - matrix to store input for iFFT (p) /dz |
[in] | kappa | - Real matrix of kappa |
[in] | ddx | - precomputed value of ddx_k_shift_pos |
[in] | ddy | - precomputed value of ddy_k_shift_pos |
[in] | ddz | - precomputed value of ddz_k_shift_pos |
Definition at line 912 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputePressurePartsLinear | ( | TRealMatrix & | sum_rhoxyz, |
TRealMatrix & | sum_rho0_du, | ||
const TRealMatrix & | rhox, | ||
const TRealMatrix & | rhoy, | ||
const TRealMatrix & | rhoz, | ||
const TRealMatrix & | duxdx, | ||
const TRealMatrix & | duydy, | ||
const TRealMatrix & | duzdz, | ||
const bool | is_rho0_scalar, | ||
const float * | rho0_matrix | ||
) |
Interface to kernel that Calculates two temporary sums in the new pressure formula, linear absorbing case.
[out] | sum_rhoxyz | - rhox_sgx + rhoy_sgy + rhoz_sgz |
[out] | sum_rho0_du | - rho0* (duxdx + duydy + duzdz); |
[in] | rhox | |
[in] | rhoy | |
[in] | rhoz | |
[in] | duxdx | |
[in] | duydy | |
[in] | duzdz | |
[in] | is_rho0_scalar | |
[in] | rho0_matrix |
Definition at line 2141 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputePressurePartsNonLinear | ( | TRealMatrix & | rho_sum, |
TRealMatrix & | BonA_sum, | ||
TRealMatrix & | du_sum, | ||
const TRealMatrix & | rhox, | ||
const TRealMatrix & | rhoy, | ||
const TRealMatrix & | rhoz, | ||
const TRealMatrix & | duxdx, | ||
const TRealMatrix & | duydy, | ||
const TRealMatrix & | duzdz, | ||
const bool | is_BonA_scalar, | ||
const float * | BonA_matrix, | ||
const bool | is_rho0_scalar, | ||
const float * | rho0_matrix | ||
) |
Interface to kernel which calculates three temporary sums in the new pressure formula
non-linear absorbing case. Scalar values are in constant memory
[out] | rho_sum | - rhox_sgx + rhoy_sgy + rhoz_sgz |
[out] | BonA_sum | - BonA + rho ^2 / 2 rho0 + (rhox_sgx + rhoy_sgy + rhoz_sgz) |
[out] | du_sum | - rho0* (duxdx + duydy + duzdz) |
[in] | rhox,- | Acoustic density X |
[in] | rhoy,- | Acoustic density Y |
[in] | rhoz,- | Acoustic density Z |
[in] | duxdx | - Gradient of velocity in X |
[in] | duydy | - Gradient of velocity in X |
[in] | duzdz | - Gradient of velocity in X |
[in] | is_BonA_scalar | - Is BonA a scalar value (homogeneous) |
[in] | BonA_matrix | - Heterogeneous value for BonA |
[in] | is_rho0_scalar | - Is rho0 a scalar value (homogeneous) |
[in] | rho0_matrix | - Heterogeneous value for rho0 |
Definition at line 1544 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocity | ( | TRealMatrix & | ux_sgx, |
TRealMatrix & | uy_sgy, | ||
TRealMatrix & | uz_sgz, | ||
const TRealMatrix & | ifft_x, | ||
const TRealMatrix & | ifft_y, | ||
const TRealMatrix & | ifft_z, | ||
const TRealMatrix & | dt_rho0_sgx, | ||
const TRealMatrix & | dt_rho0_sgy, | ||
const TRealMatrix & | dt_rho0_sgz, | ||
const TRealMatrix & | pml_x, | ||
const TRealMatrix & | pml_y, | ||
const TRealMatrix & | pml_z | ||
) |
Interface to the CUDA kernel computing new version of ux_sgx. Default (heterogeneous case)
[in,out] | ux_sgx | |
[in,out] | uy_sgy | |
[in,out] | uz_sgz | |
[in] | ifft_x | |
[in] | ifft_y | |
[in] | ifft_z | |
[in] | dt_rho0_sgx | |
[in] | dt_rho0_sgy | |
[in] | dt_rho0_sgz | |
[in] | pml_x | |
[in] | pml_y | |
[in] | pml_z |
Definition at line 247 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityGradient | ( | TCUFFTComplexMatrix & | fft_x, |
TCUFFTComplexMatrix & | fft_y, | ||
TCUFFTComplexMatrix & | fft_z, | ||
const TRealMatrix & | kappa, | ||
const TComplexMatrix & | ddx_k_shift_neg, | ||
const TComplexMatrix & | ddy_k_shift_neg, | ||
const TComplexMatrix & | ddz_k_shift_neg | ||
) |
Interface to kernel calculating the inner part of du, dy, dz on uniform grid.
[in,out] | fft_x | - FFT of ux |
[in,out] | fft_y | - FFT of uy |
[in,out] | fft_z | - FFT of uz |
[in] | kappa | |
[in] | ddx_k_shift_neg | |
[in] | ddy_k_shift_neg | |
[in] | ddz_k_shift_neg |
Definition at line 986 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityGradientNonuniform | ( | TRealMatrix & | duxdx, |
TRealMatrix & | duydy, | ||
TRealMatrix & | duzdz, | ||
const TRealMatrix & | dxudxn, | ||
const TRealMatrix & | dyudyn, | ||
const TRealMatrix & | dzudzn | ||
) |
Interface to CUDA kernel which shift new values of dux, duy and duz on non-uniform grid.
[in,out] | duxdx | |
[in,out] | duydy | |
[in,out] | duzdz | |
[in] | dxudxn | |
[in] | dyudyn | |
[in] | dzudzn |
Definition at line 1047 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityScalarNonuniform | ( | TRealMatrix & | ux_sgx, |
TRealMatrix & | uy_sgy, | ||
TRealMatrix & | uz_sgz, | ||
const TRealMatrix & | ifft_x, | ||
const TRealMatrix & | ifft_y, | ||
const TRealMatrix & | ifft_z, | ||
const TRealMatrix & | dxudxn_sgx, | ||
const TRealMatrix & | dyudyn_sgy, | ||
const TRealMatrix & | dzudzn_sgz, | ||
const TRealMatrix & | pml_x, | ||
const TRealMatrix & | pml_y, | ||
const TRealMatrix & | pml_z | ||
) |
Interface to calculate ux_sgx, uy_sgy and uz_sgz. This is the case for rho0 being a scalar and a non-uniform grid.
[in,out] | ux_sgx | - updated value of ux_sgx |
[in,out] | uy_sgy | - updated value of ux_sgx |
[in,out] | uz_sgz | - updated value of ux_sgx |
[in] | ifft_x | - gradient of X |
[in] | ifft_y | - gradient of X |
[in] | ifft_z | - gradient of X |
[in] | dxudxn_sgx | - matrix dx shift |
[in] | dyudyn_sgy | - matrix dy shift |
[in] | dzudzn_sgz | - matrix dz shift |
[in] | pml_x | - matrix of pml_x |
[in] | pml_y | - matrix of pml_x |
[in] | pml_z | - matrix of pml_x |
Definition at line 433 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityScalarUniform | ( | TRealMatrix & | ux_sgx, |
TRealMatrix & | uy_sgy, | ||
TRealMatrix & | uz_sgz, | ||
const TRealMatrix & | ifft_x, | ||
const TRealMatrix & | ifft_y, | ||
const TRealMatrix & | ifft_z, | ||
const TRealMatrix & | pml_x, | ||
const TRealMatrix & | pml_y, | ||
const TRealMatrix & | pml_z | ||
) |
Interface to the CUDA kernel computing new version of ux_sgx, uy_sgy, uz_sgz. This is the case for rho0 being a scalar and a uniform grid.
[in,out] | ux_sgx | |
[in,out] | uy_sgy | |
[in,out] | uz_sgz | |
[in] | ifft_x | |
[in] | ifft_y | |
[in] | ifft_z | |
[in] | pml_x | |
[in] | pml_y | |
[in] | pml_z |
Definition at line 338 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityShiftInX | ( | TCUFFTComplexMatrix & | cufft_shift_temp, |
const TComplexMatrix & | x_shift_neg_r | ||
) |
Compute the velocity shift in Fourier space over the X axis. This kernel work with the original space.
[in,out] | cufft_shift_temp | - Matrix to calculate 1D FFT to |
[in] | x_shift_neg_r |
Definition at line 2764 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityShiftInY | ( | TCUFFTComplexMatrix & | cufft_shift_temp, |
const TComplexMatrix & | y_shift_neg_r | ||
) |
Compute the velocity shift in Fourier space over the Y axis. This kernel work with the transposed space.
[in,out] | cufft_shift_temp | - Matrix to calculate 1D FFT to |
[in] | y_shift_neg_r |
Definition at line 2805 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::ComputeVelocityShiftInZ | ( | TCUFFTComplexMatrix & | cufft_shift_temp, |
const TComplexMatrix & | z_shift_neg_r | ||
) |
Compute the velocity shift in Fourier space over the Z axis. This kernel work with the transposed space.
[in,out] | cufft_shift_temp | - Matrix to calculate 1D FFT to |
[in] | z_shift_neg_r |
Definition at line 2846 of file SolverCUDAKernels.cu.
int SolverCUDAKernels::GetCUDACodeVersion | ( | ) |
Get the CUDA architecture and GPU code version the code was compiled with.
Definition at line 142 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::SumPressureLinearLossless | ( | TRealMatrix & | p, |
const TRealMatrix & | rhox, | ||
const TRealMatrix & | rhoy, | ||
const TRealMatrix & | rhoz, | ||
const bool | is_c2_scalar, | ||
const float * | c2_matrix | ||
) |
Interface to kernel that sums sub-terms for new p, linear lossless case.
[out] | p | |
[in] | rhox | |
[in] | rhoy | |
[in] | rhoz | |
[in] | is_c2_scalar | |
[in] | c2_matrix |
Definition at line 2219 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::SumPressureNonlinearLossless | ( | TRealMatrix & | p, |
const TRealMatrix & | rhox, | ||
const TRealMatrix & | rhoy, | ||
const TRealMatrix & | rhoz, | ||
const bool | is_c2_scalar, | ||
const float * | c2_matrix, | ||
const bool | is_BonA_scalar, | ||
const float * | BonA_matrix, | ||
const bool | is_rho0_scalar, | ||
const float * | rho0_matrix | ||
) |
Interface to kernel that sums sub-terms for new p, non-linear lossless case.
[out] | p | - New value of pressure |
[in] | rhox | |
[in] | rhoy | |
[in] | rhoz | |
[in] | is_c2_scalar | |
[in] | c2_matrix | |
[in] | is_BonA_scalar | |
[in] | BonA_matrix | |
[in] | is_rho0_scalar | |
[in] | rho0_matrix |
Definition at line 1960 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::SumPressureTermsLinear | ( | TRealMatrix & | p, |
const TRealMatrix & | absorb_tau_temp, | ||
const TRealMatrix & | absorb_eta_temp, | ||
const TRealMatrix & | sum_rhoxyz, | ||
const bool | is_c2_scalar, | ||
const float * | c2_matrix, | ||
const bool | is_tau_eta_scalar, | ||
const float * | tau_matrix, | ||
const float * | eta_matrix | ||
) |
Interface to kernel that sums sub-terms to calculate new pressure, linear case.
[out] | p | - New value of p |
[in] | absorb_tau_temp | - Sub-term with absorb_tau |
[in] | absorb_eta_temp | - Sub-term with absorb_eta |
[in] | sum_rhoxyz | - rhox_sgx + rhoy_sgy + rhoz_sgz |
[in] | is_c2_scalar | |
[in] | c2_matrix | |
[in] | is_tau_eta_scalar | |
[in] | tau_matrix | |
[in] | eta_matrix |
Definition at line 1844 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::SumPressureTermsNonlinear | ( | TRealMatrix & | p, |
const TRealMatrix & | BonA_temp, | ||
const bool | is_c2_scalar, | ||
const float * | c2_matrix, | ||
const bool | is_tau_eta_scalar, | ||
const float * | absorb_tau, | ||
const float * | tau_matrix, | ||
const float * | absorb_eta, | ||
const float * | eta_matrix | ||
) |
Interface to CUDA Sum sub-terms to calculate new pressure, non-linear case.
[in,out] | p | - New value of pressure |
[in] | BonA_temp | - rho0 * (duxdx + duydy + duzdz) |
[in] | is_c2_scalar | |
[in] | c2_matrix | |
[in] | is_tau_eta_scalar | |
[in] | absorb_tau | |
[in] | tau_matrix | |
[in] | absorb_eta | - BonA + rho ^2 / 2 rho0 + (rhox_sgx + rhoy_sgy + rhoz_sgz) |
[in] | eta_matrix |
Definition at line 1729 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::TrasposeReal3DMatrixXY | ( | float * | outputMatrix, |
const float * | inputMatrix, | ||
const dim3 & | dimSizes | ||
) |
Transpose a real 3D matrix in the X-Y direction. It is done out-of-place.
[out] | outputMatrix | - Output matrix data |
[in] | inputMatrix | - Input matrix data |
[in] | dimSizes | - Dimension sizes of the original matrix |
Definition at line 2472 of file SolverCUDAKernels.cu.
void SolverCUDAKernels::TrasposeReal3DMatrixXZ | ( | float * | outputMatrix, |
const float * | inputMatrix, | ||
const dim3 & | dimSizes | ||
) |
Transpose a real 3D matrix in the X-Y direction. It is done out-of-place
[out] | outputMatrix | - Output matrix |
[in] | inputMatrix | - Input matrix |
[in] | dimSizes | - Dimension sizes of the original matrix |
Definition at line 2716 of file SolverCUDAKernels.cu.