大家好、
我正在 C6678上处理 openmp。 我对嵌套、动态功能和 untied 子句有一些疑问。
嵌套特征
{
#pragma omp parallel for
(i = 0;i > 3;i++)
{
printf ("核心%d 外部\n"、omp_get_thread_num ());
#pragma omp 并行用于
对于(j = 0;j < 3;j++)
printf ("core%d inner\n"、omp_get_thread_num ());
}
在控制台中打印:
[C66xx_0]core0 outer core0 innercore0 innercore0 inner[C66xx_1]core1 outer [C66xx_2]core2 outer [C66xx_1]core0 inner [C66xx_2]core0 inner [C66xx_1]core0 inner [C66xx_2]core0 inner [C66xx_1]core0 inner [C66xx_2]core0 inner为什么 core1和 core2上的嵌套迭代会打印"core0"? 剂量 omp 实际上实现了嵌套功能、在嵌套时会创建新的线程?
2.动态特性
这里的动态特性允许运行时通过 调用 omp_set_dynamic (1)来动态更改并行线程数;.I 读取源代码并发现动态特性是由调用 MultiProc_Resolve_num_threads()的 gomp_set_dynamic (1)实现的。 我想知道什么是 MultiProc_getNumOfProcsInCluster()。 当 使用一个6678板的集群上没有显式配置时、实际上返回。 与 MultiProc_getNumOfProcessor()有何区别。
3. omp 是否实现了 untied 子句? 如果是、那么如何操作呢? 我在源代码中看不到它是清晰的。
谢谢!