精华内容
下载资源
问答
  • PyTorch-GPU加速实例

    2020-09-16 15:08:05
    主要介绍了PyTorch-GPU加速实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 我们使用anoconda创建envs环境下的Tensorflow-gpu版的,但是当我们在Pycharm设置里的工程中安装Keras后,发现调用keras无法使用gpu进行加速,且使用的是cpu在运算,这就违背了我们安装Tensorflow-gpu版初衷了。...
  • 在现有的前端动画体系中,通常有两种模式:JS动画与CSS3动画。 JS动画是通过JS动态改写样式实现动画能力的一种方案,在PC端兼容低端浏览器中不失为一种推荐方案。 而在移动端,我们选择性能更优浏览器原生实现方案:...
  • 使用GPU对C语言代码进行加速,其中以规则匹配为例,优化后的方法为:特征规则使用acbm算法编译成一个ptree、ptree匹配使用cuda编程在GPU运行、多个packet并发匹配,处理速度提升数倍。
  • 使用opencv进行GPU加速计算机视觉(源码)
  • Android开发如何关闭GPU硬件加速

    千次阅读 2019-03-15 18:11:47
    在AndroidManifest.xml文件为application标签添加如下的属性即可为整个应用程序开启/关闭硬件加速: 在Activity 标签下使用 hardwareAccelerated 属性开启或关闭硬件加速: 在Window 层级使用如下代码开启硬件加速...

    转自:https://www.jianshu.com/p/41d9ed3bf23a
    在AndroidManifest.xml文件为application标签添加如下的属性即可为整个应用程序开启/关闭硬件加速:

    在Activity 标签下使用 hardwareAccelerated 属性开启或关闭硬件加速:

    在Window 层级使用如下代码开启硬件加速:(Window层级不支持关闭硬件加速)
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

    4.View 级别如下关闭硬件加速:(view 层级上不支持开启硬件加速)
    setLayerType(View.LAYER_TYPE_SOFTWARE, null);

    或者使用android:layerType=”software”来关闭硬件加速

    作者:NoBugException
    链接:https://www.jianshu.com/p/41d9ed3bf23a
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 针对全同态加密应用需求,提出了一种基于Schnhage-Strassen算法的大数乘法GPU加速方法。通过比较相同实验平台下仅用CPU和GPU CPU异构方法实现的大数乘法运算,验证了设计方法的正确性和有效性。实验结果表明,采用...
  • 本文实例讲述了Python基于pyCUDA实现GPU加速并行计算功能。分享给大家供大家参考,具体如下: Nvidia的CUDA 架构为我们提供了一种便捷的方式来直接操纵GPU 并进行编程,但是基于 C语言的CUDA实现较为复杂,开发周期...
  • 具有强大GPU加速功能的Tensor计算(如NumPy) 基于基于磁带的autograd系统构建的深度神经网络 您可以在需要时重用自己喜欢的Python软件包(例如NumPy,SciPy和Cython)来扩展PyTorch。 系统 3.6 3.7 3.8 Linux ...
  • NVIDIA的GPU加速CUDA的示例程序,NVIDIA的GPU加速CUDA的示例程序,NVIDIA的GPU加速CUDA的示例程序
  • GPU并行加速矩阵乘法

    2014-12-01 20:14:45
    GPU并行加速矩阵乘法,有详细的程序、结果及分析
  • gpu.js在浏览器中实现GPU加速的JavaScript
  • 初探GPU硬件加速

    千次阅读 2021-06-03 10:28:23
    GPU是相对于CPU的一个概念,现代计算机中图形处理的重要性日益提高,GPU是一个可以专门用来处理图形的核心处理器,现代浏览器大多可以利用GPU加速页面渲染。 注意,图形渲染是GPU问世的初衷,但

    目录

    一、概述

    二、基本概念

    三、硬件加速的启用

    四、拓展


    一、概述

            项目开发中遇到因启用硬件加速导致的闪屏问题,特此整理相关基础知识,已备后续查阅。

    二、基本概念

    概念1:什么是GPU

            GPU是显卡上的一块芯片,英文全称Graphics Processing Unit,翻译为图形处理单元。GPU是相对于CPU的一个概念,现代计算机中图形处理的重要性日益提高,GPU是一个可以专门用来处理图形的核心处理器,现代浏览器大多可以利用GPU来加速页面渲染。 注意,图形渲染是GPU问世的初衷,但并非其唯一功能。

            GPU问世之前,基本所有任务都由CPU来做,GPU出现后,二者进行了明确分工,CPU负责逻辑性强的事物处理和串行计算,GPU则专注于执行大规模的计算任务,即高度线程化的并行处理任务。GPU与CPU的分工是由它们的硬件结构决定的,CPU为主,GPU是从。GPU无论发展有多快,都只是替CPU分担工作,而不会取代CPU。

            不同的浏览器使用不同的方法来实现GPU硬件加速,因此它们的表现也不尽相同。

    概念2:什么是硬件加速

            硬件加速(hardware acceleration)主要是利用电脑的硬件设备即GPU,分担CPU的一部分任务,降低CPU使用率,从而达到使浏览器运行更加顺畅的目的。

            GPU有一个特性在实现流畅动画时效果显著,即GPU可以存储一定数量的纹理(一个矩形的像素点集合)并能高效的操作这些纹理(比如进行特定的移动、缩放和旋转操作)。浏览器不会在动画的每一帧都绘制一次,而是生成DOM元素的快照,称之为GPU纹理(也被叫做层)存储起来,之后浏览器只需要告诉GPU去转换指定的纹理来实现DOM元素的动画效果,这叫GPU合成。这种操作是借助于显卡的优势来改变渲染操作,也被称之为硬件加速。

    概念3:硬件加速的缺点

            GPU加速可以提高浏览器渲染速度,但并非十全十美。

            其一,GPU硬件加速可能造成严重的性能问题,因为它会增加内存的使用(创建的复合层越多,内存消耗越大)。如果GPU加载了大量的纹理,则容易造成问题。

            其二,使用GPU渲染会影响字体的抗锯齿效果。这是因为GPU和CPU具有不同的渲染机制。即使最终硬件加速停止了,文本还是会在动画期间显示得很模糊。

    三、硬件加速的启用

            经研究,硬件加速的启用分为两步,其一浏览器开启硬件加速的支持,其二浏览器检测到CSS中存在能触发硬件加速的规则。二者缺其一,则不会开启硬件加速。

    浏览器开启硬件加速的支持

            如下图所示,为谷歌浏览器开启/关闭硬件加速的方法。

    能触发硬件加速的CSS规则

            我们要先明白一个概念,浏览器支持硬件加速,并不代表所有元素都会使用GPU加速,通俗讲就是,我有这件东西,但我不一定会用它。

            那怎么才能切换到GPU模式呢?很多浏览器提供了某些触发的CSS规则,现在,像Chrome、FireFox、Safari、IE9+和最新版本的Opera都支持硬件加速,当它们检测到页面中某个DOM元素应用了特定CSS规则时就会开启GPU模式,最显著的特征规则是元素的3D变换。如下代码所示,两个CSS3属性都可以开启GPU硬件加速模式,从而让浏览器在渲染动画时从CPU转向GPU。

    div {
       -webkit-transform: transition3d(0,0,0);
       -moz-transform: transition3d(0,0,0);
       -ms-transform: transition3d(0,0,0);
       -o-transform: transition3d(0,0,0);
       transform: transition3d(0,0,0);
    }
    div {
       -webkit-transform: translateZ(0);
       -moz-transform: translateZ(0);
       -ms-transform: translateZ(0);
       -o-transform: translateZ(0);
       transform: translateZ(0);
    }

            并不是所有CSS属性都能触发GPU硬件加速,实际上只有少数属性才可以,比如下面这些。

    1)transform
    2)opacity
    3)filter

    四、拓展

    拓展1:硬件加速的工作原理

            浏览器接收到页面文档后,会将文档中的标记语言解析为DOM树。DOM树和CSS结合后形成浏览器构建页面用的渲染树,渲染树中包含了大量的渲染元素,每一个渲染元素会被分配到一个图层中,每个图层又会被加载到GPU形成渲染纹理,而图层在GPU中transform并不会触发repaint,最终这些使用transform的图层都会由独立的合成器进行处理。

            3D和2D transform 的区别就在于,浏览器在页面渲染前为3D动画创建独立的复合图层,而在运行期间为2D动画创建,动画开始时,生成新的复合图层并加载为GPU的纹理用于初始化repaint。然后由GPU的复合器操纵整个动画的执行。最后当动画结束时,再次执行repaint操作删除复合图层(2D动画开始和结束的时候发生了两次 repaint 操作)。

            为了避免 2D transform 动画在开始和结束时发生的 repaint 操作,可以硬编码一些样式来解决这个问题。

    .example1 {
      transform: translateZ(0);
    }
    
    .example2 {
      transform: rotateZ(360deg);
    }

            如上代码的作用就是让浏览器执行 3D transform,浏览器通过该样式创建了一个独立图层,图层中的动画则有GPU进行预处理并且触发了硬件加速。 

    拓展2:层创建的标准

            在Webkit内核的浏览器中,硬件加速会把需要渲染的元素放到特定的复合层中渲染。满足如下任意方式,便会创建层。

    1、3D、transform变换、perspective透视
    2、filter过滤器
    
    3、使用加速视频解码的 元素
    4、拥有 3D (WebGL) 上下文或加速的 2D 上下文的 元素
    5、混合插件(如 Flash)
    6、对自己的 opacity 做 CSS 动画或使用一个动画 webkit 变换的元素
    
    7、元素有一个包含复合层的后代节点(换句话说,就是一个元素拥有一个子元素,该子元素在自己的层里)
    8、元素有一个 z-index 较低且包含一个复合层的兄弟元素(换句话说就是该元素在复合层上面渲染)

            主要是最后一条,如果有一个元素,它的兄弟元素在复合层中渲染,而这个兄弟元素的z-index比较小,那么这个元素(不管是不是应用了硬件加速样式)也会被放到复合层中。

            这类问题尤其是用了轮播、动画loading的页面,出现这问题很常见。最可怕的是,浏览器有可能给复合层之后的所有相对或绝对定位的元素都创建一个复合层来渲染。使用3D硬件加速提升动画性能时,最好给元素增加一个z-index属性,人为干扰复合层的排序,可以有效减少chrome创建不必要的复合层,提升渲染性能,移动端优化效果尤为明显。

            谷歌开发者工具中开启“show layer borders”选项后,每个复合图层都会显示一条黄色的边界。

            浏览器检测到特定CSS规则,会创建复合图层,复合图层的位图上传到GPU,即由软件渲染转变为硬件加速模式。

    拓展3:硬件加速导致页面偶然闪烁

            通过-webkit-transform:transition3d/translateZ/filter等开启GPU硬件加速之后,受限于硬件条件,有些时候可能会导致浏览器频繁闪烁或抖动

    解决方法一:

            并不是去掉闪烁,而是设成透明,仅供参考。

    .demo{
       -webkit-backface-visibility: hidden;
       -moz-backface-visibility: hidden;
       -ms-backface-visibility: hidden;
       backface-visibility: hidden;
      
       -webkit-perspective: 1000;
       -moz-perspective: 1000;
       -ms-perspective: 1000;
       perspective: 1000;
    }

    解决方法二:

            如果是webkit内核,可以使用如下方法,仅供参考。

    .demo{
       -webkit-transform: translate3d(0, 0, 0);
       -moz-transform: translate3d(0, 0, 0);
       -ms-transform: translate3d(0, 0, 0);
       transform: translate3d(0, 0, 0);
    }

    解决方法三:移除触发硬件加速的CSS规则

    拓展4:什么是16ms优化

            大多数设备的刷新频率是60次/秒(1000/60 = 16.6ms),也就是说浏览器对每一帧画面的渲染工作要在16ms内完成,超出这个时间,页面的渲染就会出现卡顿现象,影响用户体验。

            浏览器在一帧里面,会依次执行以下这些动作。减少或者避免layout,paint可以让页面不卡顿,动画效果更加流畅。

    1、JavaScript:JS实现动画效果,DOM元素操作等
    2、Style(计算样式):确定每个DOM元素应该应用什么CSS规则
    3、Layout(布局):计算每个DOM元素在最终屏幕上显示的大小和位置。由于web页面的元素布局是相对的,所以其中任意一个元素的位置发生变化,都会联动的引起其他元素发生变化,这个过程叫reflow。
    4、Paint(绘制):在多个层上绘制DOM元素的的文字、颜色、图像、边框和阴影等
    5、Composite(渲染层合并):按照合理的顺序合并图层然后显示到屏幕上

            利用GPU加速优先使用渲染层合并属性,可以避免layout,paint。举例:可以通过改变元素的transform实现移动,伸缩变换而非改变物体的left,top,width,height避免layout,paint。让动画效果更加流畅。

    拓展5:rendering中Layer borders

            打开这个设置后,可以看到页面上出现了黄色的边框和蓝色的栅格,其中黄色边框代表有动画3d变换的元素,表示放到了一个新的复合层(composited layer)中渲染。蓝色栅格可以看作是比层更低一级的单位,这些区域就是RenderLayer。注意,打开一个页面,如果该页面的黄色边框很多,那么肯定要查看一下原因了。

    展开全文
  • NVIDIA发布用于数据增强和JPEG图像解码的GPU加速库:NVIDIA DALI & NVIDIA nvJPEG NVIDIA DALI 深度学习应用程序需要复杂的多阶段预处理数据管道。 此类数据管道涉及在 CPU 上执行的计算密集型操作。 例如,从磁盘...
  • 创建一个从javascript函数转换而来的GPU加速内核,该javascript函数计算512 x 512矩阵(2D数组)中的单个元素。 内核功能是在GPU上串联运行的,通常会导致非常快速的计算! 您可以在运行基准测试。 通常,根据硬件...
  • 关于GPU加速的一些问题 对于GPU加速一直觉得是一个很高端的东西,可以提升计算的速度,但真正用到自己身上的时候才发现面临很多的问题。 硬件配置 自己想要尝试,但是却又没有新添设备,想用自己的笔记本先弄白其中...

    关于GPU加速的一些问题

    对于GPU加速一直觉得是一个很高端的东西,可以提升计算的速度,但真正用到自己身上的时候才发现面临很多的问题。

    硬件配置

    自己想要尝试,但是却又没有新添设备,想用自己的笔记本先弄白其中的原理。自己的笔记本配置有NVIDIAGEFORCE 920M,在英伟达官网查询的结果显示还是支持CUDA的,心怀感激,毕竟自己的本子也有些年岁,当年也算不上什么高端机。

    说干就干,安装CUDA的坑还是不少的。

    其一,显卡驱动的版本问题,cuda的版本问题都是环环相扣的,在英伟达的官网中部分叙述(自己的本子是win10的系统,当初从win8直接升级起来的,里面有些问题也一直没有解决,因为对本子依赖挺多,就之一没有动系统,这次也没有打算做Linux的尝试,但后来发现埋下很多坑)

    提醒以下,安装的步骤很多情况下很说明问题,关键点在于一些依赖关系的存在,所以老老实实按顺序来是很重要的。

    首先,上VS。自己一开始以为不是很重要,导致CUDA的部分安装失败很是苦恼。最好上了VS2017
    其次,不要相信驱动自动更新。有时候自动更新的驱动会是最新的或是特别版本的,所以兼容性可想而知,所以适用的稳定版本才是王道。最好是官方测试过的版本。

    最后完成的配置是:
    385.54的显卡驱动+9.0的CUDA+7.5的CUDNN
    (cudnn的正确安装方式参考

    兼容问题从来没有完整的解决方案,针对不同的情况还是只能采取不同的解决方法。欢迎大家一起讨论。

    软件配置

    自己没有跳出win10的平台窠臼,就将就这么用着了,毕竟也不是上什么项目,学习为主。主要的软件平台有两个:MATLABPYTHON

    从软件平台的角度讲,只要支持,用着顺手就行(关于这方面,自己C语言出身,之后发现其他上手都挺快,当然要成为master就不容易了,这方面以后有空写)。

    自己之前装的MATLAB2016B,还可以该有的机器学习相关的模块也有,和GPU加速相关的模块也有,MATLAB自带帮助这点挺招人喜欢的。在硬件配置完成之后基本按照帮助手册GPU加速就可以简单入门了。自己的GEFORCE 920M算力3.5,和自己低功耗的i5-5200U相比在特定的计算上还是有些优势的。

    PYTHON,火于机器学习的语言吧,不加评论,典型的可以GPU加速的库tensorflow。装tensorflow让人感受到一丝不友好。

    初始情况是win10平台安装了PYTHON 2.7,然而tensorflow在win10平台不支持PYTHON 2.7,只能在装PYTHON 3,因为PYTHON 2PYTHON 3本事不兼容,又PYTHON 2自己还有点用,只能选择同时安装PYTHON 2PYTHON 3(PYTHON 2PYTHON 3熟悉的人都知道也不评论)。

    很不幸的下了PYTHON 3最新的3.7,但tensorflow在win10平台下支持3.5和3.6,很不甘心地找到了一个trick方法,利用tensorflow的PYTHON3.6版本装在了PYTHON 3.7上。有时候总是很愚蠢,装完发现tensorflow是cpu版本的,折腾gpu版本的时候,trick方法不是很好用了(也有说采用自己编译安装的方式,过于麻烦就没有尝试了)。最后卸载PYTHON 3.7,安装PYTHON3.6,装上了tensorflow_gpu_1.12。

    应该有人能猜到了,GEFORCE 920M的算力3.5被残忍拒绝了(tensorflow版本发布的时候没有明显的GPU算力要求,只是说3.5或更高,可能默认大家用的GPU都不会太差吧),事实上,tensorflow_gpu_1.10还是支持算力3.5的GPU,但tensorflow_gpu_1.11以及之后的版本最低要求就变成3.7的算力了,这应该就是其所谓的更高了。

    (这在说明下之前配置CUDA时选用9.0版本也是有原因的,因为考虑到之后会装tensorflow,官网明确说明支持9.0,这是对应tenorflow_1.12的,tensorflow旧的版本对CUDA的支持也不同,可以参考官网说明,现在tensorflow已经除了1.13,CUDA也已经出了10,相信还会有很多版本匹配问题)

    到此,问题也告一段落了(包括忽略了tensorflow_gpu_1.10安装版本对AVX2的支持问题,相信也有人遇到)

    最后的PYTHON配置是2.7+3.6+tensorfow_gpu_1.10

    小结

    总结下来,有些问题的产生和本身的低配不无关系,毕竟有些东西也慢慢会被淘汰;另外win10平台也不是该领域的主要平台。当然整个流程下来还是有很多收获的,欢迎交流!

    展开全文
  • 首先确定你的显卡是否支持gpu加速,可在nvidia官网查看是否有你的显卡所对应的算力,如图。 为了不影响其他的工作环境,本教程创建anaconda虚拟python环境,打开Anaconda Prompt,输入指令 conda create -n your_...
  • 动态模拟 GPU加速的云的生成和动态模拟 论文 全,各个章节动态模拟 GPU加速的云的生成和动态模拟 论文 全,各个章节动态模拟 GPU加速的云的生成和动态模拟 论文 全,各个章节
  • 用于减少执行时间和加快FEM方程迭代解决方案的设计,尤其是当行长度不均匀时.MCTO应用的FEM大约比CPU上传统FEM快10倍,并且比其他基于行的主要排序格式快数值结果表明,建议的GPU加速存储格式是一种出色的加速器。
  • 线性RankSVM的GPU加速并行算法
  • AutoDock-GPU:适用于GPU和其他加速器的AutoDock 关于 OpenCL和Cuda加速版的AutoDock4.2.6。 它通过在多个计算单元上并行处理配体-受体姿势来利用其令人尴尬的可并行LGA。 OpenCL版本是与TU-Darmstadt合作开发的,...
  • Android图形系统及GPU加速分析
  • 这个项目本来是用来支持Chainer这个深度学习框架的,但是开发者把这个“GPU 计算包”单独分出来了,方便了大家!!! 来看几个例子: import numpy as np import cupy as cp import time x=np.ones((1024,512,4,...

    CuPy 项目地址:https://cupy.chainer.org/ 

    这个项目本来是用来支持Chainer这个深度学习框架的,但是开发者把这个“GPU 计算包”单独分出来了,方便了大家!!!

    来看几个例子:

    import numpy as np
    import cupy as cp
    import time
    
    x=np.ones((1024,512,4,4))*1024.
    y=np.ones((1024,512,4,1))*512.3254
    time1=time.time()
    for i in range(20):
        z=x*y
    print('average time for 20 times cpu:',(time.time()-time1)/20.)
    
    x=cp.ones((1024,512,4,4))*1024.
    y=cp.ones((1024,512,4,1))*512.3254
    time1=time.time()
    for i in range(20):
        z=x*y
    print('average time for 20 times gpu:',(time.time()-time1)/20.)

    这里之所以要弄个20次的平均,是因为,最开始的几次计算会比较慢!后面的计算速度才是稳定的,cpu和gpu都有一定这个特性,这个原因cpu和gpu是不同!和“操作系统的本身算法、GPU工作方式”等有关系吧?

    接下来,我们把矩阵规模减小

    x=np.ones((4,4,4,4))*1024.
    y=np.ones((4,4,4,1))*512.3254
    
    x=cp.ones((4,4,4,4))*1024.
    y=cp.ones((4,4,4,1))*512.3254

    GPU失去了优势,所以也不是所有计算都需要放到gpu上来加速的!有时候cpu算一算也是可以的!

    cupy种几乎包含了numpy种通常有的很多function了!所以基本上再用的时候只要把‘np’ 换成‘cp’就好了!很方便

    展开全文
  • GPU 研究适用于Apple M1的开源图形堆栈。 裹 使用包含的makefile make wrap.dylib ,并通过设置环境变量DYLD_INSERT_LIBRARY=/Users/bloom/gpu/wrap.dylib插入到任何Metal应用程序中。 贡献者 IRC上的Alyssa ...
  • GPU 加速 Linux 云桌面 作为我日常工作的一部分,我一直在研究运行支持 OpenGL 的基于 Linux 的云桌面。 目前似乎没有供应商提供这个作为解决方案,所以我不得不自己动手。 我希望这对某人有用,我希望开源社区可以...
  • Python中的GPU加速的深度学习库 Hebel是一个用于Python深度神经网络学习的库,它通过PyCUDA通过CUDA与GPU一起使用GPU加速。 它实现了最重要的神经网络模型类型,并提供了各种不同的激活函数和训练方法,例如动量,涅...
  • 通过GPU加速数据挖掘的研究进展和实践,GPU在数据挖掘有极大意义
  • matlab运算采用GPU加速的资料,通过matlab和cuda的交互,提升matlab运行的计算速度

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,529
精华内容 28,611
关键字:

如何关闭gpu加速