精华内容
下载资源
问答
  • Sun 最近发布了一直研究已久的 Fortress语言.Fortress是定位于系统并行机制的研究语言. 最初的目的是將 Java 程式語言的經驗套用到下一代程式語言,尤其將動態編譯套用到 Sun DARPA HPCS 計畫的高產力運算. Sun ...

    Sun 最近发布了一直研究已久的 Fortress语言.Fortress是定位于系统并行机制的研究语言. 最初的目的是將 Java 程式語言的經驗套用到下一代程式語言,尤其將動態編譯套用到 Sun DARPA HPCS 計畫的高產力運算. 

    Sun 最近发布了一直研究已久的 Fortress语言.

    Fortress是定位于系统并行机制的研究语言. 最初的目的是將 Java 程式語言的經驗套用到下一代程式語言,尤其將動態編譯套用到 Sun DARPA HPCS 計畫的高產力運算.

    Sun官方提到说:“Fortress尝试代替Fortran的工作就像java代替C的工作”.“在Fortress中并行是默认的。而你想串行做一个循环时会遇到困难。”

    根据SUN官方网站的描述,这种语言是甚至可以为超级计算机服务的。

    最显著的特性是, Fortress将所有运行进程都看成是并行运行的.

    这在双核甚至多核越来越普遍的今天, Fortress将会逐渐体现它的意义.

    官方站点:
    http://fortress.sunsource.net
     

    展开全文
  • R语言 并行计算 向量是R语言最基本的数据类型,它的下标从1开始,正的下标用于提取向量中对应的元素,负的下标则去掉向量中对应的元素,通过逻辑运算提出向量中满足条件的元素
  • R语言并行计算

    2020-08-23 16:41:54
    一直以来,总觉得并行计算是种很高深的技术,需要系统性的学习才能掌握。直到最近工作中进行大量循环计算,动辄十几个小时,实在是被整崩溃了,于是百度了一下,惊喜的发现R有很傻瓜的并行计算用法,完全满足基本的...

      一直以来,总觉得并行计算是种很高深的技术,需要系统性的学习才能掌握。直到最近工作中进行大量循环计算,动辄十几个小时,实在是被整崩溃了,于是百度了一下,惊喜的发现R有很傻瓜的并行计算用法,完全满足基本的计算需求,这里简单记录一下。

      R语言的并行可以用parallel包,这个包是自带的,不用下载,直接library即可。它本质上相当于打开多个R控制台,然后将任务拆分后让这些控制台计算,等各部分计算完成后再合在一起呈现出来。

      完成一次并行计算需要的函数主要有:makeCluster、clusterExport、clusterEvalQ、clusterApply、parLapply、parSapply、parApply等。

      makeCluster(spec, type, ...)用于创建并行集合。参数spec可以理解为线程数,或并行计算“打开R控制台”的数量;参数type默认值为"PSOCK",是一种组织并行计算的底层结构,这个参数还可以选"FORK"。

      clusterEvalQ(cl = NULL, expr)用于在各线程中运行一些表达式,通常是用于加载各种包。参数cl表示要调用的并行集合(即makeCluster函数的运行结果);参数expr表示表达式。

      clusterExport(cl = NULL, varlist, envir = .GlobalEnv) 用于导入需要的变量。参数cl表示要调用的并行集合(即makeCluster函数的运行结果);参数varlist表示要导入的变量名称集合,相当于打开多个R控制台后在每个控制台中导入这些变量;参数envir,表示上述变量的来源,默认值.GlobalEnv表示变量从当前全局环境中导入。

      clusterApply、parLapply、parSapply、parApply等函数用于并行计算,用法类似apply函数族,只不过参数中要额外加入调用的并行集合cl。

      下面举一个简单的例子,使用quantmod包的getSymbols函数下载股票“600030.ss”和“000001.sz”的收盘价并输出最大值:

    library(parallel)
    ## 构建变量
    src <- "yahoo"
    codes <- c("600030.SS", "000001.SZ")
    ## 构建函数,提取数据并计算最大值
    FUN <- function(x){
      setSymbolLookup(XXX =list(name = x, src = src))
      getSymbols("XXX")
      res <- max(XXX[, paste0(x, '.Close')])
      return(res)
    }
    ## 构建线程数为2的并行集合
    cl = makeCluster(2)
    ## 函数FUN中需要src, 导入变量src
    clusterExport(cl, varlist = 'src')
    ## 加载使用的包quantmod
    clusterEvalQ(cl, expr = library(quantmod))
    ## 计算
    res <- clusterApply(cl = cl, x = codes, fun = FUN)
    ## 输出结果
    res
    
    
    > res
    [[1]]
    [1] 37.82
    
    [[2]]
    [1] 17.22

      计算结果显示两只股票的最高收盘价格分别是37.82和17.22。

      parallel包的基本用法就介绍完了,它的计算使用了类“apply”函数的计算方式,如果想用循环,可以尝试foreach包。

    展开全文
  • 编程语言Julia并行计算实现模式探讨
  • R语言中的并行计算

    2015-09-21 21:30:07
    r语言并行计算,设计parallel, doparallel, foreach等包
    
    众所周知,在大数据时代R语言有两个弱项,其中一个就是只能使用单线程计算。 但是R在2.14版本之后,R就内置了parallel包,强化了R的并行计算能力。

    parallel包实际上整合了之前已经比较成熟的snow包和multicore包,multicore无法在windows下运行。parallel包可以很容易的在计算集群上实施并行计算,在多个CPU核心的单机上,也能发挥并行计算的功能。我们今天就来探索一下parallel包在多核心单机上的使用。

    parallel包的思路和lapply函数很相似,都是将输入数据分割、计算、整合结果。只不过并行计算是用到了不同的cpu来运算。

    这样的计算过程可以使用如下方式来表述:
    1、启动M个附属进程,并初始化
    2、针对于任务,为每个附属进程分发所有的数据
    3、将任务粗略的分为M个块儿(chunks),并将这些块儿发送到附属进程(包含需要的R代码)
    4、等待所有的附属进程完成计算任务,并返回结果
    5、对于其他任务也同样重复2-4
    6、关闭附属进程

    在parallel包里,对应上述两种并行化方式有如下两个核心函数(针对于lapply函数的并行化,mclapply在windows上不能使用):

    parLapply(cl, x, FUN, ...)
    mclapply(X, FUN, ..., mc.cores)

    案例1、不使用并行计算,直接使用lapply(隐式循环函数,它实际就是对不同的数据应用了相同的函数):

    fun <- function(x){
    return (x+1);
    }

    system.time({
    res <- lapply(1:5000000, fun);
    });

    user   system elapsed
    21.42     1.74   25.70

    案例2、使用parallel包来加速

    library(parallel)
    #打开四核,具体核数根据机器的核数决定
    cl <- makeCluster(getOption("cl.cores", 4));
    system.time({
    res <- parLapply(cl, 1:5000000,   fun)
    });
    user system elapsed
    6.54 0.34 19.95
    #关闭并行计算
    stopCluster(cl);

    看看单核机器跑出来的结果:
    user   system elapsed
    29.30     9.23   97.22

    所以,并非核数越多越好,看机器配置。

    这个函数有两点要注意:

    首先要先用detectCores函数确定系统核心数目,对于Window系统下的Intel I5或I7 处理器,一般使用detectCores(logical = F)来获得实际的物理核心数量。
    由于这个函数使用的是调用Rscript的方式,这个例子里,对象被复制了三份,因此内存会吃的很厉害,在大数据条件就要小心使用。

    案例3、在Linux下使用mclapply函数的效果如下:

    mc <- getOption("mc.cores", 3)
    system.time({
    res <- mclapply(1:5000000, fun, mc.cores = mc);
    });
    user system elapsed
    6.657 0.500 7.181

    foreach包是revolutionanalytics公司贡献给R开源社区的一个包,它能使R中的并行计算更为方便。与sapply函数类似,foreach函数中的第一个参数是输入参数,%do%后面的对象表示运算函数,而.combine则表示运算结果的整合方式。 下面的例子即是用foreach来完成前面的同一个任务。如果要启用并行,则需要加载doParallel包,并将%do%改为%dopar%。这样一行代码就能方便的完成并行计算了。

    案例4、foreach包的使用:
    library(foreach)
    # 非并行计算方式,类似于sapply函数的功能
    x <- foreach(x=1:1000,.combine='rbind') %do% func(x)
    # 启用parallel作为foreach并行计算的后端
    library(doParallel)
    cl <- makeCluster(4)
    registerDoParallel(cl)
    # 并行计算方式
    x <- foreach(x=1:1000,.combine='rbind') %dopar% func(x)
    stopCluster(cl)

    展开全文
  • R语言并行计算编程

    千次阅读 2016-11-05 09:08:41
    R语言实现在500万个文档的资料库中查找的并行算法。

    R语言并行编程实例,将数据集Rcuters-21578的50个文档赋值100,000次,得到包含500万个文档的资料库,查找正则表达式。

    1. tm软件包

    tm软件包是R语言中为文本挖掘提供处理的package,提供数据导入、语料库处理、预处理、元数据管理、创建term-document矩阵等功能。

    安装tm软件包,必须到R网站下载slam软件包

    2.企业并购示例数据集Rcuters-21578的并行计算

    > library(tm)   
    > data("acq")   #数据集acq
    > textdata=rep(sapply(content(acq),content),1e5)     #将数据集的50个文档赋值100,000次,得到包含500万个文档的资料库
      

          #并行计算

    > library(parallel)
    > detectCores()                          #检测计算机CPU核的数量
    > cl=makeCluster(detectCores())   #设置工作集群

    > part=clusterSplit(cl,seq_along(textdata))

    >text.partitioned=lapply(part,function(p) textdata[p])

    >pattern="\\d+(,\\d+)? mln dlrs"   #正则表达式在文档中查找

    >res2=unlist(parSapply(cl,text.partitioned,grepl,pattern=pattern))

    > head(res2)
          [,1]  [,2]
    [1,] FALSE FALSE
    [2,]  TRUE  TRUE   #在第二篇文档中有正则表达式
    [3,] FALSE FALSE
    [4,] FALSE FALSE
    [5,] FALSE FALSE
    [6,]  TRUE  TRUE

    > system.time(parSapply(cl,text.partitioned,grepl,pattern=pattern))   #R语言并行计算程序运行时间
      用户   系统   流逝
     13.77 137.54 503.00

    #比较

    > system.time(unlist(parSapply(cl,text.partitioned,grepl,pattern=pattern)))
      用户   系统   流逝
     13.47 139.41 491.74

    >stopCluster(cl)   #结束工作集群

    R语言parallel软件包网络编程用socket cluster。

    展开全文
  • R语言--并行计算(parallel、foreach包)

    千次阅读 2020-01-06 22:26:09
    ​R语言是单核计算语言,在数据建模或计算过程中,常常出现相同或相似任务的重复计算,一般操作是for循环处理或采用apply族函数处理,为了更快完成计算,采用并行计算是更优的选择。 本文采用R语言中的parallel包与...
  • [并行计算] 1. 并行计算简介

    万次阅读 多人点赞 2017-07-20 15:30:07
    这篇帖子旨在为并行计算这一广泛而宏大的话题提供一个非常快速的概述,作为随后教程的先导。因此,它只涵盖了并行计算的基础知识,实用于刚刚开始熟悉该主题的初学者。
  • 但每个零模型的构建相互独立,可同时进行,R语言并行计算可加快beta-NTI的计算速度。本文内容包括以下三个部分:1.如何理解群落构建;2.如何理解beta-NTI;3.如何利用R语言并行计算beta-NTI。初学者可能对群落构建和...
  • R语言中的并行计算汇总

    千次阅读 2019-02-26 21:02:02
    R语言运行在CPU单核单线程上,使用并行计算原因是程序运行时间太长。大部分程序都可以进行并行化改造以提高运算性能 1.lapply 只需要一个参数(list\vector\array\matrix\data.frame),和一个以该参数为输入的函数...
  • 并行计算

    2019-06-26 19:44:34
    a worldwide shortage of people experienced in parallel computing全世界程序员最大短处就是缺乏并行...前段时间Ruby On Rails JRuby Grails等新式语言有些热门,但是并行计算却是它们的杀手,新的并行计算DSL(D...
  • R语言中的并行计算实现

    千次阅读 2019-07-29 12:31:20
    并行计算有显性并行和隐式并行, 隐式并行:OpenBLAS,Intel MKL,NVIDIA cuBLAS,H2O(参考我的博客)等 显性并行:parallel(主打lapply应用)、foreach(主打for循环)、SupR、还有利用GPU的办法(gpuR) 介绍...
  • R语言snow包并行计算

    千次阅读 2016-04-05 10:34:35
    This post was kindly contributed by 数据科学与R语言 - go there to comment and to read the full post. ...在数据挖掘和机器学习领域有许多的算法...目前的个人计算机已经具备有多个核心,如果采用并行计算
  • 并行计算复习第四篇 并行计算软件支撑:并行编程
  • 中国科学院软件研究所并行实验室ppt,这个Julia编程语言的资料适合初学者。Julia 是一个新的高性能动态高级编程语言。...Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。
  • Fortran多核并行计算

    2021-08-19 22:00:28
    讲义简要介绍采用Fortran语言和OpenMP技术进行并行计算的知识,配有视频教程,主要内容包括: 第一讲 OpenMP基础 第二讲 并行域 第三讲 OMP指令(上) 第四讲 OMP指令(下) 第五讲 THREADPRIVATE属性 第六讲 OMP并行...
  • 同时性和并行性是物质世界的一种普遍属性,具有实际物理背景的计算问题在许多情况下都可以划分成能够并行计算的多个子任务,例如:根据几十个常用应用软件的统计,60%-80%的标量计算可以被向量化,而90%左右的串行...
  • Matlab 并行计算学习初步

    万次阅读 多人点赞 2018-08-09 08:19:57
    Matlab 并行计算学习 1. 简介 高性能计算(High Performance Computing,HPC)是计算机科学的一个分支,研究并行算法和开发相关软件,致力于开发高性能计算机。可见并行计算是高性能计算的不可或缺的重要组成部分。 ...
  • 并行计算及并行算法

    万次阅读 多人点赞 2018-06-13 22:27:31
    一、并行计算  简单地说,并行计算就是在并行计算机上所做的计算。从普通意义上讲,它和常说的高性能计算、超级计算等是同义词。并行计算的初衷是为了努力仿真自然世界中一个序列中含有众多同时发生的、复杂且相关...
  • R语言并行计算(1)

    千次阅读 2015-12-23 16:18:39
    终于知道了r的并行计算,哈哈...但是在2.14版本之后,R就内置了parallel包,强化了R的并行计算能力。parallel包实际上整合了之前已经比较成熟的snow包和multicore包。前者已经在之前的文章中介绍过了,而后者无法在win
  • Halide是一种用于快速,便携式数据并行计算的编程语言。 它旨在使在现代机器上编写高性能图像和数组处理代码变得更加容易。 它可在所有主要操作系统上运行,并具有多种CPU架构(X86,ARM,MIPS,Hexagon,PowerPC)...
  • R语言实现并行计算[parallel,Rdsm] 最近在R中的学习并行计算 整个人被各种函数整的头都大了 所以准备专门写一条博文来总结 所谓R中的并行无非是 snow包multicore包和foreach包 但很遗憾的是只有第一个能够在win下...
  • R语言使用parallel包实现并行计算的方法、案例简介总结
  • 并行计算机未来发展前景

    千次阅读 2016-11-24 20:37:47
    20世纪60年代初期, 由于晶体管以及磁芯...现代计算机的发展历程可以分为2个时代:串行计算时代和并行计算时代。并行计算是在串行计算的基础上发展起来的。并行计算将一项大规模的计算任务交由一组相同的处理单元共同完
  • 计算机并行计算考试重点总结

    千次阅读 2016-12-06 22:21:28
    **计算机体系结构由程序设计者看到的...计算机系统的层次结构 现代并行计算机的组成 ü硬件核心:处理机、存储器和外围设备组成了计算机系统。 ü互连:外围设备可以直接或通过局域网和广域网与主机相连。 ü映射
  • 第八届中国R语言(广州)会议 R语言并行计算实战 游皓麟 f rom Data Energy 日期 2015-5-23 广州 cador@ /u013524655 目 录 从向量化计算说起 R语言常见并行计算技术 并行计算平台Yiyou 向量 概览 简要介绍 矩阵 ...
  • 参考网址众所周知,在大数据时代R语言有两个弱项,其中一个就是只能使用单线程计算。但是R在2.14版本之后,R...parallel包可以很容易的在计算集群上实施并行计算,在多个CPU核心的单机上,也能发挥并行计算的功能。我们
  • 对spearman相关性分析进行并行化运行可大大节省计算时间,为此我们手写了spearman相关性分析函数来实现并行化运行。为方便讲解,本文以OTU table 数据为例,对OTU进行两两spearman相关性分析,获得相关系数r和显著性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,828
精华内容 65,531
关键字:

并行计算语言