高性能计算
文章平均质量分 63
longshengguoji
这个作者很懒,什么都没留下…
展开
-
高性能计算与高性能计算机讲座笔记
看了一个高性能计算与高性能计算机的讲座,把思维脑图整理了出来,现在分享出来 原始脑图的笔记放在微盘里,制作软件为mindjet manager,下载连接为:http://vdisk.weibo.com/s/1NgI6原创 2012-01-03 13:01:28 · 2040 阅读 · 0 评论 -
pthread vs openMP之我见
前两天看了些并行计算的文章,了解了一些并行计算的方法和原理。然后发现多线程实现里面还有个openMP,这个以前从来没见过(火星了),之前只是知道pthread线程库和微软也实现了一套线程。又看了看openMP的一些教程才知道它是怎么回事。 pthread全称应该是POSIX THREAD,顾名思义这个肯定是按照POSIX对线程的标准而设计的。目前我所知道的有两个版本:Linux Thre转载 2012-12-19 14:45:53 · 3360 阅读 · 0 评论 -
多核时代的移动开发(一)-函数式编程思想到来
在这里我们先初步分析一下目前移动游戏开发的概念与以往发生了怎样的改变。我们知道以前所谓的游戏开发与移动开发基本没有交集,移动游戏开发往往专指J2ME开发的一些小游戏,入门不难但是普遍用户体验不佳。而且由于J2ME标准不太统一所以造成移动游戏开发没有什么通用性,更难以形成统一的标准。但是由于平板及智能手机的普及,尤其是IPHONE的出现使移动游戏的核心领域迅速由2D向3D转换。 一个新兴转载 2012-12-12 18:33:05 · 1198 阅读 · 0 评论 -
并行计算——寻找并发性 (功能分解)
我们使用下面的框图来说明怎样寻找我们希望的并发性:我们使用模式进行分解:1、分解模式:存在两种分解模式,任务分解和数据分解。使用分解模式将问题分解为多个能够并行的小片段。2、相关性分析模式:这一组包括3种模式,用于分组任务和分析任务间的相关性:分组任务、排序任务和数据共享。通常,模式是以这种顺序被应用。但是,实际上常常需要重新应用某一个模式,或者甚至可能需要重新使用分解转载 2012-12-04 10:14:05 · 2410 阅读 · 1 评论 -
linux多线程学习(六)——信号量实现同步。
信号量的互斥同步都是通过PV原语来操作的,我们可以通过注册两个信号量,让它们在互斥的问题上互动,从而达到同步。通过下面实例就可以很容易理解: #include #include #include #include #include #include #define return_if_fail(p) if((p) =转载 2012-11-30 14:22:07 · 1051 阅读 · 0 评论 -
linux多线程学习(五)——信号量线程控制
在上一篇文章中,讲述了线程中互斥锁的使用,达到对共享资源互斥使用。除了使用互斥锁,信号量,也就是操作系统中所提到的PV原语,能达到互斥和同步的效果,这就是今天我们所要讲述的信号量线程控制。PV原语是对整数计数器信号量sem的操作,一次P操作可使sem减一,而一次V操作可是sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量的值大于零或等于零的时候,该进程(或线转载 2012-11-30 14:21:20 · 885 阅读 · 0 评论 -
linux多线程学习(三)——线程属性设置。
在上一篇文章中,介绍了线程的创建和退出,以及相关函数的使用。其中pthread_create函数的第二个参数,是关于线程属性的设置,这也是今天所有讲述的。这些属性主要包括邦定属性、分离属性、堆栈地址、堆栈大小、优先级。其中系统默认的是非邦定、非分离、缺省1M的堆栈、与父进程同样级别的优先级。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。(1)绑定属性。转载 2012-11-30 14:20:19 · 740 阅读 · 0 评论 -
linux多线程学习(二)——线程的创建和退出
在上一篇文章中对线程进行了简单的概述,它在系统中和编程的应用中,扮演的角色是不言而喻的。学习它、掌握它、吃透它是作为一个程序员的必须作为。在接下来的讲述中,所有线程的操作都是用户级的操作。在LINUX中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此他的移植性是非常好的。 创建线程实际上就是确定调用该线程函数的入口点,这里通常使用的函数是pthread_c原创 2012-11-30 14:19:40 · 869 阅读 · 0 评论 -
多线程中锁的实现.
*引用本文请注明来自 blog.csdn.net/wtz1985 所谓"锁",就是为了让自己独自占有空间,在自己没用完之前,不让别人来占用自己的资源.现在的操作系统,无论是WINDOWS,还是UNIX等其他操作系统.都采用多线程的环境.这极大提高了任务的执行速度,而且不会影响其他事务的执行.但是它们的执行是靠时间片的轮转的,如果某一个线程没有执行完,可它的时间片用完了,就会被挂转载 2012-11-30 14:25:55 · 824 阅读 · 0 评论 -
多线程中递归锁的实现.
在上一篇文章中,我已经阐述了多线程中简单锁的实现,可在结束的时候,我就提了那么一个问题,那就是如果在一个链表中进行插入时,要进行查询的操作,如果只是简单的锁,是没法实现的。所以“递归锁”就浮现于世了。可能有些人看到递归这两个字,有点傻了眼,其实也没什么的,简单的介绍,就是进行简单的计数而已。刚开始引用锁的时候,就产生它,当在锁没有解开的时候,还要继续用锁,就简单的加一,解开一把就减一,当计转载 2012-11-30 14:24:53 · 1438 阅读 · 0 评论 -
linux多线程学习(七)——实现“生产者和消费者”
在上一篇文章中,利用信号量实现了线程间的互斥,这一篇将要利用信号量的互斥同步机制来实现一个经典实例,就是“生产者和消费者”。1、简单描述生产者和消费者的问题。有一个缓冲区和两个线程:生产者和消费者。生产者把产品放入缓冲区,而消费者从缓冲区中拿走。当缓冲区满时,生产者必须等待;另外,当缓冲区空时,消费者必须等待,并且缓冲区不能同时进行生产者和消费者的操作。[c转载 2012-11-30 14:22:36 · 920 阅读 · 0 评论 -
linux多线程学习(四)——互斥锁线程控制
在前面的文章中提及到,一个进程中的多个线程是共享同一段资源的,由于线程对资源的竞争引出了锁。其中mutex是一种简单的加锁方法,这个互斥锁只有两种状态,那就是上锁和解锁,可以把互斥锁看作是某种意义上的全局变量。在某一时刻,只能有一个线程取得这个互斥上的锁,拥有上锁状态的线程可以对共享资源进行操作,而其他线程在该线程未解锁之前,够会被挂起,直到上锁的线程解开锁。可以这么说,互斥锁使得共享资源按序的在转载 2012-11-30 14:20:50 · 723 阅读 · 0 评论 -
linux多线程学习(一)
进程是系统中程序执行和资源分配的基本单位。每个进程都有自己的数据段,代码段和堆栈段,这就导致了进程在进行切换等操作起到了现场保护作用。但是为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程演化中出现了另外一个概念,这就是线程,也被人称为轻量级的进程。它是一个进程内的基本调度单位。线程是在共享的内存空间中并发的多道执行路径,它们共享一个进程的资源,比如文件描述符和信号处理等。因此,转载 2012-11-30 14:19:00 · 748 阅读 · 0 评论 -
MPI函数
最近几天开始接触MPI编程了,虽然还是一头雾水,没有入门,但是先把自己整理的一些函数贴出来,方便以后查看。管理函数Int MPI(int *argc,char **argv)Int MPI_Finalize(void) 清除MPI的所有状态Int MPI_Inilialized(int flag) 检查是否调用了MPI_INITInt MPI_Error_String(in原创 2012-01-02 20:11:06 · 2228 阅读 · 0 评论 -
为何要用多线程编程
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是原创 2012-10-24 09:29:26 · 1401 阅读 · 0 评论 -
OpenMP并行计算PI的值
用VS新建一个工程后,首先要右键项目,属性--C/C++--语言,,在右边的对话框中OpenMP支持选择是;程序代码为:#include#include#include static long num_steps = 100000;double step,pi;void main(){ clock_t t1=clock(); int i;原创 2012-06-15 19:42:28 · 6888 阅读 · 0 评论 -
Linux多线程编程小结
1.Linux进程与线程Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。Linux通过fork创建子进程与创建线程之间是有区别的:fork创建出该进程的一份拷贝,这个新进程拥有自己的变量和自己的PID,它的时间调度是独立的,它的执行几乎完全独立于父进程。进程可以看成一个资源的基本转载 2012-12-19 14:44:03 · 876 阅读 · 0 评论