今天听了一个博士师兄的论文答辩,试图提高分布式存储并行和共享存储并行中,循环中并行粒度。

分布式存储下的并行,可以简单的理解为片间的并行,集群,很多CPU的计算机中的并行都属于这一类,这类并行强调的是消息传递,因为每个计算单元都有自己的存储空间,且这些存储是相互独立的,靠消息传递的方式来维护存储一致性,这类程序通常使用MPI工具做并行程序开发。这种并行一般是进程之间的并行,每个进程都有独立的资源管理和消息收发,地址空间相互独立。

共享存储下的并行则不同,采用线程间的并行策略,即并行任务之间采用共享存储空间的形式,存储和资源都是共享的。这类并行多存在于现在流行的多核和众核系统中。主要面临的问题是一致性,缓存一致性是最主要的,因为多核系统通常是每个单核有一级cache,而多个核之间又共享二级或者三级cache,据说CPU上30%多的功耗都用在了维持一致性上。片上面积也一半多用来做了cache。OPENMP就是为共享存储而生的编程工具。 Continue reading »

 

反汇编器和汇编器是两个互逆的过程,后者将汇编源文件转换为机器码,前者将机器码转换成汇编语言。

汇编器通过将汇编指令符号转换为opcode和解析符号名为存储位置的形式创建目标代码,该目标代码就是机器码.其中符号解析是汇编器的关键部分.很多汇编器还提供宏支持来方便文本替换.相对于高层语言的编译器,汇编器简单很多.最早的汇编器出现在20世纪50年代,很多现代汇编其器都支持指令调度优化.Linux下使用最频繁的汇编器是gas,Gnu Assembler,因为它是GCC的默认后端,是Binutils的一部分。

反汇编器的输出通常是可读的汇编码格式,因此它时反向工程的重要工具。通常汇编语言允许常数和注释,但是在生成机器码时这些信息通常被删除,所以,在机器码上的反汇编操作只能产生无常数和注释的汇编码,所以程序员很难读懂,也很难转换为原来的高级代码。现在也有些编译器通过使用符号调试信息和交互式允许用户为特定区域的代码和值使用符号代替的方式来增强可读性。现在常见的反汇编器有:各种调试器都包含反汇编器,如GNU Binutils中的objdump就是gdb的交互式反汇编器,其他的还有PVDasm,一个支持多CPU反汇编器,OllyDbg–32位汇编级分析调试器,ILDASM–.NET Framework SDK中,用来反汇编PE文件等等

参考:

http://en.wikipedia.org/wiki/Assembly_language#Assembler

http://en.wikipedia.org/wiki/GNU_Assembler
http://en.wikipedia.org/wiki/Disassembler

 

先来介绍一下n32和O32是啥,N32和O32就是MIPS系统上不同的ABI,即Application Binary Interface。MIPS体系结构最早只有o32的系统,但后来改进了寄存器的功能和分配方式,于是就又有了N32,相对于O32,N32的速度更快些。但二者目前在龙芯系统上还无法兼容。因为龙芯目前官方只支持O32,而N32有只有zhllg的overlay中有,所以使用gentoo来安装O32的工具链需要额外解决些问题,所以才有了这篇文章,之所以之前又写了N32的安装方法,是因为有zhllg大牛的技术支持,使得能直接安装N32的工具链。 Continue reading »

 

不管怎样,龙芯是咱们应该骄傲的,但是用它来编译东西确实很慢,我们很需要一个交叉编译器,能够在性能稍好的平台上为龙芯平台编译程序,x86是目前比较常见的平台,本博在实际工作中,需要在gentoo系统上安装支持龙芯n32的交叉编译器,下面分享一下本博的安装过程。
crossdev是gentoo系统下很方便的交叉编译环境安装和卸载工具,想进一步了解可以参考本博的这篇文章Gentoo中的交叉编译利器–crossdev,这里只讨论有了crossdev之后的安装过程。
首先,我们需要支持n32的gcc,glibc,linux-header,insight和binutils.其中,gcc,gdb,insight和linux-header都已经有了官方支持,我们还需要glibc的一些patch。头疼打patch这种繁重的劳动?别急,已经有国内的开源爱好者们做好了这些,我们仅仅需要几个附加步骤即可。 Continue reading »

 

此文是Fred Chow在德拉华大学所讲open64课程讲义的翻译,转载请注明出处 http://www.lingcc.com
Fred Chow 原版讲义见最后一页

  • 软件开发指南

使用内部选项来开关每个优化–测试正常后的优化选项默认打开.尽量按照模块化原理开发,相关的模块定义尽量本地化。#ifdef Is_True_On宏来标记来断言和确认的使用。通过断言,确认程序和DevWarns协助debug。虽然包含debug信息的编译器速度慢很多,但是可以尽早的发现错误。

  • Debug辅助工具

四类:抽取某个阶段内和不同阶段间的程序代码(使用选项 -tr???);抽取某个阶段内或不同阶段间的符号表(使用选项 -ts???);分析/优化过程中方便跟踪的工具(使用选项 -tt???);提供能在调试器中调用的打印程序。

  • 存储管理

使用存储池机制(commom/util/memory.c)代替malloc/free.提供任意数量的独立操作的存储池,有类似栈的操作,pop是释放内存的唯一方式。使用基于临时特性的存储池–永久的、PU级的、阶段级的和基本块级的。 Continue reading »

 

现在自己可谓hostmoster和bluehost都体验过的,有信心说些评价给各位想在国外空间建博的朋友。我现在的blog建在bluehost上。hostmoster和bluehost我各有半个月的使用记录。hostmonster从09年11月18-12月3日。bluehost从09年12月02日到现在。
这两家的cpanel没有任何区别,所有的功能都用着非常顺手。如果还没有购买过主机的朋友,想买,我很推荐这两家。要说对于个人建站哪个最好,我推荐bluehost。理由如下:
1,功能方便,稳定。我测试了一下,我域名所绑定的主机上有700域名共享IP,可以使用这个工具查询http://www.my-ip-neighbors.com/index.php。目前还没有被封的情况。CPanel上的功能基本是网站维护所需的所有功能。
2,价格相对便宜,虽然hostmonster和bluehost的最优惠价格都一样,但是因为bluehost相对稳定,而且对高负载的处理更加科学,所以推荐使用bluehost。我在bluehost购买的是两年的服务。总共$90多。送域名。和国内的相比,价格差不多。
3,之所以推荐bluehost而非hostmonster,最重要的一点是CPU throttling上。Hostmonster在处理长时间高负载时,只是简单的断掉链接。每次负载增大时,刷新页面,浏览器就会提示服务器无响应。而bluehost在这方面就更加的柔和,迄今位置,我还没有经历过一次强制断开。 而在hostmonster上每天几乎都会有一次(我折腾的比较多).
当然了,就现在的形式来看,缺点还是很明显的。那就是得每天提心掉胆的。说不定哪天就直接不能访问,所有的努力都将从新开始。
不过,我还是先心存幻想把。毕竟,我只是想找个稳定的,高质量的,对得起咱老百姓的钱包的主机,认认真真的记录我的生活和学习。

至于其他国外的主机,我也曾对比过,现在已经想不起来什么原因了,反正觉得bluehost最适合我,多半是价格和延时的原因。可以参考我先前写过的总结一下自己购买主机的情况。想购买的,可以多找找优惠链接,多搜搜就会有。另外,最近不建议买,未来太不明朗了。。。

 

OpenMp和自动并行化
此文是Fred Chow在德拉华大学所讲open64课程讲义的翻译,转载请注明出处 http://www.lingcc.com
Fred Chow 原版讲义见最后一页

  • 并行化

两种在open64中获得粗粒度并行化的方法:OpenMP和自动并行化。前者使用选项-mp来指导并行化,在Fortran,C和C++中支持OpenMP2.5。后者需要选项-apo打开,功能是在LNO阶段检测并行的循环并插入指导。在同一个编译中,可以两个同时使用。

  • 对粗粒度并行化的支持

并行化的代码给出它自己函数的轮廓(?),轮廓函数嵌入到原始过程中,原始过程中的本地变量采用静态链的方式访问,指向轮廓函数的指针被传到libopenmp中的同步机制中用来做定型执行的调度。其中会有一段并行的代码保存下来以备串行执行之用

  • 并行运行时执行

通过大量产生线程来达到执行并行代码区域的效果,默认情况下的线程数是CPU的个数,libopenmp(PathScale专利)包含:线程控制和同步机制和OpenMP intrinsic相关机制.运行时的动作通过环境变量控制,如指定线程和处理器之间的亲和性 Continue reading »

 

今天的会议日程比昨天轻松。五个报告。

  1. 台湾资讯研究院的游本中老师,未来编译研究的潜在领域展望。
  2. 江南所,关于精细编译调优的
  3. 计算所,关于并行的
  4. 上交 关于llvm的
  5. 武大 关于MCU编译器开发的

其中,游老师的演讲最为重量级,也对我们这些晚生最有指导意义。大牛就是大牛,在美国混了这么久,现在又是台湾某个研究所的所长,编译领域的了解可谓渊博,虽然还谦虚的说自己的讲义只是匆匆的准备,但是演讲的过程却功底颇厚。 Continue reading »

 

今天参加了国内几个做编译器的单位做的研讨会,有计算所,中国科大,intel,北京大学,清华大学,武汉大学,复旦大学,北京科技大学,北京理工大学,浙江大学,国防科技大学等,据说基本云集了国内几乎所有做编译研究的机构(公司除外)。

一天,10几个报告下来,基本发现国内做编译的无非做几个领域,最多的在并行优化,做有GPU的混合结构下的优化,国防科大的天河,北大的实验集群,基本都在做GPU和CPU混合的优化,看来它们最头疼的问题是之间的通信。还有其他几家做多核的基本也一样,如浙江大学的多核嵌入式,清华的程序切片技术提取并行通信模型。 Continue reading »

 

折腾了好一阵子,现在基本确定在这里了。因为很早就想自己弄个独立的blog来用,但是因为囊中羞涩都只好忍了。

我的blog生涯很是惨痛,先是用blogspot,没用多久,被封了。于是转战my opera,但是没多久又被封了。无奈之下只好选用国内空间,靠谱一些。

校内和qq空间都用过,但是校内(现在叫人人了)的关键词过滤有点变态,而且还有那可恶的用户协议事件。我在自己的人人网稍微发了个关于人人网用户协议的文章,就立即被删除了。一气之下终于换到百度空间。这里qq空间就不提了,因为自己只是想写些技术和生活相关的事情。 Continue reading »

2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量