金属调试器

金属调试器#

性能分析是性能优化的关键步骤。您可以使用MLX_METAL_DEBUG选项构建MLX,以改进Metal调试和优化工作流程。MLX_METAL_DEBUG调试选项:

  • 在Metal编译期间记录源,以便在调试时进行后续检查。

  • 标记诸如命令队列之类的金属对象,提高捕获的可读性。

要在Python中启用调试进行构建,请在构建调用前添加 CMAKE_ARGS="-DMLX_METAL_DEBUG=ON"

metal.start_capture() 函数启动对所有 MLX GPU 工作的捕获。

注意

要捕获GPU跟踪,您必须使用MTL_CAPTURE_ENABLED=1运行应用程序。

import mlx.core as mx

a = mx.random.uniform(shape=(512, 512))
b = mx.random.uniform(shape=(512, 512))
mx.eval(a, b)

trace_file = "mlx_trace.gputrace"

# Make sure to run with MTL_CAPTURE_ENABLED=1 and
# that the path trace_file does not already exist.
mx.metal.start_capture(trace_file)

for _ in range(10):
  mx.eval(mx.add(a, b))

mx.metal.stop_capture()

你可以在Xcode中打开并回放GPU跟踪。Dependencies视图 提供了所有操作的概览。查看Metal调试器文档以获取更多信息。

../_images/capture.png

Xcode 工作流程#

您可以通过在Xcode中运行来跳过保存到路径。首先,使用CMake生成一个Xcode项目。

mkdir build && cd build
cmake .. -DMLX_METAL_DEBUG=ON -G Xcode
open mlx.xcodeproj

选择metal_capture示例模式并运行。

../_images/schema.png