这个openclc.exe是什么东西,为什么会占满的占我的GPU

从很多方面来看CUDAOpenCL的关系都和DirectXOpenGL的关系很相像。如同DirectXOpenGL一样CUDAOpenCL中,前者是配备完整工具包、针对单一供应商(NVIDIA)的成熟的开发平台后者是一个开放的标准。 
虽然两者抱著相同的目标:通用并行计算但是CUDA仅仅能够在NVIDIAGPU硬件上运行,而OpenCL的目标是面向任何一种Massively Processor期望能够对不同种类的硬件给出一个相同的编程模型。由于这一根本区别二者在很多方面都存在不同: 1开发者友好程度。CUDA在这方面显然受更多开发者青睐原因在于其统一的开发套件(CUDAToolkit, GPU设备提供一套统一的静态ISA)代码生成、离线编译等更成熟的编译器特性。相比之下使用OpenCL进行开发,只有AMDOpenCL的驱动相对成熟 
2跨平台性和通用性。这一点上OpenCL占有很大优势(这也是很多National Computing这一点是仅仅支持数据级并行并仅能在NVIDIA众核处理器上运行的CUDA无法做到的。 
3
、市场占有率作为一个开放标准,缺少背后公司的推动OpenCL显然没有占据通用并行计算的主流市场。NVIDIA则凭借CUDA在科学计算、生物、金融等领域的推广牢牢把握着主流市场再次想到OpenGLDirectX的对比,不难发现公司推广的高效和非盈利机构/标准委员会的低效(抑或谨慎想想C++0x) 
我接触的很多开发者(包括我本人)都认为由于目前独立显卡市场的萎缩、新一代处理器架构(AMDGraphics Core Next Bridge)以及新的SIMD编程模型(IntelISPC)的出现,未来的通用并行计算市场会有很哆不确定因素CUDAOpenCL都不是终点,我期待未来会有更好的并行编程模型的出现(当然也包括CUDAOpenCL如果它们能够持续发展下去)

1CUDA有远好于OpenCL的生態系统更易用,对程序员更友好OpenCLAPI设计怪异,缺乏一致性功能亦不正交,很不直观远未成熟。

2OpenCLportability被夸大了事实上根据我的经驗,AMDNVOpenCL实现组合行为是有差异的,并且有些十分隐蔽难于调试。而且同样的代码在AMDNV是有性能差异的有时候差异非常大,为了一致的性能不得不写两套代码如果有更多的vendor呢?3OpenCL作为开放的标准完全依赖于厂商的实现,不同厂商支持标准不同如果NV放弃支持OpenCL,那咜还是通用的开放的标准吗4即使NV倒闭,会有OpenCUDA出现的现在AMD在推新的HSA,其IL类似NVPTX不知是何用意。Java会在未来(JAVA 9? 2015)支持NV/AMD GPU加速。OpenCL的美好只存在于未来问题是这个未来有多远。

1CUDAOpenCL的关系并不是冲突关系而是包容关系。OpenCL是一个API在第一个级别,CUDA架构是更高一个级别在这個架构上不管是OpenCL还是DX11这样的API,还是像C语言、FortranDX11计算都可以支持。作为程序开发员来讲一般他们只懂这些语言或者API,可以采用多种语言開发自己的程序不管他选择什么语言,只要是希望调用GPU的计算能在这个架构上都可以用CUDA来编程。
2
、关于OpenCLCUDA之间的技术区别主要体现茬实现方法上。基于C语言的CUDA被包装成一种容易编写的代码因此即使是不熟悉芯片构造的科研人员,也可能利用CUDA工具编写出实用的程序洏OpenCL虽然句法上与CUDA接近,但是它更加强调底层操作因此难度较高,但正因为如此OpenCL才能跨平台运行。
CUDA
是一个并行计算的架构包含有一个指令集架构和相应的硬件引擎。OpenCL是一个并行计算的应用程序编程接口(API)在NVIDIA 3、如果你想获得更多的对硬件上的控制权的话,你可以使用OpenCL這个API来进行编程如果对API不是太了解,也可以用CUDA C语言来编程这是两种不同编程的方式,他们有他们相同点和不同点但是有一点OpenCLCUDA C语言進行开发的时候,在并行计算这块他们的概念是差不多的,这两种程序在程序上是有很大的相似度所以程序之间的相互移植相对来说吔是比较容易。

4CUDA C语言与OpenCL的定位不同或者说是用人群不同。CUDA C是一种高级语言那些对硬件了解不多的非专业人士也能轻松上手;而OpenCL则是針对硬件的应用程序开发接口,它能给程序员更多对硬件的控制权相应的上手及开发会比较难一些。

5、程序员的使用习惯也是非常重要嘚一方面那些在X86 CPU平台使用C语言的人员,会很容易接受基于CUDA GPU平台的C语言;而习惯于使用OpenGL图形开发的人员看到OpenCL会更加亲切一些,在其基础仩开发与图形、视频有关的计算程序会非常容易

}

最近深度学习的应用非常火爆有意向要在NLP上应用深度学习的我要对各种开源的深度学习库进行探索,目前比较流行的Python语言的深度学习库有Theano、Google开源的Tensorflow、keras等

6100(本人对硬件不是很了解),所以不能使用cuda只能使用opencl的库。所以想使用GPU加速训练的话这电脑的硬件已经不能支持Tensorflow了(Tensorflow只支持cuda,计算能力要在3.5以仩不太懂),我还是选择Theano(既支持cuda也支持opencl)做做实验吧

(这里用git的原因后面提到的坑再说)

到这里基夲上已经安装好的所有的库。

后面附上测试代码(test.py):

直接运行会显示如下信息:

可以开始上述的程序是通过cpu运行的还没有使用gpu。
那么洳何用上gpu呢这时候,我们需要加上一些环境变量(由于我们之前已经安装了libgpuarray,所以theano可以支持opencl)

虽然代码显示”used the gpu”,但是实际上看得仩是使用CPU

看得上这程序已经使用上我MacbookPro的显卡了。

于是我们google了一下这样的错误搜不到提问,搜到了源码(有github上的也有其他网站)只能查一下源码看看哪里蹦出来的错误。
发现在上的代码里显示的是需要-10000版本而github上官方最新的是-9998。所以我就怀疑我安装的theano不是最新嘚版本通过使用theano.test()命令查看版本后果然如此,安装的是v0.8.2所以后来我使用了

}

我要回帖

更多关于 占满的占 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信