我一直在网上搜索,但我仍然对此话题感到困惑.谁能更清楚地解释这个?我来自航空航天工程背景(不是计算机科学专业),所以当我在网上阅读有关OpenMP/CUDA等的内容时.和多线程我真的不太了解所说的很多内容.
我目前正在尝试并行化用FORTRAN编写的内部CFD软件.这些是我的疑惑:
OpenMP使用来自CPU的多个线程共享工作负载.它可以用来让GPU也能完成一些工作吗?
我读过OpenACC.它是否类似于OpenMP(易于使用)?
我也读过有关CUDA和内核的内容,但我对并行编程没有太多经验,而且我对内核的内容并不了解.
你能给我一个"傻瓜"类型的答案吗?
我试图检查整数A的一维数组是否包含,在它的每一个大小(A)位置,整数集合S(也是一维数组)的任何元素,一般情况是尺寸(S)> 1.
简单明了的方法是执行以下嵌套循环:
DO i = 1, size(A)
DO j = 1, size(S)
IF(A(i) == S(j)) ** do something **
ENDDO
ENDDO
Run Code Online (Sandbox Code Playgroud)
问题是,对于大型阵列A和S,此过程效率非常低.是否有一个内在的FORTRAN子例程或函数可以更快地执行此操作?还是其他方法?
我试图做以下,但它不想编译:
DO i = 1, NNODES
IF(A(i) == ANY(S)) ** do something **
ENDDO
Run Code Online (Sandbox Code Playgroud)
出现的错误消息如下:" error #6362: The data types of the argument(s) are invalid.
"我正在使用VS2010和Intel Parallel Studio 2013.