显卡编译器
Ⅰ 我的显卡是GTX970m支持opencl不支持opengl怎么处理
让不支持OpenCL的显卡支持OpenCL有点难度,这要求显卡本身开放一定程度的对底层硬件的支持。
不过也不是完全不可能。
比如目前有一个库叫做POCL,pocl - Portable Computing Language。想法是将OpenCL程序编译为系统支持的已有的并行计算语言,然后在相应的设备上执行。目前POCL主要在CPU上运行,它可以将OpenCL程序转换为类似PThread的多线程并行程序,然后在不支持OpenCL的设备上运行。其原理就有点像软件模拟了一个OpenCL的runtime。
借助类似的想法,我们就可以尝试创建一个中间层runtime,来进行代码的运行时编译和转换。将系统不支持的OpenCL代码转换到系统支持的某种API上去。
试想, 我们可以在一个NVIDIA显卡上,编写相应的编译器或runtime,将OpenCL程序转换为CUDA的二进制代码, 然后就可以在N卡上执行了。(当然,N卡本身支持OpenCL1.1, 最新的beta驱动支持OpenCL 1.2, 我们这里只是讨论一种可行性)。
更进一步, 我们甚至可以将OpenCL转换为OpenGL的shader kernel,然后在不支持OpenCL的显卡上运行。其实早年的GPGPU的研究,大部分都是借助pixel shader来进行并行计算的。后来才出现了针对通用并行计算的API。 对于较老的GPU,我们转换为Pixel shader。 对于新的GPU,我们可以借助Compute shader。
当然了,设计这样一个软件模拟的解决方案,无疑是巨大的工作量,难度也不低,需要对底层有很好的理解。同时,由于系统本身支持的API的一些限制,我们不可能支持所有的OpenCL的特性,必然会对性能有所影响。
但是单就可能性来说, 题主的问题的答案应当是:可行。
Ⅱ 请问directx和opengl是对显卡的编程吗那shader又是什么三者有什么关系呢
DirectX(Direct
eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft
XBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。最新版本为DirectX 12,创建在最新的Windows
8.1上。
OpenGL(全写Open
Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性目前,2.0版本开始加入了很多类似于DirectX中可编程单元的设计.
Shader Model(在3D图形领域常被简称SM)就是“优化渲染引擎模式”。Shader(着色器)是DirectX中一段能够针对3D对象进行操作、并被GPU所执行的程序。早在微软发布DirectX 8时,Shader
Model的概念就出现在其中了,并根据操作对象的不同被分为对顶点进行各种操作的Vertex Shader(顶点渲染引擎)和对像素进行各种操作的Pixel
Shader(像素渲染引擎)。
到了Shader Model 4.0,在VS和PS之间引入了一个新的可编程图形层--几何渲染器(Geometry
Shader)。原来的Vertex Shader和Pixel Shader只是对逐个顶点或像素进行处理,而新的Geometry
Shader可以批量进行几何处理。然而性能受到诟病,为了兼顾性能,在DirectX11(SM
5.0)开始引入了Tessellation来取代GS的部分功能。
说白点,三者的关系是,Shader Model是DirectX其中一个技术协议程序,而DirectX和OpenGL则是多媒体编程接口的竞争对手。
Ⅲ AMD显卡目前最新的显卡BIOS编译软件是哪个
目前最新的hoenix.BIOS.Editor
如果是你手头有bios的源代码,那么用微软的MSVC编译器就可以。
如果你仅仅是想把BIOS文件烧录到主板上,那么一般的编程器只要支持BIOS的flash rom的都可以,比如SF100.
Ⅳ 我的电脑显卡驱动用32位好还是64位好
这要看系统是32位的还是64位的。32位的系统用32位的驱动程序,同理,64位的系统必须用64位的驱动程序。不能混用,否则会导致响应设备不能正常运行,或者系统瘫痪。
不能确定系统位数,用驱动精灵即可自动安装显卡驱动程序了。
还是不行,直接换个可以自动安装机器硬件驱动程序的系统盘重装系统就行了,这样就可以全程自动、顺利解决 系统中显卡驱动程序自动安装 的问题了。用u盘或者硬盘这些都是可以的,且安装速度非常快。具体安装方法如下:
1、U盘安装:用ultraiso软件,打开下载好的系统安装盘文件(ISO文件),执行“写入映像文件”把U盘插到电脑上,点击“确定”,等待程序执行完毕后,这样就做好了启动及安装系统用的u盘,用这个做好的系统u盘引导启动机器后,即可顺利重装系统了;
2、硬盘安装:前提是,需要有一个可以正常运行的Windows系统,提取下载的ISO文件中的“*.GHO”和“安装系统.EXE”到电脑的非系统分区,然后运行“安装系统.EXE”,直接回车确认还原操作,再次确认执行自动安装操作(执行前注意备份C盘重要资料)。
Ⅳ 我买了一块GTX 1660TI显卡,显卡驱动10.1,请问能使用caffe、tensorflow训练模型吗
老黄去年下禁令禁止游戏显卡跑深度学习。解决方法如下:(tensorflow)
方法一:改变系统变量使得仅目标显卡可见:
1 export CUDA_VISIBLE_DEVICES=0 #这里是要使用的GPU编号,正常的话是从0开始
方法二:使用tensorflow api添加设备环境
1 with tensorflow.device('/gpu:0'):
2 main tensorflow program
注意:
如果使用方法二,需要修改一下Session配置,否则在默认配置下,所有可见显卡的显存都会被占用(暂时还没找到原因)。
修改代码:
1 config=tensorflow.ConfigProto()
2 config.gpu_options.allow_growth=True
3 ...
4 sess=tensorflow.Session(config=config,...)
Ⅵ nvidia/cuda 公开源中的devel和runtime有什么区别
从很多方面来看,CUDA和OpenCL的关系都和DirectX与OpenGL的关系很相像。如同DirectX和OpenGL一样,CUDA和OpenCL中,前者是配备完整工具包、针对单一供应商(NVIDIA)的成熟的开发平台,后者是一个开放的标准。
虽然两者抱着相同的目标:通用并行计算。但是CUDA仅仅能够在NVIDIA的GPU硬件上运行,而OpenCL的目标是面向任何一种Massively Parallel Processor,期望能够对不同种类的硬件给出一个相同的编程模型。由于这一根本区别,二者在很多方面都存在不同:
1)开发者友好程度。CUDA在这方面显然受更多开发者青睐。原因在于其统一的开发套件(CUDA Toolkit, NVIDIA GPU Computing SDK以及NSight等等)、非常丰富的库(cuFFT, cuBLAS, cuSPARSE, cuRAND, NPP, Thrust)以及NVCC(NVIDIA的CUDA编译器)所具备的PTX(一种SSA中间表示,为不同的NVIDIA GPU设备提供一套统一的静态ISA)代码生成、离线编译等更成熟的编译器特性。相比之下,使用OpenCL进行开发,只有AMD对OpenCL的驱动相对成熟。
2)跨平台性和通用性。这一点上OpenCL占有很大优势(这也是很多National Laboratory使用OpenCL进行科学计算的最主要原因)。OpenCL支持包括ATI,NVIDIA,Intel,ARM在内的多类处理器,并能支持运行在CPU的并行代码,同时还独有Task-Parallel Execution Mode,能够更好的支持Heterogeneous Computing。这一点是仅仅支持数据级并行并仅能在NVIDIA众核处理器上运行的CUDA无法做到的。
3)市场占有率。作为一个开放标准,缺少背后公司的推动,OpenCL显然没有占据通用并行计算的主流市场。NVIDIA则凭借CUDA在科学计算、生物、金融等领域的推广牢牢把握着主流市场。再次想到OpenGL和DirectX的对比,不难发现公司推广的高效和非盈利机构/标准委员会的低效(抑或谨慎,想想C++0x)。
很多开发者都认为,由于目前独立显卡市场的萎缩、新一代处理器架构(AMD的Graphics Core Next (GCN)、Intel的Sandy Bridge以及Ivy Bridge)以及新的SIMD编程模型(Intel的ISPC等)的出现,未来的通用并行计算市场会有很多不确定因素,CUDA和OpenCL都不是终点,我期待未来会有更好的并行编程模型的出现(当然也包括CUDA和OpenCL,如果它们能够持续发展下去)。
Ⅶ NVIDIA显卡支持CUDA,什么是CUDA
关于CUDA:
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
关于NVIDIA CUDA技术
NVIDIA CUDA技术是当今世界上唯一针对NVIDIA GPU(图形处理器)的C语言环境,为支持CUDA技术的NVIDIA GPU(图形处理器)带来无穷的图形计算处理性能。凭借NVIDIA CUDA技术,开发人员能够利用NVIDIA GPU(图形处理器)攻克极其复杂的密集型计算难题,应用到诸如石油与天然气的开发,金融风险管理,产品设计,媒体图像以及科学研究等领域。
CUDA™ 工具包是一种针对支持CUDA功能的GPU(图形处理器)的C语言开发环境。CUDA开发环境包括:
nvcc C语言编译器
适用于GPU(图形处理器)的CUDA FFT和BLAS库
分析器
适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)
CUDA运行时(CUDA runtime)驱动程序(目前在标准的NVIDIA GPU驱动中也提供)
CUDA编程手册
CUDA开发者软件开发包(SDK)提供了一些范例(附有源代码),以帮助使用者开始CUDA编程。这些范例包括:
并行双调排序
矩阵乘法
矩阵转置
利用计时器进行性能评价
并行大数组的前缀和(扫描)
图像卷积
使用Haar小波的一维DWT
OpenGL和Direct3D图形互操作示例
CUDA BLAS和FFT库的使用示例
CPU-GPU C—和C++—代码集成
二项式期权定价模型
Black-Scholes期权定价模型
Monte-Carlo期权定价模型
并行Mersenne Twister(随机数生成)
并行直方图
图像去噪
Sobel边缘检测滤波器
MathWorks MATLAB® 插件 (点击这里下载)
新的基于1.1版CUDA的SDK 范例现在也已经发布了。要查看完整的列表、下载代码,请点击此处。
技术功能
在GPU(图形处理器)上提供标准C编程语言
为在支持CUDA的NVIDIA GPU(图形处理器)上进行并行计算而提供了统一的软硬件解决方案
CUDA兼容的GPU(图形处理器)包括很多:从低功耗的笔记本上用的GPU到高性能的,多GPU的系统。
支持CUDA的GPU(图形处理器)支持并行数据缓存和线程执行管理器
标准FFT(快速傅立叶变换)和BLAS(基本线性代数子程序)数值程序库
针对计算的专用CUDA驱动
经过优化的,从中央处理器(CPU)到支持CUDA的GPU(图形处理器)的直接上传、下载通道
CUDA驱动可与OpenGL和DirectX图形驱动程序实现互操作
支持Linux 32位/64位以及Windows XP 32位/64位 操作系统
为了研究以及开发语言的目的,CUDA提供对驱动程序的直接访问,以及汇编语言级的访问。
Ⅷ NVIDIA显卡的的CUDA核心是什么
CUDA核心,理论上流处理器缩写是SP。但NVIDIA自己称呼他们的SP是CUDA Core。
CUDA Core只是N卡流处理器而已,只是一个流处理器名词。
CUDA是一个统一计算架构,属于软件+硬件架构统称。他不是一个软件也不是一个纯硬件。而是软硬结合的计算体系。
你可以理解为CUDA是一个基于NVIDIA GPU平台上面NV自己定制的特殊计算体系。是NV自己发明的运算算法,在NV平台和软件支持上面才能发挥最高效率。CUDA在NVIDIA定义是一种类C语言,本身兼容C语言。CUDA虽然是一种独立语言提供开发学习,但CUDA本身和C差距不算非常巨大,很多有经验的开发者很快能学会。
CUDA在全球属于NVIDIA私人生态区,他的势力并不比IOS小。甚至在高端计算领域和图形领域。CUDA算的上是权威标准。 Quadro和Tesla这2个统治世界的着名计算平台就是靠着CUDA生态区才能提供客户一体化服务,否则如果大家都像AMD那样只卖个浮点看起来很高的物理节点,那么老黄根本不敢自封视觉运算公司,那不是普通半导体公司搞的授权么?
CUDA是一个计算结构,是一个理念。是一个软硬平台,是一个NV提供综合性服务的东西。他不是一个显卡授权,也不是一个集群。也不是一个驱动。
Ⅸ CUDA和OpenCL有什么区别
从很多方面来看,CUDA和OpenCL的关系都和DirectX与OpenGL的关系很相像。如同DirectX和OpenGL一样,CUDA和OpenCL中,前者是配备完整工具包、针对单一供应商(NVIDIA)的成熟的开发平台,后者是一个开放的标准。
虽然两者抱着相同的目标:通用并行计算。但是CUDA仅仅能够在NVIDIA的GPU硬件上运行,而OpenCL的目标是面向任何一种Massively
Parallel Processor,期望能够对不同种类的硬件给出一个相同的编程模型。由于这一根本区别,二者在很多方面都存在不同:
1)开发者友好程度。CUDA在这方面显然受更多开发者青睐。原因在于其统一的开发套件(CUDA Toolkit, NVIDIA GPU
Computing SDK以及NSight等等)、非常丰富的库(cuFFT, cuBLAS, cuSPARSE, cuRAND, NPP,
Thrust)以及NVCC(NVIDIA的CUDA编译器)所具备的PTX(一种SSA中间表示,为不同的NVIDIA
GPU设备提供一套统一的静态ISA)代码生成、离线编译等更成熟的编译器特性。相比之下,使用OpenCL进行开发,只有AMD对OpenCL的驱动相对成熟。
2)跨平台性和通用性。这一点上OpenCL占有很大优势(这也是很多National
Laboratory使用OpenCL进行科学计算的最主要原因)。OpenCL支持包括ATI,NVIDIA,Intel,ARM在内的多类处理器,并能支持运行在CPU的并行代码,同时还独有Task-Parallel
Execution Mode,能够更好的支持Heterogeneous
Computing。这一点是仅仅支持数据级并行并仅能在NVIDIA众核处理器上运行的CUDA无法做到的。
3)市场占有率。作为一个开放标准,缺少背后公司的推动,OpenCL显然没有占据通用并行计算的主流市场。NVIDIA则凭借CUDA在科学计算、生物、金融等领域的推广牢牢把握着主流市场。再次想到OpenGL和DirectX的对比,不难发现公司推广的高效和非盈利机构/标准委员会的低效(抑或谨慎,想想C++0x)。
很多开发者都认为,由于目前独立显卡市场的萎缩、新一代处理器架构(AMD的Graphics Core Next (GCN)、Intel的Sandy
Bridge以及Ivy
Bridge)以及新的SIMD编程模型(Intel的ISPC等)的出现,未来的通用并行计算市场会有很多不确定因素,CUDA和OpenCL都不是终点,我期待未来会有更好的并行编程模型的出现(当然也包括CUDA和OpenCL,如果它们能够持续发展下去)。