cmdstanr
cmdstanr copied to clipboard
Model returns "C stack usage 7970612 is too close to the limit" with cmdstanr but not with rstan
Here's a classic dataset and a classic model that show an error with cmdstanr but not with rstan
qog_std_cs_jan23_stata14.dta.zip
rstan
# setwd("~/Downloads")
library(dplyr)
library(tidyr)
library(haven)
library(rstan)
qog <- read_dta("qog_std_cs_jan23_stata14.dta") %>%
mutate(log_mad_gdppc = log(mad_gdppc)) %>%
select(whr_hap, log_mad_gdppc, fh_cl, vdem_corr, ht_region) %>%
drop_na()
qog_list <- as.list(qog)
qog_list$N <- nrow(qog)
mod_ols <- stan_model("ols.stan")
fit_ols <- sampling(
mod_ols,
qog_list,
seed = 42,
chains = 4,
warmup = 2000,
iter = 20000
)
=> works
cmdstand
library(cmdstanr)
mod_ols <- cmdstan_model("assignment4-ols.stan")
fit_ols <- mod_ols$sample(
data = qog_list,
seed = 42,
chains = 4,
iter_warmup = 2000,
iter_sampling = 20000
)
Error: C stack usage 7970084 is too close to the limit
STAN code without changes
This is the file "ols.stan" that I call from R
// OLS model: slope, intercept, sigma
data {
int<lower=0> N;
vector<lower=0>[N] log_mad_gdppc;
vector<lower=0, upper=10>[N] whr_hap;
vector[N] fh_cl;
vector[N] vdem_corr;
int ht_region[N];
}
parameters {
real a[10];
real a_bar;
real b_gdp;
real b_fh;
real b_corr;
real<lower=0> sigma;
real<lower=0> s_a;
}
transformed parameters {
real a_s[10];
for(i in 1:10){
a_s[i] = a[i] * s_a;
}
}
model {
for(i in 1:10){
a[i] ~ normal(0, 1);
}
a_bar ~ normal(0, 3);
b_gdp ~ normal(0, 1);
b_fh ~ normal(0, 1);
b_corr ~ normal(0, 1);
sigma ~ exponential(1);
for(i in 1:N){
whr_hap[i] ~ normal(
a_bar + a_s[ht_region[i]] + b_gdp * log_mad_gdppc[i] + b_fh * fh_cl[i] +
b_corr * vdem_corr[i], 1
);
}
}
STAN code with changes for the most recent version
stanc --auto-format ols.stan
data {
int<lower=0> N;
vector<lower=0>[N] log_mad_gdppc;
vector<lower=0, upper=10>[N] whr_hap;
vector[N] fh_cl;
vector[N] vdem_corr;
array[N] int ht_region;
}
parameters {
array[10] real a;
real a_bar;
real b_gdp;
real b_fh;
real b_corr;
real<lower=0> sigma;
real<lower=0> s_a;
}
transformed parameters {
array[10] real a_s;
for (i in 1 : 10) {
a_s[i] = a[i] * s_a;
}
}
model {
for (i in 1 : 10) {
a[i] ~ normal(0, 1);
}
a_bar ~ normal(0, 3);
b_gdp ~ normal(0, 1);
b_fh ~ normal(0, 1);
b_corr ~ normal(0, 1);
sigma ~ exponential(1);
for (i in 1 : N) {
whr_hap[i] ~ normal(a_bar + a_s[ht_region[i]] + b_gdp * log_mad_gdppc[i]
+ b_fh * fh_cl[i] + b_corr * vdem_corr[i], 1);
}
}
system information
> session_info()
─ Session info ──────────────────────────────────────────────────────────────────────────────
setting value
version R version 4.3.1 (2023-06-16)
os Linux Mint 21.1
system x86_64, linux-gnu
ui X11
language en_CA:en
collate en_CA.UTF-8
ctype en_CA.UTF-8
tz America/Toronto
date 2023-07-06
pandoc 2.9.2.1 @ /usr/bin/pandoc
─ Packages ──────────────────────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [3] CRAN (R 4.2.0)
backports 1.4.1 2021-12-13 [3] CRAN (R 4.2.0)
bayesplot * 1.10.0 2022-11-16 [1] CRAN (R 4.3.0)
bspm 0.5.2 2023-05-20 [1] CRAN (R 4.3.0)
cachem 1.0.8 2023-05-01 [3] CRAN (R 4.3.0)
callr 3.7.3 2022-11-02 [3] CRAN (R 4.2.2)
checkmate 2.2.0 2023-04-27 [3] CRAN (R 4.3.0)
cli 3.6.1 2023-03-23 [3] CRAN (R 4.2.3)
cmdstanr * 0.5.3 2023-06-30 [1] local
colorspace 2.1-0 2023-01-23 [3] CRAN (R 4.2.2)
crayon 1.5.2 2022-09-29 [3] CRAN (R 4.2.1)
devtools * 2.4.5 2022-10-11 [1] CRAN (R 4.3.0)
digest 0.6.31 2022-12-11 [1] CRAN (R 4.3.0)
distributional 0.3.2 2023-03-22 [1] CRAN (R 4.3.0)
dplyr * 1.1.2 2023-04-20 [3] CRAN (R 4.3.0)
ellipsis 0.3.2 2021-04-29 [3] CRAN (R 4.1.1)
fansi 1.0.4 2023-01-22 [3] CRAN (R 4.2.2)
farver 2.1.1 2022-07-06 [3] CRAN (R 4.2.1)
fastmap 1.1.1 2023-02-24 [3] CRAN (R 4.2.2)
forcats 1.0.0 2023-01-29 [3] CRAN (R 4.2.2)
fs 1.6.2 2023-04-25 [3] CRAN (R 4.3.0)
generics 0.1.3 2022-07-05 [3] CRAN (R 4.2.1)
ggplot2 * 3.4.2 2023-04-03 [3] CRAN (R 4.3.0)
glue 1.6.2 2022-02-24 [3] CRAN (R 4.2.0)
gtable 0.3.3 2023-03-21 [3] CRAN (R 4.2.3)
haven * 2.5.2 2023-02-28 [3] CRAN (R 4.2.2)
hms 1.1.3 2023-03-21 [3] CRAN (R 4.2.3)
htmltools 0.5.5 2023-03-23 [3] CRAN (R 4.2.3)
htmlwidgets 1.6.2 2023-03-17 [3] CRAN (R 4.2.3)
httpuv 1.6.11 2023-05-11 [3] CRAN (R 4.3.0)
jsonlite 1.8.5 2023-06-05 [1] CRAN (R 4.3.0)
knitr 1.42 2023-01-25 [1] CRAN (R 4.3.0)
later 1.3.1 2023-05-02 [3] CRAN (R 4.3.0)
lifecycle 1.0.3 2022-10-07 [3] CRAN (R 4.2.1)
magrittr 2.0.3 2022-03-30 [3] CRAN (R 4.2.0)
memoise 2.0.1 2021-11-26 [3] CRAN (R 4.2.0)
mime 0.12 2021-09-28 [3] CRAN (R 4.2.0)
miniUI 0.1.1.1 2018-05-18 [3] CRAN (R 4.0.1)
munsell 0.5.0 2018-06-12 [3] CRAN (R 4.0.1)
pillar 1.9.0 2023-03-22 [3] CRAN (R 4.2.3)
pkgbuild 1.4.0 2022-11-27 [3] CRAN (R 4.2.2)
pkgconfig 2.0.3 2019-09-22 [3] CRAN (R 4.0.1)
pkgload 1.3.2 2022-11-16 [1] CRAN (R 4.3.0)
posterior 1.4.1 2023-03-14 [1] CRAN (R 4.3.0)
prettyunits 1.1.1 2020-01-24 [3] CRAN (R 4.0.1)
processx 3.8.1 2023-04-18 [3] CRAN (R 4.3.0)
profvis 0.3.8 2023-05-02 [3] CRAN (R 4.3.0)
promises 1.2.0.1 2021-02-11 [3] CRAN (R 4.1.1)
ps 1.7.5 2023-04-18 [3] CRAN (R 4.3.0)
purrr 1.0.1 2023-01-10 [3] CRAN (R 4.2.2)
R6 2.5.1 2021-08-19 [3] CRAN (R 4.2.0)
Rcpp 1.0.10 2023-01-22 [3] CRAN (R 4.2.2)
readr 2.1.4 2023-02-10 [3] CRAN (R 4.2.2)
remotes 2.4.2 2021-11-30 [3] CRAN (R 4.2.0)
rlang 1.1.1 2023-04-28 [3] CRAN (R 4.3.0)
scales 1.2.1 2022-08-20 [3] CRAN (R 4.2.1)
sessioninfo 1.2.2 2021-12-06 [3] CRAN (R 4.2.0)
shiny 1.7.4 2022-12-15 [1] CRAN (R 4.3.0)
stringi 1.7.12 2023-01-11 [3] CRAN (R 4.2.2)
stringr 1.5.0 2022-12-02 [3] CRAN (R 4.3.0)
tensorA 0.36.2 2020-11-19 [1] CRAN (R 4.3.0)
tibble 3.2.1 2023-03-20 [3] CRAN (R 4.2.3)
tidyr * 1.3.0 2023-01-24 [3] CRAN (R 4.2.2)
tidyselect 1.2.0 2022-10-10 [3] CRAN (R 4.2.1)
tzdb 0.4.0 2023-05-12 [3] CRAN (R 4.3.0)
urlchecker 1.0.1 2021-11-30 [1] CRAN (R 4.3.0)
usethis * 2.2.0.9001 2023-06-14 [1] local
utf8 1.2.3 2023-01-31 [3] CRAN (R 4.2.2)
vctrs 0.6.3 2023-06-14 [3] CRAN (R 4.3.1)
withr 2.5.0 2022-03-03 [3] CRAN (R 4.2.0)
xfun 0.39 2023-04-20 [3] CRAN (R 4.3.0)
xtable 1.8-4 2019-04-21 [3] CRAN (R 4.0.1)
[1] /home/pacha/R/x86_64-pc-linux-gnu-library/4.3
[2] /usr/local/lib/R/site-library
[3] /usr/lib/R/site-library
[4] /usr/lib/R/library
> cmdstanr::check_cmdstan_toolchain()
The C++ toolchain required for CmdStan is setup properly!
> install_cmdstan(cores = 2)
The C++ toolchain required for CmdStan is setup properly!
* Latest CmdStan release is v2.32.2
* Installing CmdStan v2.32.2 in /home/pacha/.cmdstan/cmdstan-2.32.2
* Downloading cmdstan-2.32.2.tar.gz from GitHub...
Warning message:
An installation already exists at /home/pacha/.cmdstan/cmdstan-2.32.2. Please remove or rename the installation folder or set overwrite=TRUE.