6 USST_Coder

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 38w+

CPU性能优化系列——矩阵转置(零)概述

打算写一个矩阵转置分别在CPU和GPU平台的性能优化的系列,在最开始把测试环境等一些基本情况交代清楚。机器配置为了方便性能对比,介绍一下我的测试机器配置。CPU Intel 9900k,程序主要与主频和缓存密切相关,参考如下:优化情况CPU平台上对(1024 * 1024)1M大的矩阵转置,执行情况如下:优化手段执行时间(ms)原始2.68945写内存连续1.5498写内存连续+分块0.605469写内存连续+分块+内存填充0.367188

2020-08-08 11:21:55

CUDA C编程权威指南第二章 编程模型

2020-08-08 00:13:29

CPU性能优化系列——矩阵转置(四)OpenMP并行计算

C++版本c++版本并行化实现unsigned char* pSource; pSource = (unsigned char*)malloc(sizeof(unsigned char) * NREALCOL * NROW); for (int irow = 0; irow < NROW; ++irow) { memset(pSource + irow * NREALCOL, irow % 256, sizeof(unsigned char) * NREALCOL);//按照字节

2020-08-05 16:24:19

CPU性能优化系列——矩阵转置(三)内存填充避免缓存抖动

在上一篇博客 CPU性能优化系列——矩阵转置(二)循环分块优化缓存访问 中通过循环分块方法,分析并优化了缓存的访问,使性能得到提升。同时通过VTune抓包分析了代码执行情况。看起来Cache命中情况很好。可实际缓存真的没有优化空间了吗?也不见得。本篇根据《深入理解计算机系统》中缓存篇介绍的映射规则,在缓存映射方面做进一步优化。以分块优化版本为Base,通过对pSource数据进行内存填充处理,使pSource的访问内存映射不集中在一个缓存组中,避免缓存抖动问题。优化后执行情况:1024 * 1024

2020-08-05 15:58:34

CPU性能优化系列——矩阵转置(二)循环分块优化缓存访问

在上一篇博客 CPU性能优化系列——矩阵转置(一)访存方式造成的性能差异 中,为了说明CPU缓存一致性算法对写内存和读内存的差异,只是单纯构造一个内存操作对称的矩阵转置实现方式,其中分块与内存访问的步长并非是最合理的。本篇将基于上一篇博客的实现方式,根据L1 Data Cache的结构,对访问缓存方式做进一步优化。代码实现...

2020-07-31 11:15:13

内存Prefetch

最近在用vtune分析程序性能瓶颈时,发现一些内存访问的地方竟然成了cpu热点。经过仔细分析,发现这些热点主要是对大数组非连续位置的访问的引起的。比较消耗cpu的原因应该是cache不命中。因为像这样局部性很差的内存访问逻辑,对cache是很不友好的。于是想到了prefetch……x86(以及其他很多体系结构)的CPU提供了prefetch系列指令,用于将指定地址的内存预取到cache。如”prefetcht0 (...

2020-07-27 23:41:47

CPU性能优化系列——矩阵转置(五)Intrinsic函数详解

本篇详细介绍编译器提供Intrinsic函数的具体功能,为下一篇通过Intrinsic函数实现矩阵转置做铺垫。Intrinsic函数详解__m128i _mm_unpacklo_epi8 (__m128i a, __m128i b)#include <emmintrin.h>Instruction: punpcklbw xmm, xmmCPUID Flags: SSE2DescriptionUnpack and interleave 8-bit integers from the

2020-07-27 19:14:09

CPU性能优化系列——矩阵转置(一)访问内存方式带来的性能差异

矩阵转置代码实现说明:实现两种矩阵转置方法,其中测试平台9900k,为了让程序执行时间足够长,重复执行代码1024次。矩阵尺寸1024*1024。将矩阵按照128X128分块转置处理。每个块内部分别按照方式 按行索引读取和按列索引写 与 按列索引读和按行索引写 实现,即方法一 写行连续,方法二 读连续。int main(int argc, char* argv[]){#define NROW 1024#define NCOL 1024#define NSLICE NROW*NCOL#defin

2020-07-27 15:45:07

CPU性能优化系列——矩阵转置(六)Intrinsic实现转置

namespace TTranspose {#define NROW 1024#define NCOL 1024#define NSLICE 1024*1024#define REPEAT 1024//#define REPEAT 1 void Verify(unsigned char* pSource, unsigned char* pTarget) { for (int i = 0 ; i < NSLICE; ++i) { if (pSource[i] != pTa

2020-07-20 15:34:23

Intrinsic RGB2Y

void SdV3(unsigned char* pRGB, unsigned char* pOut) { __m128i RBGW0 = _mm_setr_epi16(B_WT, G_WT, R_WT, B_WT, G_WT, R_WT, B_WT, G_WT); __m128i RBGW1 = _mm_setr_epi16(G_WT, R_WT, B_WT, G_WT, R_WT, B_WT, G_WT, R_WT); __m128i RBGW2 = _mm_setr_epi16(R_WT

2020-07-17 09:49:23

Instructions Retired:

Instructions Retired:This event indicates the number of instructions that retired or executed completely. 执行完的指令个数This does not include partially processed instructions executed due to branch mispredictions.不包括由于分支预测失败而部分执行的指令。表示消耗的指令数,计数执行过程中消耗的指令数。说

2020-07-16 13:48:31

CS 学习思路

作者:朱佳顺链接:https://www.zhihu.com/question/36149122/answer/66366304来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。quora上有道类似的问题,问的是如何才能增强数据结构和算法的能力,robert love(《Linux Kernel Development》的作者)的答案我认为写得非常好,其中也回答了题主的“是否需要背下来rbtree的实现”,链接在这里:Robert Love’s answer to How

2020-06-26 23:02:08

机器学习面试

BAT机器学习面试1000题系列整理:July、元超、立娜、德伟、贾茹、王剑、AntZ、孟莹等众人。本系列大部分题目来源于公开网络,取之分享,用之分享,且在撰写答案过程中若引用他人解析则必注明原作者及来源链接。另,不少答案得到寒小阳、管博士、张雨石、王赟、褚博士等七月在线名师审校。说明:本系列作为国内首个AI题库,首...

2020-06-19 22:55:07

Linux--Date命令查看及修改系统时间

查看Linux系统当前时间。命令: date +回车修改Linux系统当前时间。1.不修改年的情况:命令: date 月日时分.秒 --注意每个单位都是两位数,例如 date 05241636.002.修改年月日:命令: date -s “年/月/日” 或 date -s “年-月-日” --例如 date -s “2018-05-24”3.修改时分秒:命令: date -s 时:分:秒 --例如: date -s “16:36:00”4.修改全部:命令: date

2020-06-19 16:06:30

王爽汇编语言 思维导图

简要将关注的内容整理

2020-06-17 23:01:37

安装matlab弹出 DVD 1 并插入 DVD 2 以继续的问题

安装matlab iso时遇到该问题,处理如下:1.更新当前目录至此电脑2.将Matlab相关的 DVD驱动器全部弹出3.更新至matlab iso文件目录,双击剩余的未安装的文件4.安装界面点击继续,安装继续进行

2020-06-17 13:47:30

dpkg软件管理

在此记录dpkg 管理软件常用参数查看具体参数含义dpkg --help安装.deb软件包dpkg -i codemeter-lite_6.60.2884.502_amd64.deb以一定的关键字筛选出已经安装的软件dpkg -l |grep codemeter-lite卸载软件dpkg -P codemeter-lite...

2020-06-15 16:44:14

linux cp同一路径下的多个文件

RTcp ./{startup.sh,UID_127287205483680_NoiseDecorMatrix.dat} ./1/注意,{中文件不要加空格}

2020-06-09 17:26:32

bad interpreter问题

一、问题描述      1)在windows上编译好项目,拷贝到linux并启动命令,报如下错误:二、原因     1).sh脚本在windows系统下编写的,所以可能有不可见字符,从上图错误提示来看...

2020-06-09 17:20:35

vs 配置汇编开发环境

本文为转载文,来源于[https://blog.csdn.net/MaxWoods/article/details/44649685]但是因为原博文的图片不知道...

2020-05-25 11:23:38

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享学徒
    分享学徒
    成功上传1个资源即可获取