![]() |
kspaceFirstOrder3D-CUDA
1.1
The CUDA/C++ implementation of the k-wave toolbox for the time-domain simulation of acoustic wave fields in 3D
|
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>
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... | |
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.