《多核编程的难题(二)》有13个想法

  1. 如果我们从小训练一手画方,一手画圆,我们现在就成双核的了:D

    人脑和人身体的基础应该是一种大规模并行,但是到了人的思考层面,就推荐“专心“做一件事情了

    说明串行是美德

    1. 哈哈,我觉得其实这个问题可以这么来看:人之所以可以边听课边记笔记是因为这两个动作分别占用了人体不同的功能单元,而人的思考要”专心“是因为大部分人的特点是同一时刻只能用大脑干一件事情。很显然,”串行化“是最容易被人理解的,因为这是沿着时间线发展的,人的一生不就是从出生到死亡的过程么。但是多核提供了一个有多个处理器单元可以同时工作的平台,所以怎样利用好它就成了一个问题了。

  2. 串行加context switch一定程度解决(hide)了“load balancing(负载均衡)”、“sequential dependency(顺序依赖关系)”和“synchronization(同步)” 这些问题,但是现在application的complexity和data bandwidth的增长导致单核只适合low latency control的问题,而GPGPU就是另一类问题的solution, 可以说,各种core都是一个communication pattern的加速器,因为那些pattern是heterogeneous的,所以未来的计算架构是异构的。

    1. 串行加context switch是传统的concurrency问题(例如多任务快速切换),多核时代引出的主要是Parallelism问题(例如多线程同时运行)。CPU侧重latency,GPU侧重throughput,两者有融合的趋势,也就是异构:)

      1. OpenCL是不是就想干这事呢?所有的computation device 统一一个programming model

        1. 对 OpenCL的设想是异构的统一编程平台 但是它现在问题还蛮多的好像 例如程序移植性不好?想把GPU和CPU统一起来不是那么容易的

  3. 理论上,multi-core programming和multi-processor (多个单核的处理器)programming有不同吗?

  4. (Optimal) load balancing 和(maximum) processor parallelism 是不是一体两面的事?

    1. 首先,并行化(parallelism)程度越高,性能越好。而load balance只是影响parallelism的因素之一,其他影响parallelism的还有serialization(例如lock contention),threading overhead(例如频繁调用pthread库函数),synchronization(例如调用barrier)等。

电子邮件地址不会被公开。 必填项已用*标注