您好!
我的客户说以下函数在 OpenMP 运行时不起作用。 使用 "omp parallel for "时、本地贵重物品(阵列和结构形式)的初始化似乎不正确。
请查看以下代码和内联注释。
#include #include struct struct_AB{ uint32_t a; uint32_t b; }; //返回值应为0、但结果不为0。 这意味着 s 的数组未正确初始化为0。 这不是预期行为 uint32_t omp_test1 (uint32_t *数据、uint32_t 大小){ uint32_t i; memset (data、0、size * sizeof (uint32_t))); #pragma omp parallel for (i = 0;i < size;i++){uint32_t }= 0[t、 t = uint32];t = uint32_s = 0[t};t = uint32] 对于(i = 0;i < size;i++){ sum += data[i]; } return sum; }
//返回值应为0,但结果不是0。 这意味着 s 的结构未正确初始化为0。 这不是预期行为 uint32_t omp_test2 (uint32_t *数据、uint32_t 大小){ uint32_t i; memset (data、0、size * sizeof (uint32_t))); #pragma omp parallel for (i = 0;i < size;i++){ = uint32_t };t =.structure = 0;t = uint32_t = t = t + t = t};t = uint32_t = t = t = t 对于(i = 0;i < size;i++){ sum += data[i]; } return sum; }
我尝试了这些函数、并在最新的 ProcSDK 发行环境(版本03.03.00)中重新创建了 C6678 EVM 上的问题。 此外、我尝试了最新的编译器版本(v8.2)、但问题仍然存在。 您是否有任何建议来解决此问题? 请注意、提供这些函数只是为了重新创建问题、客户使用的实际 omp 函数看起来不同、但在其原始 omp 函数中看到了相同的问题(初始化在"omp parallel for "范围内不正确)。
此致、
Naoki