色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CUDA強大新工具:nvprof 命令行探查器

星星科技指導員 ? 來源:NVIDIA ? 作者:Mark Harris ? 2022-04-11 09:53 ? 次閱讀

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

使用 nvprof 進行快速檢查

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

    ==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]

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

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

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

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

使用nvprof進行遠程分析

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

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

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

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

非常方便的工具

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

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

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4747

    瀏覽量

    129020
  • Linux
    +關注

    關注

    87

    文章

    11314

    瀏覽量

    209792
  • WINDOWS
    +關注

    關注

    4

    文章

    3551

    瀏覽量

    88841
收藏 人收藏

    評論

    相關推薦

    圖形用戶界面與命令行接口的比較

    界面(GUI) : GUI是一種用戶界面,允許用戶通過圖形圖標和視覺指示與電子設備進行交互。 它通常包括窗口、按鈕、圖標和菜單等元素,用戶可以通過鼠標或觸摸屏進行操作。 命令行接口(CLI) : CLI是一種用戶界面,用戶通過輸入文本
    的頭像 發表于 11-12 14:38 ?407次閱讀

    Mobaxterm 的命令行使用方法

    的遠程桌面協議(如RDP和VNC),以及文件傳輸協議(如FTP和SFTP)。本文將詳細介紹如何使用Mobaxterm的命令行功能。 2. 安裝 Mobaxterm 在開始之前,確保你已經安裝
    的頭像 發表于 11-11 09:08 ?1517次閱讀

    APM32F411板的python+pyocd命令行操作

    前段時間學習了一下如何使用pyocd配合APM32F411VCTINY板在命令行下給它進行各種騷操作,在使用一段時間后就想著:pyocd是基于python的,那是不是也可以使用python腳本+pyocd使用起來呢?
    的頭像 發表于 10-18 16:21 ?319次閱讀
    APM32F411板的python+pyocd<b class='flag-5'>命令行</b>操作

    使用idf4.3在命令行打開menuconfig,如何才能開啟lwip配置界面?

    請問使用idf4.3在命令行打開menuconfig,如何才能開啟lwip配置界面。
    發表于 06-21 06:08

    請問CY8CKIT-005-A是否支持命令行編程?

    我使用 minipro4 SWD 和 MTB-programmer 5.0 對 MCU 編程,在批量生產中,我們希望使用腳本編程,它是否支持命令行編程?
    發表于 06-03 06:19

    鴻蒙ArkUI-X跨平臺開發:【命令行工具(ACE Tools)】

    ACE Tools是一套為ArkUI-X項目跨平臺應用開發者提供的命令行工具,支持在Windows/Ubuntu/macOS平臺運行,用于構建OpenHarmony/HarmonyOS、Android和iOS平臺的應用程序,其功能包括開發環境檢查,新建項目,編譯打包,安裝
    的頭像 發表于 05-21 17:39 ?1848次閱讀
    鴻蒙ArkUI-X跨平臺開發:【<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>(ACE Tools)】

    高效云端管理的秘訣——華為云命令行工具 KooCLI

    發現了云上命令行工具,我的云端管理效率從此得到了質的飛躍。 我從華為云官方產品幫助文檔中了解了 KooCLI 工具,文檔中介紹的便捷操作和高效管理讓我心動不已,于是,我開啟了我的體驗。通過簡單的
    的頭像 發表于 05-10 00:25 ?709次閱讀
    高效云端管理的秘訣——華為云<b class='flag-5'>命令行</b><b class='flag-5'>工具</b> KooCLI

    鴻蒙OpenHarmony南向:【Hi3516標準系統入門(命令行方式)】

    除小型系統外,Hi3516DV300開發板還支持標準系統。此章節簡要介紹如何使用命令行在Hi3516DV300開發板上進行標準系統的開發。
    的頭像 發表于 05-08 09:26 ?900次閱讀
    鴻蒙OpenHarmony南向:【Hi3516標準系統入門(<b class='flag-5'>命令行</b>方式)】

    STM8 flash loader命令行調用錯誤的原因?

    [td]我目前在用flash loader的命令行,編寫自己的上位機軟件來升級程序,但是在用命令行調用的時候一直出錯,有人能幫忙分析下嗎? 我編寫的bat文件
    發表于 05-06 07:23

    HarmonyOS開發:【基于命令行(安裝庫和工具集)】

    使用命令行進行設備開發時,可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具
    的頭像 發表于 04-25 21:03 ?436次閱讀
    HarmonyOS開發:【基于<b class='flag-5'>命令行</b>(安裝庫和<b class='flag-5'>工具</b>集)】

    香港vps的centos如何切換命令行和桌面?

    要在CentOS上切換命令行和桌面環境,您可以通過以下步驟進行: 1、安裝桌面環境:如果您的CentOS VPS上還沒有安裝圖形桌面環境,您需要安裝一個。一般來說,常用的桌面環境有GNOME、KDE
    的頭像 發表于 04-10 17:41 ?673次閱讀

    STM32G070RB使用jlink命令行下載無法識別芯片怎么解決?

    STM32G070RB 使用jlink命令行下載無法識別芯片,想手動添加芯片,請問哪里可以下載驅動.elf文件 或者有什么方法能夠實現jlink命令行下載
    發表于 04-02 06:15

    分享一個據說是比Wget、Curl更強大的下載工具

    aria2 是一款輕量且高效的命令行下載工具。堪稱下載利器!
    的頭像 發表于 02-20 10:24 ?863次閱讀
    分享一個據說是比Wget、Curl更<b class='flag-5'>強大</b>的下載<b class='flag-5'>工具</b>!

    tasking的命令行控制中如何生成makefiles文件?

    tasking的命令行控制中如何生成makefiles文件?
    發表于 02-06 07:56

    在Linux上如何通過命令行來更改日期和時間?

    在Linux上如何通過命令行來更改日期和時間? 在Linux上,我們可以使用命令行工具來更改日期和時間。操作系統中有一個專門的命令被稱為“date”
    的頭像 發表于 01-16 17:10 ?2870次閱讀
    主站蜘蛛池模板: bt成人社区| 久在线观看福利视频| 日本特黄网站| 丰满艳妇亲伦| 亚洲AV无码国产精品色午夜情| 好男人社区| 99爱视频在线观看| 日韩在线中文字幕无码| 国产主播福利一区二区| 最近日本MV字幕免费观看视频| 欧洲-级毛片内射八十老太婆| 国产精品一区二区欧美视频| 在线观看视频国产| 色橹橹欧美在线观看视频高清 | 果冻传媒2021精品影视| 在线观看亚洲专区5555| 日韩精品在线看| 久久91精品国产91| 成都电影免费中文高清| 亚洲色欲H网在线观看| 欧美z000z猪| 狠狠色色综合网站| xxx日本免费| 伊人久久大香线蕉综合99| 人妻无码AV中文系统久久免费| 国产三级精品三级在线观看 | 成人性生交大片免费看中文| 亚洲欧美成人综合| 日韩精品a在线视频| 久久精品一区二区三区资源网| 儿子操妈妈视频| 最近中文字幕高清中文| 午夜神器18以下不能进免费| 女性爽爽影院免费观看| 精品国产在线国语视频| 国产成人精视频在线观看免费| 最近高清中文字幕无吗免费看| 亚洲AV无码乱码在线观看浪潮| 日韩高清特级特黄毛片| 男人脱女人衣服吃奶视频| 精品少妇高潮蜜臀涩涩AV|