【问题标题】:OpenCL: float or integer?OpenCL:浮点数还是整数?
【发布时间】:2015-04-11 14:20:53
【问题描述】:

虽然浮点型主题有几个问题,但我仍有一些未解决的问题需要澄清。我使用 OpenCL 1.1 (NVIDIA)。

我想比较数字将它们用作数组的索引:哪个更快? 1.) 使用 整数 进行比较和索引 2.) 还是使用 floats 并在我将其用作数组的索引时进行强制转换?

很遗憾,我不确定哪个更贵;将浮点数转换为整数或比较整数而不是浮点数。

与有符号整数相比,使用无符号整数有什么优势吗?

编辑:我问这个的主要原因是我有一个 OpenCL 代码(我的意思是主机代码和内核代码),它没有我预期的那么快,我首先认为这是因为我正在使用uint 而不是 float。

【问题讨论】:

  • 为什么要在场景中使用浮点数?
  • 我总是看到float更快,GPU卡的核心是float类型的。据我所知,添加两个浮点数或整数需要不同的硬件架构。

标签: c++ casting opencl gpgpu nvidia


【解决方案1】:

我不会指望将(int) (FLOAT_MAX - 1)(int) (FLOAT_MAX - 2) 进行比较。结果可能会说,它们是相等的。

您的阵列有多大。也许更小的数据类型可以适合,比如half-floats,或者byte/short而不是int

【讨论】:

  • 数组非常非常大。这就是为什么我要使用GPU卡来处理它的原因。它是一个图,数组的元素同时是节点号。这就是为什么我将它们用作索引并在检查邻居时进行比较的原因。你认为字体越小越快吗?
  • 如果数组真的非常非常大,那么它同时适合您的 OpenCL 内存(即图形内存)的机会有多大?
  • 我真的不确定我是否有足够的设备内存,但这是另一个问题,我稍后会面对这个问题。例如,我现在正在阅读一本 OpenCL 书,每个示例都使用浮点数,我不知道这背后是否有任何原因,或者这只是一个示例。我的朋友告诉我浮动更快,因为硬件是特定的。
  • 整数运算速度最快,其次是单精度实数(浮点数),最后最慢的是双精度实数。当然,具体的运行时间取决于您的硬件。而 GPU 通常缺少后者。
  • @Christian,AFAIK,整数数学在 GPU 上浮动的速度较慢,尤其是在 NVIDIA GPU 上。这就是为什么 AMD 一直是比特币挖矿的首选。
猜你喜欢
  • 2019-04-16
  • 2011-05-09
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2023-03-25
  • 2018-03-20
  • 2011-04-22
相关资源
最近更新 更多