MaCh3 2.2.1
Reference Guide
Loading...
Searching...
No Matches
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.