好久没弄这个东西,今天突然想试下,代码没写完,以后补。

 #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的表现的更多相关文章

  1. [boost] build boost with intel compiler 16.0.XXX

    Introduction There are few information about how to compile boost with Intel compiler. This article ...

  2. [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 ...

  3. 使用Intel编译器获得一致的浮点数值计算结果

    使用Intel编译器获得一致的浮点数值计算结果大多数十进制的浮点数, 用二进制表示时不是完全一致的; 与此同时, 大多数与浮点数值相关的计算结果, 存在着固有的不确定性.通常, 编写浮点计算应用软件希 ...

  4. 记intel杯比赛中各种bug与debug【其一】:安装intel caffe

    因为intel杯创新软件比赛过程中,并没有任何记录.现在用一点时间把全过程重演一次用作记录. 学习 pytorch 一段时间后,intel比赛突然不让用 pytoch 了,于是打算转战intel ca ...

  5. [转帖]双剑合璧:CPU+GPU异构计算完全解析

    引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得 ...

  6. mysql 5.7.17发布

    Mysql 5.7.17发布了,主要修复: Changes in MySQL 5.7.17 (2016-12-12, General Availability) Compilation Notes M ...

  7. Ceph性能优化总结(v0.94)

    优化方法论 做任何事情还是要有个方法论的,“授人以鱼不如授人以渔”的道理吧,方法通了,所有的问题就有了解决的途径.通过对公开资料的分析进行总结,对分布式存储系统的优化离不开以下几点: 1. 硬件层面 ...

  8. x265编译

    x265 HEVC Encoder Mission Statement Online documentation Mailing list x265-devel@videolan.org HOWTO  ...

  9. openMP的一点使用经验【非原创】

    按照百科上说的,针对于openmp的编程,最简单的就是在开头加个#include<omp.h>,然后在后面的for上加一行#pragma omp parallel for即可,下面的是较为 ...

随机推荐

  1. libnids 显示UDP数据报,编译,运行,正确。

    #include<stdio.h>#include<nids.h>#include<string.h>#include <sys/socket.h>#i ...

  2. Hibernate的表之间的关系

    表:A.B 一对多关系:A中的一个字段的记录(主键)引用B中的多个记录(外键) 多对一关系:A中的一个字段的记录(外键)引用B中的一个记录(主键) 一对一关系:A.B两个表的关联字段都是主键 多对多关 ...

  3. P2570 [ZJOI2010]贪吃的老鼠

    传送门 →_→唯一一篇能看得懂的题解---->这里 很容易想到二分+网络流,然而并没有什么卵用--出题人的思路太神了-- 首先考虑如果一块奶酪在同一时间可以被多只老鼠吃的话,该如何建图.首先不难 ...

  4. Akka源码分析-Cluster-DistributedData

    上一篇博客我们研究了集群的分片源码,虽然akka的集群分片的初衷是用来解决actor分布的,但如果我们稍加改造就可以很轻松的开发出一个简单的分布式缓存系统,怎么做?哈哈很简单啊,实体actor的id就 ...

  5. [转]How can I get my webapp's base URL in ASP.NET MVC

    本文转自:http://stackoverflow.com/questions/1288046/how-can-i-get-my-webapps-base-url-in-asp-net-mvc May ...

  6. iPhone4到iPhone6的设计、制造工艺历程浅析

    这里就阐述一下我对这几个手机在设计和制造工艺上的一些看法. 这 5 个型号概括起来就三个外观: iPhone4 的三明治夹心设计. iPhone5 的三段式铝合金一体成型. iPhone6 的全金属一 ...

  7. Selenium IDE的第一个测试用例——路漫长。。。

    一周时间过去了,断断续续学习selenium也有几个小时了:今天细想一下学习效率不高的原因在哪,总结出以下几点: 1.求“进”心切——总想一步到位,搭建好环境,开始动手写用例. 2.学习深度不够——同 ...

  8. 重构27-Remove God Classes(去掉神类)

    在传统的代码库中,我们常常会看到一些违反了SRP原则的类.这些类通常以Utils或Manager结尾,有时也没有这么明显的特征而仅仅是普通的包含多个功能的类.这种God类还有一个特征,使用语句或注释将 ...

  9. hashtable的用法

    C#中哈希表(HashTable)的用法详解 1.  哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器 ...

  10. Farseer.net轻量级开源框架 中级篇:自定义配置文件

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 ...