首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多线程与R?

多线程与R?
EN

Stack Overflow用户
提问于 2012-05-31 21:59:26
回答 4查看 74.8K关注 0票数 61

阅读R-project网站,有一些(不清楚的)关于R的多线程的引用,但还不清楚基础产品和CRAN库是如何编译的。

Revolution Analytics提供多线程基础(?)适用于Windows和Redhat的下载。

其他一些Linux发行版也会包含多线程R(和软件包)吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-31 22:05:33

你弄糊涂了。

R(以及在此之前的S)内部是单线程的,并且几乎肯定会保持单线程。据我所知,Duncan Temple Lang的PhD工作就是为了克服这一点,如果他不能做到这一点...

尽管如此,还是有一些多线程的情况:

  • 首先,无论何时进行外部调用,只要锁定得当,就可以实现多线程。这就是BLAS库MKL,Goto/Open BLAS,Atlas (如果是多线程构建的),...全部出价。Revo R“只是”随(英特尔的) MKL一起发布,因为英特尔恰好是Revo的主要投资者
  • 如果你对自己做的事情很小心,你可以使用OpenMP (多线程的编译器扩展)。这始于Luke Tierney在pnmath和pnmath0 (过去是实验性/外部包)上的工作,从那以后就进入了R本身,缓慢但可靠。接下来,在多核世界中,在正确的操作系统上,你可以一直使用fork()。这就是多核软件包的先驱,也是并行软件包现在的延续。
  • 最后但并非最不重要的是,还有网络/ RPC路由,它被诸如Rmpi、snow、parallel等软件包使用。并包含在HPC introductions.

中。

票数 74
EN

Stack Overflow用户

发布于 2017-12-03 01:56:55

Renjin是一个基于JVM的解释器实现。他们声称:

与GNU R不同,人人网是多线程的,可以在平台即服务的环境中愉快地运行,例如Google Appengine、AWS Elastic Beanstalk、Heroku或Microsoft Azure。

#resource http://www.bedatadriven.com/products/renjin.html

尽管如此,我们从R调用的实际R包可能不是线程安全的。

请参阅Jep文档,从从Java/Scala调用CPython的角度解释此问题。

https://github.com/ninia/jep/wiki/How-Jep-Works#threading-complications

由于JNI的复杂性和局限性,创建Jep实例的线程必须重用于对该Jep实例的所有方法调用。Jep将强制执行此操作,并抛出提到无效线程访问的异常。(在未来,我们希望简化或提供线程管理实用程序)。

同一线程不能同时运行多个Jep实例。虽然这在技术上是允许的,但它可能会扰乱线程状态,并导致Python解释器中的死锁。这可能会更改为在将来遇到异常时抛出异常。

因此,Renjin似乎有希望,但实际使用的二进制(C/C++等)包需要验证线程安全性。

还有其他的R实现

https://dynamicecology.wordpress.com/2014/01/14/r-isnt-just-r-anymore/

票数 3
EN

Stack Overflow用户

发布于 2014-11-13 09:50:30

this呢?由于该页面的修改日期是在2014年5月,我认为提到的包相对较新,或者可能那些在第一个答案写出来的时候还不稳定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10835122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档