主题:Openmp子程序问题
各位大侠,最近本人在自学openmp,想把现在的串行程序改成并行的,在改的过程中发现这种问题:
我现在的程序主要由几个大的循环块组成,但由于程序复杂,每个循环中都会调用多个子函数。我现在用parallel do将各循环并行,在试验的过程中发现Openmp默认子程序中各变量为共享的,不管是在module中定义的全局变量还是局部变量,这样可能会造成各个线程间本来应该private的量变成了shared。
我在几个简单的循环中试着不使用子程序,而将子程序的功能挪到主程序中可以避开这个问题,但是几个主要的循环中调用的子程序比较复杂,全部改到主程序中不现实,不知道各位大侠是否遇到这种问题,有什么高招请不吝赐教,万分感谢!!!
我现在的程序主要由几个大的循环块组成,但由于程序复杂,每个循环中都会调用多个子函数。我现在用parallel do将各循环并行,在试验的过程中发现Openmp默认子程序中各变量为共享的,不管是在module中定义的全局变量还是局部变量,这样可能会造成各个线程间本来应该private的量变成了shared。
我在几个简单的循环中试着不使用子程序,而将子程序的功能挪到主程序中可以避开这个问题,但是几个主要的循环中调用的子程序比较复杂,全部改到主程序中不现实,不知道各位大侠是否遇到这种问题,有什么高招请不吝赐教,万分感谢!!!