如何製作EOS 紙錢包及Airdrop 介紹
今天的大多数软件仍然是为了顺序执行而编写的,编程模型需要改变以利用更快的硬件和越来越多的芯片内核。程序员需要编写代码,以便能够在多个内核和线程之间同时分割和执行任务。
计算机的大卫帕特森说,制作快速机器和更好的编程语言已经引起了很多关注和资金投入。加州大学伯克利分校的科学教授周一在斯坦福大学举行的会议上说。并行编写桌面程序的注意力相对较少,但游戏和音乐等应用程序可能会改变这种情况。这些程序的用户需要最佳的实时性能,因此程序员可能不得不采用能够在多个线程和核心上分解任务的模型。
例如,新颖的并行机制可以改善PC上播放音乐的质量和智能手机,Patterson说。在分离渠道和仪器方面做得更好的代码最终可以通过并行交互产生声音。
加利福尼亚大学伯克利分校拥有一个并行计算实验室,研究人员试图了解如何使用应用程序,这可以帮助优化代码用于手持设备。一个项目旨在通过基于特定任务(如渲染和解析页面)优化代码,将桌面级质量浏览带入手持设备。另一个项目涉及优化代码以更快地检索健康信息。该实验室主要由英特尔和微软提供资金。
伯克利的研究人员试图通过用新的低级别C代码替换最初用Python和Ruby on Rails等脚本语言编写的代码来实现并行。 Patterson周三在接受采访时表示,新代码特别专注于特定任务,如分析语音识别应用中的特定语音模式。该代码使用OpenMP或MPI编写,应用程序编程接口旨在编写机器级并行应用程序。
Patterson说,专家需要编写这种高度专业化的并行代码。 Patterson在接受采访时表示,这样可以减少那些使用Python和Ruby on Rails的程序员的开发时间,这使得应用程序开发变得更容易,但并不关注并行性。实验室使用低级机器码显示特定任务执行跳转20倍。
并行性的概念并不新鲜,并且大部分都是高性能计算领域。低水平的并行性一直都是可能的,但程序员在缺乏软件工具和不断变化的硬件环境的情况下面临着一项艰巨的任务。“线程必须正确同步,”电气工程教授Christos Kozyrakis说。斯坦福大学的计算机科学专家在小组讨论之前的演讲中表示。代码需要以可预测的形式编写,并且随着更多核心的可用性而扩展。
编译器还需要变得更加智能和足够敏锐,以便按时分解线程,以便按正确的顺序接收输出,Kozyrakis说: 。如果特定的计算没有按照特定的顺序执行,那么将并行编译到代码中的错误尝试可能会产生有问题的软件。这是一个通常称为竞赛条件的问题。编码人员表示,编码器也可能需要学习如何使用多种编程工具来实现更好的并行性水平Patterson在会议上说:“没有懒惰的编程方法。”内存和网络延迟已经造成了数据吞吐量的瓶颈,这可能会否定并行任务执行所取得的性能。对于不同的体系结构,也有不同的编程工具,这使得很难利用所有可用的硬件。
目前提供的许多并行工具旨在利用CPU和图形处理单元的并行处理能力来提高系统性能。苹果,英特尔,Nvidia和Advanced Micro Devices等公司都在推广OpenCL,这是一款并行编程环境,将在苹果即将推出的Mac OS X 10.6操作系统(也称为Snow Leopard)中支持,预计将于周五发布。 OpenCL与推广其专有的DirectX并行编程工具的微软和提供CUDA框架的Nvidia竞争。
OpenCL包含一种类似C语言的编程语言,通过API(应用程序编程接口)来管理硬件内核作为处理器内核和其他资源。通过在系统中的多个CPU和图形处理单元之间分配像素处理,OpenCL可以帮助Mac OS更快地解码视频。
Patterson说,所有现有的工具都面向不同的软件环境,并利用不同的资源。例如,OpenCL更适合执行GPU上的任务。像DirectX这样的专有模型很难在异构计算环境中部署,而像OpenCL这样的一些模型只适用于依赖于GPU的特定环境。“我认为[OpenCL]不会跨越所有架构。”帕特森说。 “我们同时需要尝试其他的东西,”就像试图通过Ruby on Rails等常用开发工具改进编程模型一样,“他说。”虽然观众指出并行性一直是一个问题数十年来,小组成员表示,大学正在采用新的方法来开发多种编程工具,以实现并行性。经过多年的芯片开发筹资之后,政府也通过资助相关计划来更多地关注并行处理。
Kozyrakis表示,斯坦福大学已经建立了一个旨在“在大众中实现并行应用程序开发实用性”的实验室,到2012年研究人员正在与英特尔,AMD,IBM,Sun,惠普和Nvidia等公司合作
开发人员的一项即时任务测试可能是尝试将现有的旧代码并行转换为现代芯片,伯克利的Patterson说过。有几家公司正在提供自动并行化,但是重写和编译最初为顺序执行而编写的遗留代码可能是一个巨大的挑战。
“在这些领域有钱可赚,”Patterson说。