mirror of
https://github.com/ml-explore/mlx.git
synced 2025-06-24 17:31:16 +08:00
Add a mx.metal.device_info
(#1060)
* device inof * add variant * fix linux * fix doc
This commit is contained in:
parent
a30e7ed2da
commit
19bef39f5c
@ -7,6 +7,7 @@ Metal
|
|||||||
:toctree: _autosummary
|
:toctree: _autosummary
|
||||||
|
|
||||||
is_available
|
is_available
|
||||||
|
device_info
|
||||||
get_active_memory
|
get_active_memory
|
||||||
get_peak_memory
|
get_peak_memory
|
||||||
get_cache_memory
|
get_cache_memory
|
||||||
|
@ -556,4 +556,15 @@ void new_stream(Stream stream) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unordered_map<std::string, std::variant<std::string, size_t>>
|
||||||
|
device_info() {
|
||||||
|
auto raw_device = device(default_device()).mtl_device();
|
||||||
|
auto arch = std::string(raw_device->architecture()->name()->utf8String());
|
||||||
|
return {
|
||||||
|
{"architecture", arch},
|
||||||
|
{"max_buffer_length", raw_device->maxBufferLength()},
|
||||||
|
{"max_recommended_working_set_size",
|
||||||
|
raw_device->recommendedMaxWorkingSetSize()}};
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace mlx::core::metal
|
} // namespace mlx::core::metal
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <variant>
|
||||||
|
|
||||||
#include "mlx/array.h"
|
#include "mlx/array.h"
|
||||||
|
|
||||||
namespace mlx::core::metal {
|
namespace mlx::core::metal {
|
||||||
@ -61,4 +63,8 @@ void clear_cache();
|
|||||||
void start_capture(std::string path = "");
|
void start_capture(std::string path = "");
|
||||||
void stop_capture();
|
void stop_capture();
|
||||||
|
|
||||||
|
/** Get information about the GPU and system settings. */
|
||||||
|
std::unordered_map<std::string, std::variant<std::string, size_t>>
|
||||||
|
device_info();
|
||||||
|
|
||||||
} // namespace mlx::core::metal
|
} // namespace mlx::core::metal
|
||||||
|
@ -49,4 +49,10 @@ void start_capture(std::string path) {}
|
|||||||
void stop_capture() {}
|
void stop_capture() {}
|
||||||
void clear_cache() {}
|
void clear_cache() {}
|
||||||
|
|
||||||
|
std::unordered_map<std::string, std::variant<std::string, size_t>>
|
||||||
|
device_info() {
|
||||||
|
throw std::runtime_error(
|
||||||
|
"[metal::device_info] Cannot get device info without metal backend");
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace mlx::core::metal
|
} // namespace mlx::core::metal
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
#include <nanobind/nanobind.h>
|
#include <nanobind/nanobind.h>
|
||||||
#include <nanobind/stl/optional.h>
|
#include <nanobind/stl/optional.h>
|
||||||
#include <nanobind/stl/string.h>
|
#include <nanobind/stl/string.h>
|
||||||
|
#include <nanobind/stl/unordered_map.h>
|
||||||
|
#include <nanobind/stl/variant.h>
|
||||||
|
|
||||||
namespace nb = nanobind;
|
namespace nb = nanobind;
|
||||||
using namespace nb::literals;
|
using namespace nb::literals;
|
||||||
@ -116,4 +118,19 @@ void init_metal(nb::module_& m) {
|
|||||||
R"pbdoc(
|
R"pbdoc(
|
||||||
Stop a Metal capture.
|
Stop a Metal capture.
|
||||||
)pbdoc");
|
)pbdoc");
|
||||||
|
metal.def(
|
||||||
|
"device_info",
|
||||||
|
&metal::device_info,
|
||||||
|
R"pbdoc(
|
||||||
|
Get information about the GPU device and system settings.
|
||||||
|
|
||||||
|
Currently returns:
|
||||||
|
|
||||||
|
* ``architecture``
|
||||||
|
* ``max_buffer_size``
|
||||||
|
* ``max_recommended_working_set_size``
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: A dictionary with string keys and string or integer values.
|
||||||
|
)pbdoc");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user