OpenMP 多核编程(转载)
转载时请注明原文出处(http://blog.sina.com.cn/wyw1976)及作者邮箱()
(1)打开VS2008,新建一个空白的Win32 Console Application工程,添加源文件中并输入如下的代码:
(2)上面是一个最简单的OpenMP程序,它将并行的输出5个整数,可是实际的输出结果如下:
结果好像是串行的输出,并没有看出并行的效果嘛!原因在于VS2008缺省是将OpenMP的支持关闭,打开的方法如下, 将OpenMP Support 项设为Yes,即可:
(3)重新编译,没有任何问题,可是运行或调试该程序,却报错:"This application has failed to start because VCOMP90D.DLL was not found. Re-installing the application may fix this problem", 如下图所示:
原因是没有找到VCOMP90D.dll,实际上,你可以在C:\Windows\winsxs\目录下找到VCOMP90D.dll,例如在我的机器上,它所在的具体目录为:
C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugOpenMP_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_72b673b0
现在我们需要在VS工程设置中指定该文件即可,properties->configuration properties->Linker->Manifest File->Additional Manifest Dependencies输入如下字符串:
"type='win32' name ='Microsoft.VC90.DebugOpenMP' version ='9.0.21022.8' processorArchitecture ='x86' publicKeyToken= '1fc8b3b9a1e18e3b' "
注意:字符串中的值来源于VCOMP90D的父目录,而且在输入时,单引号和双引号不能少。
(4)重新编译,成功运行,结果如下:
这才是并行运行的效果!!!!
需要说明的是:
(1)上面的情况针对的工程配置是Debug,如果是Release, 它会报错“VCOMP90.DLL was not found”, 只需在winsxs中找到该文件,并按照同样的方法更改“Additional Manifest Dependencies”即可,例如:
"type='win32' name ='Microsoft.VC90.OpenMP' version ='9.0.21022.8' processorArchitecture ='x86' publicKeyToken= '1fc8b3b9a1e18e3b' "
(2)上面的情况只是针对VS2008自带的编译器,对于其他的编译器,可能不一样,例如如果选用Intel的编译器,就不需要设置“Additional Manifest Dependencies”
#include "stdafx.h"
#include <iostream>
#include <omp.h>
void tt( int a )
{
std::cout<< a <<std::endl;
}
int main( )
{
std::cout<<" thread: number:"<< omp_get_thread_num() << std::endl;
//#pragma omp parallel for
//for( int i=0;i<40 ;i++ )
int i=0;
#pragma omp parallel
{
if( i<=0 )
{
std::cout<<" i="<< i++ <<std::endl;
}
std::cout<<" threadnum="<< omp_get_thread_num() <<std::endl;
}
int a;
std::cin>>a;
return 0;
}
转载于:https://www.cnblogs.com/xibao/archive/2013/05/23/3095347.html
OpenMP 多核编程(转载)相关推荐
- 多线程的那点儿事(之多核编程)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 多核编程并不是最近才兴起的新鲜事物.早在intel发布双核cpu之前,多核编程已经在业内存在了 ...
- 积极准备、谨慎行动——应对多核编程革命
本文发表于<程序员>杂志2007年4月刊,版权所有,如蒙转载,敬请保留作者等版权信息,违者必究! 本文发表于恋花蝶的博客(http://blog.csdn.net/lanphaday) 积 ...
- 网络分流器-网络分流器-多核编程的几个难题及其应对策略
网络分流器-网络分流器-多核编程的几个难题及其应对策略! 戎腾网络: 随着多核CPU的出世,多核编程方面的问题将摆上了程序员的日程,有许多老的程序员以为早就有多CPU的机器,业界在多CPU机器上的编程 ...
- 推荐阅读的多核编程技术书籍
多核编程技术好书推荐 多核程序设计技术--通过软件多线程提升性能 , 作 者: (孟加拉)阿克特(Akhter,S.),(美)罗伯茨(Roberts,J.) 著,李宝峰,富弘毅,李韬 译 本书从原理. ...
- .NET 并行(多核)编程系列之七 共享数据问题和解决概述
.NET 并行(多核)编程系列之七 共享数据问题和解决概述 原文:.NET 并行(多核)编程系列之七 共享数据问题和解决概述 .NET 并行(多核)编程系列之七 共享数据问题和解决概述 前言:之前的文 ...
- 多核编程文章汇总[z]
以下为截止2009年3月21日前发布在本人博客中的多核相关的文章汇总,这些文章大部分摘自于我写的<多核计算与程序设计>一书.现将这些文章分类汇总,方便大家阅读. 后续如果博客中继续发布了多 ...
- .NET 并行(多核)编程系列之六 Task基础部分完结篇
.NET 并行(多核)编程系列之六 Task基础部分完结篇 前言:之前的文章介绍了了并行编程的一些基本的,也注重的讲述了Task的一些使用方法,本篇很短,将会结束Task的基础知识的介绍. 本篇的主要 ...
- 精通lambda表达式:Java多核编程pdf
下载地址:网盘下载 内容简介 · · · · · · lambda表达式权威指南 <精通lambda表达式:Java多核编程>介绍Java SE 8中与lambda相关的特性是如何帮助J ...
- 多核编程中的负载平衡难题
多核编程中的负载平衡难题 作者:周伟明 相关文章链接: 多核编程中的锁竞争难题 多核编程的几个难题及其应对策略(难题一) OpenMP并行程序设计(二) OpenMP并行程序设计(一) 双核CPU上的 ...
最新文章
- elastic ik分词搜索_php环境下使用elasticSearch+ik分词器进行全文搜索
- SQL Server 2017 AlwaysOn on Linux 配置和维护(18)
- AbilitySlice之间的回传值
- 在线预览视频/直播:m3u8、rmpt、mp4、flv
- linux oracle swd.oui,centos7安装oracle11g报错,请问怎么解?
- 真格量化——菜粕策略
- 操作系统设计与实现 读笔(2)
- 二级c语言上机程序填空,浙江省计算机二级c语言上机考试真题(二)程序填空
- 【U-Net】【粗读】U-Net: Convolutional Networks for Biomedical Image Segmentation
- vue.js笔记1.0
- 《交互设计》作业-第二周
- vulntarget-a靶场的学习思考
- 数据库系统的组成及模式结构
- 写了一个微信发红包的代码
- 移动硬盘数据丢失如何恢复
- vue使用provide / inject 组合刷新页面+单独组件刷新
- GDIplus的初次接触--加载并显示常用格式图片
- iOS各版本发布时间和特点
- 特斯拉电动汽车接连发生两起致命车祸 美国监管机构已介入调查
- 大数据分析与实践 使用Python以UCI心脏病数据集为例,进行数据简单分析
热门文章
- 机器人等级考试一级教具_机器人等级考试一级之“齿轮”
- input date保存值_涛哥文集(36):R keras保存和还原模型
- mysql 删除时间一个星期_15天快速学习 数据库Mysql 基础操作命令(第一章)
- 网维大师服务器不运行,网维大师客户机连不上的解决方法
- .计算机自动关机或重启,电脑自动关机或者重启怎么处理
- websocket后台推送数据
- [shell]C语言调用shell脚本接口
- hadoop调优之一
- Linux 最常用命令
- elasticsearch配置文件详解