- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 OpenMP编程学习笔记七
在单核多线程程序中,对临界变量以及临界区的访问,是atomic方式的。在OpenMP中,由于是多个thread共同负责完成一个任务,所以必然有访问操作(回写)同一个变量的情形,OpenMP引入atomic directive应对这种情形。测试代码:void testAtomic(){ omp_set_num_threads( 4 ); int sum
2010-05-27 11:21:00 806
原创 OpenMP编程学习笔记六
在单核多线程程序中,经常需要同步多个线程以完成任务,在这个过程中有的线程会被挂起。在OpenMP中,为了同步各个线程,需要使用barrier。测试代码:void testBarrier(){ omp_set_num_threads( 4 );#pragma omp parallel { printf("test OpenMP 1/n")
2010-05-27 11:05:00 2000
原创 OpenMP编程学习笔记五
critical 使用:如果代码段只需要一个thread执行,可以使用single标明。如果代码段需要ID为0的thread执行,使用master标明。那么,如果代码段需要各个CPU互斥执行,也就是要求每个CPU都执行一次,但任何时候只用一个CPU在执行。这种情况可以使用critical。从宏观上看,该代码段被依次在各个CPU上被执行,各个CPU在执行该代码的时序上没有重叠
2010-05-26 11:29:00 2704
原创 OpenMP编程学习笔记四
single的用法。parallel的目的就是能够让多个CPU协调处理问题,从而提高运行性能。例如,如下的代码,各个CPU都会执行一次。#pragma omp parallel{printf("test OpenMP/n");}更多的时候,我们可能希望这种代码只要在一个CPU上执行就行了,以便减少CPU的功耗。这时可以使用single。测试代码如下:void tes
2010-05-26 10:38:00 1419
原创 OpenMP编程学习笔记三
今天学习了OpenMP sections。sections的主要功能是用户可以将一个任务分成独立的几个section,每个section由不同的thread来处理。C/C++测试代码: int a = 2;int b = 20;int c = 200;int d = 2000;int sum; omp_set_num_threads( 4 );
2010-05-25 11:20:00 1523
原创 OpenMP编程学习笔记二
OpenMP是帮助程序人员能够方便编写并行程序的一种解决方案,程序编写人员主要的任务还是放在问题的空间结构与逻辑结构上。如何能够使程序并行运行,是OpenMP解决的问题(算法问题)。 OpenMP是通过将任务分配到不同的线程上完成的。1. 设置线程数目omp_set_num_threads() API。可以设置OpenMP能够控制的并行线程数目。一般情况下,该数目
2010-05-21 11:10:00 1734
原创 Java语言中使用OpenMP
从去年年中,开始学习Java,主要是维护公司用Java编写的服务器软件。目前,该服务器软件遇到一个问题,在下载大文件时,如果同时下载的用户很多,服务器软件工作会出现异常,有的用户无法下载。服务器硬件基本上都是多核处理器,所以,如果能在Java语言中使用并行编程技术,使用OpenMP,可能会提高服务器软件的性能。 今天,测试了一下,Java语言中也可以使用OpenMP。以下是详细测试过程
2010-05-19 14:28:00 6581
原创 OpenMP编程学习笔记一
前段时间,我工作的台式机换成了PC 工作站。除了有6G内存,64位外,而且是4核的。刚好这段时间工作上没有什么事情,于是开始学习多核与并行编程。以前做了很长时间的单核多线程编程,所以对多核多线程编程很是期待。今天,在VS2008与Linux下,分别测试了openMP的简单例子,对多核编程有了一点直观认识。 测试例子test.cpp为: #include #include
2010-05-18 15:16:00 1452
C++语言引入了并发机制,可以很容易的编写并发多线程程序了。
2010-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人