fortran - 在 OpenMP 中并行排列相同形状和大小的 fortran 数组
问题描述
我想问一下openMP是否能够使用简单的符号并行化具有相同形状和大小的fortran数组。我做了一些研究,但我无法找到或弄清楚这是否可能。
我将以下形式称为简单符号:
a = b + c * 1.1
在下面找到一个完整的例子:
PROGRAM Parallel_Hello_World
USE OMP_LIB
implicit none
integer, parameter :: ILEN = 1000
integer :: a(ILEN,ILEN), b(ILEN,ILEN), c(ILEN,ILEN), d(ILEN,ILEN)
integer :: i, j
a = 1
b = 2
!$OMP PARALLEL SHARED(a, b, c, d)
!$OMP DO
DO i=1,ILEN
DO j=1, ILEN
c(j,i) = a(j,i) + b(j,i) * 1.1
ENDDO
END DO
!$OMP END DO
# is this loop parallel?
d = a + b * 1.1
!$OMP END PARALLEL
write (*,*) "Total C: ", c(1:5, 1)
write (*,*) "Total D: ", d(1:5, 1)
write (*,*) "C same D? ", all(c == d)
END
d循环是否使用当前符号与 openMP 并行化?
解决方案
推荐阅读
- google-cloud-platform - 如何通过控制台启动 Datalab?
- sql-server - “从字符串转换日期和/或时间时转换失败。” 错误
- python - pytest - 向所有或标记的测试函数添加断言
- angular - POST请求后获取变量的值
- azure-devops - 在 VSTS 发布管理中重命名发布
- regex - 记事本++中带有XML的正则表达式
- apache-spark - Spark 2 - 第二次(第三次......)尝试重用已经兑现的数据还是从头开始?
- angular - 类型 jQuery 上不存在属性 src
- reactjs - 如何在 React 中使用 Formik 的自定义输入?
- sql - 如何在sql server的where子句中应用case?