GCC和JVM自动平行批次
GCC and JVM auto parallel batch
考虑以下代码段。
//C
int arr[1024];
void fill_array(){
int len=sizeof(arr)/4;
int res;
for(int i=o;i<len;i++){
res;//=some big operation
arr[i]=res;
}
}
//J
private int[] arr=new int[1024];
void fill_array(){
int len=arr.length;
int res;
for(int i=o;i<len;i++){
res;//=some big operation
arr[i]=res;
}
}
假设每个循环只能初始化一个arr
的一个索引,并且对任何其他索引没有任何依赖性。就像arr[i]=i*2
一样。
我知道它应该由GPU或至少平行。
问题:
GCC编译器或JVM是否会平行处理(循环)并隐式处理?
如果是,是否有任何编译标志或可以关闭此功能的内容?
那里至少有一个实验性JVM,它正在处理GPU(graal)上的此类循环。我本人还没有尝试过,但是我听说几个月前它适用于简单循环 - 无论如何,对于此阶段的任何生产代码肯定是不可行的。
在事物的C侧,我知道ICC实际上确实进行了自动并行化,但仅适用于CPU。此外,这是非常善变的,由于次要代码或编译器版本的更改,它将"断开",因此,如果有效,它会更加好,但您确实不应该依靠它(或者如果您这样做,请确保相当一段时间以确保它仍然可以与每一个更改一起使用,如果没有代码)
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用gcc从静态链接的文件中查找可选符号
- 普通环路未使用gcc 4.8.5自动矢量化
- 有了gcc,是否可以链接库,但前提是它存在
- 在clang++预处理器中确定gcc工具链版本
- 为什么 gcc 编译这个而 msvc 没有
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何使用Clang/GCC在Mac上为C/C++设置VSCode
- GCC和JVM自动平行批次