金属调试器#
性能分析是性能优化的关键步骤。您可以使用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调试器文档以获取更多信息。
Xcode 工作流程#
您可以通过在Xcode中运行来跳过保存到路径。首先,使用CMake生成一个Xcode项目。
mkdir build && cd build
cmake .. -DMLX_METAL_DEBUG=ON -G Xcode
open mlx.xcodeproj
选择metal_capture示例模式并运行。