是否可以在一个程序的多个文件中使用OpenMP指令?
|
我有一个C程序,其中包含多个.c文件和多个.h文件。我想在主函数中使用一个“ 0”指令(以便所有线程仅创建一次),然后在其他文件中执行其他OpenMP操作,例如“ 1”。
但是,我似乎无法做到这一点。编译主文件时,它抱怨
#pragma omp parallel
指令的private()
和shared()
位中提到的某些变量不存在(它们在该文件中不存在-因为它们在另一个文件中) ,并且在编译另一个文件时,它抱怨我有一个#pragma omp for
而没有附带#pragma omp parallel
。
代码在文件之间很好地分割了,我不希望将它们全部放回到一个文件中。有没有办法解决?
没有找到相关结果
已邀请:
2 个回复
骨酚柯
inner.c:
并运行:
但是,不能,您不能在一个例程中与另一个例程一起设置变量的共享属性-它们只是不在范围之内。您只能设置他们的价值,而不能设置他们的共享。 一旦启动了(比如说)内部,所有东西都是私有的。您必须将所有共享的内容作为共享传递。 只是为了澄清有关“一切都私人”的内容:以上内容与
因为线程,i和newthread是在并行块内部定义的(无论是否在函数内部),所以它们都必须是私有的。
氏脑