MaCh3  2.2.3
Reference Guide
gpuMCMCProcessorUtils.cuh
Go to the documentation of this file.
1 #pragma once
2 // MaCh3 utils for processing/diagnostic MCMC
3 // Written by Kamil Skwarczynski
4 //
5 // Contains code to run on CUDA GPUs. Right now only can calculate autocorrelations
6 // Potential extensions:
7 // -Covariance matrix calculations and other matrix operations
8 // -Effective Sample Size evaluation
9 
10 #include "Manager/gpuUtils.cuh"
11 
14 
23 __host__ void InitGPU_AutoCorr(
24  float **ParStep_gpu,
25  float **NumeratorSum_gpu,
26  float **ParamSums_gpu,
27  float **DenomSum_gpu,
28 
29  int n_Entries,
30  int n_Pars,
31  const int n_Lags);
32 
42 __host__ void CopyToGPU_AutoCorr(
43  float *ParStep_cpu,
44  float *NumeratorSum_cpu,
45  float *ParamSums_cpu,
46  float *DenomSum_cpu,
47 
48  float *ParStep_gpu,
49  float *NumeratorSum_gpu,
50  float *ParamSums_gpu,
51  float *DenomSum_gpu);
52 
53 
59 __global__ void EvalOnGPU_AutoCorr(
60  const float* __restrict__ ParStep_gpu,
61  const float* __restrict__ ParamSums_gpu,
62  float* NumeratorSum_gpu,
63  float* DenomSum_gpu);
64 
72 __host__ void RunGPU_AutoCorr(
73  float* ParStep_gpu,
74  float* ParamSums_gpu,
75  float* NumeratorSum_gpu,
76  float* DenomSum_gpu,
77  float* NumeratorSum_cpu,
78  float* DenomSum_cpu);
79 
85 __host__ void CleanupGPU_AutoCorr(
86  float *ParStep_gpu,
87  float *NumeratorSum_gpu,
88  float *ParamSums_gpu,
89  float *DenomSum_gpu);
__global__ void EvalOnGPU_AutoCorr(const float *__restrict__ ParStep_gpu, const float *__restrict__ ParamSums_gpu, float *NumeratorSum_gpu, float *DenomSum_gpu)
Eval autocorrelations based on Box and Jenkins.
__host__ void InitGPU_AutoCorr(float **ParStep_gpu, float **NumeratorSum_gpu, float **ParamSums_gpu, float **DenomSum_gpu, int n_Entries, int n_Pars, const int n_Lags)
KS: Initialiser, here we allocate memory for variables and copy constants.
__host__ void CopyToGPU_AutoCorr(float *ParStep_cpu, float *NumeratorSum_cpu, float *ParamSums_cpu, float *DenomSum_cpu, float *ParStep_gpu, float *NumeratorSum_gpu, float *ParamSums_gpu, float *DenomSum_gpu)
KS: Copy necessary variables from CPU to GPU.
__host__ void RunGPU_AutoCorr(float *ParStep_gpu, float *ParamSums_gpu, float *NumeratorSum_gpu, float *DenomSum_gpu, float *NumeratorSum_cpu, float *DenomSum_cpu)
KS: This call the main kernel responsible for calculating LagL and later copy results back to CPU.
__host__ void CleanupGPU_AutoCorr(float *ParStep_gpu, float *NumeratorSum_gpu, float *ParamSums_gpu, float *DenomSum_gpu)
KS: free memory on gpu.
Common CUDA utilities and definitions for shared GPU functionality.