LycorisNet之并行计算的实现
毫无疑问LycorisNet是需要实现多核计算的,上学期又恰好选修了一门“多核并行计算”的课,这一次不禁也想应该会轻松一些。主流的并行计算实现也就那么几种,Pthread、OpenMPI、MPI等等。
Lycoris采用C++ 11规范,在了解C++ 11规范的时候,了解到C++ 11中还有一个标准化的库std::thread。std::thread是对不同平台上不同并行实现的封装,试用了一下之后竟然发现相当好用,因此最后Lycoris版本中也使用它作为并行的基础架构。虽然std::thread还有很多不完善的地方,很多并行计算所需的高级用法基本没有,但是对于此项目中相当纯粹的独立任务,std::thread还是够用的。
实现的部分代码如下:
样例代码中实现的是mutate(突变)的并行化,并行逻辑相比Pthread简单太多了。
网友评论