内存、时间复杂度、CPU/GPU以及运行时间
2016-09-07 12:33
711 查看
衡量 CPU 的计算能力:
比如一个 Intel 的 i5-2520M @2.5 Ghz 的处理器,
则其计算能力 2.5 * 4(4核) = 10 GFLOPS
FLOP/s,Floating-point operations per second,每秒峰值速度,
一个 MFLOPS(megaFLOPS)等於每秒一佰万(=10^6)次的浮点运算,
一个 GFLOPS(gigaFLOPS)等於每秒拾亿(=10^9)次的浮点运算,
一个 TFLOPS(teraFLOPS)等於每秒万亿(=10^12)次的浮点运算,
一个 PFLOPS(petaFLOPS)等於每秒千万亿(=10^15)次的浮点运算,
一个 EFLOPS(exaFLOPS)等於每秒百亿亿(=10^18)次的浮点运算。
如果 M = 1024,N = 512,
那么我们需要读取和存储的字节数是:
4 bytes * (1024*512 + 512 + 1024) = 2.1e+06
计算次数是:
1024*(512+512) = 1.0e+06
如果我们有块6 TFLOP/s 的 GPU,带宽 300GB/s 的内存,那么运行总时间是:
max{2.1e6 bytes /(300e9 bytes/s),1e6 FLOPs/(6e12 FLOP/s)}=max{7μs,0.16μs}
这意味着处理过程的瓶颈在于从内存中复制或向内存中写入消耗的7μs,而且使用更快的 GPU 也不会提升速度了。你可能会猜到,在进行矩阵-矩阵操作时,当矩阵/向量变大时,这一情况会有所好转。
比如一个 Intel 的 i5-2520M @2.5 Ghz 的处理器,
则其计算能力 2.5 * 4(4核) = 10 GFLOPS
FLOP/s,Floating-point operations per second,每秒峰值速度,
一个 MFLOPS(megaFLOPS)等於每秒一佰万(=10^6)次的浮点运算,
一个 GFLOPS(gigaFLOPS)等於每秒拾亿(=10^9)次的浮点运算,
一个 TFLOPS(teraFLOPS)等於每秒万亿(=10^12)次的浮点运算,
一个 PFLOPS(petaFLOPS)等於每秒千万亿(=10^15)次的浮点运算,
一个 EFLOPS(exaFLOPS)等於每秒百亿亿(=10^18)次的浮点运算。
0. 初步
局部变量即内存,也即空间复杂度;当某算法对空间复杂度也要求严格时,如果仍要存储某些局部变量,比如棋盘对应的二维数组,当棋盘的大小显著时,比如 210×210 此时就要考虑内存的问题,也即是否有必要维护这样的一份内存数据;1. 量化分析
假设我们将矩阵和一个向量相乘:如果 M = 1024,N = 512,
那么我们需要读取和存储的字节数是:
4 bytes * (1024*512 + 512 + 1024) = 2.1e+06
计算次数是:
1024*(512+512) = 1.0e+06
如果我们有块6 TFLOP/s 的 GPU,带宽 300GB/s 的内存,那么运行总时间是:
max{2.1e6 bytes /(300e9 bytes/s),1e6 FLOPs/(6e12 FLOP/s)}=max{7μs,0.16μs}
这意味着处理过程的瓶颈在于从内存中复制或向内存中写入消耗的7μs,而且使用更快的 GPU 也不会提升速度了。你可能会猜到,在进行矩阵-矩阵操作时,当矩阵/向量变大时,这一情况会有所好转。
相关文章推荐
- 获取安卓手机设备信息(cpu,手机内存,SD卡,运行内存,mac和开机时间)
- 【matlab】预分配内存提高运行效率以及时间比较
- 10种检测Python程序运行时间、CPU和内存占用的方法
- 常规波束形成的CPU和GPU的运行时间对比测试
- 转载:10种检测Python程序运行时间、CPU和内存占用的方法
- 10种检测Python程序运行时间、CPU和内存占用的方法
- caffe:单CPU(E2650)下--单GPU和双GPU(GTX 1080ti)下执行LeNet-5的mnist运行时间对比
- 关于clock()计算进程运行的时间以及time()
- C#实现测量程序运行时间及cpu使用时间
- C#实现测量程序运行时间及cpu使用时间
- 关于clock()计算进程运行的时间以及time()
- 动态规划求数组中和最大字串的值 以及 字符串的循环移位(要求空间复杂度O(1),时间复杂度O(n))
- 获得T-SQL 执行计划和IO,CPU运行时间
- 11如何精确计算出一个算法的CPU运行时间?
- OO 中的继承分析:主要分析在编译和运行过程中 子类、父类 的字段和方法以及实例化时候在内存中分配 和 执行的先后,以及两个原则
- Fortran77计算某段代码的CPU运行时间
- 程序运行时三种内存分配策略:静态的、栈式的、和堆式的,以及区别
- 获取页面运行时间以及数据库查询次数
- 百度笔试之1KB内存,1MHz处理器 运行最长时间 maxContinuNum
- C#实现测量程序运行时间及cpu使用时间(转载)