Augusdi的专栏

攀登技术的高峰,我与大家共勉!

GPU通用计算调研报告

摘要:NVIDIA公司在1999年发布GeForce256时首先提出GPU(图形处理器)的概念,随后大量复杂的应用需求促使整个产业蓬勃发展至今。GPU在这十多年的演变过程中,我们看到GPU从最初帮助CPU分担几何吞吐量,到Shader(着色器)单元初具规模,然后出现Shader单元可编程性,到今天...

2013-10-15 10:43:38

阅读数 3853

评论数 0

双剑合璧:CPU+GPU异构计算完全解析

引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得一见的好文章。按捺不住转一下。^_^  相对于串行计算,并行计算可以划分成时间并行和空间并行。时间...

2013-10-15 10:16:14

阅读数 2993

评论数 0

OpenMP: OpenMP多核编程配置与测试

现在的集成开发环境很好的支持了市面上的多数多核CPU,比如在intel双核CPU的系统上安装好vs2008后,第一,在项目属性-c++-语言中选择支持openmp第二,在环境变量中加入OMP_NUM_THREADS变量赋值2可以了,打开vs2008敲入下面的例子,相信我们都能看懂的:/******...

2013-10-11 17:09:05

阅读数 2111

评论数 0

OpenMP: OpenMP嵌套并行

本章讨论 OpenMP 嵌套并行操作的特性1 执行模型OpenMP 采用 fork-join(分叉-合并)并行执行模式。线程遇到并行构造时,就会创建由其自身及其他一些额外(可能为零个)线程组成的线程组。遇到并行构造的线程成为新组中的主线程。组中的其他线程称为组的从属线程。所有组成员都执行并行构造内...

2013-10-10 15:38:18

阅读数 1422

评论数 0

OpenMP: OpenMP 环境变量

OpenMP 规范定义了四个用于控制 OpenMP 程序执行的环境变量。下表对它们进行了概括。表 2–1 OpenMP 环境变量 环境变量 功能 OMP_SCHEDULE为指定了 RUNTIME 调度类型的 DO、PARALLEL DO、for、parallel for 指令/pragma 设置...

2013-10-10 15:36:04

阅读数 2020

评论数 0

OpenMP循环并行化for的约束条件

OpenMP可以方便地对for循环进行并行化,然而不是所有的for循环都可以进行并行化。下面几种情况是不能进行并行化的:1. for循环中的循环变量必须是有符号整形。例如,for (unsigned int i = 0; i 2. for循环中比较操作符必须是, >=。例如for (int ...

2013-10-10 15:27:07

阅读数 2186

评论数 0

并行计算知识

1、单核指令级并行(ILP)          让单个处理器的执行单元可以同时执行多条指令。现代CPU的每个核心都采用了超标量、超级流水线、超长指令字、SIMD、超线程、分支预测等手段发掘程序内的指令级并行。2、多核并行(multi-core)            在一个芯片上集成多个处理器核心...

2013-10-09 15:24:46

阅读数 1777

评论数 0

OpenMP: VS2010配置使用OpenMP

一个简单的OpenMP例子首先启动VisualStudio 2010,新建一个C++的控制台应用程序,如下图所示:然后在项目解决方案资源管理器上选择项目名称,点击右键,选择“属性”,如下图所示: 然后在属性页上左侧选择“配置属性”——“C/C++”——“语言”,然后在右侧“OpenMP支持”后选择...

2013-04-16 12:42:15

阅读数 26189

评论数 8

OpenMP: OpenMP并行数目与并行体对运行效率的影响

接下来再做一个测试,将并行和串行的循环次数设置为100,即将上例的main函数中:for(int i = 0; i 更改为:for(int i = 0; i 然后分别运行10次,其结果如下表所示:次数串行并行10.002850030.00735008720.002880310.0038547830...

2013-04-16 12:40:58

阅读数 2355

评论数 0

OpenMP: 循环结构的并行

在科学和工程应用中,许多程序都要在循环执行上花大量的时间,如Fortran中的do循环和C语言中的for循环,通过并行中的loop-level可以减少这些循环的运行时间。OpenMP提供了parallel for或parallel do指令来对循环结构进行并行处理,这个指令可以用于大部分的循环结构...

2013-04-16 12:36:58

阅读数 4343

评论数 0

OpenMP: sections分段并行

除了循环结构可以进行并行之外,还可以进行分段并行(parallel section)。迄今为止,每谈到如何去并行一个程序时,我们主要关心的是在同一时间将一个任务划分成多个然后用多线程去完成。然而,如果这个程序的一系列操作中后面的计算并不依赖于前面的计算,意思就是说它们之间相互并不依赖,这将有利于分...

2013-04-16 12:30:21

阅读数 6924

评论数 1

OpenMP: OpenMP嵌套并行

OpenMP中不建议使用并行嵌套,如果一个并行计算中的某个线程遇到了另外一个并行分支,程序运行将会变得不稳定。将一个完整的工作任务通过一组并行线程分成若干小任务,每个线程只执行指定给它的那段代码,并没用多余的线程去做其他的工作,即使并行计算中正在运行的某个线程遇到了一个新的并行分支,通过分割这个任...

2013-04-16 11:49:57

阅读数 7173

评论数 2

OpenMP: OpenMP概述

根据计算平台和规模的不同,并行计算可以分为两种:第一种是基于单一计算机系统的多核处理器或多处理器进行多线程并行计算,采用共享存储的方式,主要的标准有OpenMP,如下左图所示;第二种就是基于多台计算机组件的集群(Cluster)计算系统进行并行计算,采用消息传递方式,主要的标准有MPI,如下右图所...

2013-04-16 11:30:09

阅读数 1843

评论数 0

OpenMP: OpenMP常用函数

在OpenMP的Runtime Library中有一些常用的函数,有些函数已经在前面的例子中使用过,现在集中说明这些常用的函数以及用法。1、设置线程数目其定义如下:void omp_set_num_threads(int num_threads);通过该函数来指定其后用于并行计算的线程数目,其中参...

2013-04-16 11:26:20

阅读数 1666

评论数 0

OpenMP: VC配置OpenMP并行程序设计

转自:http://zuohuawei.blog.sohu.com/84249110.html最近有不少陌生人问我关于在VC上使用OpenMP进行并行程序设计的配置问题,这个问题对于那些想在VC上使用OpenMP的人来说,是首先就要解决的问题,我开始时也碰到过,花了不少时间解决,现在把当时写的笔记...

2013-04-16 11:17:36

阅读数 4410

评论数 2

线程化的性能障碍:它们将给 OpenMP 代码带来什么影响?

为何要线程化,线程化对性能有何影响?您可能出于以下三个原因而线程化应用程序。每个对性能评测的要求都不同。能更快的执行同一工作:如果应用程序负载固定(如,对静态照片应用某种效果),我们可以通过线程化更快地完成工作。评测此代码时,我们将记录执行时间和通过线程化实现的加速比。 执行更多的工作:如果将应用...

2013-04-16 11:10:11

阅读数 1229

评论数 0

OpenMP与C++:事半功倍地获得多线程的好处(下)

声明:本文并未获得翻译授权,本人翻译这篇文章仅用于学习和研究之用,任何人不得在未经授权之前将原文和译文用以商业用途.因版权原因,暂不建议转载本文.本文发表于http://blog.csdn.net/lanphaday请保留本文完整本文发表于2005年第10期的,英文版本地址:http://msdn...

2013-04-16 11:09:04

阅读数 1487

评论数 0

OpenMP与C++:事半功倍地获得多线程的好处(上)

声明:本文并未获得翻译授权,本人翻译这篇文章仅用于学习和研究之用,任何人不得在未经授权之前将原文和译文用以商业用途.因版权原因,暂不建议转载本文.本文发表于http://blog.csdn.net/lanphaday请保留本文完整本文发表于2005年第10期的,英文版本地址:http://msdn...

2013-04-16 11:08:32

阅读数 1337

评论数 0

OpenMP中数据属性相关子句详解(1):private/firstprivate/lastprivate/threadprivate之间的比较

private/firstprivate/lastprivate/threadprivate,首先要知道的是,它们分为两大类,一类是private/firstprivate/lastprivate子句,另一类是threadprivate,为指令。(PS:有些地方把threadprivate说成是子...

2013-04-16 11:03:50

阅读数 5545

评论数 2

OpenMP中数据属性相关子句详解(2):shared/default/copyin/copyprivate子句的使用

(1) sharedshared子句可以用于声明一个或多个变量为共享变量。所谓的共享变量,是值在一个并行区域的team内的所有线程只拥有变量的一个内存地址,所有线程访问同一地址。所以,对于并行区域内的共享变量,需要考虑数据竞争条件,要防止竞争,需要增加对应的保护,这是程序员需要自行考虑的。下面的例...

2013-04-16 11:02:14

阅读数 5605

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭