主题:【求助】:请教信息技术方面的大牛有关多线程的问题 -- newtime
共:💬51 🌺45
如果你的这个程序是C++的,把ramdon_number去掉以后应该没有任何问题,多线程在多核CPU上肯定快。但对Fortran程序,按我对这个语言的粗浅理解,Thread_Proc0的所有局部变量在两个线程都是共享的(同时说明:你的运算可能因此无法获得你预期的结果)。如果是并行版的编译器,那么访问这些变量的所有操作都要自动加锁,如此的话多线程程序将显著慢于单线程程序。
一个测试方法是把Thread_Proc0复制一份并改名Thread_Proc1,然后两个线程分别调用两个运算函数。如果这个方式下效率显著提高,则说明是Fortran语言的问题。否则要另找原因。
- 相关回复 上下关系8
🙂真正的专家出手了,我这只是皮毛而已,抛砖引玉 3 autoeagle 字279 2009-08-19 07:29:38
🙂客气了 2 美人他爹 字543 2009-08-19 10:31:21
🙂两种处理方法 4 autoeagle 字613 2009-08-16 23:08:01
🙂极大可能是共享变量访问的问题
🙂多线程是否提高效率,取决于你的应用 2 布老虎 字601 2009-08-15 13:59:33
🙂多线程的问题 1 spin 字197 2009-08-15 02:55:10
🙂回 newtime 字15 2009-08-16 19:16:42
🙂目前并行计算一般采用MPI而不是openMP 1 autoeagle 字65 2009-08-14 04:35:58