cmdstanr icon indicating copy to clipboard operation
cmdstanr copied to clipboard

Model returns "C stack usage 7970612 is too close to the limit" with cmdstanr but not with rstan

Open pachadotdev opened this issue 2 years ago • 0 comments

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. 

pachadotdev avatar Jul 06 '23 14:07 pachadotdev