24.3 OpenCL
OpenCL (Open Computing Language) is a framework that enables writing programs that execute across heterogeneous platforms. An OpenCL program can be run on CPUs and GPUs. In order to run OpenCL programs, an OpenCL runtime be installed on the target system.
Stan’s OpenCL backend is currently supported in CmdStan and its wrappers. In order
to use it, the model must be compiled with the STAN_OPENCL
makefile flag. Setting
this flag means that the Stan-to-C++ translator (stanc3
) will be supplied the
--use-opencl
flag and that the OpenCL enabled backend (Stan Math functions) will be enabled.
In Stan, the following distributions can be automatically run in parallel on both CPUs and GPUs with OpenCL:
bernoulli_lpmf
bernoulli_logit_lpmf
bernoulli_logit_glm_lpmf*
beta_lpdf
beta_proportion_lpdf
binomial_lpmf
categorical_logit_glm_lpmf*
cauchy_lpdf
chi_square_lpdf
double_exponential_lpdf
exp_mod_normal_lpdf
exponential_lpdf
frechet_lpdf
gamma_lpdf
gumbel_lpdf
inv_chi_square_lpdf
inv_gamma_lpdf
logistic_lpdf
lognormal_lpdf
neg_binomial_lpmf
neg_binomial_2_lpmf
neg_binomial_2_log_lpmf
neg_binomial_2_log_glm_lpmf*
normal_lpdf
normal_id_glm_lpdf*
ordered_logistic_glm_lpmf*
pareto_lpdf
pareto_type_2_lpdf
poisson_lpmf
poisson_log_lpmf
poisson_log_glm_lpmf*
rayleigh_lpdf
scaled_inv_chi_square_lpdf
skew_normal_lpdf
std_normal_lpdf
student_t_lpdf
uniform_lpdf
weibull_lpdf
OpenCL is not used when the covariate argument to the GLM functions is a
row_vector
.