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即可,下面的是较为 ...
随机推荐
- flask request 获取json内容2种方式
# -*- coding: utf-8 -*-from flask import request, jsonify, json, Moduleimport loggingfrom web.utils. ...
- 第十五周 Leetcode 517. Super Washing Machines(HARD) 贪心
Leetcode517 很有趣的一道题 由于每一步可以任选某些数字对它们进行转移,所以实际上是在求最优解中的最复杂转移数. 那么我们考虑,到底哪一个位置要经过的流量最大呢? 枚举每个位置,考虑它左边的 ...
- Spark GraphX 聚合操作
package Spark_GraphX import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.graph ...
- CodeForces 382C Arithmetic Progression (排序+分类讨论)
题意:给出一个长度为n的序列,表示有n张卡片,上面的数字,现在还有一张卡片,上面没有数字,问说可以写几种数字在这张卡片上面, 使得n+1张卡片上的数字可以排列成一个等差数列,有无限多种时输出-1. 析 ...
- /bin/bash: jar: command not found(转载)
转自:http://blog.csdn.net/zhangdaiscott/article/details/23138023 /bin/bash: jar: command not found 解决办 ...
- bzoj 1630: [Usaco2007 Demo]Ant Counting【dp】
满脑子组合数学,根本没想到dp 设f[i][j]为前i只蚂蚁,选出j只的方案数,初始状态为f[0][0]=1 转移为 \[ f[i][j]=\sum_{k=0}^{a[i]}f[i-1][j-k] \ ...
- crosswalk 初步使用
这里简单的说下 crossWalk 的配置; 我在学习 crosswalk 的时候,看到一篇博客,他所记录的已经是很完整的教程了: 点击查看 本文就根据该博客和官网说明,进行部分修改,补充; 首先 c ...
- 洛谷 P3372 【模板】线段树 加法
题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...
- pyCharm最新激活码(2018)
1.修改hosts文件: 添加下面一行到hosts文件,目的是屏蔽掉Pycharm对激活码的验证 0.0.0.0 account.jetbrains.com windwos系统hosts文件路径为:C ...
- 378 Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素.请注意,它是排序后的第k小元素,而不是第k个元素.示例:matrix = [ [ 1, 5, 9], [ ...