【并行计算-CUDA开发】OpenCL、OpenGL和DirectX三者的区别
什么是OpenCL?
OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:
1、C99编程语言并行扩展子集;
2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;
3、基于IEEE 754标准的数字条件;
4、与OpenGL、OpenGL ES和其他图形类API高效互通。
什么是OpenGL?
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
Open GL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已经不再以任何让微软不悦的方式推广Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。最后,开放源码社区(尤其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供Open
GL支持。
今年08年正式公布OpenGL3.0版本。并且得到了,nv的支持,其官方网站上提供针对N卡的sdk下载。
什么是DirectX?
DirectX是一种应用程序接口(API),它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。这样说是不是有点不太明白,其实从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。
DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。
显示部分担任图形处理的关键,分为DirectDraw(DDraw)和 Direct3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放mpg、DVD电影、看图、玩小游戏等等都是用的DDraw,你可以把它理解成所有划线的部分都是用的DDraw。后者则主要负责3D效果的显示,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的 Direct3D。
OpenCL、OpenGL和DirectX之间不得不说的故事
业界对Apple的OpenCL的支持将成为它发展的重要因素,早在90年代中期,微软就曾经努力阻止OpenGL成为行业的标准,以推行自己的DirectX显卡软件和游戏工具。微软的Direct X起初的战略是为了推动DOS游戏开发者转向Windows,从此之后它就被绑定在Windows下为PC游戏服务,所以它仅支持Windows。
断发布新版的DirectX也推动了开发者转向最新版的Windows,比如最新版的DirectX 10就带来了不少Vista专属游戏,从而推动了Vista的销量,然而它并未达到预期的效果,因为Vista的速度阻碍了DirectX10游戏的市场,开发者只能将目标再次转向XP。
OpenGL和Apple
OpenGL的前身是高端图形工作站厂商SGI在80年代所开发的IRIS G,它在90年代初期成为了开源的标准。当时微软在它的Windows 95中发布了Direct3D,将它作为OpenGL的竞争对手。而在90年代末,微软曾经和SGI进行了Fahrenheit项目的开发,试图将两者结合起来,但是没有成功。之后微软继续开发DirectX并与GPU厂商合作,留下OpenGL任其发展。
OpenGL之后几乎逐渐消失,直到90年代末Apple放弃了自己的QuickDraw 3D,将OpenGL作为Mac OS X的官方3D库。Apple的系统给OpenGL程序带来了不少拥护者。之后OpenGL正式被Linux采用,现在主流的游戏平台,包括PSP,PS3 和Wii都支持该技术。
但是微软的Xbox360例外,它采用了自己的DirectX 图形库,而将OpenGL排除在外。如今OpenGL对DirectX来说比以前更有竞争力了。而微软计划在Windows 7中的DirectX 11增加类似于OpenCL的技术,以实现GPGPU运算。但是Apple的OpenCL能更紧密地与OpenGL代码协同工作,能带来更广泛的支持。 Apple还将OpenCL作为一个免费的,开源的标准,让任何人都能参与到该平台中来。
OpenGL和OpenCL设计的相似性,使开发者更易于开发。比如在OpenCL下进行数据虚拟化计算,可以把相同的对象在OpenGL上进行图形渲染。同时OpenGL下的图形渲染可以在OpenCL下进行处理和转换。
OpenCL得到了GPU厂商NVIDIA和AMD的支持,同时支持Apple,SONY,任天堂的平台,还支持Linux和Windows,而且任何公司的开发者都可以参与到该技术的发展中来。
【并行计算-CUDA开发】OpenCL、OpenGL和DirectX三者的区别的更多相关文章
- 【并行计算-CUDA开发】OpenACC与OpenHMPP
在西雅图超级计算大会(SC11)上发布了新的基于指令的加速器并行编程标准,既OpenACC.这个开发标准的目的是让更多的编程人员可以用到GPU计算,同时计算结果可以跨加速器使用,甚至能用在多核CPU上 ...
- 【并行计算-CUDA开发】GPU---并行计算利器
1 GPU是什么 如图1所示,这台PC机与普通PC机不同的是这里插了7张显卡,左下角是显卡,在中间的就是GPU芯片.显卡的处理器称为图形处理器(GPU),它是显卡的"心脏",与CP ...
- GDI与OpenGL与DirectX之间的区别
图形编程的几种技术对比: GDI,图形设备接口,MS开发的通用的windows系统图形编程接口,功能强涉及面广,一般的编程都用它.但是用来做多媒体开发就差强人意了 OPENGL是SGI开发的一套三维图 ...
- 【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构
多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零开始做OpenCL开发>系列文章的 ...
- 【并行计算-CUDA开发】Windows下opencl环境配置
首先声明我这篇主要是根据下面网站的介绍, 加以修改和详细描述,一步一步在我自己的电脑上实现的, http://www.cmnsoft.com/wordpress/?tag=opencl&pag ...
- 【并行计算-CUDA开发】GPGPU OpenCL/CUDA 高性能编程的10大注意事项
GPGPU OpenCL/CUDA 高性能编程的10大注意事项 1.展开循环 如果提前知道了循环的次数,可以进行循环展开,这样省去了循环条件的比较次数.但是同时也不能使得kernel代码太大. 循环展 ...
- 【并行计算-CUDA开发】FPGA 设计者应该学习 OpenCL及爱上OpenCL的十个理由
为什么要学习OpenCL呢?就目前我所从事的医疗超声领域,超声前端的信号处理器一般是通过FPGA或FPGA+DSP来设计的,高端设备用的是FPGA+ GPU架构.传统的设计方法是通过HDL语言来进行设 ...
- 【并行计算-CUDA开发】Apple's OpenCL——再谈Local Memory
在OpenCL中,用__local(或local)修饰的变量会被存放在一个计算单元(Compute Unit)的共享存储器区域中.对于nVidia的GPU,一个CU可以被映射为物理上的一块SM(Str ...
- 【DSP开发】【并行计算-CUDA开发】TI OpenCL v01.01.xx
TI OpenCL v01.01.xx TI OpenCL™ Runtime Documentation Contents: Introduction OpenCL 1.1 Reference Mat ...
随机推荐
- Vue上传通过“服务端签名后直传”上传文件到阿里云 报错 400 Bad Request
我报错的原因是 formData.append('file', file) 放在签名前面了 解决办法 formData.append('file', file) 一定在最后 /** * 上传文件到 o ...
- BZOJ 4269: 再见Xor 线性基+贪心
Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整数N. 接下来一行N个非负整数. ...
- 交换机配置——单交换机划分VLAN配置
一.实验目的:实现单交换机划分VLAN,使PC1主机和PC2主机不能通讯 二.拓扑图 三.实验步骤 最开始两台主机都输入的端口f0/1和f0/2都属于vlan 1 可以相互通讯(如下图) 现在需要让P ...
- fflush函数
/*** flush.c ***/ #include<stdio.h> #include<string.h> #include<stdlib.h> int main ...
- Java线程之wait()、notify()、notifyAll()
翻译:https://www.journaldev.com/1037/java-thread-wait-notify-and-notifyall-example 简述 java中Objct对象包含三个 ...
- axios 的坑
必须安装axios 和qs 1.main.js中的配置 import axios from 'axios' import qs from 'qs'; axios.defaults.headers.po ...
- Centos 安装字体库 以及解决confluence 旧文档数据的乱码
首先,第一步我们需要执行以下的命令来安装字体管理工具: yum install -y fontconfig mkfontscale 然后我们到(Windows系统)“c:/windows/fonts ...
- From 7.8 To 7.14
From 7.8 To 7.14 大纲 学科 英语的话每天早上背单词, 争取每天做一篇完型, 一篇阅读, 一篇短文填空, 一篇改错, 一篇七选五??? 似乎太多了, 先试一下吧 语文的话, 尝试翻译一 ...
- 2018-2019-2 20165215《网络对抗技术》Exp10 Final Windows本地内核提权+Exploit-Exercises Nebula学习与实践
目录 PART ONE :Windows本地内核提权 漏洞概述 漏洞原理 漏洞复现 windbg调试本地内核 查看SSDT表和SSDTShadow表 查看窗口站结构体信息 利用Poc验证漏洞 漏洞利用 ...
- php执行方式对比:mod_php&php-fpm
mod_php 1.是apache的附属包,apache死掉后php也会死掉 2.稳定性差,php出错服务器进程也会受影响 php-fpm 1.和nginx是两个独立的个体. 2.php- ...