| kspaceFirstOrder3D-CUDA 1.1 The CUDA/C++ implementation of the k-wave toolbox for the time-domain simulation of acoustic wave fields in 3D

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Namespaces | Macros | Functions
SolverCUDAKernels.cuh File Reference

Name space for all CUDA kernels used in the 3D solver. More...

`#include <MatrixClasses/RealMatrix.h>`
`#include <MatrixClasses/ComplexMatrix.h>`
`#include <MatrixClasses/IndexMatrix.h>`
`#include <MatrixClasses/CUFFTComplexMatrix.h>`
`#include <Utils/DimensionSizes.h>`
`#include <Parameters/Parameters.h>`
`#include <Parameters/CUDAParameters.h>`
Include dependency graph for SolverCUDAKernels.cuh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Namespaces
| SolverCUDAKernels
| List of cuda kernels used k-space first order 3D solver.

## Functions
int | SolverCUDAKernels::GetCUDACodeVersion ()
| Get the CUDA architecture and GPU code version the code was compiled with. More...
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)
| Compute acoustic velocity for default case (heterogeneous). More...
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)
| Compute acoustic velocity, scalar and uniform case. More...
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)
| Compute acoustic velocity, scalar, non-uniform case. More...
void | SolverCUDAKernels::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 | SolverCUDAKernels::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 | SolverCUDAKernels::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 | 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)
| Compute velocity for the initial pressure problem. More...
void | SolverCUDAKernels::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 | 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)
| Compute acoustic velocity for initial pressure problem, if rho0_sgx is scalar, non uniform grid, x component. More...
void | SolverCUDAKernels::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 | 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)
| Compute gradient of acoustic velocity on uniform grid. More...
void | SolverCUDAKernels::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 | SolverCUDAKernels::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 | 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)
| Calculate acoustic density for non-linear case, homogenous case. More...
void | SolverCUDAKernels::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 | 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)
| Calculate acoustic density for linear case, homogenous case. More...
void | SolverCUDAKernels::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 | 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)
| Calculate three temporary sums in the new pressure formula, non-linear absorbing case. More...
void | SolverCUDAKernels::ComputeAbsorbtionTerm (TCUFFTComplexMatrix &fft1, TCUFFTComplexMatrix &fft2, const TRealMatrix &absorb_nabla1, const TRealMatrix &absorb_nabla2)
| Compute absorbing term with abosrb_nabla1 and absorb_nabla2. More...
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)
| Sum sub-terms to calculate new pressure, non-linear case. More...
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)
| Sum sub-terms to calculate new pressure, linear case. More...
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)
| Sum sub-terms for new p, linear lossless case. More...
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)
| Calculate two temporary sums in the new pressure formula, linear absorbing case. More...
void | SolverCUDAKernels::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 | SolverCUDAKernels::TrasposeReal3DMatrixXY (float *outputMatrix, const float *inputMatrix, const dim3 &dimSizes)
| Transpose a real 3D matrix in the X-Y direction. More...
void | SolverCUDAKernels::TrasposeReal3DMatrixXZ (float *outputMatrix, const float *inputMatrix, const dim3 &dimSizes)
| Transpose a real 3D matrix in the X-Y direction. More...
void | SolverCUDAKernels::ComputeVelocityShiftInX (TCUFFTComplexMatrix &cufft_shift_temp, const TComplexMatrix &x_shift_neg_r)
| Compute the velocity shift in Fourier space over the X axis. More...
void | SolverCUDAKernels::ComputeVelocityShiftInY (TCUFFTComplexMatrix &cufft_shift_temp, const TComplexMatrix &y_shift_neg_r)
| Compute the velocity shift in Fourier space over the Y axis. More...
void | SolverCUDAKernels::ComputeVelocityShiftInZ (TCUFFTComplexMatrix &cufft_shift_temp, const TComplexMatrix &z_shift_neg_r)
| Compute the velocity shift in Fourier space over the Z axis. More...

## Detailed Description

Author
  Jiri Jaros
  Faculty of Information Technology
  Brno University of Technology
  jaros.nosp@m.jir@.nosp@m.fit.v.nosp@m.utbr.nosp@m..cz

Version
  kspaceFirstOrder3D 3.4

Date
  11 March 2013, 13:10 (created)
  27 July 2016, 15:09 (revised)

# License

This file is part of the C++ extension of the k-Wave Toolbox (http://www.k-wave.org).
Copyright (C) 2016 Jiri Jaros and Bradley Treeby.

This file is part of the k-Wave. k-Wave is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

k-Wave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with k-Wave. If not, see http://www.gnu.org/licenses/.

Definition in file SolverCUDAKernels.cuh.