最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java獲取nvidia顯卡信息的實(shí)現(xiàn)示例

 更新時(shí)間:2024年02月26日 10:25:08   作者:天使手兒  
現(xiàn)在的需求是要獲取nvidia顯卡的使用情況,本文主要介紹了java獲取nvidia顯卡信息的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

AI開發(fā)通常使用到GPU,但通常使用的是python、c++等語言,java用的則非常少。這也導(dǎo)致了java在gpu相關(guān)的庫比較少?,F(xiàn)在的需求是要獲取nvidia顯卡的使用情況,如剩余顯存。這里給出兩種較簡單的解決方案。

基于nivdia-smi工具

顯卡是硬件,當(dāng)然需要操作系統(tǒng)支持相關(guān)的驅(qū)動(dòng)程序。首先要確保的正確安裝了nvidia的相關(guān)驅(qū)動(dòng)程序。輸入命令nvidis-smi后有類似下面的輸出,即證明當(dāng)前機(jī)器已安裝好了驅(qū)動(dòng)程序。我們這個(gè)方案也是基于nvidia-smi這個(gè)命令來做的。

在這里插入圖片描述

我們可以看到上圖的輸出,表面了當(dāng)前的驅(qū)動(dòng)版本、CUDA版本、顯卡數(shù)量、顯存、顯卡利用率,當(dāng)前使用進(jìn)程等信息。但是明顯是給人來看的,我們想放到程序中則需要進(jìn)行解析。好在該工具提供了xml格式輸出:

在這里插入圖片描述

于是有了思路:

  • 通過進(jìn)程調(diào)用nvidia-smi,并獲取xml輸出結(jié)果
  • 解析xml格式,獲取需要的內(nèi)容
  • 將需要的內(nèi)容轉(zhuǎn)為java bean以供使用

具體的xml格式使用"nvidia-smi -q -x"一看便知,我在這里也就不贅述如何解析了。這里給出一個(gè)簡單的庫,目前只包含了顯存信息的解析,其余內(nèi)容沒有實(shí)現(xiàn):https://gitee.com/angelhand/vel-koz

基于nvml綁定庫

上面提到的nvidia-smi工具實(shí)際上是英偉達(dá)基于工具nvml實(shí)現(xiàn)的,這里有對該工具的一些介紹:https://developer.nvidia.com/nvidia-management-library-nvml

該工具是一個(gè)c編寫的管理工具,上面文檔有介紹具體的API。工具可以通過GPU Deployment Kit一并安裝,GPU Deployment Kit又是CUDA Toolkit的一部分。不過CUDA8.0之后,GPU Deployment Kit不再單獨(dú)提供,而是合并到了CUDA Toolkit里了。什么意思呢,就是CUDA8.0之后,要使用nvml,只需要安裝CUDA Toolkit:https://developer.nvidia.com/cuda-downloads。使用這個(gè)方案是一定要安裝的哦。不過Windows11環(huán)境下,使用系統(tǒng)更新自動(dòng)安裝好的驅(qū)動(dòng)就可以了,不需要額外下載(40系顯卡31版本驅(qū)動(dòng),舊版本不保證)。

環(huán)境安裝好之后使用https://github.com/henkelmax/nvmlj這個(gè)綁定庫。這里有同學(xué)要問綁定庫是什么意思,簡單解釋一下。前面提到的nvml工具是c寫的,提供了一個(gè)nvml.h的頭文件,其他語言要使用就需要對這些功能做一個(gè)映射(綁定)。這個(gè)頭文件就類似于java中的接口。java對c的映射可以使用JNI技術(shù),另外還有比較簡單的JNA。我們這個(gè)庫就是基于JNA實(shí)現(xiàn)的。下面來展示如何使用。

首先修改一下源:

<repository>
  <id>henkelmax.public</id>
  <url>https://maven.maxhenkel.de/repository/public</url>
</repository>

然后使用進(jìn)行依賴引入:

<dependency>
  <groupId>de.bommel24.nvmlj</groupId>
  <artifactId>nvmlj</artifactId>
  <version>1.0.2</version>
</dependency>

使用起來也很簡單:

public class Main {
    public static void main(String[] args) throws NVMLJException {
        // The path to the nvml library (Defaults to C:/Program Files/NVIDIA Corporation/NVSMI/nvml.dll)
        // windows系統(tǒng)需要這樣設(shè)置
        System.setProperty("nvml.path", "C:\\Windows\\System32\\nvml.dll");
        // 這是我的wsl找到的,實(shí)體機(jī)可以whereis一下
        System.setProperty("nvml.path", "/usr/lib/wsl/lib/libnvidia-ml.so.1");
        NVMLJ.nvmlInit();
        System.out.println(NVMLJ.nvmlDeviceGetCount());
        // 不要忘記關(guān)閉資源
        NVMLJ.nvmlShutdown();
    }
}

這里有個(gè)點(diǎn)需要注意一下,就是代碼里那行System.setProperty()。set的內(nèi)容實(shí)際上就是nvml的動(dòng)態(tài)鏈接庫。Windows較新版本的目錄就是上面提到的目錄,可以找一下是否存在。Linux下,我使用的是wsl ubuntu22.04系統(tǒng),在上面那個(gè)目錄里。如果你使用的是其他版本的系統(tǒng),可以whereis libnvidia-mi.so.1來查找一下庫的具體位置。你可能會(huì)查出來多個(gè)位置,或者沒有。那么再查一下libnvidia-ml.so(后面沒有.1)。具體哪個(gè)管用試試就知道了,不過通常是會(huì)出現(xiàn)再usrlib/lib32/lib64的子目錄或者子子(子…)目錄下了。

到此這篇關(guān)于java獲取nvidia顯卡信息的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)java獲取nvidia顯卡信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 將 list 字符串用逗號隔開拼接字符串的多種方法

    java 將 list 字符串用逗號隔開拼接字符串的多種方法

    這篇文章主要介紹了java 將 list 字符串用逗號隔開拼接字符串,本文給大家分享四種方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • java日志門面之JCL和SLF4J詳解

    java日志門面之JCL和SLF4J詳解

    這篇文章主要給大家介紹了關(guān)于java日志門面之JCL和SLF4J的相關(guān)資料,在系統(tǒng)開發(fā)過程中日志框架的選擇與更換是一大挑戰(zhàn),日志門面的概念,如JCL和SLF4J,允許開發(fā)者面向接口編程,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決

    java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決

    這篇文章主要給大家介紹了關(guān)于java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決的相關(guān)資料,數(shù)組越界訪問是一個(gè)非常嚴(yán)重的問題,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 淺談springMVC接收前端json數(shù)據(jù)的總結(jié)

    淺談springMVC接收前端json數(shù)據(jù)的總結(jié)

    下面小編就為大家分享一篇淺談springMVC接收前端json數(shù)據(jù)的總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Java使用String.format方法格式化字符串的示例詳解

    Java使用String.format方法格式化字符串的示例詳解

    在編程過程中,我們經(jīng)常需要?jiǎng)?chuàng)建格式化的字符串來滿足特定的需求,比如生成用戶友好的消息、構(gòu)建報(bào)告或是輸出調(diào)試信息,Java 提供了一個(gè)強(qiáng)大的工具——String.format 方法,本文給大家介紹了Java使用String.format方法格式化字符串的示例,需要的朋友可以參考下
    2024-11-11
  • 使用SpringBoot配置https(SSL證書)

    使用SpringBoot配置https(SSL證書)

    這篇文章主要介紹了使用SpringBoot配置https(SSL證書),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • ShardingSphere jdbc實(shí)現(xiàn)分庫分表核心概念詳解

    ShardingSphere jdbc實(shí)現(xiàn)分庫分表核心概念詳解

    這篇文章主要為大家介紹了ShardingSphere jdbc實(shí)現(xiàn)分庫分表核心概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Java的RocketMQ之消息存儲(chǔ)和查詢原理詳解

    Java的RocketMQ之消息存儲(chǔ)和查詢原理詳解

    這篇文章主要介紹了Java的RocketMQ之消息存儲(chǔ)和查詢原理詳解,一臺(tái)Broker服務(wù)器只有一個(gè)CommitLog文件(組),RocketMQ會(huì)將所有主題的消息存儲(chǔ)在同一個(gè)文件中,這個(gè)文件中就存儲(chǔ)著一條條Message,每條Message都會(huì)按照順序?qū)懭?需要的朋友可以參考下
    2024-01-01
  • Java封裝Redis非阻塞分布式鎖徹底解決表單重復(fù)提交主鍵沖突問題

    Java封裝Redis非阻塞分布式鎖徹底解決表單重復(fù)提交主鍵沖突問題

    本文基于原生RedisTemplate封裝通用非阻塞分布式鎖工具類,實(shí)現(xiàn)鎖邏輯與業(yè)務(wù)邏輯解耦,兼顧易用性與安全性,同時(shí)解決鎖與事務(wù)配合、鎖釋放時(shí)機(jī)、失敗重試等核心坑點(diǎn),感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • java springmvc 注冊中央調(diào)度器代碼解析

    java springmvc 注冊中央調(diào)度器代碼解析

    這篇文章主要介紹了java springmvc 注冊中央調(diào)度器代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評論

临猗县| 拜城县| 新民市| 乡城县| 南靖县| 南郑县| 开鲁县| 青州市| 修武县| 阳江市| 马尔康县| 汤原县| 大冶市| 陆河县| 阳东县| 无锡市| 二连浩特市| 莱芜市| 恩施市| 天门市| 喀喇沁旗| 浠水县| 永顺县| 南阳市| 抚顺市| 务川| 南召县| 乐东| 宣威市| 梁平县| 峡江县| 台南县| 宣武区| 新田县| 夏津县| 东乌| 泸州市| 颍上县| 定边县| 昌乐县| 崇左市|