使用GPU计算时,单精度float32类型和半精度float16类型运算效率的区别
最近在看资料时发现写着使用float16 半精度类型的数据计算速度要比float32的单精度类型数据计算要快,因为以前没有考虑过数据类型对计算速度的影响,只知道这个会影响最终的计算结果精度。于是,好奇的使用TensorFlow写了些代码,试试看看是否有很大的区别,具体代码如下:
import tensorflow as tf
import time x = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float32))
y = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float32))
#x = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float16))
#y = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float16))
init = tf.global_variables_initializer() with tf.Session() as sess:
sess.run(init) a = time.time()
for _ in range(500):
sess.run(tf.matmul(x,y))
b = time.time() print(b-a)
上述代码,分别使用单精度或半精度类型的x,y来进行计算。
分别使用RTX titan 和 RTX 2060super 两个类型的显卡分别测试:
RTX titan 显卡环境下:
Float32 , 单精度数据类型的x, y:
RTX titan 显卡环境下:
Float16 , 半精度数据类型的x, y:
-------------------------------------------------------------------------
RTX 2060super 显卡环境下:
Float32 , 单精度数据类型的x, y:
RTX 2060super 显卡环境下:
Float16 , 半精度数据类型的x, y:
======================================================
说下个人的结论:
1. 如果任务需要的计算能力在家用级别显卡的计算能力之下(显卡利用率在100%以内,不考虑显存的前提),那么家用级显卡计算时间不会比服务器级别显卡运算时间长。或者说,如果你的任务使用家用级别显卡可以应付,那么运行时间不会比使用服务器级别显卡的时间长。
2. 服务器级别的显卡运行效率受多方面的条件影响,同一任务多次运行的时间会有一定波动;而家用级别的显卡一般所受影响的方面较少,同一任务多次运行的时间也比较一致。
3.同一个任务可能使用服务器显卡,显卡的利用率可能只有40%,但是使用家用级别的显卡利用率可能就有99%了,证明服务器显卡的性能上限要远高于家用级别显卡。但是如果你的计算任务并没有那么高的计算性能要求,可能使用家用级别的显卡(此时,如果你在超个频啥的,oc版显卡)运算时间很可能要短于服务器级别显卡的运算时间的。
======================
使用GPU计算时,单精度float32类型和半精度float16类型运算效率的区别的更多相关文章
- JAVA中使用浮点数类型计算时,计算精度的问题
标题 在Java中实现浮点数的精确计算 AYellow(原作) 修改 关键字 Java 浮点数 精确计算 问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...
- Julia:高性能 GPU 计算的编程语言
Julia:高性能 GPU 计算的编程语言 0条评论 2017-10-31 18:02 it168网站 原创 作者: 编译|田晓旭 编辑: 田晓旭 [IT168 评论]Julia是一种用于数学计 ...
- GPU计算的后CUDA时代-OpenACC(转)
在西雅图超级计算大会(SC11)上发布了新的基于指令的加速器并行编程标准,既OpenACC.这个开发标准的目的是让更多的编程人员可以用到GPU计算,同时计算结果可以跨加速器使用,甚至能用在多核CPU上 ...
- 基于Flink秒级计算时CPU监控图表数据中断问题
基于Flink进行秒级计算时,发现监控图表中CPU有数据中断现象,通过一段时间的跟踪定位,该问题目前已得到有效解决,以下是解决思路: 一.问题现象 以SQL02为例,发现本来10秒一 ...
- GPU计算的十大质疑—GPU计算再思考
http://blog.csdn.NET/babyfacer/article/details/6902985 原文链接:http://www.hpcwire.com/hpcwire/2011-06-0 ...
- 使用Deeplearning4j进行GPU训练时,出错的解决方法
一.问题 使用deeplearning4j进行GPU训练时,可能会出现java.lang.UnsatisfiedLinkError: no jnicudnn in java.library.path错 ...
- OpenGL实现通用GPU计算概述
可能比較早一点做GPU计算的开发者会对OpenGL做通用GPU计算,随着GPU计算技术的兴起,越来越多的技术出现,比方OpenCL.CUDA.OpenAcc等,这些都是专门用来做并行计算的标准或者说接 ...
- 14、Java中用浮点型数据Float和Double进行精确计算时的精度问题
一.浮点计算中发生精度丢失 大概很多有编程经验的朋友都对这个问题不陌生了:无论你使用的是什么编程语言,在使用浮点型数据进行精确计算时,你都有可能遇到计算结果出错的情况.来看下面的例子. // 这是一个 ...
- (Matlab)GPU计算简介,及其与CPU计算性能的比较
1.GPU与CPU结构上的对比 2.GPU能加速我的应用程序吗? 3.GPU与CPU在计算效率上的对比 4.利用Matlab进行GPU计算的一般流程 5.GPU计算的硬件.软件配置 5.1 硬件及驱动 ...
- OpenCL入门:(二:用GPU计算两个数组和)
本文编写一个计算两个数组和的程序,用CPU和GPU分别运算,计算运算时间,并且校验最后的运算结果.文中代码偏多,原理建议阅读下面文章,文中介绍了OpenCL相关名词概念. http://opencl. ...
随机推荐
- 铭瑄B760 ITX 无法睿频 无法跑满
铭瑄B760 ITX 无法睿频 无法跑满 状况: 铭瑄B760 ITX + 12600K,跑分时,大核最高 3.7GHz,电压也不到1V.CPU-Z 跑分才600. 解决方法: 1.关机. 2.长按 ...
- 荣耀无5G开关,荣耀手机,荣耀80GT
荣耀无5G开关,荣耀手机,荣耀80GT. Magic OS 版本号是:7.0.0.138(C00E135R2P6). 解决方法: 1.进入设置-关于手机-连续点击7次版本号. 会提示,开发者选项已开启 ...
- (三)xpath爬取4K高清美女壁纸
功能:通过xpath爬取彼岸图网的高清美女壁纸 url = 'http://pic.netbian.com/4kmeinv/' 1. 通过url请求整张页面的数据 2.通过页面的标签定位图片所在的位置 ...
- Java正则表达式语法及简单示例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestMatcher { public st ...
- UE 5 NavMesh 烘培 逻辑流程
关于UE引擎层面的东西: 在向场景重拖入一个NavMeshBoundsVolume时(或者修改时). 会调用 void UNavigationSystemV1::PerformNavigation ...
- LED虚拟拍摄-跟踪算法
LED虚拟拍摄-跟踪算法 图引用拍摄黑科技,LED虚拟影棚揭秘 标定流程 上面是一台Track设备,现精度比较高的主要是Redspy,Mosys,一般影视用这二种,其底层技术参考SMAL单目+惯性传感 ...
- 实测52.4MB/s!全国产ARM+FPGA的CSI通信案例分享!
CSI总线介绍与优势 CSI(CMOS sensor parallel interfaces)总线是一种用于连接图像传感器和处理器的并行通信接口,应用于工业自动化.能源电力.智慧医疗等领域,CSI总线 ...
- CF1862G 题解
首先这个查询操作很迷,考虑先化简查询操作. 不难发现由于每次是加上一个逆的等差序列,因此一次操作完每个数与它的前驱之差一定会减少,因此加上等差序列的次数就等于全局每个数与它的前驱之差最大值. 又因为会 ...
- 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)
目录 系列教程总目录 概述 10.1 软件定时器的特性 10.2 软件定时器的上下文 10.2.1 守护任务 10.2.2 守护任务的调度 10.2.3 回调函数 10.3 软件定时器的函数 10.3 ...
- 创业型公司和BAT大厂招聘要求有什么不同?
背景 很多Java初学都关心这么一个问题,Java学到什么程度以后可以找到第一份工作.大家的目标都很明确,也很实在,学习Java无非就是为了找工作,那到底我要学多少Java知识,才可以找到第一份工作呢 ...