- 主题:编译器自己好像生成了SIMD指令,需要重写优化么
之前的代码都是
for ...
for....
纯嵌套循环实现的,1024x1024的数据和图像处理
用-O2编译了一下看汇编好像gcc已经生成了simd的指令
不过性能还是不够好
有没有必要自己重新用avx优化一道?会不会比原有的版本性能强很多?
或者上openmp试试?
我很纠结,因为实在不行就直接上cuda算了,cuda我还会点simd我反正也没怎么搞过还要
一边学一边写,万一搞出来跟现在的这个版本差不多,感觉也浪费精力了
--
FROM 171.83.95.*
我咋觉得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.*
那汇编我看不懂,只能看懂是不是avx指令
-O2-O3都有avx指令,我也看不出来哪个流弊
自己写了个小例子测了下,O2O3也没测出啥区别,可能是我水平不行
【 在 javaboy 的大作中提到: 】
: 建议gcc -O3,不行就把关键循环拿出来汇编写。
: 换成cuda程序会改动很大,而且不一定快。不过既然对性能有追求,试一试也不妨的。
:
--
FROM 171.83.95.*
。。。你啥机器,我这4核8G内存,是不是没必要了
【 在 iFighter 的大作中提到: 】
: OpenMP 用得好 需要俩条件 1) 内存多通道; 2) 程序要考虑 ccNUMA...
: 我们大概可以做到十几二十倍的加速, 内存有12个通道...
:
--
FROM 119.103.114.*