[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-NVIDIA--nvbench":3,"tool-NVIDIA--nvbench":65},[4,23,32,40,49,57],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85267,2,"2026-04-18T11:00:28",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},5784,"funNLP","fighting41love\u002FfunNLP","funNLP 是一个专为中文自然语言处理（NLP）打造的超级资源库，被誉为\"NLP 民工的乐园”。它并非单一的软件工具，而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。\n\n面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点，funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具，还独特地收录了丰富的垂直领域资源，如法律、医疗、金融行业的专用词库与数据集，甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性，从基础的字典词典到前沿的 BERT、GPT-2 模型代码，再到高质量的标注数据和竞赛方案，应有尽有。\n\n无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师，还是从事人工智能研究的学者，都能在这里找到急需的“武器弹药”。对于开发者而言，它能大幅减少寻找数据和复现模型的时间；对于研究者，它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神，极大地降低了中文自然语言处理的开发与研究成本，是中文 AI 社区不可或缺的宝藏仓库。",79857,1,"2026-04-08T20:11:31",[19,14,18],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"status":22},5773,"cs-video-courses","Developer-Y\u002Fcs-video-courses","cs-video-courses 是一个精心整理的计算机科学视频课程清单，旨在为自学者提供系统化的学习路径。它汇集了全球知名高校（如加州大学伯克利分校、新南威尔士大学等）的完整课程录像，涵盖从编程基础、数据结构与算法，到操作系统、分布式系统、数据库等核心领域，并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。\n\n面对网络上零散且质量参差不齐的教学资源，cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容，仅收录真正的大学层级课程，排除了碎片化的简短教程或商业广告，确保用户能接触到严谨的学术内容。\n\n这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员，以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽，不仅包含传统的软件工程与网络安全，还细分了生成式 AI、大语言模型、计算生物学等新兴学科，并直接链接至官方视频播放列表，让用户能一站式获取高质量的教育资源，免费享受世界顶尖大学的课堂体验。",79792,"2026-04-08T22:03:59",[18,13,14,20],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":46,"last_commit_at":47,"category_tags":48,"status":22},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[17,13,20,19,18],{"id":50,"name":51,"github_repo":52,"description_zh":53,"stars":54,"difficulty_score":46,"last_commit_at":55,"category_tags":56,"status":22},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",75940,"2026-04-19T21:42:30",[19,13,20,18],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":29,"last_commit_at":63,"category_tags":64,"status":22},3215,"awesome-machine-learning","josephmisiti\u002Fawesome-machine-learning","awesome-machine-learning 是一份精心整理的机器学习资源清单，汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点，这份清单按编程语言（如 Python、C++、Go 等）和应用场景（如计算机视觉、自然语言处理、深度学习等）进行了系统化分类，帮助使用者快速定位高质量项目。\n\n它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库，还是资深工程师对比不同语言的技术选型，都能从中获得极具价值的参考。此外，清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源，构建了从学习到实践的全链路支持体系。\n\n其独特亮点在于严格的维护标准：明确标记已停止维护或长期未更新的项目，确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”，awesome-machine-learning 以开源协作的方式持续更新，旨在降低技术探索门槛，让每一位从业者都能高效地站在巨人的肩膀上创新。",72149,"2026-04-03T21:50:24",[20,18],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":80,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":103,"forks":104,"last_commit_at":105,"license":106,"difficulty_score":107,"env_os":108,"env_gpu":109,"env_ram":108,"env_deps":110,"category_tags":118,"github_topics":119,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":22,"created_at":127,"updated_at":128,"faqs":129,"releases":155},10016,"NVIDIA\u002Fnvbench","nvbench","CUDA Kernel Benchmarking Library","nvbench 是一款专为简化 CUDA 内核性能测试而设计的 C++17 开源库。在 GPU 开发中，准确评估内核性能往往面临配置空间复杂、环境变量干扰大等挑战，nvbench 正是为了解决这些痛点而生。它帮助开发者轻松构建基准测试，自动探索不同的参数组合，并提供精确的吞吐量（如每秒元素数、显存带宽利用率）及执行时间统计。\n\n这款工具特别适合 CUDA 开发者、高性能计算研究人员以及需要优化 GPU 算法的工程师使用。其核心亮点在于强大的“参数轴”系统，支持动态数值、字符串乃至静态类型的灵活扫描，让用户能全面覆盖内核的配置空间。此外，nvbench 提供了丰富的命令行接口，允许用户在运行时自定义测试参数、锁定 GPU 频率或切换输出格式（Markdown\u002FCSV），无需重新编译代码。它还支持多种测量模式，包括清除缓存后的“冷启动”测试、批量平均测试以及纯 CPU 耗时测量，并可选手动控制计时起止，确保数据真实可靠。通过几行简洁的代码，用户即可生成专业的性能报告，显著提升 GPU 内核的调试与优化效率。","# Overview\n\nThis project is a work-in-progress. Everything is subject to change.\n\nNVBench is a C++17 library designed to simplify CUDA kernel benchmarking. It\nfeatures:\n\n* [Parameter sweeps](docs\u002Fbenchmarks.md#parameter-axes): a powerful and\n  flexible \"axis\" system explores a kernel's configuration space. Parameters may\n  be dynamic numbers\u002Fstrings or [static types](docs\u002Fbenchmarks.md#type-axes).\n* [Runtime customization](docs\u002Fcli_help.md): A rich command-line interface\n  allows [redefinition of parameter axes](docs\u002Fcli_help_axis.md), CUDA device\n  selection, locking GPU clocks (Volta+), changing output formats, and more.\n* [Throughput calculations](docs\u002Fbenchmarks.md#throughput-measurements): Compute\n  and report:\n  * Item throughput (elements\u002Fsecond)\n  * Global memory bandwidth usage (bytes\u002Fsecond and per-device %-of-peak-bw)\n* Multiple output formats: Currently supports markdown (default) and CSV output.\n* [Manual timer mode](docs\u002Fbenchmarks.md#explicit-timer-mode-nvbenchexec_tagtimer):\n  (optional) Explicitly start\u002Fstop timing in a benchmark implementation.\n* Multiple measurement types:\n  * Cold Measurements:\n    * Each sample runs the benchmark once with a clean device L2 cache.\n    * GPU and CPU times are reported.\n  * Batch Measurements:\n    * Executes the benchmark multiple times back-to-back and records total time.\n    * Reports the average execution time (total time \u002F number of executions).\n  * [CPU-only Measurements](docs\u002Fbenchmarks.md#cpu-only-benchmarks)\n    * Measures the host-side execution time of a non-GPU benchmark.\n    * Not suitable for microbenchmarking.\n\nCheck out [this talk](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=CtrqBmYtSEk) for an overview\nof the challenges inherent to CUDA kernel benchmarking and how NVBench solves them for you!\n\n# Supported Compilers and Tools\n\n- CMake > 3.30.4\n- CUDA Toolkit + nvcc: 12.0 and above\n- g++: 7 -> 14\n- clang++: 14 -> 19\n- Headers are tested with C++17 -> C++20.\n\n# Getting Started\n\n## Minimal Benchmark\n\nA basic kernel benchmark can be created with just a few lines of CUDA C++:\n\n```cpp\nvoid my_benchmark(nvbench::state& state) {\n  state.exec([](nvbench::launch& launch) {\n    my_kernel\u003C\u003C\u003Cnum_blocks, 256, 0, launch.get_stream()>>>();\n  });\n}\nNVBENCH_BENCH(my_benchmark);\n```\n\nSee [Benchmarks](docs\u002Fbenchmarks.md) for information on customizing benchmarks\nand implementing parameter sweeps.\n\n## Command Line Interface\n\nEach benchmark executable produced by NVBench provides a rich set of\ncommand-line options for configuring benchmark execution at runtime. See the\n[CLI overview](docs\u002Fcli_help.md)\nand [CLI axis specification](docs\u002Fcli_help_axis.md) for more information.\n\n## Examples\n\nThis repository provides a number of [examples](examples\u002F) that demonstrate\nvarious NVBench features and usecases:\n\n- [Runtime and compile-time parameter sweeps](examples\u002Faxes.cu)\n- [CPU-only benchmarking](examples\u002Fcpu_only.cu)\n- [Enums and compile-time-constant-integral parameter axes](examples\u002Fenums.cu)\n- [Reporting item\u002Fsec and byte\u002Fsec throughput statistics](examples\u002Fthroughput.cu)\n- [Skipping benchmark configurations](examples\u002Fskip.cu)\n- [Benchmarking on a specific stream](examples\u002Fstream.cu)\n- [Adding \u002F hiding columns (summaries) in markdown output](examples\u002Fsummaries.cu)\n- [Benchmarks that sync CUDA devices: `nvbench::exec_tag::sync`](examples\u002Fexec_tag_sync.cu)\n- [Manual timing: `nvbench::exec_tag::timer`](examples\u002Fexec_tag_timer.cu)\n\n### Building Examples\n\nTo build the examples:\n```\nmkdir -p build\ncd build\ncmake -DNVBench_ENABLE_EXAMPLES=ON -DCMAKE_CUDA_ARCHITECTURES=70 .. && make\n```\nBe sure to set `CMAKE_CUDA_ARCHITECTURE` based on the GPU you are running on.\n\nExamples are built by default into `build\u002Fbin` and are prefixed with `nvbench.example`.\n\n\u003Cdetails>\n  \u003Csummary>Example output from `nvbench.example.throughput`\u003C\u002Fsummary>\n\n```\n# Devices\n\n## [0] `Quadro GV100`\n* SM Version: 700 (PTX Version: 700)\n* Number of SMs: 80\n* SM Default Clock Rate: 1627 MHz\n* Global Memory: 32163 MiB Free \u002F 32508 MiB Total\n* Global Memory Bus Peak: 870 GiB\u002Fsec (4096-bit DDR @850MHz)\n* Max Shared Memory: 96 KiB\u002FSM, 48 KiB\u002FBlock\n* L2 Cache Size: 6144 KiB\n* Maximum Active Blocks: 32\u002FSM\n* Maximum Active Threads: 2048\u002FSM, 1024\u002FBlock\n* Available Registers: 65536\u002FSM, 65536\u002FBlock\n* ECC Enabled: No\n\n# Log\n\nRun:  throughput_bench [Device=0]\nWarn: Current measurement timed out (15.00s) while over noise threshold (1.26% > 0.50%)\nPass: Cold: 0.262392ms GPU, 0.267860ms CPU, 7.19s total GPU, 27393x\nPass: Batch: 0.261963ms GPU, 7.18s total GPU, 27394x\n\n# Benchmark Results\n\n## throughput_bench\n\n### [0] Quadro GV100\n\n| NumElements |  DataSize  | Samples |  CPU Time  | Noise |  GPU Time  | Noise | Elem\u002Fs  | GlobalMem BW  | BWPeak | Batch GPU  | Batch  |\n|-------------|------------|---------|------------|-------|------------|-------|---------|---------------|--------|------------|--------|\n|    16777216 | 64.000 MiB |  27393x | 267.860 us | 1.25% | 262.392 us | 1.26% | 63.940G | 476.387 GiB\u002Fs | 58.77% | 261.963 us | 27394x |\n```\n\n\u003C\u002Fdetails>\n\n\n## Demo Project\n\nTo get started using NVBench with your own kernels, consider trying out\nthe [NVBench Demo Project](https:\u002F\u002Fgithub.com\u002Fallisonvacanti\u002Fnvbench_demo).\n\n`nvbench_demo` provides a simple CMake project that uses NVBench to build an\nexample benchmark. It's a great way to experiment with the library without a lot\nof investment.\n\n# Contributing\n\nContributions are welcome!\n\nFor current issues, see the [issue board](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues). Issues labeled with [![](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flabels\u002FNVIDIA\u002Fnvbench\u002Fgood%20first%20issue)](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Flabels\u002Fgood%20first%20issue) are good for first time contributors.\n\n## Tests\n\nTo build `nvbench` tests:\n```\nmkdir -p build\ncd build\ncmake -DNVBench_ENABLE_TESTING=ON .. && make\n```\n\nTests are built by default into `build\u002Fbin` and prefixed with `nvbench.test`.\n\nTo run all tests:\n```\nmake test\n```\nor\n```\nctest\n```\n# License\n\nNVBench is released under the Apache 2.0 License with LLVM exceptions.\nSee [LICENSE](.\u002FLICENSE).\n\n# Scope and Related Projects\n\nNVBench will measure the CPU and CUDA GPU execution time of a ***single\nhost-side critical region*** per benchmark. It is intended for regression\ntesting and parameter tuning of individual kernels. For in-depth analysis of\nend-to-end performance of multiple applications, the NVIDIA Nsight tools are\nmore appropriate.\n\nNVBench is focused on evaluating the performance of CUDA kernels. It also provides\nCPU-only benchmarking facilities intended for non-trivial CPU workloads, but is\nnot optimized for CPU microbenchmarks. This may change in the future, but for now,\nconsider using Google Benchmark for high resolution CPU benchmarks.\n","# 概述\n\n本项目目前仍在开发中，所有内容均可能发生变化。\n\nNVBench 是一个基于 C++17 的库，旨在简化 CUDA 内核的基准测试。其主要特性包括：\n\n* [参数扫描](docs\u002Fbenchmarks.md#parameter-axes)：强大的灵活“轴”系统可以探索内核的配置空间。参数可以是动态的数字或字符串，也可以是[静态类型](docs\u002Fbenchmarks.md#type-axes)。\n* [运行时自定义](docs\u002Fcli_help.md)：丰富的命令行界面允许[重新定义参数轴](docs\u002Fcli_help_axis.md)、选择 CUDA 设备、锁定 GPU 时钟（Volta 及以上）、更改输出格式等。\n* [吞吐量计算](docs\u002Fbenchmarks.md#throughput-measurements)：计算并报告：\n  * 项吞吐量（元素\u002F秒）\n  * 全局内存带宽使用情况（字节\u002F秒及占峰值带宽的百分比）\n* 多种输出格式：目前支持 Markdown（默认）和 CSV 格式。\n* [手动计时模式](docs\u002Fbenchmarks.md#explicit-timer-mode-nvbenchexec_tagtimer)：（可选）在基准测试实现中显式地开始\u002F停止计时。\n* 多种测量类型：\n  * 冷启动测量：\n    * 每个样本都会在设备 L2 缓存清空的情况下运行一次基准测试。\n    * 报告 GPU 和 CPU 时间。\n  * 批量测量：\n    * 连续多次执行基准测试并记录总时间。\n    * 报告平均执行时间（总时间 \u002F 执行次数）。\n  * [仅 CPU 测量](docs\u002Fbenchmarks.md#cpu-only-benchmarks)\n    * 测量非 GPU 基准测试的主机端执行时间。\n    * 不适用于微基准测试。\n\n请观看[这场演讲](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=CtrqBmYtSEk)，了解 CUDA 内核基准测试固有的挑战，以及 NVBench 如何为您解决这些问题！\n\n# 支持的编译器和工具\n\n- CMake > 3.30.4\n- CUDA 工具包 + nvcc：12.0 及以上版本\n- g++：7 至 14 版本\n- clang++：14 至 19 版本\n- 头文件已测试支持 C++17 至 C++20。\n\n# 快速入门\n\n## 最简基准测试\n\n只需几行 CUDA C++ 代码即可创建一个基本的内核基准测试：\n\n```cpp\nvoid my_benchmark(nvbench::state& state) {\n  state.exec([](nvbench::launch& launch) {\n    my_kernel\u003C\u003C\u003Cnum_blocks, 256, 0, launch.get_stream()>>>();\n  });\n}\nNVBENCH_BENCH(my_benchmark);\n```\n\n有关自定义基准测试和实现参数扫描的信息，请参阅[基准测试](docs\u002Fbenchmarks.md)。\n\n## 命令行界面\n\nNVBench 生成的每个基准测试可执行文件都提供丰富的命令行选项，用于在运行时配置基准测试的执行。更多信息请参阅[CLI 概览](docs\u002Fcli_help.md)和[CLI 轴指定](docs\u002Fcli_help_axis.md)。\n\n## 示例\n\n此仓库提供了多个[示例](examples\u002F)，展示了 NVBench 的各种功能和用例：\n\n- [运行时和编译时参数扫描](examples\u002Faxes.cu)\n- [仅 CPU 基准测试](examples\u002Fcpu_only.cu)\n- [枚举和编译时常量整数参数轴](examples\u002Fenums.cu)\n- [报告项\u002F秒和字节\u002F秒的吞吐量统计信息](examples\u002Fthroughput.cu)\n- [跳过某些基准配置](examples\u002Fskip.cu)\n- [在特定流上进行基准测试](examples\u002Fstream.cu)\n- [在 Markdown 输出中添加或隐藏列（摘要）](examples\u002Fsummaries.cu)\n- [同步 CUDA 设备的基准测试：`nvbench::exec_tag::sync`](examples\u002Fexec_tag_sync.cu)\n- [手动计时：`nvbench::exec_tag::timer`](examples\u002Fexec_tag_timer.cu)\n\n### 构建示例\n\n要构建示例：\n```\nmkdir -p build\ncd build\ncmake -DNVBench_ENABLE_EXAMPLES=ON -DCMAKE_CUDA_ARCHITECTURES=70 .. && make\n```\n请确保根据您正在使用的 GPU 设置 `CMAKE_CUDA_ARCHITECTURE`。\n\n示例默认会构建到 `build\u002Fbin` 目录下，并以 `nvbench.example` 为前缀。\n\n\u003Cdetails>\n  \u003Csummary>来自 `nvbench.example.throughput` 的示例输出\u003C\u002Fsummary>\n\n```\n# 设备\n\n## [0] `Quadro GV100`\n* SM 版本：700（PTX 版本：700）\n* SM 数量：80\n* SM 默认主频：1627 MHz\n* 全局内存：32163 MiB 空闲 \u002F 32508 MiB 总容量\n* 全局内存总线峰值：870 GiB\u002F秒（4096 位 DDR @850MHz）\n* 最大共享内存：96 KiB\u002FSM，48 KiB\u002F块\n* L2 缓存大小：6144 KiB\n* 最大活动块数：32\u002FSM\n* 最大活动线程数：2048\u002FSM，1024\u002F块\n* 可用寄存器：65536\u002FSM，65536\u002F块\n* ECC 是否启用：否\n\n# 日志\n\n运行： throughput_bench [设备=0]\n警告：当前测量超时（15.00s），且噪声超过阈值（1.26% > 0.50%）\n通过：冷启动：0.262392ms GPU，0.267860ms CPU，7.19s 总 GPU 时间，27393 次\n通过：批量：0.261963ms GPU，总 GPU 时间 7.18s，27394 次\n\n# 基准测试结果\n\n## throughput_bench\n\n### [0] Quadro GV100\n\n| NumElements |  DataSize  | Samples |  CPU Time  | Noise |  GPU Time  | Noise | Elem\u002Fs  | GlobalMem BW  | BWPeak | Batch GPU  | Batch  |\n|-------------|------------|---------|------------|-------|------------|-------|---------|---------------|--------|------------|--------|\n|    16777216 | 64.000 MiB |  27393x | 267.860 us | 1.25% | 262.392 us | 1.26% | 63.940G | 476.387 GiB\u002Fs | 58.77% | 261.963 us | 27394x |\n```\n\n\u003C\u002Fdetails>\n\n\n## 演示项目\n\n要开始使用 NVBench 对您自己的内核进行基准测试，可以尝试[NVBench 演示项目](https:\u002F\u002Fgithub.com\u002Fallisonvacanti\u002Fnvbench_demo)。\n\n`nvbench_demo` 提供了一个简单的 CMake 项目，使用 NVBench 构建示例基准测试。这是一个无需过多投入即可体验该库的绝佳方式。\n\n# 贡献\n\n欢迎贡献！\n\n有关当前问题，请查看[问题板](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues)。标有 [![](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flabels\u002FNVIDIA\u002Fnvbench\u002Fgood%20first%20issue)](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Flabels\u002Fgood%20first%20issue) 的问题非常适合首次贡献者。\n\n## 测试\n\n要构建 `nvbench` 测试：\n```\nmkdir -p build\ncd build\ncmake -DNVBench_ENABLE_TESTING=ON .. && make\n```\n\n测试默认会构建到 `build\u002Fbin` 目录下，并以 `nvbench.test` 为前缀。\n\n运行所有测试：\n```\nmake test\n```\n或者\n```\nctest\n```\n# 许可证\n\nNVBench 采用 Apache 2.0 许可证，并附带 LLVM 异议条款。\n详情请参阅[LICENSE](.\u002FLICENSE)。\n\n# 范围及相关项目\n\nNVBench 将为每个基准测试测量***单个主机端关键区域***的 CPU 和 CUDA GPU 执行时间。它主要用于单个内核的回归测试和参数调优。对于多应用端到端性能的深入分析，NVIDIA Nsight 工具更为合适。\n\nNVBench 专注于评估 CUDA 内核的性能。它还提供仅 CPU 基准测试功能，适用于非平凡的 CPU 工作负载，但并不针对 CPU 微基准测试进行优化。未来可能会有所改变，但目前建议使用 Google Benchmark 来进行高分辨率的 CPU 基准测试。","# NVBench 快速上手指南\n\nNVBench 是一个基于 C++17 的库，旨在简化 CUDA 内核的性能基准测试。它支持灵活的参数扫描、运行时自定义配置以及多种输出格式（Markdown\u002FCSV），能够自动计算吞吐量（元素\u002F秒、带宽利用率）并区分冷启动与批量测量模式。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux (推荐)\n*   **编译器**:\n    *   `g++`: 版本 7 - 14\n    *   `clang++`: 版本 14 - 19\n    *   支持标准：C++17 至 C++20\n*   **CUDA Toolkit**: 版本 12.0 及以上 (包含 `nvcc`)\n*   **构建工具**: CMake 版本 3.30.4 及以上\n*   **硬件**: NVIDIA GPU (建议 Volta 架构及以上以支持时钟锁定功能)\n\n## 安装步骤\n\nNVBench 通常作为子模块集成到您的项目中，或者您可以克隆仓库进行本地构建。以下是构建官方示例项目的步骤，用于验证环境：\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench.git\n    cd nvbench\n    ```\n\n2.  **创建构建目录并配置**\n    请根据您的 GPU 架构设置 `CMAKE_CUDA_ARCHITECTURES` (例如 Ampere 架构为 80, Hopper 为 90)。以下示例以 Compute Capability 7.0 为例：\n    ```bash\n    mkdir -p build\n    cd build\n    cmake -DNVBench_ENABLE_EXAMPLES=ON -DCMAKE_CUDA_ARCHITECTURES=70 ..\n    ```\n\n3.  **编译项目**\n    ```bash\n    make\n    ```\n    编译完成后，可执行文件将位于 `build\u002Fbin` 目录下，文件名前缀为 `nvbench.example`。\n\n*(注：若需运行单元测试，可在 cmake 配置时添加 `-DNVBench_ENABLE_TESTING=ON`，然后执行 `make test` 或 `ctest`)*\n\n## 基本使用\n\n### 1. 编写最简单的 Benchmark\n\n创建一个 `.cu` 文件，只需几行代码即可定义一个基准测试。NVBench 通过宏 `NVBENCH_BENCH` 注册测试函数。\n\n```cpp\nvoid my_benchmark(nvbench::state& state) {\n  \u002F\u002F exec lambda 中启动 CUDA 内核\n  state.exec([](nvbench::launch& launch) {\n    \u002F\u002F 替换为您的实际内核启动代码\n    \u002F\u002F my_kernel\u003C\u003C\u003Cnum_blocks, 256, 0, launch.get_stream()>>>();\n    \n    \u002F\u002F 示例占位：假设有一个空内核\n    my_kernel\u003C\u003C\u003C1, 256, 0, launch.get_stream()>>>();\n  });\n}\n\n\u002F\u002F 注册基准测试\nNVBENCH_BENCH(my_benchmark);\n```\n\n### 2. 集成到 CMake 项目\n\n如果您想在自己的项目中使用，可以参考 [NVBench Demo Project](https:\u002F\u002Fgithub.com\u002Fallisonvacanti\u002Fnvbench_demo)。核心步骤是在 `CMakeLists.txt` 中链接 `nvbench` 库，并确保启用 CUDA 语言支持。\n\n### 3. 运行与查看结果\n\n编译生成可执行文件后，直接在命令行运行即可。NVBench 默认输出 Markdown 格式的表格，包含 GPU\u002FCPU 时间、噪声比、吞吐量及显存带宽等详细数据。\n\n```bash\n.\u002Fyour_benchmark_executable\n```\n\n**输出示例：**\n```markdown\n# Benchmark Results\n\n## my_benchmark\n\n### [0] Quadro GV100\n\n| NumElements | Samples |  CPU Time  | Noise |  GPU Time  | Noise | Elem\u002Fs  | GlobalMem BW  |\n|-------------|---------|------------|-------|------------|-------|---------|---------------|\n|    16777216 |  27393x | 267.860 us | 1.25% | 262.392 us | 1.26% | 63.940G | 476.387 GiB\u002Fs |\n```\n\n### 4. 高级用法提示\n\n*   **参数扫描**: 无需修改代码，可通过命令行参数动态调整内核配置（如块大小、元素数量）。\n*   **输出格式**: 添加 `--format csv` 可导出 CSV 数据以便进一步分析。\n*   **设备选择**: 使用 `--device \u003Cid>` 指定特定的 GPU 进行测试。\n*   **详细文档**: 更多功能（如枚举轴、手动计时模式、跳过特定配置）请参阅源码中的 `examples\u002F` 目录或官方文档。","某高性能计算团队正在为新一代图像处理算法优化 CUDA 内核，需要在不同数据规模和 GPU 架构下验证性能表现。\n\n### 没有 nvbench 时\n- 开发人员需手动编写繁琐的测试循环来遍历不同的线程块大小和数据量，代码复用性极差且容易出错。\n- 缺乏统一的指标统计，每次运行后需人工计算吞吐量（如元素\u002F秒）和显存带宽利用率，难以快速判断瓶颈。\n- 无法灵活地在运行时切换测试参数或锁定 GPU 频率，导致在不同环境下的对比实验数据一致性难以保证。\n- 测试结果分散在日志文件中，整理成可视化的 Markdown 表格或 CSV 报告需要耗费大量额外时间进行后处理。\n\n### 使用 nvbench 后\n- 利用强大的“参数轴”系统，仅需几行配置即可自动扫描多种内核配置空间，轻松实现动态参数与静态类型的组合测试。\n- 内置吞吐量计算功能，自动输出每项测试的元素处理速度和显存带宽占用百分比，直观展示性能水位。\n- 通过丰富的命令行接口，无需重新编译即可动态重定义测试参数、指定设备或锁定时钟频率，确保实验条件严格可控。\n- 直接生成格式规范的 Markdown 或 CSV 报告，清晰呈现冷启动与批量执行的对比数据，极大加速了性能分析报告的产出。\n\nnvbench 将原本耗时数天的内核性能调优与数据整理工作缩短至小时级，让开发者能更专注于算法逻辑本身的优化。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FNVIDIA_nvbench_5de4707e.png","NVIDIA","NVIDIA Corporation","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FNVIDIA_7dcf6000.png","",null,"https:\u002F\u002Fnvidia.com","https:\u002F\u002Fgithub.com\u002FNVIDIA",[84,88,92,96,100],{"name":85,"color":86,"percentage":87},"Cuda","#3A4E3A",60.5,{"name":89,"color":90,"percentage":91},"C++","#f34b7d",16,{"name":93,"color":94,"percentage":95},"Python","#3572A5",13.4,{"name":97,"color":98,"percentage":99},"CMake","#DA3434",5,{"name":101,"color":102,"percentage":99},"Shell","#89e051",854,103,"2026-04-18T22:01:36","Apache-2.0",4,"未说明","必需 NVIDIA GPU (支持 Volta 架构及以上以锁定时钟)，需安装 CUDA Toolkit 12.0+，具体显存大小取决于基准测试配置",{"notes":111,"python":112,"dependencies":113},"这是一个 C++17 库，用于简化 CUDA 内核基准测试，非 Python 工具。构建示例或测试时需根据目标 GPU 设置 CMAKE_CUDA_ARCHITECTURES（如 70）。支持冷启动测量、批量测量及纯 CPU 测量模式。","不需要",[114,115,116,117],"CMake > 3.30.4","CUDA Toolkit + nvcc >= 12.0","g++ 7-14","clang++ 14-19",[18],[120,121,122,123,124,125,126],"benchmark","kernel-benchmark","cuda-kernels","cuda","performance","nvidia","gpu","2026-03-27T02:49:30.150509","2026-04-20T17:02:29.287423",[130,135,140,145,150],{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},44986,"如何在函数作用域内使用带有多个模板参数的方法运行 NVBench？","NVBENCH_BENCH 宏设计用于全局作用域，不支持在函数内部定义基准测试。如果您需要在函数作用域内使用（例如处理多模板参数），请改用 NVBENCH_MAIN 宏代替 NVBENCH_MAIN_BODY。对于多模板参数，建议使用 NVBENCH_BENCH_TYPES 配合类型轴（type axes）在全局作用域定义，或者确保宏调用时正确处理逗号分隔的模板参数。注意：NVBENCH_BENCH_TYPES 应在全局作用域使用，而 NVBENCH_MAIN 应在函数作用域使用。","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues\u002F101",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},44987,"如何在完全离线（无法访问 GitHub）的环境中构建 NVBench？","由于 rapids-cmake 需要连接 GitHub 进行版本检查，完全离线构建需要额外步骤：\n1. 在有网络的机器上执行：\n   cmake -S . -B build -DCPM_SOURCE_CACHE=\u002Fpath\u002Fto\u002Foffline_cache\u002F\n   mv build\u002F_deps\u002Frapids-cmake-src\u002F \u002Fpath\u002Fto\u002Foffline_cache\u002F\n2. 将缓存目录复制到离线机器。\n3. 在离线机器上创建构建脚本（例如 NVBENCH_RAPIDS.cmake），内容为：\n   add_subdirectory(${CPM_SOURCE_CACHE}\u002Frapids-cmake-src _deps\u002Frapids-cmake-build)\n4. 在离线机器上执行构建：\n   mkdir build\n   cmake -S . -B offline -DCPM_SOURCE_CACHE=\u002Fpath\u002Fto\u002Foffline_cache\u002F","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues\u002F112",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},44988,"使用 --profile 标志时，为什么 Nsight Systems 无法收集 GPU 指标或出现错误？","Nsight Systems 与 CUPTI 存在兼容性问题。虽然 NVBench 在使用 --profile 标志时会自动跳过 CUPTI 测量，但如果仍然遇到缺失或不一致的 GPU 指标数据，根本原因可能是 Nsight Systems 自身的限制。有效的解决方法是在运行 Nsight Systems 时显式降低 GPU 指标频率，例如添加参数：--gpu-metrics-frequency=100。即使完全禁用 CUPTI 链接，该参数通常也是解决此类时序错误的关键。","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues\u002F99",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},44989,"如何在性能分析模式下只记录基准测试涉及的核心内核，排除初始化和设置阶段？","在使用 --profile 标志进行分析时，可以通过在代码中插入 CUDA 分析器 API 来控制记录范围。具体做法是在基准测试的核心逻辑开始前调用 cudaProfilerStart()，并在结束后调用 cudaProfilerStop()。这将确保外部工具（如 Nsight Compute）仅记录这两个调用之间的活动，从而排除设置和初始化阶段的干扰。注意：CUDA Runtime API 需要包含头文件 \u003Ccuda_profiler_api.h>。","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues\u002F227",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},44990,"NVBench 是否支持检测基准测试期间的 GPU 时钟频率不稳定或降频情况？","是的，这是一个已知的需求（关联 Issue #6）。虽然 NVML 不直接提供此特定功能，但可以通过查询全局计时器和 SM 块时钟来实现。基本思路是在基准测试前后分别获取时间戳和时钟计数值，计算平均频率。如果计算出的 clock_rate 与预期值偏差较大，则表明系统不稳定或发生了降频，此时应发出警告。这通常需要自定义 CUDA Kernel 来读取 %%globaltimer 和 %%smid 等寄存器。","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fissues\u002F193",[156,161],{"id":157,"version":158,"summary_zh":159,"released_at":160},359895,"python-0.2.0","以下是 `cuda-bench` Python 包 0.1.0 版本的发行说明，日期为 **2026年1月30日**。\n\n`cuda-bench` 处于“实验性”状态，这意味着其 API 和功能集可能会迅速变化。\n\n## 安装\n\n请参阅[此处](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fblob\u002Fmain\u002Fpython\u002FREADME.md)的安装说明。\n\n## 破坏性变更\n\n- 移除 cupti 功能","2026-02-04T01:23:02",{"id":162,"version":163,"summary_zh":164,"released_at":165},359896,"python-0.1.0","以下是 `cuda-bench` Python 包 0.1.0 版本的发行说明，日期为 **2026年1月30日**。\n\n`cuda-bench` 处于“实验性”状态，这意味着其 API 和功能集可能会迅速变化。\n\n## 安装\n\n请参阅[此处](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvbench\u002Fblob\u002Fmain\u002Fpython\u002FREADME.md)的安装说明。\n\n## 功能\n\n- 这是 `cuda-bench` 的初始版本，引入了用于 NVBench 的 Python API。","2026-01-30T15:38:21"]