multithreading - 如何使用-2依赖项制作docross循环
问题描述
我有 OpenMP 的问题。我必须做docross循环。例如:
for (int i = 1; i < SIZE-2; i++) {
for (int j = 2; j < SIZE-2; j++) {
tab[i][j] = tab[i][j+2] + tab[i+2][j-2];
}
}
在这里我依赖于 j-2、j+2 和 i+2,我不知道如何解决这种依赖关系。
解决方案
您可以尝试以下方法:
#pragma omp parallel for ordered(2)
for (int i = 1; i < SIZE-2; i++) {
for (int j = 2; j < SIZE-2; j++) {
#pragma omp ordered depend(sink:i,j+2) depend(sink:i+2,j-2)
tab[i][j] = tab[i][j+2] + tab[i+2][j-2];
#pragma omp ordered depend(source)
}
}
推荐阅读
- teamcity - 如何使用 teamcity 运行并行 cypress 测试
- google-cloud-dataflow - 谷歌云数据流自动缩放不起作用
- android - 任务“:app:transformClassesAndResourcesWithR8ForDebug”问题执行失败
- java - 固定大小的长数组的运行时间
- java - 如何获取具有特定格式的子字符串
- java - 内置短方法来获取 Hashmap 的键数组,按它们在 Java 中的值排序
- aws-glue - Aws Glue:如何持久化 DynamicFrame
- python - django 从 mysql 数据库中检索数据
- r - 为什么“$”自动补全适用于 BioConductor 的 S4 类“SummarizedExperiment”
- ios - iOS是否存储exif数据,iOS中是否有从照片中读取位置数据的新方法?