tag 标签: 并行计算

相关博文
  • 2023-5-29 14:17
    0 个评论
    你是否对人工智能(AI)感到好奇?你是否想要了解GPT如何改变我们的生活?你是否对并行计算和高性能计算( HPC )有所耳闻,但又对其知之甚少? 如果你的答案是肯定的,那么这门课程就是为你量身定制的! 在这个AI的时代,我们的课程将带你深入了解并行计算和 高性能计算 的奥秘。你将学习如何利用 超算 (Supercomputing)的力量,来解决现实生活中的复杂问题。 人工智能(AI)的浪潮正在全球范围内席卷而来,无论是在科研、工业、医疗,还是在我们日常生活中,AI的影响力都在日益增强。然而,AI的发展并非凭空而来,它的基础——高性能计算(HPC)在其中起到了至关重要的作用。只有掌握了高性能计算相关的技能,我们才能在未来的AI领域中获得更好的机会。 首先,让我们来看一个例子。GPT,也就是我们熟知的生成预训练转换器,是一种基于AI的自然语言处理模型。它能够生成与人类几乎无法区分的文本,被广泛应用于机器翻译、问答系统、聊天机器人等领域。然而,GPT的训练过程需要大量的计算资源,这就是高性能计算发挥作用的地方。通过并行计算,我们可以将复杂的计算任务分解成多个子任务,同时在多个处理器上进行计算,大大提高了计算效率。这就是为什么我们可以在短时间内训练出GPT这样的复杂模型。 再来看一个例子,自动驾驶。自动驾驶汽车需要实时处理大量的传感器数据,包括图像、雷达、激光雷达等,以便做出正确的驾驶决策。这种大数据处理的任务对计算能力的要求极高,而高性能计算正好可以满足这种需求。通过高性能计算,我们可以在短时间内处理大量的数据,实现自动驾驶汽车的实时决策。 最后,我们再来看看AI在医疗领域的应用。AI可以帮助医生进行疾病诊断,例如通过分析医学影像数据来检测肿瘤。这种任务需要处理大量的医学影像数据,而且需要在短时间内给出结果,这对计算能力的要求非常高。高性能计算可以帮助我们快速处理这些数据,提供准确的诊断结果。 以上这些例子都说明了一点,那就是高性能计算是AI发展的基础。无论是GPT的训练,还是自动驾驶的决策,或者是AI在医疗领域的应用,都离不开高性能计算。因此,掌握高性能计算相关的技能,对于我们在未来的AI领域中获得更好的机会至关重要。 然而,高性能计算并不是一项简单的技能,它需要深厚的计算机科学基础,包括 并行计算 、分布式系统、计算机体系结构等。此外,还需要对相关硬件,如CPU/GPU、FPGA等有深入的理解。因此,学习高性能计算是一项长期的任务,需要我们投入大量的时间和精力。 但是,这并不意味着高性能计算是一项无法攀登的高峰。事实上,随着教育资源的丰富,我们可以通过在线课程、工作坊、实验室项目等方式,逐步掌握高性能计算的相关技能。 无论你是AI新手,还是有一定基础的学者,这门课程都将帮助你提升技能,开启你的AI之旅。
  • 2022-11-24 22:25
    0 个评论
    【端到端存储解决方案】Weka,让企业【文件存储】速度飞起来!
    一、HK-Weka概述 虹科WekaIO(简称 HK-Weka )是一个可共享、可扩展的文件存储系统解决方案,其并行文件系统WekaFS支持NVMeoF的flash-native并行文件系统、比传统的NAS存储及本地存储更快。 HK-Weka 后端主机被配置为集群,它与安装在应用程序服务器上的HK-Weka客户端一起,构成了一个大型的可共享、分布式和可扩展的文件存储系统: *可共享 :所有客户端都可以共享相同的文件系统,任何客户端写入的任何文件都可以立即供读取数据的客户端使用。从POSIX标准(由IEEE和ISO/IEC开发)看,HK-Weka是一个强一致性、符合POSIX标准的系统。 *分布式 :HK-Weka系统由多个后端组成集群,每个后端都同时提供服务。 *可扩展 :HK-Weka系统的线性性能取决于集群的大小。对于大小为X且具有一定性能的群集,如果将群集加大到2倍,其性能将提高两倍,这非常适用于数据和元数据。 在数据泛滥的时代,数据会造成瓶颈和资源紧张,而HK-Weka将数据分解,统一企业内的数据孤岛、加快数据洞察时间。通过HK-Weka,企业可以获得一个应用程序敏捷、管理简单、成本低廉的端到端存储解决方案,改变让应用程序因为数据缺乏而降低处理速度的现状,从而更容易、更快、更安全地管理数据。HK-Weka为解决数据爆炸问题、提升数据价值提供了新的方向: 解决大问题 加快创新:比传统存储快10倍 安心扩展:线性性能,可同时扩展到100多PB的规模 更好、更快的终端用户体验 回馈数据要求高的工作负载 将计算能力用于工作:不浪费GPU/CPU资源 高性价比:具有对象存储经济性的极端NVMe性能 大幅提高数据科学和工程团队的生产力 可随处部署 云原生:跨公有和私有云运行 工作量少:只需最小的调整和维护 按需付费:只需为你使用的资源付费 软件定义:在标准硬件上获得类似于设备的体验 二、HK-Weka的功能特点 * 保护 HK-Weka并行文件系统受到N+2或N+4的全面保护,即硬盘或后端的任何2个并发故障都不会造成任何数据丢失,且HK-Weka系统能够正常运行以提供持续的服务。上述是通过复杂的分布式保护方案实现的,该方案是在形成集群时确定的。数据部分的范围可以从3到16,保护方案可以是2或4,即对于大型后端主机集群,集群可以是3 + 2,10 + 2,甚至16 + 4。 *分布式网络方案 HK-Weka系统实现了任意对任意的保护方案,确保在后端发生故障时,使用其他后端可以执行重建过程,获取驻留在故障后端上的数据,并使用集群中其他后端的冗余重新创建。因此,冗余不是跨后端组,而是通过在整个后端集群中相互保护数据集组来实现的。例如,一个后端在100个后端的集群中发生故障,其他99个后端将参与重建过程,同时读取和写入。这意味着HK-Weka系统重建过程非常快,这与传统的存储架构不同。在传统的存储架构中,正常运行的后端只是参与重建过程的后端或驱动器的一小部分。对于HK-Weka系统而言,群集越大,重建过程就越快。 *将故障组件替换为功能组件 热备盘(Hot Spare)是在HK-Weka系统集群中配置的,它会在整个集群重建后恢复完全冗余所需的额外容量,这与将特定物理组件专用于热备盘的传统方法不同。因此,一个包含100个后端的集群将配置足够的容量来重建数据,即使在发生两次故障后也可以恢复到完全冗余,并且还有可能承受另外两次故障,此故障组件更换策略不会影响系统的正常运行。系统发生故障后,只需将故障组件替换为有效组件即可重新创建数据。在HK-Weka系统中,数据立即被重新创建,将故障组件替换为功能组件作为后台进程。 *故障域 故障域是一组后端,它们可能由于单个根本原因而失败。例如,如果机架中的所有服务器都通过单个电源电路供电,或者所有服务器都通过单个TOR交换机连接,则可以将其视为故障域。考虑一组10个这样的机架设置,包含50个HK-Weka后端的集群(每个机架中有5个后端)。在HK-Weka集群形成过程中,可以配置6+2保护,通过在机架上形成保护条使HK-Weka系统知道这些可能存在的故障域。通过这种方式,6 + 2条带将分布在不同的机架上,确保系统在机架完全故障的情况下保持运行且不会丢失数据。 *按优先级排列数据重建过程 发生故障时,数据重建过程首先读取发生故障的所有条带以重建数据,然后返回到完全保护。如果发生第二次故障,可能会有三种类型的条带: 不受任何一个故障组件影响的条带:无需执行任何操作 仅受其中一个故障组件影响的条带 受两个故障组件影响的条带 当然,根据多重性规则,受两个故障组件影响的条带数量远小于受单个故障组件影响的条带数量。但在尚未重建受两个故障组件影响条带的情况下,第三个组件故障将使HK-Weka系统面临数据丢失。 为了降低这种风险,HK-Weka系统优先考虑重建过程:首先,从受两个故障组件影响的条带开始重建。由于此类条带的数量要少得多,因此该重建过程可以非常快速地执行,只需几分钟或更短的时间。接着,HK-Weka系统将返回到仅受一个故障组件影响的条带的重建,此时可以承受另一个并发故障且不会丢失任何数据。这种按优先级划分的重建过程方法可确保数据几乎永远不会丢失,并且服务和数据始终可用。 *无缝分配、最佳容量和最佳性能 安装在应用服务器上的每个HK-Weka系统客户端可以直接访问存储数据的后端主机,然后转发访问请求。HK-Weka客户端包括一个完全同步的映射用以说明哪些后端存储哪种类型的数据,并表示所有客户端和后端都知道的联合配置。 当 HK-Weka客户端尝试访问某个文件或文件中的偏移量时,加密哈希函数会指示该后端所需的文件或偏移量。当执行集群扩展或发生组件故障时,后端的职责和功能会立即在各个组件之间重新分配。这是允许HK-Weka线性系统提高性能的基本机制,也是线性同步缩放大小与缩放性能的关键。例如,如果添加后端以使集群的大小增加一倍,则文件系统的不同部分将重新分发到新的后端,从而立即提供两倍性能。 此外,如果一个集群只是适度增长,比如从100个后端增加到110个后端,则没有必要重新分发所有数据,只有10%的现有数据将被复制到新的后端,以便平等地重新分配所有后端上的数据。这种数据平衡(扩展所有后端在所有读取操作中的参与度)对于扩展性能非常重要,可以确保没有空闲或过载后端,并且集群中的每个后端都存储相同数量的数据。 所有这些完全无缝操作的持续时间取决于根后端的容量和网络带宽。HK-Weka的无缝操作使得正在进行的操作不受影响,并且随着数据的重新分发还可以提高性能,完成重新分发过后可提供最佳容量和最佳性能。 *数据缩减 HK-Weka系统增强的数据缩减功能可保持卓越的性能,能够显著减少各种工作负载。在HK-Weka并行文件系统中,可以寻找并减少彼此相似的数据块以单独存储数据块之间的差异,而传统数据缩减技术则需要数据块100%相似。上述操作可以按文件系统启用数据缩减,数据压缩率将取决于工作负载,无论是基于文本的数据、大规模非结构化数据集、日志分析、数据库、代码存储库和传感器数据等都可以压缩的非常出色。HK-Weka系统还提供了一个数据缩减估计工具(DRET),该工具可以在现有文件系统上运行,以计算数据集的缩减率。 三、HK-Weka的运行方式 要在生产环境中成功部署AI项目,企业的基础架构必须能够快速处理非常大的数据集,并能够从各种来源中摄取结构化和非结构化数据。传统的高性能处理存储架构不断地将数据从一个存储系统移动到另一个存储系统(用于归档数据的对象存储、用于持久存储的NAS、用于快速存储的并行文件系统)。随着数据传输时间的延长,不仅增加了存储架构复杂性,还减慢了运行结果。对HK-Weka系统而言,它重新构建了的现代AI工作流: * 设置和管理简单 * 云原生 :在本地、云端和平台之间无缝运行 * 比本地存储更快 :以更短时间、最快的推理和最高清晰的图像,秒基准来加速大规模数据流水线 * 多协议支持 :支持本机 NVIDIA GPUDirect 存储、POSIX、NFS、SMB和S3对数据的访问 * 零拷贝架构 :在同一个存储后端上运行整个管道,并消除副本成本和延迟 * 零调整混合工作负载支持 :最快的文件系统之一,支持高I/O、低延迟、小文件、混合工作负载和数据可移植性 * 完全软件定义 :既可以在硬件上运行,也可以在服务器上使用 虹科云科技 ,主要分享云计算、数据库、商业智能、数据可视化、高性能计算等相关知识、产品信息、应用案例及行业信息,为学习者传输前沿知识、为技术工程师解答专业问题、为企业找到最适合的云解决方案!
  • 热度 7
    2022-8-9 17:13
    1216 次阅读|
    0 个评论
    “ MiNO Marine的多元化战略需要打入由优秀的船舶设计师和建造商组成的成熟市场,因此我们需要设计的不仅仅是一艘拖船。 JARVICE™和Nimbix云提高了我们在计算流体动力学方面的分析能力,使我们能够提供基于现代工程技术的全新船体设计。最终,这一差异化因素将我们的设计推向市场,我们在一年内建造了这些新船。 ”-大卫·M·布尔格 MiNO Marine 创始人兼管理合伙人 一、公司简介 MiNO Marine, LLC (MiNO) 是一家位于路易斯安那州的造船和海洋专业服务公司,成立于1997人,其创世人是大卫·M·布尔格。MiNO 团队由海军建筑师、工程师、海洋设计师和其他人员组成。MiNO的服务范围从船舶概念设计到完整的船舶生产图纸包。自 2017 年以来,该团队在Nimbix云中运行Star-CCM+流体动力学仿真和分析。 “Nimbix云+Star-CCM+”的组合提高了MiNO团队对阻力、动力和耐波性的分析速度,从而为各种船舶和海事系统提供创新、高效、稳定的设计 。 二、背景介绍 大卫·布尔格是一名造船工程师和船舶工程师,在海湾南部地区的造船厂工作多年。直到1997年,他创办了自己的工程和软件开发公司。今天,MiNO Marine, LLC 执行全方位的船舶设计,从一张白纸到大型生产工程,生产的船舶主要应用于海上和石油天然气市场。最近,该公司开始多元化经营更专业的工艺品,包括高速船、用于海上风力建造和维护的自升式船、疏浚船,以及最引人注目的内河船。几十年来,河流拖船的工程设计没有太大变化,市场内的主要参与者比较自由。 为了打入这个市场,MiNO Marine必须开发一种完全不同的船舶设计。为此,他需要像 Nimbix这样的HPC合作伙伴资源 。 三、面临的挑战 MiNO的船舶设计和工程需要高级分析,包括流体动力学仿真、耐波性分析以及阻力和功率分析。 MiNO利用流体动力学计算软件Star-CCM+帮助其进行船体设计,使他们能够优化船体构造以抵抗水面阻力,最小化推动船舶通过水面所需的功率,并解决其他更困难的问题 ,例如耐波性和估计冲击波浪产生的巨大动力。然而,布尔格知道运行这些仿真所需的大量计算资源远远超过公司的台式计算机所能提供。 如果仿真运行数天,将延长设计和交付客户项目所需的时间 。 对于MiNO而言,他们不想投资于自己的 HPC 集群,主要是闲置成本太高 。一方面,对于像MiNO这样规模公司来说,HPC 服务器成本太高。另一方面,MiNO团队都是科学家和工程师,而不是基础设施专家,目前他们并没有准备好保持这样昂贵的投资。为了向客户提供真正的价值, MiNO需要一个具有成本效益的高性能计算平台来加速其完成仿真和分析工作,而无需自行维护 。 四、Nimbix云提供的技术支持 MiNO Marine使用由JARVICE提供支持的Nimbix云来加速仿真的执行,并使用Star-CCM+程序来分析其仿真结果 。此HPC应用程序可准确仿真流体、液体和气体与固体边界(例如船体或海上钻井平台)相互作用时的行为,并对传热和其他物理场进行建模。 在 Nimbix平台内运行Star-CCM+,MiNO可以模拟船舶在海水和淡水中移动时周围的水流,以及不同强度波浪的压力和冲击 。这使得 MiNO 的工程师设计师能够在考虑质考虑质量/重量、形状和重心等可变属性的基础上准确地对船舶进行几何建模,而无需创建数百个物理原型来完成建模。 采用这种方法建模能够准确评估不同条件下作用在船舶上的压力,以及驱动船舶以特定速度通过水面所需的压力。根据压力评估,团队可以改变船舶设计的几何设计来提高性能,最大限度地提高安全性,并将推动它前进所需的动力降至最小值。 五、MiNO实现的产出 自从MiNO将其 HPC 计算基础设施外包给Nimbix云以 来,MiNO完成的船舶设计比竞争对手媲美数倍 。 高性能计算基础设施可以提供运行复杂仿真和分析所需的速度、易用性和成本效益。Nimbix使MiNO工程师能够将注意力集中在他们最擅长的领域—船舶设计,而不是让工程师去维护一个高性能计算基础设施。 使用Nimbix后,MiNO实现了如下产出 : 一流的专业自升式船只设计,可将船只自身抬出水面。 MiNO设计了世界上最大的圆柱形升降船,其支腿可延伸 335 英尺 。 利用 MiNO参与美国首次海上风电场实施的经验,设计和优化新型海上风力涡轮机安装船。 快速渗透到成熟的内河拖船市场,设计了一艘 6000马力 的拖船,其全新独特的船体设计立即成为销售优势,一年内实现多艘船只投产。 六、MiNO公司获得的益处 过去,即使是配备 8 个内核的工作站,MiNO公司的工作站通常都要一次全速运行数天。 而现在, JARVICE和Nimbix云使MiNO能够在几个小时内执行过去需要数天才能完成的仿真和分析 。布尔格说:“ 根据其复杂性,我们可以让 Star-CCM+仿真运行数天,但Nimbix将仿真时间缩短到仅仅几个小时 。” 此外,与桌面工作站不同, Nimbix允许MiNO并行运行模拟,为他们提供更大的带宽,以在更短的时间内以更低的成本完成客户的设计分析 。布尔格说:“ 我们向Nimbix支付处理器以及Star-CCM+许可的时间费用。我们可以上传几十个这样的场景,并在数百个内核上同时运行。我们能在一两天内分析整个设计案例矩阵。这对我们的工作开展以及对我们的客户来说是一个巨大的优点 。” “ 我们通过与Nimbix合作,获得了速度、易用性和成本效益,同时还有他们提供的极好的技术支持,使我们能够满足客户需求和提前完成客户的交付期限 ”。布尔格说。 “ 这是我们能够破纪录地在其他成熟工程市场上取得成功的关键所在 。” 关于虹科云科技 虹科云科技,致力于为您提供云解决方案,我们通过分享公有云、私有云、数据库等相关知识、产品信息、应用案例及行业信息,帮助您找到最适合您的企业级云解决方案。
  • 热度 12
    2019-8-6 15:57
    6071 次阅读|
    3 个评论
    【零基础】搞懂GPU为什么比CPU“快”
    一、前言   近几年深度学习在各领域大显神威,而”GPU加速"也得到了越来越多的篇幅,似乎任何程序只要放到GPU上运行那速度就是杠杠的。GPU代替CPU计算已成了大势所趋?我先告诉你结论”那是不可能滴“,然后咱们再来说说”GPU为什么比CPU快“。 二、图形处理,GPU的源起   GPU是显卡的计算单元,就好比CPU是电脑的计算核心,有时我们直接就把GPU称为显卡。显而易见,GPU从诞生之初就是用来处理图像的。下面我们讲一个简单的例子来说明下为什么图像处理需要用到GPU,而CPU的缺点是什么。   我们讲一个画面”立体“,其实讲的是画面中对于光影的运用,下图就是一个简单的”圆“。   当我们给这个圆加上”光影“之后,它就变成了一个球。我们说球要比圆立体的多,这就是光影的作用。   光影的原理很简单,你需要想象一个远处的”光“,然后在画面上模拟出光照在物体上的明暗变化,计算机中这些明暗变化都是通过”计算“得到的。编程人员只需要输入光源的距离、亮度、被照体的位置,然后通过逐步计算、光影叠加就能得到图像中每一个像素应该显示什么颜色、什么亮度,一个立体画面也就跃然纸上了。   那么现在问题来了,假设屏幕分辨率为1920*1080,即2073600(207.36万)个像素,游戏中每个像素都需要根据光影参数来计算显示的颜色和明暗。假设一个常见的Intel I5 CPU主频为3.2GHz,即最多每秒可做32亿次运算。但这里的一次运算只是做了一次简单的二进制加减法或数据读取,一个像素的光影计算我们可以假设需要100次运算(关于CPU的运算原理可以看这篇文章https://mbb.eet-china.com/blog/3887969-407226.html),即CPU一秒约处理3200万次像素运算,大概15张图片,用专业点的说法,这个游戏流畅度大概是每秒15帧的样子。   可见使用CPU全力进行图形运算是有点吃力的,更何况CPU还要处理很多键盘指令、游戏后台计算等等。是CPU还不够快吗?假设现在速度翻倍,即每秒64亿次运算似乎也是不够的。其实CPU面临的主要问题是,虽然每一次光影计算都非常简单,但经不住像素太多啦,还都得排队一个一个做。然后工程师们想到“其实任何一个像素的计算与其他像素的计算结果关系不大”,那为啥不多整几个计算核心“并行”计算呢,于是GPU就出现了。   一个典型的显卡GTX1060,主频是1.5GHz大概是Intel I5一半左右,但是它具备1280个计算核心。每个计算核心每秒可做15亿次运算,1280个核心每秒就是19200亿次运算,那一秒可以处理192亿次像素计算,大概925张图片,是CPU计算能力的61倍!但GPU的特性只能应用于图形计算这种可以并行的任务,若是做普通的串行任务其速度远远不如CPU。 三、核心越多越好?   通过前面的叙述我们都知道了GPU速度“快于”CPU的奥秘在于它有很多的“核”,那能不能这样,我们给CPU也装上1000多个核,那速度岂不是快到飞起?答案是“不得行”。由于制造工艺的原因,CPU内核越多其频率也就越低。其实很容易想到,同步10个人的动作和同步1000个人的动作其难度肯定是不一样的。其次,电脑中大部分的运算都是串行的,即下一个运算要等到上一个运算完毕才能继续,这时候单次运算的速度才是最重要的。   所以相当长时间以内,CPU+GPU的搭配才是最佳方案。 四、GPU与并行计算   深度学习与图形处理有一些相通的地方,它需要大量的数据来“训练”模型。比如一个猫图识别AI,你需要提供数以万计的猫图供其“学习”。而每一张猫图的学习又与其他猫图没有先后关系,即你可以同时并行100、1000张猫图的学习,所以GPU在深度学习领域大放异彩。   实际上GPU编程一直是近年来的热点,作为高效程序员又怎么能不了解一二呢?CUDA是NVIDIA推出的并行计算框架,它囊括了GPU并行计算中所有你需要的组件,只需要简单安装(当然你电脑得是N卡)就可以在C代码中使用它提供的接口进行GPU编程了,当然对于非从业人员来说了解下相关知识也是极好的。    现在关注公众号“零基础爱学习”回复“GPU”就能获得下面的资料:    1、GPU高性能编程CUDA实战(中英文版+实例源码)    2、GPGPU编程技术 从GLSL、CUDA到OpenCL
  • 热度 17
    2012-12-2 20:59
    3243 次阅读|
    0 个评论
      ##1    由“ OpenCL 是什么?”想到的…… “OpenCL到底是什么?”。在执笔《日经电子》2008年12月15日号刊登的报道“苹果主导下的‘OpenCL’,为处理器带来自由”期间,同事及上司多次这样询问笔者。虽然笔者自以为随着对OpenCL采访的不断深入,已理解了其内含及意义,但却难以满意地回答这种问题。    万般无奈之下,笔者在报道中这样写道,“简而言之,OpenCL是在异构(Heterogeneous)多处理器平台上将硬件差异抽象化的技术”。对各位读者来说,也许这种表达方式很难理解。惭愧的是,目前还没办法用一句话回答“OpenCL到底是什么?”。笔者在与致力于推进OpenCL标准化的Khronos Group的总裁Neil Trevett见面谈及此事,他苦笑道:“业界人士能马上理解OpenCL的概况及其必要性。但是,要简洁地传达给业界以外的人却很难。我们也为此而头痛”。    既然OpenCL难以简单进行描述,为什么笔者还要予以关注,笔者想借此机会略作介绍。    假设在数字化民用产品上运行的应用软件的开发者,需要根据事先确定的系统结构编写程序。例如,在“该产品上配备A公司的CPU及B公司的DSP”的前提条件下,需要编写A公司的CPU用程序、以及B公司的DSP用程序。还需要规定CPU与DSP之间的通信步骤。    CPU、GPU及DSP等处理器有各自的长处和短处,并具有根据处理器厂商的不同、适合执行某种处理的特点。在上述例子中,本来也许C公司的DSP更适合,或者将部分处理工作交给D公司的GPU,从执行速度及耗电量等方面来看更恰当。但是,改变处理器的种类并非易事。由于根据处理器的厂商及种类不同,程序编写的方法也不同,因此,如果不大幅改写程序,就不能在其他的系统结构下工作。也就是说,不仅是改用不同的处理器很难,确定哪种结构为最佳也很难。按照已确定的系统构造编写程序,就意味着剥夺了选择处理器的自由。    可将软件开发者制作的程序拿到许多厂商推荐的多种处理器上试用,并自由地选择处理器的组合。OpenCL的目的就是提供这样的平台。OpenCL规定了无需修改已制作完成的程序,即可在配备与原系统不同种类处理器的系统上执行的标准API。    参与OpenCL制定工作的某半导体厂商技术人员对笔者表示,明确区分软件开发者与半导体厂商职责范围的分界线就是OpenCL。当时,正值笔者产生了“即使造成此前拥有的客户流失也在所不惜?”的疑问。他的回答是这样的。“这才是健康的竞争环境。在这种竞争环境中,(厂商)会为了得到客户的认可而全力以赴。在半导体产品上精益求精,是我们的天职”。有了OpenCL这种API的分隔,软件开发者及设备厂商将可获得处理器选择的自由,而半导体厂商则可获得处理器开发的自由。    顺便提一下,Khronos Group的Trevett是已开始在手机等领域得到广泛应用的图形处理API“OpenGL ES”的提案人。他表示,“虽然如今OpenGL ES被广泛采用,但从制定性能指标到普及为止花费了4年的时间”。由于性能指标制定后经过了2年半导体才面世,因此OpenGL ES的价值未能得到充分的认识。    Trevett预计,与OpenGL ES面世时不同,OpenCL将会及早得到普及。“再过2个月适用性试验就将开始,预计各公司的处理器也将迅速提供支持。苹果已向我们表示,将在新一代操作系统中提供技术支持。虽然也许难以用语言描述OpenCL,只要能看到实际运行的情形,大家肯定会马上认识到它的价值”(Trevett)。真可谓“百闻不如一见”。   ## 2   Altera的野望 去年11月Altera"悄悄的"发布了Altera面向FPGA的OpenCL计划,内容仅仅是一个网页和一份仅仅8页的白皮书,没有可以实现的工程。内容虽少,但是难掩Alter在可配置计算领域的野心。 OpenCL为何物? OpenCL (Open Computing Language,开放计算语言) 是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。传统上,OpenCL应用于CPU、GPU等通用设备,在OpenCL 1.2中,提供了对其他设备的支持。 FPGA它极强的可配置性能在很多领域发挥作用。随着工艺的提高,FPGA的功能也越来越强大,可以在某些领域替代CPU、GPU的计算功能。但是传统的FPGA设计极为复杂,不仅设计思路同在CPU、GPU上设计软件完全不同,还需要大量的考虑如约束等非常细节的物理底层问题。因为传统FPGA设计不仅门槛很高,而且设计周期也远长于纯软件设计。如果能把OpenCL标准引入到FPGA中,开发人员利用OpenCL能够自然的描述在FPGA中实现的并行算法,其抽象级要比VHDL或者Verilog等硬件描述语言(HDL)高得多。   OpenCL标准简介 OpenCL应用程序含有两部分。OpenCL主程序是纯软件例程,以标准C/C++编写,可以运行在任何类型的微处理器上。例如,这类处理器可以是FPGA中的嵌入式软核处理器、硬核ARM处理器或者外置x86处理器。如图所示。   在这一主软件例程执行期间的某一点,某一功能有可能需要很大的计算量,这就可以利用并行器件的高度并行加速功能,例如CPU、GPU、FPGA等器件。要加速的功能被称为OpenCL内核。采用标准C编写这些内核。下图中的例子对两个数组a和b进行矢量加法,将结果写回输出数组中。矢量的每一元素都采用了并行线程,当采用像FPGA这类具有大量精细粒度并行单元的器件进行加速时,能够很快的计算出结果。主程序使用标准OpenCL应用程序接口(API),支持将数据传送至FPGA,调用FPGA内核,传回得到的数据。   CPU与GPU的并行性来自于把并行线程在不同的内核中执行,而FPGA是把内核内核功能传送到专用深度流水线硬件电路中,使用流水线并行处理概念,而本质上就是多线程的。这些流水线的每一条都可以复制多次,与一条流水线相比,提供更强的并行处理功能。如图示,可以通过级联功能单元实现矢量加法内核,在OpenCL描述中实现每一操作,进行复制以满足实际应用的吞吐量和延时要求。虽然所显示的只是一个简单表征,但每个功能单元都可以是深度流水线,以保证最终电路的工作频率足够高。此外,编译器可以建立电路来管理与外部系统的通信。
相关资源