哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CUDA強(qiáng)大新工具:nvprof 命令行探查器

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Mark Harris ? 2022-04-11 09:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CUDA 5 為 CUDA 工具箱添加了一個強(qiáng)大的新工具: nvprof 。 nvprof 是一個可用于 Linux 、 Windows 和 OS X 的命令行探查器。乍一看, nvprof 似乎只是 NVIDIA Visual Profiler 和 NSight 日蝕版 中圖形分析功能的無 GUI 版本。但是 nvprof 遠(yuǎn)不止這些;對我來說, nvprof 是一個輕量級的分析器,它達(dá)到了其他工具所不能達(dá)到的水平。

使用 nvprof 進(jìn)行快速檢查

我經(jīng)常想知道我的 CUDA 應(yīng)用程序是否按預(yù)期運(yùn)行。有時這只是一個正常的檢查:應(yīng)用程序是否在 GPU 上運(yùn)行內(nèi)核?它是否執(zhí)行過多的內(nèi)存復(fù)制?通過使用 nvprof ./myApp 運(yùn)行我的應(yīng)用程序,我可以快速看到它所使用的所有內(nèi)核和內(nèi)存副本的摘要,如下面的示例輸出所示。

    ==9261== Profiling application: ./tHogbomCleanHemi

    ==9261== Profiling result:

    Time(%)      Time     Calls       Avg       Min       Max  Name

     58.73%  737.97ms      1000  737.97us  424.77us  1.1405ms  subtractPSFLoop_kernel(float const *, int, float*, int, int, int, int, int, int, int, float, float)

     38.39%  482.31ms      1001  481.83us  475.74us  492.16us  findPeakLoop_kernel(MaxCandidate*, float const *, int)

      1.87%  23.450ms         2  11.725ms  11.721ms  11.728ms  [CUDA memcpy HtoD]

      1.01%  12.715ms      1002  12.689us  2.1760us  10.502ms  [CUDA memcpy DtoH]

在默認(rèn)的 摘要模式 中, nvprof 提供了應(yīng)用程序中 GPU 內(nèi)核和內(nèi)存副本的概述。摘要將對同一內(nèi)核的所有調(diào)用組合在一起,顯示每個內(nèi)核的總時間和總應(yīng)用程序時間的百分比。除了摘要模式之外, nvprof 還支持 GPU – 跟蹤和 API 跟蹤模式 ,它可以讓您看到所有內(nèi)核啟動和內(nèi)存副本的完整列表,在 API 跟蹤模式下,還可以看到所有 CUDA API 調(diào)用的完整列表。

下面是一個使用 nvprof --print-gpu-trace 評測在我的電腦上的兩個 GPUs 上運(yùn)行的 nbody 示例應(yīng)用程序的示例。我們可以看到每個內(nèi)核在哪個 GPU 上運(yùn)行,以及每次啟動使用的網(wǎng)格維度。當(dāng)您想驗證 multi- GPU 應(yīng)用程序是否按預(yù)期運(yùn)行時,這非常有用。

nvprof --print-gpu-trace ./nbody --benchmark -numdevices=2 -i=1

...

==4125== Profiling application: ./nbody --benchmark -numdevices=2 -i=1

==4125== Profiling result:

   Start  Duration            Grid Size      Block Size     Regs*    SSMem*    DSMem*      Size  Throughput           Device   Context    Stream  Name

260.78ms     864ns                    -               -         -         -         -        4B  4.6296MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]

260.79ms     960ns                    -               -         -         -         -        4B  4.1667MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]

260.93ms     896ns                    -               -         -         -         -        4B  4.4643MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]

260.94ms     672ns                    -               -         -         -         -        4B  5.9524MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]

268.03ms  1.3120us                    -               -         -         -         -        8B  6.0976MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]

268.04ms     928ns                    -               -         -         -         -        8B  8.6207MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]

268.19ms     864ns                    -               -         -         -         -        8B  9.2593MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]

268.19ms     800ns                    -               -         -         -         -        8B  10.000MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]

274.59ms  2.2887ms             (52 1 1)       (256 1 1)        36        0B  4.0960KB         -           -   Tesla K20c (0)         2         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [242]

274.67ms  981.47us             (32 1 1)       (256 1 1)        36        0B  4.0960KB         -           -  GeForce GTX 680         1         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [257]

276.94ms  2.3146ms             (52 1 1)       (256 1 1)        36        0B  4.0960KB         -           -   Tesla K20c (0)         2         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [275]

276.99ms  979.36us             (32 1 1)       (256 1 1)        36        0B  4.0960KB         -           -  GeForce GTX 680         1         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [290]



Regs: Number of registers used per CUDA thread.

SSMem: Static shared memory allocated per CUDA block.

DSMem: Dynamic shared memory allocated per CUDA block.

使用nvprofto ProfileAnything

nvprof 知道如何評測運(yùn)行在 GPUs NVIDIA 上的 CUDA 內(nèi)核,不管它們是用什么語言編寫的(只要它們是使用 CUDA 運(yùn)行時 API 或驅(qū)動程序 API 啟動的)。這意味著我可以使用 nvprof 來評測 OpenACC 程序(沒有顯式內(nèi)核),甚至可以在內(nèi)部生成 PTX 匯編內(nèi)核的程序。 Mark Ebersole 在他最近關(guān)于 CUDA Python 的 CUDA Cast ( 第十集 )中展示了一個很好的例子,其中他使用 NumbaPro 編譯器(來自 Continuum Analytics )及時編譯了一個 Python 函數(shù),并在 GPU 上并行運(yùn)行。

在 OpenACC 或 CUDA Python 程序的初始實(shí)現(xiàn)過程中,函數(shù)是否在 nvprof 或 GPU 上運(yùn)行可能并不明顯(尤其是如果您沒有計時)。在 Mark 的例子中,他在 GPU 內(nèi)部運(yùn)行 Python 解釋器,捕捉應(yīng)用程序的 CUDA 函數(shù)調(diào)用和內(nèi)核啟動的跟蹤,顯示內(nèi)核確實(shí)在 GPU 上運(yùn)行,以及用于將數(shù)據(jù)從 CPU 傳輸?shù)?GPU 的 cudaMemcpy 調(diào)用。這是一個很好的例子,說明了像 nvprof 這樣的輕量級命令行 GPU 探查器的“健全性檢查”功能。

使用nvprof進(jìn)行遠(yuǎn)程分析

有時,您正在部署的系統(tǒng)不是您的桌面系統(tǒng)。例如,如果您使用的是 GPU 集群或云系統(tǒng),如 Amazon EC2 ,并且您只能通過終端訪問機(jī)器。這是 nvprof 的另一個重要用途。只需連接到遠(yuǎn)程計算機(jī)(例如使用 ssh ,并在 nvprof 下運(yùn)行應(yīng)用程序。

通過使用 --output-profile 命令行選項,您可以輸出一個數(shù)據(jù)文件,以便以后導(dǎo)入到 nvprof 或 NVIDIA 可視化探查器中。這意味著您可以在遠(yuǎn)程計算機(jī)上捕獲一個概要文件,然后在可視化分析器中可視化并分析桌面上的結(jié)果(有關(guān)詳細(xì)信息,請參見“ 遠(yuǎn)程分析 ”)。

nvprof 提供了一個方便的選項( --analysis-metrics ),用于捕獲 visualprofiler 在其“引導(dǎo)分析”模式下所需的所有 GPU 指標(biāo)。下面的屏幕截圖顯示了用于確定內(nèi)核瓶頸的可視化分析器。此分析的數(shù)據(jù)是使用下面的命令行捕獲的。

nvprof --analysis-metrics -o  nbody-analysis.nvprof ./nbody --benchmark -numdevices=2 -i=1
分析從 nvp 命令行分析器導(dǎo)入的數(shù)據(jù)的 NVIDIA 可視化分析器( nvp )的屏幕截圖。

非常方便的工具

如果您是命令行工具的粉絲,我想您會喜歡使用 nvprof 。 nvprof 可以做的還有很多,我在這里還沒有提到,比如在 NVIDIA 可視化分析器中收集分析指標(biāo)。關(guān)于作者

Mark Harris 是 NVIDIA 杰出的工程師,致力于 RAPIDS 。 Mark 擁有超過 20 年的 GPUs 軟件開發(fā)經(jīng)驗,從圖形和游戲到基于物理的模擬,到并行算法和高性能計算。當(dāng)他還是北卡羅來納大學(xué)的博士生時,他意識到了一種新生的趨勢,并為此創(chuàng)造了一個名字: GPGPU (圖形處理單元上的通用計算)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    5272

    瀏覽量

    136074
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11817

    瀏覽量

    219565
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3706

    瀏覽量

    94330
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    ROC rk3588s PC的uboot命令行的啟動

    到了 Ubuntu 啟動流程。根據(jù)您的 Wiki 指導(dǎo),我曾嘗試在啟動時通過串口終端反復(fù)按下 Ctrl+C、空格等按鍵,但始終無法進(jìn)入 U-Boot 命令行。我懷疑是 U-Boot 環(huán)境變量中的 bootdelay
    發(fā)表于 04-06 21:40

    涂鴉CLI正式開源:讓AI Agent一行命令管理3000+品類智能設(shè)備

    最近,CLI(命令行工具)正在成為AIAgent時代的基礎(chǔ)設(shè)施。飛書、企業(yè)微信、釘釘?shù)榷嗉抑髁鬓k公協(xié)作平臺,相繼開源了各自的CLI工具,將消息、文檔、日程等產(chǎn)品能力封裝為命令行接口,供
    的頭像 發(fā)表于 04-02 18:10 ?327次閱讀
    涂鴉CLI正式開源:讓AI Agent一行<b class='flag-5'>命令</b>管理3000+品類智能設(shè)備

    運(yùn)維工程師必須掌握的10個系統(tǒng)命令

    系統(tǒng)命令是運(yùn)維工程師與服務(wù)交互的基礎(chǔ)工具。雖然現(xiàn)代運(yùn)維工作有大量的自動化工具和平臺,但掌握核心系統(tǒng)命令仍然必要。
    的頭像 發(fā)表于 03-23 10:28 ?224次閱讀

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過調(diào)用Kubernetes API Server實(shí)現(xiàn)對集群資源的全面管理。在生產(chǎn)環(huán)境中,運(yùn)維工程師需要熟練掌握kubectl命令
    的頭像 發(fā)表于 02-02 16:40 ?600次閱讀

    AI智能體工具及其配置介紹

    AI智能體(Agent)能夠操控你的編程環(huán)境工具,簡化了你對集成環(huán)境的操作。而最近的命令行界面(CLI)智能體,從操作系統(tǒng)命令行獲得更多系統(tǒng)權(quán)限,進(jìn)一步簡化了你編程的操作,甚至可以幫助你整理文件
    的頭像 發(fā)表于 12-30 10:49 ?938次閱讀
    AI智能體<b class='flag-5'>工具</b>及其配置介紹

    命令行阿里千問搭建過程

    克隆千問倉庫,安裝依賴; 下載模型權(quán)重; 命令行執(zhí)行啟動腳本,配置參數(shù)后運(yùn)行推理。
    發(fā)表于 12-24 10:35

    SSH與Xshell的本質(zhì)區(qū)別及功能對比

    /sftp等命令行工具 內(nèi)置SFTP/SCP文件管理 多會話管理 需手動維護(hù)多個終端窗口 支持標(biāo)簽頁分組、會話模板及批量操作 高級功能 原生支持端口轉(zhuǎn)發(fā)、動態(tài)代理、X11轉(zhuǎn)發(fā)等 增強(qiáng)斷線重連、宏錄制
    發(fā)表于 11-07 06:40

    【飛凌T527N開發(fā)板試用】CAN的使用

    端 can1:用命令行發(fā)送 先使能can1,然后設(shè)置發(fā)送長度。 執(zhí)行 cangen就可以開始發(fā)送,在接收端就收到了數(shù)據(jù)。 反之can0,qt應(yīng)用發(fā)送, can1,命令行接受 測試demo學(xué)習(xí) 命令行
    發(fā)表于 08-19 17:27

    如何進(jìn)行tflite模型量化

    在windows上,如果我們按照上一期的方式安裝了tflite2pb,是不能直接運(yùn)行的。因為命令行工具是為linux編譯的。
    的頭像 發(fā)表于 08-13 11:45 ?1801次閱讀
    如何進(jìn)行tflite模型量化

    所見即所得——Luban-Lite VS Code插件讓開發(fā)實(shí)現(xiàn)“命令行自由”

    NEWS所見即所得!Luban-LiteVSCode插件指南親愛的開發(fā)者朋友們,你是否還在為嵌入式開發(fā)中頻繁切換命令行而抓狂?配置環(huán)境參數(shù)如“走迷宮”,編譯燒錄還需切換AiBurn?今天,匠芯創(chuàng)為您
    的頭像 發(fā)表于 08-07 15:38 ?1242次閱讀
    所見即所得——Luban-Lite VS Code插件讓開發(fā)實(shí)現(xiàn)“<b class='flag-5'>命令行</b>自由”

    解析K8S實(shí)用命令

    前言: 作為運(yùn)維工程師,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文將深入解析 K8S 最實(shí)用的命令,從基礎(chǔ)操作到高級技巧,助你成為容器化集群管理專家。
    的頭像 發(fā)表于 07-24 14:07 ?1009次閱讀

    USB串行配置實(shí)用程序是否有可用的命令行版本?

    USB串行配置實(shí)用程序是否有可用的命令行版本?
    發(fā)表于 07-22 08:09

    labview通過JKL.net發(fā)送cmd命令行問題

    請問通過電腦直接發(fā)ssh命令,能正常輸出,但通過JKL.net發(fā)送,提示\'\'ssh\'\'不是內(nèi)部命令,如何解決?
    發(fā)表于 07-02 21:11

    淺談wsl --update` 命令行選項無效的解決方案

    PS C:\Users\Administrator> wsl --update >> 命令行選項無效: --update
    的頭像 發(fā)表于 06-27 10:28 ?1.2w次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot常用命令之查看命令

    上電后,在uboot倒計時結(jié)束前按下空格,輸入9進(jìn)入uboot命令行:進(jìn)入uboot命令行之后,可以通過輸入“?”或者h(yuǎn)elp可以查看uboot全部命令。如圖(圖未截全):每一個命令
    發(fā)表于 05-22 11:26
    新宁县| 府谷县| 山丹县| 石嘴山市| 温宿县| 得荣县| 万盛区| 郯城县| 天长市| 广西| 富平县| 安陆市| 丹阳市| 托里县| 清新县| 桦川县| 林芝县| 安福县| 马公市| 东平县| 本溪| 兰考县| 广西| 方城县| 子洲县| 萍乡市| 九寨沟县| 泰州市| 古丈县| 本溪| 嘉定区| 桑植县| 石河子市| 江山市| 惠东县| 苗栗市| 白城市| 沙洋县| 遵义市| 同心县| 晋州市|