Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OpenGL和OpenCL,选择哪一个?为什么?

OpenGL和OpenCL,选择哪一个?为什么?
EN

Stack Overflow用户
提问于 2011-10-26 18:57:27
回答 11查看 89K关注 0票数 83

有哪些特性使OpenCL在计算时比使用OpenGL的GLSL更具独到之处?尽管有图形相关的术语和不切实际的数据类型,但对OpenGL有什么真正的警告吗?

例如,并行函数计算可以通过使用其他纹理渲染到纹理来完成。减少操作可以通过迭代渲染到越来越小的纹理来完成。另一方面,随机写访问不可能以任何有效的方式(唯一的方法是通过纹理驱动的顶点数据渲染三角形)。使用OpenCL可以做到这一点吗?对于OpenGL,还有什么是不可能的?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2014-07-01 13:02:09

到目前为止,在任何答案中都没有提到的是执行速度。

如果

您的算法可以用OpenGL图形表示(例如,没有零散的写入、没有本地内存、没有工作组等)。它的运行速度通常会比OpenCL的对等物更快。我在这方面的特殊经验是在AMD、nVidia、IMG和高通GPU上做过图像过滤(聚集)内核。即使在核心OpenCL内核优化之后,OpenGL实现也总是运行得更快。(旁白:我怀疑这是由于多年来专门针对面向图形的工作负载而调整的硬件和驱动程序。)

我的建议是如果你的计算机程序

感觉

像它很好地映射到图形域,然后使用OpenGL。如果不是,则OpenCL更通用且更易于表达计算问题。

另一点需要提及(或询问)的是,你是作为一个业余爱好者(例如,为你自己)还是商业(即,为了分发给他人)来写作的。虽然几乎所有地方都支持OpenGL,但OpenCL在移动设备上完全缺乏支持,而且在未来几年内极不可能出现在安卓或iOS上。如果从单一代码库获得广泛的跨平台兼容性是一个目标,那么OpenGL可能会强加于您。

票数 60
EN

Stack Overflow用户

发布于 2011-10-26 19:08:01

OpenCL是专门为计算而创建的。当你使用OpenGL进行科学计算时,你总是必须考虑如何将你的计算问题映射到图形环境中(例如,谈论纹理和几何图元,如三角形等)。为了让你的计算进行下去。

在OpenCL中,您只需在内存缓冲区上使用计算内核来制定计算公式,就可以进行计算了。这实际上是一个巨大的胜利(从思考和实现这两种变体的角度来看)。

虽然内存访问模式是相同的(您的计算仍然在GPU上进行-但GPU现在变得越来越灵活)。

但是,除了使用十几个并行的“CPU”而不打破你的头脑--例如(愚蠢的例子)傅立叶变换为三角形和四边形之外,你还能期待什么呢?

票数 66
EN

Stack Overflow用户

发布于 2011-10-27 00:10:10

有哪些特性使OpenCL在计算时比使用OpenGL的GLSL更具独到之处?尽管有图形相关的术语和不切实际的数据类型,但对OpenGL有什么真正的警告吗?

是:它是一个图形API。因此,您在其中所做的一切都必须按照这些术语来制定。你必须将你的数据打包成某种形式的“渲染”。您必须弄清楚如何处理属性、统一缓冲区和纹理方面的数据。

使用OpenGL 4.3和OpenGL ES 3.1

计算着色器,事情变得有点混乱。计算着色器能够通过SSBO/图像加载/存储以类似于OpenCL计算操作的方式访问内存(尽管OpenCL提供实际指针,而GLSL不提供)。它们与OpenGL的互操作也比OpenCL/GL互操作快得多。

即使如此,计算着色器也不会改变一个事实: OpenCL计算操作在非常与OpenGL的计算着色器的精度不同。GLSL的浮点精度要求不是很严格,而OpenGL ES的要求甚至更低。因此,如果浮点精度对您的计算很重要,那么OpenGL将不是计算您需要计算的内容的最有效方法。

此外,OpenGL计算着色器需要支持4.x的硬件,而OpenCL可以在更差的硬件上运行。

此外,如果你通过选择渲染管道来进行计算,OpenGL驱动程序仍然会假设你正在进行渲染。因此,它将根据这一假设做出优化决策。它将优化着色器资源的分配,假设您正在绘制一幅图片。

例如,如果要渲染到浮点帧缓冲区,驱动程序可能会决定为您提供一个R11_

G11_B10帧缓冲区,因为它检测到您没有对alpha做任何操作,并且您的算法可以容忍较低的精度。如果您使用图像加载/存储

然而,与帧缓冲区不同,您获得此效果的可能性要小得多。

OpenCL不是一个图形应用程序接口;它是一个计算应用程序接口。

此外,OpenCL还可以让你访问更多的东西。它使您可以访问与GL相关的隐式内存级别。某些内存可以在线程之间共享,但GL中的单独着色器实例无法直接影响彼此(在图像加载/存储之外,但OpenCL运行在没有访问权限的硬件上)。

OpenGL将硬件所做的事情隐藏在抽象后面。OpenCL使您几乎完全了解所发生的事情。

你可以使用OpenGL进行任意计算。但你没有想要当有一个完全可行的替代方案时,就不会了。OpenGL中的计算服务于图形流水线。仅限

为任何类型的非渲染计算操作选择OpenGL的原因是为了支持不能运行OpenCL的硬件。目前,这包括很多移动硬件。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7907510

复制
相关文章
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
6.1K0
Pandas 查找,丢弃列值唯一的列
Pandas重复值处理
import pandas as pd #生成数据 data1,data2,data3,data4=['a',3],['b',2],['a',3],['c',2] df=pd.DataFrame([data1,data2,data3,data4],columns=['col1','col2']) print(df) col1 col2 0 a 3 1 b 2 2 a 3 3 c 2 #判断数据 isDuplicated=df.duplicat
hankleo
2020/09/17
8160
python 使用pandas 去除csv重复项
subset : column label or sequence of labels, optional 用来指定特定的列,默认所有列 keep : {‘first’, ‘last’, False}, default ‘first’ 删除重复项并保留第一次出现的项 inplace : boolean, default False 是直接在原来数据上修改还是保留一个副本
kirin
2021/04/19
5.5K0
python 使用pandas 去除csv重复项
python | pandas 改变列的位置、填充缺失值
本期的文章源于工作中,需要固定label的位置,便于在spark模型中添加或删除特征,而不影响模型的框架或代码。 spark的jupyter下使用sql 这是我的工作环境的下情况,对你读者的情况,需要具体分析。 sql = ''' select * from tables_names -- hdfs下的表名 where 条件判断 ''' Data = DB.impala_query(sql) -- 是DataFrame格式 **注意:**DB是自己写的脚本文件 改变列的
努力在北京混出人样
2019/02/18
5.2K0
python | pandas 改变列的位置、填充缺失值
本期的文章源于工作中,需要固定label的位置,便于在spark模型中添加或删除特征,而不影响模型的框架或代码。 spark的jupyter下使用sql 这是我的工作环境的下情况,对你读者的情况,需要具体分析。 sql = ''' select * from tables_names -- hdfs下的表名 where 条件判断 ''' Data = DB.impala_query(sql) -- 是DataFrame格式 **注意:**DB是自己写的脚本文件 改变列的位置 前
努力在北京混出人样
2018/05/14
5.5K0
Pandas基础:查找与输入最接近的值
有时候,我们试图使用一个值筛选数据框架,但是这个值不存在,这样我们会接收到一个空的数据框架,这不是我们想要的。我们想要的是,在数据框架中找到与这个输入值最接近的值。
fanjy
2022/06/04
4K0
Pandas基础:查找与输入最接近的值
pandas’_pandas 删除列
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/02
2.7K0
pandas’_pandas 删除列
查找-散列查找
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。
全栈程序员站长
2022/08/28
1.5K0
查找-散列查找
使用pandas筛选出指定列值所对应的行
该方法其实就是找出每一行中符合条件的真值(true value),如找出列A中所有值等于foo
星星在线
2020/05/22
19.6K0
删除重复值,不只Excel,Python pandas更行
在Excel中,我们可以通过单击功能区“数据”选项卡上的“删除重复项”按钮“轻松”删除表中的重复项。确实很容易!然而,当数据集太大,或者电子表格中有公式时,这项操作有时会变得很慢。因此,我们将探讨如何使用Python从数据表中删除重复项,它超级简单、快速、灵活。
fanjy
2022/04/13
6.2K0
删除重复值,不只Excel,Python pandas更行
散列查找和哈希查找_散列检索
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:
全栈程序员站长
2022/11/15
9330
【Python】基于某些列删除数据框中的重复值
Python按照某些列去重,可用drop_duplicates函数轻松处理。本文致力用简洁的语言介绍该函数。
阿黎逸阳
2020/09/08
21.6K0
【Python】基于某些列删除数据框中的重复值
散列查找
散列同顺序、链接和索引一样,是又一种数据存储方法。散列存储的方法是:以数据集合中的每个元素的关键字k为自变量,通过一种函数h(k)计算出函数值,把这个值用做一块连续存储空间(即数组或文件空间)中的元素存储位置(即下标),将该元素存储到这个下标位置上。散列存储中使用的函数h(k)被称为散列函数或哈希函数,它实现关键字到存储位置(地址)的映射(或称转换),h(k)被称为散列地址或哈希地址;使用的数组或文件空间是对数据集合进行散列存储的地址空间,所以被称为散列表或哈希表。在散列表上进行查找时,首先根据给定的关键字k,用与散列存储时使用的同一散列函数h(k)计算出散列地址,然后按此地址从散列表中取出对应的元素。
全栈程序员站长
2022/08/27
1.3K0
散列查找
用过Excel,就会获取pandas数据框架中的值、行和列
至此,我们已经学习了使用Python pandas来输入/输出(即读取和保存文件)数据,现在,我们转向更深入的部分。
fanjy
2021/11/29
20.2K0
用过Excel,就会获取pandas数据框架中的值、行和列
【Python】基于多列组合删除数据框中的重复值
最近公司在做关联图谱的项目,想挖掘团伙犯罪。在准备关系数据时需要根据两列组合删除数据框中的重复值,两列中元素的顺序可能是相反的。
阿黎逸阳
2020/09/08
15.5K0
python删除重复值、排序、查找最多元素等操作
python删除重复值、排序、查找最多元素等操作 1、删除重复值、主要是列表和集合操作 2、关于排序,主要是对列表、元组、多重列表、集合以及对象排序 3、查找列表中出现最多的元素 # 删除可散列对象重复值,按集合规则顺序排序 def delrepdata(items): return set(items) # 删除可散列对象重复值,元素显示顺序不变 def delrepdatawithnochangeorder(items): datas=set() for item in ite
python与大数据分析
2022/03/11
8210
pandas处理缺失值的函数_pandas填充缺失值
df.dropna()函数用于删除dataframe数据中的缺失数据,即 删除NaN数据.
全栈程序员站长
2022/09/30
2.1K0
PP-数据建模:明明删除了重复项,为什么还是说有重复值?
最近,有朋友在用Power Pivot构建表间关系的时候,出现了一个问题:明明我已经删除了重复项,但构建表间关系的时候,还是说我两个表都有重复的数据!结果表间关系建立不起来!
大海Power
2021/08/30
3.8K0
Access重复项查询
大家好上节介绍了汇总查询,继续介绍选择查询中的重复项查询和不匹配项查询,这两种查询都可以在查询向导中创建,本节主要介绍重复项查询。
无言之月
2020/06/02
1.9K0
Access重复项查询
使用Pandas实现1-6列分别和第0列比大小得较小值
前几天在Python白银交流群【星辰】问了一个pandas处理Excel数据的问题,提问截图如下:
Python进阶者
2023/03/02
1.3K0
使用Pandas实现1-6列分别和第0列比大小得较小值

相似问题

Pandas -查找列的重复值

29

Pandas在两列之间放置重复项

10

Pandas Groupby和在多列中查找重复项

32

Pandas列根据other列反转值

10

在两列之间查找重复项相同的表

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档