- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2014-05-15 15:34 编辑
windoze 发表于 2014-05-12 18:46 ![]()
回复 32# yulihua49
所谓并行就是在不同的CPU上同时运行多个任务,而进程/线程其实是OS抽象出来的并发结 ...
我现在不知道如何在单线程上并行跑多个CPU,你能介绍些方法吗?
不过程序员关心的是方便性。
一般都是在目态(非管态)编程,控制不了系统底层的资源的。
你说的是理论上。
实际上,我不可能拿着一堆裸CPU自己去写并行计算代码,既不用操作系统,又不用任何语言,也不用任何工具,当然也不存在任何进程和线程,一切从0做起,一切都是具体的,没有任何抽象。
所以,我们要实际些,在当今主流操作系统和常见平台上(本帖已经定义了LINUX),我们怎样开发多CPU,多核的并行处理程序呢?
你说不用多进程和线程,有什么好办法?能在任务的指定时间及可控的成本下完成任务?
如果一个理论,没有现实意义,只是说了一些尽人皆知的废话,那就没必要浪费时间讨论它了。
所以,还是现实些,讨论一下并行处理技术,除非,你的办法比多线程、多进程还高明,还方便,更具实用价值。
看了一下openCL,不过是在编译器中处理,把任务和数据分块,发送到不同的CPU和GPU处理,然后等待结果,综合结果。。。。
这跟我们的工作很相似,我们是把数据分块,发送到多个节点去计算,每个节点是多线程的。
最后收集数据,综合起来得到最终结果。就是map-reduce模型,云计算。。。。。 |
|