Xmipp
v3.23.11-Nereus
|
#include "cuda_gpu_correlation.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <cuda_runtime.h>
#include <cufft.h>
#include "cuda_asserts.h"
#include "cuda_basic_math.h"
#include <time.h>
#include <sys/time.h>
#include <vector>
Go to the source code of this file.
Macros | |
#define | PI 3.14159265359 |
Functions | |
__global__ void | calcAbsKernel (cufftComplex *d_in, float *d_out, int dim) |
__global__ void | sumRadiusKernel (float *d_in, float *d_out, float *d_out_max, float *d_out_zero, int dim, int radius, int ndim) |
__global__ void | calculateMax2 (float *d_in, float *d_out, float *position, int yxdim, int Ndim, bool firstCall) |
__global__ void | pointwiseMultiplicationComplexOneManyKernel_three (cufftComplex *M, cufftComplex *manyF, cufftComplex *MmanyF, cufftComplex *manyF_sq, cufftComplex *MmanyF_sq, cufftComplex *maskAux, int nzyxdim, int yxdim, int ndim, bool power2) |
__global__ void | pointwiseMultiplicationComplexOneManyKernel_two (cufftComplex *M, cufftComplex *manyF, cufftComplex *MmanyF, cufftComplex *manyF_sq, cufftComplex *MmanyF_sq, int nzyxdim, int yxdim, int ndim, bool power2) |
__global__ void | pointwiseMultiplicationComplexOneManyKernel (cufftComplex *M, cufftComplex *manyF, cufftComplex *MmanyF, int nzyxdim, int yxdim, bool power2) |
__global__ void | calculateDenomFunctionKernel (float *MFrealSpace, float *MF2realSpace, float *maskAutocorrelation, float *out, int nzyxdim, int yxdim, bool power2) |
__global__ void | calculateNccKernel (float *RefExpRealSpace, float *MFrealSpaceRef, float *MFrealSpaceExp, float *MF2realSpaceRef, float *MF2realSpaceExp, float *mask, float *NCC, int nzyxdim, int yxdim, int xdim, int ydim, int maskCount, int max_shift, bool power2yx, bool power2x) |
__device__ void | wrapping (int &x, int &y, int xdim, int ydim) |
__global__ void | applyTransformKernel (float *d_in, float *d_out, float *transMat, int nzyxdim, int yxdim, int xdim, int ydim, bool power2yx, bool power2x) |
__global__ void | calculateNccRotationKernel (float *RefExpRealSpace, cufftComplex *polarFFTRef, cufftComplex *polarFFTExp, cufftComplex *polarSquaredFFTRef, cufftComplex *polarSquaredFFTExp, float maskFFTPolarReal, float *NCC, int yxdimFFT, int nzyxdim, int yxdim) |
__global__ void | pointwiseMultiplicationComplexKernel (cufftComplex *reference, cufftComplex *experimental, cufftComplex *RefExpFourier, int nzyxdim, int yxdim) |
__global__ void | maskingPaddingKernel (float *d_in, float *mask, float *padded_image_gpu, float *padded_image2_gpu, float *padded_mask_gpu, int xdim, int ydim, int yxdim, int numImag, int pad_xdim, int pad_ydim, int pad_yxdim, bool experimental, bool power2x) |
__global__ void | buildTranslationMatrix (float *d_pos, float *lastMat, float *result, float *maxGpu, float *NCC, int Xdim, int Ydim, int Ndim, int NCC_yxdim, int fixPadding, double maxShift2, bool power2x) |
__global__ void | buildRotationMatrix (float *d_pos, float *lastMat, float *result, float *maxGpu, float *auxMax, float *NCC, int Xdim, int Ndim, int NCC_yxdim, int fixPadding, double maxShift2, bool power2x) |
__global__ void | cart2polar (float *image, float *polar, float *polar2, int maxRadius, int maxAng, int Nimgs, int Ydim, int Xdim, bool rotate) |
__global__ void | calculateMaxThreads (float *d_in, float *d_out, float *position, int yxdim, int Ndim, int yxdim2, int Ndim2) |
void | padding_masking (GpuMultidimArrayAtGpu< float > &d_orig_image, GpuMultidimArrayAtGpu< float > &mask, GpuMultidimArrayAtGpu< float > &padded_image_gpu, GpuMultidimArrayAtGpu< float > &padded_image2_gpu, GpuMultidimArrayAtGpu< float > &padded_mask_gpu, bool experimental, myStreamHandle &myStream) |
void | pointwiseMultiplicationFourier (const GpuMultidimArrayAtGpu< std::complex< float > > &M, const GpuMultidimArrayAtGpu< std::complex< float > > &manyF, GpuMultidimArrayAtGpu< std::complex< float > > &MmanyF, myStreamHandle &myStream) |
void | pointwiseMultiplicationFourier_two (const GpuMultidimArrayAtGpu< std::complex< float > > &M, const GpuMultidimArrayAtGpu< std::complex< float > > &manyF, GpuMultidimArrayAtGpu< std::complex< float > > &MmanyF, const GpuMultidimArrayAtGpu< std::complex< float > > &manyF_sq, GpuMultidimArrayAtGpu< std::complex< float > > &MmanyF_sq, myStreamHandle &myStream) |
void | pointwiseMultiplicationFourier_three (const GpuMultidimArrayAtGpu< std::complex< float > > &M, const GpuMultidimArrayAtGpu< std::complex< float > > &manyF, GpuMultidimArrayAtGpu< std::complex< float > > &MmanyF, const GpuMultidimArrayAtGpu< std::complex< float > > &manyF_sq, GpuMultidimArrayAtGpu< std::complex< float > > &MmanyF_sq, myStreamHandle &myStream, GpuMultidimArrayAtGpu< std::complex< float > > &maskAux) |
void | calculateMaxNew2DNew (int yxdim, int Ndim, float *d_data, GpuMultidimArrayAtGpu< float > &d_out, GpuMultidimArrayAtGpu< float > &d_pos, myStreamHandle &myStream) |
void | cuda_calculate_correlation_rotation (GpuCorrelationAux &referenceAux, GpuCorrelationAux &experimentalAux, TransformMatrix< float > &transMat, float *max_vector, int maxShift, mycufftHandle &myhandlePadded, bool mirror, StructuresAux &myStructureAux, myStreamHandle &myStream, TransformMatrix< float > &resultRT) |
void | cuda_calculate_correlation (GpuCorrelationAux &referenceAux, GpuCorrelationAux &experimentalAux, TransformMatrix< float > &transMat, float *max_vector, int maxShift, mycufftHandle &myhandlePadded, bool mirror, StructuresAux &myStructureAux, myStreamHandle &myStream, TransformMatrix< float > &resultTR, bool saveMaxVector) |
void | cuda_calculate_correlation_two (GpuCorrelationAux &referenceAux, GpuCorrelationAux &experimentalAuxTR, TransformMatrix< float > &transMatTR, float *max_vectorTR, int maxShift, mycufftHandle &myhandlePaddedTR, bool mirror, StructuresAux &myStructureAuxTR, myStreamHandle &myStreamTR, GpuCorrelationAux &experimentalAuxRT, TransformMatrix< float > &transMatRT, float *max_vectorRT, mycufftHandle &myhandlePaddedRT, StructuresAux &myStructureAuxRT, myStreamHandle &myStreamRT, TransformMatrix< float > &resultTR, TransformMatrix< float > &resultRT, mycufftHandle &ifftcb, bool saveMaxVector) |
void | apply_transform (GpuMultidimArrayAtGpu< float > &d_original_image, GpuMultidimArrayAtGpu< float > &d_transform_image, TransformMatrix< float > &transMat, myStreamHandle &myStream) |
void | cuda_cart2polar (GpuMultidimArrayAtGpu< float > &image, GpuMultidimArrayAtGpu< float > &polar_image, GpuMultidimArrayAtGpu< float > &polar2_image, bool rotate, myStreamHandle &myStream) |
void | waitGpu (myStreamHandle &myStream, bool allStreams) |
void | calculateAbs (std::complex< float > *data, float *out, int size, myStreamHandle &myStream) |
#define PI 3.14159265359 |
Definition at line 19 of file cuda_gpu_correlation.cpp.
__global__ void applyTransformKernel | ( | float * | d_in, |
float * | d_out, | ||
float * | transMat, | ||
int | nzyxdim, | ||
int | yxdim, | ||
int | xdim, | ||
int | ydim, | ||
bool | power2yx, | ||
bool | power2x | ||
) |
Definition at line 386 of file cuda_gpu_correlation.cpp.
__global__ void buildRotationMatrix | ( | float * | d_pos, |
float * | lastMat, | ||
float * | result, | ||
float * | maxGpu, | ||
float * | auxMax, | ||
float * | NCC, | ||
int | Xdim, | ||
int | Ndim, | ||
int | NCC_yxdim, | ||
int | fixPadding, | ||
double | maxShift2, | ||
bool | power2x | ||
) |
Definition at line 670 of file cuda_gpu_correlation.cpp.
__global__ void buildTranslationMatrix | ( | float * | d_pos, |
float * | lastMat, | ||
float * | result, | ||
float * | maxGpu, | ||
float * | NCC, | ||
int | Xdim, | ||
int | Ydim, | ||
int | Ndim, | ||
int | NCC_yxdim, | ||
int | fixPadding, | ||
double | maxShift2, | ||
bool | power2x | ||
) |
Definition at line 584 of file cuda_gpu_correlation.cpp.
__global__ void calcAbsKernel | ( | cufftComplex * | d_in, |
float * | d_out, | ||
int | dim | ||
) |
Definition at line 22 of file cuda_gpu_correlation.cpp.
void calculateAbs | ( | std::complex< float > * | data, |
float * | out, | ||
int | size, | ||
myStreamHandle & | myStream | ||
) |
Definition at line 1505 of file cuda_gpu_correlation.cpp.
__global__ void calculateDenomFunctionKernel | ( | float * | MFrealSpace, |
float * | MF2realSpace, | ||
float * | maskAutocorrelation, | ||
float * | out, | ||
int | nzyxdim, | ||
int | yxdim, | ||
bool | power2 | ||
) |
Definition at line 305 of file cuda_gpu_correlation.cpp.
__global__ void calculateMax2 | ( | float * | d_in, |
float * | d_out, | ||
float * | position, | ||
int | yxdim, | ||
int | Ndim, | ||
bool | firstCall | ||
) |
Definition at line 64 of file cuda_gpu_correlation.cpp.
void calculateMaxNew2DNew | ( | int | yxdim, |
int | Ndim, | ||
float * | d_data, | ||
GpuMultidimArrayAtGpu< float > & | d_out, | ||
GpuMultidimArrayAtGpu< float > & | d_pos, | ||
myStreamHandle & | myStream | ||
) |
Definition at line 1111 of file cuda_gpu_correlation.cpp.
__global__ void calculateMaxThreads | ( | float * | d_in, |
float * | d_out, | ||
float * | position, | ||
int | yxdim, | ||
int | Ndim, | ||
int | yxdim2, | ||
int | Ndim2 | ||
) |
Definition at line 807 of file cuda_gpu_correlation.cpp.
__global__ void calculateNccKernel | ( | float * | RefExpRealSpace, |
float * | MFrealSpaceRef, | ||
float * | MFrealSpaceExp, | ||
float * | MF2realSpaceRef, | ||
float * | MF2realSpaceExp, | ||
float * | mask, | ||
float * | NCC, | ||
int | nzyxdim, | ||
int | yxdim, | ||
int | xdim, | ||
int | ydim, | ||
int | maskCount, | ||
int | max_shift, | ||
bool | power2yx, | ||
bool | power2x | ||
) |
Definition at line 323 of file cuda_gpu_correlation.cpp.
__global__ void calculateNccRotationKernel | ( | float * | RefExpRealSpace, |
cufftComplex * | polarFFTRef, | ||
cufftComplex * | polarFFTExp, | ||
cufftComplex * | polarSquaredFFTRef, | ||
cufftComplex * | polarSquaredFFTExp, | ||
float | maskFFTPolarReal, | ||
float * | NCC, | ||
int | yxdimFFT, | ||
int | nzyxdim, | ||
int | yxdim | ||
) |
Definition at line 467 of file cuda_gpu_correlation.cpp.
__global__ void cart2polar | ( | float * | image, |
float * | polar, | ||
float * | polar2, | ||
int | maxRadius, | ||
int | maxAng, | ||
int | Nimgs, | ||
int | Ydim, | ||
int | Xdim, | ||
bool | rotate | ||
) |
Definition at line 749 of file cuda_gpu_correlation.cpp.
void cuda_cart2polar | ( | GpuMultidimArrayAtGpu< float > & | image, |
GpuMultidimArrayAtGpu< float > & | polar_image, | ||
GpuMultidimArrayAtGpu< float > & | polar2_image, | ||
bool | rotate, | ||
myStreamHandle & | myStream | ||
) |
__global__ void maskingPaddingKernel | ( | float * | d_in, |
float * | mask, | ||
float * | padded_image_gpu, | ||
float * | padded_image2_gpu, | ||
float * | padded_mask_gpu, | ||
int | xdim, | ||
int | ydim, | ||
int | yxdim, | ||
int | numImag, | ||
int | pad_xdim, | ||
int | pad_ydim, | ||
int | pad_yxdim, | ||
bool | experimental, | ||
bool | power2x | ||
) |
Definition at line 517 of file cuda_gpu_correlation.cpp.
__global__ void pointwiseMultiplicationComplexKernel | ( | cufftComplex * | reference, |
cufftComplex * | experimental, | ||
cufftComplex * | RefExpFourier, | ||
int | nzyxdim, | ||
int | yxdim | ||
) |
Definition at line 501 of file cuda_gpu_correlation.cpp.
__global__ void pointwiseMultiplicationComplexOneManyKernel | ( | cufftComplex * | M, |
cufftComplex * | manyF, | ||
cufftComplex * | MmanyF, | ||
int | nzyxdim, | ||
int | yxdim, | ||
bool | power2 | ||
) |
Definition at line 283 of file cuda_gpu_correlation.cpp.
__global__ void pointwiseMultiplicationComplexOneManyKernel_three | ( | cufftComplex * | M, |
cufftComplex * | manyF, | ||
cufftComplex * | MmanyF, | ||
cufftComplex * | manyF_sq, | ||
cufftComplex * | MmanyF_sq, | ||
cufftComplex * | maskAux, | ||
int | nzyxdim, | ||
int | yxdim, | ||
int | ndim, | ||
bool | power2 | ||
) |
Definition at line 180 of file cuda_gpu_correlation.cpp.
__global__ void pointwiseMultiplicationComplexOneManyKernel_two | ( | cufftComplex * | M, |
cufftComplex * | manyF, | ||
cufftComplex * | MmanyF, | ||
cufftComplex * | manyF_sq, | ||
cufftComplex * | MmanyF_sq, | ||
int | nzyxdim, | ||
int | yxdim, | ||
int | ndim, | ||
bool | power2 | ||
) |
Definition at line 233 of file cuda_gpu_correlation.cpp.
void pointwiseMultiplicationFourier | ( | const GpuMultidimArrayAtGpu< std::complex< float > > & | M, |
const GpuMultidimArrayAtGpu< std::complex< float > > & | manyF, | ||
GpuMultidimArrayAtGpu< std::complex< float > > & | MmanyF, | ||
myStreamHandle & | myStream | ||
) |
Definition at line 973 of file cuda_gpu_correlation.cpp.
void pointwiseMultiplicationFourier_three | ( | const GpuMultidimArrayAtGpu< std::complex< float > > & | M, |
const GpuMultidimArrayAtGpu< std::complex< float > > & | manyF, | ||
GpuMultidimArrayAtGpu< std::complex< float > > & | MmanyF, | ||
const GpuMultidimArrayAtGpu< std::complex< float > > & | manyF_sq, | ||
GpuMultidimArrayAtGpu< std::complex< float > > & | MmanyF_sq, | ||
myStreamHandle & | myStream, | ||
GpuMultidimArrayAtGpu< std::complex< float > > & | maskAux | ||
) |
Definition at line 1015 of file cuda_gpu_correlation.cpp.
void pointwiseMultiplicationFourier_two | ( | const GpuMultidimArrayAtGpu< std::complex< float > > & | M, |
const GpuMultidimArrayAtGpu< std::complex< float > > & | manyF, | ||
GpuMultidimArrayAtGpu< std::complex< float > > & | MmanyF, | ||
const GpuMultidimArrayAtGpu< std::complex< float > > & | manyF_sq, | ||
GpuMultidimArrayAtGpu< std::complex< float > > & | MmanyF_sq, | ||
myStreamHandle & | myStream | ||
) |
Definition at line 991 of file cuda_gpu_correlation.cpp.
__global__ void sumRadiusKernel | ( | float * | d_in, |
float * | d_out, | ||
float * | d_out_max, | ||
float * | d_out_zero, | ||
int | dim, | ||
int | radius, | ||
int | ndim | ||
) |
Definition at line 33 of file cuda_gpu_correlation.cpp.
void waitGpu | ( | myStreamHandle & | myStream, |
bool | allStreams | ||
) |
Definition at line 1497 of file cuda_gpu_correlation.cpp.
__device__ void wrapping | ( | int & | x, |
int & | y, | ||
int | xdim, | ||
int | ydim | ||
) |
Definition at line 374 of file cuda_gpu_correlation.cpp.