探索并行计算中的 SIMD 技术
1. 并行计算概述
并行计算指的是同时执行两个或多个操作,在过去十年里引发了广泛关注。这种热度部分源于消费市场从单处理器(UP)系统向对称多处理系统(SMP)的转变,另一部分则得益于通用图形处理单元(GPGPU)编程的简化,使高度并行的向量处理从高性能计算(HPC)领域走向大众。
然而,人们常误以为并行就意味着快速,或者所有任务都适合并行化。实际上,许多任务并行化后性能未必提升,甚至可能比串行代码运行更慢。因此,运用并行计算时,需要仔细衡量和分析,以确定其是否适合特定问题。
并行计算常用的两种方式是多线程和多进程,选择哪种方式通常取决于两个组件之间的地址空间是共享还是隔离。在 Linux 系统中,线程和进程都可通过 clone(2) 系统调用创建,进程还能使用 fork(2) 系统调用创建。
1.1 管道与过滤器概念
管道与过滤器是 UNIX 哲学的基本概念,过滤器即应用程序,管道则是连接多个过滤器的纽带,用于将简单命令组合成复杂命令。每个过滤器的执行都始于创建新进程,这通过 fork(2) 系统调用实现,它会将调用进程复制为新进程。新进程若要执行不同命令,需调用 execve(2) 系统调用,该调用会用指定可执行文件的映像替换当前进程映像。
虽然 fork(2)/execve(2) 代码路径在 Linux 内核中经过了高度优化,但进程和线程的创建成本仍然较高。为避免不必要的数据复制,Linux 采用写时复制(COW)技术创建进程。在
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



