tensorflow在不同gpu上在加载libcuda,libcufft等库慢

2023-10-10 15:18

本文主要是介绍tensorflow在不同gpu上在加载libcuda,libcufft等库慢,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在做一些工程部署和传统算法的工作,遇到写坑,写些解决办法记录一下:

很多时候我们会面临在一台机器上进行编译和打包,在另外一台机器或者集群上进行部署,而机器与机器之间的gpu设备是不同型号的情况,这个时候做深度学习推理的时候会出现初始化加载很慢的情况,或者有二次加载的情况,这篇小博文就是讲如何解决的.

由于CUDA的JIT Compile(即时编译)机制,是为了应对未来没发布的gpu硬件时也能顺滑的让程序在新的gpu上优化.因为任何在运行时的被cuda加载的PTX代码都被显卡的驱动程序进一步编译成设备相关的二进制可执行代码,这一过程被叫做即时编译just in time compile.这种即时编译导致应用程序在启动时产生一定的时间开销.

所以你会看到,在启动你的深度学习模型服务的时候,会先加载一次cuda库,然后模型在推理的时候,会二次加载一次cuda库,而这个二次加载导致初始化耗时长,也就是jit带来的问题啦

详细介绍和解决办法可以参考cuda jit处理办法

有两种办法解决,fat binary和jit缓存

本人用的是jit缓存方法,因为很方便...

实测,1080ti的显卡编译的程序在tesla t4上运行,加载时间能达到5分钟以上...

经过jit缓存后降低到8s初始化加载时间,当然第一次加载之后有了缓存后面多次请求推理的时间都是正常的.

具体怎么做呢,只要在你启动脚本上设置几个环境变量就好了

export CUDA_CACHE_MAXSIZE=2147483648 #最大可以设置为4294967296
export CUDA_CACHE_DISABLE=0

这些表示什么意思具体可以自己去查查

对了,记得编译tensorflow的时候在./configure的时候要对相对应的显卡的算力进行编译噢,比如1080ti算力是6.1, 而tesla T4 是7.5

这些是我在tensorflow1.14版本上的C++ API操作的,不知道2.x版本是否有过优化

这篇关于tensorflow在不同gpu上在加载libcuda,libcufft等库慢的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/181293

相关文章

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模