登陆与注册×
两周内自动登陆 忘记密码?


注册

你的位置:首页 > 北京赛车 > 英特尔
www.danxicake.com英特尔的James Reinders是并行专家;他最近的一本书涵盖了英特尔螺纹构建模块提供的并行性C扩展。他还是该公司软件开发产品的营销和业务总监。在9月份英特尔开发者论坛讨论的第1部分中,我们讨论了如何考虑并行编程环境中的性能,为什么这样的环境会给开发人员带来麻烦,以及可以采取哪些措施。在第2部分中,我们将继续讨论云计算,功能和动态语言,以及计算机科学教育需要发生什么。如今,几乎没有广泛的对话,而且至少不会对Reinders视图中的云计算表示赞同。与并行编程问题有很大关系。云计算是并行编程。你正在解决同样的问题。实际上,擅长将程序分解为在多核或超级计算机上并行运行的人......同样的思考过程对于分解云计算中的问题是必要的。云计算的不同之处在于两个不同云之间的连接或通信成本如此之高。你真的需要做对。当发送一条小消息,执行大量计算并获得一些消息时,它的效果最佳。数据并行性往往非常细粒度。像我们在Cilk和Threaded Building Blocks中看到的任务并行性稍微粗略一点。云计算必须是非常粗糙的并行性。但是有一些关于如何思考它的常见问题。让人们进行云计算,在云计算中表达问题的工具最终可能只是映射到多核上。 Reinders讨论的粒度指的是考虑到通信的成本和延迟,计算的大小有多小。在单个处理器中,通信带宽高且延迟低,因此软件可以执行相对较小的任务,然后同步结果。 (尽管移动大量数据仍然可能相对“昂贵”,这就是数据并行性比任务并行性更精细的原因;有关数据并行性的更多背景,请参阅第1部分。)相比之下,外部通信网络的带宽有限,并且相对较慢 - 比系统内的通信慢四到五个数parsxc.cn量级。因此,任务必须以相对较大的块进行分配,理想情况下,不必将大量本地数据打包。接下来是教育。在这里,Reinders的基本信息是在深入了解实施细节之前关注理论。我怀疑这突出了一个关键的挑战:并行编程往往需要扎实地掌握编程理论,并且在没有基础的情况下不能特别好地“乱砍”。我一直在做很多事情。在教学并行性方面。很多人立刻想到的是教他们锁,教他们互斥[防止同时使用公共资源的算法],教导如何创建线程,破坏线程。那都错了。你想要在更高层次上谈话。你如何分解算法?什么是同步?它为什么存在?我希望本科生学到的东西是解析理论,DAG表示[用于表示优化编译器中常见子表达式的工具],数据库模式,数据结构,算法。所有这些都是高级的,而不是[编程语言] Java。并行编程也是这样。你可以动手触摸同步方法,或者你想要教授更高级别的关键概念。有些人会更加适应他们的想法,但你会尝试教给每个人。给大多数今天的语言没有明确地为并行编程设计,关于并行性的讨论经常转向新的编程语言。这意味着功能语言最重要的是,但也可能涉及动态或脚本语言,它们通常处理封面下比Java或C更多的低级细节。功能语言不适合简单易懂,易于理解的描述。一种常见的简写是“函数式编程是一种强调表达式评估而不是执行命令的编程风格。”但如果您还不知道它是什么,这可能没有多大帮助。至于*的进入,蒂姆布雷 - 没有编程的懒散 - 称它相当难以穿透。 (也许你开始看到这个问题了。)我对函数感兴趣的一些事情。我们有一天没有醒来,每个人都在使用。它再次是顺序语义,顺序语义对人们有吸引力,而函数式语言则没有它们。但是有些人吃了它们。他们解决了惊人的问题。 ÿm.zlyscn.com