intel compiler的表现
好久没弄这个东西,今天突然想试下,代码没写完,以后补。
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
- #include <Windows.h>
- #define M 1024
- float matA[M][M];
- float matB[M][M];
- float matC[M][M];
- void InitMatrix( float* matrixX )
- {
- register int i;
- for ( i = ; i < M * M; i ++ )
- {
- *matrixX ++ = ( float )( rand() % ) / ;
- }
- }
- void MulMatrix( float* matrixA, float* matrixB, float* matrixC )
- {
- register int i, j, k;
- register float* p, *q, f;
- for ( j = ; j < M; j ++ )
- {
- for ( i = ; i < M; i ++ )
- {
- p = matrixA + j * M;
- q = matrixB + i;
- f = ;
- for ( k = ; k < M; k ++ )
- {
- f += *p * *q;
- p ++;
- q += M;
- }
- matrixC[j * M + i] = f;
- }
- }
- }
- int main()
- {
- DWORD t;
- //register int i, j;
- srand( ( unsigned int )time( NULL ) );
- InitMatrix( ( float* )matA );
- InitMatrix( ( float* )matB );
- t = ::GetTickCount();
- MulMatrix( ( float* )matA, ( float* )matA, ( float* )matC );
- t = ::GetTickCount() - t;
- /*for ( j = 0; j < M; j ++ )
- {
- for ( i = 0; i < M; i ++ )
- {
- printf( "%.2f ", matC[j][i] );
- }
- printf( "\n" );
- }*/
- printf( "TIME:%d\n", t );
- return ;
- }
机器配置E3 1231V3 MEM:16G VS2010SP1 ICC 2015XE GTX660 将来把CUDA带来一起测下
1. CPU单线程 仅一个O2
4750ms 大体如此
多线程原来测过,这次代码没加上。 按物理核计算 4核 应该6秒左右 超线程估计会好些。应该能到5秒左右。
2. 单文件转为ICC编译 额外添加优化项/Qipo /Qparallel
2600ms左右
多线程依然没测,以后补
3. CUDA也没测
4.MKL没测。。 有点对不住这个CPU了。。呵呵,心血来潮,以后一定补上。
5. 比较搞笑的是,我在收工的时候突发奇想,要把MatrixC相关代码改为本地,试下有没有效果,这个还真有,平均少100ms
看来,高手们教的CACHE命中还是很有道理的。
上面代码是改后的,改之前为
- void MulMatrix( float* matrixA, float* matrixB, float* matrixC )
- {
- register int i, j, k, t;
- register float* p, *q;
- for ( j = ; j < M; j ++ )
- {
- for ( i = ; i < M; i ++ )
- {
- p = matrixA + j * M;
- q = matrixB + i;
- t = j * M + i;
- matrixC[t] = ;
- for ( k = ; k < M; k ++ )
- {
- matrixC[t] += *p * *q;
- p ++;
- q += M;
- }
- }
- }
- }
6. 更搞笑的是,把q += M; 中的M改为100.。。。。竟然变为了原来的1/10
难道也是CACHE。。
intel compiler的表现的更多相关文章
- [boost] build boost with intel compiler 16.0.XXX
Introduction There are few information about how to compile boost with Intel compiler. This article ...
- [Boost] 1.57.0 with VS2013 + Intel compiler
The compiled version can be found below. Do not foget to give me a star. :) http://pan.baidu.com/s/1 ...
- 使用Intel编译器获得一致的浮点数值计算结果
使用Intel编译器获得一致的浮点数值计算结果大多数十进制的浮点数, 用二进制表示时不是完全一致的; 与此同时, 大多数与浮点数值相关的计算结果, 存在着固有的不确定性.通常, 编写浮点计算应用软件希 ...
- 记intel杯比赛中各种bug与debug【其一】:安装intel caffe
因为intel杯创新软件比赛过程中,并没有任何记录.现在用一点时间把全过程重演一次用作记录. 学习 pytorch 一段时间后,intel比赛突然不让用 pytoch 了,于是打算转战intel ca ...
- [转帖]双剑合璧:CPU+GPU异构计算完全解析
引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得 ...
- mysql 5.7.17发布
Mysql 5.7.17发布了,主要修复: Changes in MySQL 5.7.17 (2016-12-12, General Availability) Compilation Notes M ...
- Ceph性能优化总结(v0.94)
优化方法论 做任何事情还是要有个方法论的,“授人以鱼不如授人以渔”的道理吧,方法通了,所有的问题就有了解决的途径.通过对公开资料的分析进行总结,对分布式存储系统的优化离不开以下几点: 1. 硬件层面 ...
- x265编译
x265 HEVC Encoder Mission Statement Online documentation Mailing list x265-devel@videolan.org HOWTO ...
- openMP的一点使用经验【非原创】
按照百科上说的,针对于openmp的编程,最简单的就是在开头加个#include<omp.h>,然后在后面的for上加一行#pragma omp parallel for即可,下面的是较为 ...
随机推荐
- 51Nod 1967 路径定向 —— 欧拉回路
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1967 显然是欧拉回路问题,度数为奇数的点之间连边,跑欧拉回路就可以 ...
- bzoj2989
坐标轴转化+cdq分治 我们发现那个绝对值不太好搞,于是我们把曼哈顿距离转为切比雪夫距离,x'=x-y,y'=x+y,这样两点之间距离就是max(|x1'-x2'|,|y1'-y2'|),这个距离要小 ...
- 【高德地图API】SDK v1.1.1 在代码中设置Map中心点Center级别不起作用
有时候你在初始化地图时不是直接在xaml中设置Map的Center,而是在cs代码中设置Center或者设置SetZoomAndCenter改变中心点和缩放级别.你可能会发现,不起作用. 这边提出的解 ...
- Vigenère密码 2012年NOIP全国联赛提高组(字符串模拟)
P1079 Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简 ...
- 使用Gitalk实现静态页面评论的功能
使用静态页面的理由 本人在Github上使用github.io部署了一个静态主页,地址是http://aopstudio.github.io,用于存放一些笔记文件.虽然静态页面功能少,自动化程度低,不 ...
- c++编程中处理char和wchar_t的好工具
/* ttype.h sdragonx 2015-02-18 18:32:43 这个几个模版函数是为了处理ansi或unicode,使字符串值或者字符串函数能够在模版中使用 2018/7/26 23: ...
- kafka启动时出现FATAL Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) java.io.IOException: Permission denied错误解决办法(图文详解)
首先,说明,我kafk的server.properties是 kafka的server.properties配置文件参考示范(图文详解)(多种方式) 问题详情 然后,我启动时,出现如下 [hadoop ...
- 窗体基础WINFORM
winform 1.窗体: 造窗体界面: 窗体设计界面: 窗体类名不能重复! 属性: acceptbutton:回车是默认点击按钮 cancelbutton:按esc按键式默认的按钮 backcolo ...
- 树莓派zero_w设置中文(已成功)
树莓派默认是采用英文字库的,而且系统里没有预装中文字库,所以即使你在locale中改成中文,也不会显示中文,只会显示一堆方块.因此需要我们手动来安装中文字体. 好在有一个中文字体是免费开源使用的.ss ...
- js中时钟表盘
1.js时钟表盘 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...