14.1 理解不同的并行技术
来源:互联网 发布:股票股软件开发 编辑:程序博客网 时间:2024/06/01 18:55
14.1 理解不同的并行技术
在这一节中,我们会讨论三种技术,并使用简单的示例来演示。我们将使用 .NET 的并行扩展(Parallel Extensions to .NET),这是一个并行编程库。它是 .NET Framework 4.0 标准的一部分,但是,不幸的是,在早期 .NET 的版本中是不可用的。如果要使用 Visual Studio 2008,体验并行扩展,你可以下载 CTP 版本,但有几个命名的改变(实际上,Visual Studio 2010 应该没有这个问题了。)。
.NET 的并行扩展(Parallel Extensions to .NET)
这个库包括两个主要部分组成,我们在这一章中会用到。
■ 任务并行库 (Task Parallel Library,TPL),包括基础结构,可以并行执行的任务(基本工作单元,primitive units of work)。TPL的另一个组件允许创建常见计算任务,比如 for 循环。
■ 并行 LINQ (Parallel LINQ,PLINQ),可以用于写数据并行代码。这是处理大量的数据的代码,使用相同的算法。
用于并行执行任务的底层技术,以完全托管的代码实现,使用了源自微软研究院(MSR)的先进技术。它使用动态工作分配,即,任务分为到工作线程之间,取决于线程的可用性。一旦线程完成分配给自己的任务,就可以从其他线程中启动"窃取(stealing)"任务,所以,工作将均匀分布在所有可用的处理器或核心之间。任务存储在队列中的每个工作线程,这也大大降低所需的同步和锁定的实现。
让我们从在介绍中提到的特定技术:对使用数组的命令式代码进行并行化开始,这与不允许有任何副作用的纯函数式语言不相关,但正如我们在第 10 章所看到的,以函数风格使用数组,在 C# 和 F# 中是很有用的技术,
在这一节中,我们会讨论三种技术,并使用简单的示例来演示。我们将使用 .NET 的并行扩展(Parallel Extensions to .NET),这是一个并行编程库。它是 .NET Framework 4.0 标准的一部分,但是,不幸的是,在早期 .NET 的版本中是不可用的。如果要使用 Visual Studio 2008,体验并行扩展,你可以下载 CTP 版本,但有几个命名的改变(实际上,Visual Studio 2010 应该没有这个问题了。)。
.NET 的并行扩展(Parallel Extensions to .NET)
这个库包括两个主要部分组成,我们在这一章中会用到。
■ 任务并行库 (Task Parallel Library,TPL),包括基础结构,可以并行执行的任务(基本工作单元,primitive units of work)。TPL的另一个组件允许创建常见计算任务,比如 for 循环。
■ 并行 LINQ (Parallel LINQ,PLINQ),可以用于写数据并行代码。这是处理大量的数据的代码,使用相同的算法。
用于并行执行任务的底层技术,以完全托管的代码实现,使用了源自微软研究院(MSR)的先进技术。它使用动态工作分配,即,任务分为到工作线程之间,取决于线程的可用性。一旦线程完成分配给自己的任务,就可以从其他线程中启动"窃取(stealing)"任务,所以,工作将均匀分布在所有可用的处理器或核心之间。任务存储在队列中的每个工作线程,这也大大降低所需的同步和锁定的实现。
让我们从在介绍中提到的特定技术:对使用数组的命令式代码进行并行化开始,这与不允许有任何副作用的纯函数式语言不相关,但正如我们在第 10 章所看到的,以函数风格使用数组,在 C# 和 F# 中是很有用的技术,
- 14.1 理解不同的并行技术
- 14.1 理解不同的并行技术
- ORACLE的并行技术
- 并行与并发的理解
- 理解Storm拓扑的并行
- 并发与并行的理解
- oracle的Parallel 并行技术
- 并行算法的设计技术
- oracle的Parallel 并行技术
- 并行和并发需要不同的工具
- openCl-work-item的并行的理解
- 理解cuda并行程序的规约思想
- 深入理解Oracle的并行操作
- 理解CUDA并行程序的规约思想
- 理解CUDA并行程序的规约思想 .
- 深入理解Oracle的并行操作
- 陈焕生:深入理解Oracle 的并行执行
- 陈焕生:深入理解Oracle 的并行执行
- Django速成--创建一个简单的blog
- 平衡二叉树
- JSP中编码问题
- WP7完整版本模拟器下载
- onInterceptTouchEvent和onTouchEvent调用时序
- 14.1 理解不同的并行技术
- 李宁项目收获三(tomcat的具体安装和使用)
- 使用Antlr+Stringtemplate生成method chaining,一个不太简单的案例(1)
- 工作第二篇
- 如何确定测试用例子集的数量
- 矩阵计数
- DataGridView属性、方法、事件
- VC CString,int,string,char*之间的转换
- Google Guice入门教程1