- 主题:编译器自己好像生成了SIMD指令,需要重写优化么
之前的代码都是
for ...
for....
纯嵌套循环实现的,1024x1024的数据和图像处理
用-O2编译了一下看汇编好像gcc已经生成了simd的指令
不过性能还是不够好
有没有必要自己重新用avx优化一道?会不会比原有的版本性能强很多?
或者上openmp试试?
我很纠结,因为实在不行就直接上cuda算了,cuda我还会点simd我反正也没怎么搞过还要
一边学一边写,万一搞出来跟现在的这个版本差不多,感觉也浪费精力了
--
FROM 171.83.95.*
看你算法了
比如2D convolution,separate一下变成1d convolution, 那可以做到比编译器优化的好
能上gpu当然更好了。simd才几通道
【 在 libgcc 的大作中提到: 】
: 之前的代码都是
: for ...
: for....
: ...................
--
FROM 162.156.156.*
OpenMP is way better than avx...
【 在 libgcc 的大作中提到: 】
: 之前的代码都是
: for ...
: for....
: ...................
--
FROM 142.59.143.*
openmp的simd现在发展怎么样了?有人比较研究过吗?
【 在 iFighter 的大作中提到: 】
:
: OpenMP is way better than avx...
:
: --
发自「今日水木 on iPhone X」
--
FROM 223.104.38.*
有的地方有不错的效果...
很多时候完全没有效果...
你的程序看起来很容易并行
如果内存分布比较合理 基本上几个内存通道就可以几倍加速...
【 在 USPLA 的大作中提到: 】
: openmp的simd现在发展怎么样了?有人比较研究过吗?
: 发自「今日水木 on iPhone X」
--
FROM 142.59.143.*
1. 用intrinsic可能比编译器自动向量化好,也可能不好,取决于intrinsic的水平
2.omp和simd不矛盾,用omp可能好也可能不好,取决于parallel for部分执行时间与总时间的关系
3.cuda simd是个啥意思?nv gpu的cuda core是个scalar的吧,是simt模型,没有向量化计算单元
【 在 libgcc 的大作中提到: 】
: 之前的代码都是
:
: for ...
: ....................
- 来自「最水木 for iPhone Xs」
--
FROM 124.64.19.*
我咋觉得openmp没啥用。。。
可能我这就4个核看不出来
其实我是想问openmp4.0也有simd的优化,这个跟gccO2实现的simd优化 区别大不大
【 在 iFighter 的大作中提到: 】
: OpenMP is way better than avx...
:
--
FROM 171.83.95.*
我是说要么cuda要么上simd/avx,二选一
cuda性能应该没问题,就是我们很多开发机没显卡,测试要上样机才行,麻烦
【 在 baiwife 的大作中提到: 】
: 1. 用intrinsic可能比编译器自动向量化好,也可能不好,取决于intrinsic的水平
: 2.omp和simd不矛盾,用omp可能好也可能不好,取决于parallel for部分执行时间与总时间的关系
: 3.cuda simd是个啥意思?nv gpu的cuda core是个scalar的吧,是simt模型,没有向量化计算单元
: ...................
--
FROM 171.83.95.*
建议gcc -O3,不行就把关键循环拿出来汇编写。
换成cuda程序会改动很大,而且不一定快。不过既然对性能有追求,试一试也不妨的。
【 在 libgcc (巭孬嫑夯昆勥茓) 的大作中提到: 】
: 之前的代码都是
: for ...
: for....
: 纯嵌套循环实现的,1024x1024的数据和图像处理
: 用-O2编译了一下看汇编好像gcc已经生成了simd的指令
: 不过性能还是不够好
: 有没有必要自己重新用avx优化一道?会不会比原有的版本性能强很多?
: 或者上openmp试试?
: 我很纠结,因为实在不行就直接上cuda算了,cuda我还会点simd我反正也没怎么搞过还要
: 一边学一边写,万一搞出来跟现在的这个版本差不多,感觉也浪费精力了
--
FROM 114.87.16.*
cuda要啥simd, 本身就是向量计算
【 在 baiwife 的大作中提到: 】
: 1. 用intrinsic可能比编译器自动向量化好,也可能不好,取决于intrinsic的水平
: 2.omp和simd不矛盾,用omp可能好也可能不好,取决于parallel for部分执行时间与总时间的关系
: 3.cuda simd是个啥意思?nv gpu的cuda core是个scalar的吧,是simt模型,没有向量化计算单元
: ...................
--
FROM 162.156.156.*