2 sinat 33314857 sinat_33314857 于 2016.03.14 15:10 提问

OpenMP多线程简单编程耗时问题

现在为了更好的优化程序,想测试OpenMP多线程在多核cpu下运行耗时情况,就一个简单的产生随机数问题,循环产生10次,每次产生100000000个随机数放入数组,对产生随机数的程序使用动态dynamic调度实现,为什么在产生前一两次的用时要远大于后面几次的用时(由于需要,在产生的10里并没有使用并行,只是产生随机数的时候用的openmp并行),恳请大家帮忙赐教

1个回答

sinat_33314857
sinat_33314857   2016.03.14 16:24

而且我有模拟了下,特别注意到是windows线程初次调用时耗时明显~

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
OpenMP多线程应用程序性能分析
影响性能的主要因素 根据前述的Amdahl定律,我们应当努力提高并行化代码在应用程序中的比率,这是通用的提高效率的方法。       1、OpenMP本身的开销 OpenMP获得应用程序多线程并行化的能力不是凭空而来的,而是需要一定的程序库的支持。在这些运行时的程序库对程序并行加速的同时需要运行库的本身,因此,库中代码的运行必然会带来一定的开销。实际上,并不是所有的代码都是需要并行化的,非常
高性能计算的线程模型:Pthreads 还是 OpenMP
http://software.intel.com/zh-cn/articles/threading-models-for-high-performance-computing-pthreads-or-openmp 作者:Andrew Binstock 简介 UNIX 操作系统多年来一直支持线程,这是 UNIX 在服务器系统上异常活跃的主要原因之一。在过去几年间,
OpenMP 单线程改多线程结果出错
今天踩了一个很大的坑,觉得很有必要记录下来。最近都在弄高性能方面的,CPU跟GPU的并行计算我都有在学。 今天这个坑是关于OpenMP的。初始程序用1个线程跑一点问题都没有,改为Openmp的多线程后,每个pixel的计算结果有的对有的不对, 有的还没有被计算。由于我是移植程序的,代码基本一模一样,可这一模一样好像说的也不对,被吐槽过几次,很多看上去一样的代码其实总 有一两个小地方是
c++多线程 (生产者消费者问题)
针对多线程中常见的生产者消费者问题,封装了一个类,和测试代码,方便日后直接套用。 具体来说就是多线程使用时候经常遇到的 一个线程取数据,一个处理数据,一个保存或传递数据。
关于使用opencv的提速(二)(多线程问题,openMP)
主要参照的是:http://www.cnblogs.com/yangyangcv/archive/2012/03/23/2413335.html?ADUIN=745066753&ADSESSION=1396342401&ADTAG=CLIENT.QQ.5311_.0&ADPUBNO=26327 基本操作就是在要循环的代码前加上 #pragma omp parallel for 然
openMP(并行计算) 超简单快速上手
简介: OpenMp是并已被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案。 OpenMP支持的编程语言包括C语言、C++和Fortran; OpenMp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenM
【opencv+OpenMP】OpenMP并行编程应用—加速OpenCV图像拼接算法
OpenMP是一种应用于多处理器程序设计的并行编程处理方案,它提供了对于并行编程的高层抽象,只需要在程序中添加简单的指令,就可以编写高效的并行程序,而不用关心具体的并行实现细节,降低了并行编程的难度和复杂度。也正因为OpenMP的简单易用性,它并不适合于需要复杂的线程间同步和互斥的场合。 OpenCV中使用Sift或者Surf特征进行图像拼接的算法,需要分别对两幅或多幅图像进行特
matlab与C语言混合编程之openmp多线程
作为非MATLAB控,却选择MATLAB进行项目的研究,主要还是因为MATLAB使用起来实在太方便了。因此,它的缺陷也很明显,效率不高。内部定义的任何函数,如果我们使用C语言重写,效率一般都能得到一定的提升。     而对于复杂度更高的算法,则需要进一步使用并行编程的方法,比如多线程。那么,在我们使用MATLAB进行项目的主体框架设计后,如何调用使用C语言编写的代码呢?首先,C语言程序肯定需
Caffe:CPU模式下使用openblas-openmp(多线程版本)
从所周知,所有的深度学习框架使用GPU运行是最快的,但是在不具备Nvidia显卡的环境下只使用CPU来运行,慢就慢点吧,对于学习阶段还是够用的。Caffe用到的Blas可以选择Altas,OpenBlas,Intel MKL,Blas承担了大量了数学工作,所以在Caffe中Blas对性能的影响很大。 MKL要收费,Altas略显慢(在我的电脑上运行Caffe自带的example/mnist/len
ImageMagick 解决多线程(openMP)运行时导致CPU暴增到100%的方法
发现问题在于新版本的 ImageMagick 启用了OpenMP,默认开启多线程处理,导致cpu占用过高。 convert占用cpu很高 首先用/usr/local/imagemagick/bin/convert -version指令查看一下输出內容是否已经开启了多线程,Features的值为空或DPC,说明是单线程;如果Features的值是openMP,说明是多线程。Features: op