一、openMP简单测试

1、简述

  • openMP很多情况下对于利用多核处理器进行加速是很有效果的,然而,也有一些情况是openMP不但没有效果,甚至还有一些反作用。

2、简单测试(1)

  • #include<omp.h>
    #include<time.h>
    #include<iostream>
    using namespace std; void openMP()
    {
    int i,j;
    for(i=; i<; i++)
    {
    for( j = ; j < ; j++)
    j++;
    }
    } int main()
    {
    time_t start,end1;
    time( &start );
    double omp_start = omp_get_wtime( );
    int N = ;
    int i,j;
    #pragma omp parallel
    for(int m = ; m < N ; m++)
    {
    openMP(); } double omp_end = omp_get_wtime( );
    time( &end1 );
    std::cout<<"used_times "<<end1 - start<<"\n";
    std::cout<<"omp_times "<<omp_end - omp_start<<"\n"; return ;
    }
  •     
  • 从上面可以看出,使用openMP并行化程序并没有比不使用openMP的要快,甚至线程数量越大的情况下,运行时间反而越长。
  • 这是因为,数据量巨大,线程数量越多的时候,程序分配并行程序的时间越多,导致程序的运行时间变慢。这种情况下,使用openMP设置的线程数量越多,效果会越差。

3、简单测试(2)

  • #include<omp.h>
    #include<time.h>
    #include<iostream>
    using namespace std; void openMP()
    {
    int i,j;
    for(i=; i<; i++)
    {
    for( j = ; j < ; j++)
    j++;
    }
    } int main()
    {
    time_t start,end1;
    time( &start );
    double omp_start = omp_get_wtime( );
    int N = ;
    int i,j;
    #pragma omp parallel for
    for(int m = ; m < N ; m++)
    {
    openMP(); } double omp_end = omp_get_wtime( );
    time( &end1 );
    std::cout<<"used_times "<<end1 - start<<"\n";
    std::cout<<"omp_times "<<omp_end - omp_start<<"\n"; return ;
    }
  • 从上面的图表可以看出,使用openMP以及扩大线程数量与不使用openMP的程序运行时间相差无几
  • 这是因为循环一次的情况下,openMP无论设置了多少个线程,所使用的CPU利用率,系统最大会分配给100%,也就是一个线程的CPU利用率,也就和不使用openMP没有什么差别,这种情况下,openMP是没有什么效果的。

二、openMP学习参考

  • 通过 GCC 学习 OpenMP 框架:https://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/
  • Guide into OpenMP : http://bisqwit.iki.fi/story/howto/openmp/

基于GCC的openMP学习与测试(2)的更多相关文章

  1. 基于GCC的openMP学习与测试

    (一).openMP简述 Open Multiprocessing (OpenMP) 框架是一种功能极为强大的规范,可以帮助您利用 C.C++ 和 Fortran 应用程序中的多个核心带来的好处,是基 ...

  2. 基于linux下的NIST数字测试包安装过程

    基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...

  3. 从Theano到Lasagne:基于Python的深度学习的框架和库

    从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...

  4. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

    原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...

  5. 基于 Keras 用深度学习预测时间序列

    目录 基于 Keras 用深度学习预测时间序列 问题描述 多层感知机回归 多层感知机回归结合"窗口法" 改进方向 扩展阅读 本文主要参考了 Jason Brownlee 的博文 T ...

  6. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    基于OpenCL的深度学习工具:AMD MLP及其使用详解 http://www.csdn.net/article/2015-08-05/2825390 发表于2015-08-05 16:33| 59 ...

  7. 测试开发:从0到1学习如何测试API网关

    本文来自我的一名学员分享 日常工作中,难免会遇到临危受命的情况,虽然没有这么夸张,但是也可能会接到一个陌生的任务,也许只是对这个概念有所耳闻.也许这个时候会感到一丝的焦虑,生怕没法完成领导交给的测试任 ...

  8. 语义分割:基于openCV和深度学习(二)

    语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semanti ...

  9. 语义分割:基于openCV和深度学习(一)

    语义分割:基于openCV和深度学习(一) Semantic segmentation with OpenCV and deep learning 介绍如何使用OpenCV.深度学习和ENet架构执行 ...

随机推荐

  1. maven 热部署至tomcat

    1.配置tomcat的界面访问账号和权限./tomcat/conf目录下tomcat-users.xml添加 这里是根据自己的需求添加的一个角色权限 <role rolename="a ...

  2. Ultimus BPM 制药与医疗行业应用解决方案

    Ultimus BPM 制药与医疗行业应用解决方案 行业应用需求 制药与医疗行业客户特点有企业总资产高.员工规模大,销售网络往往遍及全国,乃至全球市场:拥有复杂的制药生产或医疗服务组织机构,并均有严格 ...

  3. 关于DB2死锁处理

    昨天在修改字段类型的时候引起了死锁,我一般会使用REORG命令处理,在控制中心下 只需要执行 REORG TABLE TABLENAME  命令就可以, 但是在 RazorSQL 下执行此命令会报缺失 ...

  4. vue-动手做个选择城市

    查看完整的代码请到   我的github地址  https://github.com/qianyinghuanmie/vue2.0-demos 一.结果展示 二.前期准备: 1.引入汉字转拼音的插件, ...

  5. springboot 中使用websocket简单例子

    gradle 中添加依赖,引入websocket支持 compile("org.springframework.boot:spring-boot-starter-websocket:${sp ...

  6. 支付宝支付-常用支付API详解(查询、退款、提现等)

    所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...

  7. Vue.js中组件传参的方法 - 基于webpack模板

    在Vuejs中, 组件之间的传参是今天第一次接触, 之前写的组件互相之间都是独立的, 弗敢专也, 必以分人 环境: node.js npm vue-cli 以上安装请自行百度 一.项目创建 $ vue ...

  8. 在Azure China用自定义镜像创建Azure VM Scale Set

    在Azure China用自定义镜像创建Azure VM Scale Set 在此感谢世纪互联的工程师Johnny Lee和Lan,你们给了我很大的帮助.因为Azure China的官网没有给出完整的 ...

  9. JSP/Servlet Web 学习笔记 DayTwo

    JSP指令 a)page指令 定义JSP文件中的全局属性.一个JSP页面可以包含多个page指令.除了Import以外,其他page指令定义的属性/值只能出现一次. 其详细语法为: <%page ...

  10. java实现文件批量导入导出实例(兼容xls,xlsx)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...