社区
CUDA高性能计算讨论
帖子详情
gpu进行浮点运算的精度问题
zjx1020
2010-07-08 05:54:51
两个矩阵对应位置的数据相乘,然后把每个相乘的结果加起来,∑a(i,j)*b(i,j)
gpu得到的结果与CPU的结果相差很大啊
但是int型数据结果是一样的,这是写的程序问题还是gpu硬件问题?
如果是硬件问题,那这样的运算不是不适合拿gpu来做了?误差太大了。。。
...全文
700
12
打赏
收藏
gpu进行浮点运算的精度问题
两个矩阵对应位置的数据相乘,然后把每个相乘的结果加起来,∑a(i,j)*b(i,j) gpu得到的结果与CPU的结果相差很大啊 但是int型数据结果是一样的,这是写的程序问题还是gpu硬件问题? 如果是硬件问题,那这样的运算不是不适合拿gpu来做了?误差太大了。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a4825966
2011-04-22
打赏
举报
回复
用定点化将浮点数转为整型
meppp
2010-07-21
打赏
举报
回复
[Quote=引用 8 楼 zjx1020 的回复:]
引用 7 楼 skfeng36 的回复:
两者有误差。
那不是大量浮点数据的运算不能用gpu运算了?
我观察了下,貌似7位数正确
8位数不一样
[/Quote]
那看来就是精度的问题,单精度浮点数有效数字位数是7个,双精度为13个左右。
beyond071
2010-07-16
打赏
举报
回复
浮点数累加误差可以使用Kahan summation algorithm算法来减小到可接受的范围
zjx1020
2010-07-12
打赏
举报
回复
[Quote=引用 7 楼 skfeng36 的回复:]
两者有误差。
[/Quote]
那不是大量浮点数据的运算不能用gpu运算了?
我观察了下,貌似7位数正确
8位数不一样
开飞机的贝塔塔
2010-07-12
打赏
举报
回复
两者有误差。
无心人_过过小日子
2010-07-12
打赏
举报
回复
[Quote=引用 8 楼 zjx1020 的回复:]
引用 7 楼 skfeng36 的回复:
两者有误差。
那不是大量浮点数据的运算不能用gpu运算了?
我观察了下,貌似7位数正确
8位数不一样
[/Quote]
要修改算法。注意计算误差。
关于计算误差的详细讨论可以看经典的《计算机程序设计艺术第二版第二卷》。
无心人_过过小日子
2010-07-09
打赏
举报
回复
[Quote=引用 2 楼 zjx1020 的回复:]
引用 1 楼 l7331014 的回复:
浮点精度问题?大家强制用单精度,看看差别是否很大.
CPU上浮点计算是80位的.而gpu上单精度才32位,双精度才64位.
就是float
差别很大
[/Quote]
限制cpu上的浮点数精度,再试试看。
zjx1020
2010-07-09
打赏
举报
回复
[Quote=引用 4 楼 zenny_chen 的回复:]
上代码。
CPU的以及GPU上的求和乘法
[/Quote]
就是深入浅出cuda第一个例子
你把int改成float就得出结果了
zenny_chen
2010-07-09
打赏
举报
回复
上代码。
CPU的以及GPU上的求和乘法
zjx1020
2010-07-09
打赏
举报
回复
cuda是不是第一分配显存的时候有额外开销的?
还有我cudaMemcpy怎么带宽非常的低,只有SDK bandwidth测得1/4
zjx1020
2010-07-09
打赏
举报
回复
[Quote=引用 1 楼 l7331014 的回复:]
浮点精度问题?大家强制用单精度,看看差别是否很大.
CPU上浮点计算是80位的.而gpu上单精度才32位,双精度才64位.
[/Quote]
就是float
差别很大
无心人_过过小日子
2010-07-08
打赏
举报
回复
浮点精度问题?大家强制用单精度,看看差别是否很大.
CPU上浮点计算是80位的.而gpu上单精度才32位,双精度才64位.
nVIDIA显卡CUDA性能测试工具,可测试nVIDIA显卡的
浮点运算
性能
nVIDIA显卡CUDA性能测试工具,可测试nVIDIA显卡的参数,nVIDIA显卡的CUDA
浮点运算
性能
第十五章_异构运算、
GPU
及框架选型.pdf
深度学习训练和推理的过程中,会涉及到大量的向量(vector),矩阵(matrix)和张量(tensor)操作,通常需要大量的浮点计算,包括高
精度
(在训练的时候)和低
精度
(在推理和部署的时候)。
GPU
, 作为一种通用可编程的加速器,最初设计是用来
进行
图形处理和渲染功能,但是从2007年开始,英伟达(NVIDIA)公司提出了第一个可编程通用计算平台(
GPU
),同时提出了CUDA框架,从此开启了
GPU
用于通用计算的新纪元。此后,不计其数的科研人员和开发者,对各种不同类型的算法用CUDA
进行
(部分)改写,从而达到几倍到数百倍的加速效果。尤其是在机器学习,特别是深度学习的浪潮来临后,
GPU
加速已经是各类工具实现的基本底层构架之一。本章里,会简单介绍
GPU
的基本架构,性能指标,框架选择等等和深度学习相关的内容。
基于
GPU
的矩阵求逆性能测试和分析 (2010年)
在CPU串行运算模式下实现大规模矩阵求逆是一个非常耗时的过程。为了解决这一
问题
,基于NVIDIA公司专为
GPU
(图形处理器)提供的CUDA(计算统一设备架构),从新的编程角度出发,利用
GPU
多线程并行处理技术,将矩阵求逆过程中大量的数据实现并行运算,从而获得了较大的加速比。同时,根据程序的执行结果,分析了
GPU
的单
精度
与双
精度
的
浮点运算
能力及其优、劣势。最后,通过分析数据传输时间对
GPU
性能的影响,总结出适合
GPU
的算法特征。
基于CU DA 的H. 264
图形处理器(
GPU
) 的处理速度在最近几年得 到了快速的发展, 其计算能力以每年2. 8 倍的速度 增长, 高于CPU 的发展速度. 如目前GTX280
GPU
的峰值
浮点运算
能力已经超过1T F lop s, 而因特尔4 核CPU Clow lown 的单
精度
浮点最高运算能力为 84G F lop s. 出现该现象的主要原因在于CPU 的微 构架要兼顾数值运算指令和控制指令, 而
GPU
的微 构架是面向图形类高度并行计算而设计的, 因此,
GPU
在并行数值处理能力上要远高于CPU. 为了合 理地利用
GPU
通用计算的资源, 统一计算设备架构 (CUDA ) 应运而生[1 ]. CUDA 是一种由NV ID IA 推 出的通用并行计算架构, 该架构使
GPU
能够解决复 杂的计算
问题
. 它包含了CUDA 指令集架构( ISA) 以及
GPU
内部的并行计算引擎. 它将
GPU
的可编 程顶点渲染器和片元渲染器集成起来, 组成统一的 SPMD (a Single P rogram Mu lip le Da ta) 计算设备, 并且提供内部共享内存以减少访问外部DRAM 的 次数, 从而大大提高了可编程性.
cudaHough:我们在
GPU
上实现霍夫变换的并行版本的并行计算项目的回购
库达霍夫 该项目的目的是通过使用带有C++的CUDA环境来实现 Hough-Transform 的
GPU
加速版本。 为了处理图像的加载/存储和显示,使用了CImg库。 目前,用于检测直线的版本被实现为顺序和并行版本。 不保证两个版本的结果相同 转换采用 HoughParameterSet 类型的参数。 该对象包含 Theta 的维度 (minTheta, maxTheta)、R 的维度 (minR, maxR) 以及处理这些维度的
精度
(stepsPerRadian、stepsPerPixel)。 这些变量使用根据图像尺寸计算的合理值
进行
初始化,但您可能希望修改步长。 技术细节
GPU
上的图像以行优先格式表示为平面 (1D) 数组。 在整个并行版本中,使用了模板。 这在 C++ 中会变得非常混乱,所以这里是我们的模板类型名称命名约定: paramT - 霍夫变换参数的类型。 通常浮点
CUDA高性能计算讨论
353
社区成员
615
社区内容
发帖
与我相关
我的任务
CUDA高性能计算讨论
CUDA高性能计算讨论
复制链接
扫一扫
分享
社区描述
CUDA高性能计算讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章