共享数组
共享阵列 表示在一台计算机上跨多个进程共享的数组。
SharedArray{T}(dims::NTuple; init=false, pids=Int[])
SharedArray{T,N}(...)
建造一个 共享阵列 位类型 T 和尺寸 暗淡无光 跨越由 pids,pids -所有这些都必须在同一台主机上。 如果 N 通过调用指定 共享阵列{T,N}(dims),则 N 必须匹配的长度 暗淡无光.
如果 pids,pids 如果未指定,共享数组将映射到当前主机上的所有进程,包括主机。 但是, 本地区 和 n.未表达,未表达 只会引用工作进程。 这便于工作分配代码使用worker进行实际计算,主进程充当驱动程序。
如果 初始化 类型的功能 initfn(S::SharedArray) 被指定,它被调用所有参与的工人。
共享数组是有效的,只要引用 共享阵列 对象存在于创建映射的节点上。
SharedArray{T}(filename::AbstractString, dims::NTuple, [offset=0]; mode=nothing, init=false, pids=Int[])
SharedArray{T,N}(...)
建造一个 共享阵列 由文件支持 文件名,具有元素类型 T (必须是bits类型)和大小 暗淡无光,跨越由 pids,pids -所有这些都必须在同一台主机上。 此文件映射到主机内存中,结果如下:
*数组数据必须以二进制格式表示(例如,不支持像CSV这样的ASCII格式)
*对数组值所做的任何更改(例如, A[3]=0)也会改变磁盘上的值
如果 pids,pids 如果未指定,共享数组将映射到当前主机上的所有进程,包括主机。 但是, 本地区 和 n.未表达,未表达 只会引用工作进程。 这便于工作分配代码使用worker进行实际计算,主进程充当驱动程序。
模式 一定是 "r", "r+", "w+",或 "a+",并默认为 "r+" 如果指定的文件 文件名 已经存在,或 "w+" 如果没有。 如果 初始化 类型的功能 initfn(S::SharedArray) 被指定,它被调用所有参与的工人。 您不能指定 初始化 如果文件不可写,则函数。
偏移量 允许您跳过文件开头的指定字节数。
SharedVector
一个一维 共享阵列.
SharedMatrix
一个二维 共享阵列.
procs(S::SharedArray)
获取映射共享数组的进程的向量。
sdata(S::SharedArray)
返回实际 阵列 对象支持 S.
indexpids(S::SharedArray)
在映射 共享阵列 (即在由返回的同一列表中 工程计划),或0,如果 共享阵列 不在本地映射。
localindices(S::SharedArray)
返回一个范围,描述当前进程要处理的"默认"索引。 该范围应以线性索引的意义来解释,即,作为子范围的 1:长度. 在多进程上下文中,返回父进程(或其任何进程)中的空范围 n.未表达,未表达返回0)。
值得强调的是 本地区 纯粹是为了方便而存在的,你可以以任何你想要的方式在工人之间对数组进行分区。 对于一个 共享阵列,对于每个工作进程,所有索引都应该同样快。