mapreducer
为 mapreduce 和 tall 数组定义并行执行环境
语法
说明
mapreducer
定义 mapreduce
或 tall 数组的执行环境。使用 mapreducer
函数可以更改执行环境以使用不同的集群或在串行和并行开发之间切换。
默认执行环境使用本地 MATLAB® 会话,或者如果有 Parallel Computing Toolbox™ 则使用并行池。如果您安装了 Parallel Computing Toolbox,当您使用 tall
或 mapreduce
函数时,MATLAB 会自动启动一个并行工作进程池,除非您更改了默认首选项。默认情况下,并行池使用本地工作进程,通常机器的每个核心都有一个工作进程。如果您关闭自动创建并行池选项,则如果您想使用并行资源,就必须明确启动一个池。请参阅指定您的并行首选项。
使用 tall 数组时,使用 mapreducer
在创建 tall 数组之前设置执行环境。在构造 tall 数组时,它们会绑定到当前全局执行环境。如果您随后更改了全局执行环境,那么 tall 数组无效,您必须重新创建它。
注意
在 MATLAB 中,您不需要使用 mapreducer
指定配置设置,因为 mapreduce
算法和 tall 数组计算仅在本地 MATLAB 会话中自动运行。如果您还有 Parallel Computing Toolbox,那么您可以使用本页列出的附加 mapreducer
配置选项进行并行运行。如果您有 MATLAB Compiler™,那么您可以使用单独的 mapreducer
配置选项在部署的环境中运行。
参见:MATLAB 文档中的 mapreducer
,或 MATLAB Compiler 文档中的 mapreducer
(MATLAB Compiler)。
没有输入参量的 mapreducer
会创建一个具有所有默认值的新 mapreducer
执行环境,并将其设置为当前 mapreduce
或 tall 数组执行环境。您可以使用 gcmr
来获取当前的 mapreducer 配置。
如果您具有默认首选项(自动创建并行池已启用),并且您尚未打开并行池,则
mapreducer
将使用默认集群配置文件打开一个池,将gcmr
设置为基于此池的 mapreducer 并返回此 mapreducer。如果已经开启了并行池,那么
mapreducer
会将gcmr
设置为基于当前池的 mapreducer 并返回这个 mapreducer。如果您禁用了自动创建并行池,并且没有开启并行池,那么
mapreducer
会将gcmr
设置为基于本地 MATLAB 会话的 mapreducer,而mapreducer
会返回这个 mapreducer。
mapreducer(0)
指定 mapreduce
或 tall
数组计算在 MATLAB 客户端会话中运行,而不使用任何并行资源。
mapreducer(
指定一个并行池,用于并行执行 poolobj
)mapreduce
或 tall 数组。poolobj
是一个 parallel.Pool
对象。默认池是 gcp
返回或打开的当前池。
mapreducer(
指定 Hadoop® 集群,用于并行执行 hadoopCluster
)mapreduce
或 tall 数组。hadoopCluster
是 parallel.cluster.Hadoop
对象。
mapreducer(
为 mr
)mapreduce
或 tall 数组设置全局执行环境,使用之前创建的 MapReducer 对象 mr
(如果其 ObjectVisibility
属性为 'On'
)。
返回一个 MapReducer 对象来指定执行环境。您可以定义多个 MapReducer 对象,这样您就可以通过将其中一个对象作为输入参量传递给 mr
= mapreducer(___)mapreduce
或 mapreducer
来交换执行环境。
使用任何前面的语法隐藏 MapReducer 对象 mr
= mapreducer(___,'ObjectVisibility','Off')mr
的可见性。使用此语法可以创建新的 MapReducer 对象,而不会影响 mapreduce
的全局执行环境。
示例
串行开发,然后使用本地工作进程或集群
如果您想要串行开发并且不使用本地工作进程或指定的集群,请输入:
mapreducer(0);
如果在创建 tall 数组后使用 mapreducer
更改执行环境,则该 tall 数组无效,必须重新创建它。要再次使用本地工作进程或指定的集群,请输入:
mapreducer(gcp);
mapreducer
已关闭自动创建并行池
如果您关闭了自动创建并行池选项,那么如果您想使用并行资源,就必须明确启动一个池。请参阅 指定您的并行首选项 了解详细信息。
此代码显示如何使用 mapreducer
将执行环境设置为本地 MATLAB 会话,然后指定本地并行池。
>> mapreducer(0)
>> parpool('Processes',1);
Starting parallel pool (parpool) using the 'Processes' profile ... Connected to 1 workers.
使用并行池评估一个 tall 表达式。
>> gather(min(tall(rand(1000,1))))
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.63 sec Evaluation completed in 0.99 sec ans = 5.2238e-04
输入参数
输出参量
提示
使用 tall 数组开发算法的好处之一是您只需编写一次代码。您可以在本地开发代码,然后使用 mapreducer
进行扩展并利用 Parallel Computing Toolbox、MATLAB Parallel Server™ 或 MATLAB Compiler 提供的功能,而无需重写算法。
扩展功能
版本历史记录
在 R2014b 中推出