代码阅读与实践课程报告.docx_第1页
代码阅读与实践课程报告.docx_第2页
代码阅读与实践课程报告.docx_第3页
代码阅读与实践课程报告.docx_第4页
代码阅读与实践课程报告.docx_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国地质大学(武汉)代码阅读与实践课程报告学院: 2012年12月1. 编程范型综述1.1 什么是编程范型所谓编程范型指的是一类典型的编程风格,是指从事软件工程的一类典型的风格。1.2 编程范型分类编程范型主要可以分纯函数式编程范型、过程化编程范型、结构化编程范型、非结构化编程范型、命令式编程范型和声明式编程范型等。1.3 如何认识编程范型2. 过程式语言(C+)2.1 符号的生命周期和作用域符号的生命周期是指从符号的诞生到结束这段时间,符号的作用域是指一个符号程序正文中有效的区域。2.2 C+语言的存储类别和内存管理包括机制存储类型是从变量的存在时间来划分的,可分为静态存储方式和动态存储方式。在C+中,变量的存储类型分为:自动类型、寄存器类型、静态类型和外部类型。C+内存管理机制包括内存分配方式、常见的内存错误及对策2.3 C+支持指针操作,指针的优点是:可以有效的对变量进行底层操作,直接操作变量的地址。非常方便好用,使代码变得更简洁,缩小代码量,使用更灵活。而指针的缺点是:容易出现内存泄露、指向的内容容易出错,另外,还可能出现野指针,用的不好还能导致程序崩溃。3. 函数式语言(C)3.1 函数式语言的的基本思想和基本概念3.2 函数式语言和过程式语言区别一、函数式语言:表达能力:函数式语言在表达能力方面有三个显著的特征,一是若表达式有定义,表达式的计算结果与计算次序无关,二是构造数据的能力强,三是建立高阶函数的能力强。执行效率:执行效率低。并发性:函数式语言被认为是非常适合处理并发性问题的工具,共享值不需加特殊保护,因为它们不会被更新。安全性:函数式语言由于广泛采用懒数据,所以安全性较高。函数测试的表达式对也很多,也保证一定的安全性。 二、过程式语言: 过程式语言是一种为程序设计人员提供准确定义任务执行步骤的语言。 表达能力:过程式语言表达能力很强,有丰富的运算符,应用范围广,并且数据类型丰富,除了一些数据类型外,还可以构造结构体类型,实现各种复杂数据结构运算。执行效率:执行效率都很高是过程式语言的优点。并发性:并发机制主要有会合、异步发送。安全性:过程式语言的指针和宏定义等等给它带来一定的安全隐患。4. 面向对象语言(Java)4.1 与C+在面向对象模型上的区别4.2 Java对象的构造、析构和赋值操作4.3 Java与C+异常处理机制区别C+异常处理机制:C+异常处理机制由保留字try引出,语法格式如下:Try / protected code catch( ExceptionName e1 ) / catch block catch( ExceptionName e2 ) / catch block catch( ExceptionName eN ) / catch block 如果try机构中会抛出多种情况异常,必须列出这些异常情况去匹配不同的异常。显然这是C+异常处理的一个缺陷。Java异常处理机制:Java异常处理机制是基于C+的,并且做了相应的改变,虽然它们有相似的结构,但是Java中每一个catch都必须具有参数,而且这些参数必须是预定义的Throwable的子类。语法如下:try /Protected code catch(ExceptionType1 e1) /Catch block catch(ExceptionType2 e2) /Catch block catch(ExceptionType3 e3) /Catch block finally /The finally block always executes. 我们可以看出,在 Java 中有一个 finally 子句,不论 try 代码 块中是否发生异常事件,finally 块中的语句都会被执行,相当于 一个统一的出口。5. 并行编程模型简介5.1 PthreadPOS thread 简称为pthread,Posix线程是一个POS标准线程.该标准定义内部API创建和操纵线程。Pthreads定义了一套 C程序语言类型、函数与常量,它以 pthread.h 头文件和一个线程库实现。5.2 Intel TBB(Thread Building Blocks)TBB(Thread Building Blocks)线程构建模块,是Intel公司开发的并行编程开发的工具。TBB 获得过 17 届 Jolt Productivity Awards,是一套 C+ 模板库,和直接利用 OS API 写程序的 raw thread 比,在并行编程方面提供了适当的抽象,当然还包括更多其他内容,比如 task 概念,常用算法的成熟实现,自动负载均衡特性还有不绑定 CPU 数量的灵活的可扩展性等等。STL 之父,Alexander Stepanov 对此评价不错,他说“Threading Building Blocks could become a basis for the concurrency dimension of the C+ standard library”。其他 TBB 的早期用户,包括 Autodesk,Sun,Red Hat, Turbo Linux 等亦然。现在 OReilly 已经出版了一本 Intel Threading Building Blocks: Outfitting C+ for Multi-core Processor Parallelism。TBB很好实现:a)TBB提供C+模版库,用户不必关注线程,而专注任务本身、b)抽象层仅需很少的接口代码,性能上毫不逊色、c)灵活地适合不同的多核平台、d)线程库的接口适合于跨平台的移植(Linux, Windows, Mac)、e)支持的C+编译器 Microsoft, GNU and Intel。它的主要功能为:1) 通用的并行算法循环的并行:parallel_for, parallel_reduce 相对独立的循环层、parallel_scan 依赖于上一层的结果、流的并行算法、parallel_while 用于非结构化的流或堆、pipeline - 对流水线的每一阶段并行,有效使用缓存、并行排序和parallel_sort 并行快速排序,调用了parallel_for。2) 任务调度者 管理线程池,及隐藏本地线程复杂度、并行算法的实现由任务调度者的接口完成和任务调度者的设计考虑到本地线程的并行所引起的性能问题。3) 并行容器 concurrent_hash_map、concurrent_vector和concurrent_queue。4) 同步原语 atomic、mutex、spin_mutex 适合于较小的敏感区域、queuing_mutex 线程按次序等待(获得)一个锁、spin_rw_mutex、queuing_rw_mutex和说明:使用read-writer mutex允许对多线程开放”读”操作。5) 高性能的内存申请 使用TBB的allocator 代替 C语言的 malloc/realloc/free 调用和使用TBB的allocator 代替 C+语言的 new/delete 操作。5.3 Nvidia CUDA计算行业正在从只使用CPU的“中央处理”向CPU与GPU并用的“协同处理”发展。为打造这一全新的计算典范,NVIDIA(英伟达)发明了CUDA并行计算架构,该架构现已应用于GeForce(精视)、ION(翼扬)、Quadro以及Tesla GPU(图形处理器)上,对应用程序开发人员来说,这是一个巨大的市场。 在消费级市场上,几乎每一款重要的消费级视频应用程序都已经使用CUDA加速或很快将会利用CUDA来加速,其中不乏Elemental Technologies公司、MotionDSP公司以及LoiLo公司的产品。 在科研界,CUDA一直受到热捧。例如,CUDA现已能够对AMBER进行加速。AMBER是一款分子动力学模拟程序,全世界在学术界与制药企业中有超过60,000名研究人员使用该程序来加速新药的探索工作。 在金融市场,Numerix以及CompatibL针对一款全新的对手风险应用程序发布了CUDA支持并取得了18倍速度提升。Numerix为近400家金融机构所广泛使用。 CUDA的广泛应用造就了GPU计算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论