Abstract
对一个并行编程模型做优化,其约束应该怎么处理呢?
比如openMP
只是共享内存下的SIMT
模型——在合适的地方加上#pragma
,其他的交给编译器来做即可。编译器检测代码和数据之间的依赖关系,然后做线程级别的并行化,但他不会检测线程之间的data-race condition
,故很大程度上取决于你的coding能力。
再比如MPI
则是靠进程间通信IPC
来完成数据交换,对于一个分布式系统来说,通信开销和节点之间的data locality
是一个很值得考虑的优化选项。