淘客熙熙

主题:【求助】:请教信息技术方面的大牛有关多线程的问题 -- newtime

共:💬51 🌺45 新:
全看分页树展 · 主题 跟帖
家园 极大可能是共享变量访问的问题

如果你的这个程序是C++的,把ramdon_number去掉以后应该没有任何问题,多线程在多核CPU上肯定快。但对Fortran程序,按我对这个语言的粗浅理解,Thread_Proc0的所有局部变量在两个线程都是共享的(同时说明:你的运算可能因此无法获得你预期的结果)。如果是并行版的编译器,那么访问这些变量的所有操作都要自动加锁,如此的话多线程程序将显著慢于单线程程序。

一个测试方法是把Thread_Proc0复制一份并改名Thread_Proc1,然后两个线程分别调用两个运算函数。如果这个方式下效率显著提高,则说明是Fortran语言的问题。否则要另找原因。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河