CATBench
收藏资源简介:
CATBench是由挪威科技大学、隆德大学和斯坦福大学联合创建的综合性基准测试套件,专注于编译器自动调优的黑盒优化。该数据集包含10个真实世界的编译器优化任务,覆盖从离散、条件到排列参数类型的复杂搜索空间,以及已知和未知的二进制约束。CATBench涵盖了多种计算领域,如张量代数、图像处理和机器学习,并使用先进的编译器如TACO和RISE/ELEVATE。数据集通过统一的容器化接口,支持多目标和多保真度评估,旨在解决编译器优化中的复杂问题,推动贝叶斯优化和编译器自动调优的研究。
CATBench is a comprehensive benchmark suite jointly developed by Norwegian University of Science and Technology, Lund University and Stanford University, focusing on black-box optimization for compiler auto-tuning. This dataset contains 10 real-world compiler optimization tasks, covering complex search spaces ranging from discrete, conditional to permutation parameter types, as well as known and unknown binary constraints. CATBench spans multiple computing domains such as tensor algebra, image processing and machine learning, and utilizes advanced compilers including TACO and RISE/ELEVATE. The dataset supports multi-objective and multi-fidelity evaluation via a unified containerized interface, aiming to address complex challenges in compiler optimization and advance research in Bayesian optimization and compiler auto-tuning.
CATBench: 基准测试框架
CATBench 是一个用于评估编译器基准测试的计算性能和能效的基准测试框架。它允许用户通过 gRPC 在实际硬件上、使用基于 Catboost 的代理模型或使用预计算的表格数据来定义和运行基准测试。
入门指南
要使用 CATBench,您需要定义一个基准测试实例,然后对其运行查询。该框架提供三种主要操作模式:
- 代理基准测试: 此模式训练并使用基于 Catboost 的代理模型。它速度更快,不需要实际的硬件资源进行计算。适用于快速分析和测试。
- 表格基准测试: 此模式使用以 CSV 格式存储的预计算数据。当您拥有完全相同的软件设置和种子,但没有硬件可用时,这很有用。
- 硬件基准测试(gRPC): 此模式涉及在实际硬件上运行基准测试。它提供更真实的结果,但需要设置必要的硬件资源并运行 gRPC 服务。
运行查询
定义基准测试实例后,您可以对其运行查询:
python fidelity_setting = { "iterations": 15, "repeats": 5, "wait_after_run": 1, "wait_between_repeats": 1 } query = { chunk_size: 16, unroll_factor: 16, omp_chunk_size: 2, omp_num_threads: 16, omp_scheduling_type: 0, omp_monotonic: 0, omp_dynamic: 0, permutation: (1, 0, 4, 3, 2) }
objectives_result = benchmark.query(query, fidelity_setting)
上述示例使用我们论文中的 2630 csv 数据集,并将自动下载它来训练代理模型。如果您希望使用不同的数据集,可以使用例如 "dataset=titanv" 来指定。RISE 基准测试的默认数据集是 "rtxtitan"。
硬件基准测试(gRPC)
python import catbench as cb
本地机器上的硬件基准测试
hardware_benchmark = cb.benchmark("spmm", dataset="hardware_run", server_addresses=["localhost"])
远程机器上的硬件基准测试
hardware_benchmark = cb.benchmark("spmm", dataset="hardware_run", server_addresses=["192.168.1.100"])
集群设置
对于集群设置,您只需在要使用的机器上启动 Docker 容器。然后在将托管 catbench 服务器管理器的机器上运行以下命令。服务器是您已启动的服务器的 IP 地址或域名。
sh python3 -m catbench --benchmark spmm --dataset cluster --servers server1.mydomain.com server2.mydomain.com server3.mydomain.com
catbench 客户端的服务器地址应将请求转发到运行 catbench 服务器管理器的机器。默认情况下,catbench 服务器运行在端口 50050,因此客户端需要通过传递 port=50050 作为 cb.benchmark 的参数来连接到此端口。
python cluster_benchmark = cb.benchmark("spmm", dataset="cluster_run", port=50050, server_addresses=["your.catbench.server.com"])
然后,您可以像往常一样使用客户端接口。配置会自动发送到任何可用服务器并排队运行。

- 1CATBench: A Compiler Autotuning Benchmarking Suite for Black-box Optimization挪威科技大学, 隆德大学, 斯坦福大学 · 2024年



