Parallel processing 为什么openMP不支持C中的阵列缩减?

Parallel processing 为什么openMP不支持C中的阵列缩减?,parallel-processing,openmp,Parallel Processing,Openmp,在OpenMP 3.0中,Fortran语言中的归约支持特殊构造,而在C/C++中,归约则委托给程序员。我想知道这是否有一个特殊的原因,因为OpenMP 3.0是在2008年推出的,所以我认为在C/C++上实现它也足够了。是否有任何与C/C++相关的技术原因,为什么C/C++仍然不支持它?正如评论中提到的,OpenMP默认不支持阵列缩减的原因是它不知道阵列的大小。Fortran在默认情况下支持数组的缩减,因为它总是知道其数组的大小,无论是静态还是动态分配的。C/C++只知道静态数组的大小。为什么

在OpenMP 3.0中,Fortran语言中的归约支持特殊构造,而在C/C++中,归约则委托给程序员。我想知道这是否有一个特殊的原因,因为OpenMP 3.0是在2008年推出的,所以我认为在C/C++上实现它也足够了。是否有任何与C/C++相关的技术原因,为什么C/C++仍然不支持它?

正如评论中提到的,OpenMP默认不支持阵列缩减的原因是它不知道阵列的大小。Fortran在默认情况下支持数组的缩减,因为它总是知道其数组的大小,无论是静态还是动态分配的。C/C++只知道静态数组的大小。

为什么人们仍然使用Fortran?为什么在2014年很多人仍然使用ANSI C89限制,即使大多数C编译器使用的GNU89比C89更接近C99?@Zboson讽刺道:)我想我的问题还不清楚。我的意思是,C/C++不支持Fortran是否有任何特定的技术原因,这不是一个哲学问题。Fortran总是知道其数组的大小,无论是静态还是动态分配的。C/C++只知道静态数组的大小。@romantsegelskyi,我想赫里斯托·伊利耶夫回答了你的问题。顺便说一句,我没有投你反对票。但无论如何,你自己做一个数组缩减是很容易的。反正我经常用手工做裁减。@ Hrististiv非常感谢,这是我正在寻找的答案。正如一个侧面说明:OpenMP到3.1版本不允许在C和C++中使用聚合对象,包括数组,用于还原操作。OpenMP 4引入了在C++中使用重载运算符的类的能力,因此现在可以使用实现数组的类进行数组缩减,并同时加载<代码>运算符+()/CUT>来执行元素求和和<代码>运算符=())。