多核编程问题
有一软件,模拟对电磁射线进行追踪。此软件是单核运行的,一次只能追踪一条射线。现要将程序改成多核运行的,这样对于N核CPU来说一次能够追踪N条射线,进而计算时间可变为1/N。
请问各位大神要这个单核改多核的功能应该如何实现,需要哪些知识。
[解决办法]
Thread,Mutex
[解决办法]
多线程编程,
这不叫“多核”编程,而叫多线程编程,多核是多线程的首要的子问题。
[解决办法]
呵呵,如果能方便修改的话可以考虑采用OpenMP。
如果你用的是Mac OS X Snow Leopard的话,那恭喜,Grand Central Dispatch(简称GCD)能轻而易举地帮你完成这个任务,呵呵。
[解决办法]
多开几个线程,操作系统会将各线程分配到各核运行的。
[解决办法]
线程,有共享数据的话还要考虑同步问题。
[解决办法]
OpenMP
VC从VC9开始支持,可以在其中开启对OpenMP的支持。但是代码本身也需要做一些改动,加入OpenMP的代码进去,进而指示原有代码如何并行执行
具体怎么用自己google一下
P.S
这个和多线程没有任何关系,多线程只是针对单个CPU进行代码执行调度,并不能利用多个CPU,不是并行计算。实际上,以计算为主的程序,只要一开始算,CPU都是满载的,这时开多线程没有任何意义。