高性能计算(HPC)通常被认为是使用超级计算机或计算机集群来解决复杂的计算问题。然而,对于大多数程序员和用户来说,超级计算机可能遥不可及。但令人惊讶的是,可以通过一些方法,将超级计算机或计算机集群的强大计算能力带到个人电脑上。
高性能计算(HPC)是指使用超级计算机和计算机集群来解决高级计算问题。尽管超级计算机对于普通程序员和客户来说可能难以触及,但仍然可以通过个人电脑体验到HPC的强大功能。
当需要处理大数据或进行计算密集型处理时,可以编写可以在并行执行的程序。如果有大数据,可以将其分割成小数据集,并行处理。如果有一个计算密集型的过程,可以将其分割成几个子过程,并行执行,同时共享每个过程的数据。并行执行可以大大减少某些应用程序的执行时间。
人们在许多情况下使用HPC。以下是HPC使用的主要情况:
乍一看,HPC似乎并不需要执行日常生活中使用的软件应用程序。但即便如此,在现代电脑游戏中仍然使用小规模的HPC。可能需要在许多日常任务中使用HPC,如视频处理、压缩、视频类型转换、图像处理、商业数据分析、模拟、3D图像渲染和任何照片编辑软件等。
正如之前描述的,典型的HPC需要超级计算机或计算机集群。但可以通过几种方式进行HPC,而不需要超级计算机或计算机集群:
除了上述提到的,还需要训练思维方式,以一种新的编程方式思考。习惯于进行顺序编程,但现在是时候考虑并行编程了。编程执行大量并行过程的组合并不容易。让看看思维方式的差异。
上面的图像显示了计算数组中所有元素的总和的两种方式。它展示了如何通过并行执行来减少过程的深度。深度与执行时间成正比。因此,减少深度可以减少执行时间。
然而,大多数现实世界的问题并不符合上述简单模型。它们可能有多个维度和多个步骤。大多数时候,这些步骤需要按顺序执行。因此,并行实现取决于问题的性质。
有一些已知的技术可以优化某些问题的并行实现,并且有许多正在进行的研究来解决许多一般类型问题的优化。
可能面临的主要障碍不是知识,因为可以在许多地方获得关于HPC的知识。需要上述硬件配置之一才能进行HPC。将在下一节中解释上述硬件特性。
如果是游戏玩家或图形设计师,可能已经对现代图形卡及其功能了解很多,这可能是真正关心金钱的最佳选择。许多现代图形卡不仅能够处理与图形相关的进程,还能够处理通用计算。流行的品牌如ATI和NVIDIA已经推出了自己的技术,以实现高性能计算。
在通用计算中使用GPGPU的一些流行的编程语言是OpenCL,这是目前主导的开放通用GPU计算语言。主导的专有框架是Nvidia的CUDA,它只与NVIDIA硬件兼容。
使用了一些软件,它具有利用NVIDIA CUDA的能力。"Any Video Converter"是一个视频格式转换器,能够在GPGPU上运行高度复杂的转换算法。下面的图像显示了软件显示其使用NVIDIA CUDA技术的能力。即使使用NVIDIA GT210,也体验到了X264/H264(随MPEG-4一起提供)视频转换的显著速度提升。
使用NVIDIA CUDA技术可以将转换过程的速度提高几倍,比传统方式更快。Cyberlink Power Drector是一款视频编辑软件,它也具有使用NVIDIA CUDA的能力。可以在PowerDirector上看到NVIDIA CUDA的标志。
甚至Adobe Photoshop也可以利用GPU。不仅仅是这些软件,几乎所有的专业级视频编辑软件都具有利用电脑上的GPGPU的能力。如果需要加速这类软件,寻找一个好的GPGPU卡可能是一个好主意,而不是更大的RAM或具有许多核心的CPU。
每当使用这类软件时,尝试找到它是否具有这些能力,如果有,可以从HPC能力图形卡中获得最大的好处。
点击这里查看图形卡是否具有CUDA能力。
通常,计算机内置有协处理器。但在这里,关心的是另一种协处理器,它是一种可以附加到计算机上的额外设备。这些设备通常包含数千个核心,可以并行处理数千个进程。与GPGPU相比,这些设备有点昂贵,但它们可以将PC转换为超级计算机,只要有合适的软件。AMD Stream Processor(又名ATI Firestream)和NVIDIA Tesla是迄今为止流行的协处理器。