1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601
|
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
<meta name="copyright" content="(C) Copyright 2005"></meta>
<meta name="DC.rights.owner" content="(C) Copyright 2005"></meta>
<meta name="DC.Type" content="concept"></meta>
<meta name="DC.Title" content="User Guide"></meta>
<meta name="DC.Coverage" content="Nsight Systems"></meta>
<meta name="DC.subject" content="User Guide, CLI, mpirun, qdstrm, GUI, macOS, Windows, Linux, Profiling, Ftrace, Context_Switch, Symbols, Hotkey, QNX, Arrow, Exporter, Export, Sqlite, JSON, Txt, Enum, Samples, Examples, Reports, Scripts, Formats, CSV, HTML, TSV, Statistics, nvprof, NVVP, Migration, Docker, Container, DX11, DX12, D3D11, D3D12, DirectX, WDDM, Vulkan, Stutter, OpenGL, Frame, VSYNC, FPS, OpenMP, OMPT, OSRT, Pthread, NVTX, Domain, Range, Category, CUDA, allocation, memory, graph, OpenACC, OpenGL_ES, ETW, Metric, Counter, PCIe, NVLink, network, communication, MPI, UCX, NCCL, OpenSHMEM, NVSHMEM, OpenMPI, MPICH, Report, nsys-rep, Qdproj, Timeline, Events, Function, Top_Down, Bottom_Up, Flat, Filtering, analyze, expert, stats, NVTXT, ImportNvtxt, Integration, Visual Studio, Troubleshooting, Debugging, Feedback, Launch, Backtrace, ELF, Blogposts, Videos, Training, Presentations, Support"></meta>
<meta name="keywords" content="User Guide, CLI, mpirun, qdstrm, GUI, macOS, Windows, Linux, Profiling, Ftrace, Context_Switch, Symbols, Hotkey, QNX, Arrow, Exporter, Export, Sqlite, JSON, Txt, Enum, Samples, Examples, Reports, Scripts, Formats, CSV, HTML, TSV, Statistics, nvprof, NVVP, Migration, Docker, Container, DX11, DX12, D3D11, D3D12, DirectX, WDDM, Vulkan, Stutter, OpenGL, Frame, VSYNC, FPS, OpenMP, OMPT, OSRT, Pthread, NVTX, Domain, Range, Category, CUDA, allocation, memory, graph, OpenACC, OpenGL_ES, ETW, Metric, Counter, PCIe, NVLink, network, communication, MPI, UCX, NCCL, OpenSHMEM, NVSHMEM, OpenMPI, MPICH, Report, nsys-rep, Qdproj, Timeline, Events, Function, Top_Down, Bottom_Up, Flat, Filtering, analyze, expert, stats, NVTXT, ImportNvtxt, Integration, Visual Studio, Troubleshooting, Debugging, Feedback, Launch, Backtrace, ELF, Blogposts, Videos, Training, Presentations, Support"></meta>
<meta name="DC.Format" content="XHTML"></meta>
<meta name="DC.Identifier" content="abstract"></meta>
<link rel="stylesheet" type="text/css" href="../common/formatting/commonltr.css"></link>
<link rel="stylesheet" type="text/css" href="../common/formatting/site.css"></link>
<title>User Guide :: Nsight Systems Documentation</title>
<!--[if lt IE 9]>
<script src="../common/formatting/html5shiv-printshiv.min.js"></script>
<![endif]-->
<script type="text/javascript" charset="utf-8" src="../common/scripts/tynt/tynt.js"></script>
-->
<script src="https://assets.adobedtm.com/5d4962a43b79/c1061d2c5e7b/launch-191c2462b890.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../common/formatting/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../common/formatting/jquery.ba-hashchange.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../common/formatting/jquery.scrollintoview.min.js"></script>
<script type="text/javascript" src="../search/htmlFileList.js"></script>
<script type="text/javascript" src="../search/htmlFileInfoList.js"></script>
<script type="text/javascript" src="../search/nwSearchFnt.min.js"></script>
<script type="text/javascript" src="../search/stemmers/en_stemmer.min.js"></script>
<script type="text/javascript" src="../search/index-1.js"></script>
<script type="text/javascript" src="../search/index-2.js"></script>
<script type="text/javascript" src="../search/index-3.js"></script>
<link rel="canonical" href="https://docs.nvidia.com/nsight-systems/UserGuide/index.html"></link>
<link rel="stylesheet" type="text/css" href="../common/formatting/qwcode.highlight.css"></link>
</head>
<body>
<header id="header"><span id="company">NVIDIA</span><span id="site-title">Nsight Systems Documentation</span><form id="search" method="get" action="search">
<input type="text" name="search-text"></input><fieldset id="search-location">
<legend>Search In:</legend>
<label><input type="radio" name="search-type" value="site"></input>Entire Site</label>
<label><input type="radio" name="search-type" value="document"></input>Just This Document</label></fieldset>
<button type="reset">clear search</button>
<button id="submit" type="submit">search</button></form>
</header>
<div id="site-content">
<nav id="site-nav">
<div class="category closed"><a href="../index.html" title="The root of the site.">Nsight Systems
v2022.4.1</a></div>
<div class="category"><a href="index.html" title="User Guide">User Guide</a></div>
<ul>
<li>
<div class="section-link"><a href="#cli-profiling">1. Profiling from the CLI</a></div>
<ul>
<li>
<div class="section-link"><a href="#cli-installing">1.1. Installing the CLI on Your Target</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-options">1.2. Command Line Options</a></div>
<ul>
<li>
<div class="section-link"><a href="#cli-global-options">1.2.1. CLI Global Options</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#cli-command-switches">1.3. CLI Command Switches</a></div>
<ul>
<li>
<div class="section-link"><a href="#cli-profile-command-switch-options">1.3.1. CLI Profile Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-start-command-switch-options">1.3.2. CLI Start Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-stop-command-switch-options">1.3.3. CLI Stop Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-cancel-command-switch-options">1.3.4. CLI Cancel Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-launch-command-switch-options">1.3.5. CLI Launch Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-shutdown-command-switch-options">1.3.6. CLI Shutdown Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-export-command-switch-options">1.3.7. CLI Export Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-stats-command-switch-options">1.3.8. CLI Stats Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-analyze-command-switch-options">1.3.9. CLI Analyze Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-status-command-switch-options">1.3.10. CLI Status Command Switch Options</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-sessions-command-switch-subcommands">1.3.11. CLI Sessions Command Switch Subcommands</a></div>
<ul>
<li>
<div class="section-link"><a href="#cli-sessions-list-command-switch-subcommands">1.3.11.1. CLI Sessions List Command Switch Options</a></div>
</li>
</ul>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#example-single-command-lines">1.4. Example Single Command Lines</a></div>
</li>
<li>
<div class="section-link"><a href="#example-interactive-cli-command-sequences">1.5. Example Interactive CLI Command Sequences</a></div>
</li>
<li>
<div class="section-link"><a href="#example-nsys-stats">1.6. Example Stats Command Sequences</a></div>
</li>
<li>
<div class="section-link"><a href="#example-output-stats-option">1.7. Example Output from --stats Option</a></div>
</li>
<li>
<div class="section-link"><a href="#importing-qdstrm-files">1.8. Importing and Viewing Command Line Results Files</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-analyze-mpi-codes">1.9. Using the CLI to Analyze MPI Codes</a></div>
<ul>
<li>
<div class="section-link"><a href="#cli-tracing-mpi-api-calls">1.9.1. Tracing MPI API calls</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-profiling-apps-launched-mpirun">1.9.2. Using the CLI to Profile Applications Launched with mpirun</a></div>
</li>
</ul>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#gui-profiling">2. Profiling from the GUI</a></div>
<ul>
<li>
<div class="section-link"><a href="#profiling-linux">2.1. Profiling Linux Targets from the GUI</a></div>
<ul>
<li>
<div class="section-link"><a href="#linux-connect-target">2.1.1. Connecting to the Target Device</a></div>
</li>
<li>
<div class="section-link"><a href="#linux-system-wide-profiling-options">2.1.2. System-Wide Profiling Options</a></div>
<ul>
<li>
<div class="section-link"><a href="#linux-x86-64">2.1.2.1. Linux x86_64</a></div>
</li>
<li>
<div class="section-link"><a href="#linux-for-tegra">2.1.2.2. Linux for Tegra</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#linux-target-sampling-options">2.1.3. Target Sampling Options</a></div>
</li>
<li>
<div class="section-link"><a href="#linux-hotkey-trace-start-stop">2.1.4. Hotkey Trace Start/Stop</a></div>
</li>
<li>
<div class="section-link"><a href="#linux-launch-processes">2.1.5. Launching Processes</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#profiling-windows">2.2. Profiling Windows Targets from the GUI</a></div>
</li>
<li>
<div class="section-link"><a href="#profiling-qnx">2.3. Profiling QNX Targets from the GUI</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#exporter">3. Export Formats</a></div>
<ul>
<li>
<div class="section-link"><a href="#exporter-sqlite-schema">3.1. SQLite Schema Reference</a></div>
</li>
<li>
<div class="section-link"><a href="#exporter-sqlite-event-values">3.2. SQLite Schema Event Values</a></div>
</li>
<li>
<div class="section-link"><a href="#export-sqlite-examples">3.3. Common SQLite Examples</a></div>
</li>
<li>
<div class="section-link"><a href="#exporter-arrow">3.4. Arrow Format Description</a></div>
</li>
<li>
<div class="section-link"><a href="#exporter-json-txt">3.5. JSON and Text Format Description</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#report-scripts">4. Report Scripts</a></div>
</li>
<li>
<div class="section-link"><a href="#migrate-nvprof">5. Migrating from NVIDIA nvprof</a></div>
</li>
<li>
<div class="section-link"><a href="#docker-profiling">6. Profiling in a Docker on Linux Devices</a></div>
</li>
<li>
<div class="section-link"><a href="#direct3d">7. Direct3D Trace</a></div>
<ul>
<li>
<div class="section-link"><a href="#d3d11-trace">7.1. D3D11 API trace</a></div>
</li>
<li>
<div class="section-link"><a href="#d3d12-trace">7.2. D3D12 API Trace</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#wddm-queues">8. WDDM Queues</a></div>
</li>
<li>
<div class="section-link"><a href="#wddm-hw-scheduler">9. WDDM HW Scheduler</a></div>
</li>
<li>
<div class="section-link"><a href="#vulkan">10. Vulkan API Trace</a></div>
<ul>
<li>
<div class="section-link"><a href="#vulkan-overview">10.1. Vulkan Overview</a></div>
</li>
<li>
<div class="section-link"><a href="#vulkan-pipeline-creation">10.2. Pipeline Creation Feedback</a></div>
</li>
<li>
<div class="section-link"><a href="#vulkan-gpu-trace">10.3. Vulkan GPU Trace Notes</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#stutter-analysis">11. Stutter Analysis</a></div>
<ul>
<li>
<div class="section-link"><a href="#fps-overview">11.1. FPS Overview</a></div>
</li>
<li>
<div class="section-link"><a href="#frame-health">11.2. Frame Health</a></div>
</li>
<li>
<div class="section-link"><a href="#gpu-memory-utilization">11.3. GPU Memory Utilization</a></div>
</li>
<li>
<div class="section-link"><a href="#vertical-sync">11.4. Vertical Synchronization</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#openmp-trace">12. OpenMP Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#os-runtime-trace">13. OS Runtime Libraries Trace</a></div>
<ul>
<li>
<div class="section-link"><a href="#osrt-locking-resource">13.1. Locking a Resource</a></div>
</li>
<li>
<div class="section-link"><a href="#osrt-limitations">13.2. Limitations</a></div>
</li>
<li>
<div class="section-link"><a href="#osrt-filters">13.3. OS Runtime Libraries Trace Filters</a></div>
</li>
<li>
<div class="section-link"><a href="#osrt-default-function">13.4. OS Runtime Default Function List</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#nvtx-trace">14. NVTX Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#cuda-trace">15. CUDA Trace</a></div>
<ul>
<li>
<div class="section-link"><a href="#cuda-gpu-memory-graph">15.1. CUDA GPU Memory Allocation Graph</a></div>
</li>
<li>
<div class="section-link"><a href="#unified-memory-trace">15.2. Unified Memory Transfer Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#cuda-graph">15.3. CUDA Graph Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#cuda-default-cli">15.4. CUDA Default Function List for CLI</a></div>
</li>
<li>
<div class="section-link"><a href="#cudnn-function-cli">15.5. cuDNN Function List for X86 CLI</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#openacc-trace">16. OpenACC Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#opengl-trace">17. OpenGL Trace</a></div>
<ul>
<li>
<div class="section-link"><a href="#opengl-cli">17.1. OpenGL Trace Using Command Line</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#custom-etw-trace">18. Custom ETW Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#gpu-metric-sampling">19. GPU Metrics</a></div>
</li>
<li>
<div class="section-link"><a href="#nvvideo-trace">20. NVIDIA Video Codec SDK Trace</a></div>
<ul>
<li>
<div class="section-link"><a href="#nvenc-default-function">20.1. NV Encoder API Functions Traced by Default</a></div>
</li>
<li>
<div class="section-link"><a href="#nvdec-default-function">20.2. NV Decoder API Functions Traced by Default</a></div>
</li>
<li>
<div class="section-link"><a href="#nvjpeg-default-function">20.3. NV JPEG API Functions Traced by Default</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#communication-trace">21. Network Communication Profiling</a></div>
<ul>
<li>
<div class="section-link"><a href="#mpi-trace">21.1. MPI API Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#openshmem-trace">21.2. OpenSHMEM Library Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#ucx-trace">21.3. UCX Library Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#nv-communications">21.4. NVIDIA NVSHMEM and NCCL Trace</a></div>
</li>
<li>
<div class="section-link"><a href="#NIC-sampling">21.5. NIC Metric Sampling</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#report">22. Reading Your Report in GUI</a></div>
<ul>
<li>
<div class="section-link"><a href="#generate-new-report">22.1. Generating a New Report</a></div>
</li>
<li>
<div class="section-link"><a href="#open-report">22.2. Opening an Existing Report</a></div>
</li>
<li>
<div class="section-link"><a href="#report-sharing">22.3. Sharing a Report File</a></div>
</li>
<li>
<div class="section-link"><a href="#report-tab">22.4. Report Tab</a></div>
</li>
<li>
<div class="section-link"><a href="#analysis-summary-view">22.5. Analysis Summary View</a></div>
</li>
<li>
<div class="section-link"><a href="#timeline-view">22.6. Timeline View</a></div>
<ul>
<li>
<div class="section-link"><a href="#timeline">22.6.1. Timeline</a></div>
</li>
<li>
<div class="section-link"><a href="#events-view">22.6.2. Events View</a></div>
</li>
<li>
<div class="section-link"><a href="#function-table-modes">22.6.3. Function Table Modes</a></div>
</li>
<li>
<div class="section-link"><a href="#filter-dialog">22.6.4. Filter Dialog</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#diagnostics-view">22.7. Diagnostics Summary View</a></div>
</li>
<li>
<div class="section-link"><a href="#symbol-resolution-view">22.8. Symbol Resolution Logs View</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#multi-report-support">23. Adding Report to the Timeline</a></div>
<ul>
<li>
<div class="section-link"><a href="#multi-report-time-sync">23.1. Time Synchronization</a></div>
</li>
<li>
<div class="section-link"><a href="#multi-report-hierarchy">23.2. Timeline Hierarchy</a></div>
</li>
<li>
<div class="section-link"><a href="#multi-report-mpi-example">23.3. Example: MPI</a></div>
</li>
<li>
<div class="section-link"><a href="#multi-report-limitations">23.4. Limitations</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#expert-systems">24. Using Nsight Systems Expert System</a></div>
</li>
<li>
<div class="section-link"><a href="#import-nvtxt">25. Import NVTXT</a></div>
</li>
<li>
<div class="section-link"><a href="#ballista-overview">26. Visual Studio Integration</a></div>
</li>
<li>
<div class="section-link"><a href="#troubleshooting">27. Troubleshooting</a></div>
<ul>
<li>
<div class="section-link"><a href="#general-troubleshooting">27.1. General Troubleshooting</a></div>
</li>
<li>
<div class="section-link"><a href="#cli-troubleshooting">27.2. CLI Troubleshooting</a></div>
</li>
<li>
<div class="section-link"><a href="#launch-stopped-linux">27.3. Launch Processes in Stopped State</a></div>
</li>
<li>
<div class="section-link"><a href="#gui-troubleshooting">27.4. GUI Troubleshooting</a></div>
</li>
<li>
<div class="section-link"><a href="#symbol-resolution-troubleshooting">27.5. Symbol Resolution</a></div>
</li>
<li>
<div class="section-link"><a href="#logging-troubleshooting">27.6. Logging</a></div>
</li>
</ul>
</li>
<li>
<div class="section-link"><a href="#other_resources">28. Other Resources</a></div>
</li>
</ul>
</nav>
<div id="resize-nav"></div>
<nav id="search-results">
<h2>Search Results</h2>
<ol></ol>
</nav>
<div id="contents-container">
<div id="breadcrumbs-container">
<div id="release-info">User Guide
(<a href="../pdf/UserGuide.pdf">PDF</a>)
-
v2022.4.1
(<a href="https://developer.nvidia.com/nsight-systems">older</a>)
-
Last updated November 14, 2022
-
<a href="mailto:devtools-support@nvidia.com?subject=Nsight Systems Documentation Feedback: User Guide">Send Feedback</a>
-
<span class="st_facebook"></span><span class="st_twitter"></span><span class="st_linkedin"></span><span class="st_reddit"></span><span class="st_slashdot"></span><span class="st_tumblr"></span><span class="st_sharethis"></span></div>
</div>
<article id="contents">
<div class="topic nested0" id="abstract"><a name="abstract" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#abstract" name="abstract" shape="rect">User Guide</a></h2>
<div class="body conbody">
<p class="p">
NVIDIA Nsight Systems user guide.
</p>
</div>
</div>
<div class="topic nested0" id="cli-profiling"><a name="cli-profiling" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#cli-profiling" name="cli-profiling" shape="rect">1. Profiling from the CLI</a></h2>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested1" id="cli-installing"><a name="cli-installing" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-installing" name="cli-installing" shape="rect">1.1. Installing the CLI on Your Target</a></h3>
<div class="body">
<p class="p">The <span class="ph">Nsight Systems</span> CLI provides a simple interface to collect
on a target without using the GUI. The collected data can then be copied to
any system and analyzed later.
</p>
<p class="p">The CLI is distributed in the Target directory of the standard
<span class="ph">Nsight Systems</span> download package. Users who want to install
the CLI as a standalone tool can do so by copying the files within the Target
directory. If you want the CLI output file (.qdstrm) to be auto-converted
(to .nsys-rep) after the analysis is complete, you will need to copy the host
directory as well.
</p>
<p class="p">If you wish to run the CLI without root (recommended mode), you will
want to install in a directory where you have full access.
</p>
<p class="p">Note that you must run the CLI on Windows as administrator.</p>
</div>
</div>
<div class="topic nested1" id="cli-options"><a name="cli-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-options" name="cli-options" shape="rect">1.2. Command Line Options</a></h3>
<div class="body">
<p class="p">The <span class="ph">Nsight Systems</span> command lines can have one of two forms:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global_option]</pre><p class="p">or</p><pre xml:space="preserve"><span class="ph">nsys</span> [command_switch][optional command_switch_options][application] [optional application_options]</pre><p class="p">All command line options are case sensitive. For command switch options,
when short options are used, the parameters should follow the switch after a
space; e.g. <samp class="ph codeph">-s process-tree</samp>. When long options are used, the switch should be
followed by an equal sign and then the parameter(s); e.g. <samp class="ph codeph">--sample=process-tree</samp>.
</p>
<p class="p">For this version of <span class="ph">Nsight Systems</span>, if you launch a process
from the command line to begin analysis, the launched process will be terminated
when collection is complete, including runs with --duration set, unless the
user specifies the --kill none option (details below). The exception is that if the
user uses NVTX, cudaProfilerStart/Stop, or hotkeys to control the duration,
the application will continue unless --kill is set.
</p>
<p class="p">The <span class="ph">Nsight Systems</span> CLI supports concurrent analysis by using
sessions. Each <span class="ph">Nsight Systems</span> session is defined by a sequence
of CLI commands that define one or more collections (e.g. when and what data
is collected). A session begins with either a start, launch, or profile
command. A session ends with a shutdown command, when a profile command
terminates, or, if requested, when all the process tree(s) launched in the
session exit. Multiple sessions can run concurrently on the same system.
</p>
</div>
<div class="topic nested2" id="cli-global-options"><a name="cli-global-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-global-options" name="cli-global-options" shape="rect">1.2.1. CLI Global Options</a></h3>
<div class="body">
<div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e162" class="stentry" width="6.666666666666667%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e165" class="stentry" width="26.666666666666668%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e168" class="stentry" width="66.66666666666667%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e162" class="stentry" rowspan="1" colspan="1">-h</td>
<td valign="top" headers="d54e165" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e168" class="stentry" rowspan="1" colspan="1">Help message providing information about available command
switches and their options.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e162" class="stentry" rowspan="1" colspan="1">-v</td>
<td valign="top" headers="d54e165" class="stentry" rowspan="1" colspan="1">--version</td>
<td valign="top" headers="d54e168" class="stentry" rowspan="1" colspan="1">Output <span class="ph">Nsight Systems</span> CLI version information.
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="topic nested1" id="cli-command-switches"><a name="cli-command-switches" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-command-switches" name="cli-command-switches" shape="rect">1.3. CLI Command Switches</a></h3>
<div class="body">
<p class="p">The <span class="ph">Nsight Systems</span> command line interface can be used in two
modes. You may launch your application and begin analysis with options
specified to the <samp class="ph codeph"><span class="ph">nsys</span> profile</samp> command.
Alternatively, you can control the launch of an application and data
collection using interactive CLI commands.
</p>
<div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e228" class="stentry" width="20%" rowspan="1" colspan="1">Command</th>
<th valign="bottom" align="left" id="d54e231" class="stentry" width="80%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">profile</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">A fully formed profiling description requiring and accepting
no further input. The command switch options used (see below table)
determine when the collection starts, stops, what collectors are used
(e.g. API trace, IP sampling, etc.), what processes are monitored, etc.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">start</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Start a collection in interactive mode. The start command can
be executed before or after a launch command.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">stop</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Stop a collection that was started in interactive mode. When
executed, all active collections stop, the CLI process terminates but the
application continues running.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">cancel</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Cancels an existing collection started in interactive mode.
All data already collected in the current collection is discarded.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">launch</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">In interactive mode, launches an application in an environment
that supports the requested options. The launch command can be executed
before or after a start command.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">shutdown</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Disconnects the CLI process from the launched application and
forces the CLI process to exit. If a collection is pending or active,
it is cancelled
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">export</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Generates an export file from an existing .nsys-rep file. For more
information about the exported formats see the /documentation/nsys-exporter
directory in your <span class="ph">Nsight Systems</span> installation directory.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">stats</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Post process existing <span class="ph">Nsight Systems</span> result,
either in .nsys-rep or SQLite format, to generate statistical information.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">analyze</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Post process existing <span class="ph">Nsight Systems</span> result,
either in .nsys-rep or SQLite format, to generate expert systems report.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">status</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Reports on the status of a CLI-based collection or the
suitability of the profiling environment.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">sessions</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Gives information about all sessions running on the system.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e228" class="stentry" rowspan="1" colspan="1">nvprof</td>
<td valign="top" headers="d54e231" class="stentry" rowspan="1" colspan="1">Special option to help with transition from legacy NVIDIA
nvprof tool. Calling <samp class="ph codeph"><span class="ph">nsys</span> nvprof [options]</samp>
will provide the best available translation of <samp class="ph codeph">nvprof [options]</samp>
See <strong class="ph b">Migrating from NVIDIA nvprof</strong> topic for details. No additional
functionality of <span class="ph">nsys</span> will be available when using
this option. Note: Not available on IBM Power targets.
</td>
</tr>
</table>
</div>
</div>
<div class="topic nested2" id="cli-profile-command-switch-options"><a name="cli-profile-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-profile-command-switch-options" name="cli-profile-command-switch-options" shape="rect">1.3.1. CLI Profile Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">profile</samp> command switch, the
following options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] profile [options] <application> [application-arguments]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e396" class="stentry" width="8.695652173913043%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e399" class="stentry" width="13.043478260869565%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e402" class="stentry" width="8.695652173913043%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e405" class="stentry" width="8.695652173913043%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e408" class="stentry" width="60.8695652173913%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--accelerator-trace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">none,nvmedia</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect other accelerators workload trace from the hardware
engine units. Only available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-c</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--capture-range</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">none, cudaProfilerApi, hotkey, nvtx</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">When --capture-range is used, profiling will
start only when appropriate start API or hotkey is invoked. If
--capture-range is set to none, start/stop API calls and hotkeys will
be ignored. Note: Hotkey works for graphic applications only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-d</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--duration</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< seconds ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">NA</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collection duration in seconds, duration must be greater than
zero. Note that the profiler does not detach from the application, it
lives until application termination.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-e</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--env-var</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">A=B</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">NA</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set environment variable(s) for the application process to be
launched. Environment variables should be defined as A=B. Multiple
environment variables can be specified as A=B,C=D.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--export</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">arrow, hdf, json, sqlite, text, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Create additional output file(s) based on the data collected.
This option can be given more than once.
WARNING: If the collection captures a large amount of data, creating
the export file may take several minutes to complete.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-f</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--force-overwrite</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, overwrite all existing result files with same output
filename (.qdstrm, .nsys-rep, .arrows, .h5, .json, .sqlite, .txt).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--kill</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">none, sigkill, sigterm, signal number</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">sigterm</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Send signal to the target application's process group. Can be
used with --duration or range markers.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-n</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--inherit-environment</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">When true, the current environment variables and the tool’s
environment variables will be specified for the launched process. When
false, only the tool’s environment variables will be specified for the
launched process.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--output</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< filename ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">report#</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set report file name. Any %q{ENV_VAR} pattern in the filename
will be substituted with the value of the environment variable. Any %h
pattern in the filename will be substituted with the hostname of the
system. Any %p pattern in the filename will be substituted with the
PID of the target process or the PID of the root process if there is a
process tree. Any %% pattern in the filename will be substituted with %.
Default is report#.{qdstrm,nsys-rep,sqlite,h5,txt,arrows,json} in the working directory.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--session-new</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">[a-Z][0-9,a-Z,spaces]</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">profile-<id>-<application></td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Name the session created by the command. Name must start with
an alphabetical character followed by printable or space characters.
Any <samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any
<samp class="ph codeph">%%</samp> pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-w</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--show-output</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, send target process’ stdout and stderr streams to the
console and stdout/stderr files which are added to the QDSTRM file.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--stats</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Generate summary statistics after the collection. WARNING:
When set to true, an SQLite database will be created after the
collection. If the collection captures a large amount of data, creating
the database file may take several minutes to complete.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-t</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--trace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">cuda, nvtx, cublas, cublas-verbose, cusparse, cusparse-verbose,
cudnn, opengl, opengl-annotations, openacc, openmp, osrt,
mpi, nvvideo, vulkan, vulkan-annotations, dx11, dx11-annotations, dx12,
dx12-annotations, oshmem, ucx, wddm, nvmedia, none
</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">cuda, opengl, nvtx, osrt</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Select the API(s) to be traced. The osrt switch controls the
OS runtime libraries tracing. Multiple APIs can be selected, separated
by commas only (no spaces). Since OpenACC, cuDNN and cuBLAS APIs are
tightly linked with CUDA, selecting one of those APIs will automatically
enable CUDA tracing. Reflex SDK latency markers will be automatically
collected when DX or vulkan API trace is enabled. See information on
--mpi-impl option below if mpi is selected. If '<api>-annotations'
is selected, the corresponding API will also be traced. If the none
option is selected, no APIs are traced and no other API can be selected.
Note: cublas, cudnn, nvvideo, opengl, and vulkan are
not available on IBM Power target.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-x</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--stop-on-exit</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, stop collecting automatically when the launched
process has exited or when the duration expires - whichever occurs
first. If false, duration must be set and the collection stops only
when the duration expires. <span class="ph">Nsight Systems</span> does not
officially support runs longer than 5 minutes.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-y</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--delay</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< seconds ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">0</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collection start delay in seconds.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--dx-force-declare-adapter-removal-support</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">The <span class="ph">Nsight Systems</span> trace initialization involves creating a D3D
device and discarding it. Enabling this flag makes a call to
DXGIDeclareAdapterRemovalSupport() before device creation. Requires DX11 or DX12 trace
to be enabled.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--dx12-gpu-workload</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false, individual, batch, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">individual</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If individual or true, trace each DX12 workload's GPU activity individually.
If batch, trace DX12 workloads' GPU activity in ExecuteCommandLists call batches.
If none or false, do not trace DX12 workloads' GPU activity.
Note that this switch is applicable only when --trace=dx12 is specified.
This option is only supported on Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--dx12-wait-calls</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, trace wait calls that block on fences for DX12. Note
that this switch is applicable only when --trace=dx12 is specified. This
option is only supported on Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--gpu-metrics-device</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">GPU ID, help, all, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect GPU Metrics from specified devices.
Determine GPU IDs by using <samp class="ph codeph">--gpu-metrics-device=help</samp>
switch.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--gpu-metrics-frequency</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">10000</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify GPU Metrics sampling frequency. Minimum supported
frequency is 10 (Hz). Maximum supported frequency is 200000 (Hz).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--gpu-metrics-set</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">index, alias</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify metric set for GPU Metrics. The argument must be one
of indices or aliases reported by<samp class="ph codeph">--gpu-metrics-set=help</samp>
switch. If not specified, the default is the first metric set that
supports all selected GPUs.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--gpuctxsw</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Trace GPU context switches. Note that this requires driver
r435.17 or later and root permission. Not supported on IBM Power
targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--opengl-gpu-workload</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, trace the OpenGL workloads' GPU activity. Note that
this switch is applicable only when --trace=opengl is specified. This
option is not supported on IBM Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--vulkan-gpu-workload</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false, individual, batch, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">individual</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If individual or true, trace each Vulkan workload's GPU activity individually.
If batch, trace Vulkan workloads' GPU activity in vkQueueSubmit call batches.
If none or false, do not trace Vulkan workloads' GPU activity.
Note that this switch is applicable only when --trace=vulkan is specified. This option
is not supported on QNX.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--wddm-additional-events</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, collect additional range of ETW events, including
context status, allocations, sync wait and signal events, etc. Note
that this switch is applicable only when --trace=wddm is specified.
This option is only supported on Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--accelerator-trace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">none, nvmedia</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect other accelerators workload trace from the hardware
engine units. Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-b</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--backtrace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">auto,fp,lbr,dwarf,none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Select the backtrace method to use while sampling. The option
'lbr' uses Intel(c) Corporation's Last Branch Record registers, available only
with Intel(c) CPUs codenamed Haswell and later. The option 'fp' is frame
pointer and assumes that frame pointers were enabled during compilation.
The option 'dwarf' uses DWARF's CFI (Call Frame Information). Setting the
value to 'none' can reduce collection overhead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--clock-frequency-changes</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect clock frequency changes. Available only in <span class="ph">Nsight Systems Embedded Platforms Edition</span>
and Arm server (SBSA) platforms
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cpu-cluster-events</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">0x16, 0x17, ..., none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect per-cluster Uncore PMU counters. Multiple values can
be selected, separated by commas only (no spaces). Use the
--cpu-cluster-events=help switch to see the full list of values.
Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cpu-core-events (<span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">0x11,0x13,...,none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect per-core PMU counters. Multiple values can be
selected, separated by commas only (no spaces). Use the
<samp class="ph codeph">--cpu-core-events=help</samp> switch to see the full list of
values.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cpu-core-events (not <span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">'help' or the end users selected events in the format 'x,y'</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">'2' i.e. Instructions Retired</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Select the CPU Core events to sample. Use the
<samp class="ph codeph">--cpu-core-events=help</samp> switch to see the full list of
events and the number of events that can be collected simultaneously.
Multiple values can be selected, separated by commas only (no spaces).
Use the --event-sample switch to enable.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--event-sampling-frequency</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">Integers from 1 to 20 Hz</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">3</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">The sampling frequency used to collect event counts. Minimum
event sampling frequency is 1 Hz. Maximum event sampling frequency is
20 Hz. Not available in <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cpu-socket-events</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">0x2a, 0x2c, ..., none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect per-socket Uncore PMU counters. Multiple values can
be selected, separated by commas only (no spaces). Use the
--cpu-socket-events=help switch to see the full list of values.
Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cpuctxsw</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">process-tree, system-wide, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">process-tree</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Trace OS thread scheduling activity. Select 'none' to disable
tracing CPU context switches. Depending on the platform, some values may
require admin or root privileges. Note: if the --sample switch is set to a value
other than 'none', the --cpuctxsw setting is hardcoded to the same value as the
--sample switch. If --sample=none and a target application is launched, the
default is 'process-tree', otherwise the default is 'none'. Requires
<samp class="ph codeph">--sampling-trigger=perf</samp> switch in
<span class="ph">Nsight Systems Embedded Platforms Edition</span></td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--os-events</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">'help' or the end users selected events in the format 'x,y'</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Select the OS events to sample. Use the --os-events=help
switch to see the full list of events. Multiple values can be selected,
separated by commas only (no spaces). Use the --event-sample switch to
enable. Not available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--event-sample</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">system-wide, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Use the --cpu-core-events=help and the --os-events=help
switches to see the full list of events. If event sampling is enabled
and no events are selected, the CPU Core event 'Instructions Retired' is
selected by default. Not available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--nic-metrics</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect metrics from supported NIC/HCA devices. Not available
on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--osrt-backtrace-depth</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">24</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set the depth for the backtraces collected for OS runtime
libraries calls.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--osrt-backtrace-stack-size</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">6144</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set the stack dump size, in bytes, to generate
backtraces for OS runtime libraries calls.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--osrt-backtrace-threshold</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">nanoseconds</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">80000</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set the duration, in nanoseconds, that all OS runtime
libraries calls must execute before backtraces are collected.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--osrt-threshold</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< nanoseconds ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">1000 ns</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set the duration, in nanoseconds, that Operating System Runtime (osrt) APIs must
execute before they are traced. Values significantly less than 1000 may cause
significant overhead and result in extremely large result files. Note:
Not available for IBM Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--qnx-kernel-events</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">class/event,event,class/event:mode,class:mode,help,none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Multiple values can be selected, separated by commas only (no spaces). See
the --qnx-kernel-events-mode switch description for ':mode' format. Use the
'--qnx-kernel-events=help' switch to see the full list of values.
Example: '--qnx-kernel-events=8/1:system:wide,_NTO_TRACE_THREAD:process:fast,
_NTO_TRACE_KERCALLENTER/__KER_BAD,_NTO_TRACE_COMM,13'.
Collect QNX kernel events.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--qnx-kernel-events-mode</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">system,process,fast,wide</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">system:fast</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Values are separated by a colon (':') only (no spaces). 'system' and 'process'
cannot be specified at the same time. 'fast' and 'wide' cannot be specified at the same
time. Please check the QNX documentation to determine when to select the 'fast' or 'wide'
mode. Specify the default mode for QNX kernel events collection.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--resolve-symbols</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Resolve symbols of captured samples and backtraces.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--injection-use-detours</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Use detours for injection. If false, process injection will be performed by
windows hooks which allows to bypass anti-cheat software.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-s</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--sample</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">process-tree, system-wide, none</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">process-tree</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Select how to collect CPU IP/backtrace samples. If 'none' is
selected, CPU sampling is disabled. Depending on the platform, some values may
require admin or root privileges. If a target application is launched, the
default is 'process-tree', otherwise, the default is 'none'. Note: 'system-wide'
is not available on all platforms. Note: If set to 'none', CPU context switch
data will still be collected unless the --cpuctxsw switch is set to 'none'.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--samples-per-backtrace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer <= 32</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">1</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">The number of CPU IP samples collected for every CPU IP/backtrace sample
collected. For example, if set to 4, on the fourth CPU IP sample collected, a
backtrace will also be collected. Lower values increase the amount of data collected.
Higher values can reduce collection overhead and reduce the number of CPU IP
samples dropped. If DWARF backtraces are collected, the default is 4, otherwise the
default is 1. This option is not available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>
or on non-Linux targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--sampling-frequency</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">100 < integers < 8000</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">1000</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify the sampling/backtracing frequency. The minimum
supported frequency is 100 Hz. The maximum supported frequency is 8000
Hz. This option is supported only on QNX, Linux for Tegra, and Windows
targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--sampling-period (<span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">determined dynamically</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">The number of CPU Cycle events counted before a CPU
instruction pointer (IP) sample is collected. If configured,
backtraces may also be collected. The smaller the sampling period,
the higher the sampling rate. Note that smaller sampling periods will
increase overhead and significantly increase the size of the result
file(s). Requires <samp class="ph codeph">--sampling-trigger=perf</samp> switch.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--sampling-period (not <span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">determined dynamically</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">The number of events counted before a CPU instruction pointer
(IP) sample is collected. The event used to trigger the collection of
a sample is determined dynamically. For example, on Intel based
platforms, it will probably be "Reference Cycles" and on AMD platforms,
"CPU Cycles". If configured, backtraces may also be collected. The
smaller the sampling period, the higher the sampling rate. Note that
smaller sampling periods will increase overhead and significantly
increase the size of the result file(s). This option is available only
on Linux targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--sampling-trigger</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">timer, sched, perf, cuda</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">timer,sched</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify backtrace collection trigger. Multiple APIs can be
selected, separated by commas only (no spaces). Available on
<span class="ph">Nsight Systems Embedded Platforms Edition</span> targets only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--el1-sampling</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Enable EL1 sampling. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--el1-sampling-config</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< filepath config.json ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">EL1 sampling config. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--xhv-trace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< filepath pct.json ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect hypervisor trace. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--xhv-trace-events</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">all, none, core, sched, irq, trap</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">all</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--etw-provider</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">"<name>,<guid>", or path to JSON file</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Add custom ETW trace provider(s). If you want to specify more
attributes than Name and GUID, provide a JSON configuration file as
as outlined below. This switch can be used multiple times to add
multiple providers. Note: Only available for Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--retain-etw-files</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Retain ETW files generated by the trace, merge and move the
files to the output directory.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cuda-flush-interval</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">milliseconds</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">See Description</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Set the interval, in milliseconds, when buffered CUDA data is automatically
saved to storage. CUDA data buffer saves may cause profiler overhead. Buffer save
behavior can be controlled with this switch.
If the CUDA flush interval is set to 0 on systems running CUDA 11.0 or newer, buffers are
saved when they fill. If a flush interval is set to a non-zero value on such systems,
buffers are saved only when the flush interval expires. If a flush interval is set and
the profiler runs out of available buffers before the flush interval expires, additional
buffers will be allocated as needed. In this case, setting a flush interval can reduce
buffer save overhead but increase memory use by the profiler.
If the flush interval is set to 0 on systems running older versions of CUDA,
buffers are saved at the end of the collection. If the profiler runs out of available
buffers, additional buffers are allocated as needed. If a flush interval is set to a
non-zero value on such systems, buffers are saved when the flush interval expires.
A cuCtxSynchronize call may be inserted into the workflow before the buffers
are saved which will cause application overhead. In this case, setting a flush interval
can reduce memory use by the profiler but may increase save overhead.
For collections over 30 seconds an interval of 10 seconds is recommended.
Default is 10000 for <span class="ph">Nsight Systems Embedded Platforms Edition</span> and 0 otherwise.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cuda-memory-usage</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Track the GPU memory usage by CUDA kernels. Applicable only
when CUDA tracing is enabled. Note: This feature may cause significant
runtime overhead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cuda-um-cpu-page-faults</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">This switch tracks the page faults that occur
when CPU code tries to access a memory page that resides on the device.
Note that this feature may cause significant runtime overhead.
Not available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cuda-um-gpu-page-faults</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">This switch tracks the page faults that occur
when GPU code tries to access a memory page that resides on the host.
Note that this feature may cause significant runtime overhead.
Not availalbe on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cudabacktrace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">all, none, kernel, memory, sync, other</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">When tracing CUDA APIs, enable the collection of a backtrace
when a CUDA API is invoked. Significant runtime overhead may occur.
Values may be combined using ','. Each value except 'none' may be
appended with a threshold after ':'. Threshold is duration, in
nanoseconds, that CUDA APIs must execute before backtraces are
collected, e.g. 'kernel:500'. Default value for each threshold is
1000ns (1us). Note: CPU sampling must be enabled. Note: Not
available on IBM Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--cuda-graph-trace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">graph, node</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">graph</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If 'graph' is selected, CUDA graphs will be traced as a whole
and node activities will not be collected. This will reduce overhead
to a minimum, but requires CUDA driver version 515.43 or higher.
If 'node' is selected, node activities will be collected, but CUDA graphs
will not be traced as a whole. This may cause significant runtime overhead.
Default is 'graph' if available, otherwise default is 'node'.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--nvtx-domain-include</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">default, <domain_names></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Choose to only include NVTX events from a comma separated
list of domains. 'default' filters the NVTX default domain. A domain
with this name or commas in a domain name must be escaped with '\'.
Note: Only one of --nvtx-domain-include and --nvtx-domain-exclude can
be used. This option is only applicable when --trace=nvtx is specified.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--nvtx-domain-exclude</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">default, <domain_names></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Choose to exclude NVTX events from a comma separated list of
domains. 'default' excludes NVTX events without a domain. A domain
with this name or commas in a domain name must be escaped with '\'.
Note: Only one of --nvtx-domain-include and --nvtx-domain-exclude can
be used. This option is only applicable when --trace=nvtx is specified.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1">-p</td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--nvtx-capture</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">range@domain, range, range@*</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify NVTX range and domain to trigger the profiling session.
This option is applicable only when used along with --capture-range=nvtx.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--auto-report-name</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Derive report file name from collected data uses details of profiled graphics
application. Format: [Process Name][GPU Name][Window Resolution][Graphics API]
Timestamp .nsys-rep If true, automatically generate report file
names.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--capture-range-end</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">none, stop, stop-shutdown, repeat[:N], repeat-shutdown:N</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">stop-shutdown</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify the desired behavior when a capture range ends.
Applicable only when used along with --capture-range option. If
<samp class="ph codeph">none</samp>, capture range end will be ignored. If
<samp class="ph codeph">stop</samp>, collection will stop at capture range end. Any
subsequent capture ranges will be ignored. Target app will continue
running. If <samp class="ph codeph">stop-shutdown</samp>, collection will stop at
capture range end and session will be shutdown. If
<samp class="ph codeph">repeat[:N]</samp>, collection will stop at capture range end
and subsequent capture ranges will trigger more collections. Use the
optional <samp class="ph codeph">:N</samp> to specify max number of capture ranges
to be honored. Any subsequent capture ranges will be ignored once N
capture ranges are collected. If <samp class="ph codeph">repeat-shutdown:N</samp>,
same behavior as <samp class="ph codeph">repeat:N</samp> but session will be shutdown
after N ranges. For <samp class="ph codeph">stop-shutdown</samp> and
<samp class="ph codeph">repeat-shutdown:N</samp>, as always, use --kill option to
specify whether target app should be terminated when shutting down
session.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--command-file</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< filename ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Open a file that contains profile switches and parse the
switches. Note additional switches on the command line will override
switches in the file. This flag can be specified more than once.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--duration-frames</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">60 <= integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Stop the recording session after this many frames have been captured.
Note when it is selected cannot include any other stop options.
If not specified, the default is disabled.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--ftrace</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect ftrace events. Argument should list events to
collect as: subsystem1/event1,subsystem2/event2. Requires root. No
ftrace events are collected by default. Note: Not available on IBM
Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--ftrace-keep-user-config</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Skip initial ftrace setup and collect already configured
events. Default resets the ftrace configuration.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--hotkey-capture</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">'F1' to 'F12'</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">'F12'</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Hotkey to trigger the profiling session. Note that this
switch is applicable only when --capture-range=hotkey is specified.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--isr</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Trace Interrupt Service Routines (ISRs) and Deferred
Procedure Calls (DPCs). Requires administrative privileges. Available
only on Windows devices.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--mpi-impl</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">openmpi,mpich</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">openmpi</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">When using --trace=mpi to trace MPI APIs use --mpi-impl to
specify which MPI implementation the application is using. If no MPI implementation is
specified, <span class="ph">nsys</span> tries to automatically detect it based on the dynamic
linker's search path. If this fails, 'openmpi' is used. Calling --mpi-impl without
--trace=mpi is not supported.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--process-scope</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">main, process-tree, system-wide</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">main</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Select which process(es) to trace. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only. <span class="ph">Nsight Systems Workstation Edition</span> will
always trace system-wide in this version of the tool.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--run-as</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">< username ></td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Run the target application as the specified username. If not
specified, the target application will be run by the same user as
<span class="ph">Nsight Systems</span>. Requires root privileges. Available for
Linux targets only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--start-frame-index</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">1 <= integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Start the recording session when the frame index reaches the frame number
preceding the start frame index. Note when it is selected cannot include any other start
options. If not specified, the default is disabled.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--trace-fork-before-exec</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If true, trace any child process after fork and before they
call one of the exec functions. Beware, tracing in this interval
relies on undefined behavior and might cause your application to crash
or deadlock. Note: This option is only available on Linux target platforms.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--vsync</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect vsync events. If collection of vsync events is
enabled, display/display_scanline ftrace events will also be captured.
Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--wait</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">primary,all</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">all</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">If primary, the CLI will wait on the application process
termination. If all, the CLI will additionally wait on re-parented
processes created by the application.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--soc-metrics</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Collect SOC Metrics. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--soc-metrics-frequency</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">100000</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify SOC Metrics sampling frequency. Minimum supported
frequency is '100' (Hz). Maximum supported frequency is '1000000'
(Hz). Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e396" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e399" class="stentry" rowspan="1" colspan="1">--soc-metrics-set</td>
<td valign="top" headers="d54e402" class="stentry" rowspan="1" colspan="1">see description</td>
<td valign="top" headers="d54e405" class="stentry" rowspan="1" colspan="1">see description</td>
<td valign="top" headers="d54e408" class="stentry" rowspan="1" colspan="1">Specify metric set for SOC Metrics sampling. The option
argument must be one of indices or aliases reported by
<samp class="ph codeph">--soc-metrics-set=help</samp> switch. Default is the first
supported set. Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-start-command-switch-options"><a name="cli-start-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-start-command-switch-options" name="cli-start-command-switch-options" shape="rect">1.3.2. CLI Start Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">start</samp> command switch, the following
options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] start [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e2061" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e2064" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e2067" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e2070" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e2073" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--accelerator-trace</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">none,nvmedia</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect other accelerators workload trace from the hardware
engine units. Only available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1">-c</td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--capture-range</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">none, cudaProfilerApi, hotkey, nvtx</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">When --capture-range is used, profiling will
start only when appropriate start API or hotkey is invoked. If
--capture-range is set to none, start/stop API calls and hotkeys will
be ignored. Note: hotkey works for graphic applications only.
CUDA or NVTX tracing must be enabled on the target application
for '-c cudaProfilerApi' or '-c nvtx' to work.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--export</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">arrow, hdf, json, sqlite, text, none</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Create additional output file(s) based on the data collected.
This option can be given more than once.
WARNING: If the collection captures a large amount of data, creating
the export file may take several minutes to complete.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1">-f</td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--force-overwrite</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">If true, overwrite all existing result files with same output
filename (.qdstrm, .nsys-rep, .arrows, .hdf, .json, .sqlite, .txt).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--output</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">< filename ></td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">report#</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Set report file name. Any %q{ENV_VAR} pattern in the filename
will be substituted with the value of the environment variable. Any %h
pattern in the filename will be substituted with the hostname of the
system. Any %p pattern in the filename will be substituted with the
PID of the target process or the PID of the root process if there is a
process tree. Any %% pattern in the filename will be substituted with %.
Default is report#.{nsys-rep,sqlite,h5,txt,arrows,json} in the working directory.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--session</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">session identifier</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Start the application in the indicated session. The option
argument must represent a valid session name or ID as reported by
<samp class="ph codeph"><span class="ph">nsys</span> sessions list</samp>. Any
<samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--session-new</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">[a-Z][0-9,a-Z,spaces]</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">[default]</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Start the application in a new session. Name must start with
an alphabetical character followed by printable or space characters.
Any <samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--stats</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Generate summary statistics after the collection. WARNING:
When set to true, an SQLite database will be created after the
collection. If the collection captures a large amount of data,
creating the database file may take several minutes to complete.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1">-x</td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--stop-on-exit</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">If true, stop collecting automatically when all tracked
processes have exited or when <samp class="ph codeph">stop</samp> command is issued
- whichever occurs first. If false, stop only on <samp class="ph codeph">stop</samp>
command. Note: When this is true, <samp class="ph codeph">stop</samp> command is
optional. <span class="ph">Nsight Systems</span> does not officially support
runs longer than 5 minutes.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--gpu-metrics-device</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">GPU ID, help, all, none</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect GPU Metrics from specified devices.
Determine GPU IDs by using <samp class="ph codeph">--gpu-metrics-device=help</samp>
switch.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--gpu-metrics-frequency</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">10000</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify GPU Metrics sampling frequency. Minimum supported
frequency is 10 (Hz). Maximum supported frequency is 200000(Hz).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--gpu-metrics-set</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">index</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">first</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify metric set for GPU Metrics sampling. The argument
must be one of indices reported by <samp class="ph codeph">--gpu-metrics-set=help</samp>
switch. Default is the first metric set that supports selected GPU.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--gpuctxsw</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Trace GPU context switches. Note that this requires driver
r435.17 or later and root permission. Not supported on IBM Power
targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--accelerator-trace</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">none, nvmedia</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect other accelerators workload trace from the hardware
engine units. Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1">-b</td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--backtrace</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">auto,fp,lbr,dwarf,none</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Select the backtrace method to use while sampling. The option
'lbr' uses Intel(c) Corporation's Last Branch Record registers, available only
with Intel(c) CPUs codenamed Haswell and later. The option 'fp' is frame
pointer and assumes that frame pointers were enabled during compilation.
The option 'dwarf' uses DWARF's CFI (Call Frame Information). Setting the
value to 'none' can reduce collection overhead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--cpu-core-events (not <span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">'help' or the end users selected events in the format 'x,y'</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">'2' i.e. Instructions Retired</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Select the CPU Core events to sample. Use the
<samp class="ph codeph">--cpu-core-events=help</samp> switch to see the full list of
events and the number of events that can be collected simultaneously.
Multiple values can be selected, separated by commas only (no spaces).
Use the --event-sample switch to enable.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--cpuctxsw</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">process-tree, system-wide, none</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">process-tree</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Trace OS thread scheduling activity. Select 'none' to disable
tracing CPU context switches. Depending on the platform, some values may
require admin or root privileges. Note: if the --sample switch is set to a value
other than 'none', the --cpuctxsw setting is hardcoded to the same value as the
--sample switch. If --sample=none and a target application is launched, the
default is 'process-tree', otherwise the default is 'none'. Requires
<samp class="ph codeph">--sampling-trigger=perf</samp> switch in <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--os-events</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">'help' or the end users selected events in the format 'x,y'</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Select the OS events to sample. Use the --os-events=help
switch to see the full list of events. Multiple values can be selected,
separated by commas only (no spaces). Use the --event-sample switch to
enable. Not available in <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--event-sample</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">system-wide, none</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Use the --cpu-core-events=help and the --os-events=help
switches to see the full list of events. If event sampling is enabled
and no events are selected, the CPU Core event 'Instructions Retired' is
selected by default. Not available in <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--event-sampling-frequency</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">Integers from 1 to 20 Hz</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">3</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">The sampling frequency used to collect event counts. Minimum
event sampling frequency is 1 Hz. Maximum event sampling frequency is
20 Hz. Not available in <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--nic-metrics</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect metrics from supported NIC/HCA devices</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1">-s</td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--sample</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">process-tree, system-wide, none</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">process-tree</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Select how to collect CPU IP/backtrace samples. If 'none' is
selected, CPU sampling is disabled. Depending on the platform, some values may
require admin or root privileges. If a target application is launched, the
default is 'process-tree', otherwise, the default is 'none'. Note: 'system-wide'
is not available on all platforms. Note: If set to 'none', CPU context switch
data will still be collected unless the --cpuctxsw switch is set to 'none'.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--samples-per-backtrace</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">integer <= 32</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">1</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">The number of CPU IP samples collected for every CPU IP/backtrace sample
collected. For example, if set to 4, on the fourth CPU IP sample collected, a
backtrace will also be collected. Lower values increase the amount of data collected.
Higher values can reduce collection overhead and reduce the number of CPU IP
samples dropped. If DWARF backtraces are collected, the default is 4, otherwise the
default is 1. This option is not available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>
or on non-Linux targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--sampling-frequency</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">integers between 100 and 8000</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">1000</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify the sampling/backtracing frequency. The minimum
supported frequency is 100 Hz. The maximum supported frequency is 8000
Hz. This option is supported only on QNX, Linux for Tegra, and Windows
targets. Requires <samp class="ph codeph">--sampling-trigger=perf</samp> switch in
<span class="ph">Nsight Systems Embedded Platforms Edition</span></td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--sampling-period (<span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">determined dynamically</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">The number of CPU Cycle events counted before a CPU
instruction pointer (IP) sample is collected. If configured,
backtraces may also be collected. The smaller the sampling period,
the higher the sampling rate. Note that smaller sampling periods will
increase overhead and significantly increase the size of the result
file(s). Requires <samp class="ph codeph">--sampling-trigger=perf</samp> switch.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--sampling-period (not <span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">determined dynamically</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">The number of events counted before a CPU instruction pointer
(IP) sample is collected. The event used to trigger the collection of
a sample is determined dynamically. For example, on Intel based
platforms, it will probably be "Reference Cycles" and on AMD platforms,
"CPU Cycles". If configured, backtraces may also be collected. The
smaller the sampling period, the higher the sampling rate. Note that
smaller sampling periods will increase overhead and significantly
increase the size of the result file(s). This option is available only
on Linux targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--sampling-trigger</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">timer, sched, perf, cuda</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">timer,sched</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify backtrace collection trigger. Multiple APIs can be
selected, separated by commas only (no spaces). Available on
<span class="ph">Nsight Systems Embedded Platforms Edition</span> targets only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--el1-sampling</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Enable EL1 sampling. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--el1-sampling-config</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">< filepath config.json ></td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">EL1 sampling config. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--xhv-trace</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">< filepath pct.json ></td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect hypervisor trace. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--xhv-trace-events</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">all, none, core, sched, irq, trap</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">all</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--etw-provider</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">"<name>,<guid>", or path to JSON file</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Add custom ETW trace provider(s). If you want to specify more
attributes than Name and GUID, provide a JSON configuration file as
as outlined below. This switch can be used multiple times to add
multiple providers. Note: Only available for Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--retain-etw-files</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Retain ETW files generated by the trace, merge and move the
files to the output directory.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--capture-range-end</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">none, stop, stop-shutdown, repeat[:N], repeat-shutdown:N</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">stop-shutdown</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify the desired behavior when a capture range ends.
Applicable only when used along with --capture-range option. If
<samp class="ph codeph">none</samp>, capture range end will be ignored. If
<samp class="ph codeph">stop</samp>, collection will stop at capture range end. Any
subsequent capture ranges will be ignored. Target app will continue
running. If <samp class="ph codeph">stop-shutdown</samp>, collection will stop at
capture range end and session will be shutdown. If
<samp class="ph codeph">repeat[:N]</samp>, collection will stop at capture range end
and subsequent capture ranges will trigger more collections. Use the
optional <samp class="ph codeph">:N</samp> to specify max number of capture ranges
to be honored. Any subsequent capture ranges will be ignored once N
capture ranges are collected. If <samp class="ph codeph">repeat-shutdown:N</samp>,
same behavior as <samp class="ph codeph">repeat:N</samp> but session will be shutdown
after N ranges. For <samp class="ph codeph">stop-shutdown</samp> and
<samp class="ph codeph">repeat-shutdown:N</samp>, as always use --kill option to
specify whether target app should be terminated when shutting down
session.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--ftrace</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect ftrace events. Argument should list events to collect
as: subsystem1/event1,subsystem2/event2. Requires root. No ftrace
events are collected by default. Note: Not supported on IBM Power
targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--ftrace-keep-user-config</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Skip initial ftrace setup and collect already configured
events. Default resets the ftrace configuration.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--isr</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Trace Interrupt Service Routines (ISRs) and Deferred
Procedure Calls (DPCs). Requires administrative privileges. Available
only on Windows devices.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--process-scope</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">main, process-tree, system-wide</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">main</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Select which process(es) to trace. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only. <span class="ph">Nsight Systems Workstation Edition</span> will
always trace system-wide in this version of the tool.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--vsync</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect vsync events. If collection of vsync events is
enabled, display/display_scanline ftrace events will also be captured.
Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--soc-metrics</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Collect SOC Metrics. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--soc-metrics-frequency</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">100000</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify SOC Metrics sampling frequency. Minimum supported
frequency is '100' (Hz). Maximum supported frequency is '1000000'
(Hz). Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e2061" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e2064" class="stentry" rowspan="1" colspan="1">--soc-metrics-set</td>
<td valign="top" headers="d54e2067" class="stentry" rowspan="1" colspan="1">see description</td>
<td valign="top" headers="d54e2070" class="stentry" rowspan="1" colspan="1">see description</td>
<td valign="top" headers="d54e2073" class="stentry" rowspan="1" colspan="1">Specify metric set for SOC Metrics sampling. The option
argument must be one of indices or aliases reported by
<samp class="ph codeph">--soc-metrics-set=help</samp> switch. Default is the first
supported set. Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-stop-command-switch-options"><a name="cli-stop-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-stop-command-switch-options" name="cli-stop-command-switch-options" shape="rect">1.3.3. CLI Stop Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">stop</samp> command switch, the
following options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] stop [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e3001" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e3004" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e3007" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e3010" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e3013" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3001" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3004" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e3007" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e3010" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3013" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3001" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3004" class="stentry" rowspan="1" colspan="1">--session</td>
<td valign="top" headers="d54e3007" class="stentry" rowspan="1" colspan="1">session identifier</td>
<td valign="top" headers="d54e3010" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3013" class="stentry" rowspan="1" colspan="1">Stop the indicated session. The option argument must
represent a valid session name or ID as reported by
<samp class="ph codeph"><span class="ph">nsys</span> sessions list</samp>. Any
<samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-cancel-command-switch-options"><a name="cli-cancel-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-cancel-command-switch-options" name="cli-cancel-command-switch-options" shape="rect">1.3.4. CLI Cancel Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">cancel</samp> command switch, the
following options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] cancel [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e3097" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e3100" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e3103" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e3106" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e3109" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3097" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3100" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e3103" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e3106" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3109" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3097" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3100" class="stentry" rowspan="1" colspan="1">--session</td>
<td valign="top" headers="d54e3103" class="stentry" rowspan="1" colspan="1"><session identifier></td>
<td valign="top" headers="d54e3106" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3109" class="stentry" rowspan="1" colspan="1">Cancel the collection in the given session. The option argument must represent a
valid session name or ID as reported by
<samp class="ph codeph"><span class="ph">nsys</span> sessions list</samp>. Any <samp class="ph codeph">%q{ENV_VAR}</samp>
pattern in the option argument will be substituted with the value of the environment
variable. Any <samp class="ph codeph">%h</samp> pattern in the option argument will be substituted with
the hostname of the system. Any <samp class="ph codeph">%%</samp> pattern in the option argument will
be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-launch-command-switch-options"><a name="cli-launch-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-launch-command-switch-options" name="cli-launch-command-switch-options" shape="rect">1.3.5. CLI Launch Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">launch</samp> command switch, the following options are
available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] launch [options] <application> [application-arguments]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e3192" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e3195" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e3198" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e3201" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e3204" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-e</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--env-var</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">A=B</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">NA</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Set environment variable(s) for the application process to be
launched. Environment variables should be defined as A=B. Multiple
environment variables can be specified as A=B,C=D.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-n</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--inherit-environment</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">When true, the current environment variables and the tool’s
environment variables will be specified for the launched process. When
false, only the tool’s environment variables will be specified for the
launched process.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--session</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">session identifier</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Launch the application in the indicated session. The option
argument must represent a valid session name or ID as reported by
<samp class="ph codeph"><span class="ph">nsys</span> sessions list</samp>. Any
<samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--session-new</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">[a-Z][0-9,a-Z,spaces]</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">[default]</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Launch the application in a new session. Name must start with
an alphabetical character followed by printable or space characters.
Any <samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern will
be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-w</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--show-output</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If true, send target process's stdout and stderr streams to both the console and
stdout/stderr files which are added to the QDSTRM file.
If false, only send target process stdout and stderr streams to the stdout/stderr files
which are added to the QDSTRM file.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-t</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--trace</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">cuda, nvtx, cublas, cublas-verbose, cusparse, cusparse-verbose,
cudnn, opengl, opengl-annotations, openacc, openmp, osrt,
mpi, nvvideo, vulkan, vulkan-annotations, dx11, dx11-annotations, dx12,
dx12-annotations, oshmem, ucx, wddm, nvmedia, none
</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">cuda, opengl, nvtx, osrt</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Select the API(s) to be traced. The osrt switch controls the
OS runtime libraries tracing. Multiple APIs can be selected, separated
by commas only (no spaces). Since OpenACC, cuDNN and cuBLAS APIs are
tightly linked with CUDA, selecting one of those APIs will automatically
enable CUDA tracing. Reflex SDK latency markers will be automatically
collected when DX or vulkan API trace is enabled. See information on
--mpi-impl option below if mpi is selected. If '<api>-annotations'
is selected, the corresponding API will also be traced. If the none
option is selected, no APIs are traced and no other API can be selected.
Note: cublas, cudnn, nvvideo, opengl, and vulkan are
not available on IBM Power target.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--dx-force-declare-adapter-removal-support</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">The <span class="ph">Nsight Systems</span> trace initialization involves creating a D3D
device and discarding it. Enabling this flag makes a call to
DXGIDeclareAdapterRemovalSupport() before device creation.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--dx12-gpu-workload</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false, individual, batch, none</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">individual</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If individual or true, trace each DX12 workload's GPU activity individually.
If batch, trace DX12 workloads' GPU activity in ExecuteCommandLists call batches.
If none or false, do not trace DX12 workloads' GPU activity.
Note that this switch is applicable only when --trace=dx12 is specified.
This option is only supported on Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--dx12-wait-calls</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If true, trace wait calls that block on fences for DX12. Note
that this switch is applicable only when --trace=dx12 is specified. This
option is only supported on Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--opengl-gpu-workload</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If true, trace the OpenGL workloads' GPU activity. Note that
this switch is applicable only when --trace=opengl is specified. This
option is not supported on IBM Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--vulkan-gpu-workload</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false, individual, batch, none</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">individual</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If individual or true, trace each Vulkan workload's GPU activity individually.
If batch, trace Vulkan workloads' GPU activity in vkQueueSubmit call batches.
If none or false, do not trace Vulkan workloads' GPU activity.
Note that this switch is applicable only when --trace=vulkan is specified. This option
is not supported on QNX.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--wddm-additional-events</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If true, collect additional range of ETW events, including
context status, allocations, sync wait and signal events, etc. Note
that this switch is applicable only when --trace=wddm is specified.
This option is only supported on Windows targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-b</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--backtrace</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --backtrace switch when using the start command instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--clock-frequency-changes</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Collect clock frequency changes. Available in
<span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cpu-cluster-events</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">0x16, 0x17, ..., none</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Collect per-cluster Uncore PMU counters. Multiple values can
be selected, separated by commas only (no spaces). Use the
--cpu-cluster-events=help switch to see the full list of values.
Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cpu-core-events (<span class="ph">Nsight Systems Embedded Platforms Edition</span>)
</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">0x11,0x13,...,none</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Collect per-core PMU counters. Multiple values can be
selected, separated by commas only (no spaces). Use the
<samp class="ph codeph">--cpu-core-events=help</samp> switch to see the full list of
values.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cpu-socket-events</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">0x2a, 0x2c, ..., none</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Collect per-socket Uncore PMU counters. Multiple values can
be selected, separated by commas only (no spaces). Use the
--cpu-socket-events=help switch to see the full list of values.
Available in <span class="ph">Nsight Systems Embedded Platforms Edition</span> only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cpuctxsw</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --cpuctxsw switch when using the start command instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--nic-metrics</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Collect metrics from supported NIC/HCA devices</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--osrt-backtrace-depth</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">24</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Set the depth for the backtraces collected for OS runtime
libraries calls.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--osrt-backtrace-stack-size</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">integer</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">6144</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Set the stack dump size, in bytes, to generate
backtraces for OS runtime libraries calls.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--osrt-backtrace-threshold</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">nanoseconds</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">80000</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Set the duration, in nanoseconds, that all OS runtime
libraries calls must execute before backtraces are collected.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--osrt-threshold</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">< nanoseconds ></td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">1000 ns</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Set the duration, in nanoseconds, that Operating System Runtime (osrt) APIs must
execute before they are traced. Values much less than 1000 may cause significant overhead
and result in extremely large result files. Default is 1000 (1 microsecond). Note:
Not available for IBM Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--qnx-kernel-events</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">class/event,event,class/event:mode,class:mode,help,none</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Multiple values can be selected, separated by commas only (no spaces). See
the --qnx-kernel-events-mode switch description for ':mode' format. Use the
'--qnx-kernel-events=help' switch to see the full list of values.
Example: '--qnx-kernel-events=8/1:system:wide,_NTO_TRACE_THREAD:process:fast,_NTO_TRACE_KERCALLENTER/__KER_BAD,_NTO_TRACE_COMM,13'.
Collect QNX kernel events.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--qnx-kernel-events-mode</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">system,process,fast,wide</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">system:fast</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Values are separated by a colon (':') only (no spaces). 'system' and 'process'
cannot be specified at the same time. 'fast' and 'wide' cannot be specified at the same
time. Please check the QNX documentation to determine when to select the 'fast' or 'wide'
mode. Specify the default mode for QNX kernel events collection.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--resolve-symbols</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Resolve symbols of captured samples and backtraces.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--injection-use-detours</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Use detours for injection. If false, process injection will be performed by
windows hooks which allows to bypass anti-cheat software.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--samples-per-backtrace</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --samples-per-backtrace switch when using the start command
instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--sampling-frequency</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --sampling-frequency switch when using the start command
instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--sampling-period</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --sampling-period switch when using the start command instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--sampling-trigger</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --sampling-trigger switch when using the start command instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cuda-flush-interval</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">milliseconds</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">See description</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Set the interval, in milliseconds, when buffered CUDA data is automatically
saved to storage. CUDA data buffer saves may cause profiler overhead. Buffer save
behavior can be controlled with this switch.
If the CUDA flush interval is set to 0 on systems running CUDA 11.0 or newer, buffers are
saved when they fill. If a flush interval is set to a non-zero value on such systems,
buffers are saved only when the flush interval expires. If a flush interval is set and
the profiler runs out of available buffers before the flush interval expires, additional
buffers will be allocated as needed. In this case, setting a flush interval can reduce
buffer save overhead but increase memory use by the profiler.
If the flush interval is set to 0 on systems running older versions of CUDA,
buffers are saved at the end of the collection. If the profiler runs out of available
buffers, additional buffers are allocated as needed. If a flush interval is set to a
non-zero value on such systems, buffers are saved when the flush interval expires.
A cuCtxSynchronize call may be inserted into the workflow before the buffers
are saved which will cause application overhead. In this case, setting a flush interval
can reduce memory use by the profiler but may increase save overhead.
For collections over 30 seconds an interval of 10 seconds is recommended.
Default is 10000 for <span class="ph">Nsight Systems Embedded Platforms Edition</span> and 0 otherwise.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cuda-memory-usage</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Track the GPU memory usage by CUDA kernels. Applicable only
when CUDA tracing is enabled. Note: This feature may cause significant
runtime overhead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cuda-um-cpu-page-faults</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">This switch tracks the page faults that occur
when CPU code tries to access a memory page that resides on the device.
Note that this feature may cause significant runtime overhead. Not
available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cuda-um-gpu-page-faults</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">This switch tracks the page faults that occur
when GPU code tries to access a memory page that resides on the host.
Note that this feature may cause significant runtime overhead. Not
available on <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cudabacktrace</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">all, none, kernel, memory, sync, other</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">When tracing CUDA APIs, enable the collection of a backtrace
when a CUDA API is invoked. Significant runtime overhead may occur.
Values may be combined using ','. Each value except 'none' may be
appended with a threshold after ':'. Threshold is duration, in
nanoseconds, that CUDA APIs must execute before backtraces are
collected, e.g. 'kernel:500'. Default value for each threshold is
1000ns (1us). Note: CPU sampling must be enabled. Note: Not
available on IBM Power targets.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--cuda-graph-trace</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">graph, node</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">graph</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If 'graph' is selected, CUDA graphs will be traced as a whole
and node activities will not be collected. This will reduce overhead
to a minimum, but requires CUDA driver version 515.43 or higher.
If 'node' is selected, node activities will be collected, but CUDA graphs
will not be traced as a whole. This may cause significant runtime overhead.
Default is 'graph' if available, otherwise default is 'node'.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--nvtx-domain-include</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">default, <domain_names></td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Choose to only include NVTX events from a comma separated
list of domains. 'default' filters the NVTX default domain. A domain
with this name or commas in a domain name must be escaped with '\'.
Note: Only one of --nvtx-domain-include and --nvtx-domain-exclude can
be used. This option is only applicable when --trace=nvtx is specified.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--nvtx-domain-exclude</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">default, <domain_names></td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Choose to exclude NVTX events from a comma separated
list of domains. 'default' filters the NVTX default domain. A domain
with this name or commas in a domain name must be escaped with '\'.
Note: Only one of --nvtx-domain-include and --nvtx-domain-exclude can
be used. This option is only applicable when --trace=nvtx is specified.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-p</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--nvtx-capture</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">range@domain, range, range@*</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Specify NVTX range and domain to trigger the profiling session.
Note that this switch is applicable only when --capture-range=nvtx is specified at the
start of the profiled session.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--command-file</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">< filename ></td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Open a file that contains launch switches and parse the
switches. Note additional switches on the command line will override
switches in the file. This flag can be specified more than once.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--hotkey-capture</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">'F1' to 'F12'</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">'F12'</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Hotkey to trigger the profiling session. Note that this switch is applicable
only when --capture-range=hotkey is specified at the start of the profiled
session.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--isr</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">Trace Interrupt Service Routines (ISRs) and Deferred Procedure Calls (DPCs).
Requires administrative privileges. Available only on Windows devices.
</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">false</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--mpi-impl</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">openmpi,mpich</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">openmpi</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">When using --trace=mpi to trace MPI APIs use --mpi-impl to
specify which MPI implementation the application is using. If no MPI implementation is
specified, <span class="ph">nsys</span> tries to automatically detect it based on the dynamic
linker's search path. If this fails, 'openmpi' is used. Calling --mpi-impl without
--trace=mpi is not supported.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--run-as</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">< username ></td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">Run the target application as the specified username. If not
specified, the target application will be run by the same user as
<span class="ph">Nsight Systems</span>. Requires root privileges. Available for
Linux targets only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1">-s</td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--sample</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">WARNING: This switch is no longer supported.
Please set the --sample switch when using the start command instead.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--trace-fork-before-exec</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If true, trace any child process after fork and before they
call one of the exec functions. Beware, tracing in this interval
relies on undefined behavior and might cause your application to
crash or deadlock. Note: This option is only available on Linux target
platforms.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e3192" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e3195" class="stentry" rowspan="1" colspan="1">--wait</td>
<td valign="top" headers="d54e3198" class="stentry" rowspan="1" colspan="1">primary,all</td>
<td valign="top" headers="d54e3201" class="stentry" rowspan="1" colspan="1">all</td>
<td valign="top" headers="d54e3204" class="stentry" rowspan="1" colspan="1">If primary, the CLI will wait on the application process
termination. If all, the CLI will additionally wait on re-parented
processes created by the application.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-shutdown-command-switch-options"><a name="cli-shutdown-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-shutdown-command-switch-options" name="cli-shutdown-command-switch-options" shape="rect">1.3.6. CLI Shutdown Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">shutdown</samp> command switch, the
following options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] shutdown [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e4130" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e4133" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e4136" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e4139" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e4142" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4130" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4133" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e4136" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e4139" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4142" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4130" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4133" class="stentry" rowspan="1" colspan="1">--kill</td>
<td valign="top" headers="d54e4136" class="stentry" rowspan="1" colspan="1">
<p class="p">On Linux:
one, sigkill, sigterm, signal number
</p>
<p class="p">On Windows:
true, false
</p>
</td>
<td valign="top" headers="d54e4139" class="stentry" rowspan="1" colspan="1">
<p class="p">On Linux: sigterm</p>
<p class="p">On Windows: true</p>
</td>
<td valign="top" headers="d54e4142" class="stentry" rowspan="1" colspan="1">Send signal to the target application's process group when shutting down
session.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4130" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4133" class="stentry" rowspan="1" colspan="1">--session</td>
<td valign="top" headers="d54e4136" class="stentry" rowspan="1" colspan="1">session identifier</td>
<td valign="top" headers="d54e4139" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4142" class="stentry" rowspan="1" colspan="1">Shutdown the indicated session. The option argument must
represent a valid session name or ID as reported by
<samp class="ph codeph"><span class="ph">nsys</span> sessions list</samp>. Any
<samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-export-command-switch-options"><a name="cli-export-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-export-command-switch-options" name="cli-export-command-switch-options" shape="rect">1.3.7. CLI Export Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">export</samp> command switch, the
following options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] export [options] [nsys-rep-file]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e4254" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e4257" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e4260" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e4263" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e4266" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1">-f</td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--force-overwrite</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1">If true, overwrite all existing result files with same output
filename (QDSTRM, nsys-rep, SQLITE, HDF, TEXT, ARROW, JSON).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--output</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1"><filename></td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1"><inputfile.ext></td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1">Set the .output filename. The default is the input filename
with the extension for the chosen format.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1">-t</td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--type</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1">arrow, hdf, info, json, sqlite, text</td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1">sqlite</td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1">Export format type. HDF format is supported only on x86_64
Linux and Windows
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1">-l</td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--lazy</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1"> Controls if table creation is lazy or not. When true, a
table will only be created when it contains data. This option
will be deprecated in the future, and all exports will be non-lazy.
This affects SQLite, HDF5, and Arrow exports only.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1">-q</td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--quiet</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1">If true, do not display progress bar</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4254" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4257" class="stentry" rowspan="1" colspan="1">--separate-strings</td>
<td valign="top" headers="d54e4260" class="stentry" rowspan="1" colspan="1">true,false</td>
<td valign="top" headers="d54e4263" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4266" class="stentry" rowspan="1" colspan="1">Output stored strings and thread names separately, with one
value per line. This affects JSON and text output only.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-stats-command-switch-options"><a name="cli-stats-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-stats-command-switch-options" name="cli-stats-command-switch-options" shape="rect">1.3.8. CLI Stats Command Switch Options</a></h3>
<div class="body">
<p class="p">
The <samp class="ph codeph"><span class="ph">nsys</span> stats</samp> command generates
a series of summary or trace reports. These reports can be output to the
console, or to individual files, or piped to external processes. Reports
can be rendered in a variety of different output formats, from human
readable columns of text, to formats more appropriate for data exchange,
such as CSV.
</p>
<p class="p">
Reports are generated from an SQLite export of a .nsys-rep file. If a .nsys-rep
file is specified, <span class="ph">Nsight Systems</span> will look for an
accompanying SQLite file and use it. If no SQLite file exists, one will
be exported and created.
</p>
<p class="p">
Individual reports are generated by calling out to scripts that read data
from the SQLite file and return their report data in CSV format.
<span class="ph">Nsight Systems</span> ingests this data and formats it as
requested, then displays the data to the console, writes it to a file, or
pipes it to an external process. Adding new reports is as simple as
writing a script that can read the SQLite file and generate the required
CSV output. See the shipped scripts as an example. Both reports and
formatters may take arguments to tweak their processing. For details on
shipped scripts and formatters, see <strong class="ph b">Report Scripts</strong> topic.
</p>
<p class="p">
Reports are processed using a three-tuple that consists of 1) the requested
report (and any arguments), 2) the presentation format (and any arguments),
and 3) the output (filename, console, or external process). The first
report specified uses the first format specified, and is presented via
the first output specified. The second report uses the second format for
the second output, and so forth. If more reports are specified than
formats or outputs, the format and/or output list is expanded to match
the number of provided reports by repeating the last specified element of
the list (or the default, if nothing was specified).
</p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> stats</samp> is a very powerful
command and can handle complex argument structures, please see the topic
below on Example Stats Command Sequences.
</p>
<p class="p">After choosing the <samp class="ph codeph">stats</samp> command switch, the
following options are available. Usage:
</p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> [global-options] stats [options] [input-file]
</samp></p>
<div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e4460" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e4463" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e4466" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e4469" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e4472" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1">-f</td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--format</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1">column, table, csv, tsv, json, hdoc, htable, .</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1"> Specify the output format of the corresponding report(s). The
special name "." indicates the default format for the given
output. The default format for console is column, while files and
process outputs default to csv. This option may be used multiple times.
Multiple formats may also be specified using a comma-separated list
(<name[:args...][,name[:args...]...]>). See
<strong class="ph b">Report Scripts</strong> for options
available with each format.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--force-export</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Force a re-export of the SQLite file from the specified
.nsys-rep file, even if an SQLite file already exists.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--force-overwrite</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Overwrite any existing report file(s).</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--help-formats</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1"><format_name>, ALL, [none]</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">With no argument, give a summary of the available output
formats. If a format name is given, a more detailed explanation of
that format is displayed. If <samp class="ph codeph">ALL</samp> is
given, a more detailed explanation of all available formats is
displayed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--help-reports</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1"><report_name>, ALL, [none]</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">With no argument, list a summary of the available summary and
trace reports. If a report name is given, a more detailed
explanation of the report is displayed. If <samp class="ph codeph">ALL</samp> is
given, a more detailed explanation of all available reports is
displayed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--output</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1">-, @<command>, <basename>, .</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">-</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Specify the output mechanism for the corresponding rule(s).
There are three output mechanisms: print to console, output to
file, or output to command.
This option may be used multiple times. Multiple outputs may also
be specified using a comma-separated list.
If the given output name is "-", the rule will be displayed
on the console. If the output name starts with "@", the output
designates a command to run. The command will be executed and
the rule output will be piped into the command. Any other output
is assumed to be the base path and name for a file.
If a file basename is given, the filename used will be:
<basename>_<report&args>.<output_format>.
The default base (including path) is the name of the SQLite file
(as derived from the input file or --sqlite option), minus the
extension. The output "." can be used to indicate the rule
should be output to a file, and the default basename should be
used. To write one or more rules to files using the default
basename, use the option: "--output .".
If the output starts with "@", the rule is output to the
given command. The command is run, and the output of the rule
is piped to the command's stdin (standard-input). The command's
stdout and stderr remain attached to the console, so any output
will be displayed directly to the console.
Be aware there are some limitations in how the command string is
parsed. No shell expansions (including *, ?, [], and ~) are
supported. The command cannot be piped to another command, nor
redirected to a file using shell syntax. The command and command
arguments are split on whitespace, and no quotes (within the command
syntax) are supported. For commands that require complex command
line syntax, it is suggested that the command be put into a shell
script file, and the script designated as the output command.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1">-q</td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--quiet</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Do not display verbose messages, only display errors.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1">-r</td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--report</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1">See <strong class="ph b">Report Scripts</strong></td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Specify the report(s) to generate, including any arguments.
This option may be used multiple times. Multiple reports may also be
specified using a comma-separated list
(<name[:args...][,name[:args...]...]>). If no reports are
specified, the following will be used as the default report set:
nvtxsum, osrtsum, cudaapisum, gpukernsum, gpumemtimesum, gpumemsizesum,
openmpevtsum, khrdebugsum, khrdebuggpusum, vulkanmarkerssum,
vulkangpumarkersum, dx11pixsum, dx12gpumarkersum, dx12pixsum,
wddmqueuesdetails, unifiedmemory, unifiedmemorytotals, umcpupagefaults,
openaccsum. See <strong class="ph b">Report Scripts</strong> section for details about
existing built-in scripts and how to make your own.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--report-dir</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1"><path></td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Add a directory to the path used to find report scripts. This
is usually only needed if you have one or more directories with
personal scripts. This option may be used multiple times. Each use
adds a new directory to the end of the path. A search path can also
be defined using the environment variable "NSYS_STATS_REPORT_PATH".
Directories added this way will be added after the application flags.
The last two entries in the path will always be the current working
directory, followed by the directory containing the shipped
<samp class="ph codeph"><span class="ph">nsys</span></samp> reports.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--sqlite</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1"><file.sqlite></td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Specify the SQLite export filename. If this file exists, it
will be used. If this file doesn't exist (or if --force-export was
given) this file will be created from the specified .nsys-rep file
before report processing. This option cannot be used if the specified
input file is also an SQLite file.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4460" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4463" class="stentry" rowspan="1" colspan="1">--timeunit</td>
<td valign="top" headers="d54e4466" class="stentry" rowspan="1" colspan="1">nsec, nanoseconds, usec, microseconds, msec, milliseconds,
seconds
</td>
<td valign="top" headers="d54e4469" class="stentry" rowspan="1" colspan="1">nanoseconds</td>
<td valign="top" headers="d54e4472" class="stentry" rowspan="1" colspan="1">Set basic unit of time for all rules. The argument of the
switch is matched by using the longest prefix matching. Meaning that
it is not necessary to write a whole word as the switch argument. It
is similar to passing a ":time=<unit>" argument to every
formatter, although the formatter uses more strict naming
conventions. See "nsys analyze --help-formats column" for more
detailed information on unit conversion.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-analyze-command-switch-options"><a name="cli-analyze-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-analyze-command-switch-options" name="cli-analyze-command-switch-options" shape="rect">1.3.9. CLI Analyze Command Switch Options</a></h3>
<div class="body">
<p class="p">
The <samp class="ph codeph"><span class="ph">nsys</span> analyze</samp> command generates
and outputs to the terminal a report using expert system rules on
existing results. Reports are generated from an SQLite export of a
.nsys-rep file. If a .nsys-rep file is specified, <span class="ph">Nsight Systems</span>
will look for an accompanying SQLite file and use it. If no SQLite export
file exists, one will be created.
</p>
<p class="p">After choosing the <samp class="ph codeph">analyze</samp> command switch, the
following options are available. Usage:
</p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> [global-options] analyze [options] [input-file]
</samp></p>
<div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e4739" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e4742" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e4745" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e4748" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e4751" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1">-f</td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--format</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1">column, table, csv, tsv, json, hdoc, htable, .</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Specify the output format of the corresponding report(s). The special name "."
indicates the default format for the given output. The default format for console is
column, while files and process outputs default to csv. This option may be used multiple
times. Multiple formats may also be specified using a comma-separated list
(<name[:args...][,name[:args...]...]>). See Report Scripts for options available with
each format.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--force-export</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Force a re-export of the SQLite file from the specified
.nsys-rep file, even if an SQLite file already exists.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--force-overwrite</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">false</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Overwrite any existing output files.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--help-formats</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1"><format_name>, ALL, [none]</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">With no argument, list a summary of the available output formats.
If a format name is given, a more detailed explanation of the
the format is displayed. If <samp class="ph codeph">ALL</samp> is given, a more detailed
explanation of all available formats is displayed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--help-rules</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1"><report_name>, ALL, [none]</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">With no argument, list available rules with a short
description. If a rule name is given, a more detailed
explanation of the rule is displayed. If <samp class="ph codeph">ALL</samp> is
given, a more detailed explanation of all available rules is
displayed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--output</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1">-, @<command>, <basename>, .</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">-</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Specify the output mechanism for the corresponding rule(s).
There are three output mechanisms: print to console, output to
file, or output to command.
This option may be used multiple times. Multiple outputs may also
be specified using a comma-separated list.
If the given output name is "-", the rule will be displayed
on the console. If the output name starts with "@", the output
designates a command to run. The command will be executed and
the rule output will be piped into the command. Any other output
is assumed to be the base path and name for a file.
If a file basename is given, the filename used will be:
<basename>_<report&args>.<output_format>.
The default base (including path) is the name of the SQLite file
(as derived from the input file or --sqlite option), minus the
extension. The output "." can be used to indicate the rule
should be output to a file, and the default basename should be
used. To write one or more rules to files using the default
basename, use the option: "--output .".
If the output starts with "@", the rule is output to the
given command. The command is run, and the output of the rule
is piped to the command's stdin (standard-input). The command's
stdout and stderr remain attached to the console, so any output
will be displayed directly to the console.
Be aware there are some limitations in how the command string is
parsed. No shell expansions (including *, ?, [], and ~) are
supported. The command cannot be piped to another command, nor
redirected to a file using shell syntax. The command and command
arguments are split on whitespace, and no quotes (within the command
syntax) are supported. For commands that require complex command
line syntax, it is suggested that the command be put into a shell
script file, and the script designated as the output command.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1">-q</td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--quiet</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Do not display verbose messages, only display errors.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1">-r</td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--rule</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1">cuda-async-memcpy, cuda-sync-memcpy, cuda-sync-memset,
cuda-sync-api, gpu-starv, gpu-low-util, dx12-mem-op
</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">all</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Specify the rules(s) to execute, including any arguments.
This option may be used multiple times. Multiple reports may also be
specified using a comma-separated list. See <strong class="ph b">Expert Systems</strong>
section and --help-rules switch for details on all rules.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--sqlite</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1"><file.sqlite></td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Specify the SQLite export filename. If this file exists, it
will be used. If this file doesn't exist (or if --force-export was
given) this file will be created from the specified .nsys-rep file
before report processing. This option cannot be used if the specified
input file is also an SQLite file.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4739" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4742" class="stentry" rowspan="1" colspan="1">--timeunit</td>
<td valign="top" headers="d54e4745" class="stentry" rowspan="1" colspan="1">nsec, nanoseconds, usec, microseconds, msec, milliseconds, seconds</td>
<td valign="top" headers="d54e4748" class="stentry" rowspan="1" colspan="1">nanoseconds</td>
<td valign="top" headers="d54e4751" class="stentry" rowspan="1" colspan="1">Set basic unit of time for all rules. The argument of the
switch is matched by using the longest prefix matching. Meaning that
it is not necessary to write a whole word as the switch argument. It
is similar to passing a ":time=<unit>" argument to every
formatter, although the formatter uses more strict naming
conventions. See "nsys analyze --help-formats column" for more
detailed information on unit conversion.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-status-command-switch-options"><a name="cli-status-command-switch-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-status-command-switch-options" name="cli-status-command-switch-options" shape="rect">1.3.10. CLI Status Command Switch Options</a></h3>
<div class="body">
<p class="p">The <samp class="ph codeph"><span class="ph">nsys</span> status</samp> command returns the current state of
the CLI. After choosing the <samp class="ph codeph">status</samp> command switch, the following options
are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] status [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e4987" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e4990" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e4993" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e4996" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e4999" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4987" class="stentry" rowspan="1" colspan="1">-e</td>
<td valign="top" headers="d54e4990" class="stentry" rowspan="1" colspan="1">--environment</td>
<td valign="top" headers="d54e4993" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4996" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4999" class="stentry" rowspan="1" colspan="1">Returns information about the system regarding suitability of
the profiling environment.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4987" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4990" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e4993" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e4996" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4999" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e4987" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e4990" class="stentry" rowspan="1" colspan="1">--session</td>
<td valign="top" headers="d54e4993" class="stentry" rowspan="1" colspan="1">session identifier</td>
<td valign="top" headers="d54e4996" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e4999" class="stentry" rowspan="1" colspan="1">Print the status of the indicated session. The option argument
must represent a valid session name or ID as reported by
<samp class="ph codeph"><span class="ph">nsys</span>sessions list</samp>. Any
<samp class="ph codeph">%q{ENV_VAR}</samp> pattern will be substituted with the
value of the environment variable. Any <samp class="ph codeph">%h</samp> pattern
will be substituted with the hostname of the system. Any <samp class="ph codeph">%%</samp>
pattern will be substituted with <samp class="ph codeph">%</samp>.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested2" id="cli-sessions-command-switch-subcommands"><a name="cli-sessions-command-switch-subcommands" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-sessions-command-switch-subcommands" name="cli-sessions-command-switch-subcommands" shape="rect">1.3.11. CLI Sessions Command Switch Subcommands</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">sessions</samp> command switch, the
following subcommands are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] sessions [subcommand]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e5098" class="stentry" width="16.666666666666668%" rowspan="1" colspan="1">Subcommand</th>
<th valign="bottom" align="left" id="d54e5101" class="stentry" width="83.33333333333334%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e5098" class="stentry" rowspan="1" colspan="1">list</td>
<td valign="top" headers="d54e5101" class="stentry" rowspan="1" colspan="1">List all active sessions including ID, name, and state information</td>
</tr>
</table>
</div>
</div>
<div class="topic nested3" id="cli-sessions-list-command-switch-subcommands"><a name="cli-sessions-list-command-switch-subcommands" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-sessions-list-command-switch-subcommands" name="cli-sessions-list-command-switch-subcommands" shape="rect">1.3.11.1. CLI Sessions List Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">sessions list</samp> command switch, the
following options are available. Usage:
</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] sessions list [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e5142" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e5145" class="stentry" width="14.285714285714285%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e5148" class="stentry" width="19.047619047619047%" rowspan="1" colspan="1">Possible Parameters</th>
<th valign="bottom" align="left" id="d54e5151" class="stentry" width="9.523809523809524%" rowspan="1" colspan="1">Default</th>
<th valign="bottom" align="left" id="d54e5154" class="stentry" width="47.61904761904762%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e5142" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e5145" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e5148" class="stentry" rowspan="1" colspan="1"><tag></td>
<td valign="top" headers="d54e5151" class="stentry" rowspan="1" colspan="1">none</td>
<td valign="top" headers="d54e5154" class="stentry" rowspan="1" colspan="1">Print the help message. The option can take one optional
argument that will be used as a tag. If a tag is provided, only options
relevant to the tag will be printed.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e5142" class="stentry" rowspan="1" colspan="1">-p</td>
<td valign="top" headers="d54e5145" class="stentry" rowspan="1" colspan="1">--show-header</td>
<td valign="top" headers="d54e5148" class="stentry" rowspan="1" colspan="1">true, false</td>
<td valign="top" headers="d54e5151" class="stentry" rowspan="1" colspan="1">true</td>
<td valign="top" headers="d54e5154" class="stentry" rowspan="1" colspan="1">Controls whether a header should appear in the output.</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="topic nested1" id="example-single-command-lines"><a name="example-single-command-lines" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#example-single-command-lines" name="example-single-command-lines" shape="rect">1.4. Example Single Command Lines</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Version Information</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> -v</pre><p class="p">Effect: Prints tool version information to the screen.</p>
<p class="p"><strong class="ph b">Run with elevated privilege</strong></p><pre xml:space="preserve">sudo <span class="ph">nsys</span> profile <app></pre><p class="p">Effect: <span class="ph">Nsight Systems</span> CLI (and target application) will run
with elevated privilege. This is necessary for some features, such as FTrace
or system-wide CPU sampling. If you don't want the target application to be
elevated, use `--run-as` option.
</p>
<p class="p"><strong class="ph b">Default analysis run</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile <application>
[application-arguments]</pre><p class="p">Effect: Launch the application using the given arguments. Start collecting
immediately and end collection when the application stops. Trace CUDA,
OpenGL, NVTX, and OS runtime libraries APIs. Collect CPU sampling information
and thread scheduling information. With <span class="ph">Nsight Systems Embedded Platforms Edition</span> this will
only analysis the single process. With <span class="ph">Nsight Systems Workstation Edition</span> this
will trace the process tree. Generate the report#.nsys-rep file in the default
location, incrementing the report number if needed to avoid overwriting any
existing output files.
</p>
<p class="p"><strong class="ph b">Limited trace only run</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --trace=cuda,nvtx -d 20
--sample=none --cpuctxsw=none -o my_test <application>
[application-arguments]</pre><p class="p">Effect: Launch the application using the given arguments. Start collecting
immediately and end collection after 20 seconds or when the application ends.
Trace CUDA and NVTX APIs. Do not collect CPU sampling information or thread
scheduling information. Profile any child processes. Generate the output file
as my_test.nsys-rep in the current working directory.
</p>
<p class="p"><strong class="ph b">Delayed start run</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile -e TEST_ONLY=0 -y 20
<application> [application-arguments]</pre><p class="p">Effect: Set environment variable TEST_ONLY=0. Launch the application
using the given arguments. Start collecting after 20 seconds and end
collection at application exit. Trace CUDA, OpenGL, NVTX, and OS runtime
libraries APIs. Collect CPU sampling and thread schedule information. Profile
any child processes. Generate the report#.nsys-rep file in the default location,
incrementing if needed to avoid overwriting any existing output files.
</p>
<p class="p"><strong class="ph b">Collect ftrace events</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --ftrace=drm/drm_vblank_event
-d 20</pre><p class="p">Effect: Collect ftrace <samp class="ph codeph">drm_vblank_event</samp> events for 20
seconds. Generate the report#.nsys-rep file in the current working directory.
Note that ftrace event collection requires running as root. To get a list of
ftrace events available from the kernel, run the following:
</p><pre xml:space="preserve">sudo cat /sys/kernel/debug/tracing/available_events</pre><p class="p"><strong class="ph b">Run GPU metric sampling on one TU10x</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --gpu-metrics-device=0
--gpu-metrics-set=tu10x-gfxt <application></pre><p class="p">Effect: Launch application. Collect default options and GPU metrics for
the first GPU (a TU10x), using the tu10x-gfxt metric set at the default
frequency (10 kHz). Profile any child processes. Generate the report#.nsys-rep
file in the default location, incrementing if needed to avoid overwriting
any existing output files.
</p>
<p class="p"><strong class="ph b">Run GPU metric sampling on all GPUs at a set frequency</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --gpu-metrics-device=all
--gpu-metrics-frequency=20000 <application></pre><p class="p">Effect: Launch application. Collect default options and GPU metrics for
all available GPUs using the first suitable metric set for each and sampling
at 20 kHz. Profile any child processes. Generate the report#.nsys-rep
file in the default location, incrementing if needed to avoid overwriting
any existing output files.
</p>
<p class="p"><strong class="ph b">Collect custom ETW trace using configuration file</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --etw-provider=file.JSON</pre><p class="p">Effect: Configure custom ETW collectors using the contents of file.JSON.
Collect data for 20 seconds. Generate the report#.nsys-rep file in the current
working directory.
</p>
<div class="p">
A template JSON configuration file is located at in the <span class="ph">Nsight Systems</span>
installation directory as \target-windows-x64\etw_providers_template.json.
This path will show up automatically if you call
<pre xml:space="preserve"><span class="ph">nsys</span> profile --help</pre></div>
<div class="p">
The <strong class="ph b">level</strong> attribute can only be set to one of the following:
<ul class="ul">
<li class="li">TRACE_LEVEL_CRITICAL</li>
<li class="li">TRACE_LEVEL_ERROR</li>
<li class="li">TRACE_LEVEL_WARNING</li>
<li class="li">TRACE_LEVEL_INFORMATION</li>
<li class="li">TRACE_LEVEL_VERBOSE</li>
</ul>
</div>
<div class="p">
The <strong class="ph b">flags</strong> attribute can only be set to one or more of the
following:
<ul class="ul">
<li class="li">EVENT_TRACE_FLAG_ALPC</li>
<li class="li">EVENT_TRACE_FLAG_CSWITCH</li>
<li class="li">EVENT_TRACE_FLAG_DBGPRINT</li>
<li class="li">EVENT_TRACE_FLAG_DISK_FILE_IO</li>
<li class="li">EVENT_TRACE_FLAG_DISK_IO</li>
<li class="li">EVENT_TRACE_FLAG_DISK_IO_INIT</li>
<li class="li">EVENT_TRACE_FLAG_DISPATCHER</li>
<li class="li">EVENT_TRACE_FLAG_DPC</li>
<li class="li">EVENT_TRACE_FLAG_DRIVER</li>
<li class="li">EVENT_TRACE_FLAG_FILE_IO</li>
<li class="li">EVENT_TRACE_FLAG_FILE_IO_INIT</li>
<li class="li">EVENT_TRACE_FLAG_IMAGE_LOAD</li>
<li class="li">EVENT_TRACE_FLAG_INTERRUPT</li>
<li class="li">EVENT_TRACE_FLAG_JOB</li>
<li class="li">EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS</li>
<li class="li">EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS</li>
<li class="li">EVENT_TRACE_FLAG_NETWORK_TCPIP</li>
<li class="li">EVENT_TRACE_FLAG_NO_SYSCONFIG</li>
<li class="li">EVENT_TRACE_FLAG_PROCESS</li>
<li class="li">EVENT_TRACE_FLAG_PROCESS_COUNTERS</li>
<li class="li">EVENT_TRACE_FLAG_PROFILE</li>
<li class="li">EVENT_TRACE_FLAG_REGISTRY</li>
<li class="li">EVENT_TRACE_FLAG_SPLIT_IO</li>
<li class="li">EVENT_TRACE_FLAG_SYSTEMCALL</li>
<li class="li">EVENT_TRACE_FLAG_THREAD</li>
<li class="li">EVENT_TRACE_FLAG_VAMAP</li>
<li class="li">EVENT_TRACE_FLAG_VIRTUAL_ALLOC</li>
</ul>
</div>
<p class="p"><strong class="ph b">Typical case: profile a Python script that uses CUDA</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --trace=cuda,cudnn,cublas,osrt,nvtx
--delay=60 python my_dnn_script.py</pre><p class="p">Effect: Launch a Python script and start profiling it 60 seconds after
the launch, tracing CUDA, cuDNN, cuBLAS, OS runtime APIs, and NVTX as well
as collecting thread schedule information.
</p>
<p class="p"><strong class="ph b">Typical case: profile an app that uses Vulkan</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> profile --trace=vulkan,osrt,nvtx
--delay=60 ./myapp</pre><p class="p">Effect: Launch an app and start profiling it 60 seconds after the launch,
tracing Vulkan, OS runtime APIs, and NVTX as well as collecting CPU sampling
and thread schedule information.
</p>
</div>
</div>
<div class="topic nested1" id="example-interactive-cli-command-sequences"><a name="example-interactive-cli-command-sequences" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#example-interactive-cli-command-sequences" name="example-interactive-cli-command-sequences" shape="rect">1.5. Example Interactive CLI Command Sequences</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Collect from beginning of application, end manually</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> start --stop-on-exit=false
<span class="ph">nsys</span> launch --trace=cuda,nvtx --sample=none <application> [application-arguments]
<span class="ph">nsys</span> stop</pre><p class="p">Effect: Create interactive CLI process and set it up to begin collecting
as soon as an application is launched. Launch the application, set up to
allow tracing of CUDA and NVTX as well as collection of thread schedule
information. Stop only when explicitly requested. Generate the
report#.nsys-rep in the default location.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">If you start a collection and fail to stop the collection (or if
you are allowing it to stop on exit, and the application runs for too
long) your system’s storage space may be filled with collected data
causing significant issues for the system. <span class="ph">Nsight Systems</span>
will collect a different amount of data/sec depending on options, but in
general <span class="ph">Nsight Systems</span> does not support runs of more than
5 minutes duration.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"><strong class="ph b">Run application, begin collection manually, run until process ends
</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> launch -w true <application> [application-arguments]
<span class="ph">nsys</span> start</pre><p class="p">Effect: Create interactive CLI and launch an application set up for default
analysis. Send application output to the terminal. No data is collected
until you manually start collection at area of interest. Profile until
the application ends. Generate the report#.nsys-rep in the default location.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">If you launch an application and that application and any
descendants exit before start is called <span class="ph">Nsight Systems</span>
will create a fully formed .nsys-rep file containing no data.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"><strong class="ph b">Run application, start/stop collection using cudaProfilerStart/Stop
</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> start -c cudaProfileApi
<span class="ph">nsys</span> launch -w true <application> [application-arguments]</pre><p class="p">Effect: Create interactive CLI process and set it up to begin collecting
as soon as a cudaProfileStart() is detected. Launch application for
default analysis, sending application output to the terminal. Stop
collection at next call to cudaProfilerStop, when the user calls
<samp class="ph codeph"><span class="ph">nsys</span> stop</samp>, or when the root process
terminates. Generate the report#.nsys-rep in the default location.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">If you call <samp class="ph codeph"><span class="ph">nsys</span> launch</samp> before
<samp class="ph codeph"><span class="ph">nsys</span> start -c cudaProfilerApi</samp> and the
code contains a large number of short duration cudaProfilerStart/Stop pairs,
<span class="ph">Nsight Systems</span> may be unable to process them correctly,
causing a fault. This will be corrected in a future version.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">The <span class="ph">Nsight Systems</span> CLI does not support multiple calls
to the cudaProfilerStart/Stop API at this time.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"><strong class="ph b">Run application, start/stop collection using NVTX</strong></p><pre xml:space="preserve"><span class="ph">nsys</span> start -c nvtx
<span class="ph">nsys</span> launch -w true -p MESSAGE@DOMAIN <application> [application-arguments]</pre><p class="p">Effect: Create interactive CLI process and set it up to begin collecting
as soon as an NVTX range with given message in given domain (capture
range) is opened. Launch application for default analysis, sending
application output to the terminal. Stop collection when all capture
ranges are closed, when the user calls <samp class="ph codeph"><span class="ph">nsys</span> stop</samp>,
or when the root process terminates. Generate the report#.nsys-rep in the
default location.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">The <span class="ph">Nsight Systems</span> CLI only triggers the profiling
session for the first capture range.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p">NVTX capture range can be specified:</p>
<ul class="ul">
<li class="li">
<p class="p">Message@Domain: All ranges with given message in given domain are
capture ranges. For example:
</p><pre xml:space="preserve"><span class="ph">nsys</span> launch -w true -p profiler@service ./app</pre><p class="p">This would make the profiling start when the first range with message
"profiler" is opened in domain "service".
</p>
</li>
<li class="li">
<p class="p">Message@*: All ranges with given message in all domains are capture
ranges. For example:
</p><pre xml:space="preserve"><span class="ph">nsys</span> launch -w true -p profiler@* ./app</pre><p class="p">This would make the profiling start when the first range with message
"profiler" is opened in any domain.
</p>
</li>
<li class="li">
<p class="p">Message: All ranges with given message in default domain are capture
ranges. For example:
</p><pre xml:space="preserve"><span class="ph">nsys</span> launch -w true -p profiler ./app</pre><p class="p">This would make the profiling start when the first range with message "profiler"
is opened in the default domain.
</p>
</li>
<li class="li">
<p class="p">By default only messages, provided by NVTX registered strings are
considered to avoid additional overhead. To enable non-registered strings
check please launch your application with
<samp class="ph codeph">NSYS_NVTX_PROFILER_REGISTER_ONLY=0</samp> environment:
</p><pre xml:space="preserve"><span class="ph">nsys</span> launch -w true -p profiler@service -e NSYS_NVTX_PROFILER_REGISTER_ONLY=0 ./app</pre></li>
</ul>
<p class="p"><strong class="ph b">Run application, start/stop collection multiple times</strong></p>
<p class="p">The interactive CLI supports multiple sequential collections per launch.</p><pre xml:space="preserve"><span class="ph">nsys</span> launch <application> [application-arguments]
<span class="ph">nsys</span> start
<span class="ph">nsys</span> stop
<span class="ph">nsys</span> start
<span class="ph">nsys</span> stop
<span class="ph">nsys</span> shutdown --kill sigkill</pre><p class="p">Effect: Create interactive CLI and launch an application set up for
default analysis. Send application output to the terminal. No data is
collected until the start command is executed. Collect data from start
until stop requested, generate report#.qstrm in the current working
directory. Collect data from second start until the second stop request,
generate report#.nsys-rep (incremented by one) in the current working
directory. Shutdown the interactive CLI and send sigkill to the target
application's process group.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">Calling <samp class="ph codeph"><span class="ph">nsys</span> cancel</samp> after
<samp class="ph codeph"><span class="ph">nsys</span> start</samp> will cancel the collection
without generating a report.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
</div>
</div>
<div class="topic nested1" id="example-nsys-stats"><a name="example-nsys-stats" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#example-nsys-stats" name="example-nsys-stats" shape="rect">1.6. Example Stats Command Sequences</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Display default statistics</strong></p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> stats report1.nsys-rep</samp></p>
<p class="p">Effect: Export an SQLite file named report1.sqlite from report1.nsys-rep
(assuming it does not already exist). Print the default reports in column
format to the console.
</p>
<p class="p">
Note: The following two command sequences should present very similar
information:
</p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> profile --stats=true <application>
</samp></p>
<p class="p">or</p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> profile <application></samp></p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> stats report1.nsys-rep</samp></p>
<p class="p"><strong class="ph b">Display specific data from a report</strong></p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> stats --report gputrace report1.nsys-rep</samp></p>
<p class="p">Effect: Export an SQLite file named report1.sqlite from report1.nsys-rep
(assuming it does not already exist). Print the report generated by the
<samp class="ph codeph">gputrace</samp> script to the console in column format.
</p>
<p class="p"><strong class="ph b">Generate multiple reports, in multiple formats, output multiple
places</strong></p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> stats --report gputrace --report gpukernsum
--report cudaapisum --format csv,column --output .,- report1.nsys-rep
</samp></p>
<p class="p">Effect: Export an SQLite file named report1.sqlite from report1.nsys-rep
(assuming it does not already exist). Generate three reports. The first,
the <samp class="ph codeph">gputrace</samp> report, will be output to the file
report1_gputrace.csv in CSV format. The other two reports,
<samp class="ph codeph">gpukernsum</samp> and <samp class="ph codeph">cudaapisum</samp>, will be output
to the console as columns of data. Although three reports were given, only
two formats and outputs are given. To reconcile this, both the list of
formats and outputs is expanded to match the list of reports by repeating
the last element.
</p>
<p class="p"><strong class="ph b">Submit report data to a command</strong></p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> stats --report cudaapisum --format table \
--output @“grep -E (-|Name|cudaFree” test.sqlite
</samp></p>
<p class="p">Effect: Open test.sqlite and run the <samp class="ph codeph">
cudaapisum</samp> script on that file. Generate table data and feed that
into the command <samp class="ph codeph">grep -E (-|Name|cudaFree)</samp>. The grep
command will filter out everything but the header, formatting, and the
<samp class="ph codeph">cudaFree</samp> data, and display the results to the console.
</p>
<p class="p">
Note: When the output name starts with @, it is defined as a command. The
command is run, and the output of the report is piped to the command's
stdin (standard-input). The command's stdout and stderr remain attached to the
console, so any output will be displayed directly to the console.
</p>
<p class="p">
Be aware there are some limitations in how the command string is parsed. No
shell expansions (including *, ?, [], and ~) are supported. The command cannot
be piped to another command, nor redirected to a file using shell syntax.
The command and command arguments are split on whitespace, and no quotes
(within the command syntax) are supported. For commands that require
complex command line syntax, it is suggested that the command be put into a
shell script file, and the script designated as the output command
</p>
</div>
</div>
<div class="topic nested1" id="example-output-stats-option"><a name="example-output-stats-option" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#example-output-stats-option" name="example-output-stats-option" shape="rect">1.7. Example Output from --stats Option</a></h3>
<div class="body">
<p class="p"> The <samp class="ph codeph"><span class="ph">nsys</span> stats</samp> command can be
used post analysis to generate specific or personalized reports. For
a default fixed set of summary statistics to be automatically generated,
you can use the --stats option with the <samp class="ph codeph"><span class="ph">nsys</span>
profile</samp> or <samp class="ph codeph"><span class="ph">nsys</span> start</samp>
command to generate a fixed set of useful summary statistics.
</p>
<p class="p">If your run traces CUDA, these include CUDA API, Kernel, and Memory
Operation statistics:
</p>
<p class="p"><img class="image" src="graphics/3407-profile-cuda-summary.png" height="-1" width="-1" alt="CUDA Statistics"></img></p>
<p class="p">If your run traces OS runtime events or NVTX push-pop ranges:</p>
<p class="p"><img class="image" src="graphics/3407-profile-osrt-nvtx-summary.png" height="-1" width="-1" alt="OS runtime and NVTX Statistics"></img></p>
<p class="p">If your run traces graphics debug markers these include DX11 debug markers, DX12
debug markers, Vulkan debug markers or KHR debug markers:
</p>
<p class="p"><img class="image" src="graphics/ue4_infiltrator_vulkan_markers-summary.png" height="-1" width="-1" alt="Graphics Vulkan debug markers Statistics"></img></p>
<p class="p">Recipes for these statistics as well as documentation on how to create
your own metrics will be available in a future version of the tool.
</p>
</div>
</div>
<div class="topic nested1" id="importing-qdstrm-files"><a name="importing-qdstrm-files" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#importing-qdstrm-files" name="importing-qdstrm-files" shape="rect">1.8. Importing and Viewing Command Line Results Files</a></h3>
<div class="body">
<p class="p">The CLI generates a .qdstrm file. The .qdstrm file is an intermediate
result file, not intended for multiple imports. It needs to be processed,
either by importing it into the GUI or by using the standalone
QdstrmImporter to generate an optimized .nsys-rep file. Use this .nsys-rep file
when re-opening the result on the same machine, opening the result on a
different machine, or sharing results with teammates.
</p>
<p class="p">This version of <span class="ph">Nsight Systems</span> will attempt to
automatically convert the .qdstrm file to a .nsys-rep file with the same name
after the run finishes if the required libraries are available. The ability
to turn off auto-conversion will be added in a later version.
</p>
<p class="p"><strong class="ph b">Import Into the GUI</strong></p>
<p class="p">The CLI and host GUI versions must match to import a .qdstrm file
successfully. The host GUI is backward compatible only with .nsys-rep files.
</p>
<p class="p">Copy the .qdstrm file you are interested in viewing to a system
where the <span class="ph">Nsight Systems</span> host GUI is installed. Launch the
<span class="ph">Nsight Systems</span> GUI. Select <strong class="ph b">File->Import...</strong> and choose
the .qdstrm file you wish to open.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/import_qdstrm.png" alt="Import qdstrm"></img></p>
</blockquote>
<p class="p">The import of really large, multi-gigabyte, .qdstrm
files may take up all of the memory on the host computer and lock up the
system. This will be fixed in a later version.
</p>
<p class="p"><strong class="ph b">Importing Windows ETL files</strong></p>
<p class="p">For Windows targets, ETL files captured with Xperf or the
<samp class="ph codeph">log.cmd</samp> command supplied with GPUView in the Windows
Performance Toolkit can be imported to create reports as if they were
captured with <span class="ph">Nsight Systems</span>'s "WDDM trace" and "Custom ETW
trace" features. Simply choose the .etl file from the Import dialog to
convert it to a .nsys-rep file.
</p>
<p class="p"><strong class="ph b">Create .nsys-rep Using QdstrmImporter</strong></p>
<p class="p">The CLI and QdstrmImporter versions must match to convert a .qdstrm
file into a .nsys-rep file. This .nsys-rep file can then be opened in the same
version or more recent versions of the GUI.
</p>
<p class="p">To run QdstrmImporter on the host system, find the QdstrmImporter binary
in the Host-x86_64 directory in your installation. QdstrmImporter is
available for all host platforms. See options below.
</p>
<p class="p">To run QdstrmImporter on the target system, copy the Linux Host-x86_64
directory to the target Linux system or install <span class="ph">Nsight Systems</span>
for Linux host directly on the target. The Windows or macOS host
QdstrmImporter will not work on a Linux Target. See options below.
</p>
<div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e6179" class="stentry" width="10%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e6182" class="stentry" width="20%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e6185" class="stentry" width="20%" rowspan="1" colspan="1">Parameter</th>
<th valign="bottom" align="left" id="d54e6188" class="stentry" width="50%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e6179" class="stentry" rowspan="1" colspan="1">-h</td>
<td valign="top" headers="d54e6182" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e6185" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e6188" class="stentry" rowspan="1" colspan="1">Help message providing information about available options and
their parameters.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e6179" class="stentry" rowspan="1" colspan="1">-v</td>
<td valign="top" headers="d54e6182" class="stentry" rowspan="1" colspan="1">--version</td>
<td valign="top" headers="d54e6185" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e6188" class="stentry" rowspan="1" colspan="1">Output QdstrmImporter version information</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e6179" class="stentry" rowspan="1" colspan="1">-i</td>
<td valign="top" headers="d54e6182" class="stentry" rowspan="1" colspan="1">--input-file</td>
<td valign="top" headers="d54e6185" class="stentry" rowspan="1" colspan="1">filename or path</td>
<td valign="top" headers="d54e6188" class="stentry" rowspan="1" colspan="1">Import .qdstrm file from this location.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e6179" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e6182" class="stentry" rowspan="1" colspan="1">--output-file</td>
<td valign="top" headers="d54e6185" class="stentry" rowspan="1" colspan="1">filename or path</td>
<td valign="top" headers="d54e6188" class="stentry" rowspan="1" colspan="1">Provide a different file name or path for the resulting .nsys-rep
file. Default is the same name and path as the .qdstrm file
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested1" id="cli-analyze-mpi-codes"><a name="cli-analyze-mpi-codes" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-analyze-mpi-codes" name="cli-analyze-mpi-codes" shape="rect">1.9. Using the CLI to Analyze MPI Codes</a></h3>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested2" id="cli-tracing-mpi-api-calls"><a name="cli-tracing-mpi-api-calls" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-tracing-mpi-api-calls" name="cli-tracing-mpi-api-calls" shape="rect">1.9.1. Tracing MPI API calls</a></h3>
<div class="body">
<p class="p">The <span class="ph">Nsight Systems</span> CLI has built-in API trace support for
Open MPI and MPICH based MPI implementations via <samp class="ph codeph">--trace=mpi</samp>.
It traces a subset of the MPI API, including blocking and non-blocking point-to-point and collective communication, and file
I/O operations.
</p>
<p class="p">If you require more control over the list of traced APIs or if you are
using a different MPI implementation, you can use the
<a class="xref" href="https://github.com/NVIDIA/cuda-profiler/tree/master/nvtx_pmpi_wrappers" target="_blank" shape="rect">NVTX wrappers for MPI</a> on GitHub.
Choose an NVTX domain name other than "MPI", since it is filtered out by
<span class="ph">Nsight Systems</span> when MPI tracing is not enabled.
Use the NVTX-instrumented MPI wrapper library as follows:
</p>
<p class="p"><samp class="ph codeph"><span class="ph">nsys</span> profile -e LD_PRELOAD=${PATH_TO_YOUR_NVTX_MPI_LIB} --trace=nvtx</samp></p>
</div>
</div>
<div class="topic nested2" id="cli-profiling-apps-launched-mpirun"><a name="cli-profiling-apps-launched-mpirun" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-profiling-apps-launched-mpirun" name="cli-profiling-apps-launched-mpirun" shape="rect">1.9.2. Using the CLI to Profile Applications Launched with mpirun</a></h3>
<div class="body">
<p class="p">This version of the <span class="ph">Nsight Systems</span> CLI supports concurrent use
of the <samp class="ph codeph"><span class="ph">nsys</span> profile</samp> command. Each instance
will create a separate report file.
</p>
<p class="p">You cannot use multiple instances of the interactive CLI concurrently, or use
the interactive CLI concurrently with <samp class="ph codeph"><span class="ph">nsys</span> profile
</samp> in this version.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can be used to profile applications launched with
<samp class="ph codeph">mpirun</samp> command. Since concurrent use of the CLI is supported
only when using the <samp class="ph codeph"><span class="ph">nsys</span> profile</samp> command,
<span class="ph">Nsight Systems</span> cannot profile each node from the GUI or from the
interactive CLI.
</p>
<p class="p">Profile all MPI ranks and put the data in one file (execution on single node only)</p><pre xml:space="preserve"><span class="ph">nsys</span> [<span class="ph">nsys</span> options] mpirun [mpirun options]</pre><p class="p">Profile all MPI ranks and put the data from each rank into a separate file:</p><pre xml:space="preserve">mpirun [mpirun options] <span class="ph">nsys</span> profile [<span class="ph">nsys</span> options]</pre><p class="p">To profile a single MPI process or a subset of MPI processes you can use a
wrapper script. The following script (called "wrap.sh") runs <span class="ph">nsys</span>
on rank 0 only.
</p><pre xml:space="preserve">#!/bin/bash
# Use $PMI_RANK for MPICH and $SLURM_PROCID with srun.
if [ $OMPI_COMM_WORLD_RANK -eq 0 ]; then
<span class="ph">nsys</span> profile -e NSYS_MPI_STORE_TEAMS_PER_RANK=1 -t mpi "$@"
else
"$@"
fi</pre><p class="p">Add appropriate profiling options to the script and execute it with
<samp class="ph codeph">mpirun [mpirun options] ./wrap.sh ./myapp [app options]</samp>.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">If only a subset of MPI ranks is profiled, set the environment
variable <samp class="ph codeph">NSYS_MPI_STORE_TEAMS_PER_RANK=1</samp> to store
all members of custom MPI communicators per MPI rank. Otherwise,
the execution might hang or fail with an MPI error.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
</div>
<div class="topic nested0" id="gui-profiling"><a name="gui-profiling" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#gui-profiling" name="gui-profiling" shape="rect">2. Profiling from the GUI</a></h2>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested1" id="profiling-linux"><a name="profiling-linux" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#profiling-linux" name="profiling-linux" shape="rect">2.1. Profiling Linux Targets from the GUI</a></h3>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested2" id="linux-connect-target"><a name="linux-connect-target" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-connect-target" name="linux-connect-target" shape="rect">2.1.1. Connecting to the Target Device</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> provides a simple interface to profile on
localhost or manage multiple connections to Linux or Windows based
devices via SSH. The network connections manager can be launched through
the device selection dropdown:
</p>
<p class="p">On x86_64:</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/device-list-empty-x86.png" height="-1" width="-1" alt="Empty device list"></img></p>
</blockquote>
<p class="p">On Tegra:</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/device-list-empty.png" alt="Empty device list"></img></p>
</blockquote>
<p class="p">The dialog has simple controls that allow adding, removing, and modifying
connections:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/network-connection.png" height="-1" width="-1" alt="Network connection"></img></p>
</blockquote>
<p class="p"><strong class="ph b">Security notice</strong>: SSH is only used to establish the initial
connection to a target device, perform checks, and upload necessary
files. The actual profiling commands and data are transferred through a
raw, unencrypted socket. <span class="ph">Nsight Systems</span> should not be used
in a network setup where attacker-in-the-middle attack is possible, or
where untrusted parties may have network access to the target device.
</p>
<p class="p">While connecting to the target device, you will be prompted to input the
user's password. Please note that if you choose to remember the password,
it will be stored in plain text in the configuration file on the host.
Stored passwords are bound to the public key fingerprint of the remote
device.
</p>
<p class="p">The <strong class="ph b">No authentication</strong> option is useful for devices configured for
passwordless login using <samp class="ph codeph">root</samp> username. To enable such a
configuration, edit the file <samp class="ph codeph">/etc/ssh/sshd_config</samp> on the
target and specify the following option:
</p><pre xml:space="preserve">PermitRootLogin yes</pre><p class="p">Then set empty password using <samp class="ph codeph">passwd</samp> and restart the SSH
service with <samp class="ph codeph">service ssh restart</samp>.
</p>
<p class="p"><strong class="ph b">Open ports</strong>: The <span class="ph">Nsight Systems</span> daemon requires port
22 and port 45555 to be open for listening. You can confirm that these
ports are open with the following command:
</p><pre xml:space="preserve">sudo firewall-cmd --list-ports --permanent
sudo firewall-cmd --reload</pre><p class="p">To open a port use the following command, skip <samp class="ph codeph">--permanent</samp>
option to open only for this session:
</p><pre xml:space="preserve">sudo firewall-cmd --permanent --add-port 45555/tcp
sudo firewall-cmd --reload</pre><p class="p">Likewise, if you are running on a cloud system, you must open port 22 and
port 45555 for ingress.
</p>
<p class="p"><strong class="ph b">Kernel Version Number</strong> - To check for the version number of the
kernel support of <span class="ph">Nsight Systems</span> on a target device, run
the following command on the remote device:
</p><pre xml:space="preserve">cat /proc/quadd/version</pre><p class="p">Minimal supported version is <span class="ph">1.82</span>.
</p>
<p class="p">Additionally, presence of Netcat command (<samp class="ph codeph">nc</samp>) is
required on the target device. For example, on Ubuntu this package can
be installed using the following command:
</p><pre xml:space="preserve">sudo apt-get install netcat-openbsd</pre></div>
</div>
<div class="topic nested2" id="linux-system-wide-profiling-options"><a name="linux-system-wide-profiling-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-system-wide-profiling-options" name="linux-system-wide-profiling-options" shape="rect">2.1.2. System-Wide Profiling Options</a></h3>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested3" id="linux-x86-64"><a name="linux-x86-64" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-x86-64" name="linux-x86-64" shape="rect">2.1.2.1. Linux x86_64</a></h3>
<div class="body">
<p class="p">System-wide profiling is available on x86 for Linux targets only when run with root
privileges.
</p>
<p class="p"><strong class="ph b">Ftrace Events Collection</strong></p>
<p class="p">Select Ftrace events</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/ftrace_trace_select.png" height="-1" width="-1" alt="Ftrace checkbox"></img></p>
</blockquote>
<p class="p">Choose which events you would like to collect.</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/ftrace_options_gui.png" height="-1" width="-1" alt="System profiling options"></img></p>
</blockquote>
<p class="p"><strong class="ph b">GPU Context Switch Trace</strong></p>
<p class="p">Tracing of context switching on the GPU is enabled with driver
r435.17 or higher.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/select_gcs.png" height="-1" width="-1" alt="GCS checkbox"></img></p>
</blockquote>
<p class="p">Here is a screenshot showing three CUDA kernels running
simultaneously in three different CUDA contexts on a single GPU.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/gpu_context_switch.png" height="-1" width="-1" alt="GCS screenshot"></img></p>
</blockquote>
</div>
</div>
<div class="topic nested3" id="linux-for-tegra"><a name="linux-for-tegra" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-for-tegra" name="linux-for-tegra" shape="rect">2.1.2.2. Linux for Tegra</a></h3>
<div class="body">
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/system-profiling-options.png" alt="System profiling options"></img></p>
</blockquote>
<p class="p"><strong class="ph b">Trace all processes</strong> – On compatible devices (with kernel module support
version 1.107 or higher), this enables trace of all processes and threads in the system.
Scheduler events from all tasks will be recorded.
</p>
<p class="p"><strong class="ph b">Collect PMU counters</strong> – This allows you to choose which PMU (Performance
Monitoring Unit) counters <span class="ph">Nsight Systems</span> will sample. Enable specific counters
when interested in correlating cache misses to functions in your application.
</p>
</div>
</div>
</div>
<div class="topic nested2" id="linux-target-sampling-options"><a name="linux-target-sampling-options" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-target-sampling-options" name="linux-target-sampling-options" shape="rect">2.1.3. Target Sampling Options</a></h3>
<div class="body">
<p class="p">
Target sampling behavior is somewhat different for
<span class="ph">Nsight Systems Workstation Edition</span> and <span class="ph">Nsight Systems Embedded Platforms Edition</span>.
</p>
</div>
<div class="topic nested3" id="target-sampling-workstation"><a name="target-sampling-workstation" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#target-sampling-workstation" name="target-sampling-workstation" shape="rect">Target Sampling Options for Workstation</a></h3>
<div class="body">
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/target-sampling-options-x86.png" height="-1" width="-1" alt="Target sampling options"></img></p>
</blockquote>
<p class="p">Three different backtrace collections options are available when
sampling CPU instruction pointers. Backtraces can be generated
using Intel (c) Last Branch Record (LBR) registers. LBR backtraces
generate minimal overhead but the backtraces have limited depth.
Backtraces can also be generated using DWARF debug data. DWARF
backtraces incur more overhead than LBR backtraces but have much
better depth. Finally, backtraces can be generated using frame
pointers. Frame pointer backtraces incur medium overhead and have
good depth but only resolve frames in the portions of the
application and its libraries (including 3rd party libraries) that
were compiled with frame pointers enabled. Normally, frame pointers
are disabled by default during compilation.
</p>
<p class="p">By default, <span class="ph">Nsight Systems</span> will use Intel(c) LBRs if
available and fall back to using dwarf unwind if they are not.
<strong class="ph b">Choose modes...</strong> will allow you to override the default.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/backtrace-options.png" height="-1" width="-1" alt="Choose backtrace option"></img></p>
</blockquote>
<p class="p">
The <strong class="ph b">Include child processes</strong> switch controls whether API
tracing is only for the launched process, or for all existing and
new child processes of the launched process. If you are running
your application through a script, for example a bash script, you
need to set this checkbox.
</p>
<p class="p">The <strong class="ph b">Include child processes</strong> switch does not control sampling
in this version of <span class="ph">Nsight Systems</span>. The full process
tree will be sampled regardless of this setting. This will be fixed
in a future version of the product.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can sample one process tree. Sampling
here means interrupting each processor after a certain number of
events and collecting an instruction pointer (IP)/backtrace sample
if the processor is executing the profilee.
</p>
<p class="p">When sampling the CPU on a workstation target,
<span class="ph">Nsight Systems</span> traces thread context switches and
infers thread state as either Running or Blocked. Note that Blocked
in the timeline indicates the thread may be Blocked (Interruptible)
or Blocked (Uninterruptible). Blocked (Uninterruptible) often
occurs when a thread has transitioned into the kernel and cannot be
interrupted by a signal. Sampling can be enhanced with OS runtime
libraries tracing; see <a class="xref" href="topics/os-runtime-trace" shape="rect">OS
Runtime Libraries Trace</a> for more information.
</p>
</div>
</div>
<div class="topic nested3" id="target-sampling-tegra"><a name="target-sampling-tegra" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#target-sampling-tegra" name="target-sampling-tegra" shape="rect">Target Sampling Options for Embedded Linux</a></h3>
<div class="body">
<p class="p"><img class="image" src="graphics/target-sampling-options.png" alt="Target sampling options"></img></p>
<p class="p">Currently <span class="ph">Nsight Systems</span> can only sample one
process. Sampling here means that the profilee will be stopped
periodically, and backtraces of active threads will be recorded.
</p>
<p class="p">Most applications use stripped libraries. In this case, many symbols
may stay unresolved. If unstripped libraries exist, paths to them
can be specified using the <strong class="ph b">Symbol locations...</strong> button.
Symbol resolution happens on host, and therefore does not affect
performance of profiling on the target.
</p>
<p class="p">Additionally, debug versions of ELF files may be picked up from
the target system. Refer to <a class="xref" href="topics/elf-debug" shape="rect">Debug
Versions of ELF Files</a> for more information.
</p>
</div>
</div>
</div>
<div class="topic nested2" id="linux-hotkey-trace-start-stop"><a name="linux-hotkey-trace-start-stop" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-hotkey-trace-start-stop" name="linux-hotkey-trace-start-stop" shape="rect">2.1.4. Hotkey Trace Start/Stop</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems Workstation Edition</span> can use hotkeys to control profiling.
Press the hotkey to start and/or stop a trace session from within the
target application’s graphic window. This is useful when tracing games
and graphic applications that use fullscreen display. In these
scenarios switching to <span class="ph">Nsight Systems</span>' UI would
unnecessarily introduce the window manager's footprint into the trace.
To enable the use of Hotkey check the Hotkey checkbox in the project
settings page:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/hotkey-checkbox.png" alt="Hotkey checkbox"></img></p>
</blockquote>
<p class="p">The default hotkey is F12.</p>
</div>
</div>
<div class="topic nested2" id="linux-launch-processes"><a name="linux-launch-processes" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#linux-launch-processes" name="linux-launch-processes" shape="rect">2.1.5. Launching Processes</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> can launch new processes for profiling
on target devices. Profiler ensures that
all environment variables are set correctly to successfully collect
trace information
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/process-launch.png" alt="Process: Launch"></img></p>
</blockquote>
<p class="p">The <strong class="ph b">Edit arguments...</strong> link will open an editor window, where
every command line argument is edited on a separate line. This is
convenient when arguments contain spaces or quotes.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested1" id="profiling-windows"><a name="profiling-windows" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#profiling-windows" name="profiling-windows" shape="rect">2.2. Profiling Windows Targets from the GUI</a></h3>
<div class="body">
<p class="p">
Profiling on Windows devices is similar to the profiling on Linux devices.
Please refer to the <a class="xref" href="index.html#profiling-linux" shape="rect">Profiling Linux
Targets from the GUI</a> section for the detailed documentation and
connection information. The major differences on the platforms are listed below:
</p>
</div>
<div class="topic nested2" id="remote-windows"><a name="remote-windows" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#remote-windows" name="remote-windows" shape="rect">Remoting to a Windows Based Machine</a></h3>
<div class="body">
<p class="p">
To perform remote profiling to a target Windows based machines,
<a class="xref" href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse" target="_blank" shape="rect">install and configure an OpenSSH Server on
the target machine.</a></p>
</div>
</div>
<div class="topic nested2" id="hotkey-trace"><a name="hotkey-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#hotkey-trace" name="hotkey-trace" shape="rect">Hotkey Trace Start/Stop</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems Workstation Edition</span> can use hotkeys to control profiling.
Press the hotkey to start and/or stop a trace session from within the
target application’s graphic window. This is useful when tracing games
and graphic applications that use fullscreen display. In these
scenarios switching to <span class="ph">Nsight Systems</span>' UI would
unnecessarily introduce the window manager's footprint into the trace.
To enable the use of Hotkey check the Hotkey checkbox in the project
settings page:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/hotkey-checkbox.png" alt="Hotkey checkbox"></img></p>
</blockquote>
<p class="p">The default hotkey is F12.</p>
<p class="p"><strong class="ph b">Changing the Default Hotkey Binding</strong> - A different hotkey binding
can be configured by setting the HotKeyIntValue configuration field in the
config.ini file.
</p>
<p class="p">Set the decimal numeric identifier of the hotkey you would like to use for
triggering start/stop from the target app graphics window. The default
value is 123 which corresponds to 0x7B, or the F12 key.
</p>
<p class="p">Virtual key identifiers are detailed in
<a class="xref" href="https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes" target="_blank" shape="rect">MSDN's Virtual-Key Codes</a>.
</p>
<p class="p">Note that you must convert the hexadecimal values detailed in this page to
their decimal counterpart before using them in the file. For example, to
use the F1 key as a start/stop trace hotkey, use the following settings in
the config.ini file:
</p><pre xml:space="preserve">HotKeyIntValue=112</pre></div>
</div>
<div class="topic nested2" id="target-sampling-windows"><a name="target-sampling-windows" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#target-sampling-windows" name="target-sampling-windows" shape="rect">Target Sampling Options on Windows</a></h3>
<div class="body">
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/target-sampling-options-windows.png" alt="Target sampling options"></img></p>
</blockquote>
<p class="p"><span class="ph">Nsight Systems</span> can sample one process tree. Sampling here
means interrupting each processor periodically. The sampling rate is
defined in the project settings and is either 100Hz, 1KHz (default value),
2Khz, 4KHz, or 8KHz.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/collect_thread_activity.png" alt="Thread activity option"></img></p>
</blockquote>
<p class="p">On Windows, <span class="ph">Nsight Systems</span> can collect thread activity of
one process tree. Collecting thread activity means that each thread
context switch event is logged and (optionally) a backtrace is collected
at the point that the thread is scheduled back for execution. Thread
states are displayed on the timeline.
</p>
<p class="p">If it was collected, the thread backtrace is displayed when hovering over
a region where the thread execution is blocked.
</p>
</div>
</div>
<div class="topic nested2" id="windows-symbol-locations"><a name="windows-symbol-locations" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#windows-symbol-locations" name="windows-symbol-locations" shape="rect">Symbol Locations</a></h3>
<div class="body">
<p class="p">Symbol resolution happens on host, and therefore does not affect
performance of profiling on the target.
</p>
<p class="p">Press the <strong class="ph b">Symbol locations...</strong> button to open the <strong class="ph b">Configure
debug symbols location</strong> dialog.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/symbols_location_dialog.png" alt="Configure debug symbols location"></img></p>
</blockquote>
<p class="p">Use this dialog to specify:</p>
<ul class="ul">
<li class="li">
<p class="p">Paths of PDB files</p>
</li>
<li class="li">
<p class="p">Symbols servers</p>
</li>
<li class="li">
<p class="p">The location of the local symbol cache</p>
</li>
</ul>
<p class="p">To use a symbol server:</p>
<ol class="ol">
<li class="li">
<p class="p">Install <strong class="ph b">Debugging Tools for Windows</strong>, a part of the <a class="xref" href="https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk" target="_blank" shape="rect">Windows 10 SDK</a>.
</p>
</li>
<li class="li">
<p class="p">Add the symbol server URL using the <strong class="ph b">Add Server</strong> button.
</p>
<p class="p">Information about Microsoft's public symbol server, which enables
getting Windows operating system related debug symbols can be found
<a class="xref" href="https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/microsoft-public-symbols" target="_blank" shape="rect">here</a>.
</p>
</li>
</ol>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested1" id="profiling-qnx"><a name="profiling-qnx" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#profiling-qnx" name="profiling-qnx" shape="rect">2.3. Profiling QNX Targets from the GUI</a></h3>
<div class="body">
<p class="p">Profiling on QNX devices is similar to the profiling on Linux devices.
Please refer to the <a class="xref" href="index.html#profiling-linux" shape="rect">Profiling Linux
Targets from the GUI</a> section for the detailed documentation.
The major differences on the platforms are listed below:
</p>
<ul class="ul">
<li class="li">
<p class="p">Backtrace sampling is not supported. Instead backtraces are collected for
long OS runtime libraries calls. Please refer to the
<a class="xref" href="topics/os-runtime-trace" shape="rect">OS Runtime Libraries Trace</a>
section for the detailed documentation.
</p>
</li>
<li class="li">
<p class="p">CUDA support is limited to CUDA 9.0+</p>
</li>
<li class="li">
<p class="p">Filesystem on QNX device might be mounted read-only. In that case
<span class="ph">Nsight Systems</span> is not able to install target-side binaries,
required to run the profiling session. Please make sure that target
filesystem is writable before connecting to QNX target. For example, make
sure the following command works:
</p><pre xml:space="preserve">echo XX > /xx && ls -l /xx</pre></li>
</ul>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="exporter"><a name="exporter" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#exporter" name="exporter" shape="rect">3. Export Formats</a></h2>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested1" id="exporter-sqlite-schema"><a name="exporter-sqlite-schema" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#exporter-sqlite-schema" name="exporter-sqlite-schema" shape="rect">SQLite Schema Reference</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> has the ability to export SQLite database files
from the .nsys-rep results file. From the CLI,
use <samp class="ph codeph"><span class="ph">nsys</span> export</samp>. From the GUI, call
<samp class="ph codeph">File->Export...</samp>.
</p>
<p class="p"><strong class="ph b">Note:</strong> The .nsys-rep report format is the only data format for
<span class="ph">Nsight Systems</span> that should be considered forward compatible. The
SQLite schema can and will change in the future.
</p>
<p class="p">The schema for a concrete database can be obtained with the sqlite3 tool
built-in command <samp class="ph codeph">.schema</samp>. The sqlite3 tool can be located
in the Target or Host directory of your <span class="ph">Nsight Systems</span>
installation.
</p>
<p class="p"><strong class="ph b">Note:</strong> Currently tables are created lazily, and therefore not every
table described in the documentation will be present in a particular database.
This will change in a future version of the product. If you want a full schema
of all possible tables, use <samp class="ph codeph"><span class="ph">nsys</span> export --lazy=false
</samp> during export phase.
</p>
<p class="p">Currently, a table is created for each data type in the exported database.
Since usage patterns for exported data may vary greatly and no default use
cases have been established, no indexes or extra constraints are created.
Instead, refer to the SQLite Examples section for a list of common recipes.
This may change in a future version of the product.
</p>
<p class="p">To check the version of your exported SQLite file, check the value of
<samp class="ph codeph">EXPORT_SCHEMA_VERSION</samp> in the <samp class="ph codeph">EXPORT_META_DATA</samp>
table. The schema version is a common three-value major/minor/micro version
number. The first value, or major value, indicates the overall format of the
database, and is only changed if there is a major re-write or re-factor of
the entire database format. It is assumed that if the major version changes,
all scripts or queries will break. The middle, or minor, version is changed
anytime there is a more localized, but potentially breaking change, such as
renaming an existing column, or changing the type of an existing column. The
last, or micro version is changed any time there are additions, such as a
new table or column, that should not introduce any breaking change when used
with well-written, best-practices queries.
</p>
<p class="p">This is the schema as of the 2021.5 release, schema version 2.7.1.</p><pre xml:space="preserve">
CREATE TABLE StringIds (
-- Consolidation of repetitive string values.
id INTEGER NOT NULL PRIMARY KEY, -- ID reference value.
value TEXT NOT NULL -- String value.
);
CREATE TABLE ThreadNames (
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the thread name.
priority INTEGER, -- Priority of the thread.
globalTid INTEGER -- Serialized GlobalId.
);
CREATE TABLE ProcessStreams (
globalPid INTEGER NOT NULL, -- Serialized GlobalId.
filenameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the file name.
contentId INTEGER NOT NULL REFERENCES StringIds(id) -- StringId of the stream content.
);
CREATE TABLE TARGET_INFO_SYSTEM_ENV (
globalVid INTEGER NOT NULL, -- Serialized GlobalId.
devStateName TEXT NOT NULL, -- Device state name.
name TEXT NOT NULL, -- Property name.
nameEnum INTEGER NOT NULL, -- Property enum value.
value TEXT NOT NULL -- Property value.
);
CREATE TABLE TARGET_INFO_SESSION_START_TIME (
utcEpochNs INTEGER, -- UTC Epoch timestamp at start of the capture (ns).
utcTime TEXT, -- Start of the capture in UTC.
localTime TEXT -- Start of the capture in local time of target.
);
CREATE TABLE ANALYSIS_DETAILS (
-- Details about the analysis session.
globalVid INTEGER NOT NULL, -- Serialized GlobalId.
duration INTEGER NOT NULL, -- The total time span of the entire trace (ns).
startTime INTEGER NOT NULL, -- Trace start timestamp in nanoseconds.
stopTime INTEGER NOT NULL -- Trace stop timestamp in nanoseconds.
);
CREATE TABLE TARGET_INFO_GPU (
vmId INTEGER NOT NULL, -- Serialized GlobalId.
id INTEGER NOT NULL, -- Device ID.
name TEXT, -- Device name.
busLocation TEXT, -- PCI bus location.
isDiscrete INTEGER, -- True if discrete, false if integrated.
l2CacheSize INTEGER, -- Size of L2 cache (B).
totalMemory INTEGER, -- Total amount of memory on the device (B).
memoryBandwidth INTEGER, -- Amount of memory transferred (B).
clockRate INTEGER, -- Clock frequency (Hz).
smCount INTEGER, -- Number of multiprocessors on the device.
pwGpuId INTEGER, -- PerfWorks GPU ID.
uuid TEXT, -- Device UUID.
luid INTEGER, -- Device LUID.
chipName TEXT, -- Chip name.
cuDevice INTEGER, -- CUDA device ID.
ctxswDevPath TEXT, -- GPU context switch device node path.
ctrlDevPath TEXT, -- GPU control device node path.
revision INTEGER, -- Revision number.
nodeMask INTEGER, -- Device node mask.
constantMemory INTEGER, -- Memory available on device for __constant__ variables (B).
maxIPC INTEGER, -- Maximum instructions per count.
maxRegistersPerBlock INTEGER, -- Maximum number of 32-bit registers available per block.
maxShmemPerBlock INTEGER, -- Maximum optin shared memory per block.
maxShmemPerBlockOptin INTEGER, -- Maximum optin shared memory per block.
maxShmemPerSm INTEGER, -- Maximum shared memory available per multiprocessor (B).
maxRegistersPerSm INTEGER, -- Maximum number of 32-bit registers available per multiprocessor.
threadsPerWarp INTEGER, -- Warp size in threads.
asyncEngines INTEGER, -- Number of asynchronous engines.
maxWarpsPerSm INTEGER, -- Maximum number of warps per multiprocessor.
maxBlocksPerSm INTEGER, -- Maximum number of blocks per multiprocessor.
maxThreadsPerBlock INTEGER, -- Maximum number of threads per block.
maxBlockDimX INTEGER, -- Maximum X-dimension of a block.
maxBlockDimY INTEGER, -- Maximum Y-dimension of a block.
maxBlockDimZ INTEGER, -- Maximum Z-dimension of a block.
maxGridDimX INTEGER, -- Maximum X-dimension of a grid.
maxGridDimY INTEGER, -- Maximum Y-dimension of a grid.
maxGridDimZ INTEGER, -- Maximum Z-dimension of a grid.
computeMajor INTEGER, -- Major compute capability version number.
computeMinor INTEGER, -- Minor compute capability version number.
smMajor INTEGER, -- Major multiprocessor version number.
smMinor INTEGER -- Minor multiprocessor version number.
);
CREATE TABLE TARGET_INFO_XMC_SPEC (
vmId INTEGER NOT NULL, -- Serialized GlobalId.
clientId INTEGER NOT NULL, -- Client ID.
type TEXT NOT NULL, -- Client type.
name TEXT NOT NULL, -- Client name.
groupId TEXT NOT NULL -- Client group ID.
);
CREATE TABLE TARGET_INFO_PROCESS (
processId INTEGER NOT NULL, -- Process ID.
openGlVersion TEXT NOT NULL, -- OpenGL version.
correlationId INTEGER NOT NULL, -- Correlation ID of the kernel.
nameId INTEGER NOT NULL REFERENCES StringIds(id) -- StringId of the function name.
);
CREATE TABLE TARGET_INFO_NVTX_CUDA_DEVICE (
name TEXT NOT NULL, -- CUDA device name assigned using NVTX.
hwId INTEGER NOT NULL, -- Hardware ID.
vmId INTEGER NOT NULL, -- VM ID.
deviceId INTEGER NOT NULL -- Device ID.
);
CREATE TABLE TARGET_INFO_NVTX_CUDA_CONTEXT (
name TEXT NOT NULL, -- CUDA context name assigned using NVTX.
hwId INTEGER NOT NULL, -- Hardware ID.
vmId INTEGER NOT NULL, -- VM ID.
processId INTEGER NOT NULL, -- Process ID.
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL -- Context ID.
);
CREATE TABLE TARGET_INFO_NVTX_CUDA_STREAM (
name TEXT NOT NULL, -- CUDA stream name assigned using NVTX.
hwId INTEGER NOT NULL, -- Hardware ID.
vmId INTEGER NOT NULL, -- VM ID.
processId INTEGER NOT NULL, -- Process ID.
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
streamId INTEGER NOT NULL -- Stream ID.
);
CREATE TABLE TARGET_INFO_CUDA_NULL_STREAM (
streamId INTEGER NOT NULL, -- Stream ID.
hwId INTEGER NOT NULL, -- Hardware ID.
vmId INTEGER NOT NULL, -- VM ID.
processId INTEGER NOT NULL, -- Process ID.
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL -- Context ID.
);
CREATE TABLE TARGET_INFO_CUDA_STREAM (
streamId INTEGER NOT NULL, -- Stream ID.
hwId INTEGER NOT NULL, -- Hardware ID.
vmId INTEGER NOT NULL, -- VM ID.
processId INTEGER NOT NULL, -- Process ID.
contextId INTEGER NOT NULL, -- Context ID.
priority INTEGER NOT NULL, -- Priority of the stream.
flag INTEGER NOT NULL -- Flags for stream creation.
);
CREATE TABLE TARGET_INFO_WDDM_CONTEXTS (
context INTEGER NOT NULL,
engineType INTEGER NOT NULL,
nodeOrdinal INTEGER NOT NULL,
friendlyName TEXT NOT NULL
);
CREATE TABLE EXPORT_META_DATA (
-- information about nsys export process
name TEXT NOT NULL, -- Name of export meta-data record
value TEXT -- Value of export meta-data record
);
CREATE TABLE CUPTI_ACTIVITY_KIND_MEMCPY (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
streamId INTEGER NOT NULL, -- Stream ID.
correlationId INTEGER REFERENCES CUPTI_ACTIVITY_KIND_RUNTIME(correlationId), -- ID used to identify the API call that launched the event.
globalPid INTEGER, -- Serialized GlobalId.
bytes INTEGER NOT NULL, -- Number of bytes transferred (B).
copyKind INTEGER NOT NULL, -- Type of the memory copy. See enum CUDA_MEMCPY_KIND.
deprecatedSrcId INTEGER, -- Deprecated, use srcDeviceId instead.
srcKind INTEGER, -- Source memory kind See enum CUDA_MEMOPR_MEMORY_KIND.
dstKind INTEGER, -- Destination memory kind. See enum CUDA_MEMOPR_MEMORY_KIND.
srcDeviceId INTEGER, -- Source device ID.
srcContextId INTEGER, -- Source context ID.
dstDeviceId INTEGER, -- Destination device ID.
dstContextId INTEGER, -- Destination context ID.
migrationCause INTEGER, -- UVM migration cause ID. See CUpti_ActivityUnifiedMemoryMigrationCause.
graphNodeId INTEGER REFERENCES CUDA_GRAPH_EVENTS(graphNodeId), -- CUDA graph node creation ID.
virtualAddress INTEGER -- Virtual base address of the page/s being transferred.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_MEMSET (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
streamId INTEGER NOT NULL, -- Stream ID.
correlationId INTEGER REFERENCES CUPTI_ACTIVITY_KIND_RUNTIME(correlationId), -- ID used to identify the API call that launched the event.
globalPid INTEGER, -- Serialized GlobalId.
value INTEGER NOT NULL, -- Value assigned to memory.
bytes INTEGER NOT NULL, -- Number of bytes set (B).
graphNodeId INTEGER REFERENCES CUDA_GRAPH_EVENTS(graphNodeId), -- CUDA graph node creation ID.
memKind INTEGER -- Type of memory being set. See enum CUDA_MEMOPR_MEMORY_KIND.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_KERNEL (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
streamId INTEGER NOT NULL, -- Stream ID.
correlationId INTEGER REFERENCES CUPTI_ACTIVITY_KIND_RUNTIME(correlationId), -- ID used to identify the API call that launched the event.
globalPid INTEGER, -- Serialized GlobalId.
demangledName INTEGER NOT NULL, -- StringId of the kernel name
shortName INTEGER NOT NULL, -- StringId of the short function name without arguments.
mangledName INTEGER, -- StringId of the mangled function name.
launchType INTEGER, -- Launch type of the kernel. See docs for specifics.
cacheConfig INTEGER, -- Cache configuration used for the kernel. See enum CUfunc_cache.
registersPerThread INTEGER NOT NULL, -- Number of registers required for each thread executing the kernel.
gridX INTEGER NOT NULL, -- X-dimension grid size.
gridY INTEGER NOT NULL, -- Y-dimension grid size.
gridZ INTEGER NOT NULL, -- Z-dimension grid size.
blockX INTEGER NOT NULL, -- X-dimension block size.
blockY INTEGER NOT NULL, -- Y-dimension block size.
blockZ INTEGER NOT NULL, -- Z-dimension block size.
staticSharedMemory INTEGER NOT NULL, -- Static shared memory allocated for the kernel (B).
dynamicSharedMemory INTEGER NOT NULL, -- Dynamic shared memory reserved for the kernel (B).
localMemoryPerThread INTEGER NOT NULL, -- Amount of local memory reserved for each thread (B).
localMemoryTotal INTEGER NOT NULL, -- Total amount of local memory reserved for the kernel (B).
gridId INTEGER NOT NULL, -- Unique grid ID of the kernel assigned at runtime.
sharedMemoryExecuted INTEGER, -- Shared memory size set by the driver.
graphNodeId INTEGER REFERENCES CUDA_GRAPH_EVENTS(graphNodeId), -- CUDA graph node creation ID.
sharedMemoryLimitConfig INTEGER -- Shared memory limit per block config. See enum CUpti_FuncShmemLimitConfig.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_CUDA_EVENT (
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
streamId INTEGER NOT NULL, -- Stream ID.
correlationId INTEGER, -- Correlation ID of the event record API to which this result is associated.
globalPid INTEGER, -- Serialized GlobalId.
eventId INTEGER NOT NULL -- Event ID for which the event record API is called.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_SYNCHRONIZATION (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
streamId INTEGER NOT NULL, -- Stream ID.
correlationId INTEGER, -- Correlation ID of the API to which this result is associated.
globalPid INTEGER, -- Serialized GlobalId.
syncType INTEGER NOT NULL, -- Type of synchronization. See enum CUpti_ActivitySynchronizationType.
eventId INTEGER NOT NULL -- Event ID for which the synchronization API is called.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_RUNTIME (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- CUDA event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- ID used to identify events that this function call has triggered.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
returnValue INTEGER NOT NULL, -- Return value of the function call.
callchainId INTEGER REFERENCES CUDA_CALLCHAINS(id) -- ID of the attached callchain.
);
CREATE TABLE CUDNN_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- CUDA event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id) -- StringId of the function name.
);
CREATE TABLE CUBLAS_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- CUDA event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id) -- StringId of the function name.
);
CREATE TABLE CUDA_GRAPH_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- CUDA event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
graphNodeId INTEGER NOT NULL REFERENCES CUDA_GRAPH_EVENTS(graphNodeId), -- CUDA graph node creation ID.
originalGraphNodeId INTEGER -- Reference to the original graph node ID, if cloned node.
);
CREATE TABLE CUDA_UM_CPU_PAGE_FAULT_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
globalPid INTEGER NOT NULL, -- Serialized GlobalId.
address INTEGER NOT NULL, -- Virtual address of the page that faulted.
originalFaultPc INTEGER, -- Program counter of the CPU instruction that caused the page fault.
CpuInstruction INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
module INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the module name.
unresolvedFaultPc INTEGER -- True if the program counter was not resolved.
);
CREATE TABLE CUDA_UM_GPU_PAGE_FAULT_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalPid INTEGER NOT NULL, -- Serialized GlobalId.
deviceId INTEGER NOT NULL, -- Device ID.
address INTEGER NOT NULL, -- Virtual address of the page that faulted.
numberOfPageFaults INTEGER NOT NULL, -- Number of page faults for the same page.
faultAccessType INTEGER NOT NULL -- Type of Unified memory accessed. See enum CUpti_ActivityUnifiedMemoryAccessType.
);
CREATE TABLE CUDA_GPU_MEMORY_USAGE_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
globalPid INTEGER NOT NULL, -- Serialized GlobalId.
deviceId INTEGER NOT NULL, -- Device ID.
contextId INTEGER NOT NULL, -- Context ID.
address INTEGER NOT NULL, -- Virtual address of the allocation/deallocation.
pc INTEGER NOT NULL, -- Program counter of the allocation/deallocation.
bytes INTEGER NOT NULL, -- Number of bytes allocated/deallocated (B).
memKind INTEGER NOT NULL, -- Type of memory being allocated/deallocated. See enum CUDA_MEMOPR_MEMORY_KIND.
memoryOperationType INTEGER NOT NULL, -- 0 if memory was allocated and 1 if memory was deallocated.
name TEXT, -- Variable name, if available.
correlationId INTEGER -- ID used to identify the API call that launched the event.
);
CREATE TABLE CUDA_CALLCHAINS (
id INTEGER NOT NULL, -- Part of PRIMARY KEY (id, stackDepth).
symbol INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
module INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the module name.
unresolved INTEGER, -- True if the symbol was not resolved.
originalIP INTEGER, -- Instruction pointer value.
stackDepth INTEGER NOT NULL, -- Zero-base index of the given function in call stack.
PRIMARY KEY (id, stackDepth)
);
CREATE TABLE NVTX_EVENTS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER, -- Event end timestamp (ns).
eventType INTEGER NOT NULL, -- NVTX event type enum value. See docs for specifics.
rangeId INTEGER, -- Correlation ID returned from a nvtxRangeStart call.
category INTEGER, -- User-controlled ID that can be used to group events.
color INTEGER, -- Encoded ARGB color value.
text TEXT, -- Optional text message for non registered strings.
globalTid INTEGER, -- Serialized GlobalId.
endGlobalTid INTEGER, -- Serialized GlobalId. See docs for specifics.
textId INTEGER REFERENCES StringIds(id), -- StringId of the NVTX domain registered string.
domainId INTEGER, -- User-controlled ID that can be used to group events.
uint64Value INTEGER, -- One of possible payload value union members.
int64Value INTEGER, -- One of possible payload value union members.
doubleValue REAL, -- One of possible payload value union members.
uint32Value INTEGER, -- One of possible payload value union members.
int32Value INTEGER, -- One of possible payload value union members.
floatValue REAL, -- One of possible payload value union members.
jsonTextId INTEGER, -- One of possible payload value union members.
jsonText TEXT -- One of possible payload value union members.
);
CREATE TABLE OPENGL_API (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenGL event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
endGlobalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the first function name.
endNameId INTEGER REFERENCES StringIds(id), -- StringId of the last function name.
returnValue INTEGER NOT NULL, -- Return value of the function call.
frameId INTEGER, -- Index of the graphics frame starting from 1.
contextId INTEGER, -- Context ID.
gpu INTEGER, -- GPU index.
display INTEGER -- Display ID.
);
CREATE TABLE OPENGL_WORKLOAD (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenGL event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
endGlobalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the first function name.
endNameId INTEGER REFERENCES StringIds(id), -- StringId of the last function name.
returnValue INTEGER NOT NULL, -- Return value of the function call.
frameId INTEGER, -- Index of the graphics frame starting from 1.
contextId INTEGER, -- Context ID.
gpu INTEGER, -- GPU index.
display INTEGER -- Display ID.
);
CREATE TABLE KHR_DEBUG_EVENTS (
eventClass INTEGER NOT NULL, -- KHR event class enum value. See docs for specifics.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER, -- Event end timestamp (ns).
textId INTEGER REFERENCES StringIds(id), -- StringId of the debug marker/group text string.
globalTid INTEGER, -- Serialized GlobalId.
source INTEGER, -- KHR source enum value. See docs for specifics.
khrdType INTEGER, -- KHR type enum value. See docs for specifics.
id INTEGER, -- KHR event ID.
severity INTEGER, -- KHR severity enum value. See docs for specifics.
correlationId INTEGER, -- ID used to correlate KHR CPU trace to GPU trace.
context INTEGER -- Context ID.
);
CREATE TABLE OSRT_API (
-- OS runtime libraries traced to gather information about low-level userspace APIs.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OSRT event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
returnValue INTEGER NOT NULL, -- Return value of the function call.
nestingLevel INTEGER, -- Zero-base index of the nesting level.
callchainId INTEGER NOT NULL REFERENCES OSRT_CALLCHAINS(id) -- ID of the attached callchain.
);
CREATE TABLE OSRT_CALLCHAINS (
-- Callchains attached to OSRT events, depending on selected profiling settings.
id INTEGER NOT NULL, -- Part of PRIMARY KEY (id, stackDepth).
symbol INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
module INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the module name.
kernelMode INTEGER, -- True if kernel mode.
thumbCode INTEGER, -- True if thumb code.
unresolved INTEGER, -- True if the symbol was not resolved.
specialEntry INTEGER, -- True if artifical entry added during processing callchain.
originalIP INTEGER, -- Instruction pointer value.
unwindMethod INTEGER REFERENCES UnwindMethodType(number), -- Instruction pointer value.
stackDepth INTEGER NOT NULL, -- Zero-base index of the given function in call stack.
PRIMARY KEY (id, stackDepth)
);
CREATE TABLE UnwindMethodType (
number INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE PROFILER_OVERHEAD (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
returnValue INTEGER NOT NULL -- Return value of the function call.
);
CREATE TABLE SCHED_EVENTS (
-- Thread scheduling events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
cpu INTEGER NOT NULL, -- ID of CPU this thread was scheduled in or out.
isSchedIn INTEGER NOT NULL, -- 0 if thread was scheduled out, non-zero otherwise.
globalTid INTEGER -- Serialized GlobalId.
);
CREATE TABLE COMPOSITE_EVENTS (
-- Thread sampling events.
id INTEGER NOT NULL PRIMARY KEY, -- ID of the composite event.
start INTEGER NOT NULL, -- Event start timestamp (ns).
cpu INTEGER, -- ID of CPU this thread was running on.
threadState INTEGER, -- Thread state at the moment of sampling. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
cpuCycles INTEGER NOT NULL -- Value of Performance Monitoring Unit (PMU) counter.
);
CREATE TABLE SAMPLING_CALLCHAINS (
-- Callchain entries obtained from composite events, used to construct function table views.
id INTEGER NOT NULL REFERENCES COMPOSITE_EVENTS(id), -- ID of the attached composite event.
symbol INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
module INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the module name.
kernelMode INTEGER, -- True if kernel mode.
thumbCode INTEGER, -- True if thumb code.
unresolved INTEGER, -- True if the symbol was not resolved.
specialEntry INTEGER, -- True if artifical entry added during processing callchain.
originalIP INTEGER, -- Instruction pointer value.
unwindMethod INTEGER REFERENCES UnwindMethodType(number), -- Instruction pointer value.
stackDepth INTEGER NOT NULL, -- Zero-base index of the given function in call stack.
PRIMARY KEY (id, stackDepth)
);
CREATE TABLE SLI_QUERIES (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- SLI event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
frameId INTEGER NOT NULL, -- Index of the graphics frame starting from 1.
occQueryIssued INTEGER NOT NULL, -- Occlusion query issued.
occQueryAsked INTEGER NOT NULL, -- Occlusion query asked.
eventQueryIssued INTEGER NOT NULL, -- Event query issued.
eventQueryAsked INTEGER NOT NULL, -- Event query asked.
numberOfTransferEvents INTEGER NOT NULL, -- Number of transfer events.
amountOfTransferredData INTEGER NOT NULL -- Cumulative size of resource data that was transferred.
);
CREATE TABLE SLI_P2P (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- SLI event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
frameId INTEGER NOT NULL, -- Index of the graphics frame starting from 1.
transferSkipped INTEGER NOT NULL, -- Number of transfers that were skipped.
srcGpu INTEGER NOT NULL, -- Source GPU ID.
dstGpu INTEGER NOT NULL, -- Destination GPU ID.
numSubResources INTEGER NOT NULL, -- Number of sub-resources to transfer.
resourceSize INTEGER NOT NULL, -- Size of resource.
subResourceIdx INTEGER NOT NULL, -- Sub-resource index.
smplWidth INTEGER, -- Sub-resource surface width in samples.
smplHeight INTEGER, -- Sub-resource surface height in samples.
smplDepth INTEGER, -- Sub-resource surface depth in samples.
bytesPerElement INTEGER, -- Number of bytes per element.
dxgiFormat INTEGER, -- Resource data format. See DXGI_FORMAT enum.
logSurfaceNames TEXT, -- Surface name.
transferInfo INTEGER, -- SLI transfer info enum value. See docs for specifics.
isEarlyPushManagedByNvApi INTEGER, -- True if early push managed by NVAPI. False otherwise.
useAsyncP2pForResolve INTEGER, -- True if async Peer-to-Peer used for resolve. False otherwise.
transferFuncName TEXT, -- "A - BE" for asynchronous transfer, "S - BE" for synchronous transfer.
regimeName TEXT, -- Name of the regime scope that includes the resource.
debugName TEXT, -- Debug name assigned to the resource by the application code.
bindType TEXT -- Bind type.
);
CREATE TABLE SLI_STATS (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- SLI event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
countComplexFrames INTEGER NOT NULL, -- Complex frames count.
countStats INTEGER NOT NULL, -- Number of frame statistics collected for the inactive-time histogram.
totalInactiveTime INTEGER NOT NULL, -- Total inactive time (μs).
minPbSize INTEGER NOT NULL, -- Min push buffer size.
maxPbSize INTEGER NOT NULL, -- Max push buffer size.
totalPbSize INTEGER NOT NULL -- Total push buffer size.
);
CREATE TABLE DX12_API (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- DX12 event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
shortContextId INTEGER, -- Short form of the COM interface object address.
frameId INTEGER, -- Index of the graphics frame starting from 1.
color INTEGER, -- Encoded ARGB color value.
textId INTEGER, -- StringId of the PIX marker text string.
commandListType INTEGER, -- Type of command list. See enum D3D12_COMMAND_LIST_TYPE.
objectName TEXT, -- StringId of the D3D12 object name.
longContextId INTEGER -- Long form of the COM interface object address.
);
CREATE TABLE DX12_WORKLOAD (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- DX12 event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
shortContextId INTEGER, -- Short form of the COM interface object address.
frameId INTEGER, -- Index of the graphics frame starting from 1.
gpu INTEGER, -- GPU index.
color INTEGER, -- Encoded ARGB color value.
textId INTEGER, -- StringId of the PIX marker text string.
commandListType INTEGER, -- Type of command list. See enum D3D12_COMMAND_LIST_TYPE.
objectName TEXT, -- StringId of the D3D12 object name.
longContextId INTEGER -- Long form of the COM interface object address.
);
CREATE TABLE VULKAN_API (
id INTEGER NOT NULL PRIMARY KEY,
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- Vulkan event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
contextId INTEGER -- Short form of the interface object address.
);
CREATE TABLE VULKAN_WORKLOAD (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- Vulkan event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
gpu INTEGER, -- GPU index.
contextId INTEGER, -- Short form of the interface object address.
color INTEGER, -- Encoded ARGB color value.
textId INTEGER -- StringId of the VULKAN CPU debug marker text string.
);
CREATE TABLE VULKAN_DEBUG_API (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- Vulkan event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
contextId INTEGER, -- Short form of the interface object address.
color INTEGER, -- Encoded ARGB color value.
textId INTEGER -- StringId of the VULKAN CPU debug marker text string.
);
CREATE TABLE VULKAN_PIPELINE_CREATION_EVENTS (
id INTEGER NOT NULL PRIMARY KEY, -- ID of the pipeline creation event.
duration INTEGER, -- Event duration (ns).
flags INTEGER,
traceEventId INTEGER NOT NULL REFERENCES VULKAN_API(id) -- ID of the attached vulkan API.
);
CREATE TABLE VULKAN_PIPELINE_STAGE_EVENTS (
id INTEGER NOT NULL PRIMARY KEY, -- ID of the pipeline stage event.
duration INTEGER, -- Event duration (ns).
flags INTEGER, -- Vulkan flag enum value. See docs for specifics.
creationEventId INTEGER NOT NULL REFERENCES VULKAN_PIPELINE_CREATION_EVENTS(id) -- ID of the attached pipeline creation event.
);
CREATE TABLE FECS_EVENTS (
tag INTEGER NOT NULL, -- Context switch event type. See docs for specifics.
vmId INTEGER NOT NULL, -- VM ID.
seqNo INTEGER NOT NULL, -- Sequential event number.
contextId INTEGER NOT NULL, -- Context ID.
timestamp INTEGER NOT NULL, -- Event start timestamp (ns).
globalPid INTEGER, -- Serialized GlobalId.
gpuId INTEGER -- GPU index.
);
CREATE TABLE ETW_EVENTS_DEPRECATED_TABLE (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
providerName INTEGER REFERENCES StringIds(id), -- StringId of tracing events provider name.
taskName INTEGER REFERENCES StringIds(id), -- StringId of the event task name.
description INTEGER REFERENCES StringIds(id) -- StringId of the decoded event value.
);
CREATE TABLE ETW_PROVIDERS (
-- Names and identifiers of ETW providers captured in the report.
providerId INTEGER NOT NULL PRIMARY KEY, -- Provider ID.
providerNameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of provider name.
guid TEXT NOT NULL -- ETW Provider GUID.
);
CREATE TABLE ETW_TASKS (
-- Names and identifiers of ETW tasks captured in the report.
taskNameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of task name.
taskId INTEGER NOT NULL, -- The event task ID.
providerId INTEGER NOT NULL -- Provider ID.
);
CREATE TABLE ETW_EVENTS (
-- Raw ETW events captured in the report.
timestamp INTEGER NOT NULL, -- Event start timestamp (ns).
processId INTEGER, -- Process ID.
threadId INTEGER, -- Thread ID.
providerId INTEGER NOT NULL, -- Provider ID.
taskId INTEGER NOT NULL, -- The event task ID.
eventId INTEGER NOT NULL, -- Event ID.
version INTEGER NOT NULL, -- The event version.
opcode INTEGER, -- The event opcode.
data TEXT NOT NULL -- JSON encoded event data.
);
CREATE TABLE OPENMP_EVENT_KIND_THREAD (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
threadId INTEGER, -- Internal thread sequence starting from 1.
threadType INTEGER -- See enum ompt_thread_t.
);
CREATE TABLE OPENMP_EVENT_KIND_PARALLEL (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- Internal parallel region sequence starting from 1.
parentTaskId INTEGER -- ID for task that creates this parallel region.
);
CREATE TABLE OPENMP_EVENT_KIND_SYNC_REGION_WAIT (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER, -- ID of the task that this event belongs to.
kind INTEGER -- See enum ompt_sync_region_t.
);
CREATE TABLE OPENMP_EVENT_KIND_SYNC_REGION (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER, -- ID of the task that this event belongs to.
kind INTEGER -- See enum ompt_sync_region_t.
);
CREATE TABLE OPENMP_EVENT_KIND_TASK (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER, -- ID of the task that this event belongs to.
kind INTEGER -- See enum ompt_task_flag_t.
);
CREATE TABLE OPENMP_EVENT_KIND_MASTER (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER -- ID of the task that this event belongs to.
);
CREATE TABLE OPENMP_EVENT_KIND_REDUCTION (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER -- ID of the task that this event belongs to.
);
CREATE TABLE OPENMP_EVENT_KIND_TASK_CREATE (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parentTaskId INTEGER, -- ID of the parent task that is creating a new task.
newTaskId INTEGER -- ID of the new task that is being created.
);
CREATE TABLE OPENMP_EVENT_KIND_TASK_SCHEDULE (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
priorTaskId INTEGER, -- ID of the task that is being switched out.
priorTaskStatus INTEGER, -- See enum ompt_task_status_t.
nextTaskId INTEGER -- ID of the task that is being switched in.
);
CREATE TABLE OPENMP_EVENT_KIND_CANCEL (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
taskId INTEGER -- ID of the task that is being cancelled.
);
CREATE TABLE OPENMP_EVENT_KIND_MUTEX_WAIT (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_mutex_t.
waitId INTEGER, -- ID indicating the object being waited.
taskId INTEGER -- ID of the task that this event belongs to.
);
CREATE TABLE OPENMP_EVENT_KIND_CRITICAL_SECTION (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_mutex_t.
waitId INTEGER -- ID indicating the object being held.
);
CREATE TABLE OPENMP_EVENT_KIND_MUTEX_RELEASED (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_mutex_t.
waitId INTEGER, -- ID indicating the object being released.
taskId INTEGER -- ID of the task that this event belongs to.
);
CREATE TABLE OPENMP_EVENT_KIND_LOCK_INIT (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_mutex_t.
waitId INTEGER -- ID indicating object being created/destroyed.
);
CREATE TABLE OPENMP_EVENT_KIND_LOCK_DESTROY (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_mutex_t.
waitId INTEGER -- ID indicating object being created/destroyed.
);
CREATE TABLE OPENMP_EVENT_KIND_WORKSHARE (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_work_t.
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER, -- ID of the task that this event belongs to.
count INTEGER -- Measure of the quantity of work involved in the region.
);
CREATE TABLE OPENMP_EVENT_KIND_DISPATCH (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
kind INTEGER, -- See enum ompt_dispatch_t
parallelId INTEGER, -- ID of the parallel region that this event belongs to.
taskId INTEGER -- ID of the task that this event belongs to.
);
CREATE TABLE OPENMP_EVENT_KIND_FLUSH (
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- OpenMP event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- Currently unused.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
eventKind INTEGER, -- OpenMP event kind enum value. See docs for specifics.
threadId INTEGER -- ID of the thread that this event belongs to.
);
CREATE TABLE D3D11_PIX_DEBUG_API (
-- D3D11 debug marker events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
shortContextId INTEGER, -- Short form of the COM interface object address.
frameId INTEGER, -- Index of the graphics frame starting from 1.
color INTEGER, -- Encoded ARGB color value.
textId INTEGER -- StringId of the PIX marker text string.
);
CREATE TABLE D3D12_PIX_DEBUG_API (
-- D3D12 debug marker events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
correlationId INTEGER, -- First ID matching an API call to GPU workloads.
endCorrelationId INTEGER, -- Last ID matching an API call to GPU workloads.
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the function name.
shortContextId INTEGER, -- Short form of the COM interface object address.
frameId INTEGER, -- Index of the graphics frame starting from 1.
color INTEGER, -- Encoded ARGB color value.
textId INTEGER, -- StringId of the PIX marker text string.
commandListType INTEGER, -- Type of command list. See enum D3D12_COMMAND_LIST_TYPE.
objectName TEXT, -- StringId of the D3D12 object name.
longContextId INTEGER -- Long form of the COM interface object address.
);
CREATE TABLE WDDM_EVICT_ALLOCATION_EVENTS (
-- Raw ETW EvictAllocation events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
allocationHandle INTEGER NOT NULL -- Global allocation handle.
);
CREATE TABLE WDDM_PAGING_QUEUE_PACKET_START_EVENTS (
-- Raw ETW PagingQueuePacketStart events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
dxgDevice INTEGER, -- Address of an IDXGIDevice.
dxgAdapter INTEGER, -- Address of an IDXGIAdapter.
pagingQueue INTEGER NOT NULL, -- Address of the paging queue.
pagingQueuePacket INTEGER NOT NULL, -- Address of the paging queue packet.
sequenceId INTEGER NOT NULL, -- Internal sequence starting from 0.
alloc INTEGER, -- Allocation handle.
vidMmOpType INTEGER NOT NULL, -- VIDMM operation type enum value. See docs for specifics.
pagingQueueType INTEGER NOT NULL -- Paging queue type enum value. See docs for specifics.
);
CREATE TABLE WDDM_PAGING_QUEUE_PACKET_STOP_EVENTS (
-- Raw ETW PagingQueuePacketStop events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
pagingQueue INTEGER NOT NULL, -- Address of the paging queue.
pagingQueuePacket INTEGER NOT NULL, -- Address of the paging queue packet.
sequenceId INTEGER NOT NULL -- Internal sequence starting from 0.
);
CREATE TABLE WDDM_PAGING_QUEUE_PACKET_INFO_EVENTS (
-- Raw ETW PagingQueuePacketInfo events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
pagingQueue INTEGER NOT NULL, -- Address of the paging queue.
pagingQueuePacket INTEGER NOT NULL, -- Address of the paging queue packet.
sequenceId INTEGER NOT NULL -- Internal sequence starting from 0.
);
CREATE TABLE WDDM_QUEUE_PACKET_START_EVENTS (
-- Raw ETW QueuePacketStart events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
dmaBufferSize INTEGER NOT NULL, -- The dma buffer size.
dmaBuffer INTEGER NOT NULL, -- The reported address of dma buffer.
queuePacket INTEGER NOT NULL, -- The address of queue packet.
progressFenceValue INTEGER NOT NULL, -- The fence value.
packetType INTEGER NOT NULL, -- The type of the packet.
submitSequence INTEGER NOT NULL, -- Internal sequence starting from 1.
allocationListSize INTEGER NOT NULL, -- The number of allocations referenced.
patchLocationListSize INTEGER NOT NULL, -- The number of patch locations.
present INTEGER NOT NULL, -- True or False if the packet is a present packet.
engineType INTEGER NOT NULL, -- The engine type.
syncObject INTEGER -- The address of fence object.
);
CREATE TABLE WDDM_QUEUE_PACKET_STOP_EVENTS (
-- Raw ETW QueuePacketStop events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
queuePacket INTEGER NOT NULL, -- The address of queue packet.
packetType INTEGER NOT NULL, -- The type of the packet.
submitSequence INTEGER NOT NULL, -- Internal sequence starting from 1.
preempted INTEGER NOT NULL, -- True or False if the packet is preempted.
timeouted INTEGER NOT NULL, -- True or False if the packet is timeouted.
engineType INTEGER NOT NULL -- The engine type.
);
CREATE TABLE WDDM_QUEUE_PACKET_INFO_EVENTS (
-- Raw ETW QueuePacketInfo events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
packetType INTEGER NOT NULL, -- The address of queue packet.
submitSequence INTEGER NOT NULL, -- Internal sequence starting from 1.
engineType INTEGER NOT NULL -- The engine type.
);
CREATE TABLE WDDM_DMA_PACKET_START_EVENTS (
-- Raw ETW DmaPacketStart events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
queuePacketContext INTEGER NOT NULL, -- The queue packet context.
uliSubmissionId INTEGER NOT NULL, -- The queue packet submission ID.
dmaBuffer INTEGER NOT NULL, -- The reported address of dma buffer.
packetType INTEGER NOT NULL, -- The type of the packet.
ulQueueSubmitSequence INTEGER NOT NULL, -- Internal sequence starting from 1.
quantumStatus INTEGER NOT NULL, -- The quantum Status.
engineType INTEGER NOT NULL -- The engine type.
);
CREATE TABLE WDDM_DMA_PACKET_STOP_EVENTS (
-- Raw ETW DmaPacketStop events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
uliCompletionId INTEGER NOT NULL, -- The queue packet completion ID.
packetType INTEGER NOT NULL, -- The type of the packet.
ulQueueSubmitSequence INTEGER NOT NULL, -- Internal sequence starting from 1.
preempted INTEGER NOT NULL, -- True or False if the packet is preempted.
engineType INTEGER NOT NULL -- The engine type.
);
CREATE TABLE WDDM_DMA_PACKET_INFO_EVENTS (
-- Raw ETW DmaPacketInfo events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
uliCompletionId INTEGER NOT NULL, -- The queue packet completion ID.
faultedVirtualAddress INTEGER NOT NULL, -- The virtual address of faulted process.
faultedProcessHandle INTEGER NOT NULL, -- The address of faulted process.
packetType INTEGER NOT NULL, -- The type of the packet.
ulQueueSubmitSequence INTEGER NOT NULL, -- Internal sequence starting from 1.
interruptType INTEGER NOT NULL, -- The DMA interrupt type.
quantumStatus INTEGER NOT NULL, -- The quantum Status.
pageFaultFlags INTEGER NOT NULL, -- The page fault flag ID.
engineType INTEGER NOT NULL -- The engine type.
);
CREATE TABLE WDDM_HW_QUEUE_EVENTS (
-- Raw ETW HwQueueStart events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
context INTEGER NOT NULL, -- The context ID of WDDM queue.
hwQueue INTEGER NOT NULL, -- The address of HW queue.
parentDxgHwQueue INTEGER NOT NULL -- The address of parent Dxg HW queue.
);
CREATE TABLE NVVIDEO_ENCODER_API (
-- NV Video Encoder API traced to gather information about NVIDIA Video Codek SDK Encoder APIs.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- NVIDIA Video event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id) -- StringId of the function name.
);
CREATE TABLE NVVIDEO_DECODER_API (
-- NV Video Encoder API traced to gather information about NVIDIA Video Codek SDK Decoder APIs.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
eventClass INTEGER NOT NULL, -- NVIDIA Video event class enum value. See docs for specifics.
globalTid INTEGER, -- Serialized GlobalId.
nameId INTEGER NOT NULL REFERENCES StringIds(id) -- StringId of the function name.
);
CREATE TABLE GPU_MEMORY_BUDGET_EVENTS (
-- Raw ETW VidMmProcessBudgetChange events.
timestamp INTEGER NOT NULL, -- Event start timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
newBudget INTEGER, -- The new budget size in bytes.
segmentGroup INTEGER -- The segment group ID.
);
CREATE TABLE GPU_MEMORY_USAGE_EVENTS (
-- Raw ETW VidMmProcessUsageChange events.
timestamp INTEGER NOT NULL, -- Event start timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
newUsage INTEGER, -- The new usage size in bytes.
segmentGroup INTEGER -- The segment group ID.
);
CREATE TABLE DEMOTED_BYTES_EVENTS (
-- Raw ETW VidMmProcessDemotedCommitmentChange events.
timestamp INTEGER NOT NULL, -- Event start timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
commitment INTEGER -- Total demoted bytes.
);
CREATE TABLE TOTAL_BYTES_RESIDENT_IN_SEGMENT_EVENTS (
-- Raw ETW TotalBytesResidentInSegment events.
timestamp INTEGER NOT NULL, -- Event start timestamp (ns).
globalTid INTEGER, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
totalBytesResident INTEGER, -- Total bytes resident in segment.
segmentGroup INTEGER, -- The segment group ID.
segmentId INTEGER -- The segment ID.
);
CREATE TABLE NV_LOAD_BALANCE_MASTER_EVENTS (
-- Raw ETW NV-wgf2um LoadBalanceMaster events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER NOT NULL, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
eventId INTEGER NOT NULL, -- Event ID.
task TEXT NOT NULL, -- The task name.
frameCount INTEGER NOT NULL, -- The frame ID.
frameTime REAL NOT NULL, -- Frame duration.
averageFrameTime REAL NOT NULL, -- Average of frame duration.
averageLatency REAL NOT NULL, -- Average of latency.
minLatency REAL NOT NULL, -- The minimum latency.
averageQueuedFrames REAL NOT NULL, -- Average number of queued frames.
totalActiveMs REAL NOT NULL, -- Total active time in milliseconds.
totalIdleMs REAL NOT NULL, -- Total idle time in milliseconds.
idlePercent REAL NOT NULL, -- The percentage of idle time.
isGPUAlmostOneFrameAhead INTEGER NOT NULL -- True or False if GPU is almost one frame ahead.
);
CREATE TABLE NV_LOAD_BALANCE_EVENTS (
-- Raw ETW NV-wgf2um LoadBalance events.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
globalTid INTEGER NOT NULL, -- Serialized GlobalId.
gpu INTEGER NOT NULL, -- GPU index.
eventId INTEGER NOT NULL, -- Event ID.
task TEXT NOT NULL, -- The task name.
averageFPS REAL NOT NULL, -- Average frame per second.
queuedFrames REAL NOT NULL, -- The amount of queued frames.
averageQueuedFrames REAL NOT NULL, -- Average number of queued frames.
currentCPUTime REAL NOT NULL, -- The current CPU time.
averageCPUTime REAL NOT NULL, -- Average CPU time.
averageStallTime REAL NOT NULL, -- Average of stall time.
averageCPUIdleTime REAL NOT NULL, -- Average CPU idle time.
isGPUAlmostOneFrameAhead INTEGER NOT NULL -- True or False if GPU is almost one frame ahead.
);
CREATE TABLE PROCESSES (
-- Names and identifiers of processes captured in the report.
globalPid INTEGER, -- Serialized GlobalId.
pid INTEGER, -- The process ID.
name TEXT -- The process name.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_OPENACC_DATA (
-- OpenACC data events collected using CUPTI.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
globalTid INTEGER, -- Serialized GlobalId.
eventKind INTEGER NOT NULL, -- CUPTI OpenACC event kind. See enum CUpti_OpenAccEventKind.
DeviceType INTEGER NOT NULL, -- Device type. See enum acc_device_t.
lineNo INTEGER NOT NULL, -- Line number of the directive or program construct.
cuDeviceId INTEGER NOT NULL, -- CUDA device ID. Valid only if deviceType is acc_device_nvidia.
cuContextId INTEGER NOT NULL, -- CUDA context ID. Valid only if deviceType is acc_device_nvidia.
cuStreamId INTEGER NOT NULL, -- CUDA stream ID. Valid only if deviceType is acc_device_nvidia.
srcFile INTEGER REFERENCES StringIds(id), -- StringId of the source file name or path.
funcName INTEGER REFERENCES StringIds(id), -- StringId of the function in which the event occurred.
bytes INTEGER, -- Number of bytes.
varName INTEGER REFERENCES StringIds(id) -- StringId of the variable name.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_OPENACC_LAUNCH (
-- OpenACC launch events collected using CUPTI.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
globalTid INTEGER, -- Serialized GlobalId.
eventKind INTEGER NOT NULL, -- CUPTI OpenACC event kind. See enum CUpti_OpenAccEventKind.
DeviceType INTEGER NOT NULL, -- Device type. See enum acc_device_t.
lineNo INTEGER NOT NULL, -- Line number of the directive or program construct.
cuDeviceId INTEGER NOT NULL, -- CUDA device ID. Valid only if deviceType is acc_device_nvidia.
cuContextId INTEGER NOT NULL, -- CUDA context ID. Valid only if deviceType is acc_device_nvidia.
cuStreamId INTEGER NOT NULL, -- CUDA stream ID. Valid only if deviceType is acc_device_nvidia.
srcFile INTEGER REFERENCES StringIds(id), -- StringId of the source file name or path.
funcName INTEGER REFERENCES StringIds(id), -- StringId of the function in which the event occurred.
numGangs INTEGER, -- Number of gangs created for this kernel launch.
numWorkers INTEGER, -- Number of workers created for this kernel launch.
vectorLength INTEGER, -- Number of vector lanes created for this kernel launch.
kernelName INTEGER REFERENCES StringIds(id) -- StringId of the kernel name.
);
CREATE TABLE CUPTI_ACTIVITY_KIND_OPENACC_OTHER (
-- OpenACC other events collected using CUPTI.
start INTEGER NOT NULL, -- Event start timestamp (ns).
end INTEGER NOT NULL, -- Event end timestamp (ns).
nameId INTEGER NOT NULL REFERENCES StringIds(id), -- StringId of the event name.
globalTid INTEGER, -- Serialized GlobalId.
eventKind INTEGER NOT NULL, -- CUPTI OpenACC event kind. See enum CUpti_OpenAccEventKind.
DeviceType INTEGER NOT NULL, -- Device type. See enum acc_device_t.
lineNo INTEGER NOT NULL, -- Line number of the directive or program construct.
cuDeviceId INTEGER NOT NULL, -- CUDA device ID. Valid only if deviceType is acc_device_nvidia.
cuContextId INTEGER NOT NULL, -- CUDA context ID. Valid only if deviceType is acc_device_nvidia.
cuStreamId INTEGER NOT NULL, -- CUDA stream ID. Valid only if deviceType is acc_device_nvidia.
srcFile INTEGER REFERENCES StringIds(id), -- StringId of the source file name or path.
funcName INTEGER REFERENCES StringIds(id) -- StringId of the function in which the event occurred.
);
</pre></div>
</div>
<div class="topic nested1" id="exporter-sqlite-event-values"><a name="exporter-sqlite-event-values" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#exporter-sqlite-event-values" name="exporter-sqlite-event-values" shape="rect">SQLite Schema Event Values</a></h3>
<div class="body">
<p class="p">Here are the set values stored in enums in the <span class="ph">Nsight Systems</span>
SQLite schema
</p>
<p class="p"><strong class="ph b">CUDA Event Class Values</strong></p><pre xml:space="preserve">
0 - TRACE_PROCESS_EVENT_CUDA_RUNTIME
1 - TRACE_PROCESS_EVENT_CUDA_DRIVER
13 - TRACE_PROCESS_EVENT_CUDA_EGL_DRIVER
28 - TRACE_PROCESS_EVENT_CUDNN
29 - TRACE_PROCESS_EVENT_CUBLAS
33 - TRACE_PROCESS_EVENT_CUDNN_START
34 - TRACE_PROCESS_EVENT_CUDNN_FINISH
35 - TRACE_PROCESS_EVENT_CUBLAS_START
36 - TRACE_PROCESS_EVENT_CUBLAS_FINISH
67 - TRACE_PROCESS_EVENT_CUDABACKTRACE
77 - TRACE_PROCESS_EVENT_CUDA_GRAPH_NODE_CREATION
</pre><p class="p">See <a class="xref" href="https://docs.nvidia.com/cupti/Cupti/index.html" target="_blank" shape="rect">CUPTI documentation</a> for detailed information on
collected event and data types.
</p>
<p class="p"><strong class="ph b">NVTX Event Type Values</strong></p><pre xml:space="preserve">
33 - NvtxCategory
34 - NvtxMark
39 - NvtxThread
59 - NvtxPushPopRange
60 - NvtxStartEndRange
75 - NvtxDomainCreate
76 - NvtxDomainDestroy
</pre><p class="p">The difference between text and textId columns is that if an NVTX event
message was passed via call to nvtxDomainRegisterString function, then the
message will be available through textId field, otherwise the text field will
contain the message if it was provided.
</p>
<p class="p"><strong class="ph b">OpenGL Events</strong></p>
<p class="p">KHR event class values</p><pre xml:space="preserve">
62 - KhrDebugPushPopRange
63 - KhrDebugGpuPushPopRange
</pre><p class="p">KHR source kind values</p><pre xml:space="preserve">
0x8249 - GL_DEBUG_SOURCE_THIRD_PARTY
0x824A - GL_DEBUG_SOURCE_APPLICATION
</pre><p class="p">KHR type values</p><pre xml:space="preserve">
0x824C - GL_DEBUG_TYPE_ERROR
0x824D - GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
0x824E - GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
0x824F - GL_DEBUG_TYPE_PORTABILITY
0x8250 - GL_DEBUG_TYPE_PERFORMANCE
0x8251 - GL_DEBUG_TYPE_OTHER
0x8268 - GL_DEBUG_TYPE_MARKER
0x8269 - GL_DEBUG_TYPE_PUSH_GROUP
0x826A - GL_DEBUG_TYPE_POP_GROUP
</pre><p class="p">KHR severity values</p><pre xml:space="preserve">
0x826B - GL_DEBUG_SEVERITY_NOTIFICATION
0x9146 - GL_DEBUG_SEVERITY_HIGH
0x9147 - GL_DEBUG_SEVERITY_MEDIUM
0x9148 - GL_DEBUG_SEVERITY_LOW
</pre><p class="p"><strong class="ph b">OSRT Event Class Values</strong></p>
<p class="p">OS runtime libraries can be traced to gather information about low-level
userspace APIs. This traces the system call wrappers and thread
synchronization interfaces exposed by the C runtime and POSIX Threads (pthread)
libraries. This does not perform a complete runtime library API trace, but
instead focuses on the functions that can take a long time to execute, or
could potentially cause your thread be unscheduled from the CPU while waiting
for an event to complete.
</p>
<p class="p">OSRT events may have callchains attached to them, depending on selected
profiling settings. In such cases, one can use callchainId column to select
relevant callchains from OSRT_CALLCHAINS table
</p>
<p class="p">OSRT event class values</p><pre xml:space="preserve">
27 - TRACE_PROCESS_EVENT_OS_RUNTIME
31 - TRACE_PROCESS_EVENT_OS_RUNTIME_START
32 - TRACE_PROCESS_EVENT_OS_RUNTIME_FINISH
</pre><p class="p"><strong class="ph b">DX12 Event Class Values</strong></p><pre xml:space="preserve">
41 - TRACE_PROCESS_EVENT_DX12_API
42 - TRACE_PROCESS_EVENT_DX12_WORKLOAD
43 - TRACE_PROCESS_EVENT_DX12_START
44 - TRACE_PROCESS_EVENT_DX12_FINISH
52 - TRACE_PROCESS_EVENT_DX12_DISPLAY
59 - TRACE_PROCESS_EVENT_DX12_CREATE_OBJECT
</pre><p class="p"><strong class="ph b">PIX Event Class Values</strong></p><pre xml:space="preserve">
65 - TRACE_PROCESS_EVENT_DX12_DEBUG_API
75 - TRACE_PROCESS_EVENT_DX11_DEBUG_API
</pre><p class="p"><strong class="ph b">Vulkan Event Class Values</strong></p><pre xml:space="preserve">
53 - TRACE_PROCESS_EVENT_VULKAN_API
54 - TRACE_PROCESS_EVENT_VULKAN_WORKLOAD
55 - TRACE_PROCESS_EVENT_VULKAN_START
56 - TRACE_PROCESS_EVENT_VULKAN_FINISH
60 - TRACE_PROCESS_EVENT_VULKAN_CREATE_OBJECT
66 - TRACE_PROCESS_EVENT_VULKAN_DEBUG_API
</pre><p class="p"><strong class="ph b">Vulkan Flags</strong></p><pre xml:space="preserve">
VALID_BIT = 0x00000001
CACHE_HIT_BIT = 0x00000002
BASE_PIPELINE_ACCELERATION_BIT = 0x00000004
</pre><p class="p"><strong class="ph b">SLI Event Class Values</strong></p><pre xml:space="preserve">
62 - TRACE_PROCESS_EVENT_SLI
63 - TRACE_PROCESS_EVENT_SLI_START
64 - TRACE_PROCESS_EVENT_SLI_FINISH
</pre><p class="p"><strong class="ph b">SLI Transfer Info Values</strong></p><pre xml:space="preserve">
0 - P2P_SKIPPED
1 - P2P_EARLY_PUSH
2 - P2P_PUSH_FAILED
3 - P2P_2WAY_OR_PULL
4 - P2P_PRESENT
5 - P2P_DX12_INIT_PUSH_ON_WRITE
</pre><p class="p"><strong class="ph b">WDDM Event Values</strong></p>
<p class="p">VIDMM operation type values</p><pre xml:space="preserve">
0 - None
101 - RestoreSegments
102 - PurgeSegments
103 - CleanupPrimary
104 - AllocatePagingBufferResources
105 - FreePagingBufferResources
106 - ReportVidMmState
107 - RunApertureCoherencyTest
108 - RunUnmapToDummyPageTest
109 - DeferredCommand
110 - SuspendMemorySegmentAccess
111 - ResumeMemorySegmentAccess
112 - EvictAndFlush
113 - CommitVirtualAddressRange
114 - UncommitVirtualAddressRange
115 - DestroyVirtualAddressAllocator
116 - PageInDevice
117 - MapContextAllocation
118 - InitPagingProcessVaSpace
200 - CloseAllocation
202 - ComplexLock
203 - PinAllocation
204 - FlushPendingGpuAccess
205 - UnpinAllocation
206 - MakeResident
207 - Evict
208 - LockInAperture
209 - InitContextAllocation
210 - ReclaimAllocation
211 - DiscardAllocation
212 - SetAllocationPriority
1000 - EvictSystemMemoryOfferList
</pre><p class="p">Paging queue type values</p><pre xml:space="preserve">
0 - VIDMM_PAGING_QUEUE_TYPE_UMD
1 - VIDMM_PAGING_QUEUE_TYPE_Default
2 - VIDMM_PAGING_QUEUE_TYPE_Evict
3 - VIDMM_PAGING_QUEUE_TYPE_Reclaim
</pre><p class="p">Packet type values</p><pre xml:space="preserve">
0 - DXGKETW_RENDER_COMMAND_BUFFER
1 - DXGKETW_DEFERRED_COMMAND_BUFFER
2 - DXGKETW_SYSTEM_COMMAND_BUFFER
3 - DXGKETW_MMIOFLIP_COMMAND_BUFFER
4 - DXGKETW_WAIT_COMMAND_BUFFER
5 - DXGKETW_SIGNAL_COMMAND_BUFFER
6 - DXGKETW_DEVICE_COMMAND_BUFFER
7 - DXGKETW_SOFTWARE_COMMAND_BUFFER
</pre><p class="p">Engine type values</p><pre xml:space="preserve">
0 - DXGK_ENGINE_TYPE_OTHER
1 - DXGK_ENGINE_TYPE_3D
2 - DXGK_ENGINE_TYPE_VIDEO_DECODE
3 - DXGK_ENGINE_TYPE_VIDEO_ENCODE
4 - DXGK_ENGINE_TYPE_VIDEO_PROCESSING
5 - DXGK_ENGINE_TYPE_SCENE_ASSEMBLY
6 - DXGK_ENGINE_TYPE_COPY
7 - DXGK_ENGINE_TYPE_OVERLAY
8 - DXGK_ENGINE_TYPE_CRYPTO
</pre><p class="p">DMA interrupt type values</p><pre xml:space="preserve">
1 = DXGK_INTERRUPT_DMA_COMPLETED
2 = DXGK_INTERRUPT_DMA_PREEMPTED
4 = DXGK_INTERRUPT_DMA_FAULTED
9 = DXGK_INTERRUPT_DMA_PAGE_FAULTED
</pre><p class="p">Queue type values</p><pre xml:space="preserve">
0 = Queue_Packet
1 = Dma_Packet
2 = Paging_Queue_Packet
</pre><p class="p"><strong class="ph b">Driver Events</strong></p>
<p class="p">Load balance event type values</p><pre xml:space="preserve">
1 - LoadBalanceEvent_GPU
8 - LoadBalanceEvent_CPU
21 - LoadBalanceMasterEvent_GPU
22 - LoadBalanceMasterEvent_CPU
</pre><p class="p"><strong class="ph b">OpenMP Events</strong></p>
<p class="p">OpenMP event class values</p><pre xml:space="preserve">
78 - TRACE_PROCESS_EVENT_OPENMP
79 - TRACE_PROCESS_EVENT_OPENMP_START
80 - TRACE_PROCESS_EVENT_OPENMP_FINISH
</pre><p class="p">OpenMP event kind values</p><pre xml:space="preserve">
15 - OPENMP_EVENT_KIND_TASK_CREATE
16 - OPENMP_EVENT_KIND_TASK_SCHEDULE
17 - OPENMP_EVENT_KIND_CANCEL
20 - OPENMP_EVENT_KIND_MUTEX_RELEASED
21 - OPENMP_EVENT_KIND_LOCK_INIT
22 - OPENMP_EVENT_KIND_LOCK_DESTROY
25 - OPENMP_EVENT_KIND_DISPATCH
26 - OPENMP_EVENT_KIND_FLUSH
27 - OPENMP_EVENT_KIND_THREAD
28 - OPENMP_EVENT_KIND_PARALLEL
29 - OPENMP_EVENT_KIND_SYNC_REGION_WAIT
30 - OPENMP_EVENT_KIND_SYNC_REGION
31 - OPENMP_EVENT_KIND_TASK
32 - OPENMP_EVENT_KIND_MASTER
33 - OPENMP_EVENT_KIND_REDUCTION
34 - OPENMP_EVENT_KIND_MUTEX_WAIT
35 - OPENMP_EVENT_KIND_CRITICAL_SECTION
36 - OPENMP_EVENT_KIND_WORKSHARE
</pre><p class="p">OpenMP thread type values</p><pre xml:space="preserve">
1 - OpenMP Initial Thread
2 - OpenMP Worker Thread
3 - OpenMP Internal Thread
4 - Unknown
</pre><p class="p">OpenMP sync region kind values</p><pre xml:space="preserve">
1 - Barrier
2 - Implicit barrier
3 - Explicit barrier
4 - Implementation-dependent barrier
5 - Taskwait
6 - Taskgroup
</pre><p class="p">OpenMP task kind values</p><pre xml:space="preserve">
1 - Initial task
2 - Implicit task
3 - Explicit task
</pre><p class="p">OpenMP prior task status values</p><pre xml:space="preserve">
1 - Task completed
2 - Task yielded to another task
3 - Task was cancelled
7 - Task was switched out for other reasons
</pre><p class="p">OpenMP mutex kind values</p><pre xml:space="preserve">
1 - Waiting for lock
2 - Testing lock
3 - Waiting for nested lock
4 - Tesing nested lock
5 - Waitng for entering critical section region
6 - Waiting for entering atomic region
7 - Waiting for entering ordered region
</pre><p class="p">OpenMP critical section kind values</p><pre xml:space="preserve">
5 - Critical section region
6 - Atomic region
7 - Ordered region
</pre><p class="p">OpenMP workshare kind values</p><pre xml:space="preserve">
1 - Loop region
2 - Sections region
3 - Single region (executor)
4 - Single region (waiting)
5 - Workshare region
6 - Distrubute region
7 - Taskloop region
</pre><p class="p">OpenMP dispatch kind values</p><pre xml:space="preserve">
1 - Iteration
2 - Section
</pre></div>
</div>
<div class="topic nested1" id="export-sqlite-examples"><a name="export-sqlite-examples" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#export-sqlite-examples" name="export-sqlite-examples" shape="rect">3.3. Common SQLite Examples</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Common Helper Commands</strong></p>
<p class="p">When utilizing sqlite3 command line tool, it’s helpful to have data
printed as named columns, this can be done with:
</p><pre xml:space="preserve">
.mode column
.headers on
</pre><p class="p">Default column width is determined by the data in the first row of
results. If this doesn’t work out well, you can specify widths manually.
</p><pre xml:space="preserve">.width 10 20 50</pre><p class="p"><strong class="ph b">Obtaining Sample Report</strong></p>
<p class="p">CLI interface of <span class="ph">Nsight Systems</span> was used to profile radixSortThrust CUDA
sample, then the resulting .nsys-rep file was exported using the <span class="ph">nsys</span> export.
</p><pre xml:space="preserve">
<span class="ph">nsys</span> profile --trace=cuda,osrt radixSortThrust
<span class="ph">nsys</span> export --type sqlite report1.nsys-rep
</pre><p class="p"><strong class="ph b">Serialized Process and Thread Identifiers</strong></p>
<p class="p"><span class="ph">Nsight Systems</span> stores identifiers where events originated in
serialized form. For events that have globalTid or globalPid fields exported,
use the following code to extract numeric TID and PID.
</p><pre xml:space="preserve">
SELECT globalTid / 0x1000000 % 0x1000000 AS PID, globalTid % 0x1000000 AS TID FROM TABLE_NAME;
</pre><p class="p">Note: globalTid field includes both TID and PID values, while globalPid
only containes the PID value.
</p>
<p class="p"><strong class="ph b">Correlate CUDA Kernel Launches With CUDA API Kernel Launches</strong></p><pre xml:space="preserve">
ALTER TABLE CUPTI_ACTIVITY_KIND_RUNTIME ADD COLUMN name TEXT;
ALTER TABLE CUPTI_ACTIVITY_KIND_RUNTIME ADD COLUMN kernelName TEXT;
UPDATE CUPTI_ACTIVITY_KIND_RUNTIME SET kernelName =
(SELECT value FROM StringIds
JOIN CUPTI_ACTIVITY_KIND_KERNEL AS cuda_gpu
ON cuda_gpu.shortName = StringIds.id
AND CUPTI_ACTIVITY_KIND_RUNTIME.correlationId = cuda_gpu.correlationId);
UPDATE CUPTI_ACTIVITY_KIND_RUNTIME SET name =
(SELECT value FROM StringIds WHERE nameId = StringIds.id);
</pre><p class="p">Select 10 longest CUDA API ranges that resulted in kernel execution.</p><pre xml:space="preserve">
SELECT name, kernelName, start, end FROM CUPTI_ACTIVITY_KIND_RUNTIME
WHERE kernelName IS NOT NULL ORDER BY end - start LIMIT 10;
</pre><p class="p">Results:</p><pre xml:space="preserve">
name kernelName start end
---------------------- ----------------------- ---------- ----------
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 658863435 658868490
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 609755015 609760075
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 632683286 632688349
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 606495356 606500439
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 603114486 603119586
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 802729785 802734906
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 593381170 593386294
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 658759955 658765090
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 681549917 681555059
cudaLaunchKernel_v7000 RadixSortScanBinsKernel 717812527 717817671
</pre><p class="p"><strong class="ph b">Remove Ranges Overlapping With Overhead</strong></p>
<p class="p">Use the this query to count CUDA API ranges overlapping with the overhead
ones.
</p>
<p class="p">Replace "SELECT COUNT(*)" with "DELETE" to remove such ranges.</p><pre xml:space="preserve">
SELECT COUNT(*) FROM CUPTI_ACTIVITY_KIND_RUNTIME WHERE rowid IN
(
SELECT cuda.rowid
FROM PROFILER_OVERHEAD as overhead
INNER JOIN CUPTI_ACTIVITY_KIND_RUNTIME as cuda ON
(cuda.start BETWEEN overhead.start and overhead.end)
OR (cuda.end BETWEEN overhead.start and overhead.end)
OR (cuda.start < overhead.start AND cuda.end > overhead.end)
);
</pre><p class="p">Results:</p><pre xml:space="preserve">
COUNT(*)
----------
1095
</pre><p class="p"><strong class="ph b">Find CUDA API Calls That Resulted in Original Graph Node Creation.</strong></p><pre xml:space="preserve">
SELECT graph.graphNodeId, api.start, graph.start as graphStart, api.end,
api.globalTid, api.correlationId, api.globalTid,
(SELECT value FROM StringIds where api.nameId == id) as name
FROM CUPTI_ACTIVITY_KIND_RUNTIME as api
JOIN
(
SELECT start, graphNodeId, globalTid from CUDA_GRAPH_EVENTS
GROUP BY graphNodeId
HAVING COUNT(originalGraphNodeId) = 0
) as graph
ON api.globalTid == graph.globalTid AND api.start < graph.start AND api.end > graph.start
ORDER BY graphNodeId;
</pre><p class="p">Results:</p><pre xml:space="preserve">
graphNodeId start graphStart end globalTid correlationId globalTid name
----------- ---------- ---------- ---------- --------------- ------------- --------------- -----------------------------
1 584366518 584378040 584379102 281560221750233 109 281560221750233 cudaGraphAddMemcpyNode_v10000
2 584379402 584382428 584383139 281560221750233 110 281560221750233 cudaGraphAddMemsetNode_v10000
3 584390663 584395352 584396053 281560221750233 111 281560221750233 cudaGraphAddKernelNode_v10000
4 584396314 584397857 584398438 281560221750233 112 281560221750233 cudaGraphAddMemsetNode_v10000
5 584398759 584400311 584400812 281560221750233 113 281560221750233 cudaGraphAddKernelNode_v10000
6 584401083 584403047 584403527 281560221750233 114 281560221750233 cudaGraphAddMemcpyNode_v10000
7 584403928 584404920 584405491 281560221750233 115 281560221750233 cudaGraphAddHostNode_v10000
29 632107852 632117921 632121407 281560221750233 144 281560221750233 cudaMemcpyAsync_v3020
30 632122168 632125545 632127989 281560221750233 145 281560221750233 cudaMemsetAsync_v3020
31 632131546 632133339 632135584 281560221750233 147 281560221750233 cudaMemsetAsync_v3020
34 632162514 632167393 632169297 281560221750233 151 281560221750233 cudaMemcpyAsync_v3020
35 632170068 632173334 632175388 281560221750233 152 281560221750233 cudaLaunchHostFunc_v10000
</pre><p class="p"><strong class="ph b">Backtraces for OSRT Ranges</strong></p>
<p class="p">Adding text columns makes results of the query below more human-readable.</p><pre xml:space="preserve">
ALTER TABLE OSRT_API ADD COLUMN name TEXT;
UPDATE OSRT_API SET name = (SELECT value FROM StringIds WHERE OSRT_API.nameId = StringIds.id);
ALTER TABLE OSRT_CALLCHAINS ADD COLUMN symbolName TEXT;
UPDATE OSRT_CALLCHAINS SET symbolName = (SELECT value FROM StringIds WHERE symbol = StringIds.id);
ALTER TABLE OSRT_CALLCHAINS ADD COLUMN moduleName TEXT;
UPDATE OSRT_CALLCHAINS SET moduleName = (SELECT value FROM StringIds WHERE module = StringIds.id);
</pre><p class="p">Print backtrace of the longest OSRT range</p><pre xml:space="preserve">
SELECT globalTid / 0x1000000 % 0x1000000 AS PID, globalTid % 0x1000000 AS TID,
start, end, name, callchainId, stackDepth, symbolName, moduleName
FROM OSRT_API LEFT JOIN OSRT_CALLCHAINS ON callchainId == OSRT_CALLCHAINS.id
WHERE OSRT_API.rowid IN (SELECT rowid FROM OSRT_API ORDER BY end - start DESC LIMIT 1)
ORDER BY stackDepth LIMIT 10;
</pre><p class="p">Results:</p><pre xml:space="preserve">
PID TID start end name callchainId stackDepth symbolName moduleName
---------- ---------- ---------- ---------- ---------------------- ----------- ---------- ------------------------------ ----------------------------------------
19163 19176 360897690 860966851 pthread_cond_timedwait 88 0 pthread_cond_timedwait@GLIBC_2 /lib/x86_64-linux-gnu/libpthread-2.27.so
19163 19176 360897690 860966851 pthread_cond_timedwait 88 1 0x7fbc983b7227 /usr/lib/x86_64-linux-gnu/libcuda.so.418
19163 19176 360897690 860966851 pthread_cond_timedwait 88 2 0x7fbc9835d5c7 /usr/lib/x86_64-linux-gnu/libcuda.so.418
19163 19176 360897690 860966851 pthread_cond_timedwait 88 3 0x7fbc983b64a8 /usr/lib/x86_64-linux-gnu/libcuda.so.418
19163 19176 360897690 860966851 pthread_cond_timedwait 88 4 start_thread /lib/x86_64-linux-gnu/libpthread-2.27.so
19163 19176 360897690 860966851 pthread_cond_timedwait 88 5 __clone /lib/x86_64-linux-gnu/libc-2.27.so
</pre><p class="p">Profiled processes output streams</p><pre xml:space="preserve">
ALTER TABLE ProcessStreams ADD COLUMN filename TEXT;
UPDATE ProcessStreams SET filename = (SELECT value FROM StringIds WHERE ProcessStreams.filenameId = StringIds.id);
ALTER TABLE ProcessStreams ADD COLUMN content TEXT;
UPDATE ProcessStreams SET content = (SELECT value FROM StringIds WHERE ProcessStreams.contentId = StringIds.id);
</pre><p class="p">Select all collected stdout and stderr streams.</p><pre xml:space="preserve">
select globalPid / 0x1000000 % 0x1000000 AS PID, filename, content from ProcessStreams;
</pre><p class="p">Results:</p><pre xml:space="preserve">
PID filename content
---------- ------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------
19163 /tmp/nvidia/nsight_systems/streams/pid_19163_stdout.log /home/user_name/NVIDIA_CUDA-10.1_Samples/6_Advanced/radixSortThrust/radixSortThrust Starting...
GPU Device 0: "Quadro P2000" with compute capability 6.1
Sorting 1048576 32-bit unsigned int keys and values
radixSortThrust, Throughput = 401.0872 MElements/s, Time = 0.00261 s, Size = 1048576 elements
Test passed
19163 /tmp/nvidia/nsight_systems/streams/pid_19163_stderr.log
</pre><p class="p"><strong class="ph b">Thread Summary</strong></p>
<p class="p">Please note, that <span class="ph">Nsight Systems</span> applies additional logic
during sampling events processing to work around lost events. This means that
the results of the below query might differ slightly from the ones shown in
“Analysis summary” tab.
</p>
<p class="p">Thread summary calculated using CPU cycles (when available).</p><pre xml:space="preserve">
SELECT
globalTid / 0x1000000 % 0x1000000 AS PID,
globalTid % 0x1000000 AS TID,
ROUND(100.0 * SUM(cpuCycles) /
(
SELECT SUM(cpuCycles) FROM COMPOSITE_EVENTS
GROUP BY globalTid / 0x1000000000000 % 0x100
),
2
) as CPU_utilization,
(SELECT value FROM StringIds WHERE id =
(
SELECT nameId FROM ThreadNames
WHERE ThreadNames.globalTid = COMPOSITE_EVENTS.globalTid
)
) as thread_name
FROM COMPOSITE_EVENTS
GROUP BY globalTid
ORDER BY CPU_utilization DESC
LIMIT 10;
</pre><p class="p">Results:</p><pre xml:space="preserve">
PID TID CPU_utilization thread_name
---------- ---------- --------------- ---------------
19163 19163 98.4 radixSortThrust
19163 19168 1.35 CUPTI worker th
19163 19166 0.25 [NS]
</pre><p class="p">Thread running time may be calculated using scheduling data, when PMU
counter data was not collected.
</p><pre xml:space="preserve">
CREATE INDEX sched_start ON SCHED_EVENTS (start);
CREATE TABLE CPU_USAGE AS
SELECT
first.globalTid as globalTid,
(SELECT nameId FROM ThreadNames WHERE ThreadNames.globalTid = first.globalTid) as nameId,
sum(second.start - first.start) as total_duration,
count() as ranges_count
FROM SCHED_EVENTS as first
LEFT JOIN SCHED_EVENTS as second
ON second.rowid =
(
SELECT rowid
FROM SCHED_EVENTS
WHERE start > first.start AND globalTid = first.globalTid
ORDER BY start ASC
LIMIT 1
)
WHERE first.isSchedIn != 0
GROUP BY first.globalTid
ORDER BY total_duration DESC;
SELECT
globalTid / 0x1000000 % 0x1000000 AS PID,
globalTid % 0x1000000 AS TID,
(SELECT value FROM StringIds where nameId == id) as thread_name,
ROUND(100.0 * total_duration / (SELECT SUM(total_duration) FROM CPU_USAGE), 2) as CPU_utilization
FROM CPU_USAGE
ORDER BY CPU_utilization DESC;
</pre><p class="p">Results:</p><pre xml:space="preserve">
PID TID thread_name CPU_utilization
---------- ---------- --------------- ---------------
19163 19163 radixSortThrust 93.74
19163 19169 radixSortThrust 3.22
19163 19168 CUPTI worker th 2.46
19163 19166 [NS] 0.44
19163 19172 radixSortThrust 0.07
19163 19167 [NS Comms] 0.05
19163 19176 radixSortThrust 0.02
19163 19170 radixSortThrust 0.0
</pre><p class="p"><strong class="ph b">Function Table</strong></p>
<p class="p">These examples demonstrate how to calculate Flat and BottomUp (for top
level only) views statistics.
</p>
<p class="p">To set up:</p><pre xml:space="preserve">
ALTER TABLE SAMPLING_CALLCHAINS ADD COLUMN symbolName TEXT;
UPDATE SAMPLING_CALLCHAINS SET symbolName = (SELECT value FROM StringIds WHERE symbol = StringIds.id);
ALTER TABLE SAMPLING_CALLCHAINS ADD COLUMN moduleName TEXT;
UPDATE SAMPLING_CALLCHAINS SET moduleName = (SELECT value FROM StringIds WHERE module = StringIds.id);
</pre><p class="p">To get flat view:</p><pre xml:space="preserve">
SELECT symbolName, moduleName, ROUND(100.0 * sum(cpuCycles) /
(SELECT SUM(cpuCycles) FROM COMPOSITE_EVENTS), 2) AS flatTimePercentage
FROM SAMPLING_CALLCHAINS
LEFT JOIN COMPOSITE_EVENTS ON SAMPLING_CALLCHAINS.id == COMPOSITE_EVENTS.id
GROUP BY symbol, module
ORDER BY flatTimePercentage DESC
LIMIT 5;
</pre><p class="p">To get BottomUp view (top level only):</p><pre xml:space="preserve">
SELECT symbolName, moduleName, ROUND(100.0 * sum(cpuCycles) /
(SELECT SUM(cpuCycles) FROM COMPOSITE_EVENTS), 2) AS selfTimePercentage
FROM SAMPLING_CALLCHAINS
LEFT JOIN COMPOSITE_EVENTS ON SAMPLING_CALLCHAINS.id == COMPOSITE_EVENTS.id
WHERE stackDepth == 0
GROUP BY symbol, module
ORDER BY selfTimePercentage DESC
LIMIT 5;
</pre><p class="p">Results:</p><pre xml:space="preserve">
symbolName moduleName flatTimePercentage
----------- ----------- ------------------
[Max depth] [Max depth] 99.92
thrust::zip /home/user_ 24.17
thrust::zip /home/user_ 24.17
thrust::det /home/user_ 24.17
thrust::det /home/user_ 24.17
symbolName moduleName selfTimePercentage
-------------- ------------------------------------------- ------------------
0x7fbc984982b6 /usr/lib/x86_64-linux-gnu/libcuda.so.418.39 5.29
0x7fbc982d0010 /usr/lib/x86_64-linux-gnu/libcuda.so.418.39 2.81
thrust::iterat /home/user_name/NVIDIA_CUDA-10.1_Samples/6_ 2.23
thrust::iterat /home/user_name/NVIDIA_CUDA-10.1_Samples/6_ 1.55
void thrust::i /home/user_name/NVIDIA_CUDA-10.1_Samples/6_ 1.55
</pre><p class="p"><strong class="ph b">DX12 API Frame Duration Histogram</strong></p>
<p class="p">The example demonstrates how to calculate DX12 CPU frames durartion and
construct a histogram out of it.
</p><pre xml:space="preserve">
CREATE INDEX DX12_API_ENDTS ON DX12_API (end);
CREATE TEMP VIEW DX12_API_FPS AS SELECT end AS start,
(SELECT end FROM DX12_API
WHERE end > outer.end AND nameId == (SELECT id FROM StringIds
WHERE value == "IDXGISwapChain::Present")
ORDER BY end ASC LIMIT 1) AS end
FROM DX12_API AS outer
WHERE nameId == (SELECT id FROM StringIds WHERE value == "IDXGISwapChain::Present")
ORDER BY end;
</pre><p class="p">Number of frames with a duration of [X, X + 1) milliseconds.</p><pre xml:space="preserve">
SELECT
CAST((end - start) / 1000000.0 AS INT) AS duration_ms,
count(*)
FROM DX12_API_FPS
WHERE end IS NOT NULL
GROUP BY duration_ms
ORDER BY duration_ms;
</pre><p class="p">Results:</p><pre xml:space="preserve">
duration_ms count(*)
----------- ----------
3 1
4 2
5 7
6 153
7 19
8 116
9 16
10 8
11 2
12 2
13 1
14 4
16 3
17 2
18 1
</pre><p class="p"><strong class="ph b">GPU Context Switch Events Enumeration</strong></p>
<p class="p">GPU context duration is between first BEGIN and a matching END event.</p><pre xml:space="preserve">
SELECT (CASE tag WHEN 8 THEN "BEGIN" WHEN 7 THEN "END" END) AS tag,
globalPid / 0x1000000 % 0x1000000 AS PID,
vmId, seqNo, contextId, timestamp, gpuId FROM FECS_EVENTS
WHERE tag in (7, 8) ORDER BY seqNo LIMIT 10;
</pre><p class="p">Results:</p><pre xml:space="preserve">
tag PID vmId seqNo contextId timestamp gpuId
---------- ---------- ---------- ---------- ---------- ---------- ----------
BEGIN 23371 0 0 1048578 56759171 0
BEGIN 23371 0 1 1048578 56927765 0
BEGIN 23371 0 3 1048578 63799379 0
END 23371 0 4 1048578 63918806 0
BEGIN 19397 0 5 1048577 64014692 0
BEGIN 19397 0 6 1048577 64250369 0
BEGIN 19397 0 8 1048577 1918310004 0
END 19397 0 9 1048577 1918521098 0
BEGIN 19397 0 10 1048577 2024164744 0
BEGIN 19397 0 11 1048577 2024358650 0
</pre><p class="p"><strong class="ph b">Resolve NVTX Category Name</strong></p>
<p class="p">The example demonstrates how to resolve NVTX category name for NVTX marks
and ranges.
</p><pre xml:space="preserve">
WITH
event AS (
SELECT *
FROM NVTX_EVENTS
WHERE eventType IN (34, 59, 60) -- mark, push/pop, start/end
),
category AS (
SELECT
category,
domainId,
text AS categoryName
FROM NVTX_EVENTS
WHERE eventType == 33 -- new category
)
SELECT
start,
end,
globalTid,
eventType,
domainId,
category,
categoryName,
text
FROM event JOIN category USING (category, domainId)
ORDER BY start;
</pre><p class="p">Results:</p><pre xml:space="preserve">
start end globalTid eventType domainId category categoryName text
---------- ---------- --------------- ---------- ---------- ---------- ------------------------- ----------------
18281150 18311960 281534938484214 59 0 1 FirstCategoryUnderDefault Push Pop Range A
18288187 18306674 281534938484214 59 0 2 SecondCategoryUnderDefaul Push Pop Range B
18294247 281534938484214 34 0 1 FirstCategoryUnderDefault Mark A
18300034 281534938484214 34 0 2 SecondCategoryUnderDefaul Mark B
18345546 18372595 281534938484214 60 1 1 FirstCategoryUnderMyDomai Start End Range
18352924 18378342 281534938484214 60 1 2 SecondCategoryUnderMyDoma Start End Range
18359634 281534938484214 34 1 1 FirstCategoryUnderMyDomai Mark A
18365448 281534938484214 34 1 2 SecondCategoryUnderMyDoma Mark B
</pre><p class="p"><strong class="ph b">Rename CUDA Kernels with NVTX</strong></p>
<p class="p">The example demonstrates how to map innermost NVTX push-pop range to a
matching CUDA kernel run.
</p><pre xml:space="preserve">
ALTER TABLE CUPTI_ACTIVITY_KIND_KERNEL ADD COLUMN nvtxRange TEXT;
CREATE INDEX nvtx_start ON NVTX_EVENTS (start);
UPDATE CUPTI_ACTIVITY_KIND_KERNEL SET nvtxRange = (
SELECT NVTX_EVENTS.text
FROM NVTX_EVENTS JOIN CUPTI_ACTIVITY_KIND_RUNTIME ON
NVTX_EVENTS.eventType == 59 AND
NVTX_EVENTS.globalTid == CUPTI_ACTIVITY_KIND_RUNTIME.globalTid AND
NVTX_EVENTS.start <= CUPTI_ACTIVITY_KIND_RUNTIME.start AND
NVTX_EVENTS.end >= CUPTI_ACTIVITY_KIND_RUNTIME.end
WHERE
CUPTI_ACTIVITY_KIND_KERNEL.correlationId == CUPTI_ACTIVITY_KIND_RUNTIME.correlationId
ORDER BY NVTX_EVENTS.start DESC LIMIT 1
);
SELECT start, end, globalPid, StringIds.value as shortName, nvtxRange
FROM CUPTI_ACTIVITY_KIND_KERNEL JOIN StringIds ON shortName == id
ORDER BY start LIMIT 6;
</pre><p class="p">Results:</p><pre xml:space="preserve">
start end globalPid shortName nvtxRange
---------- ---------- ----------------- ------------- ----------
526545376 526676256 72057700439031808 MatrixMulCUDA
526899648 527030368 72057700439031808 MatrixMulCUDA Add
527031648 527162272 72057700439031808 MatrixMulCUDA Add
527163584 527294176 72057700439031808 MatrixMulCUDA My Kernel
527296160 527426592 72057700439031808 MatrixMulCUDA My Range
527428096 527558656 72057700439031808 MatrixMulCUDA
</pre><p class="p"><strong class="ph b">Select CUDA Calls With Backtraces</strong></p><pre xml:space="preserve">
ALTER TABLE CUPTI_ACTIVITY_KIND_RUNTIME ADD COLUMN name TEXT;
UPDATE CUPTI_ACTIVITY_KIND_RUNTIME SET name = (SELECT value FROM StringIds WHERE CUPTI_ACTIVITY_KIND_RUNTIME.nameId = StringIds.id);
ALTER TABLE CUDA_CALLCHAINS ADD COLUMN symbolName TEXT;
UPDATE CUDA_CALLCHAINS SET symbolName = (SELECT value FROM StringIds WHERE symbol = StringIds.id);
SELECT globalTid % 0x1000000 AS TID,
start, end, name, callchainId, stackDepth, symbolName
FROM CUDA_CALLCHAINS JOIN CUPTI_ACTIVITY_KIND_RUNTIME ON callchainId == CUDA_CALLCHAINS.id
ORDER BY callchainId, stackDepth LIMIT 11;
</pre><p class="p">Results:</p><pre xml:space="preserve">
TID start end name callchainId stackDepth symbolName
---------- ---------- ---------- ------------- ----------- ---------- --------------
11928 168976467 169077826 cuMemAlloc_v2 1 0 0x7f13c44f02ab
11928 168976467 169077826 cuMemAlloc_v2 1 1 0x7f13c44f0b8f
11928 168976467 169077826 cuMemAlloc_v2 1 2 0x7f13c44f3719
11928 168976467 169077826 cuMemAlloc_v2 1 3 cuMemAlloc_v2
11928 168976467 169077826 cuMemAlloc_v2 1 4 cudart::driver
11928 168976467 169077826 cuMemAlloc_v2 1 5 cudart::cudaAp
11928 168976467 169077826 cuMemAlloc_v2 1 6 cudaMalloc
11928 168976467 169077826 cuMemAlloc_v2 1 7 cudaError cuda
11928 168976467 169077826 cuMemAlloc_v2 1 8 main
11928 168976467 169077826 cuMemAlloc_v2 1 9 __libc_start_m
11928 168976467 169077826 cuMemAlloc_v2 1 10 _start
</pre><p class="p"><strong class="ph b">SLI Peer-to-Peer Query</strong></p>
<p class="p">The example demonstrates how to query SLI Peer-to-Peer events with resource
size greater than value and within a time range sorted by resource size
descending.
</p><pre xml:space="preserve">
SELECT *
FROM SLI_P2P
WHERE resourceSize < 98304 AND start > 1568063100 AND end < 1579468901
ORDER BY resourceSize DESC;
</pre><p class="p">Results:</p><pre xml:space="preserve">
start end eventClass globalTid gpu frameId transferSkipped srcGpu dstGpu numSubResources resourceSize subResourceIdx smplWidth smplHeight smplDepth bytesPerElement dxgiFormat logSurfaceNames transferInfo isEarlyPushManagedByNvApi useAsyncP2pForResolve transferFuncName regimeName debugName bindType
---------- ---------- ---------- ----------------- ---------- ---------- --------------- ---------- ---------- --------------- ------------ -------------- ---------- ---------- ---------- --------------- ---------- --------------- ------------ ------------------------- --------------------- ---------------- ---------- ---------- ----------
1570351100 1570351101 62 72057698056667136 0 771 0 256 512 1 1048576 0 256 256 1 16 2 3 0 0
1570379300 1570379301 62 72057698056667136 0 771 0 256 512 1 1048576 0 64 64 64 4 31 3 0 0
1572316400 1572316401 62 72057698056667136 0 773 0 256 512 1 1048576 0 256 256 1 16 2 3 0 0
1572345400 1572345401 62 72057698056667136 0 773 0 256 512 1 1048576 0 64 64 64 4 31 3 0 0
1574734300 1574734301 62 72057698056667136 0 775 0 256 512 1 1048576 0 256 256 1 16 2 3 0 0
1574767200 1574767201 62 72057698056667136 0 775 0 256 512 1 1048576 0 64 64 64 4 31 3 0 0
</pre><p class="p"><strong class="ph b">Generic Events</strong></p>
<p class="p">Syscall usage histogram by PID:</p><pre xml:space="preserve">
SELECT json_extract(data, '$.common_pid') AS PID, count(*) AS total
FROM GENERIC_EVENTS WHERE PID IS NOT NULL AND typeId = (
SELECT typeId FROM GENERIC_EVENT_TYPES
WHERE json_extract(data, '$.Name') = "raw_syscalls:sys_enter")
GROUP BY PID
ORDER BY total DESC
LIMIT 10;
</pre><p class="p">Results:</p><pre xml:space="preserve">
PID total
---------- ----------
5551 32811
9680 3988
4328 1477
9564 1246
4376 1204
4377 1167
4357 656
4355 655
4356 640
4354 633
</pre><p class="p"><strong class="ph b">Fetching Generic Events in JSON Format</strong></p>
<p class="p">Text and JSON export modes don’t include generic events. Use the below
queries (without LIMIT clause) to extract JSON lines representation of generic
events, types and sources.
</p><pre xml:space="preserve">
SELECT json_insert('{}',
'$.sourceId', sourceId,
'$.data', json(data)
)
FROM GENERIC_EVENT_SOURCES LIMIT 2;
SELECT json_insert('{}',
'$.typeId', typeId,
'$.sourceId', sourceId,
'$.data', json(data)
)
FROM GENERIC_EVENT_TYPES LIMIT 2;
SELECT json_insert('{}',
'$.rawTimestamp', rawTimestamp,
'$.timestamp', timestamp,
'$.typeId', typeId,
'$.data', json(data)
)
FROM GENERIC_EVENTS LIMIT 2;
</pre><p class="p">Results:</p><pre xml:space="preserve">
json_insert('{}',
'$.sourceId', sourceId,
'$.data', json(data)
)
---------------------------------------------------------------------------------------------------------------
{"sourceId":72057602627862528,"data":{"Name":"FTrace","TimeSource":"ClockMonotonicRaw","SourceGroup":"FTrace"}}
json_insert('{}',
'$.typeId', typeId,
'$.sourceId', sourceId,
'$.data', json(data)
)
--------------------------------------------------------------------------------------------------------------------
{"typeId":72057602627862547,"sourceId":72057602627862528,"data":{"Name":"raw_syscalls:sys_enter","Format":"\"NR %ld (%lx, %lx, %lx, %lx, %lx, %lx)\", REC->id, REC->args[0], REC->args[1], REC->args[2], REC->args[3], REC->args[4], REC->args[5]","Fields":[{"Name":"common_pid","Prefix":"int","Suffix":""},{"Name":"id","Prefix":"long","S
{"typeId":72057602627862670,"sourceId":72057602627862528,"data":{"Name":"irq:irq_handler_entry","Format":"\"irq=%d name=%s\", REC->irq, __get_str(name)","Fields":[{"Name":"common_pid","Prefix":"int","Suffix":""},{"Name":"irq","Prefix":"int","Suffix":""},{"Name":"name","Prefix":"__data_loc char[]","Suffix":""},{"Name":"common_type",
json_insert('{}',
'$.rawTimestamp', rawTimestamp,
'$.timestamp', timestamp,
'$.typeId', typeId,
'$.data', json(data)
)
--------------------------------------------------------------------------------------------------------------------
{"rawTimestamp":1183694330725221,"timestamp":6236683,"typeId":72057602627862670,"data":{"common_pid":"0","irq":"66","name":"327696","common_type":"142","common_flags":"9","common_preempt_count":"0"}}
{"rawTimestamp":1183694333695687,"timestamp":9207149,"typeId":72057602627862670,"data":{"common_pid":"0","irq":"66","name":"327696","common_type":"142","common_flags":"9","common_preempt_count":"0"}}
</pre></div>
</div>
<div class="topic nested1" id="exporter-arrow"><a name="exporter-arrow" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#exporter-arrow" name="exporter-arrow" shape="rect">Arrow Format Description</a></h3>
<div class="body">
<p class="p">
The Arrow type exported file uses the IPC stream format to store
the data in a file. The tables can be read by opening the file as
an arrow stream. For example one can use the
<samp class="ph codeph">open_stream</samp> function from the arrow python
package. For more information on the interfaces that can be used to
read an IPC stream file, please refer to the Apache Arrow
documentation
[<a class="xref" href="https://arrow.apache.org/docs/python/api/ipc.html" target="_blank" shape="rect">1</a>,
<a class="xref" href="https://arrow.apache.org/docs/python/ipc.html" target="_blank" shape="rect">2</a>].
</p>
<p class="p">
The name of each table is included in the schema metadata. Thus,
while reading each table, the user can extract the table title from
the metadata. The table name metadata field has the key
<samp class="ph codeph">table_name</samp>. The titles of all the available tables
can be found in section
<a class="xref" href="index.html#exporter-sqlite-schema" shape="rect">SQLite Schema Reference</a>.
</p>
</div>
</div>
<div class="topic nested1" id="exporter-json-txt"><a name="exporter-json-txt" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#exporter-json-txt" name="exporter-json-txt" shape="rect">JSON and Text Format Description</a></h3>
<div class="body">
<p class="p">JSON and TXT export formats are generated by serializing buffered messages,
each on a new line. First, all collected events are processed. Then strings
are serialized, followed by stdout, stderr streams if any, followed by thread
names.
</p>
<p class="p">Output layout:</p><pre xml:space="preserve">
{Event #1}
{Event #2}
...
{Event #N}
{Strings}
{Streams}
{Threads}
</pre><p class="p">For easier grepping of JSON output, the <samp class="ph codeph">--separate-strings</samp>
switch may be used to force manual splitting of strings, streams and thread
names data.
</p>
<p class="p">Example line split: <samp class="ph codeph">nsys export --export-json --separate-strings
sample.nsys-rep -- -</samp></p><pre xml:space="preserve">
{"type":"String","id":"3720","value":"Process 14944 was launched by the profiler"}
{"type":"String","id":"3721","value":"Profiling has started."}
{"type":"String","id":"3722","value":"Profiler attached to the process."}
{"type":"String","id":"3723","value":"Profiling has stopped."}
{"type":"ThreadName","globalTid":"72057844756653436","nameId":"14","priority":"10"}
{"type":"ThreadName","globalTid":"72057844756657940","nameId":"15","priority":"10"}
{"type":"ThreadName","globalTid":"72057844756654400","nameId":"24","priority":"10"}
</pre><p class="p">Compare with: <samp class="ph codeph">nsys export --export-json sample.nsys-rep -- -</samp></p><pre xml:space="preserve">
{"data":["[Unknown]","[Unknown kernel module]","[Max depth]","[Broken backtraces]",
"[Called from Java]","QnxKernelTrace","mm_","task_submit","class_id","syncpt_id",
"syncpt_thresh","pid","tid","FTrace","[NSys]","[NSys Comms]", "..." ,"Process
14944 was launched by the profiler","Profiling has started.","Profiler attached
to the process.","Profiling has stopped."]}
{"data":[{"nameIdx":"14","priority":"10","globalTid":"72057844756653436"},
{"nameIdx":"15","priority":"10","globalTid":"72057844756657940"},{"nameIdx":"24",
"priority":"10","globalTid":"72057844756654400"}]}
</pre><p class="p">Note, that only last few lines are shown here for clarity and that carriage
returns and indents were added to avoid wrapping documentation.
</p>
</div>
</div>
</div>
<div class="topic nested0" id="report-scripts"><a name="report-scripts" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#report-scripts" name="report-scripts" shape="rect">4. Report Scripts</a></h2>
<div class="body"></div>
<div class="topic nested1" id="existing-report-scripts"><a name="existing-report-scripts" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#existing-report-scripts" name="existing-report-scripts" shape="rect">Report Scripts Shipped With Nsight Systems</a></h3>
<div class="body">
<p class="p">
The <span class="ph">Nsight Systems</span> development team created and
maintains a set of report scripts for some of the commonly requested
reports. These scripts will be updated to adapt to any changes in SQLite
schema or internal data structures.
</p>
<p class="p">
These scripts are located in the <span class="ph">Nsight Systems</span> package in
the Target-<architecture>/reports directory. The following standard
reports are available:
</p>
</div>
<div class="topic nested2" id="apigpusum"><a name="apigpusum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#apigpusum" name="apigpusum" shape="rect">apigpusum[:base] -- CUDA API & GPU Summary (CUDA API + kernels
+ memory ops)</a></h3>
<div class="body">
<p class="p">Arguments</p>
<ul class="ul">
<li class="li"><strong class="ph b">base</strong> - Optional argument, if given, will cause summary to
be over the base name of the kernel, rather than the templated name.
</li>
</ul>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this
kernel
</li>
<li class="li"><strong class="ph b">Instances</strong>: The number of executions of this object
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this kernel
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this kernel
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this kernel
</li>
<li class="li"><strong class="ph b">Category</strong> : The category of the operation
</li>
<li class="li"><strong class="ph b">Operation</strong> : The name of the kernel
</li>
</ul>
<p class="p">
This report provides a summary of CUDA API calls, kernels and memory
operations, and their execution times. Note that the <strong class="ph b">Time(%)</strong>
column is calculated using a summation of the <strong class="ph b">Total Time</strong> column,
and represents that API call's, kernel's, or memory operation's
percent of the execution time of the APIs, kernels and memory
operations listed, and not a percentage of the application wall or CPU
execution time.
</p>
<p class="p">This report combines data from the <samp class="ph codeph">cudaapisum</samp>,
<samp class="ph codeph">gpukernsum</samp>, and <samp class="ph codeph">gpumemsizesum</samp> reports.
It is very similar to profile section of
<samp class="ph codeph">nvprof --dependency-analysis</samp>.
</p>
</div>
</div>
<div class="topic nested2" id="cudaapisum"><a name="cudaapisum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cudaapisum" name="cudaapisum" shape="rect">cudaapisum -- CUDA API Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this
function
</li>
<li class="li"><strong class="ph b">Num Calls</strong> : The number of calls to this function
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this function
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this function
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this function
</li>
<li class="li"><strong class="ph b">Name</strong> : The name of the function
</li>
</ul>
<p class="p">
This report provides a summary of CUDA API functions and their
execution times. Note that the <strong class="ph b">Time(%)</strong> column is calculated
using a summation of the <strong class="ph b">Total Time</strong> column, and represents that
function's percent of the execution time of the functions listed,
and not a percentage of the application wall or CPU execution time.
</p>
</div>
</div>
<div class="topic nested2" id="cudaapitrace"><a name="cudaapitrace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cudaapitrace" name="cudaapitrace" shape="rect">cudaapitrace -- CUDA API Trace</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Start</strong> : Timestamp when API call was made
</li>
<li class="li"><strong class="ph b">Duration</strong> : Length of API calls
</li>
<li class="li"><strong class="ph b">Name</strong> : API function name
</li>
<li class="li"><strong class="ph b">Result</strong> : return value of API call
</li>
<li class="li"><strong class="ph b">CorrID</strong> : Correlation used to map to other CUDA calls
</li>
<li class="li"><strong class="ph b">Pid</strong> : Process ID that made the call
</li>
<li class="li"><strong class="ph b">Tid</strong> : Thread ID that made the call
</li>
<li class="li"><strong class="ph b">T-Pri</strong> : Run priority of call thread
</li>
<li class="li"><strong class="ph b">Thread Name</strong> : Name of thread that called API function
</li>
</ul>
<p class="p">This report provides a trace record of CUDA API function calls and
their execution times.
</p>
</div>
</div>
<div class="topic nested2" id="gpukernsum"><a name="gpukernsum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gpukernsum" name="gpukernsum" shape="rect">gpukernsum[:base] -- CUDA GPU Kernel Summary</a></h3>
<div class="body">
<p class="p">Arguments</p>
<ul class="ul">
<li class="li"><strong class="ph b">base</strong> - Optional argument, if given, will cause summary to
be over the base name of the kernel, rather than the templated name.
</li>
</ul>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this
kernel
</li>
<li class="li"><strong class="ph b">Instances</strong> : The number of calls to this kernel
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this kernel
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this kernel
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this kernel
</li>
<li class="li"><strong class="ph b">Name</strong> : The name of the kernel
</li>
</ul>
<p class="p">This report provides a summary of CUDA kernels and their
execution times. Note that the <strong class="ph b">Time(%)</strong> column is calculated
using a summation of the <strong class="ph b">Total Time</strong> column, and represents that
kernel's percent of the execution time of the kernels listed, and not
a percentage of the application wall or CPU execution time.
</p>
</div>
</div>
<div class="topic nested2" id="gpumemsizesum"><a name="gpumemsizesum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gpumemsizesum" name="gpumemsizesum" shape="rect">gpumemsizesum -- GPU Memory Operations Summary (by Size)</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All memory values given in KiB</p>
<ul class="ul">
<li class="li"><strong class="ph b">Total</strong> : Total number of KiB utilized by this operation
</li>
<li class="li"><strong class="ph b">Operations</strong> : Number of executions of this operation
</li>
<li class="li"><strong class="ph b">Average</strong> : The average memory size of this operation
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest memory size of this operation
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest memory size of this operation
</li>
<li class="li"><strong class="ph b">Name</strong> : The name of the operation
</li>
</ul>
<p class="p">
This report provides a summary of GPU memory operations and the amount
of memory they utilize.
</p>
</div>
</div>
<div class="topic nested2" id="gpumemtimesum"><a name="gpumemtimesum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gpumemtimesum" name="gpumemtimesum" shape="rect">gpumemtimesum -- GPU Memory Operations Summary (by Time)</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All memory values given in KiB</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this
operation
</li>
<li class="li"><strong class="ph b">Operations</strong>: The number of operations of this type
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this operation
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this operation
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this operation
</li>
<li class="li"><strong class="ph b">Operation</strong> : The name of the memory operation
</li>
</ul>
<p class="p">
This report provides a summary of GPU memory operations and
their execution times. Note that the <strong class="ph b">Time(%)</strong> column is
calculated using a summation of the <strong class="ph b">Total Time</strong> column, and
represents that operation's percent of the execution time of the
operations listed, and not a percentage of the application wall or CPU
execution time.
</p>
</div>
</div>
<div class="topic nested2" id="gpusum"><a name="gpusum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gpusum" name="gpusum" shape="rect">gpusum[:base] -- GPU Summary (kernels + memory operations)</a></h3>
<div class="body">
<p class="p">Arguments</p>
<ul class="ul">
<li class="li"><strong class="ph b">base</strong> - Optional argument, if given, will cause summary to
be over the base name of the kernel, rather than the templated name.
</li>
</ul>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this
kernel
</li>
<li class="li"><strong class="ph b">Instances</strong> : The number of executions of this object
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this kernel
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this kernel
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this kernel
</li>
<li class="li"><strong class="ph b">Category</strong> : The category of the operation
</li>
<li class="li"><strong class="ph b">Name</strong> : The name of the kernel
</li>
</ul>
<p class="p">
This report provides a summary of CUDA kernels and memory operations,
and their execution times. Note that the <strong class="ph b">Time(%)</strong> column is
calculated using a summation of the <strong class="ph b">Total Time</strong> column, and
represents that kernel's or memory operation's percent of the
execution time of the kernels and memory operations listed, and not a\
percentage of the application wall or CPU execution time.
</p>
<p class="p">
This report combines data from the <samp class="ph codeph">gpukernsum</samp> and
<samp class="ph codeph">gpumemtimesum</samp> reports. This report is very similar to
output of the command <samp class="ph codeph">nvprof --print-gpu-summary</samp>.
</p>
</div>
</div>
<div class="topic nested2" id="gputrace"><a name="gputrace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gputrace" name="gputrace" shape="rect">gputrace -- CUDA GPU Trace</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output:</p>
<ul class="ul">
<li class="li"><strong class="ph b">Start</strong> : Start time of trace event in seconds
</li>
<li class="li"><strong class="ph b">Duration</strong> : Length of event in nanoseconds
</li>
<li class="li"><strong class="ph b">CorrId</strong> : Correlation ID
</li>
<li class="li"><strong class="ph b">GrdX, GrdY, GrdZ</strong> : Grid values
</li>
<li class="li"><strong class="ph b">BlkX, BlkY, BlkZ</strong> : Block values
</li>
<li class="li"><strong class="ph b">Reg/Trd</strong> : Registers per thread
</li>
<li class="li"><strong class="ph b">StcSMem</strong> : Size of Static Shared Memory
</li>
<li class="li"><strong class="ph b">DymSMem</strong> : Size of Dynamic Shared Memory
</li>
<li class="li"><strong class="ph b">Bytes</strong> : Size of memory operation
</li>
<li class="li"><strong class="ph b">Thru</strong> : Throughput in MB per Second
</li>
<li class="li"><strong class="ph b">SrcMemKd</strong> : Memcpy source memory kind or memset memory kind
</li>
<li class="li"><strong class="ph b">DstMemKd</strong> : Memcpy destination memory kind
</li>
<li class="li"><strong class="ph b">Device</strong> : GPU device name and ID
</li>
<li class="li"><strong class="ph b">Ctx</strong> : Context ID
</li>
<li class="li"><strong class="ph b">Strm</strong> : Stream ID
</li>
<li class="li"><strong class="ph b">Name</strong> : Trace event name
</li>
</ul>
<p class="p">
This report displays a trace of CUDA kernels and memory operations.
Items are sorted by start time.
</p>
</div>
</div>
<div class="topic nested2" id="nvtxppsum"><a name="nvtxppsum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvtxppsum" name="nvtxppsum" shape="rect">nvtxppsum -- NVTX Push/Pop Range Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all instances of this range
</li>
<li class="li"><strong class="ph b">Instances</strong> : The number of instances of this range
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this range
</li>
<li class="li"><strong class="ph b"> Minimum</strong> : The smallest execution time of this range
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this range
</li>
<li class="li"><strong class="ph b">Range</strong> : The name of the range
</li>
</ul>
<p class="p">
This report provides a summary of NV Tools Extensions Push/Pop Ranges
and their execution times. Note that the <strong class="ph b">Time(%)</strong> column is
calculated using a summation of the <strong class="ph b">Total Time</strong> column, and
represents that range's percent of the execution time of the ranges
listed, and not a percentage of the application wall or CPU execution
time.
</p>
</div>
</div>
<div class="topic nested2" id="openmpevtsum"><a name="openmpevtsum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#openmpevtsum" name="openmpevtsum" shape="rect">openmpevtsum -- OpenMP Event Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of event type
</li>
<li class="li"><strong class="ph b">Count</strong> : The number of event type
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of event type
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of event type
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of event type
</li>
<li class="li"><strong class="ph b">Name</strong> : The name of the event
</li>
</ul>
<p class="p">
This report provides a summary of OpenMP events and their execution
times. Note that the <strong class="ph b">Time(%)</strong> column is calculated using a
summation of the <strong class="ph b">Total Time</strong> column, and represents that event
type's percent of the execution time of the events listed, and not a
percentage of the application wall or CPU execution time.
</p>
</div>
</div>
<div class="topic nested2" id="osrtsum"><a name="osrtsum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#osrtsum" name="osrtsum" shape="rect">osrtsum -- OS Runtime Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this function
</li>
<li class="li"><strong class="ph b">Num Calls</strong> : The number of calls to this function
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this function
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this function
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this function
</li>
<li class="li"><strong class="ph b">Name</strong> : The name of the function
</li>
</ul>
<p class="p">
This report provides a summary of operating system functions and their
execution times. Note that the <strong class="ph b">Time(%)</strong> column is calculated
using a summation of the <strong class="ph b">Total Time</strong> column, and represents that
function's percent of the execution time of the functions listed, and
not a percentage of the application wall or CPU execution time.
</p>
</div>
</div>
<div class="topic nested2" id="vulkanmarkerssum"><a name="vulkanmarkerssum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#vulkanmarkerssum" name="vulkanmarkerssum" shape="rect">vulkanmarkerssum -- Vulkan Range Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this function
</li>
<li class="li"><strong class="ph b">Instances</strong> : The number of instances of this range
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this function
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this function
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this function
</li>
<li class="li"><strong class="ph b">StdDev</strong> : The standard deviation of execution time of this range
</li>
<li class="li"><strong class="ph b">Range</strong> : The name of the range
</li>
</ul>
<p class="p">
This report provides a summary of Vulkan debug markers on the CPU,
and their execution times. Note that the <strong class="ph b">Time(%)</strong> column is calculated
using a summation of the <strong class="ph b">Total Time</strong> column, and represents that
function's percent of the execution time of the functions listed, and
not a percentage of the application wall or CPU execution time.
</p>
</div>
</div>
<div class="topic nested2" id="pixsum"><a name="pixsum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#pixsum" name="pixsum" shape="rect">pixsum -- PIX Range Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this function
</li>
<li class="li"><strong class="ph b">Instances</strong> : The number of instances of this range
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this function
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this function
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this function
</li>
<li class="li"><strong class="ph b">StdDev</strong> : The standard deviation of execution time of this range
</li>
<li class="li"><strong class="ph b">Range</strong> : The name of the range
</li>
</ul>
<p class="p">
This report provides a summary of PIX CPU debug markers,
and their execution times. Note that the <strong class="ph b">Time(%)</strong> column is calculated
using a summation of the <strong class="ph b">Total Time</strong> column, and represents that
function's percent of the execution time of the functions listed, and
not a percentage of the application wall or CPU execution time.
</p>
</div>
</div>
<div class="topic nested2" id="khrdebugsum"><a name="khrdebugsum" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#khrdebugsum" name="khrdebugsum" shape="rect">khrdebugsum -- OpenGL KHR_debug Range Summary</a></h3>
<div class="body">
<p class="p">Arguments - None</p>
<p class="p">Output: All time values given in nanoseconds</p>
<ul class="ul">
<li class="li"><strong class="ph b">Time(%)</strong> : Percentage of <strong class="ph b">Total Time</strong></li>
<li class="li"><strong class="ph b">Total Time</strong> : The total time used by all executions of this function
</li>
<li class="li"><strong class="ph b">Instances</strong> : The number of instances of this range
</li>
<li class="li"><strong class="ph b">Average</strong> : The average execution time of this function
</li>
<li class="li"><strong class="ph b">Minimum</strong> : The smallest execution time of this function
</li>
<li class="li"><strong class="ph b">Maximum</strong> : The largest execution time of this function
</li>
<li class="li"><strong class="ph b">StdDev</strong> : The standard deviation of execution time of this range
</li>
<li class="li"><strong class="ph b">Range</strong> : The name of the range
</li>
</ul>
<p class="p">
This report provides a summary of OpenGL KHR_debug CPU PUSH/POP debug Ranges,
and their execution times. Note that the <strong class="ph b">Time(%)</strong> column is calculated
using a summation of the <strong class="ph b">Total Time</strong> column, and represents that
function's percent of the execution time of the functions listed, and
not a percentage of the application wall or CPU execution time.
</p>
</div>
</div>
</div>
<div class="topic nested1" id="existing-formatters"><a name="existing-formatters" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#existing-formatters" name="existing-formatters" shape="rect">Report Formatters Shipped With Nsight Systems</a></h3>
<div class="body">
<p class="p">The following formats are available in <span class="ph">Nsight Systems</span></p>
</div>
<div class="topic nested2" id="column-format"><a name="column-format" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#column-format" name="column-format" shape="rect">Column</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">column[:nohdr][:nolimit][:nofmt][:<width>[:<width>]...]
</samp></p>
<p class="p">Arguments</p>
<ul class="ul">
<li class="li">nohdr : Do not display the header</li>
<li class="li">nolimit : Remove 100 character limit from auto-width columns
Note: This can result in extremely wide columns.
</li>
<li class="li">nofmt : Do not reformat numbers.</li>
<li class="li"><width>... : Define the explicit width of one or more
columns. If the value "." is given, the column will auto-adjust.
If a width of 0 is given, the column will not be displayed.
</li>
</ul>
<p class="p">
The column formatter presents data in vertical text columns. It is
primarily designed to be a human-readable format for displaying data
on a console display.
</p>
<p class="p">
Text data will be left-justified, while numeric data will be
right-justified. If the data overflows the available column
width, it will be marked with a "…" character, to indicate
the data values were clipped. Clipping always occurs on the
right-hand side, even for numeric data.
</p>
<p class="p">
Numbers will be reformatted to make easier to visually scan and
understand. This includes adding thousands-separators. This process
requires that the string representation of the number is converted
into its native representation (integer or floating point) and then
converted back into a string representation to print. This conversion
process attempts to preserve elements of number presentation, such as
the number of decimal places, or the use of scientific notation, but
the conversion is not always perfect (the number should always be the
same, but the presentation may not be). To disable the reformatting
process, use the argument <samp class="ph codeph">nofmt</samp>.
</p>
<p class="p">
If no explicit width is given, the columns auto-adjust their
width based off the header size and the first 100 lines of data.
This auto-adjustment is limited to a maximum width of 100
characters. To allow larger auto-width columns, pass the initial
argument <samp class="ph codeph">nolimit</samp>. If the first 100 lines do not
calculate the correct column width, it is suggested that explicit
column widths be provided.
</p>
</div>
</div>
<div class="topic nested2" id="table-formatter"><a name="table-formatter" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#table-formatter" name="table-formatter" shape="rect">Table</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">table[:nohdr][:nolimit][:nofmt][:<width>[:<width>]...]
</samp></p>
<p class="p">Arguments</p>
<ul class="ul">
<li class="li">nohdr : Do not display the header</li>
<li class="li">nolimit : Remove 100 character limit from auto-width columns
Note: This can result in extremely wide columns.
</li>
<li class="li">nofmt : Do not reformat numbers.</li>
<li class="li"><width>... : Define the explicit width of one or more
columns. If the value "." is given, the column will auto-adjust.
If a width of 0 is given, the column will not be displayed.
</li>
</ul>
<p class="p">
The table formatter presents data in vertical text columns inside
text boxes. Other than the lines between columns, it is identical to
the <strong class="ph b">column</strong> formatter.
</p>
</div>
</div>
<div class="topic nested2" id="csv-formatter"><a name="csv-formatter" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#csv-formatter" name="csv-formatter" shape="rect">CSV</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">csv[:nohdr]</samp></p>
<p class="p">Arguments</p>
<ul class="ul">
<li class="li">nohdr : Do not display the header</li>
</ul>
<p class="p">
The csv formatter outputs data as comma-separated values. This
format is commonly used for import into other data applications,
such as spread-sheets and databases.
</p>
<p class="p">
There are many different standards for CSV files. Most
differences are in how escapes are handled, meaning data values that
contain a comma or space.
</p>
<p class="p">This CSV formatter will escape commas by surrounding the whole
value in double-quotes.
</p>
</div>
</div>
<div class="topic nested2" id="tsv-formatter"><a name="tsv-formatter" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#tsv-formatter" name="tsv-formatter" shape="rect">TSV</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">tsv[:nohdr][:esc]</samp></p>
<p class="p">Arguments</p>
<ul class="ul">
<li class="li">nohdr : Do not display the header</li>
<li class="li">esc : escape tab characters, rather than removing them</li>
</ul>
<p class="p">
The tsv formatter outputs data as tab-separated values. This format
is sometimes used for import into other data applications, such as
spreadsheets and databases.
</p>
<p class="p">
Most TSV import/export systems disallow the tab character in data
values. The formatter will normally replace any tab characters with
a single space. If the <samp class="ph codeph">esc</samp> argument has been
provided, any tab characters will be replaced with the literal
characters "\t".
</p>
</div>
</div>
<div class="topic nested2" id="json-formatter"><a name="json-formatter" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#json-formatter" name="json-formatter" shape="rect">JSON</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">json</samp></p>
<p class="p">Arguments: no arguments</p>
<p class="p">
The json formatter outputs data as an array of JSON objects. Each
object represents one line of data, and uses the column names as
field labels. All objects have the same fields. The formatter
attempts to recognize numeric values, as well as JSON keywords, and
converts them. Empty values are passed as an empty string (and not
nil, or as a missing field).
</p>
<p class="p">
At this time the formatter does not escape quotes, so if a data
value includes double-quotation marks, it will corrupt the JSON file.
</p>
</div>
</div>
<div class="topic nested2" id="hdoc-formatter"><a name="hdoc-formatter" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#hdoc-formatter" name="hdoc-formatter" shape="rect">HDoc</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">hdoc[:title=<title>][:css=<URL>]</samp></p>
<p class="p">Arguments:</p>
<ul class="ul">
<li class="li">title : string for HTML document title</li>
<li class="li">css : URL of CSS document to include</li>
</ul>
<p class="p">
The hdoc formatter generates a complete, verifiable (mostly),
standalone HTML document. It is designed to be opened in a web
browser, or included in a larger document via an <iframe>.
</p>
</div>
</div>
<div class="topic nested2" id="htable-formatter"><a name="htable-formatter" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#htable-formatter" name="htable-formatter" shape="rect">HTable</a></h3>
<div class="body">
<p class="p">Usage:</p>
<p class="p"><samp class="ph codeph">htable</samp></p>
<p class="p">Arguments: no arguments</p>
<p class="p">
The htable formatter outputs a raw HTML <table> without any of
the surrounding HTML document. It is designed to be included into
a larger HTML document. Although most web browsers will open and
display the document, it is better to use the <strong class="ph b">hdoc</strong> format for
this type of use.
</p>
</div>
</div>
</div>
</div>
<div class="topic nested0" id="migrate-nvprof"><a name="migrate-nvprof" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#migrate-nvprof" name="migrate-nvprof" shape="rect">5. Migrating from NVIDIA nvprof</a></h2>
<div class="body"></div>
<div class="topic nested1" id="using-nsys-nvprof"><a name="using-nsys-nvprof" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#using-nsys-nvprof" name="using-nsys-nvprof" shape="rect">Using the Nsight Systems CLI nvprof Command</a></h3>
<div class="body">
<p class="p">The <samp class="ph codeph">nvprof</samp> command of the <span class="ph">Nsight Systems</span>
CLI is intended to help former nvprof users transition to
<span class="ph">nsys</span>. Many nvprof switches are not supported by
<span class="ph">nsys</span>, often because they are now part of NVIDIA
Nsight Compute.
</p>
<p class="p">The full nvprof documentation can be found at
<a class="xref" href="https://docs.nvidia.com/cuda/profiler-users-guide" target="_blank" shape="rect">https://docs.nvidia.com/cuda/profiler-users-guide</a>.
</p>
<p class="p">The nvprof transition guide for Nsight Compute can be found at
<a class="xref" href="https://docs.nvidia.com/nsight-compute/NsightComputeCli/index.html#nvprof-guide" target="_blank" shape="rect">
https://docs.nvidia.com/nsight-compute/NsightComputeCli/index.html#nvprof-guide</a>.
</p>
<p class="p">Any nvprof switch not listed below is not supported by the
<samp class="ph codeph"><span class="ph">nsys</span> nvprof</samp> command. No additional
<span class="ph">nsys</span> functionality is available through this
command. New features will not be added to this command in the future.
</p>
</div>
</div>
<div class="topic nested1" id="nvprof-switches"><a name="nvprof-switches" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvprof-switches" name="nvprof-switches" shape="rect">CLI nvprof Command Switch Options</a></h3>
<div class="body">
<p class="p">After choosing the <samp class="ph codeph">nvprof</samp> command switch, the following
options are available. When you are ready to move to using
<span class="ph">Nsight Systems</span> CLI directly, see
<a class="xref" href="index.html#cli-profiling" shape="rect">Command Line Options</a>
documentation for the <span class="ph">nsys</span> switch(es) given below.
Note that the <span class="ph">nsys</span> implementation and output may
vary from nvprof.
</p>
<p class="p"><strong class="ph b">Usage</strong>.
</p><pre xml:space="preserve"><span class="ph">nsys</span> nvprof [options]</pre><div class="p">
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e9579" class="stentry" width="13.333333333333334%" rowspan="1" colspan="1">Switch</th>
<th valign="bottom" align="left" id="d54e9582" class="stentry" width="13.333333333333334%" rowspan="1" colspan="1">Parameters (Default in Bold)</th>
<th valign="bottom" align="left" id="d54e9585" class="stentry" width="20%" rowspan="1" colspan="1"><span class="ph">nsys</span> switch
</th>
<th valign="bottom" align="left" id="d54e9590" class="stentry" width="53.333333333333336%" rowspan="1" colspan="1">Switch Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">--annotate-mpi</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"><strong class="ph b">off</strong>, openmpi, mpich
</td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--trace=mpi AND --mpi-impl</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Automatically annotate MPI calls with NVTX markers. Specify
the MPI implementation installed on your machine. Only OpenMPI and
MPICH implementations are supported.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">--cpu-thread-tracing</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1">on, <strong class="ph b">off</strong></td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--trace=osrt</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Collect information about CPU thread API activity.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">--profile-api-trace</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1">none, runtime, driver,<strong class="ph b">all</strong></td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--trace=cuda</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Turn on/off CUDA runtime and driver API tracing. For
<span class="ph">Nsight Systems</span> there is no separate CUDA runtime and
CUDA driver trace, so selecting <samp class="ph codeph">runtime</samp> or
<samp class="ph codeph">driver</samp> is equivalent to selecting <samp class="ph codeph">all
</samp>.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">--profile-from-start</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"><strong class="ph b">on</strong>, off
</td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">if off use --capture-range=cudaProfilerApi</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Enable/disable profiling from the start of the application.
If disabled, the application can use {cu,cuda}Profiler{Start,Stop}
to turn on/off profiling.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">-t,--timeout</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"><nanoseconds> default=<strong class="ph b">0</strong></td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--duration=seconds</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">If greater than 0, stop the collection and kill the launched
application after timeout seconds. nvprof started counting when the
CUDA driver is initialized. <span class="ph">nsys</span> starts counting
immediately.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">--cpu-profiling</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1">on, <strong class="ph b">off</strong></td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--sampling=cpu</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Turn on/off CPU profiling</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">--openacc-profiling</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"><strong class="ph b">on</strong>, off
</td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--trace=openacc to turn on</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Enable/disable recording information from the OpenACC
profiling interface. Note: OpenACC profiling interface depends on the
presence of the OpenACC runtime. For supported runtimes, see <strong class="ph b">CUDA
Trace</strong> section of documentation
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">-o, --export-profile</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"><filename></td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--output={filename} and/or --export=sqlite</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Export named file to be imported or opened in the
<span class="ph">Nsight Systems</span> GUI. %q{ENV_VAR} in string will be
replaced with the set value of the environment variable. If not set
this is an error. %h in the string is replaced with the system
hostname. %% in the string is replaced with %. %p in the string is not
supported currently. Any other character following % is illegal. The
default is report1, with the number incrementing to avoid overwriting
files, in users working directory.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">-f, --force-overwrite</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--force-overwrite=true</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Force overwriting all output files with same name.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">-h, --help</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Print <span class="ph">Nsight Systems</span> CLI help
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9579" class="stentry" rowspan="1" colspan="1">-V, --version</td>
<td valign="top" headers="d54e9582" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9585" class="stentry" rowspan="1" colspan="1">--version</td>
<td valign="top" headers="d54e9590" class="stentry" rowspan="1" colspan="1">Print <span class="ph">Nsight Systems</span> CLI version information
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="topic nested1" id="nvprof-next-steps"><a name="nvprof-next-steps" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvprof-next-steps" name="nvprof-next-steps" shape="rect">Next Steps</a></h3>
<div class="body">
<p class="p">NVIDIA Visual Profiler (NVVP) and NVIDIA nvprof are deprecated. New GPUs
and features will not be supported by those tools. We encourage you to
make the move to <span class="ph">Nsight Systems</span> now. For additional
information, suggestions, and rationale, see the blog series in
<a class="xref" href="../additional-info/index.html#other-resources" shape="rect">Other Resources</a>.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="docker-profiling"><a name="docker-profiling" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#docker-profiling" name="docker-profiling" shape="rect">6. Profiling in a Docker on Linux Devices</a></h2>
<div class="body">
<p class="p"><strong class="ph b">Collecting data within a Docker</strong></p>
<p class="p">
The following information assumes the reader is knowledgeable regarding
Docker containers. For further information about Docker use in general, see
the <a class="xref" href="https://docs.docker.com" target="_blank" shape="rect">
Docker documentation</a>.
</p>
<p class="p"><strong class="ph b">Enable Docker Collection</strong></p>
<p class="p">When starting the Docker to perform a <span class="ph">Nsight Systems</span>
collection, additional steps are required to enable the
<samp class="ph codeph">perf_event_open</samp> system call. This is required in order to
utilize the Linux kernel’s perf subsystem which provides sampling
information to <span class="ph">Nsight Systems</span>.
</p>
<p class="p">There are three ways to enable the <samp class="ph codeph">perf_event_open</samp> syscall.
You can enable it by using the <samp class="ph codeph">--privileged=true</samp> switch,
adding <samp class="ph codeph">--cap-add=SYS_ADMIN</samp> switch to your docker run
command file, or you can enable it by setting the seccomp security profile
if your system meets the requirements.
</p>
<p class="p">Secure computing mode (seccomp) is a feature of the Linux kernel that can be
used to restrict an application's access. This feature is available only if
the kernel is enabled with seccomp support. To check for seccomp support:
</p><pre xml:space="preserve">$ grep CONFIG_SECCOMP= /boot/config-$(uname -r)</pre><p class="p">The official Docker documentation says:</p><pre xml:space="preserve">"Seccomp profiles require seccomp 2.2.1 which is not available on Ubuntu 14.04, Debian Wheezy, or Debian Jessie. To use seccomp on these distributions, you must download the latest static Linux binaries (rather than packages)." </pre><div class="p">
Download the default seccomp profile file, default.json, relevant to your
Docker version. If <samp class="ph codeph">perf_event_open</samp> is already listed in the
file as guarded by <samp class="ph codeph">CAP_SYS_ADMIN</samp>, then remove the
<samp class="ph codeph">perf_event_open</samp> line. Add the following lines under
"syscalls" and save the resulting file as
<samp class="ph codeph">default_with_perf.json</samp>.
<pre xml:space="preserve">{
"name": "perf_event_open",
"action": "SCMP_ACT_ALLOW",
"args": []
},</pre></div>
<p class="p">
Then you will be able to use the following switch when starting the
Docker to apply the new seccomp profile.
</p><pre xml:space="preserve">--security-opt seccomp=default_with_perf.json</pre><p class="p"><strong class="ph b">Launch Docker Collection</strong></p>
<p class="p">Here is an example command that has been used to launch a Docker for testing
with <span class="ph">Nsight Systems</span>:
</p><pre xml:space="preserve">sudo nvidia-docker run --network=host --security-opt seccomp=default_with_perf.json --rm -ti caffe-demo2 bash</pre><p class="p">There is a known issue where Docker collections terminate prematurely with
older versions of the driver and the CUDA Toolkit. If collection is ending
unexpectedly, please update to the latest versions.
</p>
<p class="p">After the Docker has been started, use the <span class="ph">Nsight Systems</span> CLI
to launch a collection within the Docker. The resulting .qdstrm file can be
imported into the <span class="ph">Nsight Systems</span> host like any other CLI
result.
</p>
</div>
<div class="topic nested1" id="gui_vnc_container"><a name="gui_vnc_container" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gui_vnc_container" name="gui_vnc_container" shape="rect">GUI VNC container</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> provides a build script to build a self
isolated Docker container with the <span class="ph">Nsight Systems</span> GUI and VNC
server.
</p>
<p class="p">You can find the build.py script in the <samp class="ph codeph">host-linux-x64/Scripts/VncContainer</samp>
directory (or similar on other architectures) under your <span class="ph">Nsight Systems</span> installation directory.
You will need to have <a class="xref" href="https://www.docker.com" target="_blank" shape="rect">Docker</a>,
and Python 3.5 or later.
</p>
<p class="p"><strong class="ph b">Available Parameters</strong></p>
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e9991" class="stentry" width="12.5%" rowspan="1" colspan="1">Short Name</th>
<th valign="bottom" align="left" id="d54e9994" class="stentry" width="25%" rowspan="1" colspan="1">Full Name</th>
<th valign="bottom" align="left" id="d54e9997" class="stentry" width="62.5%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--vnc-password</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) Default password for VNC access (at least 6
characters). If it is specified and empty - will be asked during the
build. Can be changed when running a container.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1">-aba</td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--additional-build-arguments</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) Additional arguments, which will be passed to the
"docker build" command.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1">-hd</td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--nsys-host-directory</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) The directory with <span class="ph">Nsight Systems</span>
host binaries (with GUI).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1">-td</td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--nsys-target-directory</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional, repeatable) The directory with
<span class="ph">Nsight Systems</span> target binaries (can be specified multiple
times).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--tigervnc</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) Use TigerVNC instead of x11vnc.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--http</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) Install noVNC in the Docker container for HTTP
access.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--rdp</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) Install xRDP in the Docker for RDP access.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--geometry</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) Default VNC server resolution in the format
WidthxHeight (default 1920x1080).
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e9991" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e9994" class="stentry" rowspan="1" colspan="1">--build-directory</td>
<td valign="top" headers="d54e9997" class="stentry" rowspan="1" colspan="1">(optional) The directory to save temporary files (with the
write access for the current user). By default, script or tmp directory
will be used.
</td>
</tr>
</table>
<p class="p"><strong class="ph b">Ports</strong></p>
<p class="p">These ports can be published from the container to provide access
to the Docker container:
</p>
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e10123" class="stentry" width="30%" rowspan="1" colspan="1">Port</th>
<th valign="bottom" align="left" id="d54e10126" class="stentry" width="30%" rowspan="1" colspan="1">Purpose</th>
<th valign="bottom" align="left" id="d54e10129" class="stentry" width="40%" rowspan="1" colspan="1">Condition</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10123" class="stentry" rowspan="1" colspan="1">TCP 5900</td>
<td valign="top" headers="d54e10126" class="stentry" rowspan="1" colspan="1">Port for VNC access</td>
<td valign="top" headers="d54e10129" class="stentry" rowspan="1" colspan="1"> </td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10123" class="stentry" rowspan="1" colspan="1">TCP 80 (optional)</td>
<td valign="top" headers="d54e10126" class="stentry" rowspan="1" colspan="1">Port for HTTP access to noVNC server</td>
<td valign="top" headers="d54e10129" class="stentry" rowspan="1" colspan="1">Container is build with "--http" parameter</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10123" class="stentry" rowspan="1" colspan="1">TCP 3389 (optional)</td>
<td valign="top" headers="d54e10126" class="stentry" rowspan="1" colspan="1">Port for RDP access</td>
<td valign="top" headers="d54e10129" class="stentry" rowspan="1" colspan="1">Container is build with "--rdp" parameter</td>
</tr>
</table>
<p class="p"><strong class="ph b">Volumes</strong></p>
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e10177" class="stentry" width="12.5%" rowspan="1" colspan="1">Docker folder</th>
<th valign="bottom" align="left" id="d54e10180" class="stentry" width="25%" rowspan="1" colspan="1">Purpose</th>
<th valign="bottom" align="left" id="d54e10183" class="stentry" width="62.5%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10177" class="stentry" rowspan="1" colspan="1">/mnt/host</td>
<td valign="top" headers="d54e10180" class="stentry" rowspan="1" colspan="1">Root path for shared folders</td>
<td valign="top" headers="d54e10183" class="stentry" rowspan="1" colspan="1">Folder owned by the Docker user (inner content can be
accessed from <span class="ph">Nsight Systems</span> GUI)
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10177" class="stentry" rowspan="1" colspan="1">/mnt/host/Projects</td>
<td valign="top" headers="d54e10180" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e10183" class="stentry" rowspan="1" colspan="1">Folder with projects and reports, created by
<span class="ph">Nsight Systems</span> UI in container
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10177" class="stentry" rowspan="1" colspan="1">/mnt/host/logs</td>
<td valign="top" headers="d54e10180" class="stentry" rowspan="1" colspan="1">Folder with inner services logs</td>
<td valign="top" headers="d54e10183" class="stentry" rowspan="1" colspan="1">May be useful to send reports to developers</td>
</tr>
</table>
<p class="p"><strong class="ph b">Environment variables</strong></p>
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e10237" class="stentry" width="50%" rowspan="1" colspan="1">Variable Name</th>
<th valign="bottom" align="left" id="d54e10240" class="stentry" width="50%" rowspan="1" colspan="1">Purpose</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10237" class="stentry" rowspan="1" colspan="1">VNC_PASSWORD</td>
<td valign="top" headers="d54e10240" class="stentry" rowspan="1" colspan="1">Password for VNC access (at least 6 characters)</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10237" class="stentry" rowspan="1" colspan="1">NSYS_WINDOW_WIDTH</td>
<td valign="top" headers="d54e10240" class="stentry" rowspan="1" colspan="1">Width of VNC server display (in pixels)</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e10237" class="stentry" rowspan="1" colspan="1">NSYS_WINDOW_HEIGHT</td>
<td valign="top" headers="d54e10240" class="stentry" rowspan="1" colspan="1">Height of VNC server display (in pixels)</td>
</tr>
</table>
<p class="p"><strong class="ph b">Examples</strong></p>
<p class="p">With VNC access on port 5916:</p><pre xml:space="preserve">sudo docker run -p 5916:5900/tcp -ti nsys-ui-vnc:1.0</pre><p class="p">With VNC access on port 5916 and HTTP access on port 8080:</p><pre xml:space="preserve">sudo docker run -p 5916:5900/tcp -p 8080:80/tcp -ti nsys-ui-vnc:1.0</pre><p class="p">With VNC access on port 5916, HTTP access on port 8080 and RDP access on
port 33890:
</p><pre xml:space="preserve">sudo docker run -p 5916:5900/tcp -p 8080:80/tcp -p 33890:3389/tcp -ti nsys-ui-vnc:1.0</pre><p class="p">With VNC access on port 5916, shared "HOME" folder from the host, VNC server
resolution 3840x2160, and custom VNC password
</p><pre xml:space="preserve">sudo docker run -p 5916:5900/tcp -v $HOME:/mnt/host/home -e NSYS_WINDOW_WIDTH=3840 -e NSYS_WINDOW_HEIGHT=2160 -e VNC_PASSWORD=7654321 -ti nsys-ui-vnc:1.0</pre><p class="p">With VNC access on port 5916, shared "HOME" folder from the host, and the
projects folder to access reports created by <span class="ph">Nsight Systems</span>
GUI in container
</p><pre xml:space="preserve">sudo docker run -p 5916:5900/tcp -v $HOME:/mnt/host/home -v /opt/NsysProjects:/mnt/host/Projects -ti nsys-ui-vnc:1.0</pre></div>
</div>
</div>
<div class="topic nested0" id="direct3d"><a name="direct3d" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#direct3d" name="direct3d" shape="rect">7. Direct3D Trace</a></h2>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> has the ability to trace both the Direct3D 11 API
and the Direct3D 12 API on Windows targets.
</p>
</div>
<div class="topic nested1" id="d3d11-trace"><a name="d3d11-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#d3d11-trace" name="d3d11-trace" shape="rect">7.1. D3D11 API trace</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> can capture information about Direct3D 11
API calls made by the profiled process. This includes capturing the
execution time of D3D11 API functions, performance markers, and frame
durations.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/DX11_API_Row.png" height="-1" width="-1" alt="D3D11 API Trace"></img></p>
</blockquote>
<p class="p"><strong class="ph b">SLI Trace</strong></p>
<p class="p">Trace SLI queries and peer-to-peer transfers of D3D11
applications. Requires SLI hardware and an active SLI profile definition
in the NVIDIA console.
</p>
</div>
</div>
<div class="topic nested1" id="d3d12-trace"><a name="d3d12-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#d3d12-trace" name="d3d12-trace" shape="rect">7.2. D3D12 API Trace</a></h3>
<div class="body">
<p class="p">Direct3D 12 is a low-overhead 3D graphics and compute API for Microsoft
Windows. Information about Direct3D 12 can be found at the <a class="xref" href="https://docs.microsoft.com/en-us/windows/desktop/direct3d12/directx-12-programming-guide" target="_blank" shape="rect">Direct3D 12 Programming Guide</a>.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can capture information about Direct3D 12
usage by the profiled process. This includes capturing the execution time
of D3D12 API functions, corresponding workloads executed on the GPU,
performance markers, and frame durations.
</p>
<p class="p"><img class="image" src="graphics/dx12_overview.png" height="-1" width="-1" alt="D3D12 overview picture"></img></p>
<p class="p">The Command List Creation row displays time periods when command lists
were being created. This enables developers to improve their application’s
multi-threaded command list creation. Command list creation time period is
measured between the call to <samp class="ph codeph">ID3D12GraphicsCommandList::Reset</samp>
and the call to <samp class="ph codeph">ID3D12GraphicsCommandList::Close</samp>.
</p>
<p class="p"><img class="image" src="graphics/dx12_commandlist_creation.png" height="-1" width="-1" alt="D3D12 commandlist creation"></img></p>
<p class="p">The GPU row shows a compressed view of the D3D12 queue activity, color-coded
by the queue type. Expanding it will show the individual queues and their corresponding API calls.
</p><br clear="none"></br><img class="image" src="graphics/dx12_gpu_aggregated.png" alt="D3D12 GPU aggregated"></img><br clear="none"></br><p class="p">A Command Queue row is displayed for each D3D12 command queue created by
the profiled application. The row’s header displays the queue's running
index and its type (Direct, Compute, Copy).
</p>
<p class="p"><img class="image" src="graphics/dx12_commandqueues.png" height="-1" width="-1" alt="D3D12 command queue overview"></img></p>
<p class="p">The DX12 API Memory Ops row displays all API memory operations and
non-persistent resource mappings. Event ranges in the row are color-coded
by the heap type they belong to (Default, Readback, Upload, Custom, or
CPU-Visible VRAM), with usage warnings highlighted in yellow. A breakdown
of the operations can be found by expanding the row to show rows for each
individual heap type.
</p>
<p class="p">The following operations and warnings are shown:</p>
<ul class="ul">
<li class="li">
<p class="p">Calls to <samp class="ph codeph">ID3D12Device::CreateCommittedResource</samp>,
<samp class="ph codeph">ID3D12Device4::CreateCommittedResource1</samp>, and
<samp class="ph codeph">ID3D12Device8::CreateCommittedResource2</samp></p>
<ul class="ul">
<li class="li">
<p class="p">A warning will be reported if
<samp class="ph codeph">D3D12_HEAP_FLAG_CREATE_NOT_ZEROED</samp> is not set in the
method's <samp class="ph codeph">HeapFlags</samp> parameter
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Calls to <samp class="ph codeph">ID3D12Device::CreateHeap</samp> and
<samp class="ph codeph">ID3D12Device4::CreateHeap1</samp></p>
<ul class="ul">
<li class="li">
<p class="p">A warning will be reported if
<samp class="ph codeph">D3D12_HEAP_FLAG_CREATE_NOT_ZEROED</samp> is not set in the
<samp class="ph codeph">Flags</samp> field of the method's <samp class="ph codeph">pDesc</samp>
parameter
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Calls to <samp class="ph codeph">ID3D12Resource::ReadFromSubResource</samp></p>
<ul class="ul">
<li class="li">
<p class="p">A warning will be reported if the read is to a
<samp class="ph codeph">D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE</samp> CPU page or from a
<samp class="ph codeph">D3D12_HEAP_TYPE_UPLOAD</samp> resource
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Calls to <samp class="ph codeph">ID3D12Resource::WriteToSubResource</samp></p>
<ul class="ul">
<li class="li">
<p class="p">A warning will be reported if the write is from a
<samp class="ph codeph">D3D12_CPU_PAGE_PROPERTY_WRITE_BACK</samp> CPU page or to a
<samp class="ph codeph">D3D12_HEAP_TYPE_READBACK</samp> resource
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Calls to <samp class="ph codeph">ID3D12Resource::Map</samp> and
<samp class="ph codeph">ID3D12Resource::Unmap</samp> will be matched into [Map, Unmap]
ranges for non-persistent mappings. If a mapping range is nested, only
the most external range (reference count = 1) will be shown.
</p>
</li>
</ul>
<p class="p"><img class="image" src="graphics/dx12_memory_operations.png" height="-1" width="-1" alt="D3D12 memory operations and usage warning"></img></p>
<p class="p">The API row displays time periods where
<samp class="ph codeph">ID3D12CommandQueue::ExecuteCommandLists</samp> was called. The
GPU Workload row displays time periods where workloads were executed by
the GPU. The workload’s type (Graphics, Compute, Copy, etc.) is displayed
on the bar representing the workload’s GPU execution.
</p>
<p class="p"><img class="image" src="graphics/dx12_api_and_related_workload.png" height="-1" width="-1" alt="D3D12 API and Workload"></img></p>
<p class="p">In addition, you can see the PIX command queue CPU-side performance
markers, GPU-side performance markers and the GPU Command List
performance markers, each in their row.
</p>
<p class="p"><img class="image" src="graphics/dx12_cpu_marker.png" height="-1" width="-1" alt="D3D12 CPU marker"></img></p>
<p class="p"><img class="image" src="graphics/dx12_gpu_marker.png" height="-1" width="-1" alt="D3D12 GPU marker"></img></p>
<p class="p"><img class="image" src="graphics/dx12_commandlist_marker.png" height="-1" width="-1" alt="D3D12 commandlist marker"></img></p>
<p class="p">
Clicking on a GPU workload highlights the corresponding
<samp class="ph codeph">ID3D12CommandQueue::ExecuteCommandLists</samp>,
<samp class="ph codeph">ID3D12GraphicsCommandList::Reset</samp> and
<samp class="ph codeph">ID3D12GraphicsCommandList::Close API</samp> calls, and vice
versa.
</p>
<p class="p"><img class="image" src="graphics/dx12_correlation.png" height="-1" width="-1" alt="D3D12 correlation"></img></p>
<div class="p">Detecting which CPU thread was blocked by a fence can be difficult in
complex apps that run tens of CPU threads. The timeline view displays the
3 operations involved:
<ul class="ul">
<li class="li">
<p class="p">The CPU thread pushing a signal command and fence value into the command
queue. This is displayed on the DX12 Synchronization sub-row of the
calling thread.
</p>
</li>
<li class="li">
<p class="p">The GPU executing that command, setting the fence value and signaling
the fence. This is displayed on the GPU Queue Synchronization sub-row.
</p>
</li>
<li class="li">
<p class="p">The CPU thread calling a Win32 wait API to block-wait until the fence is
signaled. This is displayed on the Thread's OS runtime libraries row.
</p>
</li>
</ul>
</div>
<p class="p">Clicking one of these will highlight it and the corresponding other
two calls.
</p>
<p class="p"><img class="image" src="graphics/d3d12_fence_synchronization.png" height="-1" width="-1" alt="D3D12 fence sync"></img></p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="wddm-queues"><a name="wddm-queues" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#wddm-queues" name="wddm-queues" shape="rect">8. WDDM Queues</a></h2>
<div class="body">
<p class="p">
The Windows Display Driver Model (WDDM) architecture uses queues to send
work packets from the CPU to the GPU. Each D3D device in each process is
associated with one or more contexts. Graphics, compute, and copy commands
that the profiled application uses are associated with a context, batched in
a command buffer, and pushed into the relevant queue associated with that
context.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can capture the state of these queues during
the trace session.
</p>
<p class="p">
Enabling the "Collect additional range of ETW events" option will also
capture extended DxgKrnl events from the <samp class="ph codeph">Microsoft-Windows-DxgKrnl</samp>
provider, such as context status, allocations, sync wait, signal events, etc.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/WDDM_Queues.png" alt="WDDM Queues"></img></p>
</blockquote>
<div class="p">A command buffer in a WDDM queues may have one the following types:
<ul class="ul">
<li class="li">
<p class="p">Render</p>
</li>
<li class="li">
<p class="p">Deferred</p>
</li>
<li class="li">
<p class="p">System</p>
</li>
<li class="li">
<p class="p">MMIOFlip</p>
</li>
<li class="li">
<p class="p">Wait</p>
</li>
<li class="li">
<p class="p">Signal</p>
</li>
<li class="li">
<p class="p">Device</p>
</li>
<li class="li">
<p class="p">Software</p>
</li>
</ul>
</div>
<p class="p">It may also be marked as a Present buffer, indicating that the application
has finished rendering and requests to display the source surface.
</p>
<p class="p">See the Microsoft documentation for the WDDM architecture and the
DXGKETW_QUEUE_PACKET_TYPE enumeration.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
<p class="p">To retain the .etl trace files captured, so that they can be viewed in
other tools (e.g. GPUView), change the "Save ETW log files in project
folder" option under "Profile Behavior" in <span class="ph">Nsight Systems</span>'s
global Options dialog. The .etl files will appear in the same folder as the
.nsys-rep file, accessible by right-clicking the report in the Project Explorer
and choosing "Show in Folder...". Data collected from each ETW provider
will appear in its own .etl file, and an additional .etl file named
"Report XX-Merged-*.etl", containing the events from all captured sources,
will be created as well.
</p>
</div>
</div>
<div class="topic nested0" id="wddm-hw-scheduler"><a name="wddm-hw-scheduler" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#wddm-hw-scheduler" name="wddm-hw-scheduler" shape="rect">9. WDDM HW Scheduler</a></h2>
<div class="body">
<p class="p">
When GPU Hardware Scheduling is enabled in Windows 10 or newer version, the
Windows Display Driver Model (WDDM) uses the DxgKrnl ETW provider to expose
report of NVIDIA GPUs' hardware scheduling context switches.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can capture these context switch events, and display
under the GPUs in the timeline rows titled WDDM HW Scheduler - [HW Queue type].
The ranges under each queue will show the process name and PID assoicated with
the GPU work during the time period.
</p>
<p class="p">
The events will be captured if GPU Hardware Scheduling is enabled in the Windows
System Display settings, and "Collect WDDM Trace" is enabled in the <span class="ph">Nsight Systems</span>
Project Settings.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/wddm-hw-scheduler.png" alt="WDDM HW Scheduler row for 3D HW Queue"></img></p>
</blockquote>
</div>
</div>
<div class="topic nested0" id="vulkan"><a name="vulkan" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#vulkan" name="vulkan" shape="rect">10. Vulkan API Trace</a></h2>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested1" id="vulkan-overview"><a name="vulkan-overview" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#vulkan-overview" name="vulkan-overview" shape="rect">10.1. Vulkan Overview</a></h3>
<div class="body">
<p class="p">Vulkan is a low-overhead, cross-platform 3D graphics and compute API,
targeting a wide variety of devices from PCs to mobile phones and
embedded platforms. The Vulkan API is defined by the Khronos Group.
Information about Vulkan and the Khronos Group can be found at the
<a class="xref" href="https://www.khronos.org/vulkan/" target="_blank" shape="rect">Khronos Vulkan Site</a>.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can capture information about Vulkan usage
by the profiled process. This includes capturing the execution time of
Vulkan API functions, corresponding GPU workloads, debug util labels, and
frame durations. Vulkan profiling is supported on both Windows and x86
Linux operating systems.
</p>
<p class="p"><img class="image" src="graphics/vulkan_overview.png" alt="Vulkan overview picture"></img></p>
<p class="p">The Command Buffer Creation row displays time periods when command
buffers were being created. This enables developers to improve their
application’s multi-threaded command buffer creation. Command buffer
creation time period is measured between the call to
<samp class="ph codeph">vkBeginCommandBuffer</samp> and the call to
<samp class="ph codeph">vkEndCommandBuffer</samp>.
</p>
<p class="p"><img class="image" src="graphics/vulkan_command_buffer_creation.png" alt="Vulkan command buffer creation"></img></p>
<p class="p">A Queue row is displayed for each Vulkan queue created by the profiled
application. The API sub-row displays time periods where
<samp class="ph codeph">vkQueueSubmit</samp> was called. The GPU Workload sub-row
displays time periods where workloads were executed by the GPU.
</p>
<p class="p"><img class="image" src="graphics/vulkan_api_and_related_workload.png" alt="Vulkan API and Workload"></img></p>
<p class="p">In addition, you can see <a class="xref" href="https://github.com/KhronosGroup/Vulkan-Docs/blob/master/appendices/VK_EXT_debug_utils.txt" target="_blank" shape="rect">Vulkan debug util labels</a> on both
the CPU and the GPU.
</p>
<p class="p"><img class="image" src="graphics/vulkan_cpu_marker.png" alt="Vulkan CPU marker"></img></p>
<p class="p">Clicking on a GPU workload highlights the corresponding
<samp class="ph codeph">vkQueueSubmit</samp> call, and vice versa.
</p>
<p class="p"><img class="image" src="graphics/vulkan_correlation.png" alt="Vulkan correlation"></img></p>
<p class="p">The Vulkan Memory Operations row contains an aggregation of all the Vulkan host-side memory
operations, such as host-blocking writes and reads or non-persistent map-unmap ranges.
</p>
<p class="p">The row is separated into sub-rows by heap index and memory type - the tooltip for each
row and the ranges inside show the heap flags and the memory property flags.
</p>
<p class="p"><img class="image" src="graphics/vulkan_memory_operations.png" alt="Vulkan Memory Operations"></img></p>
<p class="p"><img class="image" src="graphics/vulkan_memory_operations_row.png" alt="Vulkan Memory Operations"></img></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested1" id="vulkan-pipeline-creation"><a name="vulkan-pipeline-creation" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#vulkan-pipeline-creation" name="vulkan-pipeline-creation" shape="rect">10.2. Pipeline Creation Feedback</a></h3>
<div class="body">
<p class="p">
When tracing target application calls to Vulkan pipeline creation APIs,
<span class="ph">Nsight Systems</span> leverages the Pipeline Creation Feedback
extension to collect more details about the duration of individual
pipeline creation stages.
</p>
<p class="p">
See <a class="xref" href="https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCreationFeedbackEXT" target="_blank" shape="rect">Pipeline Creation Feedback extension</a>
for details about this extension.
</p>
<p class="p">
Vulkan pipeline creation feedback is available on NVIDIA driver release
435 or later.
</p>
<p class="p"><img class="image" src="graphics/vulkan-pipeline-creation-feedback.png" alt="Vulkan pipeline creation feedback"></img></p>
</div>
</div>
<div class="topic nested1" id="vulkan-gpu-trace"><a name="vulkan-gpu-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#vulkan-gpu-trace" name="vulkan-gpu-trace" shape="rect">10.3. Vulkan GPU Trace Notes</a></h3>
<div class="body">
<div class="p">
<ul class="ul">
<li class="li">
<p class="p">Vulkan GPU trace is available only when tracing apps that use NVIDIA
GPUs.
</p>
</li>
<li class="li">
<p class="p">The endings of Vulkan Command Buffers execution ranges on Compute and
Transfer queues may appear earlier on the timeline than their actual
occurrence.
</p>
</li>
</ul>
</div>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="stutter-analysis"><a name="stutter-analysis" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#stutter-analysis" name="stutter-analysis" shape="rect">11. Stutter Analysis</a></h2>
<div class="body">
<div class="section" id="stutter-analysis__stutter-overview"><a name="stutter-analysis__stutter-overview" shape="rect">
<!-- --></a><h2 class="title sectiontitle">Stutter Analysis Overview</h2>
<p class="p"><span class="ph">Nsight Systems</span> on Windows targets displays stutter
analysis visualization aids for profiled graphics applications that use
either OpenGL, D3D11, D3D12 or Vulkan, as detailed below in the
following sections.
</p>
</div>
</div>
<div class="topic nested1" id="fps-overview"><a name="fps-overview" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#fps-overview" name="fps-overview" shape="rect">11.1. FPS Overview</a></h3>
<div class="body">
<p class="p">The Frame Duration section displays frame durations on both the CPU and
the GPU.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/fps_overview.png" alt="FPS overview"></img></p>
</blockquote>
<div class="p">The frame duration row displays live FPS statistics for the current
timeline viewport. Values shown are:
<ol class="ol">
<li class="li">
<p class="p">Number of CPU frames shown of the total number captured</p>
</li>
<li class="li">
<p class="p">Average, minimal, and maximal CPU frame time of the currently
displayed time range
</p>
</li>
<li class="li">
<p class="p">Average FPS value for the currently displayed frames</p>
</li>
<li class="li">
<p class="p">The 99th percentile value of the frame lengths (such that only 1%
of the frames in the range are longer than this value).
</p>
</li>
</ol>
The values will update automatically when scrolling, zooming or filtering
the timeline view.
</div>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/stutter_row.png" alt="FPS stutter row"></img></p>
</blockquote>
<p class="p">The stutter row highlights frames that are significantly longer than the
other frames in their immediate vicinity.
</p>
<p class="p">The stutter row uses an algorithm that compares the duration of each
frame to the median duration of the surrounding 19 frames. Duration
difference under 4 milliseconds is never considered a stutter, to avoid
cluttering the display with frames whose absolute stutter is small and
not noticeable to the user.
</p>
<div class="p">For example, if the stutter threshold is set at 20%:
<ol class="ol">
<li class="li">
<p class="p">Median duration is 10 ms. Frame with 13 ms time will not be reported
(relative difference > 20%, absolute difference < 4 ms)
</p>
</li>
<li class="li">
<p class="p">Median duration is 60 ms. Frame with 71 ms time will not be reported
(relative difference < 20%, absolute difference > 4 ms)
</p>
</li>
<li class="li">
<p class="p">Median duration is 60 ms. Frame with 80 ms is a stutter (relative
difference > 20%, absolute difference > 4 ms, both conditions met)
</p>
</li>
</ol>
</div>
<p class="p"><strong class="ph b">OSC detection</strong></p>
<p class="p">The "19 frame window median" algorithm by itself may not work well with
some cases of "oscillation" (consecutive fast and slow frames), resulting
in some false positives. The median duration is not meaningful in cases
of oscillation and can be misleading.
</p>
<div class="p">To address the issue and identify if oscillating frames, the following
method is applied:
<ol class="ol">
<li class="li">
<p class="p">For every frame, calculate the median duration, 1st and 3rd quartiles of
19-frames window.
</p>
</li>
<li class="li">
<p class="p">Calculate the delta and ratio between 1st and 3rd quartiles.</p>
</li>
<li class="li">
<p class="p">If the 90th percentile of 3rd – 1st quartile delta array > 4 ms AND
the 90th percentile of 3rd/1st quartile array > 1.2 (120%) then mark
the results with "OSC" text.
</p>
</li>
</ol>
</div>
<p class="p">Right-clicking the Frame Duration row caption lets you choose the target
frame rate (30, 60, 90 or custom frames per second).
</p>
<p class="p"><img class="image" src="graphics/fps_pick.png" alt="FPS pick"></img></p>
<p class="p">By clicking the Customize FPS Display option, a customization dialog pops
up. In the dialog, you can now define the frame duration threshold to
customize the view of the potentially problematic frames. In addition,
you can define the threshold for the stutter analysis frames.
</p>
<p class="p"><img class="image" src="graphics/fps_customizations.png" alt="fps_customizations"></img></p>
<div class="p">Frame duration bars are color coded:
<ul class="ul">
<li class="li">
<p class="p">Green, the frame duration is shorter than required by the target FPS
ratio.
</p>
</li>
<li class="li">
<p class="p">Yellow, duration is slightly longer than required by the target FPS rate.</p>
</li>
<li class="li">
<p class="p">Red, duration far exceeds that required to maintain the target FPS rate.</p>
</li>
</ul>
</div>
<p class="p"><img class="image" src="graphics/bad_fps.png" alt="Bad FPS"></img></p>
<div class="p">The CPU Frame Duration row displays the CPU frame duration measured
between the ends of consecutive frame boundary calls:
<ul class="ul">
<li class="li">
<p class="p">The OpenGL frame boundaries are
<samp class="ph codeph">eglSwapBuffers/glXSwapBuffers/SwapBuffers</samp> calls.
</p>
</li>
<li class="li">
<p class="p">The D3D11 and D3D12 frame boundaries are
<samp class="ph codeph">IDXGISwapChainX::Present</samp> calls.
</p>
</li>
<li class="li">
<p class="p">The Vulkan frame boundaries are <samp class="ph codeph">vkQueuePresentKHR</samp>
calls.
</p>
</li>
</ul>
</div>
<p class="p">The timing of the actual calls to the frame boundary calls can be seen
in the blue bar at the bottom of the CPU frame duration row
</p>
<div class="p">The GPU Frame Duration row displays the time measured between
<ul class="ul">
<li class="li">
<p class="p">The start time of the first GPU workload execution of this frame.</p>
</li>
<li class="li">
<p class="p">The start time of the first GPU workload execution of the next frame.</p>
</li>
</ul>
</div>
<p class="p"><strong class="ph b">Reflex SDK</strong></p>
<p class="p">NVIDIA Reflex SDK is a series of NVAPI calls that allow applications to integrate the
Ultra Low Latency driver feature more directly into their game to further optimize
synchronization between simulation and rendering stages and lower the latency between
user input and final image rendering.
For more details about Reflex SDK, see <a class="xref" href="https://developer.nvidia.com/reflex/" target="_blank" shape="rect">Reflex SDK Site</a>.
</p>
<p class="p"><span class="ph">Nsight Systems</span> will automatically capture NVAPI functions
when either Direct3D 11, Direct3D 12, or Vulkan API trace are enabled.
</p>
<div class="p">The Reflex SDK row displays timeline ranges for the following types of latency markers:
<ul class="ul">
<li class="li">
<p class="p">RenderSubmit.</p>
</li>
<li class="li">
<p class="p">Simulation.</p>
</li>
<li class="li">
<p class="p">Present.</p>
</li>
<li class="li">
<p class="p">Driver.</p>
</li>
<li class="li">
<p class="p">OS Render Queue.</p>
</li>
<li class="li">
<p class="p">GPU Render.</p>
</li>
</ul>
</div>
<p class="p"><img class="image" src="graphics/reflex_sdk.png" alt="Reflex SDK"></img></p>
<p class="p"><strong class="ph b">Performance Warnings row</strong></p>
<div class="p">This row shows performance warnings and common pitfalls that are automatically detected
based on the enabled capture types.
Warnings are reported for:
<ul class="ul">
<li class="li">
<p class="p">ETW performance warnings</p>
</li>
<li class="li">
<p class="p">Vulkan calls to <samp class="ph codeph">vkQueueSubmit</samp> and D3D12 calls to
<samp class="ph codeph">ID3D12CommandQueue::ExecuteCommandList</samp> that take a longer time to
execute than the total time of the GPU workloads they generated
</p>
</li>
<li class="li">
<p class="p"><a class="xref" href="topics/d3d12-trace" shape="rect">D3D12 Memory Operation warnings</a></p>
</li>
<li class="li">
<p class="p">Usage of Vulkan API functions that may adversely affect performance</p>
</li>
<li class="li">
<p class="p">Creation of a Vulkan device with memory zeroing, whether by physical device default or manually</p>
</li>
<li class="li">
<p class="p">Vulkan command buffer barrier which can be combined or removed, such as subsequent barriers or read-to-read barriers</p>
</li>
</ul>
</div>
<p class="p"><img class="image" src="graphics/fps_performance_warnings.png" alt="Performance Warnings row"></img></p>
</div>
</div>
<div class="topic nested1" id="frame-health"><a name="frame-health" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#frame-health" name="frame-health" shape="rect">11.2. Frame Health</a></h3>
<div class="body">
<p class="p">
The Frame Health row displays actions that took significantly a longer
time during the current frame, compared to the median time of the same
actions executed during the surrounding 19-frames. This is a great tool
for detecting the reason for frame time stuttering. Such actions may be:
shader compilation, present, memory mapping, and more.
<span class="ph">Nsight Systems</span> measures the accumulated time of such
actions in each frame. For example: calculating the accumulated time of
shader compilations in each frame and comparing it to the accumulated
time of shader compilations in the surrounding 19 frames.
</p>
<p class="p">Example of a Vulkan frame health row:</p>
<p class="p"><img class="image" src="graphics/vulkan_frame_health.png" alt="Frame Health Vulkan"></img></p>
<p class="p"><img class="image" src="graphics/dx12_frame_health.png" alt="Frame Health DX12"></img></p>
</div>
</div>
<div class="topic nested1" id="gpu-memory-utilization"><a name="gpu-memory-utilization" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gpu-memory-utilization" name="gpu-memory-utilization" shape="rect">11.3. GPU Memory Utilization</a></h3>
<div class="body">
<p class="p">
The Memory Utilization row displays the amount of used local GPU memory
and the commit limit for each GPU.
</p><img class="image" src="graphics/memory_utilization.png" alt="Memory Utilization"></img><p class="p">Note that this is not the same as the CUDA kernel memory allocation
graph, see <a class="xref" href="topics/cuda-gpu-memory-graph" shape="rect">CUDA GPU
Memory Graph</a> for that functionality.
</p>
</div>
</div>
<div class="topic nested1" id="vertical-sync"><a name="vertical-sync" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#vertical-sync" name="vertical-sync" shape="rect">11.4. Vertical Synchronization</a></h3>
<div class="body">
<p class="p">
The VSYNC rows display when the monitor's vertical synchronizations
occur.
</p>
<p class="p"><img class="image" src="graphics/vsync.png" alt="Vertical Synchronization"></img></p>
</div>
</div>
</div>
<div class="topic nested0" id="openmp-trace"><a name="openmp-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#openmp-trace" name="openmp-trace" shape="rect">12. OpenMP Trace</a></h2>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> for Linux x86_64 and Power targets is capable
of capturing information about OpenMP events. This functionality is built on
the OpenMP Tools Interface (OMPT), full support is available only for runtime
libraries supporting tools interface defined in OpenMP 5.0 or greater.
</p>
<p class="p">As an example, LLVM OpenMP runtime library partially implements tools interface.
If you use PGI compiler <= 20.4 to build your OpenMP applications, add -mp=libomp
switch to use LLVM OpenMP runtime and enable OMPT based tracing. If you use Clang,
make sure the LLVM OpenMP runtime library you link to was compiled with tools
interface enabled.
</p>
<p class="p"><img class="image" src="graphics/select-openmp-trace.png" alt="OpenMP trace selection"></img></p>
<p class="p">Only a subset of the OMPT callbacks are processed:
</p><pre xml:space="preserve">ompt_callback_parallel_begin
ompt_callback_parallel_end
ompt_callback_sync_region
ompt_callback_task_create
ompt_callback_task_schedule
ompt_callback_implicit_task
ompt_callback_master
ompt_callback_reduction
ompt_callback_task_create
ompt_callback_cancel
ompt_callback_mutex_acquire, ompt_callback_mutex_acquired
ompt_callback_mutex_acquired, ompt_callback_mutex_released
ompt_callback_mutex_released
ompt_callback_work
ompt_callback_dispatch
ompt_callback_flush</pre><blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">The raw OMPT events are used to generate ranges
indicating the runtime of OpenMP operations and
constructs.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p">Example screenshot:</p>
<p class="p"><img class="image" src="graphics/openmp-trace.png" alt="OpenMP API trace"></img></p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested0" id="os-runtime-trace"><a name="os-runtime-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#os-runtime-trace" name="os-runtime-trace" shape="rect">13. OS Runtime Libraries Trace</a></h2>
<div class="body">
<p class="p">On Linux, OS runtime libraries can be traced to gather information about
low-level userspace APIs. This traces the system call wrappers and thread
synchronization interfaces exposed by the C runtime and POSIX Threads
(pthread) libraries. This does not perform a complete runtime library API
trace, but instead focuses on the functions that can take a long time to
execute, or could potentially cause your thread be unscheduled from the
CPU while waiting for an event to complete. OS runtime trace is not
available for Windows targets.
</p>
<div class="p">OS runtime tracing complements and enhances sampling information by:
<ol class="ol">
<li class="li">
<p class="p">Visualizing when the process is communicating with the hardware, controlling
resources, performing multi-threading synchronization or interacting with
the kernel scheduler.
</p>
</li>
<li class="li">
<p class="p">Adding additional thread states by correlating how OS runtime libraries
traces affect the thread scheduling:
</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Waiting</strong> — the thread is not scheduled on a CPU, it is inside of an
OS runtime libraries trace and is believed to be waiting on the firmware
to complete a request.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">In OS runtime library function</strong> — the thread is scheduled on a CPU
and inside of an OS runtime libraries trace. If the trace represents a
system call, the process is likely running in kernel mode.
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Collecting backtraces for long OS runtime libraries call. This provides a
way to gather blocked-state backtraces, allowing you to gain more context
about why the thread was blocked so long, yet avoiding unnecessary
overhead for short events.
</p>
</li>
</ol>
</div>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/os-runtime-row-x86.png" alt="OS runtime libraries row"></img></p>
</blockquote>
<p class="p">To enable OS runtime libraries tracing from <span class="ph">Nsight Systems</span>:
</p>
<p class="p"><strong class="ph b">CLI</strong> — Use the <samp class="ph codeph">-t</samp>, <samp class="ph codeph">--trace</samp> option
with the <samp class="ph codeph">osrt</samp> parameter. See <a class="xref" href="topics/cli-profiling" shape="rect">
Command Line Options</a> for more information.
</p>
<p class="p"><strong class="ph b">GUI</strong> — Select the <strong class="ph b">Collect OS runtime libraries trace</strong> checkbox.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/configure-os-runtime-trace.png" alt="Configure OS runtime libraries trace"></img></p>
</blockquote>
<p class="p">You can also use <strong class="ph b">Skip if shorter than</strong>. This will skip calls shorter
than the given threshold. Enabling this option will improve performances as
well as reduce noise on the timeline. We strongly encourage you to skip OS
runtime libraries call shorter than 1 μs.
</p>
</div>
<div class="topic nested1" id="osrt-locking-resource"><a name="osrt-locking-resource" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#osrt-locking-resource" name="osrt-locking-resource" shape="rect">13.1. Locking a Resource</a></h3>
<div class="body">
<p class="p">The functions listed below receive a special treatment. If the tool
detects that the resource is already acquired by another thread and will
induce a blocking call, we always trace it. Otherwise, it will never be
traced.
</p><pre xml:space="preserve">pthread_mutex_lock
pthread_rwlock_rdlock
pthread_rwlock_wrlock
pthread_spin_lock
sem_wait</pre><p class="p">Note that even if a call is determined as potentially blocking, there is
a chance that it may not actually block after a few cycles have elapsed.
The call will still be traced in this scenario.
</p>
</div>
</div>
<div class="topic nested1" id="osrt-limitations"><a name="osrt-limitations" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#osrt-limitations" name="osrt-limitations" shape="rect">13.2. Limitations</a></h3>
<div class="body">
<ul class="ul">
<li class="li">
<p class="p"><span class="ph">Nsight Systems</span> only traces syscall wrappers exposed by the
C runtime. It is not able to trace syscall invoked through assembly code.
</p>
</li>
<li class="li">
<p class="p">Additional thread states, as well as backtrace collection on long calls,
are only enabled if sampling is turned on.
</p>
</li>
<li class="li">
<p class="p">It is not possible to configure the depth and duration threshold when
collecting backtraces. Currently, only OS runtime libraries calls longer
than 80 μs will generate a backtrace with a maximum of 24 frames. This
limitation will be removed in a future version of the product.
</p>
</li>
<li class="li">
<p class="p">It is required to compile your application and libraries with the
<samp class="ph codeph">-funwind-tables</samp> compiler flag in order for
<span class="ph">Nsight Systems</span> to unwind the backtraces correctly.
</p>
</li>
</ul>
</div>
</div>
<div class="topic nested1" id="osrt-filters"><a name="osrt-filters" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#osrt-filters" name="osrt-filters" shape="rect">13.3. OS Runtime Libraries Trace Filters</a></h3>
<div class="body">
<p class="p">The OS runtime libraries tracing is limited to a select list of
functions. It also depends on the version of the C runtime linked to the
application.
</p>
</div>
</div>
<div class="topic nested1" id="osrt-default-function"><a name="osrt-default-function" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#osrt-default-function" name="osrt-default-function" shape="rect">13.4. OS Runtime Default Function List</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Libc system call wrappers</strong></p><pre xml:space="preserve">accept
accept4
acct
alarm
arch_prctl
bind
bpf
brk
chroot
clock_nanosleep
connect
copy_file_range
creat
creat64
dup
dup2
dup3
epoll_ctl
epoll_pwait
epoll_wait
fallocate
fallocate64
fcntl
fdatasync
flock
fork
fsync
ftruncate
futex
ioctl
ioperm
iopl
kill
killpg
listen
membarrier
mlock
mlock2
mlockall
mmap
mmap64
mount
move_pages
mprotect
mq_notify
mq_open
mq_receive
mq_send
mq_timedreceive
mq_timedsend
mremap
msgctl
msgget
msgrcv
msgsnd
msync
munmap
nanosleep
nfsservctl
open
open64
openat
openat64
pause
pipe
pipe2
pivot_root
poll
ppoll
prctl
pread
pread64
preadv
preadv2
preadv64
process_vm_readv
process_vm_writev
pselect6
ptrace
pwrite
pwrite64
pwritev
pwritev2
pwritev64
read
readv
reboot
recv
recvfrom
recvmmsg
recvmsg
rt_sigaction
rt_sigqueueinfo
rt_sigsuspend
rt_sigtimedwait
sched_yield
seccomp
select
semctl
semget
semop
semtimedop
send
sendfile
sendfile64
sendmmsg
sendmsg
sendto
shmat
shmctl
shmdt
shmget
shutdown
sigaction
sigsuspend
sigtimedwait
socket
socketpair
splice
swapoff
swapon
sync
sync_file_range
syncfs
tee
tgkill
tgsigqueueinfo
tkill
truncate
umount2
unshare
uselib
vfork
vhangup
vmsplice
wait
wait3
wait4
waitid
waitpid
write
writev
_sysctl</pre><p class="p"><strong class="ph b">POSIX Threads</strong></p><pre xml:space="preserve">pthread_barrier_wait
pthread_cancel
pthread_cond_broadcast
pthread_cond_signal
pthread_cond_timedwait
pthread_cond_wait
pthread_create
pthread_join
pthread_kill
pthread_mutex_lock
pthread_mutex_timedlock
pthread_mutex_trylock
pthread_rwlock_rdlock
pthread_rwlock_timedrdlock
pthread_rwlock_timedwrlock
pthread_rwlock_tryrdlock
pthread_rwlock_trywrlock
pthread_rwlock_wrlock
pthread_spin_lock
pthread_spin_trylock
pthread_timedjoin_np
pthread_tryjoin_np
pthread_yield
sem_timedwait
sem_trywait
sem_wait</pre><p class="p"><strong class="ph b">I/O</strong></p><pre xml:space="preserve">aio_fsync
aio_fsync64
aio_suspend
aio_suspend64
fclose
fcloseall
fflush
fflush_unlocked
fgetc
fgetc_unlocked
fgets
fgets_unlocked
fgetwc
fgetwc_unlocked
fgetws
fgetws_unlocked
flockfile
fopen
fopen64
fputc
fputc_unlocked
fputs
fputs_unlocked
fputwc
fputwc_unlocked
fputws
fputws_unlocked
fread
fread_unlocked
freopen
freopen64
ftrylockfile
fwrite
fwrite_unlocked
getc
getc_unlocked
getdelim
getline
getw
getwc
getwc_unlocked
lockf
lockf64
mkfifo
mkfifoat
posix_fallocate
posix_fallocate64
putc
putc_unlocked
putwc
putwc_unlocked</pre><p class="p"><strong class="ph b">Miscellaneous</strong></p><pre xml:space="preserve">forkpty
popen
posix_spawn
posix_spawnp
sigwait
sigwaitinfo
sleep
system
usleep</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="nvtx-trace"><a name="nvtx-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#nvtx-trace" name="nvtx-trace" shape="rect">14. NVTX Trace</a></h2>
<div class="body">
<p class="p">The NVIDIA Tools Extension Library (NVTX) is a powerful mechanism that allows
users to manually instrument their application. <span class="ph">Nsight Systems</span>
can then collect the information and present it on the timeline.
</p>
<p class="p"><span class="ph">Nsight Systems</span> supports version 3.0 of the NVTX specification.
</p>
<p class="p">
The following features are supported:
</p>
<ul class="ul">
<li class="li">
<p class="p">Domains</p><pre xml:space="preserve">nvtxDomainCreate(), nvtxDomainDestroy()</pre><pre xml:space="preserve">nvtxDomainRegisterString()</pre></li>
<li class="li">
<p class="p">Push-pop ranges (nested ranges that start and end in the same thread).</p><pre xml:space="preserve">nvtxRangePush(), nvtxRangePushEx()</pre><pre xml:space="preserve">nvtxRangePop()</pre><pre xml:space="preserve">nvtxDomainRangePushEx()</pre><pre xml:space="preserve">nvtxDomainRangePop()</pre></li>
<li class="li">
<p class="p">Start-end ranges (ranges that are global to the process and are not
restricted to a single thread)
</p><pre xml:space="preserve">nvtxRangeStart(), nvtxRangeStartEx()</pre><pre xml:space="preserve">nvtxRangeEnd()</pre><pre xml:space="preserve">nvtxDomainRangeStartEx()</pre><pre xml:space="preserve">nvtxDomainRangeEnd()</pre></li>
<li class="li">
<p class="p">Marks</p><pre xml:space="preserve">nvtxMark(), nvtxMarkEx()</pre><pre xml:space="preserve">nvtxDomainMarkEx()</pre></li>
<li class="li">
<p class="p">Thread names</p><pre xml:space="preserve">nvtxNameOsThread()</pre></li>
<li class="li">
<p class="p">Categories</p><pre xml:space="preserve">nvtxNameCategory()</pre><pre xml:space="preserve">nvtxDomainNameCategory()</pre></li>
</ul>
<p class="p">To learn more about specific features of NVTX, please refer to the NVTX
header file: <samp class="ph codeph">nvToolsExt.h</samp> or the
<a class="xref" href="https://nvidia.github.io/NVTX/" target="_blank" shape="rect">NVTX documentation</a>.
</p>
<div class="p">To use NVTX in your application, follow these steps:
<ol class="ol">
<li class="li">
<p class="p">Add <samp class="ph codeph">#include "nvtx3/nvToolsExt.h"</samp> in your source code. The
nvtx3 directory is located in the <span class="ph">Nsight Systems</span> package in the
Target-<architecture>/nvtx/include directory and is available via
github at <a class="xref" href="http://github.com/NVIDIA/NVTX" target="_blank" shape="rect">http://github.com/NVIDIA/NVTX</a>.
</p>
</li>
<li class="li">
<p class="p">Add the following compiler flag: <samp class="ph codeph">-ldl</samp></p>
</li>
<li class="li">
<p class="p">Add calls to the NVTX API functions. For example, try adding
<samp class="ph codeph">nvtxRangePush("main")</samp> in the beginning of the
<samp class="ph codeph">main()</samp> function, and <samp class="ph codeph">nvtxRangePop()</samp> just
before the return statement in the end.
</p>
<p class="p">For convenience in C++ code, consider adding a wrapper that implements
RAII (resource acquisition is initialization) pattern, which would
guarantee that every range gets closed.
</p>
</li>
<li class="li">
<p class="p">In the project settings, select the <strong class="ph b">Collect NVTX trace</strong> checkbox.
</p>
</li>
</ol>
</div>
<p class="p">In addition, by enabling the "Insert NVTX Marker hotkey" option it is
possible to add NVTX markers to a running non-console applications by
pressing the F11 key. These will appear in the report under the NVTX Domain
named "HotKey markers".
</p>
<p class="p">Typically calls to NVTX functions can be left in the source code even if the
application is not being built for profiling purposes, since the overhead is
very low when the profiler is not attached.
</p>
<p class="p">NVTX is not intended to annotate very small pieces of code that are being called
very frequently. A good rule of thumb to use: if code being annotated usually
takes less than 1 microsecond to execute, adding an NVTX range around this code
should be done carefully.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">Range annotations should be matched carefully. If many ranges are
opened but not closed, <span class="ph">Nsight Systems</span> has no meaningful way to
visualize it. A rule of thumb is to not have more than a couple dozen ranges
open at any point in time. <span class="ph">Nsight Systems</span> does not support
reports with many unclosed ranges.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"><strong class="ph b">NVTX Domains and Categories</strong></p>
<p class="p"></p>
<p class="p">NVTX domains enable scoping of annotations. Unless specified
differently, all events and annotations are in the default domain.
Additionally, categories can be used to group events.
</p>
<p class="p"><span class="ph">Nsight Systems</span> gives the user the ability to include or
exclude NVTX events from a particular domain. This can be especially useful
if you are profiling across multiple libraries and are only interested in
nvtx events from some of them.
</p>
<p class="p"><img class="image" src="graphics/nvtx-domain.png" alt="NVTX domain selection screen"></img></p>
<p class="p">This functionality is also available from the CLI. See the CLI
documentation for <samp class="ph codeph">--nvtx-domain-include</samp> and
<samp class="ph codeph">--nvtx-domain-exclude</samp> for more details.
</p>
<p class="p">Categories that are set in by the user will be recognized and displayed
in the GUI.
</p>
<p class="p"><img class="image" src="graphics/nvtx-screenshot.png" alt="NVTX screenshot with domains and categories"></img></p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested0" id="cuda-trace"><a name="cuda-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#cuda-trace" name="cuda-trace" shape="rect">15. CUDA Trace</a></h2>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> is capable of capturing information about CUDA
execution in the profiled process.
</p>
<div class="p">The following information can be collected and presented on the timeline in
the report:
<ul class="ul">
<li class="li">
<p class="p">CUDA API trace — trace of CUDA Runtime and CUDA Driver calls made by the
application.
</p>
<ul class="ul">
<li class="li">
<p class="p">CUDA Runtime calls typically start with <samp class="ph codeph">cuda</samp> prefix
(e.g. <samp class="ph codeph">cudaLaunch</samp>).
</p>
</li>
<li class="li">
<p class="p">CUDA Driver calls typically start with <samp class="ph codeph">cu</samp> prefix (e.g.
<samp class="ph codeph">cuDeviceGetCount</samp>).
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">CUDA workload trace — trace of activity happening on the GPU, which
includes memory operations (e.g., Host-to-Device memory copies) and
kernel executions. Within the threads that use the CUDA API, additional
child rows will appear in the timeline tree.
</p>
</li>
<li class="li">
<p class="p">On <span class="ph">Nsight Systems Workstation Edition</span>, cuDNN and cuBLAS API tracing and
OpenACC tracing.
</p>
</li>
</ul>
</div>
<p class="p"><img class="image" src="graphics/cuda-thread-rows.png" alt="CUDA thread rows"></img></p>
<p class="p">Near the bottom of the timeline row tree, the GPU node will appear and
contain a CUDA node. Within the CUDA node, each CUDA context used within
the process will be shown along with its corresponding CUDA streams. Steams
will contain memory operations and kernel launches on the GPU. Kernel
launches are represented by blue, while memory transfers are displayed in
red.
</p>
<p class="p"><img class="image" src="graphics/cuda-gpu-rows.png" alt="CUDA GPU rows"></img></p>
<p class="p">
The easiest way to capture CUDA information is to launch the process from
<span class="ph">Nsight Systems</span>, and it will setup the environment for you. To
do so, simply set up a normal launch and select the <strong class="ph b">Collect CUDA trace</strong>
checkbox.
</p>
<p class="p">For <span class="ph">Nsight Systems Workstation Edition</span> this looks like:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/configure-cuda-trace-x86.png" alt="Configure CUDA trace"></img></p>
</blockquote>
<p class="p">For <span class="ph">Nsight Systems Embedded Platforms Edition</span> this looks like:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/configure-cuda-trace.png" alt="Configure CUDA trace"></img></p>
</blockquote>
<p class="p">Additional configuration parameters are available:</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Collect backtraces for API calls longer than X seconds</strong> - turns on
collection of CUDA API backtraces and sets the minimum time a CUDA API
event must take before its backtraces are collected. Setting this value
too low can cause high application overhead and seriously increase the
size of your results file.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Flush data periodically</strong> — specifies the period after which an
attempt to flush CUDA trace data will be made. Normally, in order to
collect full CUDA trace, the application needs to finalize the device used
for CUDA work (call <samp class="ph codeph">cudaDeviceReset()</samp>, and then let the
application gracefully exit (as opposed to crashing).
</p>
<p class="p">This option allows flushing CUDA trace data even before the device is
finalized. However, it might introduce additional overhead to a random
CUDA Driver or CUDA Runtime API call.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Skip some API calls</strong> — avoids tracing insignificant CUDA Runtime API
calls (namely, <samp class="ph codeph">cudaConfigureCall()</samp>,
<samp class="ph codeph">cudaSetupArgument()</samp>,
<samp class="ph codeph">cudaHostGetDevicePointers()</samp>). Not tracing these functions
allows <span class="ph">Nsight Systems</span> to significantly reduce the profiling
overhead, without losing any interesting data. (See CUDA Trace Filters,
below)
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Collect GPU Memory Usage</strong> - collects information used to
generate a graph of CUDA allocated memory across time. Note that this will
increase overhead. See section on <strong class="ph b">CUDA GPU Memory Allocation Graph</strong> below.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Collect Unified Memory CPU page faults</strong> - collects information on page faults
that occur when CPU code tries to access a memory page that resides on the device. See
section on <strong class="ph b">Unified Memory CPU Page Faults</strong> in the <strong class="ph b">Unified Memory Transfer Trace</strong>
documentation below.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Collect Unified Memory GPU page faults</strong> - collects information on page faults
that occur when GPU code tries to access a memory page that resides on the CPU. See
section on <strong class="ph b">Unified Memory GPU Page Faults</strong> in the <strong class="ph b">Unified Memory Transfer Trace</strong>
documentation below.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Collect CUDA Graph trace </strong> - by default, CUDA tracing will
collect and expose information on a whole graph basis. The user can opt to
collect on a node per node basis. See section on <strong class="ph b">CUDA Graph Trace</strong>
below.
</p>
</li>
<li class="li">
<p class="p">For <span class="ph">Nsight Systems Workstation Edition</span>, <strong class="ph b">Collect cuDNN trace</strong>,
<strong class="ph b">Collect cuBLAS trace</strong>, <strong class="ph b">Collect OpenACC trace</strong> - selects which
(if any) extra libraries that depend on CUDA to trace.
</p>
<p class="p">OpenACC versions 2.0, 2.5, and 2.6 are supported when using PGI runtime
version 15.7 or greater and not compiling statically. In order to
differentiate constructs, a PGI runtime of 16.1 or later is required.
Note that <span class="ph">Nsight Systems Workstation Edition</span> does not support the GCC
implementation of OpenACC at this time.
</p>
</li>
</ul>
<p class="p">Please note that if your application crashes before all collected CUDA
trace data has been copied out, some or all data might be lost and not
present in the report.
</p>
</div>
<div class="topic nested1" id="cuda-gpu-memory-graph"><a name="cuda-gpu-memory-graph" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cuda-gpu-memory-graph" name="cuda-gpu-memory-graph" shape="rect">15.1. CUDA GPU Memory Allocation Graph</a></h3>
<div class="body">
<p class="p">When the <strong class="ph b">Collect GPU Memory Usage</strong> option is selected from the
<strong class="ph b">Collect CUDA trace</strong> option set, <span class="ph">Nsight Systems</span> will track
CUDA GPU memory allocations and deallocations and present a graph of this
information in the timeline. This is not the same as the GPU memory graph
generated during stutter analysis on the Windows target (see
<a class="xref" href="topics/gpu-memory-utilization" shape="rect">Stutter Memory Trace</a>)
</p>
<p class="p">Below, in the report on the left, memory is allocated and freed during the
collection. In the report on the right, memory is allocated, but not freed
during the collection.
</p>
<p class="p"><img class="image" src="graphics/memory_allocation_graph1.png" alt="CUDA memory allocation graphs where the memory is or is not released during application run"></img></p>
<p class="p">Here is another example, where allocations are happening on multiple GPUs</p>
<p class="p"><img class="image" src="graphics/memory_allocation_graph2.png" alt="CUDA memory usage graph on multiple threads"></img></p>
</div>
</div>
<div class="topic nested1" id="unified-memory-trace"><a name="unified-memory-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#unified-memory-trace" name="unified-memory-trace" shape="rect">15.2. Unified Memory Transfer Trace</a></h3>
<div class="body">
<p class="p">
For <span class="ph">Nsight Systems Workstation Edition</span>, Unified Memory (also called
Managed Memory) transfer trace is enabled automatically in
<span class="ph">Nsight Systems</span> when CUDA trace is selected. It incurs no
overhead in programs that do not perform any Unified Memory transfers.
Data is displayed in the Managed Memory area of the timeline:
</p>
<p class="p"><img class="image" src="graphics/uvm.png" alt="UVM trace"></img></p>
<p class="p"><strong class="ph b">HtoD transfer</strong> indicates the CUDA kernel accessed managed memory
that was residing on the host, so the kernel execution paused and
transferred the data to the device. Heavy traffic here will incur
performance penalties in CUDA kernels, so consider using manual
cudaMemcpy operations from pinned host memory instead.
</p>
<p class="p"><strong class="ph b">PtoP transfer</strong> indicates the CUDA kernel accessed managed memory
that was residing on a different device, so the kernel execution paused
and transferred the data to this device. Heavy traffic here will incur
performance penalties, so consider using manual cudaMemcpyPeer
operations to transfer from other devices' memory instead. The row
showing these events is for the destination device -- the source device
is shown in the tooltip for each transfer event.
</p>
<p class="p"><strong class="ph b">DtoH transfer</strong> indicates the CPU accessed managed memory that was
residing on a CUDA device, so the CPU execution paused and transferred
the data to system memory. Heavy traffic here will incur performance
penalties in CPU code, so consider using manual cudaMemcpy operations
from pinned host memory instead.
</p>
<p class="p">
Some Unified Memory transfers are highlighted with red to indicate
potential performance issues:
</p>
<p class="p"><img class="image" src="graphics/uvm_migration_cause_hl.png" alt="Unified Memory transfer migration cause highlight"></img></p>
<div class="p">
Transfers with the following migration causes are highlighted:
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Coherence</strong></p>
Unified Memory migration occurred to guarantee data coherence. SMs
(streaming multiprocessors) stop until the migration completes.
</li>
<li class="li">
<p class="p"><strong class="ph b">Eviction</strong></p>
Unified Memory migrated to the CPU because it was evicted to make
room for another block of memory on the GPU. This happens due to
memory overcommitment which is available on Linux with
Compute Capability ≥ 6.
</li>
</ul>
</div>
</div>
<div class="topic nested2" id="um-cpu-page-faults"><a name="um-cpu-page-faults" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#um-cpu-page-faults" name="um-cpu-page-faults" shape="rect">Unified Memory CPU Page Faults</a></h3>
<div class="body">
<p class="p">The Unified Memory CPU page faults feature in
<span class="ph">Nsight Systems</span> tracks the page faults that occur
when CPU code tries to access a memory page that resides on the
device.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">Collecting Unified Memory CPU page faults can cause
overhead of up to 70% in testing. Please use this functionality
only when needed.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"><img class="image" src="graphics/uvm-cpu-page-faults.png" alt="Unified Memory CPU Page Faults on timeline"></img></p>
</div>
</div>
<div class="topic nested2" id="um-gpu-page-faults"><a name="um-gpu-page-faults" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#um-gpu-page-faults" name="um-gpu-page-faults" shape="rect">Unified Memory GPU Page Faults</a></h3>
<div class="body">
<p class="p">The Unified Memory GPU page faults feature in
<span class="ph">Nsight Systems</span> tracks the page faults that occur when
GPU code tries to access a memory page that resides on the host.
</p>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">Collecting Unified Memory GPU page faults can cause
overhead of up to 70% in testing. Please use this
functionality only when needed.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p"><img class="image" src="graphics/uvm-gpu-page-faults.png" alt="Unified Memory GPU Page Faults on timeline"></img></p>
</div>
</div>
</div>
<div class="topic nested1" id="cuda-graph"><a name="cuda-graph" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cuda-graph" name="cuda-graph" shape="rect">15.3. CUDA Graph Trace</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> is capable of capturing information about CUDA
graphs in your application at either the graph or node granularity. This can
be set in the CLI using the <samp class="ph codeph">--cuda-graph-trace</samp> option, or
in the GUI by setting the appropriate drop down.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/cudagraph-selector.png" alt="Configure CUDA graph trace"></img></p>
</blockquote>
<p class="p">When CUDA graph trace is set to <samp class="ph codeph">graph</samp>, the users sees
each graph as one item on the timeline:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/cudagraph-graphlevel.png" alt="CUDA Graph trace at the graph level"></img></p>
</blockquote>
<p class="p">When CUDA graph trace is set to <samp class="ph codeph">node</samp>, the users sees
each graph as a set of nodes on the timeline:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/cudagraph-nodelevel.png" alt="CUDA Graph trace at the node level"></img></p>
</blockquote>
<p class="p">Tracing CUDA graphs at the graph level rather than the tracing the
underlying nodes results in significantly less overhead.
This option is only available with CUDA driver 515.43 or higher.
</p>
</div>
</div>
<div class="topic nested1" id="cuda-default-cli"><a name="cuda-default-cli" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cuda-default-cli" name="cuda-default-cli" shape="rect">15.4. CUDA Default Function List for CLI</a></h3>
<div class="body">
<p class="p"><strong class="ph b">CUDA Runtime API</strong></p><pre xml:space="preserve">cudaBindSurfaceToArray
cudaBindTexture
cudaBindTexture2D
cudaBindTextureToArray
cudaBindTextureToMipmappedArray
cudaConfigureCall
cudaCreateSurfaceObject
cudaCreateTextureObject
cudaD3D10MapResources
cudaD3D10RegisterResource
cudaD3D10UnmapResources
cudaD3D10UnregisterResource
cudaD3D9MapResources
cudaD3D9MapVertexBuffer
cudaD3D9RegisterResource
cudaD3D9RegisterVertexBuffer
cudaD3D9UnmapResources
cudaD3D9UnmapVertexBuffer
cudaD3D9UnregisterResource
cudaD3D9UnregisterVertexBuffer
cudaDestroySurfaceObject
cudaDestroyTextureObject
cudaDeviceReset
cudaDeviceSynchronize
cudaEGLStreamConsumerAcquireFrame
cudaEGLStreamConsumerConnect
cudaEGLStreamConsumerConnectWithFlags
cudaEGLStreamConsumerDisconnect
cudaEGLStreamConsumerReleaseFrame
cudaEGLStreamConsumerReleaseFrame
cudaEGLStreamProducerConnect
cudaEGLStreamProducerDisconnect
cudaEGLStreamProducerReturnFrame
cudaEventCreate
cudaEventCreateFromEGLSync
cudaEventCreateWithFlags
cudaEventDestroy
cudaEventQuery
cudaEventRecord
cudaEventRecord_ptsz
cudaEventSynchronize
cudaFree
cudaFreeArray
cudaFreeHost
cudaFreeMipmappedArray
cudaGLMapBufferObject
cudaGLMapBufferObjectAsync
cudaGLRegisterBufferObject
cudaGLUnmapBufferObject
cudaGLUnmapBufferObjectAsync
cudaGLUnregisterBufferObject
cudaGraphicsD3D10RegisterResource
cudaGraphicsD3D11RegisterResource
cudaGraphicsD3D9RegisterResource
cudaGraphicsEGLRegisterImage
cudaGraphicsGLRegisterBuffer
cudaGraphicsGLRegisterImage
cudaGraphicsMapResources
cudaGraphicsUnmapResources
cudaGraphicsUnregisterResource
cudaGraphicsVDPAURegisterOutputSurface
cudaGraphicsVDPAURegisterVideoSurface
cudaHostAlloc
cudaHostRegister
cudaHostUnregister
cudaLaunch
cudaLaunchCooperativeKernel
cudaLaunchCooperativeKernelMultiDevice
cudaLaunchCooperativeKernel_ptsz
cudaLaunchKernel
cudaLaunchKernel_ptsz
cudaLaunch_ptsz
cudaMalloc
cudaMalloc3D
cudaMalloc3DArray
cudaMallocArray
cudaMallocHost
cudaMallocManaged
cudaMallocMipmappedArray
cudaMallocPitch
cudaMemGetInfo
cudaMemPrefetchAsync
cudaMemPrefetchAsync_ptsz
cudaMemcpy
cudaMemcpy2D
cudaMemcpy2DArrayToArray
cudaMemcpy2DArrayToArray_ptds
cudaMemcpy2DAsync
cudaMemcpy2DAsync_ptsz
cudaMemcpy2DFromArray
cudaMemcpy2DFromArrayAsync
cudaMemcpy2DFromArrayAsync_ptsz
cudaMemcpy2DFromArray_ptds
cudaMemcpy2DToArray
cudaMemcpy2DToArrayAsync
cudaMemcpy2DToArrayAsync_ptsz
cudaMemcpy2DToArray_ptds
cudaMemcpy2D_ptds
cudaMemcpy3D
cudaMemcpy3DAsync
cudaMemcpy3DAsync_ptsz
cudaMemcpy3DPeer
cudaMemcpy3DPeerAsync
cudaMemcpy3DPeerAsync_ptsz
cudaMemcpy3DPeer_ptds
cudaMemcpy3D_ptds
cudaMemcpyArrayToArray
cudaMemcpyArrayToArray_ptds
cudaMemcpyAsync
cudaMemcpyAsync_ptsz
cudaMemcpyFromArray
cudaMemcpyFromArrayAsync
cudaMemcpyFromArrayAsync_ptsz
cudaMemcpyFromArray_ptds
cudaMemcpyFromSymbol
cudaMemcpyFromSymbolAsync
cudaMemcpyFromSymbolAsync_ptsz
cudaMemcpyFromSymbol_ptds
cudaMemcpyPeer
cudaMemcpyPeerAsync
cudaMemcpyToArray
cudaMemcpyToArrayAsync
cudaMemcpyToArrayAsync_ptsz
cudaMemcpyToArray_ptds
cudaMemcpyToSymbol
cudaMemcpyToSymbolAsync
cudaMemcpyToSymbolAsync_ptsz
cudaMemcpyToSymbol_ptds
cudaMemcpy_ptds
cudaMemset
cudaMemset2D
cudaMemset2DAsync
cudaMemset2DAsync_ptsz
cudaMemset2D_ptds
cudaMemset3D
cudaMemset3DAsync
cudaMemset3DAsync_ptsz
cudaMemset3D_ptds
cudaMemsetAsync
cudaMemsetAsync_ptsz
cudaMemset_ptds
cudaPeerRegister
cudaPeerUnregister
cudaStreamAddCallback
cudaStreamAddCallback_ptsz
cudaStreamAttachMemAsync
cudaStreamAttachMemAsync_ptsz
cudaStreamCreate
cudaStreamCreateWithFlags
cudaStreamCreateWithPriority
cudaStreamDestroy
cudaStreamQuery
cudaStreamQuery_ptsz
cudaStreamSynchronize
cudaStreamSynchronize_ptsz
cudaStreamWaitEvent
cudaStreamWaitEvent_ptsz
cudaThreadSynchronize
cudaUnbindTexture</pre><p class="p"><strong class="ph b">CUDA Primary API</strong></p><pre xml:space="preserve">cu64Array3DCreate
cu64ArrayCreate
cu64D3D9MapVertexBuffer
cu64GLMapBufferObject
cu64GLMapBufferObjectAsync
cu64MemAlloc
cu64MemAllocPitch
cu64MemFree
cu64MemGetInfo
cu64MemHostAlloc
cu64Memcpy2D
cu64Memcpy2DAsync
cu64Memcpy2DUnaligned
cu64Memcpy3D
cu64Memcpy3DAsync
cu64MemcpyAtoD
cu64MemcpyDtoA
cu64MemcpyDtoD
cu64MemcpyDtoDAsync
cu64MemcpyDtoH
cu64MemcpyDtoHAsync
cu64MemcpyHtoD
cu64MemcpyHtoDAsync
cu64MemsetD16
cu64MemsetD16Async
cu64MemsetD2D16
cu64MemsetD2D16Async
cu64MemsetD2D32
cu64MemsetD2D32Async
cu64MemsetD2D8
cu64MemsetD2D8Async
cu64MemsetD32
cu64MemsetD32Async
cu64MemsetD8
cu64MemsetD8Async
cuArray3DCreate
cuArray3DCreate_v2
cuArrayCreate
cuArrayCreate_v2
cuArrayDestroy
cuBinaryFree
cuCompilePtx
cuCtxCreate
cuCtxCreate_v2
cuCtxDestroy
cuCtxDestroy_v2
cuCtxSynchronize
cuD3D10CtxCreate
cuD3D10CtxCreateOnDevice
cuD3D10CtxCreate_v2
cuD3D10MapResources
cuD3D10RegisterResource
cuD3D10UnmapResources
cuD3D10UnregisterResource
cuD3D11CtxCreate
cuD3D11CtxCreateOnDevice
cuD3D11CtxCreate_v2
cuD3D9CtxCreate
cuD3D9CtxCreateOnDevice
cuD3D9CtxCreate_v2
cuD3D9MapResources
cuD3D9MapVertexBuffer
cuD3D9MapVertexBuffer_v2
cuD3D9RegisterResource
cuD3D9RegisterVertexBuffer
cuD3D9UnmapResources
cuD3D9UnmapVertexBuffer
cuD3D9UnregisterResource
cuD3D9UnregisterVertexBuffer
cuEGLStreamConsumerAcquireFrame
cuEGLStreamConsumerConnect
cuEGLStreamConsumerConnectWithFlags
cuEGLStreamConsumerDisconnect
cuEGLStreamConsumerReleaseFrame
cuEGLStreamProducerConnect
cuEGLStreamProducerDisconnect
cuEGLStreamProducerPresentFrame
cuEGLStreamProducerReturnFrame
cuEventCreate
cuEventCreateFromEGLSync
cuEventCreateFromNVNSync
cuEventDestroy
cuEventDestroy_v2
cuEventQuery
cuEventRecord
cuEventRecord_ptsz
cuEventSynchronize
cuGLCtxCreate
cuGLCtxCreate_v2
cuGLInit
cuGLMapBufferObject
cuGLMapBufferObjectAsync
cuGLMapBufferObjectAsync_v2
cuGLMapBufferObjectAsync_v2_ptsz
cuGLMapBufferObject_v2
cuGLMapBufferObject_v2_ptds
cuGLRegisterBufferObject
cuGLUnmapBufferObject
cuGLUnmapBufferObjectAsync
cuGLUnregisterBufferObject
cuGraphicsD3D10RegisterResource
cuGraphicsD3D11RegisterResource
cuGraphicsD3D9RegisterResource
cuGraphicsEGLRegisterImage
cuGraphicsGLRegisterBuffer
cuGraphicsGLRegisterImage
cuGraphicsMapResources
cuGraphicsMapResources_ptsz
cuGraphicsUnmapResources
cuGraphicsUnmapResources_ptsz
cuGraphicsUnregisterResource
cuGraphicsVDPAURegisterOutputSurface
cuGraphicsVDPAURegisterVideoSurface
cuInit
cuLaunch
cuLaunchCooperativeKernel
cuLaunchCooperativeKernelMultiDevice
cuLaunchCooperativeKernel_ptsz
cuLaunchGrid
cuLaunchGridAsync
cuLaunchKernel
cuLaunchKernel_ptsz
cuLinkComplete
cuLinkCreate
cuLinkCreate_v2
cuLinkDestroy
cuMemAlloc
cuMemAllocHost
cuMemAllocHost_v2
cuMemAllocManaged
cuMemAllocPitch
cuMemAllocPitch_v2
cuMemAlloc_v2
cuMemFree
cuMemFreeHost
cuMemFree_v2
cuMemGetInfo
cuMemGetInfo_v2
cuMemHostAlloc
cuMemHostAlloc_v2
cuMemHostRegister
cuMemHostRegister_v2
cuMemHostUnregister
cuMemPeerRegister
cuMemPeerUnregister
cuMemPrefetchAsync
cuMemPrefetchAsync_ptsz
cuMemcpy
cuMemcpy2D
cuMemcpy2DAsync
cuMemcpy2DAsync_v2
cuMemcpy2DAsync_v2_ptsz
cuMemcpy2DUnaligned
cuMemcpy2DUnaligned_v2
cuMemcpy2DUnaligned_v2_ptds
cuMemcpy2D_v2
cuMemcpy2D_v2_ptds
cuMemcpy3D
cuMemcpy3DAsync
cuMemcpy3DAsync_v2
cuMemcpy3DAsync_v2_ptsz
cuMemcpy3DPeer
cuMemcpy3DPeerAsync
cuMemcpy3DPeerAsync_ptsz
cuMemcpy3DPeer_ptds
cuMemcpy3D_v2
cuMemcpy3D_v2_ptds
cuMemcpyAsync
cuMemcpyAsync_ptsz
cuMemcpyAtoA
cuMemcpyAtoA_v2
cuMemcpyAtoA_v2_ptds
cuMemcpyAtoD
cuMemcpyAtoD_v2
cuMemcpyAtoD_v2_ptds
cuMemcpyAtoH
cuMemcpyAtoHAsync
cuMemcpyAtoHAsync_v2
cuMemcpyAtoHAsync_v2_ptsz
cuMemcpyAtoH_v2
cuMemcpyAtoH_v2_ptds
cuMemcpyDtoA
cuMemcpyDtoA_v2
cuMemcpyDtoA_v2_ptds
cuMemcpyDtoD
cuMemcpyDtoDAsync
cuMemcpyDtoDAsync_v2
cuMemcpyDtoDAsync_v2_ptsz
cuMemcpyDtoD_v2
cuMemcpyDtoD_v2_ptds
cuMemcpyDtoH
cuMemcpyDtoHAsync
cuMemcpyDtoHAsync_v2
cuMemcpyDtoHAsync_v2_ptsz
cuMemcpyDtoH_v2
cuMemcpyDtoH_v2_ptds
cuMemcpyHtoA
cuMemcpyHtoAAsync
cuMemcpyHtoAAsync_v2
cuMemcpyHtoAAsync_v2_ptsz
cuMemcpyHtoA_v2
cuMemcpyHtoA_v2_ptds
cuMemcpyHtoD
cuMemcpyHtoDAsync
cuMemcpyHtoDAsync_v2
cuMemcpyHtoDAsync_v2_ptsz
cuMemcpyHtoD_v2
cuMemcpyHtoD_v2_ptds
cuMemcpyPeer
cuMemcpyPeerAsync
cuMemcpyPeerAsync_ptsz
cuMemcpyPeer_ptds
cuMemcpy_ptds
cuMemcpy_v2
cuMemsetD16
cuMemsetD16Async
cuMemsetD16Async_ptsz
cuMemsetD16_v2
cuMemsetD16_v2_ptds
cuMemsetD2D16
cuMemsetD2D16Async
cuMemsetD2D16Async_ptsz
cuMemsetD2D16_v2
cuMemsetD2D16_v2_ptds
cuMemsetD2D32
cuMemsetD2D32Async
cuMemsetD2D32Async_ptsz
cuMemsetD2D32_v2
cuMemsetD2D32_v2_ptds
cuMemsetD2D8
cuMemsetD2D8Async
cuMemsetD2D8Async_ptsz
cuMemsetD2D8_v2
cuMemsetD2D8_v2_ptds
cuMemsetD32
cuMemsetD32Async
cuMemsetD32Async_ptsz
cuMemsetD32_v2
cuMemsetD32_v2_ptds
cuMemsetD8
cuMemsetD8Async
cuMemsetD8Async_ptsz
cuMemsetD8_v2
cuMemsetD8_v2_ptds
cuMipmappedArrayCreate
cuMipmappedArrayDestroy
cuModuleLoad
cuModuleLoadData
cuModuleLoadDataEx
cuModuleLoadFatBinary
cuModuleUnload
cuStreamAddCallback
cuStreamAddCallback_ptsz
cuStreamAttachMemAsync
cuStreamAttachMemAsync_ptsz
cuStreamBatchMemOp
cuStreamBatchMemOp_ptsz
cuStreamCreate
cuStreamCreateWithPriority
cuStreamDestroy
cuStreamDestroy_v2
cuStreamSynchronize
cuStreamSynchronize_ptsz
cuStreamWaitEvent
cuStreamWaitEvent_ptsz
cuStreamWaitValue32
cuStreamWaitValue32_ptsz
cuStreamWaitValue64
cuStreamWaitValue64_ptsz
cuStreamWriteValue32
cuStreamWriteValue32_ptsz
cuStreamWriteValue64
cuStreamWriteValue64_ptsz
cuSurfObjectCreate
cuSurfObjectDestroy
cuSurfRefCreate
cuSurfRefDestroy
cuTexObjectCreate
cuTexObjectDestroy
cuTexRefCreate
cuTexRefDestroy
cuVDPAUCtxCreate
cuVDPAUCtxCreate_v2</pre></div>
</div>
<div class="topic nested1" id="cudnn-function-cli"><a name="cudnn-function-cli" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cudnn-function-cli" name="cudnn-function-cli" shape="rect">15.5. cuDNN Function List for X86 CLI</a></h3>
<div class="body">
<p class="p"><strong class="ph b">cuDNN API functions</strong></p><pre xml:space="preserve">cudnnActivationBackward
cudnnActivationBackward_v3
cudnnActivationBackward_v4
cudnnActivationForward
cudnnActivationForward_v3
cudnnActivationForward_v4
cudnnAddTensor
cudnnBatchNormalizationBackward
cudnnBatchNormalizationBackwardEx
cudnnBatchNormalizationForwardInference
cudnnBatchNormalizationForwardTraining
cudnnBatchNormalizationForwardTrainingEx
cudnnCTCLoss
cudnnConvolutionBackwardBias
cudnnConvolutionBackwardData
cudnnConvolutionBackwardFilter
cudnnConvolutionBiasActivationForward
cudnnConvolutionForward
cudnnCreate
cudnnCreateAlgorithmPerformance
cudnnDestroy
cudnnDestroyAlgorithmPerformance
cudnnDestroyPersistentRNNPlan
cudnnDivisiveNormalizationBackward
cudnnDivisiveNormalizationForward
cudnnDropoutBackward
cudnnDropoutForward
cudnnDropoutGetReserveSpaceSize
cudnnDropoutGetStatesSize
cudnnFindConvolutionBackwardDataAlgorithm
cudnnFindConvolutionBackwardDataAlgorithmEx
cudnnFindConvolutionBackwardFilterAlgorithm
cudnnFindConvolutionBackwardFilterAlgorithmEx
cudnnFindConvolutionForwardAlgorithm
cudnnFindConvolutionForwardAlgorithmEx
cudnnFindRNNBackwardDataAlgorithmEx
cudnnFindRNNBackwardWeightsAlgorithmEx
cudnnFindRNNForwardInferenceAlgorithmEx
cudnnFindRNNForwardTrainingAlgorithmEx
cudnnFusedOpsExecute
cudnnIm2Col
cudnnLRNCrossChannelBackward
cudnnLRNCrossChannelForward
cudnnMakeFusedOpsPlan
cudnnMultiHeadAttnBackwardData
cudnnMultiHeadAttnBackwardWeights
cudnnMultiHeadAttnForward
cudnnOpTensor
cudnnPoolingBackward
cudnnPoolingForward
cudnnRNNBackwardData
cudnnRNNBackwardDataEx
cudnnRNNBackwardWeights
cudnnRNNBackwardWeightsEx
cudnnRNNForwardInference
cudnnRNNForwardInferenceEx
cudnnRNNForwardTraining
cudnnRNNForwardTrainingEx
cudnnReduceTensor
cudnnReorderFilterAndBias
cudnnRestoreAlgorithm
cudnnRestoreDropoutDescriptor
cudnnSaveAlgorithm
cudnnScaleTensor
cudnnSoftmaxBackward
cudnnSoftmaxForward
cudnnSpatialTfGridGeneratorBackward
cudnnSpatialTfGridGeneratorForward
cudnnSpatialTfSamplerBackward
cudnnSpatialTfSamplerForward
cudnnTransformFilter
cudnnTransformTensor
cudnnTransformTensorEx</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="openacc-trace"><a name="openacc-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#openacc-trace" name="openacc-trace" shape="rect">16. OpenACC Trace</a></h2>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> for Linux x86_64 and Power targets is capable
of capturing information about OpenACC execution in the profiled process.
</p>
<p class="p">
OpenACC versions 2.0, 2.5, and 2.6 are supported when using PGI runtime
version 15.7 or later. In order to differentiate constructs (see tooltip
below), a PGI runtime of 16.0 or later is required. Note that
<span class="ph">Nsight Systems</span> does not support the GCC implementation of
OpenACC at this time.
</p>
<p class="p">Under the CPU rows in the timeline tree, each thread that uses OpenACC
will show OpenACC trace information. You can click on a OpenACC API call to
see correlation with the underlying CUDA API calls (highlighted in teal):
</p>
<p class="p"><img class="image" src="graphics/openacc-CUDA-correlation.png" alt="OpenACC rows"></img></p>
<p class="p">If the OpenACC API results in GPU work, that will also be highlighted:</p>
<p class="p"><img class="image" src="graphics/openacc-gpu-correlation.png" alt="OpenACC rows"></img></p>
<p class="p">Hovering over a particular OpenACC construct will bring up a tooltip with
details about that construct:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/openacc-tooltip.png" alt="OpenACC construct tooltip"></img></p>
</blockquote>
<p class="p">
To capture OpenACC information from the <span class="ph">Nsight Systems</span> GUI,
select the <strong class="ph b">Collect OpenACC trace</strong> checkbox under <strong class="ph b">Collect CUDA
trace</strong> configurations. Note that turning on OpenACC tracing will also
turn on CUDA tracing.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/configure-cuda-trace-x86.png" alt="Configure CUDA trace"></img></p>
</blockquote>
<p class="p">
Please note that if your application crashes before all collected OpenACC
trace data has been copied out, some or all data might be lost and not
present in the report.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested0" id="opengl-trace"><a name="opengl-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#opengl-trace" name="opengl-trace" shape="rect">17. OpenGL Trace</a></h2>
<div class="body">
<p class="p">OpenGL and OpenGL ES APIs can be traced to assist in the analysis of CPU and
GPU interactions.
</p>
<p class="p">A few usage examples are:</p>
<ol class="ol">
<li class="li">
<p class="p">Visualize how long <samp class="ph codeph">eglSwapBuffers</samp> (or similar) is taking.
</p>
</li>
<li class="li">
<p class="p">API trace can easily show correlations between thread state and graphics
driver's behavior, uncovering where the CPU may be waiting on the GPU.
</p>
</li>
<li class="li">
<p class="p">Spot bubbles of opportunity on the GPU, where more GPU workload could be
created.
</p>
</li>
<li class="li">
<p class="p">Use <samp class="ph codeph">KHR_debug</samp> extension to trace GL events on both the CPU and GPU.
</p>
</li>
</ol>
<p class="p">OpenGL trace feature in <span class="ph">Nsight Systems</span> consists of two
different activities which will be shown in the CPU rows for those threads
</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">CPU trace</strong>: interception of API calls that an application does to APIs
(such as OpenGL, OpenGL ES, EGL, GLX, WGL, etc.).
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">GPU trace</strong> (or <strong class="ph b">workload trace</strong>): trace of GPU workload (activity)
triggered by use of OpenGL or OpenGL ES. Since draw calls are executed
back-to-back, the GPU workload trace ranges include many OpenGL draw calls
and operations in order to optimize performance overhead, rather than
tracing each individual operation.
</p>
</li>
</ul>
<p class="p">
To collect GPU trace, the <samp class="ph codeph">glQueryCounter()</samp> function is used
to measure how much time batches of GPU workload take to complete.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/configure-opengl-trace.png" alt="Configure OpenGL trace"></img></p>
</blockquote>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/configure-opengl-functions.png" alt="Configure OpenGL functions"></img></p>
</blockquote>
<p class="p">
Ranges defined by the <samp class="ph codeph">KHR_debug</samp> calls are represented
similarly to OpenGL API and OpenGL GPU workload trace. GPU ranges in this
case represent <em class="ph i">incremental draw cost</em>. They cannot fully account for
GPUs that can execute multiple draw calls in parallel. In this case,
<span class="ph">Nsight Systems</span> will not show overlapping GPU ranges.
</p>
</div>
<div class="topic nested1" id="opengl-cli"><a name="opengl-cli" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#opengl-cli" name="opengl-cli" shape="rect">17.1. OpenGL Trace Using Command Line</a></h3>
<div class="body">
<p class="p">For general information on using the target CLI, see
<a class="xref" href="topics/cli-profiling" shape="rect">CLI Profiling on Linux</a>. For the
CLI, the functions that are traced are set to the following list:
</p><pre xml:space="preserve">glWaitSync
glReadPixels
glReadnPixelsKHR
glReadnPixelsEXT
glReadnPixelsARB
glReadnPixels
glFlush
glFinishFenceNV
glFinish
glClientWaitSync
glClearTexSubImage
glClearTexImage
glClearStencil
glClearNamedFramebufferuiv
glClearNamedFramebufferiv
glClearNamedFramebufferfv
glClearNamedFramebufferfi
glClearNamedBufferSubDataEXT
glClearNamedBufferSubData
glClearNamedBufferDataEXT
glClearNamedBufferData
glClearIndex
glClearDepthx
glClearDepthf
glClearDepthdNV
glClearDepth
glClearColorx
glClearColorIuiEXT
glClearColorIiEXT
glClearColor
glClearBufferuiv
glClearBufferSubData
glClearBufferiv
glClearBufferfv
glClearBufferfi
glClearBufferData
glClearAccum
glClear
glDispatchComputeIndirect
glDispatchComputeGroupSizeARB
glDispatchCompute
glComputeStreamNV
glNamedFramebufferDrawBuffers
glNamedFramebufferDrawBuffer
glMultiDrawElementsIndirectEXT
glMultiDrawElementsIndirectCountARB
glMultiDrawElementsIndirectBindlessNV
glMultiDrawElementsIndirectBindlessCountNV
glMultiDrawElementsIndirectAMD
glMultiDrawElementsIndirect
glMultiDrawElementsEXT
glMultiDrawElementsBaseVertex
glMultiDrawElements
glMultiDrawArraysIndirectEXT
glMultiDrawArraysIndirectCountARB
glMultiDrawArraysIndirectBindlessNV
glMultiDrawArraysIndirectBindlessCountNV
glMultiDrawArraysIndirectAMD
glMultiDrawArraysIndirect
glMultiDrawArraysEXT
glMultiDrawArrays
glListDrawCommandsStatesClientNV
glFramebufferDrawBuffersEXT
glFramebufferDrawBufferEXT
glDrawTransformFeedbackStreamInstanced
glDrawTransformFeedbackStream
glDrawTransformFeedbackNV
glDrawTransformFeedbackInstancedEXT
glDrawTransformFeedbackInstanced
glDrawTransformFeedbackEXT
glDrawTransformFeedback
glDrawTexxvOES
glDrawTexxOES
glDrawTextureNV
glDrawTexsvOES
glDrawTexsOES
glDrawTexivOES
glDrawTexiOES
glDrawTexfvOES
glDrawTexfOES
glDrawRangeElementsEXT
glDrawRangeElementsBaseVertexOES
glDrawRangeElementsBaseVertexEXT
glDrawRangeElementsBaseVertex
glDrawRangeElements
glDrawPixels
glDrawElementsInstancedNV
glDrawElementsInstancedEXT
glDrawElementsInstancedBaseVertexOES
glDrawElementsInstancedBaseVertexEXT
glDrawElementsInstancedBaseVertexBaseInstanceEXT
glDrawElementsInstancedBaseVertexBaseInstance
glDrawElementsInstancedBaseVertex
glDrawElementsInstancedBaseInstanceEXT
glDrawElementsInstancedBaseInstance
glDrawElementsInstancedARB
glDrawElementsInstanced
glDrawElementsIndirect
glDrawElementsBaseVertexOES
glDrawElementsBaseVertexEXT
glDrawElementsBaseVertex
glDrawElements
glDrawCommandsStatesNV
glDrawCommandsStatesAddressNV
glDrawCommandsNV
glDrawCommandsAddressNV
glDrawBuffersNV
glDrawBuffersATI
glDrawBuffersARB
glDrawBuffers
glDrawBuffer
glDrawArraysInstancedNV
glDrawArraysInstancedEXT
glDrawArraysInstancedBaseInstanceEXT
glDrawArraysInstancedBaseInstance
glDrawArraysInstancedARB
glDrawArraysInstanced
glDrawArraysIndirect
glDrawArraysEXT
glDrawArrays
eglSwapBuffersWithDamageKHR
eglSwapBuffers
glXSwapBuffers
glXQueryDrawable
glXGetCurrentReadDrawable
glXGetCurrentDrawable
glGetQueryObjectuivEXT
glGetQueryObjectuivARB
glGetQueryObjectuiv
glGetQueryObjectivARB
glGetQueryObjectiv</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="custom-etw-trace"><a name="custom-etw-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#custom-etw-trace" name="custom-etw-trace" shape="rect">18. Custom ETW Trace</a></h2>
<div class="body">
<p class="p">
Use the custom ETW trace feature to enable and collect any manifest-based
ETW log. The collected events are displayed on the timeline on dedicated
rows for each event type.
</p>
<p class="p">
Custom ETW is available on Windows target machines.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/custom-etw-add-provider.png" alt="Adding details of an ETW provider"></img></p>
</blockquote>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/custom-etw-trace-settings.png" alt="Adding an ETW provider to the trace settings"></img></p>
</blockquote>
<p class="p"><img class="image" src="graphics/custom-etw-events-timeline.png" alt="Display of custom ETW trace events on the timeline"></img></p>
<p class="p">To retain the .etl trace files captured, so that they can be viewed in
other tools (e.g. GPUView), change the "Save ETW log files in project
folder" option under "Profile Behavior" in <span class="ph">Nsight Systems</span>'s
global Options dialog. The .etl files will appear in the same folder as the
.nsys-rep file, accessible by right-clicking the report in the Project Explorer
and choosing "Show in Folder...". Data collected from each ETW provider
will appear in its own .etl file, and an additional .etl file named
"Report XX-Merged-*.etl", containing the events from all captured sources,
will be created as well.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested0" id="gpu-metric-sampling"><a name="gpu-metric-sampling" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#gpu-metric-sampling" name="gpu-metric-sampling" shape="rect">GPU Metrics</a></h2>
<div class="body"></div>
<div class="topic nested1" id="gms-introduction"><a name="gms-introduction" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-introduction" name="gms-introduction" shape="rect">Overview</a></h3>
<div class="body">
<p class="p">GPU Metrics feature is intended to identify performance limiters in
applications using GPU for computations and graphics. It uses periodic
sampling to gather performance metrics and detailed timing statistics
associated with different GPU hardware units taking advantage of
specialized hardware to capture this data in a single pass with
minimal overhead.
</p>
<p class="p"><strong class="ph b">Note:</strong> GPU Metrics will give you precise device level information,
but it does not know which process or context is involved. GPU context switch trace provides
less precise information, but will give you process and context information.
</p>
<p class="p"><img class="image" src="graphics/gpumetrics_screenshot.png" alt="Example GPU Metrics screenshot"></img></p>
<p class="p">These metrics provide an overview of GPU efficiency over time within
compute, graphics, and input/output (IO) activities such as:
</p>
<ul class="ul">
<li class="li"><strong class="ph b">IO throughputs:</strong> PCIe, NVLink, and GPU memory bandwidth
</li>
<li class="li"><strong class="ph b">SM utilization:</strong> SMs activity, tensor core activity, instructions
issued, warp occupancy, and unassigned warp slots
</li>
</ul>
<p class="p">It is designed to help users answer the common questions:</p>
<ul class="ul">
<li class="li">Is my GPU idle?</li>
<li class="li">Is my GPU full? Enough kernel grids size and streams? Are my SMs and
warp slots full?
</li>
<li class="li">Am I using TensorCores?</li>
<li class="li">Is my instruction rate high?</li>
<li class="li">Am I possibly blocked on IO, or number of warps, etc</li>
</ul>
<p class="p"><span class="ph">Nsight Systems</span> GPU Metrics is only available for Linux
targets on x86-64 and aarch64, and for Windows targets. It requires
NVIDIA Turing architecture or newer.
</p>
<div class="p">Minimum required driver versions:
<ul class="ul">
<li class="li">NVIDIA Turing architecture TU10x, TU11x - r440</li>
<li class="li">NVIDIA Ampere architecture GA100 - r450</li>
<li class="li">NVIDIA Ampere architecture GA100 MIG - r470 TRD1</li>
<li class="li">NVIDIA Ampere architecture GA10x - r455</li>
</ul>
</div>
<p class="p"><strong class="ph b">Note:</strong> Elevated permissions are required. On Linux use sudo to
elevate privileges. On Windows the user must run from an admin command
prompt or accept the UAC escalation dialog. See
<a class="xref" href="https://developer.nvidia.com/ERR_NVGPUCTRPERM" target="_blank" shape="rect">Permissions Issues and Performance Counters</a>
for more information.
</p>
</div>
</div>
<div class="topic nested1" id="gms-from-CLI"><a name="gms-from-CLI" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-from-CLI" name="gms-from-CLI" shape="rect">Launching GPU Metric from the CLI</a></h3>
<div class="body">
<div class="p">GPU Metrics feature is controlled with 3 CLI switches:
<ul class="ul">
<li class="li">--gpu-metrics-device=[all, none, <index>] selects GPUs to sample (default is none)</li>
<li class="li">--gpu-metrics-set=[<index>, <alias>] selects metric set to use (default is the 1st suitable from the list)</li>
<li class="li">--gpu-metrics-frequency=[10..200000] selects sampling frequency in Hz (default is 10000)</li>
</ul>
</div>
<div class="p">To profile with default options and sample GPU Metrics on GPU 0:
<pre xml:space="preserve"># Must have elevated permissions (see https://developer.nvidia.com/ERR_NVGPUCTRPERM) or be root (Linux) or Administrator (Windows)
$ <span class="ph">nsys</span> profile --gpu-metrics-device=0 ./my-app</pre></div>
<div class="p">To list available GPUs, use:
<pre xml:space="preserve">$ <span class="ph">nsys</span> profile --gpu-metrics-device=help
Possible --gpu-metrics-device values are:
0: Quadro GV100 PCI[0000:17:00.0]
1: GeForce RTX 2070 SUPER PCI[0000:65:00.0]
all: Select all supported GPUs
none: Disable GPU Metrics [Default]</pre></div>
<div class="p">By default, the first <strong class="ph b">metric set</strong> which supports all selected
GPUs is used. But you can manually select another metric set from the
list. To see available metric sets, use:
<pre xml:space="preserve">$ <span class="ph">nsys</span> profile --gpu-metrics-set=help
Possible --gpu-metrics-set values are:
[0] [tu10x] General Metrics for NVIDIA TU10x (any frequency)
[1] [tu11x] General Metrics for NVIDIA TU11x (any frequency)
[2] [ga100] General Metrics for NVIDIA GA100 (any frequency)
[3] [ga10x] General Metrics for NVIDIA GA10x (any frequency)
[4] [tu10x-gfxt] Graphics Throughput Metrics for NVIDIA TU10x (frequency >= 10kHz)
[5] [ga10x-gfxt] Graphics Throughput Metrics for NVIDIA GA10x (frequency >= 10kHz)
[6] [ga10x-gfxact] Graphics Async Compute Triage Metrics for NVIDIA GA10x (frequency >= 10kHz)</pre></div>
<div class="p">By default, <strong class="ph b">sampling frequency</strong> is set to 10 kHz. But you can manually set it from 10 Hz to 200 kHz using
<pre xml:space="preserve">--gpu-metrics-frequency=<value></pre></div>
</div>
</div>
<div class="topic nested1" id="gms-from-GUI"><a name="gms-from-GUI" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-from-GUI" name="gms-from-GUI" shape="rect">Launching GPU Metrics from the GUI</a></h3>
<div class="body">
<p class="p">For commands to launch GPU Metrics from the CLI with examples, see the
<a class="xref" href="topics/cli-profiling" shape="rect">CLI documentation</a>.
</p>
<p class="p"> When launching analysis in <span class="ph">Nsight Systems</span>, select
<strong class="ph b">Collect GPU Metrics</strong>.
</p>
<p class="p"><img class="image" src="graphics/gpumetrics-GUI.png" alt="GPU Metrics: GUI"></img></p>
<p class="p"> Select the <strong class="ph b">GPUs</strong> dropdown to pick which GPUs you wish to
sample.
</p>
<p class="p"> Select the <strong class="ph b">Metric set:</strong> dropdown to choose which available
metric set you would like to sample.
</p>
<p class="p"><img class="image" src="graphics/gpumetrics-GUI-2.png" alt="GPU Metrics: Metric sets"></img></p>
<p class="p">Note that metric sets for GPUs that are not being sampled will be
greyed out.
</p>
</div>
</div>
<div class="topic nested1" id="gms-sampling-rate"><a name="gms-sampling-rate" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-sampling-rate" name="gms-sampling-rate" shape="rect">Sampling frequency</a></h3>
<div class="body">
<p class="p">Sampling frequency can be selected from the range of 10 Hz - 200 kHz.
The default value is 10 kHz.
</p>
<p class="p">The maximum sampling frequency without buffer overflow events depends
on GPU (SM count), GPU load intensity, and overall system load. The
bigger the chip and the higher the load, the lower the maximum frequency.
If you need higher frequency, you can increase it until you get
"Buffer overflow" message in the Diagnostics Summary report page.
</p>
<p class="p">Each metric set has a recommended sampling frequency range in its
description. These ranges are approximate. If you observe
<samp class="ph codeph">Inonsistent Data</samp> or <samp class="ph codeph">Missing Data</samp> ranges
on timeline, please try closer to the recommended frequency.
</p>
</div>
</div>
<div class="topic nested1" id="gms-available-metrics"><a name="gms-available-metrics" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-available-metrics" name="gms-available-metrics" shape="rect">Available metrics</a></h3>
<div class="body">
<ul class="ul">
<li class="li"><strong class="ph b">GPC Clock Frequency</strong> -
<samp class="ph codeph">gpc__cycles_elapsed.avg.per_second</samp><p class="p">The average GPC clock frequency in hertz. In public documentation
the GPC clock may be called the "Application" clock, "Graphic"
clock, "Base" clock, or "Boost" clock.
</p>
<p class="p"><strong class="ph b">Note</strong>: The collection mechanism for GPC can result in a
small fluctuation between samples.
</p>
</li>
<li class="li"><strong class="ph b">SYS Clock Frequency</strong> -
<samp class="ph codeph">sys__cycles_elapsed.avg.per_second</samp><p class="p">The average SYS clock frequency in hertz. The GPU front end
(command processor), copy engines, and the performance monitor run
at the SYS clock. On Turing and NVIDIA GA100 GPUs the sampling
frequency is based upon a period of SYS clocks (not time)
so samples per second will vary with SYS clock. On NVIDIA GA10x GPUs
the sampling frequency is based upon a fixed frequency clock.
The maximum frequency scales linearly with the SYS clock.
</p>
</li>
<li class="li"><strong class="ph b">GR Active</strong> -
<samp class="ph codeph">gr__cycles_active.sum.pct_of_peak_sustained_elapsed</samp><p class="p">The percentage of cycles the graphics/compute engine is active. The
graphics/compute engine is active if there is any work in the graphics
pipe or if the compute pipe is processing work.
</p>
<p class="p">GA100 MIG - MIG is not yet supported. This counter will report the
activity of the primary GR engine.
</p>
</li>
<li class="li"><strong class="ph b">Sync Compute In Flight</strong> -
<samp class="ph codeph">gr__dispatch_cycles_active_queue_sync.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The percentage of cycles with synchronous compute in flight.</p>
<p class="p">CUDA: CUDA will only report synchronous queue in the case of MPS
configured with 64 sub-context. Synchronous refers to work submitted
in VEID=0.
</p>
<p class="p">Graphics: This will be true if any compute work submitted from the
direct queue is in flight.
</p>
</li>
<li class="li"><strong class="ph b">Async Compute in Flight</strong> -
<samp class="ph codeph">gr__dispatch_cycles_active_queue_async.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The percentage of cycles with asynchronous compute in flight.</p>
<p class="p">CUDA: CUDA will only report all compute work as asynchronous. The
one exception is if MPS is configured and all 64 sub-context are in
use. 1 sub-context (VEID=0) will report as synchronous.
</p>
<p class="p">Graphics: This will be true if any compute work submitted from a
compute queue is in flight.
</p>
</li>
<li class="li"><strong class="ph b">Draw Started</strong> -
<samp class="ph codeph">fe__draw_count.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of draw calls issued to the graphics pipe to the maximum
sustained rate of the graphics pipe.
</p>
<p class="p"><strong class="ph b">Note:</strong>The percentage will always be very low as the front end
can issue draw calls significantly faster than the pipe can execute
the draw call. The rendering of this row will be changed to help
indicate when draw calls are being issued.
</p>
</li>
<li class="li"><strong class="ph b">Dispatch Started</strong> -
<samp class="ph codeph">gr__dispatch_count.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of compute grid launches (dispatches) to the compute pipe
to the maximum sustained rate of the compute pipe.
</p>
<p class="p"><strong class="ph b">Note:</strong> The percentage will always be very low as the front
end can issue grid launches significantly faster than the pipe can
execute the draw call. The rendering of this row will be changed to
help indicate when grid launches are being issued.
</p>
</li>
<li class="li"><strong class="ph b">Vertex/Tess/Geometry Warps in Flight</strong> -
<samp class="ph codeph">tpc__warps_active_shader_vtg_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of active vertex, geometry, tessellation, and meshlet
shader warps resident on the SMs to the maximum number of warps per SM
as a percentage.
</p>
</li>
<li class="li"><strong class="ph b">Pixel Warps in Flight</strong> -
<samp class="ph codeph">tpc__warps_active_shader_ps_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of active pixel/fragment shader warps resident on the SMs
to the maximum number of warps per SM as a percentage.
</p>
</li>
<li class="li"><strong class="ph b">Compute Warps in Flight</strong> -
<samp class="ph codeph">tpc__warps_active_shader_cs_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of active compute shader warps resident on the SMs to the
maximum number of warps per SM as a percentage.
</p>
</li>
<li class="li"><strong class="ph b">Active SM Unused Warp Slots</strong> -
<samp class="ph codeph">tpc__warps_inactive_sm_active_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of inactive warp slots on the SMs to the maximum number
of warps per SM as a percentage. This is an indication of how many
more warps may fit on the SMs if occupancy is not limited by a resource
such as max warps of a shader type, shared memory, registers per
thread, or thread blocks per SM.
</p>
</li>
<li class="li"><strong class="ph b">Idle SM Unused Warp Slots</strong> -
<samp class="ph codeph">tpc__warps_inactive_sm_idle_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of inactive warps slots due to idle SMs to the the maximum
number of warps per SM as a percentage.
</p>
<div class="p">This is an indicator that the current workload on the SM is not
sufficient to put work on all SMs. This can be due to:
<ul class="ul">
<li class="li">CPU starving the GPU</li>
<li class="li">current work is too small to saturate the GPU</li>
<li class="li">current work is trailing off but blocking next work</li>
</ul>
</div>
</li>
<li class="li"><strong class="ph b">SM Active</strong> -
<samp class="ph codeph">sm__cycles_active.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of cycles SMs had at least 1 warp in flight (allocated on
SM) to the number of cycles as a percentage. A value of 0 indicates
all SMs were idle (no warps in flight). A value of 50% can indicate
some gradient between all SMs active 50% of the sample period or 50%
of SMs active 100% of the sample period.
</p>
</li>
<li class="li"><strong class="ph b">SM Issue</strong> -
<samp class="ph codeph">sm__inst_executed_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of cycles that SM sub-partitions (warp schedulers) issued
an instruction to the number of cycles in the sample period as a
percentage.
</p>
</li>
<li class="li"><strong class="ph b">Tensor Active</strong> -
<samp class="ph codeph">sm__pipe_tensor_cycles_active_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of cycles the SM tensor pipes were active issuing tensor
instructions to the number of cycles in the sample period as a percentage.
</p>
<p class="p">TU102/4/6: This metric is not available on TU10x for periodic
sampling. Please see Tensor Active/FP16 Active.
</p>
</li>
<li class="li"><strong class="ph b">Tensor Active / FP16 Active</strong> -
<samp class="ph codeph">sm__pipe_shared_cycles_active_realtime.avg.pct_of_peak_sustained_elapsed</samp><p class="p">TU102/4/6 only</p>
<p class="p">The ratio of cycles the SM tensor pipes or FP16x2 pipes were active
issuing tensor instructions to the number of cycles in the sample
period as a percentage.
</p>
</li>
<li class="li"><strong class="ph b">VRAM Bandwidth</strong> -
<samp class="ph codeph">dram__throughput.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of cycles the GPU device memory controllers were actively
performing read or write operations to the number of cycles in the
sample period as a percentage.
</p>
</li>
<li class="li"><strong class="ph b">NVLink bytes received</strong> -
<samp class="ph codeph">nvlrx__bytes.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of bytes received on the NVLink interface to the maximum
number of bytes receivable in the sample period as a percentage. This
value includes protocol overhead.
</p>
</li>
<li class="li"><strong class="ph b">NVLink bytes transmitted</strong> -
<samp class="ph codeph">nvltx__bytes.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of bytes transmitted on the NVLink interface to the
maximum number of bytes transmittable in the sample period as a
percentage. This value includes protocol overhead.
</p>
</li>
<li class="li"><strong class="ph b">PCIe Read Throughput</strong> -
<samp class="ph codeph">pcie__read_bytes.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of bytes received on the PCIe interface to the maximum
number of bytes receivable in the sample period as a percentage. The
theoretical value is calculated based upon the PCIe generation and
number of lanes. This value includes protocol overhead.
</p>
</li>
<li class="li"><strong class="ph b">PCIe Write Throughput</strong> -
<samp class="ph codeph">pcie__write_bytes.avg.pct_of_peak_sustained_elapsed</samp><p class="p">The ratio of bytes received on the PCIe interface to the maximum
number of bytes receivable in the sample period as a percentage. The
theoretical value is calculated based upon the PCIe generation and
number of lanes. This value includes protocol overhead.
</p>
</li>
</ul>
</div>
</div>
<div class="topic nested1" id="gms-export-query"><a name="gms-export-query" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-export-query" name="gms-export-query" shape="rect">Exporting and Querying Data</a></h3>
<div class="body">
<p class="p">It is possible to access metric values for automated processing
using the <span class="ph">Nsight Systems</span> CLI export capabilities.
</p>
<p class="p">An example that extracts values of "SM Active":</p><pre xml:space="preserve">
$ <span class="ph">nsys</span> export -t sqlite report.nsys-rep
$ sqlite3 report.sqlite "SELECT rawTimestamp, CAST(JSON_EXTRACT(data, '$.\"SM Active\"') as INTEGER) as value FROM GENERIC_EVENTS WHERE value != 0 LIMIT 10"
309277039|80
309301295|99
309325583|99
309349776|99
309373872|60
309397872|19
309421840|100
309446000|100
309470096|100
309494161|99
</pre><p class="p">An overview of data stored in each event (JSON):</p><pre xml:space="preserve">
$ sqlite3 report.sqlite "SELECT data FROM GENERIC_EVENTS LIMIT 1"
{
"Unallocated Warps in Active SM": "0",
"Compute Warps In Flight": "52",
"Pixel Warps In Flight": "0",
"Vertex\/Tess\/Geometry Warps In Flight": "0",
"Total SM Occupancy": "52",
"GR Active (GE\/CE)": "100",
"Sync Compute In Flight": "0",
"Async Compute In Flight": "98",
"NVLink bytes received": "0",
"NVLink bytes transmitted": "0",
"PCIe Rx Throughput": "0",
"PCIe Tx Throughput": "1",
"DRAM Read Throughput": "0",
"DRAM Write Throughput": "0",
"Tensor Active \/ FP16 Active": "0",
"SM Issue": "10",
"SM Active": "52"
}
</pre><p class="p">Values are integer percentages (0..100)</p>
</div>
</div>
<div class="topic nested1" id="gms-limitations"><a name="gms-limitations" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gms-limitations" name="gms-limitations" shape="rect">Limitations</a></h3>
<div class="body">
<div class="p">
<ul class="ul">
<li class="li">
<p class="p">If metric sets with NVLink are used but the links are not active,
they may appear as fully utilized.
</p>
</li>
<li class="li">
<p class="p">Only one tool that subscribes to these counters can be used at a
time, therefore, <span class="ph">Nsight Systems</span> GPU Metrics feature
cannot be used at the same time as the following tools:
</p>
<ul class="ul">
<li class="li">Nsight Graphics</li>
<li class="li">Nsight Compute</li>
<li class="li">DCGM (Data Center GPU Manager)
<p class="p">Use the following command:</p>
<ul class="ul">
<li class="li">dcgmi profile --pause</li>
<li class="li">dcgmi profile --resume</li>
</ul>
<p class="p">Or API:</p>
<ul class="ul">
<li class="li">dcgmProfPause</li>
<li class="li">dcgmProfResume</li>
</ul>
</li>
<li class="li">Non-NVIDIA products which use:
<ul class="ul">
<li class="li">CUPTI sampling used directly in the application. CUPTI trace is
okay (although it will block <span class="ph">Nsight Systems</span> CUDA trace)
</li>
<li class="li">DCGM library</li>
</ul>
</li>
</ul>
</li>
<li class="li"><span class="ph">Nsight Systems</span> limits the amount of memory that can be
used to store GPU Metrics samples. Analysis with higher sampling rates
or on GPUs with more SMs has a risk of exceeding this limit. This will
lead to gaps on timeline filled with <samp class="ph codeph">Missing Data</samp>
ranges. Future releases will reduce the frequency of this happening.
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="topic nested0" id="nvvideo-trace"><a name="nvvideo-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#nvvideo-trace" name="nvvideo-trace" shape="rect">20. NVIDIA Video Codec SDK Trace</a></h2>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> for x86 Linux and Windows targets can
trace calls from the NV Video Codec SDK. This software trace can be
launched from the GUI or using the <samp class="ph codeph">--trace nvvideo</samp> from
the CLI
</p>
<p class="p"><img class="image" src="graphics/select-video-codec.png" alt="NV Video Codec SDK trace selection"></img></p>
<p class="p">On the timeline, calls on the CPU to the NV Encoder API and NV Decoder
API will be shown.
</p>
<p class="p"><img class="image" src="graphics/video-codec-trace.png" alt="NV Video Codec SDK trace in timeline"></img></p>
</div>
<div class="topic nested1" id="nvenc-default-function"><a name="nvenc-default-function" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvenc-default-function" name="nvenc-default-function" shape="rect">20.1. NV Encoder API Functions Traced by Default</a></h3>
<div class="body"><pre xml:space="preserve">
NvEncodeAPICreateInstance
nvEncOpenEncodeSession
nvEncGetEncodeGUIDCount
nvEncGetEncodeGUIDs
nvEncGetEncodeProfileGUIDCount
nvEncGetEncodeProfileGUIDs
nvEncGetInputFormatCount
nvEncGetInputFormats
nvEncGetEncodeCaps
nvEncGetEncodePresetCount
nvEncGetEncodePresetGUIDs
nvEncGetEncodePresetConfig
nvEncGetEncodePresetConfigEx
nvEncInitializeEncoder
nvEncCreateInputBuffer
nvEncDestroyInputBuffer
nvEncCreateBitstreamBuffer
nvEncDestroyBitstreamBuffer
nvEncEncodePicture
nvEncLockBitstream
nvEncUnlockBitstream
nvEncLockInputBuffer
nvEncUnlockInputBuffer
nvEncGetEncodeStats
nvEndGetSequenceParams
nvEncRegisterAsyncEvent
nvEncUnregisterAsyncEvent
nvEncMapInputResource
nvEncUnmapInputResource
nvEncDestroyEncoder
nvEncInvalidateRefFrames
nvEncOpenEncodeSessionEx
nvEncRegisterResource
nvEncUnregisterResource
nvEncReconfigureEncoder
nvEncCreateMVBuffer
nvEncDestroyMVBuffer
nvEncRunMotionEstimationOnly
nvEncGetLastErrorString
nvEncSetIOCudaStreams
nvEncGetSequenceParamEx
</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested1" id="nvdec-default-function"><a name="nvdec-default-function" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvdec-default-function" name="nvdec-default-function" shape="rect">20.2. NV Decoder API Functions Traced by Default</a></h3>
<div class="body"><pre xml:space="preserve">
cuvidCreateVideoSource
cuvidCreateVideoSourceW
cuvidDestroyVideoSource
cuvidSetVideoSourceState
cudaVideoState
cuvidGetSourceVideoFormat
cuvidGetSourceAudioFormat
cuvidCreateVideoParser
cuvidParseVideoData
cuvidDestroyVideoParser
cuvidCreateDecoder
cuvidDestroyDecoder
cuvidDecodePicture
cuvidGetDecodeStatus
cuvidReconfigureDecoder
cuvidMapVideoFrame
cuvidUnmapVideoFrame
cuvidMapVideoFrame64
cuvidUnmapVideoFrame64
cuvidCtxLockCreate
cuvidCtxLockDestroy
cuvidCtxLock
cuvidCtxUnlock
</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested1" id="nvjpeg-default-function"><a name="nvjpeg-default-function" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvjpeg-default-function" name="nvjpeg-default-function" shape="rect">20.3. NV JPEG API Functions Traced by Default</a></h3>
<div class="body"><pre xml:space="preserve">
nvjpegBufferDeviceCreate
nvjpegBufferDeviceDestroy
nvjpegBufferDeviceRetrieve
nvjpegBufferPinnedCreate
nvjpegBufferPinnedDestroy
nvjpegBufferPinnedRetrieve
nvjpegCreate
nvjpegCreateEx
nvjpegCreateSimple
nvjpegDecode
nvjpegDecodeBatched
nvjpegDecodeBatchedEx
nvjpegDecodeBatchedInitialize
nvjpegDecodeBatchedPreAllocate
nvjpegDecodeBatchedSupported
nvjpegDecodeBatchedSupportedEx
nvjpegDecodeJpeg
nvjpegDecodeJpegDevice
nvjpegDecodeJpegHost
nvjpegDecodeJpegTransferToDevice
nvjpegDecodeParamsCreate
nvjpegDecodeParamsDestroy
nvjpegDecodeParamsSetAllowCMYK
nvjpegDecodeParamsSetOutputFormat
nvjpegDecodeParamsSetROI
nvjpegDecodeParamsSetScaleFactor
nvjpegDecoderCreate
nvjpegDecoderDestroy
nvjpegDecoderJpegSupported
nvjpegDecoderStateCreate
nvjpegDestroy
nvjpegEncodeGetBufferSize
nvjpegEncodeImage
nvjpegEncodeRetrieveBitstream
nvjpegEncodeRetrieveBitstreamDevice
nvjpegEncoderParamsCopyHuffmanTables
nvjpegEncoderParamsCopyMetadata
nvjpegEncoderParamsCopyQuantizationTables
nvjpegEncoderParamsCreate
nvjpegEncoderParamsDestroy
nvjpegEncoderParamsSetEncoding
nvjpegEncoderParamsSetOptimizedHuffman
nvjpegEncoderParamsSetQuality
nvjpegEncoderParamsSetSamplingFactors
nvjpegEncoderStateCreate
nvjpegEncoderStateDestroy
nvjpegEncodeYUV,(nvjpegHandle_t handle
nvjpegGetCudartProperty
nvjpegGetDeviceMemoryPadding
nvjpegGetImageInfo
nvjpegGetPinnedMemoryPadding
nvjpegGetProperty
nvjpegJpegStateCreate
nvjpegJpegStateDestroy
nvjpegJpegStreamCreate
nvjpegJpegStreamDestroy
nvjpegJpegStreamGetChromaSubsampling
nvjpegJpegStreamGetComponentDimensions
nvjpegJpegStreamGetComponentsNum
nvjpegJpegStreamGetFrameDimensions
nvjpegJpegStreamGetJpegEncoding
nvjpegJpegStreamParse
nvjpegJpegStreamParseHeader
nvjpegSetDeviceMemoryPadding
nvjpegSetPinnedMemoryPadding
nvjpegStateAttachDeviceBuffer
nvjpegStateAttachPinnedBuffer
</pre></div>
</div>
</div>
<div class="topic nested0" id="communication-trace"><a name="communication-trace" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#communication-trace" name="communication-trace" shape="rect">21. Network Communication Profiling</a></h2>
<div class="body">
<p class="p"></p>
<p class="p"><span class="ph">Nsight Systems</span> can be used to profiles several popular
network communication protocols. To enable this, please select the
<strong class="ph b">Communication profiling options</strong> dropdown.
</p>
<p class="p"><img class="image" src="graphics/project-settings-all.png" alt="Project settings screen"></img></p>
<p class="p">Then select the libraries you would like to trace:</p>
<p class="p"><img class="image" src="graphics/project-settings-communication.png" alt="Communication library selection screen"></img></p>
</div>
<div class="topic nested1" id="mpi-trace"><a name="mpi-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#mpi-trace" name="mpi-trace" shape="rect">21.1. MPI API Trace</a></h3>
<div class="body">
<p class="p">For Linux x86_64, ARM and Power targets, <span class="ph">Nsight Systems</span> is
capable of capturing information about the MPI APIs executed in the profiled
process. It has built-in API trace support for Open MPI and MPICH based MPI
implementations.
</p>
<p class="p"><img class="image" src="graphics/mpi-project.png" alt="MPI trace selection"></img></p>
<p class="p">Only a subset of the MPI API, including blocking and non-blocking
point-to-point and collective communication, and file I/O operations, is traced.
If you require more control over the list of traced APIs or if you are using
a different MPI implementation, you can use the
<a class="xref" href="https://github.com/NVIDIA/cuda-profiler/tree/master/nvtx_pmpi_wrappers" target="_blank" shape="rect">NVTX wrappers for MPI</a>. If you set the
environment variable <samp class="ph codeph">LD_PRELOAD</samp> to the path of generated
wrapper library, <span class="ph">Nsight Systems</span> will capture and report the MPI
API trace information when NVTX tracing is enabled. Choose an NVTX domain
name other than "MPI", since it is filtered out by <span class="ph">Nsight Systems</span>
when MPI tracing is not enabled.
</p>
<p class="p"><img class="image" src="graphics/mpi-trace.png" alt="MPI API trace"></img></p>
<p class="p"><strong class="ph b">MPI Communication Parameters</strong></p>
<p class="p"><span class="ph">Nsight Systems</span> can get additional information about MPI
communication parameters. Currently, the parameters are only visible in the
mouseover tooltips or in the eventlog. This means that the data is only
available via the GUI. Future versions of the tool will export this
information into the SQLite data files for postrun analysis.
</p>
<p class="p">In order to fully interpret MPI communications, data for all ranks
associated with a communication operation must be loaded into
<span class="ph">Nsight Systems</span>.
</p>
<p class="p">Here is an example of MPI_COMM_WORLD data. This does not require any
additional team data, since local rank is the same as global rank.
</p>
<p class="p">(Screenshot shows communication parameters for an MPI_Bcast call on rank
3)
</p>
<p class="p"><img class="image" src="graphics/mpi-comparam1.png" alt="MPI communication parameter trace"></img></p>
<p class="p">When not all processes that are involved in an MPI communication are
loaded into <span class="ph">Nsight Systems</span> the following information is
available.
</p>
<ul class="ul">
<li class="li">Right-hand screenshot shows a reused communicator handle (last number
increased).
</li>
<li class="li">Encoding: MPI_COMM[*team size*]*global-group-root-rank*.*group-ID*</li>
</ul>
<p class="p"><img class="image" src="graphics/mpi-comparam2.png" alt="MPI communication parameter trace"></img></p>
<p class="p"> When all reports are loaded into <span class="ph">Nsight Systems</span>:
</p>
<ul class="ul">
<li class="li">World rank is shown in addition to group-local rank "(world rank X)"</li>
<li class="li">Encoding: MPI_COMM[*team size*]{rank0, rank1, ...}</li>
<li class="li">At most 8 ranks are shown (the numbers represent world ranks, the
position in the list is the group-local rank)
</li>
</ul>
<p class="p"><img class="image" src="graphics/mpi-comparam3.png" alt="MPI communication parameter trace"></img></p>
<p class="p"><strong class="ph b">MPI functions traced:</strong></p><pre xml:space="preserve">
MPI_Init[_thread], MPI_Finalize
MPI_Send, MPI_{B,S,R}send, MPI_Recv, MPI_Mrecv
MPI_Sendrecv[_replace]
MPI_Barrier, MPI_Bcast
MPI_Scatter[v], MPI_Gather[v]
MPI_Allgather[v], MPI_Alltoall[{v,w}]
MPI_Allreduce, MPI_Reduce[_{scatter,scatter_block,local}]
MPI_Scan, MPI_Exscan
MPI_Isend, MPI_I{b,s,r}send, MPI_I[m]recv
MPI_{Send,Bsend,Ssend,Rsend,Recv}_init
MPI_Start[all]
MPI_Ibarrier, MPI_Ibcast
MPI_Iscatter[v], MPI_Igather[v]
MPI_Iallgather[v], MPI_Ialltoall[{v,w}]
MPI_Iallreduce, MPI_Ireduce[{scatter,scatter_block}]
MPI_I[ex]scan
MPI_Wait[{all,any,some}]
MPI_File_{open,close,delete,sync}
MPI_File_{read,write}[_{all,all_begin,all_end}]
MPI_File_{read,write}_at[_{all,all_begin,all_end}]
MPI_File_{read,write}_shared
MPI_File_{read,write}_ordered[_{begin,end}]
MPI_File_i{read,write}[_{all,at,at_all,shared}]
MPI_File_set_{size,view,info}
MPI_File_get_{size,view,info,group,amode}
MPI_File_preallocate</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested1" id="openshmem-trace"><a name="openshmem-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#openshmem-trace" name="openshmem-trace" shape="rect">21.2. OpenSHMEM Library Trace</a></h3>
<div class="body">
<p class="p">If OpenSHMEM library trace is selected <span class="ph">Nsight Systems</span>
will trace the subset of OpenSHMEM API functions that are most likely be
involved in performance bottlenecks. To keep overhead low
<span class="ph">Nsight Systems</span> does not trace all functions.
</p>
<p class="p"><strong class="ph b">OpenSHMEM 1.5 Functions Not Traced</strong></p><pre xml:space="preserve">
shmem_my_pe
shmem_n_pes
shmem_global_exit
shmem_pe_accessible
shmem_addr_accessible
shmem_ctx_{create,destroy,get_team}
shmem_global_exit
shmem_info_get_{version,name}
shmem_{my_pe,n_pes,pe_accessible,ptr}
shmem_query_thread
shmem_team_{create_ctx,destroy}
shmem_team_get_config
shmem_team_{my_pe,n_pes,translate_pe}
shmem_team_split_{2d,strided}
shmem_test*
</pre></div>
</div>
<div class="topic nested1" id="ucx-trace"><a name="ucx-trace" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#ucx-trace" name="ucx-trace" shape="rect">21.3. UCX Library Trace</a></h3>
<div class="body">
<p class="p">If UCX library trace is selected <span class="ph">Nsight Systems</span>
will trace the subset of functions of the UCX protocol layer UCP that are
most likely be involved in performance bottlenecks. To keep overhead low
<span class="ph">Nsight Systems</span> does not trace all functions.
</p>
<p class="p"><strong class="ph b">UCX functions traced:</strong></p><pre xml:space="preserve">
ucp_am_send_nb[x]
ucp_am_recv_data_nbx
ucp_am_data_release
ucp_atomic_{add{32,64},cswap{32,64},fadd{32,64},swap{32,64}}
ucp_atomic_{post,fetch_nb,op_nbx}
ucp_cleanup
ucp_config_{modify,read,release}
ucp_disconnect_nb
ucp_dt_{create_generic,destroy}
ucp_ep_{create,destroy,modify_nb,close_nbx}
ucp_ep_flush[{_nb,_nbx}]
ucp_listener_{create,destroy,query,reject}
ucp_mem_{advise,map,unmap,query}
ucp_{put,get}[_nbi]
ucp_{put,get}_nb[x]
ucp_request_{alloc,cancel,is_completed}
ucp_rkey_{buffer_release,destroy,pack,ptr}
ucp_stream_data_release
ucp_stream_recv_data_nb
ucp_stream_{send,recv}_nb[x]
ucp_stream_worker_poll
ucp_tag_msg_recv_nb[x]
ucp_tag_{send,recv}_nbr
ucp_tag_{send,recv}_nb[x]
ucp_tag_send_sync_nb[x]
ucp_worker_{create,destroy,get_address,get_efd,arm,fence,wait,signal,wait_mem}
ucp_worker_flush[{_nb,_nbx}]
ucp_worker_set_am_{handler,recv_handler}
</pre><p class="p"><strong class="ph b">UCX Functions Not Traced:</strong></p><pre xml:space="preserve">
ucp_config_print
ucp_conn_request_query
ucp_context_{query,print_info}
ucp_get_version[_string]
ucp_ep_{close_nb,print_info,query,rkey_unpack}
ucp_mem_print_info
ucp_request_{check_status,free,query,release,test}
ucp_stream_recv_request_test
ucp_tag_probe_nb
ucp_tag_recv_request_test
ucp_worker_{address_query,print_info,progress,query,release_address}
</pre><p class="p">Additional API functions from other UCX layers may be added in a future
version of the product.
</p>
</div>
</div>
<div class="topic nested1" id="nv-communications"><a name="nv-communications" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nv-communications" name="nv-communications" shape="rect">21.4. NVIDIA NVSHMEM and NCCL Trace</a></h3>
<div class="body">
<p class="p">The NVIDIA network communication libraries NVSHMEM and NCCL have been
instrumented using NVTX annotations. To enable tracing these libraries in
<span class="ph">Nsight Systems</span>, turn on NVTX tracing in the GUI or
CLI. To enable the NVTX instrumentation of the NVSHMEM library, make sure
that the environment variable <samp class="ph codeph">NVSHMEM_NVTX</samp> is set properly,
e.g. <samp class="ph codeph">NVSHMEM_NVTX=common</samp>.
</p>
</div>
</div>
<div class="topic nested1" id="NIC-sampling"><a name="NIC-sampling" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#NIC-sampling" name="NIC-sampling" shape="rect">21.5. NIC Metric Sampling</a></h3>
<div class="body">
<p class="p">This feature is experimental.</p>
<p class="p"><strong class="ph b">Overview</strong></p>
<p class="p">NVIDIA ConnectX smart network interface cards (smart NICs) offer
advanced hardware offloads and accelerations for network operations.
Viewing smart NICs metrics, on <span class="ph">Nsight Systems</span> timeline,
enables developers to better understand their application’s network usage.
Developers can use this information to optimize the application’s
performance.
</p>
<p class="p"><strong class="ph b">Limitations/Requirements</strong></p>
<ul class="ul">
<li class="li">NIC metric sampling supports NVIDIA ConnectX boards
starting with ConnectX 5
</li>
<li class="li">NIC metric sampling supported on Linux x86_64 machines only, having
minimum Linux kernel 4.12 and minimum
MLNX_OFED 4.1.
</li>
<li class="li">NIC metric sampling is only available from
the command line
</li>
</ul>
<p class="p"><strong class="ph b">Collecting NIC Metrics Using the Command Line</strong></p>
<p class="p">To collect NIC performance metric, using <span class="ph">Nsight Systems</span>
CLI, add the <samp class="ph codeph">--nic-metrics</samp> command line switch:
</p><pre xml:space="preserve">nsys profile --nic-metrics=true my_app</pre><p class="p"><img class="image" src="graphics/nic-metrics-sampling.png" alt="NIC metric sampling screenshot"></img></p>
<p class="p"><strong class="ph b">Available Metrics</strong></p>
<ul class="ul">
<li class="li"><strong class="ph b">Bytes sent</strong> - Number of bytes sent through all NIC ports.
</li>
<li class="li"><strong class="ph b">Packets sent</strong> - Number of packets sent through all NIC ports.
</li>
<li class="li"><strong class="ph b">Bytes received</strong> - Number of bytes received by all NIC ports.
</li>
<li class="li"><strong class="ph b">Packets received</strong> - Number of packets received by all NIC
ports.
</li>
<li class="li"><strong class="ph b">CNPs sent</strong> - Number of congestion notification packets sent by the
NIC.
</li>
<li class="li"><strong class="ph b">CNPs received</strong> - Number of congestion notification packets
received and handled by the NIC.
</li>
<li class="li"><strong class="ph b">Send waits</strong> - The number of ticks during which ports had data to
transmit but no data was sent during the entire tick (either because of
insufficient credits or because of lack of arbitration)
</li>
</ul>
<p class="p"><strong class="ph b">Usage Examples</strong></p>
<ul class="ul">
<li class="li">The <samp class="ph codeph">Bytes sent/sec</samp> and the <samp class="ph codeph">Bytes
received/sec</samp> metrics enables identifying idle and busy NIC times.
<ul class="ul">
<li class="li">Developers may shift network operations from busy to idle times
to reduce network congestion and latency.
</li>
<li class="li">Developers can use idle NIC times to send additional data without
reducing application performance.
</li>
</ul>
</li>
<li class="li">CNPs (congestion notification packets) received/sent and Send waits
metrics may explain network latencies. A developer seeing the time periods
when the network was congested may rewrite his algorithm to avoid the
observed congestions.
</li>
<li class="li">Comparing the ratio between bytes sent and packets sent can give
developers a hint about the average packet size their application is using.
The larger the packet size, the higher the practical bandwidth.
</li>
</ul>
</div>
</div>
</div>
<div class="topic nested0" id="report"><a name="report" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#report" name="report" shape="rect">22. Reading Your Report in GUI</a></h2>
<div class="body">
<p class="p"></p>
</div>
<div class="topic nested1" id="generate-new-report"><a name="generate-new-report" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#generate-new-report" name="generate-new-report" shape="rect">22.1. Generating a New Report</a></h3>
<div class="body">
<p class="p">
Users can generate a new report by stopping a profiling session. If a
profiling session has been canceled, a report will not be generated, and
all collected data will be discarded.
</p>
<p class="p">
A new <samp class="ph codeph">.nsys-rep</samp> file will be created and put into the same
directory as the project file (<samp class="ph codeph">.qdproj</samp>).
</p>
</div>
</div>
<div class="topic nested1" id="open-report"><a name="open-report" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#open-report" name="open-report" shape="rect">22.2. Opening an Existing Report</a></h3>
<div class="body">
<p class="p">
An existing <samp class="ph codeph">.nsys-rep</samp> file can be opened using <strong class="ph b">File >
Open...</strong>.
</p>
</div>
</div>
<div class="topic nested1" id="report-sharing"><a name="report-sharing" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#report-sharing" name="report-sharing" shape="rect">22.3. Sharing a Report File</a></h3>
<div class="body">
<p class="p">
Report files (<samp class="ph codeph">.nsys-rep</samp>) are self-contained and can be
shared with other users of <span class="ph">Nsight Systems</span>. The only
requirement is that the same or newer version of
<span class="ph">Nsight Systems</span> is always used to open report files.
</p>
<p class="p">
Project files (<samp class="ph codeph">.qdproj</samp>) are currently not shareable,
since they contain full paths to the report files.
</p>
<p class="p">
To quickly navigate to the directory containing the report file, right
click on it in the Project Explorer, and choose <strong class="ph b">Show in folder...</strong>
in the context menu.
</p>
</div>
</div>
<div class="topic nested1" id="report-tab"><a name="report-tab" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#report-tab" name="report-tab" shape="rect">22.4. Report Tab</a></h3>
<div class="body">
<p class="p">
While generating a new report or loading an existing one, a new tab will
be created. The most important parts of the report tab are:
</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">View selector</strong> — Allows switching between <em class="ph i">Analysis Summary</em>,
<em class="ph i">Timeline View</em>, <em class="ph i">Diagnostics Summary</em>, and <em class="ph i">Symbol
Resolution Logs</em> views.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/report-view-selector.png" alt="Page selector"></img></p>
</blockquote>
</li>
<li class="li">
<p class="p"><strong class="ph b">Timeline</strong> — This is where all charts are displayed.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Function table</strong> — Located below the timeline, it displays
statistical information about functions in the target application in
multiple ways.
</p>
</li>
</ul>
<p class="p">Additionally, the following controls are available:</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Zoom slider</strong> — Allows you to vertically zoom the charts on the
timeline.
</p>
</li>
</ul>
</div>
</div>
<div class="topic nested1" id="analysis-summary-view"><a name="analysis-summary-view" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#analysis-summary-view" name="analysis-summary-view" shape="rect">22.5. Analysis Summary View</a></h3>
<div class="body">
<p class="p">
This view shows a summary of the profiling session. In particular, it is
useful to review the project configuration used to generate this report.
Information from this view can be selected and copied using the mouse
cursor.
</p>
</div>
</div>
<div class="topic nested1" id="timeline-view"><a name="timeline-view" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#timeline-view" name="timeline-view" shape="rect">22.6. Timeline View</a></h3>
<div class="body">
<p class="p">
The timeline view consists of two main controls: the timeline at the top,
and a bottom pane that contains the events view and the function table.
In some cases, when sampling of a process has not been enabled, the
function table might be empty and hidden.
</p>
<p class="p">
The bottom view selector sets the view that is displayed in the bottom
pane.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/bottom-view-selector.png" alt="Bottom view selection"></img></p>
</blockquote>
</div>
<div class="topic nested2" id="timeline"><a name="timeline" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#timeline" name="timeline" shape="rect">22.6.1. Timeline</a></h3>
<div class="body">
<p class="p">
Timeline is a versatile control that contains a tree-like <strong class="ph b">hierarchy</strong>
on the left, and corresponding <em class="ph i">charts</em> on the right.
</p>
<p class="p">
Contents of the hierarchy depend on the project settings used to collect
the report. For example, if a certain feature has not been enabled,
corresponding rows will not be show on the timeline.
</p>
<div class="p">
To generate a timeline screenshot without opening the full GUI, use the
command <pre xml:space="preserve">nsys-ui.exe --screenshot filename.nsys-rep</pre></div>
<p class="p">
To display trace events in the Events View right-click a timeline row and
select the “Show in Events View” command. The events of the selected row
and all of its sub-rows will be displayed in the Events View.
</p>
<p class="p">
If a timeline row has been selected for display in the Events View then
double-clicking a timeline item on that row will automatically scroll the
content of the Events View to make the corresponding Events View item
visible and select it.
</p>
</div>
<div class="topic nested3" id="rowheight"><a name="rowheight" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#rowheight" name="rowheight" shape="rect">Row Height</a></h3>
<div class="body">
<p class="p">
Several of the rows in the timeline use height as a way to model
the percent utilization of resources. This gives the user insight into
what is going on even when the timeline is zoomed all the way out.
</p>
<p class="p"><img class="image" src="graphics/row-height.png" alt="CUDA row heights"></img></p>
<p class="p">
In this picture you see that for kernel occupation there is a colored
bar of variable height.
</p>
<p class="p"><span class="ph">Nsight Systems</span> calculates the average occupancy for the
period of time represented by particular pixel width of screen. It then
uses that average to set the top of the colored section. So, for
instance, if 25% of that timeslice the kernel is active, the bar goes
25% of the distance to the top of the row.
</p>
<p class="p">
In order to make the difference clear, if the percentage of the row
height is non-zero, but would be represented by less than one vertical
pixel, <span class="ph">Nsight Systems</span> displays it as one pixel high.
The gray height represents the maximum usage in that time range.
</p>
<p class="p">
This row height coding is used in the CPU utilization, thread and
process occupancy, kernel occupancy, and memory transfer activity rows.
</p>
</div>
</div>
</div>
<div class="topic nested2" id="events-view"><a name="events-view" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#events-view" name="events-view" shape="rect">22.6.2. Events View</a></h3>
<div class="body">
<p class="p">
The Events View provides a tabular display of the trace events. The view
contents can be searched and sorted.
</p>
<p class="p">
Double-clicking an item in the Events View automatically focuses the
Timeline View on the corresponding timeline item.
</p>
<p class="p">
API calls, GPU executions, and debug markers that occurred within the
boundaries of a debug marker are displayed nested to that debug marker.
Multiple levels of nesting are supported.
</p>
<p class="p">Events view recognizes these types of debug markers:</p>
<ul class="ul">
<li class="li">
<p class="p">NVTX</p>
</li>
<li class="li">
<p class="p">Vulkan VK_EXT_debug_marker markers, VK_EXT_debug_utils labels</p>
</li>
<li class="li">
<p class="p">PIX events and markers</p>
</li>
<li class="li">
<p class="p">OpenGL KHR_debug markers</p>
</li>
</ul>
<p class="p"><img class="image" src="graphics/events-view-nested-markers.png" alt="Events View nested debug markers"></img></p>
<p class="p">You can copy and paste from the events view by highlighting rows, using
<strong class="ph b">Shift</strong> or <strong class="ph b">Ctrl</strong> to enable multi-select. Right clicking on the
selection will give you a copy option.
</p>
<p class="p"><img class="image" src="graphics/event-copy.png" alt="Events View copy selection"></img></p>
<p class="p">Pasting into text gives you a tab separated view:</p>
<p class="p"><img class="image" src="graphics/event-paste-notepad.png" alt="Events View paste into notepad"></img></p>
<p class="p">Pasting into spreadsheet properly copies into rows and columns:</p>
<p class="p"><img class="image" src="graphics/event-paste-spreadsheet.png" alt="Events View paste into spreadsheet"></img></p>
</div>
</div>
<div class="topic nested2" id="function-table-modes"><a name="function-table-modes" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#function-table-modes" name="function-table-modes" shape="rect">22.6.3. Function Table Modes</a></h3>
<div class="body">
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/function-table-modes.png" alt="Function table modes"></img></p>
</blockquote>
<p class="p">The function table can work in three modes:</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Top-Down View</strong> — In this mode, expanding top-level functions
provides information about the <em class="ph i">callee</em> functions. One of the
top-level functions is typically the main function of your application,
or another entry point defined by the runtime libraries.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Bottom-Up View</strong> — This is a reverse of the Top-Down view. On the
top level, there are functions directly hit by the sampling profiler. To
explore all possible call chains leading to these functions, you need to
expand the subtrees of the top-level functions.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Flat View</strong> — This view enumerates all functions ever observed by
the profiler, even if they have never been directly hit, but just
appeared somewhere on the call stack. This view typically provides a
high-level overview of which parts of the code are CPU-intensive.
</p>
</li>
</ul>
<p class="p">
Each of the views helps understand particular performance issues of the
application being profiled. For example:
</p>
<ul class="ul">
<li class="li">
<p class="p">When trying to find specific bottleneck functions that can be optimized,
the Bottom-Up view should be used. Typically, the top few functions
should be examined. Expand them to understand in which contexts they are
being used.
</p>
</li>
<li class="li">
<p class="p">To navigate the call tree of the application and while generally
searching for algorithms and parts of the code that consume unexpectedly
large amount of CPU time, the Top-Down view should be used.
</p>
</li>
<li class="li">
<p class="p">To quickly assess which parts of the application, or high level parts of
an algorithm, consume significant amount of CPU time, use the Flat view.
</p>
</li>
</ul>
<p class="p">
The Top-Down and Bottom-Up views have <em class="ph i">Self</em> and <em class="ph i">Total</em>
columns, while the Flat view has a <em class="ph i">Flat</em> column. It is important to
understand the meaning of each of the columns:
</p>
<ul class="ul">
<li class="li">
<p class="p">Top-Down view</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Self</strong> column denotes the relative amount of time spent executing
instructions of this particular function.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Total</strong> column shows how much time has been spent executing this
function, including all other functions called from this one. Total
values of sibling rows sum up to the Total value of the parent row, or
100% for the top-level rows.
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Bottom-Up view</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Self</strong> column for <em class="ph i">top-level rows</em>, as in the Top-Down view,
shows how much time has been spent directly in this function. Self
times of all top-level rows add up to 100%.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Self</strong> column for <em class="ph i">children rows</em> breaks down the value of
the parent row based on the various call chains leading to that
function. Self times of sibling rows add up to the value of the parent
row.
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p">Flat view</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Flat</strong> column shows how much time this function has been anywhere
on the call stack. Values in this column do not add up or have other
significant relationships.
</p>
</li>
</ul>
<blockquote class="lq">
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">If low-impact functions have been filtered out, values may
not add up correctly to 100%, or to the value of the parent row. This
filtering can be disabled.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<p class="p">Contents of the symbols table is tightly related to the timeline. Users
can apply and modify filters on the timeline, and they will affect
which information is displayed in the symbols table:
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Per-thread filtering</strong> — Each thread that has sampling information
associated with it has a checkbox next to it on the timeline. Only
threads with selected checkboxes are represented in the symbols table.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Time filtering</strong> — A time filter can be setup on the timeline by
pressing the left mouse button, dragging over a region of interest on the
timeline, and then choosing <strong class="ph b">Filter by selection</strong> in the dropdown
menu. In this case, only sampling information collected during the
selected time range will be used to build the symbols table.
</p>
<div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">If too little sampling data is being used to build the symbols
table (for example, when the sampling rate is configured to be low, and a
short period of time is used for time-based filtering), the numbers in
the symbols table might not be representative or accurate in some cases.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="topic nested2" id="filter-dialog"><a name="filter-dialog" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#filter-dialog" name="filter-dialog" shape="rect">22.6.4. Filter Dialog</a></h3>
<div class="body">
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/report-filter-dialog.png" alt="Filter dialog"></img></p>
</blockquote>
<ul class="ul">
<li class="li"><strong class="ph b">Collapse unresolved lines</strong> is useful if some of the binary code does
not have symbols. In this case, subtrees that consist of only unresolved
symbols get collapsed in the Top-Down view, since they provide very
little useful information.
</li>
<li class="li"><strong class="ph b">Hide functions with CPU usage below X%</strong> is useful for large
applications, where the sampling profiler hits lots of function just a
few times. To filter out the "long tail," which is typically not
important for CPU performance bottleneck analysis, this checkbox should
be selected.
</li>
</ul>
</div>
</div>
</div>
<div class="topic nested1" id="diagnostics-view"><a name="diagnostics-view" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#diagnostics-view" name="diagnostics-view" shape="rect">22.7. Diagnostics Summary View</a></h3>
<div class="body">
<p class="p">
This view shows important messages. Some of them were generated during
the profiling session, while some were added while processing and
analyzing data in the report. Messages can be one of the following
types:
</p>
<ul class="ul">
<li class="li">
<p class="p">Informational messages</p>
</li>
<li class="li">
<p class="p">Warnings</p>
</li>
<li class="li">
<p class="p">Errors</p>
</li>
</ul>
<p class="p">
To draw attention to important diagnostics messages, a summary line is
displayed on the timeline view in the top right corner:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/report-diagnostics-link.png" alt="Diagnostics messages"></img></p>
</blockquote>
<p class="p">
Information from this view can be selected and copied using the mouse
cursor.
</p>
</div>
</div>
<div class="topic nested1" id="symbol-resolution-view"><a name="symbol-resolution-view" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#symbol-resolution-view" name="symbol-resolution-view" shape="rect">22.8. Symbol Resolution Logs View</a></h3>
<div class="body">
<p class="p">
This view shows all messages related to the process of resolving symbols.
It might be useful to debug issues when some of the symbol names in the
symbols table of the timeline view are unresolved.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="multi-report-support"><a name="multi-report-support" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#multi-report-support" name="multi-report-support" shape="rect">23. Adding Report to the Timeline</a></h2>
<div class="body">
<p class="p">
Starting with 2021.3, <span class="ph">Nsight Systems</span> can load multiple
report files into a single timeline.
This is a BETA feature and will be improved in the future releases.
Please let us know about your experience on the forums or through
<strong class="ph b">Help > Send Feedback...</strong> in the main menu.
</p>
<p class="p">
To load multiple report files into a single timeline, first start by
opening a report as usual — using <strong class="ph b">File > Open...</strong> from the main menu,
or double clicking on a report in the Project Explorer window. Then additional
report files can be loaded into the same timeline using one of the methods:
</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">File > Add Report (beta)...</strong> in the main menu,
and select another report file that you want to open
</p>
</li>
<li class="li">
<p class="p">Right click on the report in the project explorer window, and click
<strong class="ph b">Add Report (beta)</strong></p>
</li>
</ul>
<p class="p"><img class="image" src="graphics/report-add-another.png" alt="TODO"></img></p>
</div>
<div class="topic nested1" id="multi-report-time-sync"><a name="multi-report-time-sync" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#multi-report-time-sync" name="multi-report-time-sync" shape="rect">23.1. Time Synchronization</a></h3>
<div class="body">
<p class="p">When multiple reports are loaded into a single timeline, timestamps between them need
to be adjusted, such that events that happened at the same time appear to be aligned.
</p>
<p class="p"><span class="ph">Nsight Systems</span> can automatically adjust timestamps based on <strong class="ph b">UTC time</strong>
recorded around the collection start time. This method is used by default when other
more precise methods are not available. This time can be seen as
<samp class="ph codeph">UTC time at t=0</samp> in the <em class="ph i">Analysis Summary</em> page of the report file.
Refer to your OS documentation to learn how to sync the software clock using the
Network Time Protocol (NTP). NTP-based time synchronization is not very precise,
with the typical errors on the scale of one to tens of milliseconds.
</p>
<p class="p">Reports collected on the same physical machine can use synchronization based on
<strong class="ph b">Timestamp Counter (TSC) values</strong>. These are platform-specific counters,
typically accessed in user space applications using the RDTSC instruction on
x86_64 architecture, or by reading the CNTVCT register on Arm64. Their values
converted to nanoseconds can be seen as <samp class="ph codeph">TSC value at t=0</samp>
in the <em class="ph i">Analysis Summary</em> page of the report file. Reports synchronized using TSC
values can be aligned with nanoseconds-level precision.
</p>
<p class="p">TSC-based time synchronization is activated automatically, when <span class="ph">Nsight Systems</span>
detects that reports come from same target and that the same TSC value
corresponds to very close UTC times.
Targets are considered to be the same when either explicitly set environment variables
<samp class="ph codeph">NSYS_HW_ID</samp> are the same for both reports or when target hostnames are
the same and <samp class="ph codeph">NSYS_HW_ID</samp> is not set for either target.
The difference between UTC and TSC time offsets must be below 1 second to
choose TSC-based time synchronization.
</p>
<p class="p">
To find out which synchronization method was used, navigate to the <em class="ph i">Analysis Summary</em>
tab of an added report and check the <samp class="ph codeph">Report alignment source</samp> property
of a target. Note, that the first report won’t have this parameter.
</p>
<p class="p"><img class="image" src="graphics/report-alignment-source-TSC.png" alt="TODO"></img></p>
<p class="p"><img class="image" src="graphics/report-alignment-source-UTC.png" alt="TODO"></img></p>
<p class="p">When loading multiple reports into a single timeline, it is always advisable to first
check that time synchronization looks correct, by zooming into synchronization or
communication events that are expected to be aligned.
</p>
</div>
</div>
<div class="topic nested1" id="multi-report-hierarchy"><a name="multi-report-hierarchy" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#multi-report-hierarchy" name="multi-report-hierarchy" shape="rect">23.2. Timeline Hierarchy</a></h3>
<div class="body">
<p class="p">
When reports are added to the same timeline <span class="ph">Nsight Systems</span>
will automatically line them up by timestamps as described above.
If you want <span class="ph">Nsight Systems</span> to also recognize matching
process or hardware information, you will need to set environment variables
<samp class="ph codeph">NSYS_SYSTEM_ID</samp> and <samp class="ph codeph">NSYS_HW_ID</samp> as shown
below at the time of report collection (such as when using
"<span class="ph">nsys</span> profile ..." command).
</p>
<p class="p">
When loading a pair of given report files into the same timeline,
they will be merged in one of the following configurations:
</p>
<ul class="ul">
<li class="li">
<p class="p">Different hardware — is used when reports are coming from
different physical machines, and no hardware resources are shared in these reports.
This mode is used when neither <samp class="ph codeph">NSYS_HW_ID</samp> or
<samp class="ph codeph">NSYS_SYSTEM_ID</samp> is set and target hostnames are different
or absent, and can be additionally signalled by specifying
different <samp class="ph codeph">NSYS_HW_ID</samp> values.
</p>
</li>
<li class="li">
<p class="p">Different systems, same hardware — is used when reports are collected on different
virtual machines (VMs) or containers on the same physical machine. To activate this mode,
specify the same value of <samp class="ph codeph">NSYS_HW_ID</samp> when collecting the reports.
</p>
</li>
<li class="li">
<p class="p">Same system — is used when reports are collected within the same operating system
(or container) environment. In this mode a process identifier (PID) 100 will refer to
the same process in both reports.
To manually activate this mode, specify the same value of
<samp class="ph codeph">NSYS_SYSTEM_ID</samp> when collecting the reports.
This mode is automatically selected when target hostnames are the same
and neither <samp class="ph codeph">NSYS_HW_ID</samp> or <samp class="ph codeph">NSYS_SYSTEM_ID</samp>
is provided.
</p>
</li>
</ul>
<p class="p">The following diagrams demonstrate typical cases:</p>
<p class="p"><img class="image" src="graphics/report-tiling-diagram.png" alt="TODO"></img></p>
</div>
</div>
<div class="topic nested1" id="multi-report-mpi-example"><a name="multi-report-mpi-example" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#multi-report-mpi-example" name="multi-report-mpi-example" shape="rect">23.3. Example: MPI</a></h3>
<div class="body">
<p class="p">A typical scenario is when a computing job is run using one of the MPI implementations.
Each instance of the app can be profiled separately, resulting in multiple report files.
For example:
</p><pre xml:space="preserve">
# Run MPI job without the profiler:
mpirun <mpirun-options> ./myApp
# Run MPI job and profile each instance of the application:
mpirun <mpirun-options> <span class="ph">nsys</span> profile -o report-%p <<span class="ph">nsys</span>-options>./myApp</pre><p class="p">When each MPI rank runs on a different node, the command above works fine,
since the default pairing mode (different hardware) will be used.
</p>
<p class="p">When all MPI ranks run the localhost only, use this command (value "A" was
chosen arbitrarily, it can be any non-empty string):
</p>
<p class="p"><samp class="ph codeph">NSYS_SYSTEM_ID=A mpirun <mpirun-options> <span class="ph">nsys</span> profile -o report-%p
<<span class="ph">nsys</span>-options> ./myApp</samp></p>
<p class="p">For convenience, the MPI rank can be encoded into the report filename.
For Open MPI, use the following command to create report files based on
the global rank value:
</p>
<p class="p"><samp class="ph codeph">mpirun <mpirun-options> <span class="ph">nsys</span> profile -o
report-%q{OMPI_COMM_WORLD_RANK} <<span class="ph">nsys</span>-options> ./myApp</samp></p>
<p class="p">MPICH-based implementations set the environment variable
<samp class="ph codeph">PMI_RANK</samp> and Slurm (<samp class="ph codeph">srun</samp>) provides the global MPI rank
in <samp class="ph codeph">SLURM_PROCID</samp>.
</p>
</div>
</div>
<div class="topic nested1" id="multi-report-limitations"><a name="multi-report-limitations" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#multi-report-limitations" name="multi-report-limitations" shape="rect">23.4. Limitations</a></h3>
<div class="body">
<ul class="ul">
<li class="li">
<p class="p">Only report files collected with <span class="ph">Nsight Systems</span> version 2021.3
and newer are fully supported.
</p>
</li>
<li class="li">
<p class="p">Sequential reports collected in a single CLI profiling session cannot
be loaded into a single timeline yet.
</p>
</li>
</ul>
</div>
</div>
</div>
<div class="topic nested0" id="expert-systems"><a name="expert-systems" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#expert-systems" name="expert-systems" shape="rect">24. Using Nsight Systems Expert System</a></h2>
<div class="body">
<p class="p">The <span class="ph">Nsight Systems</span> expert system is a feature
aimed at automatic detection of performance optimization
opportunities in an application's profile. It uses a set of predefined
rules to determine if the application has known bad patterns.
</p>
</div>
<div class="topic nested1" id="expert-systems-cli"><a name="expert-systems-cli" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#expert-systems-cli" name="expert-systems-cli" shape="rect">Using Expert System from the CLI</a></h3>
<div class="body">
<p class="p">usage:</p><pre xml:space="preserve"><span class="ph">nsys</span> [global-options] analyze [options]
[nsys-rep-or-sqlite-file]</pre><p class="p">If a .nsys-rep file is given as the input file and there is no .sqlite
file with the same name in the same directory, it will be generated.
</p>
<p class="p"><strong class="ph b">Note:</strong> The Expert System view in the GUI will give you the
equivalent command line.
</p>
</div>
</div>
<div class="topic nested1" id="expert-systems-gui"><a name="expert-systems-gui" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#expert-systems-gui" name="expert-systems-gui" shape="rect">Using Expert System from the GUI</a></h3>
<div class="body">
<p class="p">The Expert System View can be found in the same drop-down as the
Events View. If there is no .sqlite file with the same name as the .nsys-rep
file in the same directory, it will be generated.
</p>
<div class="p">The Expert System View has the following components:
<ol class="ol">
<li class="li">Drop-down to select the rule to be run</li>
<li class="li">Rule description and advice summary</li>
<li class="li">CLI command that will give the same result</li>
<li class="li">Table containing results of running the rule</li>
<li class="li">Settings button that allows users to specify the rule’s arguments</li>
</ol>
</div>
<p class="p"><img class="image" src="graphics/expert-systems-gui.png" alt="Expert systems information as shown in the GUI"></img></p>
<div class="p">A context menu is available to correlate the table entry with the
timeline. The options are the same as the Events View:
<ul class="ul">
<li class="li">Zoom to Selected on Timeline (ctrl+double-click)</li>
</ul>
</div>
<p class="p">The highlighting is not supported for rules that do not return an
event but rather an arbitrary time range (e.g. GPU utilization rules).
</p>
<p class="p">The CLI and GUI share the same rule scripts and messages. There might
be some formatting differences between the output table in GUI and CLI.
</p>
</div>
</div>
<div class="topic nested1" id="expert-systems-rules"><a name="expert-systems-rules" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#expert-systems-rules" name="expert-systems-rules" shape="rect">Expert System Rules</a></h3>
<div class="body">
<p class="p">Rules are scripts that run on the SQLite DB output
from <span class="ph">Nsight Systems</span> to find common improvable usage patterns.
</p>
<p class="p">Each rule has an advice summary with explanation of the problem found
and suggestions to address it. Only the top 50 results are displayed by
default.
</p>
<p class="p">There are currently six rules in the expert system. They are
described below. Additional rules will be made available in a future
version of <span class="ph">Nsight Systems</span>.
</p>
</div>
<div class="topic nested2" id="expert-systems-synchronous-operations"><a name="expert-systems-synchronous-operations" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#expert-systems-synchronous-operations" name="expert-systems-synchronous-operations" shape="rect">CUDA Synchronous Operation Rules</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Asynchronous memcpy with pageable memory</strong></p>
<p class="p">This rule identifies asynchronous memory transfers that end up
becoming synchronous if the memory is pageable. This rule is not
applicable for <span class="ph">Nsight Systems Embedded Platforms Edition</span></p>
<p class="p">Suggestion: If applicable, use pinned memory instead</p>
<p class="p"><img class="image" src="graphics/expert-systems-pageable.png" alt="Asynchronous memcpy with pageable memory"></img></p>
<p class="p"><strong class="ph b">Synchronous Memcpy</strong></p>
<p class="p">This rule identifies synchronous memory transfers that block the
host.
</p>
<p class="p">Suggestion: Use cudaMemcpy*Async APIs instead.</p>
<p class="p"><strong class="ph b">Synchronous Memset</strong></p>
<p class="p">This rule identifies synchronous memset operations that block the
host.
</p>
<p class="p">Suggestion: Use cudaMemset*Async APIs instead.</p>
<p class="p"><strong class="ph b">Synchronization APIs</strong></p>
<p class="p">This rule identifies synchronization APIs that block the host until
all issued CUDA calls are complete.
</p>
<p class="p">Suggestions: Avoid excessive use of synchronization. Use
asynchronous CUDA event calls, such as cudaStreamWaitEvent and
cudaEventSynchronize, to prevent host synchronization.
</p>
</div>
</div>
<div class="topic nested2" id="expert-systems-GPU-utilization"><a name="expert-systems-GPU-utilization" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#expert-systems-GPU-utilization" name="expert-systems-GPU-utilization" shape="rect">GPU Low Utilization Rules</a></h3>
<div class="body">
<p class="p"><span class="ph">Nsight Systems</span> determines GPU utilization based on API
trace data in the collection. Current rules consider CUDA, Vulkan,
DX12, and OpenGL API use of the GPU.
</p>
<p class="p"><strong class="ph b">GPU Starvation</strong></p>
<p class="p">This rule identifies time ranges where a GPU is idle for longer
than 500ms. The threshold is adjustable.
</p>
<p class="p">Suggestions: Use CPU sampling data, OS Runtime blocked state
backtraces, and/or OS Runtime APIs related to thread synchronization
to understand if a sluggish or blocked CPU is causing the gaps. Add
NVTX annotations to CPU code to understand the reason behind the gaps.
</p>
<p class="p">Notes:</p>
<ul class="ul">
<li class="li">For each process, each GPU is examined, and gaps are found within
the time range that starts with the beginning of the first GPU
operation on that device and ends with the end of the last GPU
operation on that device.
</li>
<li class="li">GPU gaps that cannot be addressed by the user are excluded.
This includes:
<ul class="ul">
<li class="li">Profiling overhead in the middle of a GPU gap.</li>
<li class="li">The initial gap in the report that is seen before the first GPU
operation.
</li>
<li class="li">The final gap that is seen after the last GPU operation.</li>
</ul>
</li>
</ul>
<p class="p"><strong class="ph b">GPU Low Utilization</strong></p>
<p class="p">This rule identifies time regions with low utilization.</p>
<p class="p">Suggestions: Use CPU sampling data, OS Runtime blocked state
backtraces, and/or OS Runtime APIs related to thread synchronization
to understand if a sluggish or blocked CPU is causing the gaps. Add
NVTX annotations to CPU code to understand the reason behind the gaps.
</p>
<p class="p">Notes:</p>
<ul class="ul">
<li class="li">For each process, each GPU is examined, and gaps are found within
the time range that starts with the beginning of the first GPU
operation on that device and ends with the end of the last GPU
operation on that device. This time range is then divided into equal
chunks, and the GPU utilization is calculated for each chunk. The
utilization includes all GPU operations as well as profiling
overheads that the user cannot address.
</li>
<li class="li">The utilization refers to the "time" utilization and not the
"resource" utilization. This rule attempts to find time gaps when the
GPU is or isn't being used, but does not take into account how many
GPU resources are being used. Therefore, a single running memcpy is
considered the same amount of "utilization" as a huge kernel that
takes over all the cores. If multiple operations run concurrently in
the same chunk, their utilization will be added up and may exceed
100%.
</li>
<li class="li">Chunks with an in-use percentage less than the threshold value are
displayed. If consecutive chunks have a low in-use percentage, the
individual chunks are coalesced into a single display record, keeping
the weighted average of percentages. This is why returned chunks may
have different durations.
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="topic nested0" id="import-nvtxt"><a name="import-nvtxt" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#import-nvtxt" name="import-nvtxt" shape="rect">25. Import NVTXT</a></h2>
<div class="body">
<p class="p"><strong class="ph b">ImportNvtxt</strong> is an utility which allows conversion of a <a class="xref" href="https://docs.nvidia.com/gameworks/index.html#gameworkslibrary/nvtx/analysis_nvtxt_file_extension.htm" target="_blank" shape="rect">NVTXT</a> file to a
<span class="ph">Nsight Systems</span> report file (*.nsys-rep) or to merge it with an
existing report file.
</p>
<p class="p"><strong class="ph b">Note</strong>: NvtxtImport supports custom <strong class="ph b">TimeBase</strong> values. Only these
values are supported:
</p>
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">Manual</strong> — timestamps are set using absolute values.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">Relative</strong> — timestamps are set using relative values with regards
to report file which is being merged with nvtxt file.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">ClockMonotonicRaw</strong> — timestamps values in nvtxt file are considered
to be gathered on the same target as the report file which is to be merged
with nvtxt using <samp class="ph codeph">clock_gettime(CLOCK_MONOTONIC_RAW, ...)</samp>
call.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">CNTVCT</strong> — timestamps values in nvtxt file are considered to be
gathered on the same target as the report file which is to be merged with
nvtxt using CNTVCT values.
</p>
</li>
</ul>
<p class="p">You can get usage info via help message:</p>
<p class="p">Print help message:</p><pre xml:space="preserve">-h [ --help ]</pre><p class="p">Show information about report file:</p><pre xml:space="preserve">--cmd info -i [--input] arg</pre><p class="p">Create report file from existing nvtxt file:</p><pre xml:space="preserve">--cmd create -n [--nvtxt] arg -o [--output] arg [-m [--mode] mode_name mode_args] [--target <Hw:Vm>] [--update_report_time]</pre><p class="p">Merge nvtxt file to existing report file:</p><pre xml:space="preserve">--cmd merge -i [--input] arg -n [--nvtxt] arg -o [--output] arg [-m [--mode] mode_name mode_args] [--target <Hw:Vm>] [--update_report_time]</pre><div class="p">Modes description:
<ul class="ul">
<li class="li">
<p class="p">lerp - Insert with linear interpolation</p><pre xml:space="preserve">--mode lerp --ns_a arg --ns_b arg [--nvtxt_a arg --nvtxt_b arg]</pre></li>
<li class="li">
<p class="p">lin - insert with linear equation</p><pre xml:space="preserve">--mode lin --ns_a arg --freq arg [--nvtxt_a arg]</pre></li>
</ul>
</div>
<div class="p">Modes' parameters:
<ul class="ul">
<li class="li">
<p class="p">ns_a - a nanoseconds value</p>
</li>
<li class="li">
<p class="p">ns_b - a nanoseconds value (greater than ns_a)</p>
</li>
<li class="li">
<p class="p">nvtxt_a - an nvtxt file's time unit value corresponding to ns_a nanoseconds</p>
</li>
<li class="li">
<p class="p">nvtxt_b - an nvtxt file's time unit value corresponding to ns_b nanoseconds</p>
</li>
<li class="li">
<p class="p">freq - the nvtxt file's timer frequency</p>
</li>
<li class="li">
<p class="p">--target <Hw:Vm> - specify target id, e.g. --target 0:1</p>
</li>
<li class="li">
<p class="p">--update_report_time - prolong report's profiling session time while
merging if needed. Without this option all events outside the
profiling session time window will be skipped during merging.
</p>
</li>
</ul>
</div>
</div>
<div class="topic nested1" id="nvtxt-commands"><a name="nvtxt-commands" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#nvtxt-commands" name="nvtxt-commands" shape="rect">Commands</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Info</strong></p>
<p class="p">To find out report's start and end time use <strong class="ph b">info</strong> command.
</p>
<p class="p">Usage:</p><pre xml:space="preserve">ImportNvtxt --cmd info -i [--input] arg</pre><p class="p">Example:</p><pre xml:space="preserve">ImportNvtxt info Report.nsys-rep
Analysis start (ns) 83501026500000
Analysis end (ns) 83506375000000</pre><p class="p"><strong class="ph b">Create</strong></p>
<p class="p">You can create a report file using existing NVTXT with <strong class="ph b">create</strong>
command.
</p>
<p class="p">Usage:</p><pre xml:space="preserve">ImportNvtxt --cmd create -n [--nvtxt] arg -o [--output] arg [-m [--mode] mode_name mode_args]</pre><div class="p">Available modes are:
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">lerp</strong> — insert with linear interpolation.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">lin</strong> — insert with linear equation.
</p>
</li>
</ul>
</div>
<p class="p">Usage for <strong class="ph b">lerp</strong> mode is:
</p><pre xml:space="preserve">--mode lerp --ns_a arg --ns_b arg [--nvtxt_a arg --nvtxt_b arg]</pre><div class="p">with:
<ul class="ul">
<li class="li">
<p class="p"><samp class="ph codeph">ns_a</samp> — a nanoseconds value.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">ns_b</samp> — a nanoseconds value (greater than <samp class="ph codeph">ns_a</samp>).
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">nvtxt_a</samp> — an nvtxt file's time unit value
corresponding to <samp class="ph codeph">ns_a</samp> nanoseconds.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">nvtxt_b</samp> — an nvtxt file's time unit value
corresponding to <samp class="ph codeph">ns_b</samp> nanoseconds.
</p>
</li>
</ul>
</div>
<p class="p">If <samp class="ph codeph">nvtxt_a</samp> and <samp class="ph codeph">nvtxt_b</samp> are not
specified, they are respectively set to nvtxt file's minimum and maximum
time value.
</p>
<p class="p">Usage for <strong class="ph b">lin</strong> mode is:
</p><pre xml:space="preserve">--mode lin --ns_a arg --freq arg [--nvtxt_a arg]</pre><div class="p">with:
<ul class="ul">
<li class="li">
<p class="p"><samp class="ph codeph">ns_a</samp> — a nanoseconds value.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">freq</samp> — the nvtxt file's timer frequency.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">nvtxt_a</samp> — an nvtxt file's time unit value
corresponding to <samp class="ph codeph">ns_a</samp> nanoseconds.
</p>
</li>
</ul>
</div>
<p class="p">If <samp class="ph codeph">nvtxt_a</samp> is not specified, it is set to nvtxt
file's minimum time value.
</p>
<p class="p"><strong class="ph b">Examples:</strong></p><pre xml:space="preserve">ImportNvtxt --cmd create -n Sample.nvtxt -o Report.nsys-rep</pre><p class="p">
The output will be a new generated report file which can be opened and
viewed by <span class="ph">Nsight Systems</span>.
</p>
<p class="p"><strong class="ph b">Merge</strong></p>
<p class="p">To merge NVTXT file with an existing report file use <strong class="ph b">merge</strong>
command.
</p>
<p class="p">Usage:</p><pre xml:space="preserve">ImportNvtxt --cmd merge -i [--input] arg -n [--nvtxt] arg -o [--output] arg [-m [--mode] mode_name mode_args]</pre><div class="p">Available modes are:
<ul class="ul">
<li class="li">
<p class="p"><strong class="ph b">lerp</strong> — insert with linear interpolation.
</p>
</li>
<li class="li">
<p class="p"><strong class="ph b">lin</strong> — insert with linear equation.
</p>
</li>
</ul>
</div>
<p class="p">Usage for <strong class="ph b">lerp</strong> mode is:
</p><pre xml:space="preserve">--mode lerp --ns_a arg --ns_b arg [--nvtxt_a arg --nvtxt_b arg]</pre><div class="p">with:
<ul class="ul">
<li class="li">
<p class="p"><samp class="ph codeph">ns_a</samp> — a nanoseconds value.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">ns_b</samp> — a nanoseconds value (greater than <samp class="ph codeph">ns_a</samp>).
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">nvtxt_a</samp> — an nvtxt file's time unit value
corresponding to <samp class="ph codeph">ns_a</samp> nanoseconds.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">nvtxt_b</samp> — an nvtxt file's time unit value
corresponding to <samp class="ph codeph">ns_b</samp> nanoseconds.
</p>
</li>
</ul>
</div>
<p class="p">If <samp class="ph codeph">nvtxt_a</samp> and <samp class="ph codeph">nvtxt_b</samp> are not
specified, they are respectively set to nvtxt file's minimum and maximum
time value.
</p>
<p class="p">Usage for <strong class="ph b">lin</strong> mode is:
</p><pre xml:space="preserve">--mode lin --ns_a arg --freq arg [--nvtxt_a arg]</pre><div class="p">with:
<ul class="ul">
<li class="li">
<p class="p"><samp class="ph codeph">ns_a</samp> — a nanoseconds value.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">freq</samp> — the nvtxt file's timer frequency.
</p>
</li>
<li class="li">
<p class="p"><samp class="ph codeph">nvtxt_a</samp> — an nvtxt file's time unit value
corresponding to <samp class="ph codeph">ns_a</samp> nanoseconds.
</p>
</li>
</ul>
</div>
<p class="p">If <samp class="ph codeph">nvtxt_a</samp> is not specified, it is set to nvtxt
file's minimum time value.
</p>
<p class="p">Time values in <samp class="ph codeph"><filename.nvtxt></samp> are assumed to
be nanoseconds if no mode specified.
</p>
<p class="p">Example</p><pre xml:space="preserve">ImportNvtxt --cmd merge -i Report.nsys-rep -n Sample.nvtxt -o NewReport.nsys-rep</pre><p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested0" id="ballista-overview"><a name="ballista-overview" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#ballista-overview" name="ballista-overview" shape="rect">Visual Studio Integration</a></h2>
<div class="body">
<p class="p"><span class="ph">NVIDIA Nsight Integration</span> is a <span class="ph">Visual Studio</span> extension that allows you to
access the power of <span class="ph">Nsight Systems</span> from within <span class="ph">Visual Studio</span>.
</p>
<p class="p">
When <span class="ph">Nsight Systems</span> is installed along with <span class="ph">NVIDIA Nsight Integration</span>,
<span class="ph">Nsight Systems</span> activities will appear under
the NVIDIA Nsight menu in the <span class="ph">Visual Studio</span> menu bar. These activities launch
<span class="ph">Nsight Systems</span> with the current project settings and executable.
</p>
<p class="p"><img class="image" src="graphics/visual_studio_extension_menu_trace_command.png" alt="Install extension to Microsoft Visual Studio"></img></p>
<div class="p">
Selecting the "Trace" command will launch <span class="ph">Nsight Systems</span>,
create a new <span class="ph">Nsight Systems</span> project and apply settings from
the current <span class="ph">Visual Studio</span> project:
<ul class="ul">
<li class="li">
<p class="p">Target application path</p>
</li>
<li class="li">
<p class="p">Command line parameters</p>
</li>
<li class="li">
<p class="p">Working folder</p>
</li>
</ul>
</div>
<p class="p">
If the "Trace" command has already been used with this <span class="ph">Visual Studio</span> project
then <span class="ph">Nsight Systems</span> will load the respective
<span class="ph">Nsight Systems</span> project and any previously captured trace
sessions will be available for review using the <span class="ph">Nsight Systems</span>
project explorer tree.
</p>
<div class="p">
For more information about using <span class="ph">Nsight Systems</span> from
within <span class="ph">Visual Studio</span>, please visit
<ul class="ul">
<li class="li">
<p class="p"><a class="xref" href="https:/developer.nvidia.com/nsight-tools-visual-studio-integration" target="_blank" shape="rect">NVIDIA Nsight Integration Overview</a></p>
</li>
<li class="li">
<p class="p"><a class="xref" href="https:/docs.nvidia.com/nsight-vs-integration/index.html" target="_blank" shape="rect">NVIDIA Nsight Integration User Guide</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="topic nested0" id="troubleshooting"><a name="troubleshooting" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#troubleshooting" name="troubleshooting" shape="rect">27. Troubleshooting</a></h2>
<div class="body"></div>
<div class="topic nested1" id="general-troubleshooting"><a name="general-troubleshooting" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#general-troubleshooting" name="general-troubleshooting" shape="rect">27.1. General Troubleshooting</a></h3>
<div class="body">
<p class="p"><strong class="ph b">Profiling</strong></p>
<div class="p">
If the profiler behaves unexpectedly during the profiling session, or the
profiling session fails to start, try the following steps:
<ul class="ul">
<li class="li">Close the host application.</li>
<li class="li">Restart the target device.</li>
<li class="li">Start the host application and connect to the target device.</li>
</ul>
</div>
<p class="p"><span class="ph">Nsight Systems</span> uses a settings file
(<samp class="ph codeph">NVIDIA Nsight Systems.ini</samp>) on the host to store
information about loaded projects, report files, window layout
configuration, etc. Location of the settings file is described in the
<strong class="ph b">Help → About</strong> dialog. Deleting the settings file will restore
<span class="ph">Nsight Systems</span> to a fresh state, but all projects and
reports will disappear from the Project Explorer.
</p>
<p class="p"><strong class="ph b">Environment Variables</strong></p>
<div class="p">By default, <span class="ph">Nsight Systems</span> writes temporary files to
<samp class="ph codeph">/tmp</samp> directory. If you are using a system that does not
allow writing to <samp class="ph codeph">/tmp</samp> or where the <samp class="ph codeph">/tmp</samp>
directory has limited storage you can use the TMPDIR
environment variable to set a different location. An example:
<pre xml:space="preserve">TMPDIR=/testdata ./bin/nsys profile -t cuda matrixMul
</pre></div>
<p class="p">Environment variable control support for Windows target trace is not
available, but there is a quick workaround:
</p>
<ul class="ul">
<li class="li">Create a batch file that sets the env vars and launches your
application.
</li>
<li class="li">Set <span class="ph">Nsight Systems</span> to launch the batch file as its
target, i.e. set the project settings target path to the path of batch
file.
</li>
<li class="li">Start the trace. <span class="ph">Nsight Systems</span> will launch the batch
file in a new cmd instance and trace any child process it launches. In
fact, it will trace the whole process tree whose root is the cmd running
your batch file.
</li>
</ul>
<p class="p"><strong class="ph b">WebGL Testing</strong></p>
<div class="p"><span class="ph">Nsight Systems</span> cannot profile using the default Chrome
launch command. To profile WebGL please follow the following command
structure:
<pre xml:space="preserve">“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe”
--inprocess-gpu --no-sandbox --disable-gpu-watchdog --use-angle=gl
https://webglsamples.org/aquarium/aquarium.html
</pre></div>
<p class="p"><strong class="ph b">Common Issues with QNX Targets</strong></p>
<ul class="ul">
<li class="li">
<p class="p">Make sure that <samp class="ph codeph">tracelogger</samp> utility is available and
can be run on the target.
</p>
</li>
<li class="li">
<p class="p">Make sure that <samp class="ph codeph">/tmp</samp> directory is accessible and supports
sub-directories.
</p>
</li>
<li class="li">
<p class="p">When switching between <span class="ph">Nsight Systems</span> versions, processes
related to the previous version, including profiled applications forked
by the daemon, must be killed before the new version is used. If you
experience issues after switching between <span class="ph">Nsight Systems</span>
versions, try rebooting the target.
</p>
</li>
</ul>
</div>
</div>
<div class="topic nested1" id="cli-troubleshooting"><a name="cli-troubleshooting" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#cli-troubleshooting" name="cli-troubleshooting" shape="rect">CLI Troubleshooting</a></h3>
<div class="body">
<p class="p">
If you have collected a report file using the CLI and the report will not
open in the GUI, check to see that your GUI version is the same or
greater than the CLI version you used. If it is not, download a new
version of the <span class="ph">Nsight Systems</span> GUI and you will be able to
load and visualize your report.
</p>
<p class="p">
This situation occurs most frequently when you update
<span class="ph">Nsight Systems</span> using a CLI only package, such as the package
available from the NVIDIA HPC SDK.
</p>
</div>
</div>
<div class="topic nested1" id="launch-stopped-linux"><a name="launch-stopped-linux" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#launch-stopped-linux" name="launch-stopped-linux" shape="rect">27.3. Launch Processes in Stopped State</a></h3>
<div class="body">
<p class="p">
In many cases, it is important to profile an application from the very
beginning of its execution. When launching processes,
<span class="ph">Nsight Systems</span> takes care of it by making sure that the
profiling session is fully initialized before making the
<samp class="ph codeph">exec()</samp> system call on Linux.
</p>
<p class="p">
If the process launch capabilities of <span class="ph">Nsight Systems</span> are not
sufficient, the application should be launched manually, and the profiler
should be configured to attach to the already launched process. One approach
would be to call <samp class="ph codeph">sleep()</samp> somewhere early in the application
code, which would provide time for the user to attach to the process in
<span class="ph">Nsight Systems Embedded Platforms Edition</span>, but there are two other more convenient
mechanisms that can be used on Linux, without the need to recompile the
application. (Note that the rest of this section is only applicable to
Linux-based target devices.)
</p>
<p class="p">
Both mechanisms ensure that between the time the process is created (and
therefore its PID is known) and the time any of the application's code is
called, the process is stopped and waits for a signal to be delivered before
continuing.
</p>
</div>
<div class="topic nested2" id="ld-preload"><a name="ld-preload" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#ld-preload" name="ld-preload" shape="rect">LD_PRELOAD</a></h3>
<div class="body">
<p class="p">
The first mechanism uses <samp class="ph codeph">LD_PRELOAD</samp> environment
variable. It only works with dynamically linked binaries, since static
binaries do not invoke the runtime linker, and therefore are not affected
by the <samp class="ph codeph">LD_PRELOAD</samp> environment variable.
</p>
<ul class="ul">
<li class="li">
<p class="p">For ARMv7 binaries, preload</p><pre xml:space="preserve">/opt/nvidia/nsight_systems/libLauncher32.so</pre></li>
<li class="li">
<p class="p">Otherwise if running from host, preload</p><pre xml:space="preserve">/opt/nvidia/nsight_systems/libLauncher64.so</pre></li>
<li class="li">
<p class="p">Otherwise if running from CLI, preload</p><pre xml:space="preserve">[installation_directory]/libLauncher64.so</pre></li>
</ul>
<p class="p">
The most common way to do that is to specify the environment variable as
part of the process launch command, for example:
</p><pre xml:space="preserve">$ LD_PRELOAD=/opt/nvidia/nsight_systems/libLauncher64.so ./my-aarch64-binary --arguments</pre><p class="p">
When loaded, this library will send itself a <samp class="ph codeph">SIGSTOP</samp>
signal, which is equivalent to typing <samp class="ph codeph">Ctrl+Z</samp> in the
terminal. The process is now a background job, and you can use standard
commands like jobs, <samp class="ph codeph">fg</samp> and <samp class="ph codeph">bg</samp> to
control them. Use <samp class="ph codeph">jobs -l</samp> to see the PID of the launched
process.
</p>
<p class="p">
When attaching to a stopped process, <span class="ph">Nsight Systems</span> will
send <samp class="ph codeph">SIGCONT</samp> signal, which is equivalent to using the
<samp class="ph codeph">bg</samp> command.
</p>
</div>
</div>
<div class="topic nested2" id="launcher"><a name="launcher" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#launcher" name="launcher" shape="rect">Launcher</a></h3>
<div class="body">
<p class="p">
The second mechanism can be used with any binary. Use
<samp class="ph codeph">[installation_directory]/launcher</samp> to launch your
application, for example:
</p><pre xml:space="preserve">$ /opt/nvidia/nsight_systems/launcher ./my-binary --arguments</pre><p class="p">The process will be launched, daemonized, and wait for
<samp class="ph codeph">SIGUSR1</samp> signal. After attaching to the process with
<span class="ph">Nsight Systems</span>, the user needs to manually resume
execution of the process from command line:
</p><pre xml:space="preserve">$ pkill -USR1 launcher</pre><div class="p">
<div class="tablenoborder">
<table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all">
<tbody class="tbody">
<tr class="row">
<td class="entry nvidiagreen" align="center" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p"> <strong class="ph b">Note:</strong>
</p>
</td>
<td class="entry notebox" valign="middle" width="NaN%" rowspan="1" colspan="1">
<p class="p">Note that <samp class="ph codeph">pkill</samp> will send the signal to any process with
the matching name. If that is not desirable, use <samp class="ph codeph">kill</samp> to
send it to a specific process. The standard output and error streams are
redirected to <samp class="ph codeph">/tmp/stdout_<PID>.txt</samp> and
<samp class="ph codeph">/tmp/stderr_<PID>.txt</samp>.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="p">The launcher mechanism is more complex and less automated than the
LD_PRELOAD option, but gives more control to the user.
</p>
</div>
</div>
</div>
<div class="topic nested1" id="gui-troubleshooting"><a name="gui-troubleshooting" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gui-troubleshooting" name="gui-troubleshooting" shape="rect">GUI Troubleshooting</a></h3>
<div class="body">
<p class="p">
If opening the <span class="ph">Nsight Systems</span> Linux GUI fails with one of the
following errors, you may be missing some required libraries:
</p><pre xml:space="preserve">This application failed to start because it could not find or load the Qt platform plugin "xcb" in "". Available platform plugins are: xcb. Reinstalling the application may fix this problem.</pre><p class="p">
or
</p><pre xml:space="preserve">error while loading shared libraries: [library_name]: cannot open shared object file: No such file or directory</pre></div>
<div class="topic nested2" id="gui-troubleshooting-root-ubuntu-centos"><a name="gui-troubleshooting-root-ubuntu-centos" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gui-troubleshooting-root-ubuntu-centos" name="gui-troubleshooting-root-ubuntu-centos" shape="rect">Ubuntu 18.04/20.04 and CentOS 7/8 with root privileges</a></h3>
<div class="body">
<div class="p">
<ul class="ul">
<li class="li">Launch the following command, which will install all the required libraries in system directories:
<pre xml:space="preserve">[installation_path]/host-linux-x64/Scripts/install-dependencies.sh</pre></li>
<li class="li">Launch the Linux GUI as usual.</li>
</ul>
</div>
</div>
</div>
<div class="topic nested2" id="gui-troubleshooting-non-root-ubuntu-centos"><a name="gui-troubleshooting-non-root-ubuntu-centos" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gui-troubleshooting-non-root-ubuntu-centos" name="gui-troubleshooting-non-root-ubuntu-centos" shape="rect">Ubuntu 18.04/20.04 and CentOS 7/8 without root privileges</a></h3>
<div class="body">
<div class="p">
<ul class="ul">
<li class="li">Choose the directory where dependencies will be installed (<samp class="ph codeph">dependencies_path</samp>). This directory should be writeable for the current user.
</li>
<li class="li">Launch the following command (if it has already been run, move to the next step), which will install all the required libraries
in <samp class="ph codeph">[dependencies_path]</samp>:
<pre xml:space="preserve">[installation_path]/host-linux-x64/Scripts/install-dependencies-without-root.sh [dependencies_path]</pre></li>
<li class="li">Further, use the following command to launch the Linux GUI:
<pre xml:space="preserve">source [installation_path]/host-linux-x64/Scripts/setup-dependencies-environment.sh [dependencies_path] && [installation_path]/host-linux-x64/nsys-ui</pre></li>
</ul>
</div>
</div>
</div>
<div class="topic nested2" id="gui-troubleshooting-other"><a name="gui-troubleshooting-other" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#gui-troubleshooting-other" name="gui-troubleshooting-other" shape="rect">Other platforms, or if the previous steps did not help</a></h3>
<div class="body">
<p class="p">
Launch <span class="ph">Nsight Systems</span> using the following command line to
determine which libraries are missing and install them.
</p><pre xml:space="preserve">$ QT_DEBUG_PLUGINS=1 ./nsys-ui</pre><p class="p">
If the workload does not run when launched via
<span class="ph">Nsight Systems</span> or the timeline is empty, check the
stderr.log and stdout.log (click on drop-down menu showing
<strong class="ph b">Timeline View</strong> and click on <strong class="ph b">Files</strong>) to see the errors
encountered by the app.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/stderr-log.png" alt="Stderr Log"></img></p>
</blockquote>
</div>
</div>
</div>
<div class="topic nested1" id="symbol-resolution-troubleshooting"><a name="symbol-resolution-troubleshooting" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#symbol-resolution-troubleshooting" name="symbol-resolution-troubleshooting" shape="rect">Symbol Resolution</a></h3>
<div class="body">
<p class="p">
If stack trace information is missing symbols and you have a symbol file,
you can manually re-resolve using the ResolveSymbols utility. This can be
done by right-clicking the report file in the Project Explorer window and
selecting "Resolve Symbols...".
</p>
<p class="p">Alternatively, you can find the utility as a separate executable in the
<samp class="ph codeph">[installation_path]\Host</samp> directory.
This utility works with ELF format files, with Windows PDB directories
and symbol servers, or with files where each line is in the format
<samp class="ph codeph"><start><length><name></samp>.
</p>
<table cellpadding="4" cellspacing="0" summary="" border="1" class="simpletable">
<tr class="sthead">
<th valign="bottom" align="left" id="d54e16503" class="stentry" width="10%" rowspan="1" colspan="1">Short</th>
<th valign="bottom" align="left" id="d54e16506" class="stentry" width="20%" rowspan="1" colspan="1">Long</th>
<th valign="bottom" align="left" id="d54e16509" class="stentry" width="20%" rowspan="1" colspan="1">Argument</th>
<th valign="bottom" align="left" id="d54e16512" class="stentry" width="50%" rowspan="1" colspan="1">Description</th>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-h</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--help</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Help message providing information about available options.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-l</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--process-list</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Print global process IDs list</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-s</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--sym-file</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">filename</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Path to symbol file</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-b</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--base-addr</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">address</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">If set then <start> in symbol file is treated as
relative address starting from this base address
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-p</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--global-pid</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">pid</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Which process in the report should be resolved. May be
omitted if there is only one process in the report.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-f</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--force</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">This option forces use of a given symbol file.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-i</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--report</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">filename</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Path to the report with unresolved symbols.</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-o</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--output</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">filename</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Path and name of the output file. If it is omitted then
"resolved" suffix is added to the original filename.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-d</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--directories</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">directory paths</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">List of symbol folder paths, separated by semi-colon
characters. Available only on Windows.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-v</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--servers</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1">server URLs</td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">List of symbol servers that uses the same format as
<samp class="ph codeph">_NT_SYMBOL_PATH</samp> environment variable,
i.e. <samp class="ph codeph">srv*<LocalStore>*<SymbolServerURL></samp>.
Available only on Windows.
</td>
</tr>
<tr class="strow">
<td valign="top" headers="d54e16503" class="stentry" rowspan="1" colspan="1">-n</td>
<td valign="top" headers="d54e16506" class="stentry" rowspan="1" colspan="1">--ignore-nt-sym-path</td>
<td valign="top" headers="d54e16509" class="stentry" rowspan="1" colspan="1"> </td>
<td valign="top" headers="d54e16512" class="stentry" rowspan="1" colspan="1">Ignore the symbol locations stored in the
<samp class="ph codeph">_NT_SYMBOL_PATH</samp> environment variable.
Available only on Windows.
</td>
</tr>
</table>
<p class="p"></p>
</div>
<div class="topic nested2" id="broken-backtraces"><a name="broken-backtraces" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#broken-backtraces" name="broken-backtraces" shape="rect">Broken Backtraces on Tegra</a></h3>
<div class="body">
<p class="p">
In <span class="ph">Nsight Systems Embedded Platforms Edition</span>, in the symbols table there is a special
entry called <strong class="ph b">Broken backtraces</strong>. This entry is used to denote the
point in the call chain where the unwinding algorithms used by
<span class="ph">Nsight Systems</span> could not determine what is the next (caller)
function.
</p>
<p class="p">
Broken backtraces happen because there is no information related to the
current function that the unwinding algorithms can use. In the Top-Down
view, these functions are immediate children of the Broken backtraces row.
</p>
<p class="p">
One can eliminate broken backtraces by modifying the build system to provide
at least one kind of unwind information. The types of unwind information,
used by the algorithms in <span class="ph">Nsight Systems</span>, include the
following:
</p>
<p class="p">For ARMv7 binaries:</p>
<ul class="ul">
<li class="li">
<p class="p">DWARF information in ELF sections: <samp class="ph codeph">.debug_frame</samp>,
<samp class="ph codeph">.zdebug_frame</samp>, <samp class="ph codeph">.eh_frame</samp>,
<samp class="ph codeph">.eh_frame_hdr</samp>. This information is the most precise.
<samp class="ph codeph">.zdebug_frame</samp> is a compressed version of
<samp class="ph codeph">.debug_frame</samp>, so at most one of them is typically present.
<samp class="ph codeph">.eh_frame_hdr</samp> is a companion section for
<samp class="ph codeph">.eh_frame</samp> and might be absent.
</p>
<p class="p">Compiler flag: <samp class="ph codeph">-g</samp>.
</p>
</li>
<li class="li">
<p class="p">Exception handling information in EHABI format provided in
<samp class="ph codeph">.ARM.exidx</samp> and <samp class="ph codeph">.ARM.extab</samp> ELF sections.
<samp class="ph codeph">.ARM.extab</samp> might be absent if all information is compact
enough to be encoded into <samp class="ph codeph">.ARM.exidx</samp>.
</p>
<p class="p">Compiler flag: <samp class="ph codeph">-funwind-tables</samp>.
</p>
</li>
<li class="li">
<p class="p">Frame pointers (built into the <samp class="ph codeph">.text</samp> section).
</p>
<p class="p">Compiler flag: <samp class="ph codeph">-fno-omit-frame-pointer</samp>.
</p>
</li>
</ul>
<p class="p">For Aarch64 binaries:</p>
<ul class="ul">
<li class="li">
<p class="p">DWARF information in ELF sections: <samp class="ph codeph">.debug_frame</samp>,
<samp class="ph codeph">.zdebug_frame</samp>, <samp class="ph codeph">.eh_frame</samp>,
<samp class="ph codeph">.eh_frame_hdr</samp>. See additional comments above.
</p>
<p class="p">Compiler flag: <samp class="ph codeph">-g</samp>.
</p>
</li>
<li class="li">
<p class="p">Frame pointers (built into the <samp class="ph codeph">.text</samp> section).
</p>
<p class="p">Compiler flag: <samp class="ph codeph">-fno-omit-frame-pointer</samp>.
</p>
</li>
</ul>
<p class="p">The following ELF sections should be considered empty if they have size of 4
bytes: <samp class="ph codeph">.debug_frame</samp>, <samp class="ph codeph">.eh_frame</samp>,
<samp class="ph codeph">.ARM.exidx</samp>. In this case, these sections only contain
termination records and no useful information.
</p>
<p class="p">For GCC, use the following compiler invocation to see which compiler flags
are enabled in your toolchain by default (for example, to check if
<samp class="ph codeph">-funwind-tables</samp> is enabled by default):
</p><pre xml:space="preserve">$ gcc -Q --help=common</pre><p class="p">
For GCC and Clang, add <samp class="ph codeph">-###</samp> to the compiler invocation
command to see which compiler flags are actually being used.
</p>
<p class="p">Since EHABI and DWARF information is compiled on per-unit basis (every
<samp class="ph codeph">.cpp</samp> or <samp class="ph codeph">.c</samp> file, as well as every static
library, can be built with or without this information), presence of the ELF
sections does not guarantee that every function has necessary unwind
information.
</p>
<p class="p">Frame pointers are required by the Aarch64 Procedure Call Standard. Adding
frame pointers slows down execution time, but in most cases the difference
is negligible.
</p>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
<div class="topic nested2" id="elf-debug"><a name="elf-debug" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#elf-debug" name="elf-debug" shape="rect">Debug Versions of ELF Files</a></h3>
<div class="body">
<p class="p">
Often, after a binary is built, especially if it is built with debug
information (<samp class="ph codeph">-g</samp> compiler flag), it gets stripped before
deploying or installing. In this case, ELF sections that contain useful
information, such as non-export function names or unwind information, can
get stripped as well.
</p>
<p class="p">
One solution is to deploy or install the original unstripped library instead
of the stripped one, but in many cases this would be inconvenient.
<span class="ph">Nsight Systems</span> can use missing information from alternative
locations.
</p>
<p class="p">
For target devices with Ubuntu, see <a class="xref" href="https://wiki.ubuntu.com/Debug_Symbol_packages" target="_blank" shape="rect">Debug Symbol Packages</a>. These packages typically
install debug ELF files with <samp class="ph codeph">/usr/lib/debug</samp> prefix.
<span class="ph">Nsight Systems</span> can find debug libraries there, and if it
matches the original library (e.g., the built-in <samp class="ph codeph">BuildID</samp> is
the same), it will be picked up and used to provide symbol names and unwind
information.
</p>
<p class="p">
Many packages have debug companions in the same repository and can be
directly installed with APT (<samp class="ph codeph">apt-get</samp>). Look for packages
with the <samp class="ph codeph">-dbg</samp> suffix. For other packages, refer to the
<a class="xref" href="https://wiki.ubuntu.com/Debug_Symbol_packages" target="_blank" shape="rect">Debug Symbol Packages</a> wiki page on how to add the
debs package repository. After setting up the repository and running apt-get
update, look for packages with <samp class="ph codeph">-dbgsym</samp> suffix.
</p>
<p class="p">
To verify that a debug version of a library has been picked up and
downloaded from the target device, look in the <strong class="ph b">Module Summary</strong> section
of <strong class="ph b">Analysis Summary</strong>:
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/debug-library-used.png" alt="Debug library has been used"></img></p>
</blockquote>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<div class="topic nested1" id="logging-troubleshooting"><a name="logging-troubleshooting" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#logging-troubleshooting" name="logging-troubleshooting" shape="rect">27.6. Logging</a></h3>
<div class="body">
<div class="p">To enable logging on the host, refer to this config file:
<pre xml:space="preserve">host-linux-x64/nvlog.config.template</pre></div>
<p class="p">When reporting any bugs please include the build version number as
described in the <strong class="ph b">Help → About</strong> dialog. If possible, attach log
files and report (<samp class="ph codeph">.nsys-rep</samp>) files, as they already contain
necessary version information.
</p>
</div>
<div class="topic nested2" id="verbose-linux"><a name="verbose-linux" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#verbose-linux" name="verbose-linux" shape="rect">Verbose Logging on Linux Targets</a></h3>
<div class="body">
<p class="p">
Verbose logging is available when connecting to a Linux-based device from
the GUI on the host. This extra debug information is not available when
launching via the command line. <span class="ph">Nsight Systems</span> installs
its executable and library files into the following directory:
</p><pre xml:space="preserve">/opt/nvidia/nsight_systems/</pre><div class="p">
To enable verbose logging on the target device, when launched from the
host, follow these steps:
<ol class="ol">
<li class="li">
<p class="p">Close the host application.</p>
</li>
<li class="li">
<p class="p">Restart the target device.</p>
</li>
<li class="li">
<p class="p">Place <samp class="ph codeph">nvlog.config</samp> from host directory to the <samp class="ph codeph">/opt/nvidia/nsight_systems</samp>
directory on target.
</p>
</li>
<li class="li">
<p class="p">From SSH console, launch the following command:</p><pre xml:space="preserve">sudo /opt/nvidia/nsight_systems/nsys --daemon --debug</pre></li>
<li class="li">
<p class="p">Start the host application and connect to the target device.</p>
</li>
</ol>
</div>
<p class="p">
Logs on the target devices are collected into this file (if enabled):
</p><pre xml:space="preserve">nsys.log</pre><p class="p">in the directory where <samp class="ph codeph">nsys</samp> command was launched.
</p>
<p class="p">Please note that in some cases, debug logging can significantly slow down
the profiler.
</p>
</div>
</div>
<div class="topic nested2" id="verbose-logging-windows"><a name="verbose-logging-windows" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#verbose-logging-windows" name="verbose-logging-windows" shape="rect">Verbose Logging on Windows Targets</a></h3>
<div class="body">
<p class="p">
Verbose logging is available when connecting to a Windows-based device
from the GUI on the host. <span class="ph">Nsight Systems</span> installs its
executable and library files into the following directory by default:
</p><pre xml:space="preserve">C:\Program Files\NVIDIA Corporation\<span class="ph">Nsight Systems</span> <span class="ph">2022.3</span></pre><div class="p">
To enable verbose logging on the target device, when launched from the
host, follow these steps:
<ol class="ol">
<li class="li">
<p class="p">Close the host application.</p>
</li>
<li class="li">
<p class="p">Terminate the <samp class="ph codeph">nsys</samp> process.
</p>
</li>
<li class="li">
<p class="p">Place <samp class="ph codeph">nvlog.config</samp> from host directory next to
<span class="ph">Nsight Systems</span> Windows agent on the target device
</p>
<ul class="ul">
<li class="li">
<p class="p">Local Windows target:</p><pre xml:space="preserve">C:\Program Files\NVIDIA Corporation\<span class="ph">Nsight Systems</span> <span class="ph">2022.3</span>\target-windows-x64</pre></li>
<li class="li">
<p class="p">Remote Windows target:</p><pre xml:space="preserve">C:\Users\<user name>\AppData\Local\Temp\nvidia\nsight_systems</pre></li>
</ul>
</li>
<li class="li">
<p class="p">Start the host application and connect to the target device.</p>
</li>
</ol>
</div>
<p class="p">Logs on the target devices are collected into this file (if enabled):</p><pre xml:space="preserve">nsight-sys.log</pre><p class="p">in the same directory as <span class="ph">Nsight Systems</span> Windows agent.
</p>
<p class="p">Please note that in some cases debug logging can significantly slow
down the profiler.
</p>
</div>
</div>
</div>
</div>
<div class="topic nested0" id="other_resources"><a name="other_resources" shape="rect">
<!-- --></a><h2 class="title topictitle1"><a href="#other_resources" name="other_resources" shape="rect">Other Resources</a></h2>
<div class="body">
<p class="p">Looking for information to help you use <span class="ph">Nsight Systems</span> the
most effectively? Here are some more resources you might want to review:
</p>
</div>
<div class="topic nested1" id="training_seminars"><a name="training_seminars" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#training_seminars" name="training_seminars" shape="rect">Training Seminars</a></h3>
<div class="body">
<p class="p">NVIDIA Deep Learning Institute Training - Self-Paced Online Course
<a class="xref" href="https://courses.nvidia.com/courses/course-v1:DLI+S-AC-03+V1/" target="_blank" shape="rect">Optimizing CUDA Machine Learning Codes With Nsight Profiling Tools</a></p>
<p class="p">
2018 NCSA Blue Waters Webinar - Video Only
<a class="xref" href="https://www.youtube.com/watch?v=WA8C48FJi3c" target="_blank" shape="rect">Introduction to NVIDIA Nsight Systems</a></p>
</div>
</div>
<div class="topic nested1" id="blog_posts"><a name="blog_posts" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#blog_posts" name="blog_posts" shape="rect">Blog Posts</a></h3>
<div class="body">
<p class="p">
NVIDIA developer blogs, these are longer form, technical pieces
written by tool and domain experts.
</p>
<div class="p">
<ul class="ul">
<li class="li">
2021 -
<a class="xref" href="https://developer.nvidia.com/blog/optimizing-dx12-resource-uploads-to-the-gpu-using-cpu-visible-vram/" target="_blank" shape="rect">Optimizing DX12 Resource Uploads to the
GPU Using CPU-Visible VRAM</a></li>
<li class="li">
2019 -
<a class="xref" href="https://devblogs.nvidia.com/migrating-nvidia-nsight-tools-nvvp-nvprof/" target="_blank" shape="rect">Migrating to NVIDIA Nsight Tools from NVVP
and nvprof</a></li>
<li class="li">
2019 -
<a class="xref" href="https://devblogs.nvidia.com/transitioning-nsight-systems-nvidia-visual-profiler-nvprof/" target="_blank" shape="rect">Transitioning to Nsight Systems from NVIDIA
Visual Profiler / nvprof</a></li>
<li class="li">
2019 -
<a class="xref" href="https://devblogs.nvidia.com/nvidia-nsight-systems-adds-vulkan-support/" target="_blank" shape="rect">NVIDIA Nsight Systems Add Vulkan Support</a></li>
<li class="li">
2019 -
<a class="xref" href="https://devblogs.nvidia.com/tensorflow-performance-logging-plugin-nvtx-plugins-tf-public/" target="_blank" shape="rect">TensorFlow Performance Logging Plugin
nvtx-plugins-tf Goes Public</a></li>
<li class="li">
2020 -
<a class="xref" href="https://developer.nvidia.com/blog/nvidia-nsight-systems-containers-cloud/" target="_blank" shape="rect">NVIDIA Nsight Systems in Containers and
the Cloud</a></li>
<li class="li">
2020 -
<a class="xref" href="https://developer.nvidia.com/blog/understanding-the-visualization-of-overhead-and-latency-in-nsight-systems/" target="_blank" shape="rect">Understanding the Visualization of Overhead and Latency in Nsight Systems</a></li>
<li class="li">
2021 -
<a class="xref" href="https://developer.nvidia.com/blog/optimizing-dx12-resource-uploads-to-the-gpu-using-cpu-visible-vram/" target="_blank" shape="rect">Optimizing DX12 Resource Uploads to the GPU Using CPU-Visible VRAM</a></li>
</ul>
</div>
</div>
</div>
<div class="topic nested1" id="feature_videos"><a name="feature_videos" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#feature_videos" name="feature_videos" shape="rect">Feature Videos</a></h3>
<div class="body">
<p class="p">Short videos, only a minute or two, to introduce new features.</p>
<div class="p">
<ul class="ul">
<li class="li"><a class="xref" href="https://youtu.be/ZeuM2k_hrq0" target="_blank" shape="rect">OpenMP Trace Feature Spotlight</a></li>
<li class="li"><a class="xref" href="https://youtu.be/r2ewwd4d0vc" target="_blank" shape="rect">Command Line Sessions Video Spotlight
</a></li>
<li class="li"><a class="xref" href="https://youtu.be/DUhzjyBr-wg" target="_blank" shape="rect">Direct3D11 Feature Spotlight</a></li>
<li class="li"><a class="xref" href="https://youtu.be/witzRF-wu8M" target="_blank" shape="rect">Vulkan Trace</a></li>
<li class="li"><a class="xref" href="https://www.youtube.com/watch?v=fyhPFTF75tk" target="_blank" shape="rect">Statistics Driven Profiling</a></li>
<li class="li"><a class="xref" href="https://www.youtube.com/embed/bda5Er27jqo" target="_blank" shape="rect">Analyzing NCCL Usage with NVDIA Nsight
Systems</a></li>
</ul>
</div>
</div>
</div>
<div class="topic nested1" id="conference_presentations"><a name="conference_presentations" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#conference_presentations" name="conference_presentations" shape="rect">Conference Presentations</a></h3>
<div class="body">
<div class="p">
<ul class="ul">
<li class="li">
GTC 2022 -
<a class="xref" href="https://www.nvidia.com/en-us/on-demand/session/gtcspring22-s41518/" target="_blank" shape="rect">Killing Cloud Monsters Has Never Been
Smoother</a></li>
<li class="li">
GTC 2022 -
<a class="xref" href="https://www.nvidia.com/en-us/on-demand/session/gtcspring22-s41500/" target="_blank" shape="rect">Optimizing Communication with Nsight Systems
Network Profiling</a></li>
<li class="li">
GTC 2021 -
<a class="xref" href="https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s31566/" target="_blank" shape="rect">Tuning GPU Network and Memory Usage in
Apache Spark</a></li>
<li class="li">
GTC 2020 -
<a class="xref" href="https://developer.nvidia.com/gtc/2020/video/s21547" target="_blank" shape="rect">Rebalancing the Load: Profile-Guided
Optimization of the NAMD Molecular Dynamics Program for Modern GPUs
using Nsight Systems</a></li>
<li class="li">
GTC 2020 -
<a class="xref" href="https://developer.nvidia.com/gtc/2020/video/s21351" target="_blank" shape="rect">Scaling the Transformer Model
Implementation in PyTorch Across Multiple Nodes</a></li>
<li class="li">
GTC 2019 -
<a class="xref" href="https://on-demand-gtc.gputechconf.com/gtcnew/sessionview.php?sessionName=s9503-using+nsight+tools+to+optimize+the+namd+molecular+dynamics+simulation+program" target="_blank" shape="rect">Using Nsight Tools to Optimize the NAMD
Molecular Dynamics Simulation Program</a></li>
<li class="li">
GTC 2019 -
<a class="xref" href="https://on-demand-gtc.gputechconf.com/gtcnew/sessionview.php?sessionName=s9866-optimizing+facebook+ai+workloads+for+nvidia+gpus" target="_blank" shape="rect">Optimizing Facebook AI Workloads for
NVIDIA GPUs</a></li>
<li class="li">
GTC 2018 -
<a class="xref" href="https://on-demand-gtc.gputechconf.com/gtcnew/sessionview.php?sessionName=s8718-optimizing+hpc+simulation+and+visualization+codes+using+the+nvidia+nsight+systems" target="_blank" shape="rect">Optimizing HPC Simulation and
Visualization Codes Using NVIDIA Nsight Systems</a></li>
<li class="li">
GTC 2018 - Israel -
<a class="xref" href="https://on-demand-gtc.gputechconf.com/gtcnew/sessionview.php?sessionName=sil8105-boost+dnn+training+performance+using+nvidia+tools" target="_blank" shape="rect">Boost DNN Training Performance using
NVIDIA Tools</a></li>
<li class="li">Siggraph 2018 -
<a class="xref" href="http://on-demand.gputechconf.com/siggraph/2018/video/sig1805-aurelio-reis-yaki-tebeka-taming-the-beast.html" target="_blank" shape="rect">Taming the Beast; Using NVIDIA Tools to
Unlock Hidden GPU Performance</a></li>
</ul>
</div>
</div>
</div>
<div class="topic nested1" id="further-support"><a name="further-support" shape="rect">
<!-- --></a><h3 class="title topictitle2"><a href="#further-support" name="further-support" shape="rect">For More Support</a></h3>
<div class="body">
<p class="p">
To file a bug report or to ask a question on the
<span class="ph">Nsight Systems</span> forums, you will need to register with the
NVIDIA Developer Program. See the
<a class="xref" href="https://www.nvidia.com/en-us/account/faq/" target="_blank" shape="rect">FAQ</a>. You do not need to register to read the
forums.
</p>
<p class="p">
After that, you can access <span class="ph">Nsight Systems</span> <a class="xref" href="https://forums.developer.nvidia.com/c/development-tools/nsight-systems/116" target="_blank" shape="rect">Forums</a> and the <a class="xref" href="https://developer.nvidia.com/nvidia_bug/add" target="_blank" shape="rect">NVIDIA Bug Tracking System</a>.
</p>
<p class="p">
To submit feedback directly from the GUI, go to <strong class="ph b">Help->Send Feedback</strong>
and fill out the form. Enter your email address if you would like to
hear back from the <span class="ph">Nsight Systems</span> team.
</p>
<blockquote class="lq">
<p class="p"><img class="image" src="graphics/feedback.png" alt="Feedback"></img></p>
</blockquote>
<p class="p"></p>
<p class="p hr"></p>
<p class="p"></p>
</div>
</div>
</div>
<hr id="contents-end"></hr>
</article>
</div>
</div>
<script language="JavaScript" type="text/javascript" charset="utf-8" src="../common/formatting/common.min.js"></script>
<script language="JavaScript" type="text/javascript" charset="utf-8" src="../common/scripts/google-analytics/google-analytics-write.js"></script>
<script language="JavaScript" type="text/javascript" charset="utf-8" src="../common/scripts/google-analytics/google-analytics-tracker.js"></script>
<script type="text/javascript">_satellite.pageBottom();</script>
<script type="text/javascript">var switchTo5x=true;</script><script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script><script type="text/javascript">stLight.options({publisher: "998dc202-a267-4d8e-bce9-14debadb8d92", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script></body>
</html>
|