【问题标题】:Floating Point Exception after installing rstan/brms安装 rstan/brms 后的浮点异常
【发布时间】:2021-07-23 05:30:00
【问题描述】:

我目前正试图让 rstan 和 brms 在我的 Fedora34 机器上运行,但几个小时以来一直没有这样做。至关重要的是,测试示例模型或其他模型总是会给我一个“浮点异常”。当我在 RStudio 中运行代码时,它只是崩溃并中止一切,而从终端运行时基本相同,但给了我浮点异常的提示,如下所示。遗憾的是,错误消息仅限于“浮点异常”的信息。

make 命令是:

  make -f '/usr/lib64/R/etc/Makeconf' -f '/usr/share/R/make/shlib.mk' \
  -f '/root/.R/Makevars' CXX='$(CXX14) $(CXX14STD)' \
   CXXFLAGS='$(CXX14FLAGS)' CXXPICFLAGS='$(CXX14PICFLAGS)' \
SHLIB_LDFLAGS='$(SHLIB_CXX14LDFLAGS)' SHLIB_LD='$(SHLIB_CXX14LD)' \
SHLIB='filef8256c0e3305.so' OBJECTS='filef8256c0e3305.o'

make 会使用:

g++ -std=gnu++14 -I"/usr/include/R" -DNDEBUG   -I"/usr/local/lib/R/library \
/Rcpp/include/"  -I"/usr/local/lib/R/library/RcppEigen/include/" \
 -I"/usr/local/lib/R/library/RcppEigen/include/unsupported"  \
-I"/usr/local/lib/R/library/BH/include" \
-I"/usr/local/lib/R/library/StanHeaders/include/src/" \
 -I"/usr/local/lib/R/library/StanHeaders/include/"  \
-I"/usr/local/lib/R/library/RcppParallel/include/"  -I"/usr/local/lib/R/library/rstan/include" \
-DEIGEN_NO_DEBUG  -DBOOST_DISABLE_ASSERTS  \
-DBOOST_PENDING_INTEGER_LOG2_HPP  -DSTAN_THREADS  -DBOOST_NO_AUTO_PTR  \
-include '/usr/local/lib/R/library/StanHeaders/include/stan/math/prim/mat/fun/Eigen.hpp' \
 -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1   -I/usr/local/include   -fpic  \
-O3 -march=native -mtune=native -fPIC \
-c filef8256c0e3305.cpp -o filef8256c0e3305.o
if test  "zfilef8256c0e3305.o" != "z"; then \
  echo g++ -std=gnu++14 -shared -L"/usr/lib64/R/lib" -Wl,-z,relro \
-Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld  \
-o filef8256c0e3305.so filef8256c0e3305.o  '/usr/local/lib/R/library/rstan/lib//libStanServices.a' \
-L'/usr/local/lib/R/library/StanHeaders/lib/' -lStanHeaders \
-L'/usr/local/lib/R/library/RcppParallel/lib/' -ltbb  \
-L"/usr/lib64/R/lib" -lR; \
  g++ -std=gnu++14 -shared -L"/usr/lib64/R/lib" -Wl,-z,relro \
-Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld  -o filef8256c0e3305.so filef8256c0e3305.o \
 '/usr/local/lib/R/library/rstan/lib//libStanServices.a' \
 -L'/usr/local/lib/R/library/StanHeaders/lib/' -lStanHeaders \
-L'/usr/local/lib/R/library/RcppParallel/lib/' -ltbb  \
-L"/usr/lib64/R/lib" -lR; \
fi
Floating point exception

这对我来说似乎很奇怪,因为我没有尝试做任何花哨的事情,只是运行示例模型,因此不应该出现此类错误。我尝试完全重新安装 R,从源代码重新安装 rstan,但都没有奏效。此外, cmdstanr 为我提供了我所有的 C++ 链和路径都设置正确的信息。 cmdstanr 的 MCMC 也可以正常运行,所以问题似乎出在 brms 和 rstan 上。

一些包裹信息: 操作系统:x86_64(Fedora 34)、linux-gnu;斯坦:2.21.2; RCPP:1.0.6;内联:0.3.17,R 4.0.4

【问题讨论】:

  • 鉴于 Fedora 34 looks like a brand new release,我想知道您是否发现了新的错误/不一致?如果您在这里没有得到帮助,可能值得在 Stan 论坛上发帖...
  • 嗯,主要问题是除了提到的“浮点异常”之外没有错误消息。不过,你对愤怒是完全正确的,对不起。我相应地编辑了帖子并添加了更多信息。
  • 如果你使用brms(..., backend="cmdstanr")...你会得到什么??
  • 我不知道改变后端的可能性,但它工作得非常顺利。所以这似乎将问题归结为rstan?现在使用 cmdstanr 将是一个很好的解决方法,非常感谢。
  • 很高兴这有效。我没有那么密切地关注 Stan,但有趣的是,有很多关于 rstan 的建议效果不佳,建议是“改用 cmdstanr”,例如github.com/paul-buerkner/brms/issues/891

标签: r stan rstan


【解决方案1】:

不知道实际问题是什么,但鉴于cmdstanr 有效,您可以通过

解决您的问题
brms(..., backend="cmdstanr")

关于rstan 和cmdstanr 之间差异的一些讨论请参见here:其中

通过外部进程运行 Stan 可以减少意外崩溃,尤其是在 RStudio 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多