SIMD和多核心编程时的一些总结。
来源:互联网 发布:知的草书写法 编辑:程序博客网 时间:2024/05/01 10:49
1 在计算过程中不涉及输出内存的数据时,应使用_mm*_stream_*(直接写入内存)代替_mm*_store_*,例如:
for( i=0; i<256; i+=4 )
{
ymm0=_mm256_load_pd(a+i);
ymm1=_mm256_load_pd(b+i);
ymm2=_mm256_add_pd(ymm0,ymm1);
_mm256_stream_pd(c+i,ymm2);
}
若计算过程中还要使用输出内存中的数据,则应使用_mm*_store_*,例如:
for( i=0; i<256; i+=4 )
{
ymm0=_mm256_load_pd(a+i);
ymm1=_mm256_load_pd(b+i);
ymm2=_mm256_load_pd(c+i);
ymm3=_mm256_add_pd(ymm2,_mm256_mul_pd(ymm0,ymm1));
_mm256_store_pd(c+i,ymm3);
}
2 多个核心之间共享数据的使用时间应尽可能的靠近,这样可以比较充分的利用L3共享缓存提高带宽。
3 如果同时使用SIMD和MC,则应该先进入BIOS关掉超线程,默认情况下每个核心有两个线程,但却只有一组物理SIMD寄存器。这样多个线程之间就会存在额外的上下文切换开销,往往得不偿失。
4 有时候会重复使用某些小的数据块,而该数据块中的字节数不足以映射到整数个缓存行,为了避免缓存行被使用前就被污染使用固定大小的数组+PADD扩展至整倍数的缓存行大小。
5 有些情况下,同时使用SIMD和MC的性能甚至不如只使用SIMD或者MC,这时应优先考虑SIMD,应为其更轻量级,且不存在多个核心之间的同步开销。
- SIMD和多核心编程时的一些总结。
- SIMD 编程的优势
- SIMD 编程的优势
- 多核多线程编程的一些基础知识
- 关于多核的一些概念和区别
- 关于多核的一些概念和区别
- 关于多核的一些概念和区别
- Intel 平台编程总结----SIMD技术
- Intel 平台编程总结----SIMD技术
- Intel 平台编程总结----SIMD技术
- simd编程
- iOS的多核编程和内存管理
- iOS的多核编程和内存管理
- iOS 的多核编程和内存管理
- iOS 的多核编程和内存管理
- iOS-的多核编程和内存管理
- iOS 的多核编程和内存管理
- iOS 的多核编程和内存管理
- 剑指OFFER
- ios模拟器中应用程序的安装位置
- linux shell脚本文件执行分析
- MAX3421E版本1和2主机OUT传输
- Autotools上手指南Autotools上手指南1——autoconf基本思想
- SIMD和多核心编程时的一些总结。
- js,java变量使用
- oracle 10g新建索引ORA-25150 不允许对区参数执行
- 从inode角度描述cp,mv,rm行为
- opengl glsl 深度计算
- 七夕在相爱人的眼中也是普通的一天 。
- 线程安全
- ural 1713
- 辞职申请书[转载]