在matlab上面,利用mex技术,结合openmp多线程第三方包,实现多核并行计算.这里主要优化了for循环,通过openmp的相应参数设置,就可以方便地进行多线程并行计算.在计算中需要注意的是,matlab变量赋值的时候使用了lazy copy技术,A=B,实际上只有B改变的时候,才会进行A的复制,进入mex后,matlab不知道B被改变了,这会引起A的值也会改变.
我之前一直以为要通过java和matlab混编才能能够实现真正意义上的多线程,通过这个网址的资源,我发现,作者直接通过C/C++ 编译的mex文件方式来实现多线程技术(不是matlab上面的那个并行计算的工具),后来我反思了以下,确实是可以通过mex方式来实现多线程.我们可以使用matlab调用mex,然后进入mex文件后,通过mexfunction,以及thread的方式来实现多线程,在mex内部调用matlab的函数的文件,把这个mex程序当作主程序,就可以利用C/C++的全部优势啦.嘿嘿,这个想法要去实现一下.