跳到主要内容

API 参考手册

摩尔线程 GPU 管理库 (MTML)

主页

基本概念

支持的平台

处理器架构操作系统
x86_64Ubuntu 20.04,UOS 20,Kylin V10,Windows 10 Pro 21H
AArch64Kylin V10 SP

不透明对象类型

MTML 库使用几种核心不透明对象类型。每种数据类型都代表用户可与之交互的特定功能实体。下面定义的大多数函数都将一个或多个不透明对象作为输入参数。

  • MtmlLibrary 代表 MTML 库本身,是访问和创建其他不透明对象的入口。
  • MtmlSystem 代表运行该库的系统环境。
  • MtmlDevice 代表安装在系统中的摩尔线程设备(包括虚拟设备)。
  • MtmlGpu 表示摩尔线程设备的图形单元,负责三维和计算工作负载。
  • MtmlMemory 代表摩尔线程设备上的显存单元。
  • MtmlVpu 代表摩尔线程设备的视频编解码器单元,负责处理视频编码和解码任务。

上述不透明对象类型之间的关系是分层的,这意味着某些类型 “包含 ”其他类型。上述不透明对象类型的层次结构可概括如下。

Library
|--- System
|--- Device
|--- GPU
|--- Memory
|--- VPU

初始化和释放

在将不透明对象作为参数调用其他函数之前,必须对其进行正确的初始化。不透明对象类型之间的层次关系决定了它们的初始化顺序。例如,要初始化 MtmlGpu 结构,用户应首先初始化 MtmlLibrary 结构,然后从 MtmlLibrary 初始化 MtmlDevice 结构,最后从 MtmlDevice 结构初始化 MtmlGpu 结构。

不透明对象的初始化是通过调用 mtml***Init***() 函数完成的。如果不透明对象 1 和对象 2 指向相同的资源,表达式 (object1 == object2) 的值将始终为 true。

虚拟化

在使用 MTML 库提供的设备虚拟化管理功能之前,建议先了解一些基本概念。

虚拟化功能有两个主要功能:虚拟化类型管理和虚拟设备管理。更具体地说,将介绍几个概念:

  • 可虚拟化:这是一个用来描述物理设备是否支持虚拟化的概念。因此,可虚拟化设备被定义为可以创建虚拟资源的物理设备。
  • 虚拟化类型:虚拟化类型是一种限制虚拟资源(如设备显存)分配的规范模板。通常,一个可虚拟化的设备支持多种虚拟化类型,因此可以创建具有相应规格的虚拟设备(见下文)。
  • 虚拟设备:根据指定的虚拟化类型,从可虚拟化设备创建虚拟设备。注意虚拟设备是一个仅适用于 host 的概念,即只有当 MTML 库在支持虚拟化的 host 环境中运行时,才能初始化代表虚拟设备的 MtmlDevice 不透明对象。

编解码器会话

编解码会话是视频流的独立编码/解码过程。摩尔线程设备的视频编解码单元可支持的并发编解码会话数称为编解码容量解码容量编码容量分别表示并发解码器会话和编码器会话的最大限制。

每个编解码器会话都有一个唯一的积分值,称为会话 ID。对于解码器会话,会话 ID 的范围是 0 ∼(解码容量-1),而对于编码器会话,会话 ID 的范围是 0 ∼(编码容量-1)

编解码会话的另一个重要方面是其状态。编解码会话的状态定义如下:

  • 不活动(闲置): 该会话没有分配视频工作量。
  • 活动:有视频编码/解码工作负载分配给此会话。在任何给定的时间点,都可以查询编解码器会话的状态。如果编解码器会话处于活动状态,则可查询其指标信息。

有关可行的示例代码,请参阅 sample/basic/basic_sample.cpp 中的 videoMonApp() 示例。

多主核(MPC)

MPC 是 Multiple Primary Core 的缩写,是 Moore Threads 专有的 GPU 硬件虚拟化技术,支持将单个功能强大的 GPU 设备划分为多个功能较弱的 GPU 设备,并具有物理资源隔离功能。简单地说,当在设备上启用 MPC 时,即使只安装了一个物理设备,系统中也会存在多个称为 MPC 实例的设备。每个 MPC 实例都拥有物理设备的部分 GPU 内核和显存资源。这些实例可以独立使用,提供的功能如同安装了多个物理设备。为了管理 MPC 实例,每个启用 MPC 的物理设备都会引入一个模拟设备,称为 MPC 父设备。MPC 父设备负责控制 MPC 功能,并充当全局级管理接入点。在具有单个支持 MPC 的物理设备的系统中,如果启用了 MPC,将有 N+1 个设备可通过 mtml API 访问。由于前面提到的原因,这包括 N 个 MPC 实例设备和 1 个 MPC 父设备。

MPC 父设备的数量保持固定,但 MPC 实例的数量可根据用户需求进行配置。要确定单个物理设备可创建的 MPC 实例的最大数量,有必要了解 MPC 配置文件MPC 配置 的概念。

MPC 配置文件定义了 MPC 实例设备的资源分配模式。因此,根据相同的 MPC 配置文件创建的 MPC 实例将获得相同的资源分配。MPC 配置文件定义的最重要属性是 GPU 内核和显存(VRAM)的分配数量。这些属性直接反映在 MPC 配置文件的名称中。

例如,名为 “4C+8GB ”的 MPC 配置文件表示,使用该配置文件创建的 MPC 实例将分配 4 个 GPU 内核和 8 GB 显存。通常,支持 MPC 的物理设备支持一系列 MPC 配置文件,这些配置文件可用于定义 MPC 实例的特性。不同型号的物理设备可用的 MPC 配置文件可能会有所不同。

由于物理设备上可用的资源总量保持不变,因此选择一个合适的方案将这些资源分配给 MPC 实例至关重要。 在 MPC 实例之间分配资源的适当方案,以确保没有资源闲置,这一点至关重要。

这就是MPC 配置发挥作用的地方。MPC 配置是 MPC 配置文件的组合,可应用于具有 MPC 功能的特定物理设备,以创建 MPC 实例。预设多个 MPC 配置可涵盖特定 MPC 物理设备支持的所有可能的资源分配计划。

例如,让我们考虑一个具有 8 个 GPU 内核和 32 GB 显存的 MPC 物理设备。该设备支持的 MPC 配置文件如下:

MPC 配置文件名称说明
8C+32GB指定具有 8 个 GPU 内核和 32 GB 显存的 MPC 实例
4C+16GB指定具有 4 个 GPU 内核和 16 GB 显存的 MPC 实例
2C+8GB指定具有 2 个 GPU 内核和 8 GB 显存的 MPC 实例
1C+4GB指定具有 1 个 GPU 内核和 4 GB 显存的 MPC 实例

支持的 MPC 配置如下:

MPC 配置名称包含的 MPC 配置文件说明
8-88C+32GB包括一个具有 8 个 GPU 内核和 32 GB 显存的 MPC 实例
8-44(4C+16GB)∗2包括两个具有 4 个 GPU 内核和 16 GB 显存的 MPC 实例
8-4224C+16GB, (2C+8GB)∗2包括一个具有 4 个 GPU 内核和 16 GB 显存的 MPC 实例,以及两个 MPC 实例(每个实例具有 2 个 GPU 内核和 8 GB 显存)
8-42114C+16GB, 2C+8GB, (1C+4GB)∗2包括一个具有 4 个 GPU 内核和 16 GB 显存的 MPC 实例,一个具有 2 个 GPU 内核和 8 GB 显存的 MPC 实例,以及两个各具有 1 个 GPU 内核和 4 GB 显存的 MPC 实例
8-411114C+16GB, (1C+4GB)∗4包括一个具有 4 个 GPU 内核和 16 GB 显存的 MPC 实例,以及四个 MPC 实例(每个实例具有 1 个 GPU 内核和 4 GB 显存)
8-2222(2C+8GB)∗4包括四个 MPC 实例,每个实例有 2 个 GPU 内核和 8 GB 显存
8-22211(2C+8GB)∗3, (1C+4GB)∗2包括三个 MPC 实例(每个实例有 2 个 GPU 内核和 8 GB 显存)和两个 MPC 实例(每个实例有 1 个 GPU 内核和 4 GB 显存)
8-221111(2C+8GB)∗2, (1C+4GB)∗4包括两个 MPC 实例(每个实例有 2 个 GPU 内核和 8 GB 显存)以及四个 MPC 实例(每个实例有 1 个 GPU 内核和 4 GB 显存)
8-21111112C+8GB, (1C+4GB)∗ 6包括一个具有 2 个 GPU 内核和 8 GB 显存的 MPC 实例,以及六个 MPC 实例(每个实例具有 1 个 GPU 内核和 4 GB 显存)
8-11111111(1C+4GB)∗8包括 8 个 MPC 实例,每个实例有 1 个 GPU 内核和 4 GB 显存

默认情况下,当系统启动或重新安装设备驱动程序时,支持 MPC 的 GPU 设备处于禁用状态。在这种禁用状态下,设备可作为普通 GPU 设备使用,不具备 MPC 功能。如果安装的驱动程序支持 MPC,则可使用 libmtml APImthreads-gmi 实用程序在这些设备上启用 MPC 功能。在物理设备上启用 MPC 后,默认情况下将只创建一个 MPC 实例,该实例可访问该物理设备的所有资源,但 MPC 父设备除外。在前面提到的例子中,创建的唯一 MPC 实例将基于 8C+32GB MPC 配置文件,表明应用的默认 MPC 配置为 8-8

启用或禁用该功能以及修改支持 MPC 的设备上的 MPC 配置会导致系统内的设备编号发生变化。这些设备编号的变化会影响 libmtml 使用的设备枚举和排序逻辑。因此,在执行这些操作后,有必要重新初始化 libmtml,方法是将其关闭,然后再次初始化。重新初始化可确保 libmtml 在更新后的设备集中正常运行。用户在使用时应仔细阅读相关 MTML API 的文档,包含重要说明。

Deprecated List

成员 MTML_DEVICE_VBIOS_VERSION_BUFFER_SIZE

更名为 MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE

成员 mtmlDeviceFreeGpu (MtmlGpu* gpu)

GPU 不透明对象所管理的资源,使其无法使用。

适用于所有产品。

成员 mtmlDeviceFreeMemory (MtmlMemory* mem)

释放显存不透明对象所管理的资源。

成员 mtmlDeviceFreeVirtDevice (MtmlDevice* virtDev)

释放虚拟设备的不透明对象所管理的资源。

此功能仅适用于支持虚拟化的设备,请参阅 MtmlDeviceProperty.virtCap 以确定设备是否可虚拟化。

成员 mtmlDeviceFreeVpu (MtmlVpu* vpu)

释放 VPU 不透明对象所管理的资源。

成员 mtmlDeviceGetVbiosVersion (const MtmlDevice* dev, char* version, unsigned int length)

更名为 mtmlDeviceGetMtBiosVersion,能够更准确地描述。

成员 mtmlLibraryFreeDevice (MtmlDevice* dev)

释放设备不透明对象管理的资源。

成员 mtmlLibraryFreeSystem (MtmlSystem* sys)

释放 MtmlSystem 不透明对象管理的资源,使其无法使用。

成员 MtmlPciInfo::busWidth

该值设为零。

模块文档

常量定义

  • #define MTML_LIBRARY_VERSION_BUFFER_SIZE 32
  • #define MTML_DRIVER_VERSION_BUFFER_SIZE 80
  • #define MTML_DEVICE_NAME_BUFFER_SIZE 32
  • #define MTML_DEVICE_UUID_BUFFER_SIZE 48
  • #define MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE 64
  • #define MTML_DEVICE_VBIOS_VERSION_BUFFER_SIZE MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE
  • #define MTML_DEVICE_PATH_BUFFER_SIZE 64
  • #define MTML_DEVICE_PCI_SBDF_BUFFER_SIZE 32
  • #define MTML_VIRT_TYPE_ID_BUFFER_SIZE 16
  • #define MTML_VIRT_TYPE_CLASS_BUFFER_SIZE 32
  • #define MTML_VIRT_TYPE_NAME_BUFFER_SIZE 32
  • #define MTML_VIRT_TYPE_API_BUFFER_SIZE 16
  • #define MTML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"
  • #define MTML_LOG_FILE_PATH_BUFFER_SIZE 200
  • #define MTML_MPC_PROFILE_NAME_BUFFER_SIZE 32
  • #define MTML_MPC_CONF_NAME_BUFFER_SIZE 32
  • #define MTML_MPC_CONF_MAX_PROF_NUM 16
  • #define MTML_DEVICE_SLOT_NAME_BUFFER_SIZE 32
  • #define MTML_MEMORY_VENDOR_BUFFER_SIZE 64
  • #define MTML_DEVICE_SERIAL_NUMBER_BUFFER_SIZE 64

枚举

  • MtmlReturn
enum MtmlReturn {
MTML_SUCCESS = 0,
MTML_ERROR_DRIVER_NOT_LOADED,
MTML_ERROR_DRIVER_FAILURE,
MTML_ERROR_INVALID_ARGUMENT,
MTML_ERROR_NOT_SUPPORTED,
MTML_ERROR_NO_PERMISSION,
MTML_ERROR_INSUFFICIENT_SIZE,
MTML_ERROR_NOT_FOUND,
MTML_ERROR_INSUFFICIENT_MEMORY,
MTML_ERROR_DRIVER_TOO_OLD,
MTML_ERROR_DRIVER_TOO_NEW,
MTML_ERROR_TIMEOUT,
MTML_ERROR_UNKNOWN = 999 }
  • MtmlBrandType
enum MtmlBrandType {
MTML_BRAND_MTT = 0,
MTML_BRAND_UNKNOWN,
MTML_BRAND_COUNT }
  • MtmlMemoryType
enum MtmlMemoryType {
MTML_MEM_TYPE_LPDDR4,
MTML_MEM_TYPE_GDDR6 }
  • MtmlCodecType
enum MtmlCodecType {
MTML_CODEC_TYPE_AVC = 0,
MTML_CODEC_TYPE_VC1 = 1,
MTML_CODEC_TYPE_MPEG2 = 2,
MTML_CODEC_TYPE_MPEG4 = 3,
MTML_CODEC_TYPE_H263 = 4,
MTML_CODEC_TYPE_DIV3 = 5,
MTML_CODEC_TYPE_RV = 6,
MTML_CODEC_TYPE_AVS = 7,
MTML_CODEC_TYPE_RSVD1 = 8,
MTML_CODEC_TYPE_THO = 9,
MTML_CODEC_TYPE_VP3 = 10,
MTML_CODEC_TYPE_VP8 = 11,
MTML_CODEC_TYPE_HEVC = 12,
MTML_CODEC_TYPE_VP9 = 13,
MTML_CODEC_TYPE_AVS2 = 14,
MTML_CODEC_TYPE_RSVD2 = 15,
MTML_CODEC_TYPE_AV1 = 16,
MTML_CODEC_TYPE_COUNT }
  • MtmlCodecSessionState
enum MtmlCodecSessionState {
MTML_CODEC_SESSION_STATE_UNKNOWN = -1,
MTML_CODEC_SESSION_STATE_IDLE = 0,
MTML_CODEC_SESSION_STATE_ACTIVE,
MTML_CODEC_SESSION_STATE_COUNT }
  • MtmlVirtCapability
enum MtmlVirtCapability {
MTML_DEVICE_NOT_SUPPORT_VIRTUALIZATION = 0,
MTML_DEVICE_SUPPORT_VIRTUALIZATION }
  • MtmlVirtRole
enum MtmlVirtRole {
MTML_VIRT_ROLE_NONE,
MTML_VIRT_ROLE_HOST_VIRTDEVICE,
MTML_VIRT_ROLE_COUNT }
  • MtmlDeviceTopologyLevel
enum MtmlDeviceTopologyLevel {
MTML_TOPOLOGY_INTERNAL = 0,
MTML_TOPOLOGY_SINGLE = 1,
MTML_TOPOLOGY_MULTIPLE = 2,
MTML_TOPOLOGY_HOSTBRIDGE = 3,
MTML_TOPOLOGY_NODE = 4,
MTML_TOPOLOGY_SYSTEM = 5 }
  • MtmlLogLevel
enum MtmlLogLevel {
MTML_LOG_LEVEL_OFF = 0,
MTML_LOG_LEVEL_FATAL,
MTML_LOG_LEVEL_ERROR,
MTML_LOG_LEVEL_WARNING,
MTML_LOG_LEVEL_INFO }
  • MtmlMpcMode
enum MtmlMpcMode {
MTML_DEVICE_MPC_DISABLE = 0,
MTML_DEVICE_MPC_ENABLE }
  • MtmlMpcCapability
enum MtmlMpcCapability {
MTML_DEVICE_NOT_SUPPORT_MPC = 0,
MTML_DEVICE_SUPPORT_MPC }
  • MtmlMpcType
enum MtmlMpcType {
MTML_MPC_TYPE_NONE,
MTML_MPC_TYPE_PARENT,
MTML_MPC_TYPE_INSTANCE }

详细说明

本组介绍常量定义。

宏定义文档

MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE
#define MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE 64

建议的缓冲区大小(以字节为单位),保证足以容纳 MTBIOS 版本字符串(包括空结束符)。

MTML_DEVICE_NAME_BUFFER_SIZE
#define MTML_DEVICE_NAME_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足以容纳设备名称字符串(包括空结束符)。

MTML_DEVICE_PATH_BUFFER_SIZE
#define MTML_DEVICE_PATH_BUFFER_SIZE 64

建议的缓冲区大小(以字节为单位),保证足以容纳设备路径字符串(包括空结束符)。

MTML_DEVICE_PCI_BUS_ID_FMT
#define MTML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"

PCI BUS ID 的格式字符串。

MTML_DEVICE_PCI_SBDF_BUFFER_SIZE
#define MTML_DEVICE_PCI_SBDF_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足以容纳设备的 PCI SBDF 字符串(包括空结束符)。

MTML_DEVICE_SERIAL_NUMBER_BUFFER_SIZE
#define MTML_DEVICE_SERIAL_NUMBER_BUFFER_SIZE 64

建议的缓冲区大小(以字节为单位),保证足以容纳设备序列号的名称字符串(包括空结束符)。

MTML_DEVICE_SLOT_NAME_BUFFER_SIZE
#define MTML_DEVICE_SLOT_NAME_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足以容纳设备插槽名称的名称字符串(包括空结束符)。

MTML_DEVICE_UUID_BUFFER_SIZE
#define MTML_DEVICE_UUID_BUFFER_SIZE 48

建议的缓冲区大小(以字节为单位),保证足以容纳设备的 UUID 字符串(包括空结束符)。

MTML_DEVICE_VBIOS_VERSION_BUFFER_SIZE
#define MTML_DEVICE_VBIOS_VERSION_BUFFER_SIZE MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE

已停用:已更名为 MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE

MTML_DRIVER_VERSION_BUFFER_SIZE
#define MTML_DRIVER_VERSION_BUFFER_SIZE 80

建议的缓冲区大小(以字节为单位),保证足以容纳驱动程序版本字符串(包括空结束符)。

MTML_LIBRARY_VERSION_BUFFER_SIZE
#define MTML_LIBRARY_VERSION_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足以容纳 MTML 库版本字符串(包括空结束符)。

MTML_LOG_FILE_PATH_BUFFER_SIZE
#define MTML_LOG_FILE_PATH_BUFFER_SIZE 200

以字节为单位的推荐缓冲区大小,保证足够容纳文件路径的名称字符串(包括空结束符)。

MTML_MEMORY_VENDOR_BUFFER_SIZE
#define MTML_MEMORY_VENDOR_BUFFER_SIZE 64

建议的缓冲区大小(以字节为单位),保证足以容纳显存供应商的名称字符串(包括空结束符)。

MTML_MPC_CONF_MAX_PROF_NUM
#define MTML_MPC_CONF_MAX_PROF_NUM 16

表示当前配置可容纳的最大配置文件数量。

MTML_MPC_CONF_NAME_BUFFER_SIZE
#define MTML_MPC_CONF_NAME_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足以容纳配置名称的名称字符串(包括空结束符)。

MTML_MPC_PROFILE_NAME_BUFFER_SIZE
#define MTML_MPC_PROFILE_NAME_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足以容纳配置文件名称的名称字符串(包括空结束符)。

MTML_VIRT_TYPE_API_BUFFER_SIZE
#define MTML_VIRT_TYPE_API_BUFFER_SIZE 16

建议的缓冲区大小(以字节为单位),保证足以容纳虚拟化类型的 API 字符串(包括空结束符)。

MTML_VIRT_TYPE_CLASS_BUFFER_SIZE
#define MTML_VIRT_TYPE_CLASS_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足够容纳虚拟化类型的类字符串(包括空结束符)。

MTML_VIRT_TYPE_ID_BUFFER_SIZE
#define MTML_VIRT_TYPE_ID_BUFFER_SIZE 16

建议的缓冲区大小(以字节为单位),保证足够容纳虚拟化类型的 ID 字符串(包括空结束符)。

MTML_VIRT_TYPE_NAME_BUFFER_SIZE
#define MTML_VIRT_TYPE_NAME_BUFFER_SIZE 32

建议的缓冲区大小(以字节为单位),保证足够容纳虚拟化类型的名称字符串(包括空结束符)。

枚举类型文档

MtmlBrandType
enum MtmlBrandType

设备的品牌。

枚举器

MTML_BRAND_MTTMTT 系列
MTML_BRAND_UNKNOWN未知品牌
MTML_BRAND_COUNT品牌数量
MtmlCodecSessionState
enum MtmlCodecSessionState

视频编解码器会话状态。

MtmlCodecType
enum MtmlCodecType

视频编解码器类型。

枚举器

MTML_CODEC_TYPE_RSVD1无效数据
MTML_CODEC_TYPE_RSVD2无效数据
MtmlDeviceTopologyLevel
enum MtmlDeviceTopologyLevel

枚举器

MTML_TOPOLOGY_INTERNAL内部创建的拓扑路径,例如单个 S2000 卡上的 2 台设备
MTML_TOPOLOGY_SINGLE拓扑路径最多包含一个 PCIe 交换机/桥接器
MTML_TOPOLOGY_MULTIPLE拓扑路径包含多个 PCIe 交换器/桥接器(但没有主机桥接器)
MTML_TOPOLOGY_HOSTBRIDGE拓扑路径包含 PCIe 交换机/桥接器以及单个主机桥接器
MTML_TOPOLOGY_NODE拓扑路径包含 PCIe 交换机/桥接器以及 NUMA 节点内的多个主机桥接器
MTML_TOPOLOGY_SYSTEM包含 PCIe 交换机/桥接器以及跨 NUMA 节点的多个主机桥接器的运行路径
MtmlLogLevel
enum MtmlLogLevel

所有支持的日志级别。

枚举器

MTML_LOG_LEVEL_OFF禁用所有级别的日志
MTML_LOG_LEVEL_FATAL非常严重的错误事件,可能会导致应用程序中止
MTML_LOG_LEVEL_ERROR错误信息,但应用程序将继续运行
MTML_LOG_LEVEL_WARNING代表应用程序错误的信息,但应用程序将继续运行
MTML_LOG_LEVEL_INFO主要用于表示当前的应用进展
MtmlMemoryType
enum MtmlMemoryType

显存类型。

MTML_MEM_TYPE_LPDDR4一种低功耗动态随机存取显存:LPDDR4
MTML_MEM_TYPE_GDDR6一种高带宽的图形显存:GDDR6
MtmlMpcCapability
enum MtmlMpcCapability

MPC 功能。

枚举器

MTML_DEVICE_NOT_SUPPORT_MPC设备不具备 MPC 功能
MTML_DEVICE_SUPPORT_MPC设备具有 MPC 功能
MtmlMpcMode
enum MtmlMpcMode

MPC 模式。

枚举器

MTML_DEVICE_MPC_DISABLE禁用 MPC 模式
MTML_DEVICE_MPC_ENABLE启用 MPC 模式
MtmlMpcType
enum MtmlMpcType

mpc 设备的类别。

枚举器

MTML_MPC_TYPE_NONE不支持或已禁用 MPC 功能的设备
MTML_MPC_TYPE_PARENT可创建 MPC 实例的设备
MTML_MPC_TYPE_INSTANCEMPC 实例设备
MtmlReturn
enum MtmlReturn

MTML API 调用的返回值。

枚举器

MTML_SUCCESS操作成功
MTML_ERROR_DRIVER_NOT_LOADED摩尔线程的驱动未加载
MTML_ERROR_DRIVER_FAILURE访问驱动失败
MTML_ERROR_INVALID_ARGUMENT提供的参数中有一个或多个无效
MTML_ERROR_NOT_SUPPORTED目标设备上不支持所请求的操作
MTML_ERROR_NO_PERMISSION当前用户没有操作权限
MTML_ERROR_INSUFFICIENT_SIZE所请求的数据超出用户分配的空间
MTML_ERROR_NOT_FOUND查询资源不成功
MTML_ERROR_INSUFFICIENT_MEMORY系统显存不足,无法完成操作
MTML_ERROR_DRIVER_TOO_OLD由于安装的驱动程序太旧,操作失败
MTML_ERROR_DRIVER_TOO_NEW由于安装的驱动程序太新,操作失败
MTML_ERROR_TIMEOUT用户设定的超时时间已过
MTML_ERROR_UNKNOWN发生内部不明错误
MtmlVirtCapability
enum MtmlVirtCapability

虚拟化功能。

枚举器

MTML_DEVICE_NOT_SUPPORT_VIRTUALIZATION设备不支持虚拟化
MTML_DEVICE_SUPPORT_VIRTUALIZATION设备支持虚拟化
MtmlVirtRole
enum MtmlVirtRole

虚拟设备的类型。

枚举器

MTML_VIRT_ROLE_NONE设备不是虚拟设备或其虚拟化类型未知
MTML_VIRT_ROLE_HOST_VIRTDEVICE设备是根据物理设备的虚拟化类型实例化的虚拟设备。该角色仅在主机操作系统中报告
MTML_VIRT_ROLE_COUNT虚拟化类型的数量

功能结构定义

  • struct MtmlPciInfo
  • struct MtmlPciSlotInfo
  • struct MtmlCodecUtil
  • struct MtmlCodecSessionMetrics
  • struct MtmlVirtType
  • struct MtmlDeviceProperty
  • struct MtmlLogConfiguration
  • struct MtmlMpcProfile
  • struct MtmlMpcConfiguration
  • struct MtmlMtLinkSpec
  • struct MtmlMtLinkLayout
  • struct MtmlDispIntfSpec
  • struct MtmlPageRetirementCount
  • struct MtmlPageRetirement
  • struct MtmlPageRetirementPending

枚举

  • MtmlDeviceP2PStatus
enum MtmlDeviceP2PStatus {
MTML_P2P_STATUS_OK = 0,
MTML_P2P_STATUS_CHIPSET_NOT_SUPPORTED,
MTML_P2P_STATUS_GPU_NOT_SUPPORTED,
MTML_P2P_STATUS_UNKNOWN }
  • MtmlDeviceP2PCaps
enum MtmlDeviceP2PCaps {
MTML_P2P_CAPS_READ = 0,
MTML_P2P_CAPS_WRITE }
  • MtmlMtLinkState
enum MtmlMtLinkState {
MTML_MTLINK_STATE_DOWN = 0,
MTML_MTLINK_STATE_UP,
MTML_MTLINK_STATE_DOWNGRADE }
  • MtmlMtLinkCap
enum MtmlMtLinkCap {
MTML_MTLINK_CAP_P2P_ACCESS = 0,
MTML_MTLINK_CAP_P2P_ATOMICS,
MTML_MTLINK_CAP_COUNT }
  • MtmlMtLinkCapStatus
enum {
MTML_MTLINK_CAP_STATUS_NOT_SUPPORTED = 0,
MTML_MTLINK_CAP_STATUS_OK }
  • MtmlMtLinkCapability
enum MtmlMtLinkCapability {
MTML_DEVICE_NOT_SUPPORT_MTLINK = 0,
MTML_DEVICE_SUPPORT_MTLINK }
  • MtmlDispIntfType
enum MtmlDispIntfType {
MTML_DISP_INTF_TYPE_DP
MTML_DISP_INTF_TYPE_EDP
MTML_DISP_INTF_TYPE_VGA
MTML_DISP_INTF_TYPE_HDMI
MTML_DISP_INTF_TYPE_LVDS
MTML_DISP_INTF_TYPE_MAX }
  • MtmlGpuEngine
enum MtmlGpuEngine {
MTML_GPU_ENGINE_GEOMETRY
MTML_GPU_ENGINE_2D
MTML_GPU_ENGINE_3D
MTML_GPU_ENGINE_COMPUTE
MTML_GPU_ENGINE_MAX }
  • MtmlEccMode
enum MtmlEccMode {
MTML_MEMORY_ECC_DISABLE = 0,
MTML_MEMORY_ECC_ENABLE }
  • MtmlPageRetirementCause
enum MtmlPageRetirementCause {
MTML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS = 0,
MTML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR = 1,
MTML_PAGE_RETIREMENT_CAUSE_MAX }
  • MtmlRetiredPagesPendingState
enum MtmlRetiredPagesPendingState {
MTML_RETIRED_PAGES_PENDING_STATE_FALSE = 0,
MTML_RETIRED_PAGES_PENDING_STATE_TRUE = 1 }
  • MtmlEccCounterType
enum MtmlEccCounterType {
MTML_VOLATILE_ECC = 0,
MTML_AGGREGATE_ECC = 1,
MTML_ECC_COUNTER_TYPE_COUNT }
  • MtmlMemoryErrorType
enum MtmlMemoryErrorType {
MTML_MEMORY_ERROR_TYPE_CORRECTED = 0,
MTML_MEMORY_ERROR_TYPE_UNCORRECTED = 1,
MTML_MEMORY_ERROR_TYPE_COUNT }
  • MtmlMemoryLocation
enum MtmlMemoryLocation {
MTML_MEMORY_LOCATION_DRAM = 0 }

详细说明

本组介绍功能结构。

枚举类型文档

MtmlEccMode
enum MtmlEccMode

ECC 模式.

枚举器

MTML_MEMORY_ECC_DISABLE关闭显存 ECC 模式
MTML_MEMORY_ECC_ENABLE开启显存 ECC 模式
MtmlGpuEngine
enum MtmlGpuEngine

GPU engine.

MtmlMtLinkCap
enum MtmlMtLinkCap

MtLink 连接的功能。

枚举器

MTML_MTLINK_CAP_P2P_ACCESS点对点设备访问
MTML_MTLINK_CAP_P2P_ATOMICS支持 P2P 原子
MtmlMtLinkCapability
enum MtmlMtLinkCapability

设备的 MtLink 功能。

枚举器

MTML_DEVICE_NOT_SUPPORT_MTLINK设备不支持 MtLink 功能
MTML_DEVICE_SUPPORT_MTLINK设备支持 MtLink 功能
MtmlMtLinkCapStatus
enum MtmlMtLinkCapStatus

MtLink 功能的状态。

枚举器

MTML_MTLINK_CAP_STATUS_NOT_SUPPORTEDMTLINK 功能的状态不支持
MTML_MTLINK_CAP_STATUS_OKMTLINK 功能的状态确定
MtmlMtLinkState
enum MtmlMtLinkState

MtLink 连接的可能状态。

枚举器

MTML_MTLINK_STATE_DOWNMtLink 处于非活动状态
MTML_MTLINK_STATE_UPMtLink 处于活动状态
MtmlPageRetirementCause
enum MtmlPageRetirementCause

页面停用的原因。

枚举器

MTML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS由于多个单比特 ECC 错误停用页面
MTML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR由于双位 ECC 错误停用页面
MtmlRetiredPagesPendingState
enum MtmlRetiredPagesPendingState

停用页面待处理状态。

不透明对象结构定义

类型定义

  • typedef struct MtmlGpu MtmlGpu
  • typedef struct MtmlMemory MtmlMemory
  • typedef struct MtmlVpu MtmlVpu
  • typedef struct MtmlDevice MtmlDevice
  • typedef struct MtmlSystem MtmlSystem
  • typedef struct MtmlLibrary MtmlLibrary

详细说明

本组介绍不透明对象结构。

类型定义文档

MtmlDevice
typedef struct MtmlDevice MtmlDevice

设备不透明对象结构。

MtmlGpu
typedef struct MtmlGpu MtmlGpu

GPU 不透明对象结构。

MtmlLibrary
typedef struct MtmlLibrary MtmlLibrary

库不透明对象结构。

MtmlMemory
typedef struct MtmlMemory MtmlMemory

显存不透明对象结构。

MtmlSystem
typedef struct MtmlSystem MtmlSystem

系统不透明对象结构。

MtmlVpu
typedef struct MtmlVpu MtmlVpu

Vpu 不透明对象结构。

函数库函数

函数

  • MtmlReturn MTML_API mtmlLibraryInit (MtmlLibrary ∗∗lib)
  • MtmlReturn MTML_API mtmlLibraryShutDown (MtmlLibrary ∗lib)
  • MtmlReturn MTML_API mtmlLibraryGetVersion (const MtmlLibrary ∗lib, char ∗version, unsigned int length)
  • MtmlReturn MTML_API mtmlLibraryInitSystem (const MtmlLibrary ∗lib, MtmlSystem ∗∗sys)
  • MtmlReturn MTML_API mtmlLibraryFreeSystem (MtmlSystem ∗sys)
  • MtmlReturn MTML_API mtmlLibraryCountDevice (const MtmlLibrary ∗lib, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlLibraryInitDeviceByIndex (const MtmlLibrary ∗lib, unsigned int index, MtmlDevice ∗∗dev)
  • MtmlReturn MTML_API mtmlLibraryInitDeviceByUuid (const MtmlLibrary ∗library, const char ∗uuid, MtmlDevice ∗∗dev)
  • MtmlReturn MTML_API mtmlLibraryInitDeviceByPciSbdf (const MtmlLibrary ∗lib, const char ∗pciSbdf, MtmlDevice ∗∗dev)
  • MtmlReturn MTML_API mtmlLibrarySetMpcConfigurationInBatch (const MtmlLibrary ∗lib, unsigned int count, MtmlDevice ∗∗devices, unsigned int ∗mpcConfigIds)
  • MtmlReturn MTML_API mtmlLibraryFreeDevice (MtmlDevice ∗dev)

详细说明

本组介绍库函数。

函数文档

mtmlLibraryCountDevice()
MtmlReturn MTML_API mtmlLibraryCountDevice (
const MtmlLibrary* lib,
unsigned int ∗count)

读取库不透明对象可访问的设备数量。

参数

lib[输入]指向库不透明对象的指针
count[输出]返回可访问设备数量的引用

返回值

  • MTML_SUCCESS:count 已设置。
  • MTML_ERROR_INVALID_ARGUMENT:count 或 lib 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryFreeDevice()
MtmlReturn MTML_API mtmlLibraryFreeDevice (
MtmlDevice∗ dev)

已停用:释放设备不透明对象管理的资源。

适用于所有产品。

参数

dev[输入]应释放的设备不透明对象的指针

返回值

  • MTML_SUCCESS:dev 已释放。
  • MTML_ERROR_INVALID_ARGUMENT:dev 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 是虚拟设备。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryFreeSystem()
MtmlReturn MTML_API mtmlLibraryFreeSystem (
MtmlSystem* sys)

已停用:释放 MtmlSystem 不透明对象管理的资源。

适用于所有产品。

参数

sys[输入]应释放的系统不透明对象的指针

返回值

  • MTML_SUCCESS:sys 已释放。
  • MTML_ERROR_INVALID_ARGUMENT:sys 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryGetVersion()
MtmlReturn MTML_API mtmlLibraryGetVersion (
const MtmlLibrary* lib,
char* version,
unsigned int length)

读取指定 MtmlLibrary 不透明对象的版本。

适用于所有产品。

版本标识符是一个字母和数字组成的字符串,保证为空。

参数

lib[输入]指向库不透明对象的指针
version[输出]返回版本标识符的引用
length[输入]version 指向的缓冲区长度。参见 MTML_LIBRARY_VERSION_BUFFER_SIZE

返回值

  • MTML_SUCCESS:version 已设置。
  • MTML_ERROR_INVALID_ARGUMENT:version 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小,无法容纳字符串 version。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryInit()
MtmlReturn MTML_API mtmlLibraryInit (
MtmlLibrary **lib)

初始化一个库不透明对象并准备资源。成功后,初始化对象可用于进一步访问其他函数。库不透明对象是用户代码访问 MTML 库提供的其他功能的顶级入口点。

适用于所有产品。

输出数据由 MTML 库内部分配。当不再需要该库时,请使用 mtmlLibraryShutDown() 释放其资源。如果通过多次调用此 API 初始化了多个 MtmlLibrary 指针,则在使用这些指针调用相应次数的 mtmlLibraryShut-Down() 之前,库不会关闭。使用 mtmlLibraryShutDown() API 释放 MtmlLibrary 指针的顺序不一定要与使用该 API 初始化这些指针的顺序一致。

参数

lib[输出]指向已分配和初始化的库不透明对象的双重指针

警告

使用已初始化的 lib 调用此函数会导致显存泄漏。

返回值

  • MTML_SUCCESS:库不透明对象已被正确初始化。
  • MTML_ERROR_INVALID_ARGUMENT:lib 为空。
  • MTML_ERROR_INSUFFICIENT_MEMORY: 系统显存不足。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryInitDeviceByIndex()
MtmlReturn MTML_API mtmlLibraryInitDeviceByIndex (
const MtmlLibrary* lib,
unsigned int index,
MtmlDevice **dev)

初始化一个设备不透明对象,以表示由其索引指定的设备。索引范围从(0)到(deviceCount - 1),其中 deviceCount 从 mtmlLibraryCountDevice() 中获取。

适用于所有产品。

初始化后的设备不透明对象可用于设备相关函数。

参数

lib[输入]指向库不透明对象的指针
index[输入]目标设备的索引
dev[输出]指向设备不透明对象的双指针,该对象将被分配和初始化

警告

为该函数提供一个已经初始化的 dev 会导致显存泄漏。

返回值

  • MTML_SUCCESS:dev 设置成功。
  • MTML_ERROR_INVALID_ARGUMENT:lib、index 或 dev 为空。
  • MTML_ERROR_NOT_FOUND:没有找到指定索引的设备。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。

See also

mtmlLibraryCountDevice
mtmlLibraryInitDeviceByPciSbdf()
MtmlReturn MTML_API mtmlLibraryInitDeviceByPciSbdf (
const MtmlLibrary* lib,
const char* pciSbdf,
MtmlDevice ** dev)

初始化一个设备不透明对象,用于表示由 PCI Sbdf 指定的设备。PCI Sbdf 格式如 00000000:3a:00.0,请参考 MtmlPciInfo::sbdf。

适用于所有产品。

参数

lib[输入]指向库不透明对象的指针
pciSbdf[输入]目标设备的 PCI 总线 ID
dev[输出]返回设备句柄的引用

返回值

  • MTML_SUCCESS:dev 设置成功。
  • MTML_ERROR_INVALID_ARGUMENT: pciSbdf、lib 或 dev 为空。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_NOT_FOUND:没有找到指定 pciSbdf 的设备。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryInitDeviceByUuid()
MtmlReturn MTML_API mtmlLibraryInitDeviceByUuid (
const MtmlLibrary* library,
const char* uuid,
MtmlDevice ** dev)

初始化一个设备不透明对象,用于表示一个由 UUID 指定的设备。有关设备 UUID 的更多信息,请参阅 mtmlDeviceGetUUID()。

适用于所有产品。

初始化后的设备不透明对象可用于设备相关函数。

参数

lib[输入]指向库不透明对象的指针
uuid[输入]目标设备的 UUID
dev[输出]指向设备不透明对象的双指针,该对象将被分配和初始化

警告

为该函数提供一个已经初始化的 dev 会导致显存泄漏。

返回值

  • MTML_SUCCESS:dev 设置成功。
  • MTML_ERROR_INVALID_ARGUMENT:lib、uuid 或 dev 为空。
  • MTML_ERROR_NOT_FOUND:没有找到指定 uuid 的设备。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibraryInitSystem()
MtmlReturn MTML_API mtmlLibraryInitSystem (
const MtmlLibrary* lib,
MtmlSystem ** sys)

初始化绑定到库不透明对象的 MtmlSystem 不透明指针。

适用于所有产品。

初始化后的 MtmlSystem 不透明对象可用于与系统相关的函数。

参数

lib[输入]指向库不透明对象的指针
sys[输出]指向应分配和初始化的系统不透明对象的双重指针

警告

为该函数提供一个已经初始化的 sys 会导致显存泄漏。

返回值

  • MTML_SUCCESS:sys 已初始化。
  • MTML_ERROR_INVALID_ARGUMENT:lib 或 sys 为空。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLibrarySetMpcConfigurationInBatch()
MtmlReturn MTML_API mtmlLibrarySetMpcConfigurationInBatch (
const MtmlLibrary* lib,
unsigned int count,
MtmlDevice ** devices,
unsigned int ∗mpcConfigIds)

一次性为多个设备设置 MPC 配置。如果 MPC 模式在任何支持的设备上被禁用,则该函数将在应用配置之前启用该模式。此函数可能需要较长的时间才能成功返回,在此期间,任何其他并发操作可能会遇到失败或未定义的行为。因此,建议在调用此函数前暂停任何其他 API 调用。如果对批次中的任何设备配置 MPC 模式失败,此函数将尝试将之前的设备回滚到 MPC 禁用状态。

重要提示: 调用此函数后,库分配的所有不透明指针(MtmlDevice、MtmlGpu 等,但不包括 MtmlLibrary 指针本身)都将失效。继续使用这些指针是未定义的行为。

适用于 春晓 或更新架构的设备。

仅支持 Linux。

参数

lib[输入]指向库不透明对象的指针
count[输入]设备数量
devices[输入]目标设备的标识符
mpcConfigIds[输入]设备的 MPC 配置 ID

返回值

  • MTML_SUCCESS:mpc 配置已设置。
  • MTML_ERROR_INVALID_ARGUMENT:lib、count、devices 或 mpcConfigIds 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持 MPC 或 MPC 配置 ID 不合法。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时发生错误。
  • MTML_ERROR_UNKNOWN for any unexpected error.
mtmlLibraryShutDown()
MtmlReturn MTML_API mtmlLibraryShutDown (
MtmlLibrary* lib)

关闭之前由 mtmlLibraryInit() 初始化的库不透明对象,并释放其资源。此函数返回后,libpointer 将无法继续使用。

适用于所有产品。

内部资源由所有库不透明对象全局共享。因此,为了彻底关闭库,应将以前调用 mtmlLibraryInit() API 时返回的所有库不透明对象分别传递给此 API。

参数

lib[输入]指向需要关闭的库不透明对象的指针

返回值

  • MTML_SUCCESS:MTML 已正常关闭。
  • MTML_ERROR_INVALID_ARGUMENT:lib 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。

系统函数

函数

  • MtmlReturn MTML_API mtmlSystemGetDriverVersion (const MtmlSystem∗sys, char∗version, unsigned int length)

详细说明

本组介绍系统函数。

函数文档

mtmlSystemGetDriverVersion()
MtmlReturn MTML_API mtmlSystemGetDriverVersion (
const MtmlSystem ∗sys,
char ∗version,
unsigned int length)

读取当前平台上安装的驱动程序版本。

适用于所有产品。

版本标识符是一个字母数字字符串。

参数

sys[输入]指向系统不透明对象的指针
version[输出]返回版本标识符的引用
length[输入]version 指向的缓冲区大小。参见 MTML_DRIVER_VERSION_BUFFER_SIZE

返回值

  • MTML_SUCCESS:version 已设置。
  • MTML_ERROR_INVALID_ARGUMENT:sys 或 version 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_UNKNOWN:出现未知错误。

Device 功能

函数

  • MtmlReturn MTML_API mtmlDeviceInitGpu (const MtmlDevice∗dev, MtmlGpu ∗∗gpu)
  • MtmlReturn MTML_API mtmlDeviceFreeGpu (MtmlGpu ∗gpu)
  • MtmlReturn MTML_API mtmlDeviceInitMemory (const MtmlDevice∗dev, MtmlMemory ∗∗mem)
  • MtmlReturn MTML_API mtmlDeviceFreeMemory (MtmlMemory ∗mem)
  • MtmlReturn MTML_API mtmlDeviceInitVpu (const MtmlDevice ∗dev, MtmlVpu ∗∗vpu)
  • MtmlReturn MTML_API mtmlDeviceFreeVpu (MtmlVpu ∗vpu)
  • MtmlReturn MTML_API mtmlDeviceGetIndex (const MtmlDevice ∗dev, unsigned int ∗index)
  • MtmlReturn MTML_API mtmlDeviceGetUUID (const MtmlDevice ∗dev, char ∗uuid, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetBrand (const MtmlDevice ∗dev, MtmlBrandType ∗type)
  • MtmlReturn MTML_API mtmlDeviceGetName (const MtmlDevice ∗dev, char ∗name, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetPciInfo (const MtmlDevice ∗dev, MtmlPciInfo ∗pci)
  • MtmlReturn MTML_API mtmlDeviceGetPowerUsage (const MtmlDevice ∗dev, unsigned int ∗power)
  • MtmlReturn MTML_API mtmlDeviceGetGpuPath (const MtmlDevice ∗dev, char ∗path, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetPrimaryPath (const MtmlDevice ∗dev, char∗path, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetRenderPath (const MtmlDevice∗dev, char ∗path, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetVbiosVersion (const MtmlDevice∗dev, char∗version, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetMtBiosVersion (const MtmlDevice ∗dev, char ∗version, unsigned int length)
  • MtmlReturn MTML_API mtmlDeviceGetProperty (const MtmlDevice ∗dev, MtmlDeviceProperty ∗prop)
  • MtmlReturn MTML_API mtmlDeviceCountFan (const MtmlDevice ∗dev, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetFanSpeed (const MtmlDevice ∗dev, unsigned int index, unsigned int ∗speed)
  • MtmlReturn MTML_API mtmlDeviceGetPcieSlotInfo (const MtmlDevice ∗dev, MtmlPciSlotInfo ∗slotInfo)
  • MtmlReturn MTML_API mtmlDeviceCountDisplayInterface (const MtmlDevice ∗device, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetDisplayInterfaceSpec (const MtmlDevice ∗device, unsigned int intfIndex, MtmlDispIntfSpec ∗dispIntfSpec)
  • MtmlReturn MTML_API mtmlDeviceGetSerialNumber (const MtmlDevice ∗device, unsigned int length, char ∗serialNumber)
  • MtmlReturn MTML_API mtmlDeviceCountGpuCores(const MtmlDevice* device, unsigned int* numCores)

详细说明

本组介绍设备功能。

函数文档

mtmlDeviceCountDisplayInterface()
MtmlReturn MTML_API mtmlDeviceCountDisplayInterface (
const MtmlDevice* device,
unsigned int ∗count)

读取指定设备的显示接口数量。

适用于所有产品。

参数

device[输入]设备不透明对象指针
count[输出]返回 count 的引用

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountFan()
MtmlReturn MTML_API mtmlDeviceCountFan (
const MtmlDevice ∗dev,
unsigned int ∗count)

Retrieves the number of fans on a device.

返回值是设备上风扇控制通道的数量。

适用于所有带专用风扇的独立产品。

参数

dev[输入]指向目标设备的指针
count[输出]返回风扇计数的引用

返回值

  • MTML_SUCCESS:count 已填充。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceFreeGpu()
MtmlReturn MTML_API mtmlDeviceFreeGpu (
MtmlGpu ∗gpu)

已停用:释放 GPU 不透明对象所管理的资源。

  • 适用于所有产品。

参数

gpu[输入]指向将要释放的 gpu 不透明对象的指针

返回值

  • MTML_SUCCESS:gpu 已被释放。
  • MTML_ERROR_INVALID_ARGUMENT:gpu 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceFreeMemory()
MtmlReturn MTML_API mtmlDeviceFreeMemory (
MtmlMemory* mem)

已停用:释放 memory 不透明对象所管理的资源。

适用于所有产品。

参数

mem[输入]指向将要释放的 mem 不透明对象的指针

返回值

  • MTML_SUCCESS:mem 已被释放。
  • MTML_ERROR_INVALID_ARGUMENT:mem 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceFreeVpu()
MtmlReturn MTML_API mtmlDeviceFreeVpu (
MtmlVpu ∗vpu)

已停用:释放 vpu 不透明对象所管理的资源。

适用于所有产品。

参数

vpu[输入]指向应释放的 VPU 不透明对象的指针

返回值

  • MTML_SUCCESS:vpu 已被释放。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetBrand()
MtmlReturn MTML_API mtmlDeviceGetBrand (
const MtmlDevice ∗dev,
MtmlBrandType ∗type)

检索设备品牌。

适用于所有产品。

参数

dev[输入]指向目标设备的指针
type[输出]返回产品品牌类型的引用。参见 MtmlBrandType

返回值

  • MTML_SUCCESS:type 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 type 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
mtmlDeviceGetDisplayInterfaceSpec()
MtmlReturn MTML_API mtmlDeviceGetDisplayInterfaceSpec (
const MtmlDevice ∗device,
unsigned int intfIndex,
MtmlDispIntfSpec ∗dispIntfSpec)

读取设备指定显示接口的规格数据。

适用于所有产品。

参数

device[输入]指向设备不透明对象的指针
intfIndex[输入]要查询的显示接口的索引
dispIntfSpec[输出]返回显示接口详情的引用

返回值

  • MTML_SUCCESS:dispIntfSpec 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 dispIntfSpec 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetFanRpm()
MtmlReturn MTML_API mtmlDeviceGetFanRpm (
const MtmlDevice ∗dev,
unsigned int fanIndex,
unsigned int fanRpm)

读取设备指定风扇的预期运行速度。如果风扇被物理阻塞而无法旋转,输出结果将与实际风扇速度不符。

适用于所有带专用风扇的独立产品。

风扇速度是指每分钟转数(rpm)的实时速度值。

参数

dev[输入]指向目标设备的指针
fanIndex[输入]目标风扇的索引,索引从0开始
fanRpms[输出]返回风扇实际转速的引用

返回值

  • MTML_SUCCESS:fanRpms 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 fanRpms 为空,或 fanIndex 无效。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetFanSpeed()
MtmlReturn MTML_API mtmlDeviceGetFanSpeed (
const MtmlDevice ∗dev,
unsigned int index,
unsigned int ∗speed)

读取设备指定风扇的预期运行速度。如果风扇被物理阻塞而无法旋转,输出结果将与实际风扇速度不符。

适用于所有带专用风扇的独立产品。

风扇转速以产品最大噪音容限风扇转速的百分比表示。在某些情况下,该值可能会超过 100%。

参数

dev[输入]指向目标设备的指针
index[输入]目标风扇的索引,索引从0开始
speed[输出]返回风扇转速百分比的引用

返回值

  • MTML_SUCCESS:speed 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 speed 为空,或 index 无效。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetGpuPath()
MtmlReturn MTML_API mtmlDeviceGetGpuPath (
const MtmlDevice ∗dev,
char ∗path,
unsigned int length)

读取设备的 GPU 路径。

适用于所有产品。

参数

dev[输入]目标设备的指针
path[输出]返回目标设备路径的引用
length[输入]路径指向的缓冲区大小。参见 MTML_DEVICE_PATH_BUFFER_SIZE

返回值

  • MTML_SUCCESS:path 已设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 path 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 是虚拟设备。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetIndex()
MtmlReturn MTML_API mtmlDeviceGetIndex (
const MtmlDevice ∗dev,
unsigned int ∗index)

读取与指定设备相关的索引。

适用于所有产品。

参数

dev[输入]设备不透明对象的指针
index[输出]目标设备的索引

返回值

  • MTML_SUCCESS:index 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 index 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 不支持索引访问。例如,主机虚拟设备。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtBiosVersion()
MtmlReturn MTML_API mtmlDeviceGetMtBiosVersion (
const MtmlDevice ∗dev,
char ∗version,
unsigned int length)

读取设备 MTBIOS 固件的版本。

适用于所有产品。

版本标识符是一个字母和数字组成的字符串。

参数

dev[输入]目标设备的指针
version[输出]返回版本标识符的引用
length[输入]version 指向的缓冲区大小。参见 MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE

返回值

  • MTML_SUCCESS:version 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 version 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_NOT_SUPPORTED:dev 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetName()
MtmlReturn MTML_API mtmlDeviceGetName (
const MtmlDevice ∗dev,
char ∗name,
unsigned int length)

读取设备名称。

参数

dev[输入]指向目标设备的指针
name[输出]返回产品名称的引用
length[输入]名称指向的缓冲区大小。参见 MTML_DEVICE_NAME_BUFFER_SIZE

返回值

  • MTML_SUCCES:name 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 name 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_NOT_SUPPORTED:dev 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetPcieSlotInfo()
MtmlReturn MTML_API mtmlDeviceGetPcieSlotInfo (
const MtmlDevice ∗dev,
MtmlPciSlotInfo ∗slotInfo)

读取指定设备所连接的 PCIe 接口的物理插槽信息。

参数

dev[输入]设备不透明对象指针
slotInfo[输出]返回插槽信息的引用

返回值

  • MTML_SUCCES:slotInfo 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 slotInfo 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetPciInfo()
MtmlReturn MTML_API mtmlDeviceGetPciInfo (
const MtmlDevice ∗dev,
MtmlPciInfo ∗pci)

读取设备的 PCI 属性。

适用于所有产品。

有关可用 PCI 信息的详细信息,请参见 MtmlPciInfo。

参数

dev[输入]目标设备的指针
pci[输出]返回 PCI 信息的引用

返回值

  • MTML_SUCCES:pci 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 pci 为空。
  • MTML_ERROR_NOT_SUPPORTED :dev 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetPowerUsage()
MtmlReturn MTML_API mtmlDeviceGetPowerUsage (
const MtmlDevice ∗dev,
unsigned int ∗power)

以毫瓦(mW)为单位读取设备及其相关电路的用电量。

参数

dev[输入]目标设备的指针
power[输出]返回用电量信息的引用值

返回值

  • MTML_SUCCES:power 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 power 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetPrimaryPath()
MtmlReturn MTML_API mtmlDeviceGetPrimaryPath (
const MtmlDevice ∗dev,
char ∗path,
unsigned int length)

读取设备的路径。

适用于所有产品。

参数

dev[输入]目标设备的指针
path[输出]目标设备路径的引用
length[输入]路径指向的缓冲区大小。参见 MTML_DEVICE_PATH_BUFFER_SIZE

返回值

  • MTML_SUCCES:path 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 path 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_NOT_SUPPORTED :dev 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetProperty()
MtmlReturn MTML_API mtmlDeviceGetProperty (
const MtmlDevice ∗dev,
MtmlDeviceProperty ∗prop)

读取设备属性。

适用于所有产品。

参数

dev[输入]目标设备的指针
prop[输出]返回目标设备属性的引用

返回值

  • MTML_SUCCES:prop 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 prop 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetRenderPath()
MtmlReturn MTML_API mtmlDeviceGetRenderPath (
const MtmlDevice ∗dev,
char ∗path,
unsigned int length)

读取设备的渲染路径。

适用于所有产品。

参数

dev[输入]目标设备的指针
path[输出]返回目标设备路径的引用
length[输入]路径指向的缓冲区大小。参见 MTML_DEVICE_PATH_BUFFER_SIZE

返回值

  • MTML_SUCCES:path 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 path 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_NOT_SUPPORTED :dev 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetSerialNumber()
MtmlReturn MTML_API mtmlDeviceGetSerialNumber (
const MtmlDevice ∗device,
unsigned int length,
char ∗serialNumber)

读取指定设备的序列号。

适用于所有产品。

参数

device[输入]设备不透明对象的指针
length[输入]序列号缓冲区的大小(字节)。参见 MTML_DEVICE_SERIAL_NUMBER_BUFFER_SIZE
serialNumber[输出]返回序列号的引用

返回值

  • MTML_SUCCES:serialNumber 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 serialNumber 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountGpuCores()
MtmlReturn MTML_API mtmlDeviceCountGpuCores (
const MtmlDevice ∗device,
unsigned int* numCores)

读取指定设备核心的数量。

适用于所有产品。

参数

device[输入]设备不透明对象的指针
numCores[输出]返回指定设备核心数量的引用

返回值

  • MTML_SUCCES:numCores 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 numCores 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetUUID()
MtmlReturn MTML_API mtmlDeviceGetUUID (
const MtmlDevice ∗dev,
char ∗uuid,
unsigned int length)

读取指定设备的 UUID。UUID 是一个十六进制字符串,格式为 xxxxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxxxx,其中每个 “x ”都是一个 ASCII 字符,代表一个十六进制数字。每个设备的 UUID 都是全局唯一的,因此可用于识别不同的物理设备。

适用于所有产品。

参数

dev[输入]目标设备的指针
uuid[输出]UUID 的引用
length[输入]uuid 指向的缓冲区大小。参见 MTML_DEVICE_UUID_BUFFER_SIZE

返回值

  • MTML_SUCCES:uuid 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 uuid 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetVbiosVersion()
MtmlReturn MTML_API mtmlDeviceGetVbiosVersion (
const MtmlDevice ∗dev,
char ∗version,
unsigned int length)

已停用:更名为 mtmlDeviceGetMtBiosVersion,因为名称更准确地描述了情况

读取设备 VBIOS 的版本

适用于所有产品。

版本标识符是一个字母和数字组成的字符串

参数

dev[输入]目标设备的指针
version[输出]返回版本标识符的引用
length[输入]version 指向的缓冲区大小。参见 MTML_DEVICE_VBIOS_VERSION_BUFFER_SIZE

返回值

  • MTML_SUCCES:version 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或者 version 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_NOT_SUPPORTED :dev 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceInitGpu()
MtmlReturn MTML_API mtmlDeviceInitGpu (
const MtmlDevice ∗dev,
MtmlGpu ∗∗gpu)

初始化一个 GPU 不透明对象,用于表示目标设备上的特定图形内核,该内核由其索引指定。

适用于所有产品。

初始化后的 GPU 不透明对象可用于 GPU 相关函数。

参数

dev[输入]设备不透明对象的指针
gpu[输出]指向 GPU 不透明对象的双重指针,该对象将被分配和初始化

警告

为已初始化的 GPU 提供此函数会导致显存泄漏。

返回值

  • MTML_SUCCES:gpu 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 gpu 为空。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceInitMemory()
MtmlReturn MTML_API mtmlDeviceInitMemory (
const MtmlDevice ∗dev,
MtmlMemory ∗∗mem)

初始化一个显存不透明对象,用于表示目标设备上的显存。

适用于所有产品。

初始化后的显存不透明对象可用于与显存相关的函数。

参数

dev[输入]设备不透明对象的指针
mem[输出]指向应分配和初始化的不透明显存对象的双重指针

警告

为已初始化的显存提供此函数会导致显存泄漏。

返回值

  • MTML_SUCCES:mem 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 mem 为空。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceInitVpu()
MtmlReturn MTML_API mtmlDeviceInitVpu (
const MtmlDevice ∗dev,
MtmlVpu ∗∗vpu)

初始化一个 VPU 不透明对象,用于表示目标设备上的视频编解码器。

适用于所有产品。

初始化后的 VPU 不透明对象可用于与编解码器相关的函数。

参数

dev[输入]设备不透明对象的指针
vpu[输出]指向应分配和初始化的不透明vpu对象的双重指针

警告

为已初始化的 VPU 提供此函数会导致显存泄漏。

返回值

  • MTML_SUCCES:vpu 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 vpu 为空
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_NOT_SUPPORTED:dev 是 MPC parent 设备。
  • MTML_ERROR_UNKNOWN:出现未知错误。

设备虚拟化功能

函数

  • MtmlReturn MTML_API mtmlDeviceCountSupportedVirtTypes (const MtmlDevice ∗dev, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetSupportedVirtTypes (const MtmlDevice ∗dev, MtmlVirtType ∗types, unsigned int count)
  • MtmlReturn MTML_API mtmlDeviceCountAvailVirtTypes (const MtmlDevice ∗dev, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetAvailVirtTypes (const MtmlDevice ∗dev, MtmlVirtType ∗types, unsigned int count)
  • MtmlReturn MTML_API mtmlDeviceCountAvailVirtDevices (const MtmlDevice ∗dev, const MtmlVirtType ∗type, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceCountActiveVirtDevices (const MtmlDevice ∗dev, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetActiveVirtDeviceUuids (const MtmlDevice ∗dev, char ∗uuids, unsigned int entryLength, unsigned int entryCount)
  • MtmlReturn MTML_API mtmlDeviceCountMaxVirtDevices (const MtmlDevice ∗dev, const MtmlVirtType ∗type, unsigned int ∗virtDevicesCount)
  • MtmlReturn MTML_API mtmlDeviceInitVirtDevice (const MtmlDevice ∗dev, const char∗uuid, MtmlDevice ∗∗virtDev)
  • MtmlReturn MTML_API mtmlDeviceFreeVirtDevice (MtmlDevice ∗virtDev)
  • MtmlReturn MTML_API mtmlDeviceGetVirtType (const MtmlDevice ∗virtDev, MtmlVirtType ∗type)
  • MtmlReturn MTML_API mtmlDeviceGetPhyDeviceUuid (const MtmlDevice ∗virtDev, char ∗uuid, unsigned int length)

详细说明

本组介绍设备虚拟化功能。

函数文档

mtmlDeviceCountActiveVirtDevices()
MtmlReturn MTML_API mtmlDeviceCountActiveVirtDevices (
const MtmlDevice ∗dev,
unsigned int ∗count)

获取在可虚拟化设备上创建的活动虚拟设备的数量。如果虚拟设备已按其虚拟化类型分配了资源,则该设备处于活动状态。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 以确定设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
count[输出]活跃虚拟设备数量的引用

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountAvailVirtDevices()
MtmlReturn MTML_API mtmlDeviceCountAvailVirtDevices (
const MtmlDevice ∗dev,
const MtmlVirtType ∗type,
unsigned int ∗count)

获取可虚拟化设备支持的指定虚拟化类型可创建的虚拟设备数量。可虚拟化设备支持的指定虚拟化类型创建的虚拟设备数量。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 来确定设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
type[输入]指定的虚拟化类型
count[输出]返回可用虚拟化类型数量的引用

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev、type 或 count 为空,type 无效或不支持
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountAvailVirtTypes()
MtmlReturn MTML_API mtmlDeviceCountAvailVirtTypes (
const MtmlDevice ∗dev,
unsigned int ∗count)

获取可虚拟化设备的虚拟化类型数量,并从中创建虚拟设备。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 确定设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
count[输出]返回可用虚拟化类型数量的引用

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountMaxVirtDevices()
MtmlReturn MTML_API mtmlDeviceCountMaxVirtDevices (
const MtmlDevice ∗dev,
const MtmlVirtType ∗type,
unsigned int ∗virtDevicesCount)

读取给定 vGPU 类型的设备上可创建的最大 vGPU 设备数量。

适用于所有产品。

参数

dev[输入]目标设备的指针
type[输入]vGPU 的句柄
virtDevicesCount[输出]指针,用于获取 vGPU 实例的最大数量,这些实例可在给定的 vgpuTypeId 上创建

返回值

  • MTML_SUCCESS: virtDevicesCount 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev、type 或 virtDevicesCount 为空,type 无效或当前 dev 上不支持。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountSupportedVirtTypes()
MtmlReturn MTML_API mtmlDeviceCountSupportedVirtTypes (
const MtmlDevice ∗dev,
unsigned int ∗count)

获取可虚拟化设备支持的所有虚拟化类型的数量。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 确定设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
count[输出]返回支持的虚拟化类型数量的引用

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceFreeVirtDevice()
MtmlReturn MTML_API mtmlDeviceFreeVirtDevice (
MtmlDevice∗ virtDev)

已停用:虚拟设备的不透明对象所管理的资源,并使其无法使用。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 确定设备是否可虚拟化。

适用于所有产品。

参数

virtDev[输入]设备不透明对象的指针,该对象将被释放

返回值

  • MTML_SUCCES:virtDev 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:virtDev 为空。
  • MTML_ERROR_NOT_SUPPORTED:virtDev 不是虚拟设备。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetActiveVirtDeviceUuids()
MtmlReturn MTML_API mtmlDeviceGetActiveVirtDeviceUuids (
const MtmlDevice ∗dev,
char ∗uuids,
unsigned int entryLength,
unsigned int entryCount)

获取可虚拟化设备上创建的所有活动虚拟设备的 UUID 列表。UUID 字符串在 uuids 参数中输出,该参数应为指向连续显存块的指针,其大小足以容纳所有内容。显存块被视为一系列首尾相邻的缓冲区(条目),而每个缓冲区的大小为 entryLength 字节。缓冲区的数量由 entryCount 定义,因此 uuids 指向的显存块的总大小应等于或大于 entryLength∗entryCount。显存块内的每个缓冲区负责保存一个带有空终止符的 UUID 字符串,因此调用者有责任确保有足够的缓冲区来保存所有 UUID 字符串,并且每个缓冲区的大小足以保存单个 UUID 字符串。如果 entryCount 大于活动虚拟设备的实际数量,则额外的条目将用空字符串填充。如果虚拟设备已根据其虚拟化类型分配资源,则该设备处于活动状态。该功能仅适用于支持虚拟化的设备。请参考 MtmlDeviceProperty.virtCap 来判断设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
uuids[输出]指向保存所有输出 UUID 字符串的显存块的指针
entryLength[输入]以 uuids 为单位的每个条目(缓冲区)的大小
entryCount[输入]uuids 中条目(缓冲区)的数量

返回值

  • MTML_SUCCES:uuids 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 uuids 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:entryLength 或 entryCount 太小。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetAvailVirtTypes()
MtmlReturn MTML_API mtmlDeviceGetAvailVirtTypes (
const MtmlDevice ∗dev,
MtmlVirtType ∗types,
unsigned int count)

获取可虚拟化设备的虚拟化类型列表,并从中创建虚拟设备。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap,以确定设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
types[输出]返回可用虚拟化类型的引用
count[输入]types 指向的数组大小

返回值

  • MTML_SUCCES:types 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 types 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetPhyDeviceUuid()
MtmlReturn MTML_API mtmlDeviceGetPhyDeviceUuid (
const MtmlDevice ∗virtDev,
char ∗uuid,
unsigned int length)

获取创建虚拟设备的物理设备。此函数仅适用于虚拟设备。虚拟设备可通过 mtmlDeviceInitVirtDevice() 初始化,其虚拟化角色总是 MTML_VIRT_ROLE_HOST_VIRTDEVICE。有关详细信息,请参阅 MtmlVirtRole。

适用于所有产品。

参数

virtDev[输入]目标虚拟设备的指针
uuid[输出]返回物理设备 UUID 的引用
length[输入]uuid 指向的缓冲区大小,以字节为单位

返回值

  • MTML_SUCCES:version 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:virtDev 或 uuid 为空。
  • MTML_ERROR_NOT_SUPPORTED:virtDev 不是虚拟设备。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetSupportedVirtTypes()
MtmlReturn MTML_API mtmlDeviceGetSupportedVirtTypes (
const MtmlDevice ∗dev,
MtmlVirtType ∗types,
unsigned int count)

获取可虚拟化设备支持的虚拟化类型列表。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 确定设备是否可虚拟化。

适用于所有产品。

参数

dev[输入]目标设备的指针
types[输出]返回支持的虚拟化类型的引用
count[输入]types 指向的数组大小

返回值

  • MTML_SUCCES:types 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev 或 types 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetVirtType()
MtmlReturn MTML_API mtmlDeviceGetVirtType (
const MtmlDevice ∗virtDev,
MtmlVirtType ∗type)

获取创建虚拟设备所依据的虚拟化类型。此函数仅适用于虚拟设备。虚拟设备可通过 mtmlDeviceInitVirtDevice() 初始化,其虚拟化角色总是 MTML_VIRT_ROLE_HOST_VIRTDEVICE。更多信息请参阅 MtmlVirtRole

适用于所有产品。

参数

virtDev[输入]目标虚拟设备的指针
type[输出]返回虚拟化类型的引用

返回值

  • MTML_SUCCES:type 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:virtDev 或 type 为空。
  • MTML_ERROR_NOT_SUPPORTED:virtDev 不是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceInitVirtDevice()
MtmlReturn MTML_API mtmlDeviceInitVirtDevice (
const MtmlDevice ∗dev,
const char ∗uuid,
MtmlDevice ∗∗virtDev)

初始化一个活动的虚拟设备,该虚拟设备可由可虚拟化设备的 UUID 指定。如果虚拟设备已按其虚拟化类型分配了资源,则该设备处于活动状态。此函数仅适用于支持虚拟化的设备,参见 MtmlDeviceProperty.virtCap 确定设备是否可虚拟化。

适用于所有产品。

警告

为已初始化的 virtDev 提供此函数会导致显存泄漏。

参数

dev[输入]目标设备的指针
uuid[输入]虚拟设备的 UUID 字符串
virtDev[输出]指向应分配和初始化的不透明设备对象的双重指针

返回值

  • MTML_SUCCES:virtDev 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev、uuid 或 virtDev 为空。
  • MTML_ERROR_NOT_SUPPORTED:dev 不能被虚拟化。
  • MTML_ERROR_INSUFFICIENT_MEMORY:系统显存不足。
  • MTML_ERROR_NOT_FOUND:没有找到与 uuid 对应的虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。

P2P 函数

函数

  • MtmlReturn MTML_API mtmlDeviceGetTopologyLevel (const MtmlDevice ∗dev1, const MtmlDevice ∗dev2, MtmlDeviceTopologyLevel ∗level)
  • MtmlReturn MTML_API mtmlDeviceCountDeviceByTopologyLevel (const MtmlDevice ∗dev, MtmlDeviceTopologyLevel level, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetDeviceByTopologyLevel (const MtmlDevice ∗dev, MtmlDeviceTopologyLevel level, unsigned int count, MtmlDevice ∗∗deviceArray)
  • MtmlReturn MTML_API mtmlDeviceGetP2PStatus (const MtmlDevice ∗dev1, const MtmlDevice ∗dev2, MtmlDeviceP2PCaps p2pCap, MtmlDeviceP2PStatus ∗p2pStatus)

详细说明

本组介绍 P2P 功能。

函数文档

mtmlDeviceCountDeviceByTopologyLevel()
MtmlReturn MTML_API mtmlDeviceCountDeviceByTopologyLevel (
const MtmlDevice ∗dev,
MtmlDeviceTopologyLevel level,
unsigned int ∗count)

检索在特定互连级别上离指定设备最近的的设备数量。

适用于所有产品。

仅支持 Linux 下使用。

参数

dev[输入]目标设备的指针
level[输入]用于搜索其他设备的级别,参见 MtmlDeviceTopologyLevel
count[输出]返回最近拓扑设备数量的引用值

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev、level 或 count 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_NOT_SUPPORTED:设备或操作系统不支持此功能。
  • MTML_ERROR_UNKNOWN:底层拓扑检测发生错误。
mtmlDeviceGetDeviceByTopologyLevel()
MtmlReturn MTML_API mtmlDeviceGetDeviceByTopologyLevel (
const MtmlDevice ∗dev,
MtmlDeviceTopologyLevel level,
unsigned int count,
MtmlDevice ∗∗deviceArray)

检索在特定互连级别上离给定设备最近的设备集。

适用于所有产品。

仅支持 Linux 下使用。

参数

dev[输入]目标设备的指针
level[输入]要搜索其他设备的 MtmlDeviceTopologyLevel 级别
count[输入]离拓扑结构最近的设备数量,请参阅 mtmlDeviceCountDeviceByTopologyLevel
deviceArray[输出]已找到的指定 level 的设备句柄数组

返回值

  • MTML_SUCCES:deviceArray 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev、level 或 count 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_NOT_SUPPORTED:设备或操作系统不支持此功能。
  • MTML_ERROR_UNKNOWN:底层拓扑检测发生错误。
mtmlDeviceGetP2PStatus()
MtmlReturn MTML_API mtmlDeviceGetP2PStatus (
const MtmlDevice ∗dev1,
const MtmlDevice ∗dev2,
MtmlDeviceP2PCaps p2pCap,
MtmlDeviceP2PStatus ∗p2pStatus)

读取特定设备对之间特定 p2p 功能的状态。

参数

dev1[输入]第一个设备
dev2[输入]第二个设备
p2pCap[输入]dev1 和 dev2 之间的 P2P 能力
p2pStatus[输出]返回 dev1 和 dev2 之间 p2pCap 状态的引用

返回值

  • MTML_SUCCES:p2pStatus 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev1、dev2 或 p2pStatus 为空,p2pCap 无效。
  • MTML_ERROR_NOT_SUPPORTED:dev1 或 dev2 是虚拟设备。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetTopologyLevel()
MtmlReturn MTML_API mtmlDeviceGetTopologyLevel (
const MtmlDevice ∗dev1,
const MtmlDevice ∗dev2,
MtmlDeviceTopologyLevel ∗level)

检索给定设备对之间的拓扑级别。

适用于所有产品。

仅支持 Linux 下使用。

参数

dev1[输入]第一个设备的标识符
dev2[输入]第二个设备的标识符
level[输出]指示级别的 mtmlDeviceTopologyLevel 类型值

返回值

  • MTML_SUCCES:level 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:dev1、dev2 或者 level 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备或操作系统不支持此功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:底层拓扑检测发生错误。

GPU 函数

函数

  • MtmlReturn MTML_API mtmlGpuGetUtilization (const MtmlGpu∗gpu, unsigned int∗utilization)
  • MtmlReturn MTML_API mtmlGpuGetTemperature (const MtmlGpu∗gpu, int∗temp)
  • MtmlReturn MTML_API mtmlGpuGetClock (const MtmlGpu∗gpu, unsigned int∗clockMhz)
  • MtmlReturn MTML_API mtmlGpuGetMaxClock (const MtmlGpu∗gpu, unsigned int∗clockMhz)
  • MtmlReturn MTML_API mtmlGpuGetEngineUtilization (const MtmlGpu∗gpu, MtmlGpuEngine engine, unsigned int ∗utilization)

详细说明

This group introduces GPU functions.

函数文档

mtmlGpuGetClock()
MtmlReturn MTML_API mtmlGpuGetClock (
const MtmlGpu ∗gpu,
unsigned int ∗clockMhz)

读取设备图形内核的当前时钟速度。

适用于所有产品。

参数

gpu[输入]GPU不透明对象的指针
clockMhz[输出]返回时钟速度(单位:MHz)的引用

返回值

  • MTML_SUCCES:clockMhz 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:gpu 或 clockMhz 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlGpuGetEngineUtilization()
MtmlReturn MTML_API mtmlGpuGetEngineUtilization (
const MtmlGpu ∗gpu,
MtmlGpuEngine engine,
unsigned int ∗utilization)

读取设备图形内核中当前引擎的利用率。

适用于所有产品。

仅支持 Linux 下使用。

参数

gpu[输入]GPU不透明对象的指针
engine[输入]GPU 引擎值的类型。参见 MtmlGpuEngine
utilization[输出]返回利用率信息的引用

返回值

  • MTML_SUCCES:utilization 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:gpu 或 utilization 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlGpuGetMaxClock()
MtmlReturn MTML_API mtmlGpuGetMaxClock (
const MtmlGpu ∗gpu,
unsigned int ∗clockMhz)

读取设备图形核心的最大支持时钟速度。

适用于所有产品。

参数

gpu[输入]GPU不透明对象的指针
clockMhz[输出]返回时钟速度(MHz)的参考值

返回值

  • MTML_SUCCES:clockMhz 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:gpu 或 clockMhz 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlGpuGetTemperature()
MtmlReturn MTML_API mtmlGpuGetTemperature (
const MtmlGpu ∗gpu,
int ∗temp)

读取设备图形内核的当前温度读数(单位:摄氏度)。

参数

gpu[输入]GPU不透明对象的指针
temp[输出]返回温度读数的参考值

返回值

  • MTML_SUCCES:temp 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:gpu 或 temp 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlGpuGetUtilization()
MtmlReturn MTML_API mtmlGpuGetUtilization (
const MtmlGpu ∗gpu,
unsigned int ∗utilization)

读取设备图形内核的当前利用率。

适用于所有产品。

参数

gpu[输入]GPU不透明对象的指针
utilization[输出]返回利用率信息的引用

返回值

  • MTML_SUCCES:utilization 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:gpu 或 utilization 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。

显存函数

函数

  • MtmlReturn MTML_API mtmlMemoryGetTotal (const MtmlMemory ∗mem, unsigned long long ∗total)
  • MtmlReturn MTML_API mtmlMemoryGetUsed (const MtmlMemory ∗mem, unsigned long long ∗used)
  • MtmlReturn MTML_API mtmlMemoryGetUtilization (const MtmlMemory ∗mem, unsigned int ∗utilization)
  • MtmlReturn MTML_API mtmlMemoryGetClock (const MtmlMemory ∗mem, unsigned int ∗clockMhz)
  • MtmlReturn MTML_API mtmlMemoryGetMaxClock (const MtmlMemory ∗mem, unsigned int ∗clockMhz)
  • MtmlReturn MTML_API mtmlMemoryGetBusWidth (const MtmlMemory ∗mem, unsigned int ∗busWidth)
  • MtmlReturn MTML_API mtmlMemoryGetBandwidth (const MtmlMemory ∗mem, unsigned int ∗bandwidth)
  • MtmlReturn MTML_API mtmlMemoryGetSpeed (const MtmlMemory ∗mem, unsigned int ∗speed)
  • MtmlReturn MTML_API mtmlMemoryGetVendor (const MtmlMemory ∗mem, unsigned int length, char ∗vendor)
  • MtmlReturn MTML_API mtmlMemoryGetType (const MtmlMemory ∗mem, MtmlMemoryType ∗type)

详细说明

本组介绍显存功能。

函数文档

mtmlMemoryGetBandwidth()
MtmlReturn MTML_API mtmlMemoryGetBandwidth (
const MtmlMemory ∗mem,
unsigned int ∗bandwidth)

读取指定设备的总显存带宽。带宽单位为 GBps。

参数

mem[输入]不透明显存对象指针
bandwidth[输出]返回带宽的引用值

返回值

  • MTML_SUCCES:bandwidth 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 bandwidth 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetBusWidth()
MtmlReturn MTML_API mtmlMemoryGetBusWidth (
const MtmlMemory ∗mem,
unsigned int ∗busWidth)

读取设备的显存总线宽度。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
busWidth[输出]设备的显存总线宽度

返回值

  • MTML_SUCCES:busWidth 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 busWidth 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetClock()
MtmlReturn MTML_API mtmlMemoryGetClock (
const MtmlMemory ∗mem,
unsigned int ∗clockMhz)

读取设备显存的当前时钟速度。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
clockMhz[输出]时钟速度(单位:MHz)的引用

返回值

  • MTML_SUCCES:clockMhz 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 clockMhz 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetMaxClock()
MtmlReturn MTML_API mtmlMemoryGetMaxClock (
const MtmlMemory ∗mem,
unsigned int ∗clockMhz)

读取设备显存支持的最大时钟速度。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
clockMhz[输出]时钟速度(单位:MHz)的引用

返回值

  • MTML_SUCCES:clockMhz 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 clockMhz 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetSpeed()
MtmlReturn MTML_API mtmlMemoryGetSpeed (
const MtmlMemory ∗mem,
unsigned int ∗speed)

读取指定设备的显存速度。显存速度的单位是 Mbps。

参数

mem[输入]不透明显存对象指针
speed[输出]速度(单位:Mbps)的引用

返回值

  • MTML_SUCCES:speed 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 speed 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetTotal()
MtmlReturn MTML_API mtmlMemoryGetTotal (
const MtmlMemory ∗mem,
unsigned long long ∗total)

读取设备上可用的显存总量(以字节为单位)。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
total[输出]总显存大小的引用

返回值

  • MTML_SUCCES:total 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 total 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetType()
MtmlReturn MTML_API mtmlMemoryGetType (
const MtmlMemory ∗mem,
MtmlMemoryType ∗type)

读取设备的显存类型。

参数

mem[输入]不透明显存对象指针
type[输出]类型的引用

返回值

  • MTML_SUCCES:type 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 type 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetUsed()
MtmlReturn MTML_API mtmlMemoryGetUsed (
const MtmlMemory ∗mem,
unsigned long long ∗used)

读取设备上已用显存的数量(单位:字节)。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
used[输出]已用显存大小的引用

返回值

  • MTML_SUCCES:used 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 used 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetUsedSystem()
MtmlReturn MTML_API mtmlMemoryGetUsedSystem (
const MtmlMemory∗ mem,
unsigned long long ∗ used)

读取设备上使用的系统共享内存数量(以字节为单位)。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
used[输出]系统共享内存使用大小的引用。

返回值

  • MTML_SUCCES:used 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 used 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetUtilization()
MtmlReturn MTML_API mtmlMemoryGetUtilization (
const MtmlMemory∗mem,
unsigned int ∗utilization)

读取设备当前的显存使用率。

适用于所有产品。

参数

mem[输入]不透明显存对象指针
utilization[输出]利用率信息的引用

返回值

  • MTML_SUCCES:utilization 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 utilization 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetVendor()
MtmlReturn MTML_API mtmlMemoryGetVendor (
const MtmlMemory ∗mem,
unsigned int length,
char ∗vendor)

读取设备的显存芯片供应商名称。

参数

mem[输入]不透明显存对象指针
vendor[输出]名称的引用

返回值

  • MTML_SUCCES:vendor 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 vendor 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 太小。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。

VPU 功能

函数

  • MtmlReturn MTML_API mtmlVpuGetUtilization (const MtmlVpu ∗vpu, MtmlCodecUtil ∗utilization)
  • MtmlReturn MTML_API mtmlVpuGetClock (const MtmlVpu ∗vpu, unsigned int ∗clockMhz)
  • MtmlReturn MTML_API mtmlVpuGetMaxClock (const MtmlVpu ∗vpu, unsigned int ∗clockMhz)
  • MtmlReturn MTML_API mtmlVpuGetCodecCapacity (const MtmlVpu ∗vpu, unsigned int ∗encodeCapacity, unsigned int ∗decodeCapacity)
  • MtmlReturn MTML_API mtmlVpuGetEncoderSessionStates (const MtmlVpu ∗vpu, MtmlCodecSessionState ∗states, unsigned int length)
  • MtmlReturn MTML_API mtmlVpuGetEncoderSessionMetrics (const MtmlVpu ∗vpu, unsigned int sessionId, MtmlCodecSessionMetrics ∗metrics)
  • MtmlReturn MTML_API mtmlVpuGetDecoderSessionStates (const MtmlVpu ∗vpu, MtmlCodecSessionState ∗states, unsigned int length)
  • MtmlReturn MTML_API mtmlVpuGetDecoderSessionMetrics (const MtmlVpu ∗vpu, unsigned int sessionId, MtmlCodecSessionMetrics ∗metrics)

详细说明

本组介绍 VPU 功能。

函数文档

mtmlVpuGetClock()
MtmlReturn MTML_API mtmlVpuGetClock (
const MtmlVpu ∗vpu,
unsigned int ∗clockMhz)

读取指定 VPU 的当前时钟速度。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
clockMhz[输出]返回时钟速度(单位:MHz)的参考值

返回值

  • MTML_SUCCES:clockMhz 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 clockMhz 为空。
  • MTML_ERROR_NOT_SUPPORTED:vpu 是虚拟 VPU。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetCodecCapacity()
MtmlReturn MTML_API mtmlVpuGetCodecCapacity (
const MtmlVpu ∗vpu,
unsigned int ∗encodeCapacity,
unsigned int ∗decodeCapacity)

读取指定 VPU 的容量,即支持的最大并发编解码器会话数。编解码器会话是对独立视频流的处理,可分为编码器会话和解码器会话。编码器会话指视频编码处理,而解码器会话代表解码处理。

编码器会话可以用 ID(会话 ID)表示,范围从 0 到encodeCapacity- 1。解码器会话可以用 ID(会话 ID)表示,范围从 0 到decodeCapacity- 1。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
encodeCapacity[输出]编码并发会话容量的引用
decodeCapacity[输出]解码并发会话容量的参考值

返回值

  • MTML_SUCCES:encodeCapacity 或 decodeCapacity 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu、encodeCapacity 或 decodeCapacity 为空。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetDecoderSessionMetrics()
MtmlReturn MTML_API mtmlVpuGetDecoderSessionMetrics (
const MtmlVpu ∗vpu,
unsigned int sessionId,
MtmlCodecSessionMetrics ∗metrics)

读取指定解码器会话的指标。如果会话未激活(没有系统进程连接到会话),则 outputmetricsstruct 的 pid 字段将设为 0。否则,会话将被视为激活状态,metrics 将被填充有效数据。

输出结构体中的 latency 字段始终为 0。

如果 vpu 是虚拟 VPU,输出结构中的 pid 字段在此版本中始终为 0。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
sessionId[输入]应查询其指标的会话 ID
metrics[输出]指定会话 ID 对应 metrics 结构的指针

返回值

  • MTML_SUCCES:metrics 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 metrics 为空,sessionId无效。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetDecoderSessionStates()
MtmlReturn MTML_API mtmlVpuGetDecoderSessionStates (
const MtmlVpu ∗vpu,
MtmlCodecSessionState ∗states,
unsigned int length)

读取指定 VPU 上每个解码器会话的状态。输出状态是一个 MtmlCodecSessionState数组,其中每个元素代表一个解码器会话的状态。如果状态数组的大小 N 小于解码器会话容量,则将返回前 N 个(即会话 ID 为 0 到 N-1)会话的状态。否则,如果 N 大于解码器会话容量,则会用 MTML_CODEC_SESSION_STATE_UNKNOWN 填充 states 的额外空间。VPU 的解码器会话容量可从 mtmlVpuGetCodecCapacity() 中获取,它可用作存储所有解码器会话状态的 states 的适当大小。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
states[输出]解码器会话状态的引用
length[输入]状态数组的大小

返回值

  • MTML_SUCCES:states 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 states 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 等于0。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetEncoderSessionMetrics()
MtmlReturn MTML_API mtmlVpuGetEncoderSessionMetrics (
const MtmlVpu ∗vpu,
unsigned int sessionId,
MtmlCodecSessionMetrics ∗metrics)

读取指定编码器会话的度量值。如果会话处于非活动状态(没有系统进程连接到会话),则将 metrics 的 pid 字段将设为 0。否则,会话将被视为活动状态,metrics 将填入有效数据。

在此版本中,输出结构体中的延迟字段始终为 0。

如果 vpu 参数是虚拟 VPU,则此版本输出结构中的 pid 字段始终为 0。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
sessionId[输入]应查询其 metric 的会话 ID
metrics[输出]指定会话 ID 对应 metrics 结构的指针

返回值

  • MTML_SUCCES:metrics 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 metrics 为空,sessionId 无效。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetEncoderSessionStates()
MtmlReturn MTML_API mtmlVpuGetEncoderSessionStates (
const MtmlVpu ∗vpu,
MtmlCodecSessionState ∗states,
unsigned int length)

读取指定 VPU 上每个编码器会话的状态。输出状态是一个 MtmlCodecSessionState数组,其中每个元素代表一个编码器会话的状态。编码器会话的状态填入数组索引等于会话 ID 的位置,即 states[x] 将是编码器会话 x 的状态。如果 states 数组的大小 N 小于编码器会话容量,则将返回前 N 个(即会话 ID 从 0 到 N-1)会话的状态。否则,如果 N 大于编码器会话容量,则会用 MTML_CODEC_SESSION_STATE_UNKNOWN 填充 states 数组的额外空间。VPU 的编码器会话容量可从 mtmlVpuGetCodecCapacity() 中获取,它可用作存储所有编码器会话状态的 states 数组的适当大小。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
states[输出]编码器会话状态的引用
length[输入]状态数组的大小

返回值

  • MTML_SUCCES:states 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 states 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:length 等于0。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetMaxClock()
MtmlReturn MTML_API mtmlVpuGetMaxClock (
const MtmlVpu ∗vpu,
unsigned int ∗clockMhz)

读取指定 VPU 的最大支持时钟速度。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
clockMhz[输出]返回时钟速度(单位:MHz)的参考值

返回值

  • MTML_SUCCES:clockMhz 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 clockMhz 为空。
  • MTML_ERROR_NOT_SUPPORTED:vpu 是虚拟 VPU。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlVpuGetUtilization()
MtmlReturn MTML_API mtmlVpuGetUtilization (
const MtmlVpu ∗vpu,
MtmlCodecUtil ∗utilization)

读取指定 VPU 的当前利用率。

适用于所有产品。

参数

vpu[输入]不透明 VPU 对象指针
utilization[输出]利用率信息的引用

返回值

  • MTML_SUCCES:utilization 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:vpu 或 utilization 为空。
  • MTML_ERROR_NOT_SUPPORTED:vpu 是虚拟 VPU。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。

日志功能

函数

  • MtmlReturn MTML_API mtmlLogSetConfiguration (const MtmlLogConfiguration∗configuration)
  • MtmlReturn MTML_API mtmlLogGetConfiguration (MtmlLogConfiguration∗configuration)

详细说明

本组介绍日志记录功能。

函数文档

mtmlLogGetConfiguration()
MtmlReturn MTML_API mtmlLogGetConfiguration (
MtmlLogConfiguration ∗configuration)

获取 MTML 日志记录器的配置。

参数

configuration[输出]MTML 日志记录器的配置

返回值

  • MTML_SUCCES:configuration 已被设置。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlLogSetConfiguration()
MtmlReturn MTML_API mtmlLogSetConfiguration (
const MtmlLogConfiguration ∗configuration)

配置 MTML 日志记录器。

参数

configuration[输入]MTML 日志记录器的配置

返回值

  • MTML_SUCCES:成功设置 MTML 的日志功能。
  • MTML_ERROR_INVALID_ARGUMENT:configuration 的 level 参数无效。
  • MTML_ERROR_NOT_SUPPORTED:日志文件不可用。
  • MTML_ERROR_UNKNOWN:出现未知错误。

Error Reporting

函数

  • const MTML_API char* mtmlErrorString (MtmlReturn result)

详细说明

本组介绍用于错误报告例程的辅助函数。

函数文档

mtmlErrorString()
const MTML_API char∗mtmlErrorString (
MtmlReturn result)

将 MTML 错误代码转换为可读字符串。

适用于所有产品。

参数

result[输出]要转换的 MTML 错误代码

返回值

表示错误的字符串。

MPC 功能

函数

  • MtmlReturn MTML_API mtmlDeviceSetMpcMode (const MtmlDevice ∗device, MtmlMpcMode mode)
  • MtmlReturn MTML_API mtmlDeviceGetMpcMode (const MtmlDevice ∗device, MtmlMpcMode ∗currentMode)
  • MtmlReturn MTML_API mtmlDeviceCountSupportedMpcProfiles (const MtmlDevice ∗parentDevice, un- signed int∗count)
  • MtmlReturn MTML_API mtmlDeviceGetSupportedMpcProfiles (const MtmlDevice ∗parentDevice, unsigned int count, MtmlMpcProfile ∗info)
  • MtmlReturn MTML_API mtmlDeviceCountSupportedMpcConfigurations (const MtmlDevice ∗parentDevice, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetSupportedMpcConfigurations (const MtmlDevice ∗parentDevice, unsigned int count, MtmlMpcConfiguration ∗info)
  • MtmlReturn MTML_API mtmlDeviceGetMpcConfiguration (const MtmlDevice ∗parentDevice, MtmlMpcConfiguration ∗config)
  • MtmlReturn MTML_API mtmlDeviceGetMpcConfigurationByName (const MtmlDevice ∗parentDevice, const char ∗configName, MtmlMpcConfiguration ∗config)
  • MtmlReturn MTML_API mtmlDeviceSetMpcConfiguration (const MtmlDevice ∗parentDevice, unsigned int id)
  • MtmlReturn MTML_API mtmlDeviceCountMpcInstancesByProfileId (const MtmlDevice ∗parentDevice, unsigned int profileId, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetMpcInstancesByProfileId (const MtmlDevice ∗parentDevice, un- signed int profileId, unsigned int count, MtmlDevice ∗∗mpcInstance)
  • MtmlReturn MTML_API mtmlDeviceCountMpcInstances (const MtmlDevice ∗parentDevice, unsigned int ∗count)
  • MtmlReturn MTML_API mtmlDeviceGetMpcInstances (const MtmlDevice ∗parentDevice, unsigned int count, MtmlDevice ∗∗mpcInstance)
  • MtmlReturn MTML_API mtmlDeviceGetMpcInstanceByIndex (const MtmlDevice ∗parentDevice, unsigned int index, MtmlDevice ∗∗mpcInstance)
  • MtmlReturn MTML_API mtmlDeviceGetMpcParentDevice (const MtmlDevice ∗mpcInstance, MtmlDevice ∗∗parentDevice)
  • MtmlReturn MTML_API mtmlDeviceGetMpcProfileInfo (const MtmlDevice ∗mpcInstance, MtmlMpcProfile ∗profileInfo)
  • MtmlReturn MTML_API mtmlDeviceGetMpcInstanceIndex (const MtmlDevice ∗mpcInstance, unsigned int ∗index)

详细说明

本章介绍与多主核 (MPC) 管理相关的 MTML 操作。

函数文档

mtmlDeviceCountMpcInstances()
MtmlReturn MTML_API mtmlDeviceCountMpcInstances (
const MtmlDevice ∗parentDevice,
unsigned int ∗count)

获取给定设备的已退出 MPC 实例计数。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
count[输出]已存在的 MPC 实例数

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未开启 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountMpcInstancesByProfileId()
MtmlReturn MTML_API mtmlDeviceCountMpcInstancesByProfileId (
const MtmlDevice ∗parentDevice,
unsigned int profileId,
unsigned int ∗count)

为给定的配置文件 ID 获取已存在的 MPC 实例数。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
profileId[输入]配置文件 ID,参见 mtmlDeviceGetSupportedMpcProfiles
count[输出]通过获取目标配置文件 ID 获取已存在的 MPC 实例数

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice、profileId 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未开启 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountSupportedMpcConfigurations()
MtmlReturn MTML_API mtmlDeviceCountSupportedMpcConfigurations (
const MtmlDevice ∗parentDevice,
unsigned int ∗count)

读取给定设备支持的MPC配置类型的数量。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
count[输出]返回 MPC 配置 ID 的引用

返回值

  • MTML_SUCCESS:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未开启 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountSupportedMpcProfiles()
MtmlReturn MTML_API mtmlDeviceCountSupportedMpcProfiles (
const MtmlDevice ∗parentDevice,
unsigned int ∗count)

获取给定设备的支持的MPC配置文件的数量。

适用于 春晓 或更新架构的设备。

仅支持 Linux。

参数

parentDevice[输入]MPC 父设备
count[输出]设备支持的配置文件的数量

返回值

  • MTML_SUCCESS:parentDevice 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备未启用 MPC 模式或不支持该配置文件。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcConfiguration()
MtmlReturn MTML_API mtmlDeviceGetMpcConfiguration (
const MtmlDevice ∗parentDevice,
MtmlMpcConfiguration ∗config)

读取目标设备的当前配置信息。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
config[输出]当前设备的 MPC 配置

返回值

  • MTML_SUCCES:config 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 config 为空。
  • MTML_ERROR_NOT_SUPPORTED:当前设备不支持或未开启 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcConfigurationByName()
MtmlReturn MTML_API mtmlDeviceGetMpcConfigurationByName (
const MtmlDevice ∗parentDevice,
const char ∗configName,
MtmlMpcConfiguration ∗config)

读取与目标设备配置名称相对应的配置信息。此接口只返回当前设备支持的配置,参见 mtmlDeviceGetSupportedMpcConfigurations。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
configName[输入]MPC配置的名称
config[输出]当前设备的 MPC 配置

返回值

  • MTML_SUCCES:config 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice、configName 或 config 为空。
  • MTML_ERROR_NOT_FOUND:在当前设备中找不到 configName
  • MTML_ERROR_NOT_SUPPORTED:当前设备不支持或未开启 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcInstanceByIndex()
MtmlReturn MTML_API mtmlDeviceGetMpcInstanceByIndex (
const MtmlDevice ∗parentDevice,
unsigned int index,
MtmlDevice ∗∗mpcInstance)

获取 MPC 父设备下给定索引的 MPC 实例。

如果 MPC 实例被销毁,无论是明确销毁还是因父设备销毁、重置或解除绑定而销毁,则必须重新请求 MPC 实例。在此过程中,句柄可以重复使用,其属性也可以改变。

适用于 春晓 或更新架构的设备。

仅支持 Linux。

参数

parentDevice[输入]MPC 父设备
index[输入]MPC 实例的索引
mpcInstance[输出]MPC 父设备下给定索引的 MPC 实例

返回值

  • MTML_SUCCES:mpcInstance 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice、index 或 mpcInstance 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未启用 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcInstanceIndex()
MtmlReturn MTML_API mtmlDeviceGetMpcInstanceIndex (
const MtmlDevice ∗mpcInstance,
unsigned int ∗index)

获取父设备下指定 MPC 实例的索引。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

mpcInstance[输入]MPC 实例
index[输出]MPC 实例的索引

返回值

  • MTML_SUCCES:index 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mpcInstance 或 index 为空。
  • MTML_ERROR_NOT_SUPPORTED:mpcInstance 指向的不是 MPC 实例。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcInstances()
MtmlReturn MTML_API mtmlDeviceGetMpcInstances (
const MtmlDevice ∗parentDevice,
unsigned int count,
MtmlDevice ∗∗mpcInstance)

获取给定设备已有的 MPC 实例。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
count[输入]mpcInstance 指向的缓冲区大小。请参见 mtmlDeviceCountMpcInstances
mpcInstance[输出]已存在的 MPC 设备

返回值

  • MTML_SUCCES:index 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice、count 或 mpcInstance 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未开启 MPC 模式。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcInstancesByProfileId()
MtmlReturn MTML_API mtmlDeviceGetMpcInstancesByProfileId (
const MtmlDevice ∗parentDevice,
unsigned int profileId,
unsigned int count,
MtmlDevice ∗∗mpcInstance)

获取给定配置文件 ID 已有的 MPC 实例。

适用于 春晓 或更新架构的设备。

仅支持 Linux。

参数

parentDevice[输入]MPC 父设备
profileId[输入]配置文件 ID。请参见 mtmlDeviceGetSupportedMpcProfiles
count[输入]mpcInstance 指向的缓冲区大小。请参见 mtmlDeviceCountMpcInstancesByProfileId
mpcInstance[输出]带有目标配置文件 ID 已存在的 MPC 实例

返回值

  • MTML_SUCCES:mpcInstance 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice、profileId 或 mpcInstance 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未启用 MPC 模式。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcMode()
MtmlReturn MTML_API mtmlDeviceGetMpcMode (
const MtmlDevice ∗device,
MtmlMpcMode ∗currentMode)

获取设备的 MPC 模式。

适用于 春晓 或更新架构的设备。

参数

device[输入]目标设备的指针
currentMode[输出]返回当前模式。参见 MtmlMpcMode

返回值

  • MTML_SUCCES:currentMode 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 currentMode 为空。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcParentDevice()
MtmlReturn MTML_API mtmlDeviceGetMpcParentDevice (
const MtmlDevice ∗mpcInstance,
MtmlDevice ∗∗parentDevice)

从 MPC 实例获取 MPC 父设备。在某些环境下,例如 libmtml 在未映射相应父设备的容器中运行时,此 API 可能会返回未知错误。但需要注意的是,实例设备本身仍能正常运行,不会出现任何问题。在这种情况下,调用者应用程序有责任决定如何解释和适当处理错误。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

mpcInstance[输入]MPC 实例的引用
parentDevice[输出]MPC 父设备引用

返回值

  • MTML_SUCCESS:parentDevice 设置成功。
  • MTML_ERROR_INVALID_ARGUMENT:mpcInstance 或 parentDevice 为空。
  • MTML_ERROR_NOT_SUPPORTED:mpcInstance 指向的不是 MPC 实例。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMpcProfileInfo()
MtmlReturn MTML_API mtmlDeviceGetMpcProfileInfo (
const MtmlDevice ∗mpcInstance,
MtmlMpcProfile ∗profileInfo)

获取 MPC 实例的配置文件信息。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

mpcInstance[输入]MPC 实例的引用
profileInfo[输出]MPC 实例配置文件 ID

返回值

  • MTML_SUCCES:profileInfo 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mpcInstance 或 profileInfo 为空。
  • MTML_ERROR_NOT_SUPPORTED:mpcInstance 指向的不是 MPC 实例。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetSupportedMpcConfigurations()
MtmlReturn MTML_API mtmlDeviceGetSupportedMpcConfigurations (
const MtmlDevice ∗parentDevice,
unsigned int count,
MtmlMpcConfiguration ∗info)

读取给定设备所支持的配置信息。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
count[输入]info 指向的缓冲区的大小,参见 mtmlDeviceCountSupportedMpcConfigurations
info[输出]支持的配置信息

返回值

  • MTML_SUCCES:index 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 info 为空。
  • MTML_ERROR_NOT_SUPPORTED:当前设备不支持或未开启 MPC 模式。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
6.14.2.15 mtmlDeviceGetSupportedMpcProfiles()
MtmlReturn MTML_API mtmlDeviceGetSupportedMpcProfiles (
const MtmlDevice ∗parentDevice,
unsigned int count,
MtmlMpcProfile ∗info)

获取给定设备支持的配置文件。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
count[输入]info 指向的缓冲区大小。参见 mtmlDeviceCountSupportedMpcProfiles
info[输出]支持的配置文件信息

返回值

  • MTML_SUCCES:info 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 info 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:count 太小。
  • MTML_ERROR_NOT_SUPPORTED:设备未启用 MPC 模式或不支持该配置文件。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceSetMpcConfiguration()
MtmlReturn MTML_API mtmlDeviceSetMpcConfiguration (
const MtmlDevice ∗parentDevice,
unsigned int id)

未设备设置有效的 MPC 配置。

重要提示: 调用此 API 后,MTML 库分配的所有不透明指针(MtmlDevice、MtmlGpu 等,但不包括 MtmlLibrary 指针本身)都将失效,因此继续使用这些指针是未定义的行为。用户应适当释放所有这些指针,并在此 API 返回后调用 mtmlLibraryShutdown API 关闭库。用户可以重新初始化程序库,然后根据需要获取不透明指针。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

parentDevice[输入]MPC 父设备
id[输入]MPC 配置 ID。请参见 mtmlDeviceGetSupportedMpcConfigurations

返回值

  • MTML_SUCCES:id 对应的 MPC 配置已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:parentDevice 或 id 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持或未启用 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceSetMpcMode()
MtmlReturn MTML_API mtmlDeviceSetMpcMode (
const MtmlDevice ∗device,
MtmlMpcMode mode)

设置设备的 MPC 模式。该模式决定能否创建 MPC 实例或配置设备。

重要提示: 调用此 API 后,MTML 库分配的所有不透明指针(如 MtmlDevice、MtmlGpu 等,不包括 Mtml 库指针本身)都将失效。因此,继续使用这些指针将导致未定义的行为。用户应释放所有这些指针,并在此 API 调用返回后调用 mtmlLibraryShutdown API 关闭库。之后,如果需要,用户可以重新初始化库,并根据需要获取新的不透明指针。

适用于 春晓 或更新架构的设备。

仅支持 Linux 下使用。

参数

device[输入]目标设备的指针
mode[输入]要设置的模式。参见 MtmlMpcMode

返回值

  • MTML_SUCCES:mode 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 mode 为空。
  • MTML_ERROR_NOT_SUPPORTED:该设备不支持 MPC 模式。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。

函数

  • MtmlReturn MTML_API mtmlDeviceGetMtLinkSpec (const MtmlDevice∗device, MtmlMtLinkSpec∗spec)
  • MtmlReturn MTML_API mtmlDeviceGetMtLinkState (const MtmlDevice ∗device, unsigned int linkId, MtmlMtLinkState ∗state)
  • MtmlReturn MTML_API mtmlDeviceGetMtLinkCapStatus (const MtmlDevice ∗device, unsigned int linkId, MtmlMtLinkCap capability, MtmlMtLinkCapStatus ∗status)
  • MtmlReturn MTML_API mtmlDeviceGetMtLinkRemoteDevice (const MtmlDevice ∗device, unsigned int linkId, MtmlDevice ∗∗remoteDevice)
  • MtmlReturn MTML_API mtmlDeviceCountMtLinkShortestPaths (const MtmlDevice ∗localDevice, const MtmlDevice∗remoteDevice, unsigned int ∗pathCount, unsigned int ∗pathLength)
  • MtmlReturn MTML_API mtmlDeviceGetMtLinkShortestPaths (const MtmlDevice ∗localDevice, const MtmlDevice ∗remoteDevice, unsigned int pathCount, unsigned int pathLength, MtmlDevice ∗∗paths)
  • MtmlReturn MTML_API mtmlDeviceCountMtLinkLayouts (const MtmlDevice∗localDevice, const MtmlDevice ∗remoteDevice, unsigned int ∗linkCount)
  • MtmlReturn MTML_API mtmlDeviceGetMtLinkLayouts (const MtmlDevice∗localDevice, const MtmlDevice ∗remoteDevice, unsigned int linkCount, MtmlMtLinkLayout ∗layouts)

详细说明

本组介绍设备 MtLink 功能。

函数文档

mtmlDeviceCountMtLinkLayouts()
MtmlReturn MTML_API mtmlDeviceCountMtLinkLayouts (
const MtmlDevice ∗localDevice,
const MtmlDevice ∗remoteDevice,
unsigned int ∗linkCount)

读取两个直接连接设备之间的链接数。

适用于 曲院 或更新架构的设备。

参数

localDevice[输入]本地设备的指针
remoteDevice[输入]远程设备的指针
linkCount[输出]链接数的引用

返回值

  • MTML_SUCCES:linkCount 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:localDevice、remoteDevice 或 linkCount 为空。
  • MTML_ERROR_NOT_SUPPORTED:本地设备或远程设备不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceCountMtLinkShortestPaths()
MtmlReturn MTML_API mtmlDeviceCountMtLinkShortestPaths (
const MtmlDevice ∗localDevice,
const MtmlDevice ∗remoteDevice,
unsigned int ∗pathCount,
unsigned int ∗pathLength)

读取两个设备之间的最短路径数和路径长度。路径长度定义为从本地设备到远程设备(包括本地设备和远程设备本身)所包含的节点数。例如,如果路径为:localDevice ->device1 ->device2 ->remoteDevice,则路径长度为 4。

适用于 曲院 或更新架构的设备。

参数

localDevice[输入]本地设备的指针
remoteDevice[输入]远程设备的指针
pathCount[输出]本地设备与远程设备之间的最短路径数
pathLength[输出]形成最短路径的设备数量

返回值

  • MTML_SUCCES:pathCount 和 pathLength 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:localDevice、remoteDevice、pathCount 或 pathLength 为空。
  • MTML_ERROR_NOT_SUPPORTED:localDevice 或 remoteDevice 不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtLinkCapStatus()
MtmlReturn MTML_API mtmlDeviceGetMtLinkCapStatus (
const MtmlDevice ∗device,
unsigned int linkId,
MtmlMtLinkCapcapability,
MtmlMtLinkCapStatus ∗status)

读取设备指定链接的所请求功能的状态。有关可查询的具体功能,请参阅 MtmlMtLinkCap 结构。

适用于 曲院 或更新架构的设备。

参数

device[输入]目标设备的指针
linkId[输入]指定要查询的链路 ID
capability[输入]指定要查询的功能,参见 MtmlMtlinkCap
status[输出]显示所查询功能可用性状态的结果,参见 MtmlMtlinkCapStatus

返回值

  • MTML_SUCCES:status 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 status 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtLinkLayouts()
MtmlReturn MTML_API mtmlDeviceGetMtLinkLayouts (
const MtmlDevice ∗localDevice,
const MtmlDevice ∗remoteDevice,
unsigned int linkCount,
MtmlMtLinkLayout ∗layouts)

读取两个直连设备之间的链接。

适用于 曲院 或更新架构的设备。

参数

localDevice[输入]本地设备的指针
remoteDevice[输入]远程设备的指针
linkCount[输入]链接的数量
layouts[输出]链接数据所在缓存区的指针

返回值

  • MTML_SUCCES:layouts 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:localDevice、remoteDevice 或 layouts 为空。
  • MTML_ERROR_NOT_SUPPORTED:本地设备或远程设备不支持该功能。
  • MTML_ERROR_INSUFFICIENT_SIZE:linkCount 太小。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtLinkRemoteDevice()
MtmlReturn MTML_API mtmlDeviceGetMtLinkRemoteDevice (
const MtmlDevice ∗device,
unsigned int linkId,
MtmlDevice ∗∗remoteDevice)

读取通过指定链接直接连接的远程设备的句柄。

适用于 曲院 或更新架构的设备。

参数

device[输入]目标设备的指针
linkId[输入]指定要查询的链路 ID
remoteDevice[输出]远程设备的句柄

返回值

  • MTML_SUCCES:remoteDevice 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 remoteDevice 为空,或 linkId 无效。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持该功能。
  • MTML_ERROR_NOT_FOUND:未找到指定 linkId 的 remoteDevice。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtLinkShortestPaths()
MtmlReturn MTML_API mtmlDeviceGetMtLinkShortestPaths (
const MtmlDevice ∗localDevice,
const MtmlDevice ∗remoteDevice,
unsigned int pathCount,
unsigned int pathLength,
MtmlDevice ∗∗paths)

读取两个设备之间的所有最短路径。注意:每条路径都是一个设备句柄的一维数组,第一个元素是 “本地设备 ”句柄,后面的元素是构成路径的设备句柄,直到最后一个元素,即 “远程设备 ”句柄。例如,路径可能如下 {localDevice, device1, device2, remoteDevice} 。为适应该 API 的输出,需要一个 MtmlDevice∗ 类型的二维数组。可视化表示 MtmlDevice∗ path [pathCount] [pathLength]。关于 pathCount 和 pathLength,请参阅 mtmlDeviceCountMtlinkShortestPaths

适用于 曲院 或更新架构的设备。

参数

localDevice[输入]本地设备的指针
remoteDevice[输入]远程设备的指针
pathCount[输入]本地设备和远程设备之间的最短路径数,参见 mtmlDeviceCountMtlinkShortestPaths
pathLength[输入]最短路径包含的设备数量,参见 mtmlDeviceCountMtlinkShortestPaths
paths[输出]路径的引用

返回值

  • MTML_SUCCES:paths 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:localDevice、remoteDevice 或 paths 为空。
  • MTML_ERROR_INSUFFICIENT_SIZE:pathCount 或 pathLength 太小。
  • MTML_ERROR_NOT_SUPPORTED:本地设备或远程设备不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtLinkSpec()
MtmlReturn MTML_API mtmlDeviceGetMtLinkSpec (
const MtmlDevice ∗device,
MtmlMtLinkSpec ∗spec)

读取指定设备的 MtLink 规范。

适用于 曲院 或更新架构的设备。

参数

device[输入]目标设备的指针
spec[输出]规范的引用

返回值

  • MTML_SUCCES:spec 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 spec 为空。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMtLinkState()
MtmlReturn MTML_API mtmlDeviceGetMtLinkState (
const MtmlDevice ∗device,
unsigned int linkId,
MtmlMtLinkState ∗state)

读取指定链接的状态。

适用于 曲院 或更新架构的设备。

参数

device[输入]目标设备的指针
linkId[输入]指定要查询的链路 ID
state[输出]返回链路状态,其中 MTML_MTLINK_STATE_DOWN 表示链路处于非活动状态,MTML_MTLINK_STATE_UP 表示链路处于活动状态

返回值

  • MTML_SUCCES:state 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 state 为空,或 linkId 无效。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_UNKNOWN:出现未知错误。

亲和性功能

函数

  • MtmlReturn MTML_API mtmlDeviceGetMemoryAffinityWithinNode (const MtmlDevice ∗device, unsigned int nodeSetSize, unsigned long ∗nodeSet)
  • MtmlReturn MTML_API mtmlDeviceGetCpuAffinityWithinNode (const MtmlDevice ∗device, unsigned int cpuSetSize, unsigned long ∗cpuSet)
  • MtmlReturn MTML_API mtmlDeviceReset (const MtmlDevice ∗device)
  • MtmlReturn MTML_API mtmlMemorySetEccMode (const MtmlMemory ∗mem, MtmlEccMode mode)
  • MtmlReturn MTML_API mtmlMemoryGetEccMode (const MtmlMemory ∗mem, MtmlEccMode ∗currentMode, MtmlEccMode ∗pendingMode)
  • MtmlReturn MTML_API mtmlMemoryGetRetiredPagesCount (const MtmlMemory ∗mem, MtmlPageRetirementCount ∗count)
  • MtmlReturn MTML_API mtmlMemoryGetRetiredPages (const MtmlMemory ∗mem, MtmlPageRetirementCause cause, unsigned int count, MtmlPageRetirement ∗pageRetirements)
  • MtmlReturn MTML_API mtmlMemoryGetRetiredPagesPendingStatus (const MtmlMemory ∗mem, MtmlRetiredPagesPendingState ∗isPending)
  • MtmlReturn MTML_API mtmlMemoryGetEccErrorCounter(const MtmlMemory* mem, MtmlMemoryErrorType errorType, MtmlEccCounterType counterType, MtmlMemoryLocation locationType, unsigned long long* eccCounts)
  • MtmlReturn MTML_API mtmlMemoryClearEccErrorCounts(const MtmlMemory* mem, MtmlEccCounterType counterType)

详细说明

本组介绍设备亲和性功能。

函数文档

mtmlDeviceGetCpuAffinityWithinNode()
MtmlReturn MTML_API mtmlDeviceGetCpuAffinityWithinNode (
const MtmlDevice ∗device,
unsigned int cpuSetSize,
unsigned long ∗cpuSet)

读取设备理想 CPU 亲和度的无符号 int 数组(大小与 cpuSetSize 一致)。例如,在 32 位机器中,如果处理器 0、1、33 和 34 是设备的理想 CPU,且 cpuSetSize == 2,则 result[0] =0x3,result[1] = 0x6。

适用于 苏堤 或更新架构的设备。

仅支持 Linux 下使用。

参数

device[输入]目标设备的标识符
cpuSetSize[输入]可安全访问的 cpuSet 数组的大小
cpuSet[输出]数组引用,用于返回 CPU 的位掩码,64 位机器上每个无符号 long 对应 64 个 CPU,32 位机器上每个无符号 long 对应 32 个 CPU

返回值

  • MTML_SUCCES:cpuSet 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 cpuSet 为空,或 cpuSetSize 等于 0。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持该功能。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceGetMemoryAffinityWithinNode()
MtmlReturn MTML_API mtmlDeviceGetMemoryAffinityWithinNode (
const MtmlDevice ∗device,
unsigned int nodeSetSize,
unsigned long ∗nodeSet )

读取一个无符号 int 数组(大小与 nodeSetSize 一致),其中包含设备理想显存亲和性的位掩码。例如,如果 NUMA 节点 0、1 是设备的理想显存,且 nodeSetSize == 1,则 result[0] = 0x3。

如果所请求的范围不适用于目标拓扑,API 将返回设备的直接非 I/O 祖先的显存亲和性。

适用于 苏堤 或更新架构的设备。

仅支持 Linux 下使用。

参数

device[输入]目标设备的标识符
nodeSetSize[输入]可安全访问的 nodeSet 数组的大小
nodeSet[输出]数组引用,用于返回 NUMA节点 的位掩码,64 位机器上每个无符号 long 有 64 个节点,32 位机器上每个无符号 long 有 32 个节点

返回值

  • MTML_SUCCES:nodeSet 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:device 或 nodeSet 为空,或 nodeSetSize 等于 0。
  • MTML_ERROR_NOT_SUPPORTED:设备不支持该功能。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlDeviceReset()
MtmlReturn MTML_API mtmlDeviceReset (
const MtmlDevice ∗device)

触发重置整个设备。

适用于所有设备。

仅支持 Linux 下使用。

参数

device[输入]目标设备的指针

返回值

  • MTML_SUCCES:设备已被充值。
  • MTML_ERROR_INVALID_ARGUMENT:device 为空。
  • MTML_ERROR_NOT_SUPPORTED:不支持该操作。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetEccMode()
MtmlReturn MTML_API mtmlMemoryGetEccMode (
const MtmlMemory ∗mem,
MtmlEccMode ∗currentMode,
MtmlEccMode ∗pendingMode)

读取显存的当前和待定 ECC 模式。

适用于 曲院 或更新架构的设备。

仅支持 Linux 下使用。

参数

mem[输入]目标设备显存的指针
currentMode[输出]返回当前 ECC 模式的引用。参见 MtmlEccMode
pendingMode[输出]返回待处理状态的引用。参见 MtmlEccMode

返回值

  • MTML_SUCCES:currentMode 和 pendingMode 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem、currentMode 或者 pendingMode 为空。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetRetiredPages()
MtmlReturn MTML_API mtmlMemoryGetRetiredPages (
const MtmlMemory ∗mem,
MtmlPageRetirementCause cause,
unsigned int count,
MtmlPageRetirement ∗pageRetirements)

按指定的原因,查找已停用和等待停用页面的列表。此 API 提供的地址信息是 retired pages的硬件地址。

适用于 曲院 或更新架构的设备。

仅支持 Linux 下使用。

参数

mem[输入]目标设备显存的指针
cause[输入]页面停用的原因
count[输入]pageRetirements 指向的缓冲区大小,参见 mtmlMemoryGetRetiredPagesCount
pageRetirements[输出]返回停用页面的信息

返回值

  • MTML_SUCCES:pageRetirements 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 pageRetirements 为空,或 cause、count 无效。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetRetiredPagesCount()
MtmlReturn MTML_API mtmlMemoryGetRetiredPagesCount (
const MtmlMemory ∗mem,
MtmlPageRetirementCount ∗count)

获取指定显存的停用页面。

适用于 曲院 或更新架构的设备。

仅支持 Linux 下使用。

参数

mem[输入]目标设备显存的指针
count[输出]返回显存停用页面的数量

返回值

  • MTML_SUCCES:count 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或 count 为空。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetRetiredPagesPendingStatus()
MtmlReturn MTML_API mtmlMemoryGetRetiredPagesPendingStatus (
const MtmlMemory ∗mem,
MtmlRetiredPagesPendingState ∗isPending)

确认是否有任何等待停用页面,需要重新启动才能完成该过程。

适用于 曲院 或更新架构的设备。

仅支持 Linux 下使用。

参数

mem[输入]目标设备显存的指针
isPending[输出]是否有页面处于待处理状态

返回值

  • MTML_SUCCES:isPending 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或者 isPending 为空。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryGetEccErrorCounter()
MtmlReturn MTML_API mtmlMemoryGetEccErrorCounter (
const MtmlMemory ∗mem,
MtmlMemoryErrorType errorType,
MtmlEccCounterType counterType,
MtmlMemoryLocation locationType,
unsigned long long* eccCounts)

为设备检索请求内存的ecc错误计数器。

适用于 PINGHU 或更新架构的设备。

需要ECC模式开启。

参数

mem[输入]目标设备显存的指针
errorType[输入]标识显存错误类型
counterType[输入]标识计数器类型
locationType[输入]标识计数器所属类型
eccCounts[输出]返回计数器数值

返回值

  • MTML_SUCCES:eccCounts 已被设置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 或者 eccCounts 为空或者errorType、counterType、locationType无效。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemoryClearEccErrorCounts()
MtmlReturn MTML_API mtmlMemoryClearEccErrorCounts (
const MtmlMemory ∗mem,
MtmlEccCounterType counterType)

清空ecc错误计数器。

适用于 PINGHU 或更新架构的设备。

需要ECC模式开启。

设置所有指定的ECC计数器为0,包括详细计数和总计数。

参数

mem[输入]目标设备显存的指针
counterType[输入]指示应该清除哪种类型错误的标志

返回值

  • MTML_SUCCES:counterType 对应计数器已被重置。
  • MTML_ERROR_INVALID_ARGUMENT:mem 为空或者 counterType 无效。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。
mtmlMemorySetEccMode()
MtmlReturn MTML_API mtmlMemorySetEccMode (
const MtmlMemory ∗mem,
MtmlEccMode mode)

设置显存的 ECC 模式。

适用于 曲院 或更新架构的设备。

仅支持 Linux 下使用。

该操作在重启后生效。

参数

mem[输入]目标设备显存的指针
mode[输入]要设置的模式

返回值

  • MTML_SUCCES:指定 mode 设置成功。
  • MTML_ERROR_INVALID_ARGUMENT:mem 为空。
  • MTML_ERROR_NOT_SUPPORTED:显存不支持该功能。
  • MTML_ERROR_DRIVER_FAILURE:访问驱动程序时出现任何错误。
  • MTML_ERROR_DRIVER_TOO_OLD:驱动太旧。
  • MTML_ERROR_DRIVER_TOO_NEW:驱动太新。
  • MTML_ERROR_UNKNOWN:出现未知错误。

类文件

MtmlCodecSessionMetrics 结构参考

公共属性

  • unsigned int id 编解码会话的唯一标识符。
  • unsigned int pid 进程 ID。0 代表空闲会话,否则视为活动会话。
  • unsigned int hResolution 水平分辨率(单位:像素),这是指 coded size,可能与 FFmpeg 等视频应用程序中显示的 storage size 不同。
  • unsigned int vResolution 垂直分辨率(单位:像素),这是指 coded size,可能与 FFmpeg 等视频应用程序中显示的 storage size 不同。
  • unsigned int frameRate 每秒帧数。
  • unsigned int bitRate 每秒比特数。
  • unsigned int latency 以微秒为单位的编解码延迟。
  • MtmlCodecType codecType 编解码器类型。例如,H.265 和 AV1。
  • int rsvd[4] 预留给未来扩展使用。

详细说明

编解码器会话指标。

成员数据文档

该结构的文档由以下文件生成:mtml.h

MtmlCodecUtil 结构参考

公共属性

  • unsigned int util 编解码器在采样期间的整体利用率。
  • unsigned int period 采样时间段,以微秒为单位。
  • unsigned int encUtil 编码器在采样期间的利用率。
  • unsigned int decUtil 解码器在采样期间的利用率。
  • int rsvd[2] 预留用于未来扩展。

详细说明

设备上的编解码器使用百分比。

该结构的文档由以下文件生成:mtml.h

MtmlDeviceProperty 结构参考

公共属性

  • unsigned int virtCap: 1 该字段表示设备的虚拟化能力(设备是否支持虚拟化): 0 表示不可虚拟化,1 表示可虚拟化,参见 MtmlVirtCapability。
  • unsigned int virtRole: 3 此字段表示此设备在支持虚拟化的环境中所扮演的角色,参见 MtmlVirtRole。
  • unsigned int mpcCap: 1 此字段表示此设备的 MPC 类型。0 表示非 MPC 类型,1 表示 MPC 父类型,2 表示 MPC 实例类型,参见 MtmlMpcType。
  • unsigned int mpcType: 3 该字段表示该设备是否具有 MPC 功能。0 表示不具备 MPC 功能,1 表示具备 MPC 功能,参见 MtmlMpcCapability。
  • unsigned int mtLinkCap: 1 该字段表示设备是否具有 MtLink 功能。0 表示不支持 MtLink 功能,1 表示支持 MtLink 功能,参见 MtmlMtLinkCapability。
  • unsigned int rsvd : 23 预留用于未来扩展。
  • unsigned int rsvd2 : 32 预留用于未来扩展。

详细说明

设备的属性。

不支持虚拟化的物理设备(如 S10)仍可以直通方式使用。对于此类设备,其 virtCap 字段为 0 - 不可虚拟化

该结构的文档由以下文件生成:mtml.h

MtmlDispIntfSpec 结构参考

公共属性

  • MtmlDispIntfType type 显示接口类型。
  • unsigned int maxHoriRes 支持的最大水平分辨率。
  • unsigned int maxVertRes 支持的最大垂直分辨率。
  • float maxRefreshRate 最大刷新率
  • unsigned int rsvd[8] 预留用于未来扩展。

详细说明

该结构的文档由以下文件生成:mtml.h

MtmlLogConfiguration 结构参考

公共属性

  • struct consoleConfig 日志输出到标准输出(stdout)。
    • MtmlLogLevel level 配置日志记录器的级别。
    • int rsvd[2] 预留用于未来扩展。
  • struct systemConfig 日志输出到 syslog,仅支持 Linux。
    • MtmlLogLevel level 配置日志记录器的级别。
    • int rsvd[2] 预留用于未来扩展。
  • struct fileConfig 日志输出到用户指定的文件。
    • MtmlLogLevel level 配置日志记录器的级别。
    • char file [MTML_LOG_FILE_PATH_BUFFER_SIZE] 设置日志输出文件。如果此字段设置为有效路径,MTML 将保持文件打开状态。如果需要关闭之前打开的文件,则将其设置为空字符串。
    • unsigned int size 设置文件中的最大日志大小,超过此大小时将清理日志。
    • int rsvd[2] 预留用于未来扩展。
  • struct callbackConfig 日志输出到用户指定的回调函数。
    • MtmlLogLevel level 配置日志记录器的级别。
    • void (*callback)(const char*, unsigned int) 回调函数将接收所有日志。
    • int rsvd[2] 预留用于未来扩展。
  • int rsvd[8] 预留用于未来扩展。

详细说明

Configuration for the MTML logger.

该结构的文档由以下文件生成:mtml.h

MtmlMpcConfiguration 结构参考

公共属性

  • unsigned int id 设备内的配置 ID。
  • char name [MTML_MPC_CONF_NAME_BUFFER_SIZE] 配置名称。
  • int profileId [MTML_MPC_CONF_MAX_PROF_NUM] 配置文件 ID 包含在配置 ID 中。使用 -1 进行区分。例如,4111-4-1-1-1.表示当前配置包括一个配置文件 ID 4 和三个配置文件 ID 1。
  • unsigned int rsvd[24] 预留用于未来扩展。

详细说明

MPC 设备的配置信息。

该结构的文档由以下文件生成:mtml.h

MtmlMpcProfile 结构参考

公共属性

  • unsigned int id 设备内的配置 ID。
  • unsigned int coreCount MPC 核心数量。
  • unsigned long long memorySizeMB 显存大小,以 MBytes 为单位。
  • char name [MTML_MPC_PROFILE_NAME_BUFFER_SIZE] 配置名称。
  • unsigned int rsvd[10] 预留用于未来扩展。

详细说明

MPC 实例配置文件信息。

该结构的文档由以下文件生成:mtml.h

MtmlMtLinkLayout 结构参考

公共属性

  • unsigned int localLinkId
  • unsigned int remoteLinkId
  • unsigned int rsvd[4]

详细说明

有关 MtLink 连接布局的信息。

该结构的文档由以下文件生成:mtml.h

MtmlMtLinkSpec 结构参考

公共属性

  • unsigned int version MtLink 的版本,包括主版本 major、次版本 minor 和补丁 patch 。版本计算:version = 10000∗major + 100∗minor + patch。
  • unsigned int bandWidth 每条链接的带宽,以 GB/s 为单位。
  • unsigned int linkNum 支持的最大链接数量。
  • unsigned int rsvd[4] 预留用于未来扩展。

详细说明

MtLink 连接的规格。

该结构的文档由以下文件生成:mtml.h

MtmlPageRetirement 结构参考

公共属性

  • unsigned long long timestamps 停用页面的开始时间。
  • unsigned long long address 停用页面的物理地址。
  • unsigned int rsvd[10] 预留用于未来扩展。

详细说明

该结构的文档由以下文件生成:mtml.h

MtmlPageRetirementCount 结构参考

公共属性

  • unsigned int sbeCount 单比特 ECC 错误计数。
  • unsigned int dbeCount 双比特 ECC 错误计数。

详细说明

ECC 模式。

该结构的文档由以下文件生成:mtml.h

MtmlPageRetirementPending 结构参考

公共属性

  • MtmlPageRetirementCause cause 停用页面的原因。
  • unsigned long long timestamps 停用页面的开始时间。
  • unsigned long long address 停用页面的物理地址。
  • unsigned int rsvd[10] 预留用于未来扩展。

详细说明

该结构的文档由以下文件生成:mtml.h

MtmlPciInfo 结构参考

公共属性

  • char sbdf [MTML_DEVICE_PCI_SBDF_BUFFER_SIZE] 元组 segment:bus:device.function 的 PCI 标识符(包括 NULL 终止符)。
  • unsigned int segment 设备所在总线的 PCI 段组(域),范围从 0 到 0xffffffff。
  • unsigned int bus 设备所在的总线,范围从 0 到 0xff。
  • unsigned int device 总线上的设备 ID,范围从 0 到 31。
  • unsigned int pciDeviceId 组合的 16 位设备 ID 和 16 位供应商 ID。
  • unsigned int pciSubsystemId 32 位子系统设备 ID。
  • unsigned int busWidth 已停用:该值设为零。
  • float pciMaxSpeed 设备的最大链路速度(每条通道的传输速率),单位是 GT/s。
  • float pciCurSpeed 设备的当前链路速度(每条通道的传输速率),单位是 GT/s。
  • unsigned int pciMaxWidth 设备的最大链路宽度。
  • unsigned int pciCurWidth 设备的当前链路宽度。
  • unsigned int pciMaxGen 设备支持的最大代数。
  • unsigned int pciCurGen 设备的当前代数。
  • int rsvd[6] 预留用于未来扩展。

详细说明

有关设备的 PCI 信息。

该结构的文档由以下文件生成:mtml.h

MtmlPciSlotInfo 结构参考

公共属性

  • unsigned int slotId PCI 插槽的唯一 ID。
  • char slotName [MTML_DEVICE_SLOT_NAME_BUFFER_SIZE] PCI 插槽的名称。
  • unsigned int rsvd[4] 预留用于未来扩展。

详细说明

设备的 PCI 插槽信息。

该结构的文档由以下文件生成:mtml.h

MtmlVirtType 结构参考

公共属性

  • char id [MTML_VIRT_TYPE_ID_BUFFER_SIZE] 虚拟化类型的 ID,例如 mtgpu-2008。
  • char name [MTML_VIRT_TYPE_NAME_BUFFER_SIZE] 虚拟化类型的名称,例如 mtgpu-8g。
  • char api [MTML_VIRT_TYPE_API_BUFFER_SIZE] 虚拟化类型的 API 类型,例如 vfio-pci。
  • unsigned int horizontalResolution X 维度的最大像素数。
  • unsigned int verticalResolution Y 维度的最大像素数。
  • unsigned int frameBuffer 帧缓冲区大小,以兆字节为单位。
  • unsigned int maxEncodeNum 最大编码数量。
  • unsigned int maxDecodeNum 最大解码数量。
  • unsigned int maxInstances 每个物理 GPU 的最大 vGPU 实例数。
  • unsigned int maxVirtualDisplay 显示头的数量。
  • int rsvd[11] 预留用于未来扩展。

详细说明

描述虚拟化设备规格的虚拟化类型。

该结构的文档由以下文件生成:mtml.h

文件文档

mtml.h

00001
00031 #ifndef MTML_H_
00032 #define MTML_H_
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00038 #if defined(_MSC_VER)
00039 #ifdef MTML_EXPORT
00040 #define MTML_API __declspec(dllexport)
00041 #else
00042 #define MTML_API __declspec(dllimport)
00043 #endif
00044 #else
00045 #define MTML_API __attribute__ ((visibility ("default")))
00046 #endif
00047
00048 #if defined (__GNUC__)
00049 #define MTML_DEPRECATED(msg) __attribute__ ((deprecated(msg)))
00050 #elif defined(_MSC_VER)
00051 #define MTML_DEPRECATED(msg) __declspec(deprecated(msg))
00052 #else
00053 #define MTML_DEPRECATED(msg)
00054 #endif
00055
00194 /***************************************************************************************************/
00199 /***************************************************************************************************/
00200
00204 #define MTML_LIBRARY_VERSION_BUFFER_SIZE 32
00205
00209 #define MTML_DRIVER_VERSION_BUFFER_SIZE 80
00210
00214 #define MTML_DEVICE_NAME_BUFFER_SIZE 32
00215
00219 #define MTML_DEVICE_UUID_BUFFER_SIZE 48
00220
00224 #define MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE 64
00225
00229 #define MTML_DEVICE_VBIOS_VERSION_BUFFER_SIZE MTML_DEVICE_MTBIOS_VERSION_BUFFER_SIZE
00230
00234 #define MTML_DEVICE_PATH_BUFFER_SIZE 64
00235
00239 #define MTML_DEVICE_PCI_SBDF_BUFFER_SIZE 32
00240
00244 #define MTML_VIRT_TYPE_ID_BUFFER_SIZE 16
00245
00249 #define MTML_VIRT_TYPE_CLASS_BUFFER_SIZE 32
00250
00254 #define MTML_VIRT_TYPE_NAME_BUFFER_SIZE 32
00255
00259 #define MTML_VIRT_TYPE_API_BUFFER_SIZE 16
00260
00264 #define MTML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"
00265
00269 #define MTML_LOG_FILE_PATH_BUFFER_SIZE 200
00270
00274 #define MTML_MPC_PROFILE_NAME_BUFFER_SIZE 32
00275
00279 #define MTML_MPC_CONF_NAME_BUFFER_SIZE 32
00280
00284 #define MTML_MPC_CONF_MAX_PROF_NUM 16
00285
00289 #define MTML_DEVICE_SLOT_NAME_BUFFER_SIZE 32
00290
00294 #define MTML_MEMORY_VENDOR_BUFFER_SIZE 64
00295
00299 #define MTML_DEVICE_SERIAL_NUMBER_BUFFER_SIZE 64
00300
00304 typedef enum {
00305 MTML_SUCCESS = 0,
00306 MTML_ERROR_DRIVER_NOT_LOADED,
00307 MTML_ERROR_DRIVER_FAILURE,
00308 MTML_ERROR_INVALID_ARGUMENT,
00309 MTML_ERROR_NOT_SUPPORTED,
00310 MTML_ERROR_NO_PERMISSION,
00311 MTML_ERROR_INSUFFICIENT_SIZE,
00312 MTML_ERROR_NOT_FOUND,
00313 MTML_ERROR_INSUFFICIENT_MEMORY,
00314 MTML_ERROR_DRIVER_TOO_OLD,
00315 MTML_ERROR_DRIVER_TOO_NEW,
00316 MTML_ERROR_TIMEOUT,
00317 MTML_ERROR_RESOURCE_IS_BUSY,
00318 MTML_ERROR_UNKNOWN = 999
00319 } MtmlReturn;
00320
00324 typedef enum {
00325 MTML_BRAND_MTT = 0,
00326 MTML_BRAND_UNKNOWN,
00327
00328 // Keep this on the last line.
00329 MTML_BRAND_COUNT
00330 } MtmlBrandType;
00331
00335 typedef enum {
00336 MTML_MEM_TYPE_LPDDR4,
00337 MTML_MEM_TYPE_GDDR6,
00338 } MtmlMemoryType;
00339
00343 typedef enum {
00344 MTML_CODEC_TYPE_AVC = 0,
00345 MTML_CODEC_TYPE_VC1 = 1,
00346 MTML_CODEC_TYPE_MPEG2 = 2,
00347 MTML_CODEC_TYPE_MPEG4 = 3,
00348 MTML_CODEC_TYPE_H263 = 4,
00349 MTML_CODEC_TYPE_DIV3 = 5,
00350 MTML_CODEC_TYPE_RV = 6,
00351 MTML_CODEC_TYPE_AVS = 7,
00352 MTML_CODEC_TYPE_RSVD1 = 8,
00353 MTML_CODEC_TYPE_THO = 9,
00354 MTML_CODEC_TYPE_VP3 = 10,
00355 MTML_CODEC_TYPE_VP8 = 11,
00356 MTML_CODEC_TYPE_HEVC = 12,
00357 MTML_CODEC_TYPE_VP9 = 13,
00358 MTML_CODEC_TYPE_AVS2 = 14,
00359 MTML_CODEC_TYPE_RSVD2 = 15,
00360 MTML_CODEC_TYPE_AV1 = 16,
00361
00362 // Keep this on the last line.
00363 MTML_CODEC_TYPE_COUNT
00364 } MtmlCodecType;
00365
00369 typedef enum {
00370 MTML_CODEC_SESSION_STATE_UNKNOWN = -1,
00371 MTML_CODEC_SESSION_STATE_IDLE = 0,
00372 MTML_CODEC_SESSION_STATE_ACTIVE,
00373
00374 // Keep this on the last line.
00375 MTML_CODEC_SESSION_STATE_COUNT
00376 } MtmlCodecSessionState;
00377
00381 typedef enum {
00382 MTML_DEVICE_NOT_SUPPORT_VIRTUALIZATION = 0,
00383 MTML_DEVICE_SUPPORT_VIRTUALIZATION
00384 } MtmlVirtCapability;
00385
00389 typedef enum {
00390 MTML_VIRT_ROLE_NONE,
00391 MTML_VIRT_ROLE_HOST_VIRTDEVICE,
00392 MTML_VIRT_ROLE_GUEST_VIRTDEVICE,
00394
00395 // Keep this on the last line.
00396 MTML_VIRT_ROLE_COUNT,
00397 } MtmlVirtRole;
00398
00399 typedef enum {
00400 MTML_TOPOLOGY_INTERNAL = 0,
00401 MTML_TOPOLOGY_SINGLE = 1,
00402 MTML_TOPOLOGY_MULTIPLE = 2,
00403 MTML_TOPOLOGY_HOSTBRIDGE = 3,
00404 MTML_TOPOLOGY_NODE = 4,
00405 MTML_TOPOLOGY_SYSTEM = 5,
00406 } MtmlDeviceTopologyLevel;
00407
00411 typedef enum {
00412 MTML_LOG_LEVEL_OFF = 0,
00413 MTML_LOG_LEVEL_FATAL,
00414 MTML_LOG_LEVEL_ERROR,
00415 MTML_LOG_LEVEL_WARNING,
00416 MTML_LOG_LEVEL_INFO,
00417 } MtmlLogLevel;
00418
00422 typedef enum {
00423 MTML_DEVICE_MPC_DISABLE = 0,
00424 MTML_DEVICE_MPC_ENABLE
00425 } MtmlMpcMode;
00426
00430 typedef enum {
00431 MTML_DEVICE_NOT_SUPPORT_MPC = 0,
00432 MTML_DEVICE_SUPPORT_MPC
00433 } MtmlMpcCapability;
00434
00438 typedef enum {
00439 MTML_MPC_TYPE_NONE,
00440 MTML_MPC_TYPE_PARENT,
00441 MTML_MPC_TYPE_INSTANCE,
00442 } MtmlMpcType;
00443
00444 /***********************************/
00447 /***********************************/
00448
00449
00450
00451 /***************************************************************************************************/
00456 /***************************************************************************************************/
00457
00461 typedef struct {
00462 char sbdf[MTML_DEVICE_PCI_SBDF_BUFFER_SIZE];
00463 unsigned int segment;
00464 unsigned int bus;
00465 unsigned int device;
00466 unsigned int pciDeviceId;
00467 unsigned int pciSubsystemId;
00468 unsigned int busWidth;
00469 float pciMaxSpeed;
00470 float pciCurSpeed;
00471 unsigned int pciMaxWidth;
00472 unsigned int pciCurWidth;
00473 unsigned int pciMaxGen;
00474 unsigned int pciCurGen;
00475 int rsvd[6];
00476 } MtmlPciInfo;
00477
00481 typedef struct {
00482 unsigned int slotId;
00483 char slotName[MTML_DEVICE_SLOT_NAME_BUFFER_SIZE];
00484 unsigned int rsvd[4];
00485 } MtmlPciSlotInfo;
00486
00490 typedef struct {
00491 unsigned int util;
00492 unsigned int period;
00493 unsigned int encUtil;
00494 unsigned int decUtil;
00495 int rsvd[2];
00496 } MtmlCodecUtil;
00497
00501 typedef struct {
00502 unsigned int id;
00503 unsigned int pid;
00504 unsigned int hResolution;
00506 unsigned int vResolution;
00508 unsigned int frameRate;
00509 unsigned int bitRate;
00510 unsigned int latency;
00511 MtmlCodecType codecType;
00512 int rsvd[4];
00513 } MtmlCodecSessionMetrics;
00514
00518 typedef struct {
00519 char id[MTML_VIRT_TYPE_ID_BUFFER_SIZE];
00520 char name[MTML_VIRT_TYPE_NAME_BUFFER_SIZE];
00521 char api[MTML_VIRT_TYPE_API_BUFFER_SIZE];
00522 unsigned int horizontalResolution;
00523 unsigned int verticalResolution;
00524 unsigned int frameBuffer;
00525 unsigned int maxEncodeNum;
00526 unsigned int maxDecodeNum;
00527 unsigned int maxInstances;
00528 unsigned int maxVirtualDisplay;
00529 int rsvd[11];
00530 } MtmlVirtType;
00531
00539 typedef struct {
00540 unsigned int virtCap : 1;
00542 unsigned int virtRole : 3;
00544 unsigned int mpcCap : 1;
00546 unsigned int mpcType : 3;
00548 unsigned int mtLinkCap : 1;
00550 unsigned int rsvd : 23;
00551 unsigned int rsvd2 : 32;
00552 } MtmlDeviceProperty;
00553
00557 typedef struct {
00558 struct {
00559 MtmlLogLevel level;
00560 int rsvd[2];
00561 } consoleConfig;
00562 struct {
00563 MtmlLogLevel level;
00564 int rsvd[2];
00565 } systemConfig;
00566 struct {
00567 MtmlLogLevel level;
00568 char file[MTML_LOG_FILE_PATH_BUFFER_SIZE];
00570 unsigned int size;
00571 int rsvd[2];
00572 } fileConfig;
00573 struct {
00574 MtmlLogLevel level;
00575 void (*callback)(const char*, unsigned int);
00576 int rsvd[2];
00577 } callbackConfig;
00578 int rsvd[8];
00579 } MtmlLogConfiguration;
00580
00581 /* P2P capability status.*/
00582 typedef enum {
00583 MTML_P2P_STATUS_OK = 0,
00584 MTML_P2P_STATUS_CHIPSET_NOT_SUPPORTED,
00585 MTML_P2P_STATUS_GPU_NOT_SUPPORTED,
00586 MTML_P2P_STATUS_UNKNOWN
00587 } MtmlDeviceP2PStatus;
00588
00589 /* P2P capability. */
00590 typedef enum {
00591 MTML_P2P_CAPS_READ = 0,
00592 MTML_P2P_CAPS_WRITE
00593 } MtmlDeviceP2PCaps;
00594
00598 typedef struct
00599 {
00600 unsigned int id;
00601 unsigned int coreCount;
00602 unsigned long long memorySizeMB;
00603 char name[MTML_MPC_PROFILE_NAME_BUFFER_SIZE];
00604 unsigned int rsvd[10];
00605 } MtmlMpcProfile;
00606
00610 typedef struct
00611 {
00612 unsigned int id;
00613 char name[MTML_MPC_CONF_NAME_BUFFER_SIZE];
00614 int profileId[MTML_MPC_CONF_MAX_PROF_NUM];
00616 unsigned int rsvd[24];
00617 } MtmlMpcConfiguration;
00618
00622 typedef struct {
00623 unsigned int version;
00625 unsigned int bandWidth;
00626 unsigned int linkNum;
00627 unsigned int rsvd[4];
00628 } MtmlMtLinkSpec;
00629
00633 typedef enum {
00634 MTML_MTLINK_STATE_DOWN = 0,
00635 MTML_MTLINK_STATE_UP
00636 } MtmlMtLinkState;
00637
00641 typedef enum {
00642 MTML_MTLINK_CAP_P2P_ACCESS = 0,
00643 MTML_MTLINK_CAP_P2P_ATOMICS,
00644
00645 MTML_MTLINK_CAP_COUNT
00646 } MtmlMtLinkCap;
00647
00651 typedef enum {
00652 MTML_MTLINK_CAP_STATUS_NOT_SUPPORTED = 0,
00653 MTML_MTLINK_CAP_STATUS_OK
00654 } MtmlMtLinkCapStatus;
00655
00659 typedef struct {
00660 unsigned int localLinkId;
00661 unsigned int remoteLinkId;
00662 unsigned int rsvd[4];
00663 } MtmlMtLinkLayout;
00664
00668 typedef enum {
00669 MTML_DEVICE_NOT_SUPPORT_MTLINK = 0,
00670 MTML_DEVICE_SUPPORT_MTLINK
00671 } MtmlMtLinkCapability;
00672
00673 /* The display interface types. */
00674 typedef enum {
00675 MTML_DISP_INTF_TYPE_DP,
00676 MTML_DISP_INTF_TYPE_EDP,
00677 MTML_DISP_INTF_TYPE_VGA,
00678 MTML_DISP_INTF_TYPE_HDMI,
00679 MTML_DISP_INTF_TYPE_LVDS,
00680 MTML_DISP_INTF_TYPE_MAX
00681 } MtmlDispIntfType;
00682
00683 /* The display interface specifications. */
00684 typedef struct {
00685 MtmlDispIntfType type; // Type of display interface.
00686 unsigned int maxHoriRes; // Maximum supported horizontal resolution.
00687 unsigned int maxVertRes; // Maximum supported vertical resolution.
00688 float maxRefreshRate; // Maximum refresh rate.
00689 unsigned int rsvd[8]; // Reserved for future extension.
00690 } MtmlDispIntfSpec;
00691
00692
00696 typedef enum {
00697 MTML_GPU_ENGINE_GEOMETRY,
00698 MTML_GPU_ENGINE_2D,
00699 MTML_GPU_ENGINE_3D,
00700 MTML_GPU_ENGINE_COMPUTE,
00701
00702 // Keep this last
00703 MTML_GPU_ENGINE_MAX
00704 } MtmlGpuEngine;
00705
00709 typedef enum {
00710 MTML_MEMORY_ECC_DISABLE = 0,
00711 MTML_MEMORY_ECC_ENABLE
00712 } MtmlEccMode;
00713
00717 typedef enum {
00718 MTML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS = 0,
00719 MTML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR = 1,
00720
00721 // Keep this last
00722 MTML_PAGE_RETIREMENT_CAUSE_MAX
00723 } MtmlPageRetirementCause;
00724
00728 typedef struct {
00729 unsigned int sbeCount;
00730 unsigned int dbeCount;
00731 } MtmlPageRetirementCount;
00732
00736 typedef enum {
00737 MTML_RETIRED_PAGES_PENDING_STATE_FALSE = 0,
00738 MTML_RETIRED_PAGES_PENDING_STATE_TRUE = 1
00739 } MtmlRetiredPagesPendingState;
00740
00741 typedef struct {
00742 unsigned long long timestamps;
00743 unsigned long long address;
00744 unsigned int rsvd[10];
00745 } MtmlPageRetirement;
00746
00747 typedef struct {
00748 MtmlPageRetirementCause cause;
00749 unsigned long long timestamps;
00750 unsigned long long address;
00751 unsigned int rsvd[10];
00752 } MtmlPageRetirementPending;
00753
00754 /***********************************/
00757 /***********************************/
00758
00759
00760
00761 /***************************************************************************************************/
00766 /***************************************************************************************************/
00767
00771 typedef struct MtmlGpu MtmlGpu;
00772
00776 typedef struct MtmlMemory MtmlMemory;
00777
00781 typedef struct MtmlVpu MtmlVpu;
00782
00786 typedef struct MtmlDevice MtmlDevice;
00787
00791 typedef struct MtmlSystem MtmlSystem;
00792
00796 typedef struct MtmlLibrary MtmlLibrary;
00797
00798 /***********************************/
00801 /***********************************/
00802
00803
00804
00805 /***************************************************************************************************/
00810 /***************************************************************************************************/
00811
00835 MtmlReturn MTML_API mtmlLibraryInit(MtmlLibrary **lib);
00836
00853 MtmlReturn MTML_API mtmlLibraryShutDown(MtmlLibrary *lib);
00854
00872 MtmlReturn MTML_API mtmlLibraryGetVersion(const MtmlLibrary *lib, char* version, unsigned int length);
00873
00892 MtmlReturn MTML_API mtmlLibraryInitSystem(const MtmlLibrary *lib, MtmlSystem **sys);
00893
00905 MTML_DEPRECATED("Not required anymore.")
00906 MtmlReturn MTML_API mtmlLibraryFreeSystem(MtmlSystem *sys);
00907
00919 MtmlReturn MTML_API mtmlLibraryCountDevice(const MtmlLibrary *lib, unsigned int *count);
00920
00946 MtmlReturn MTML_API mtmlLibraryInitDeviceByIndex(const MtmlLibrary *lib, unsigned int index,
MtmlDevice **dev);
00947
00970 MtmlReturn MTML_API mtmlLibraryInitDeviceByUuid(const MtmlLibrary *library, const char *uuid,
MtmlDevice **dev);
00971
00989 MtmlReturn MTML_API mtmlLibraryInitDeviceByPciSbdf(const MtmlLibrary* lib, const char* pciSbdf,
MtmlDevice** dev);
00990
01017 MtmlReturn MTML_API mtmlLibrarySetMpcConfigurationInBatch(const MtmlLibrary* lib, unsigned int count,
MtmlDevice** devices, unsigned int* mpcConfigIds);
01018
01032 MTML_DEPRECATED("Not required anymore.")
01033 MtmlReturn MTML_API mtmlLibraryFreeDevice(MtmlDevice *dev);
01034
01035 /***********************************/
01038 /***********************************/
01039
01040
01041
01042 /***************************************************************************************************/
01047 /***************************************************************************************************/
01048
01066 MtmlReturn MTML_API mtmlSystemGetDriverVersion(const MtmlSystem *sys, char *version, unsigned int
length);
01067
01068 /***********************************/
01071 /***********************************/
01072
01073
01074 /***************************************************************************************************/
01079 /***************************************************************************************************/
01080
01099 MtmlReturn MTML_API mtmlDeviceInitGpu(const MtmlDevice *dev, MtmlGpu **gpu);
01100
01112 MTML_DEPRECATED("Not required anymore.")
01113 MtmlReturn MTML_API mtmlDeviceFreeGpu(MtmlGpu *gpu);
01114
01134 MtmlReturn MTML_API mtmlDeviceInitMemory(const MtmlDevice *dev, MtmlMemory **mem);
01135
01148 MTML_DEPRECATED("Not required anymore.")
01149 MtmlReturn MTML_API mtmlDeviceFreeMemory(MtmlMemory *mem);
01150
01171 MtmlReturn MTML_API mtmlDeviceInitVpu(const MtmlDevice *dev, MtmlVpu **vpu);
01172
01185 MTML_DEPRECATED("Not required anymore.")
01186 MtmlReturn MTML_API mtmlDeviceFreeVpu(MtmlVpu *vpu);
01187
01202 MtmlReturn MTML_API mtmlDeviceGetIndex(const MtmlDevice *dev, unsigned int *index);
01203
01223 MtmlReturn MTML_API mtmlDeviceGetUUID(const MtmlDevice *dev, char *uuid, unsigned int length);
01224
01239 MtmlReturn MTML_API mtmlDeviceGetBrand(const MtmlDevice *dev, MtmlBrandType *type);
01240
01259 MtmlReturn MTML_API mtmlDeviceGetName(const MtmlDevice *dev, char *name, unsigned int length);
01260
01278 MtmlReturn MTML_API mtmlDeviceGetPciInfo(const MtmlDevice *dev, MtmlPciInfo *pci);
01279
01296 MtmlReturn MTML_API mtmlDeviceGetPowerUsage(const MtmlDevice *dev, unsigned int *power);
01297
01314 MtmlReturn MTML_API mtmlDeviceGetGpuPath(const MtmlDevice* dev, char* path,unsigned int length);
01315
01333 MtmlReturn MTML_API mtmlDeviceGetPrimaryPath(const MtmlDevice* dev, char* path, unsigned int length);
01334
01352 MtmlReturn MTML_API mtmlDeviceGetRenderPath(const MtmlDevice* dev, char* path, unsigned int length);
01353
01375 MTML_DEPRECATED("use mtmlDeviceGetMtBiosVersion instead")
01376 MtmlReturn MTML_API mtmlDeviceGetVbiosVersion(const MtmlDevice* dev, char* version, unsigned int
length);
01377
01399 MtmlReturn MTML_API mtmlDeviceGetMtBiosVersion(const MtmlDevice* dev, char* version, unsigned int
length);
01400
01415 MtmlReturn MTML_API mtmlDeviceGetProperty(const MtmlDevice *dev, MtmlDeviceProperty *prop);
01416
01435 MtmlReturn MTML_API mtmlDeviceCountFan(const MtmlDevice* dev, unsigned int* count);
01436
01460 MtmlReturn MTML_API mtmlDeviceGetFanSpeed(const MtmlDevice* dev, unsigned int index, unsigned int*
speed);
01461
01482 MtmlReturn MTML_API mtmlDeviceGetFanRpm(const MtmlDevice* dev, unsigned int fanIndex, unsigned int*
fanRpm);
01483
01499 MtmlReturn MTML_API mtmlDeviceGetPcieSlotInfo(const MtmlDevice* dev, MtmlPciSlotInfo* slotInfo);
01500
01518 MtmlReturn MTML_API mtmlDeviceCountDisplayInterface(const MtmlDevice* device, unsigned int* count);
01519
01538 MtmlReturn MTML_API mtmlDeviceGetDisplayInterfaceSpec(const MtmlDevice* device, unsigned int
intfIndex, MtmlDispIntfSpec* dispIntfSpec);
01539
01560 MtmlReturn MTML_API mtmlDeviceGetSerialNumber(const MtmlDevice* device, unsigned int length, char*
serialNumber);
01561
01562 /***********************************/
01565 /***********************************/
01566
01567
01568
01569 /***************************************************************************************************/
01574 /***************************************************************************************************/
01575
01593 MtmlReturn MTML_API mtmlDeviceCountSupportedVirtTypes(const MtmlDevice *dev, unsigned int *count);
01594
01614 MtmlReturn MTML_API mtmlDeviceGetSupportedVirtTypes(const MtmlDevice *dev, MtmlVirtType *types,
unsigned int count);
01615
01633 MtmlReturn MTML_API mtmlDeviceCountAvailVirtTypes(const MtmlDevice *dev, unsigned int *count);
01634
01654 MtmlReturn MTML_API mtmlDeviceGetAvailVirtTypes(const MtmlDevice *dev, MtmlVirtType *types, unsigned
int count);
01655
01675 MtmlReturn MTML_API mtmlDeviceCountAvailVirtDevices(const MtmlDevice *dev, const MtmlVirtType *type,
unsigned int *count);
01676
01695 MtmlReturn MTML_API mtmlDeviceCountActiveVirtDevices(const MtmlDevice *dev, unsigned int *count);
01696
01725 MtmlReturn MTML_API mtmlDeviceGetActiveVirtDeviceUuids(const MtmlDevice *dev, char *uuids, unsigned
int entryLength, unsigned int entryCount);
01726
01744 MtmlReturn MTML_API mtmlDeviceCountMaxVirtDevices(const MtmlDevice* dev, const MtmlVirtType* type,
unsigned int* virtDevicesCount);
01745
01769 MtmlReturn MTML_API mtmlDeviceInitVirtDevice(const MtmlDevice *dev, const char *uuid, MtmlDevice
**virtDev);
01770
01786 MTML_DEPRECATED("Not required anymore.")
01787 MtmlReturn MTML_API mtmlDeviceFreeVirtDevice(MtmlDevice *virtDev);
01788
01807 MtmlReturn MTML_API mtmlDeviceGetVirtType(const MtmlDevice *virtDev, MtmlVirtType *type);
01808
01829 MtmlReturn MTML_API mtmlDeviceGetPhyDeviceUuid(const MtmlDevice *virtDev, char *uuid, unsigned int
length);
01830
01831 /***********************************/
01834 /***********************************/
01835
01836 /***************************************************************************************************/
01841 /***************************************************************************************************/
01842
01859 MtmlReturn MTML_API mtmlDeviceGetTopologyLevel(const MtmlDevice* dev1, const MtmlDevice* dev2,
MtmlDeviceTopologyLevel* level);
01860
01877 MtmlReturn MTML_API mtmlDeviceCountDeviceByTopologyLevel(const MtmlDevice* dev,
MtmlDeviceTopologyLevel level, unsigned int* count);
01878
01898 MtmlReturn MTML_API mtmlDeviceGetDeviceByTopologyLevel(const MtmlDevice* dev, MtmlDeviceTopologyLevel
level, unsigned int count, MtmlDevice** deviceArray);
01899
01915 MtmlReturn MTML_API mtmlDeviceGetP2PStatus(const MtmlDevice* dev1, const MtmlDevice* dev2,
MtmlDeviceP2PCaps p2pCap, MtmlDeviceP2PStatus* p2pStatus);
01916
01917
01918 /***********************************/
01921 /***********************************/
01922
01923
01924
01925 /***************************************************************************************************/
01930 /***************************************************************************************************/
01931
01948 MtmlReturn MTML_API mtmlGpuGetUtilization(const MtmlGpu *gpu, unsigned int* utilization);
01949
01965 MtmlReturn MTML_API mtmlGpuGetTemperature(const MtmlGpu *gpu, unsigned int* temp);
01966
01967
01984 MtmlReturn MTML_API mtmlGpuGetClock(const MtmlGpu *gpu, unsigned int *clockMhz);
01985
02002 MtmlReturn MTML_API mtmlGpuGetMaxClock(const MtmlGpu *gpu, unsigned int *clockMhz);
02003
02022 MtmlReturn MTML_API mtmlGpuGetEngineUtilization(const MtmlGpu *gpu, MtmlGpuEngine engine, unsigned
int* utilization);
02023
02024
02025 /***********************************/
02028 /***********************************/
02029
02030
02031
02032 /***************************************************************************************************/
02037 /***************************************************************************************************/
02038
02039
02056 MtmlReturn MTML_API mtmlMemoryGetTotal(const MtmlMemory *mem, unsigned long long *total);
02057
02074 MtmlReturn MTML_API mtmlMemoryGetUsed(const MtmlMemory *mem, unsigned long long *used);
02075
02092 MtmlReturn MTML_API mtmlMemoryGetUsedSystem(const MtmlMemory *mem, unsigned long long *used);
02093
02110 MtmlReturn MTML_API mtmlMemoryGetUtilization(const MtmlMemory *mem, unsigned int *utilization);
02111
02129 MtmlReturn MTML_API mtmlMemoryGetClock(const MtmlMemory *mem, unsigned int *clockMhz);
02130
02148 MtmlReturn MTML_API mtmlMemoryGetMaxClock(const MtmlMemory *mem, unsigned int *clockMhz);
02149
02166 MtmlReturn MTML_API mtmlMemoryGetBusWidth(const MtmlMemory* mem, unsigned int* busWidth);
02167
02182 MtmlReturn MTML_API mtmlMemoryGetBandwidth(const MtmlMemory* mem, unsigned int* bandwidth);
02183
02198 MtmlReturn MTML_API mtmlMemoryGetSpeed(const MtmlMemory* mem, unsigned int* speed);
02199
02217 MtmlReturn MTML_API mtmlMemoryGetVendor(const MtmlMemory* mem, unsigned int length, char* vendor);
02218
02233 MtmlReturn MTML_API mtmlMemoryGetType(const MtmlMemory* mem, MtmlMemoryType* type);
02234
02235 /***********************************/
02238 /***********************************/
02239
02240
02241
02242 /***************************************************************************************************/
02247 /***************************************************************************************************/
02248
02266 MtmlReturn MTML_API mtmlVpuGetUtilization(const MtmlVpu *vpu, MtmlCodecUtil *utilization);
02267
02285 MtmlReturn MTML_API mtmlVpuGetClock(const MtmlVpu *vpu, unsigned int *clockMhz);
02286
02304 MtmlReturn MTML_API mtmlVpuGetMaxClock(const MtmlVpu *vpu, unsigned int *clockMhz);
02305
02329 MtmlReturn MTML_API mtmlVpuGetCodecCapacity(const MtmlVpu *vpu, unsigned int *encodeCapacity, unsigned
int *decodeCapacity);
02330
02356 MtmlReturn MTML_API mtmlVpuGetEncoderSessionStates(const MtmlVpu *vpu, MtmlCodecSessionState *states,
unsigned int length);
02357
02381 MtmlReturn MTML_API mtmlVpuGetEncoderSessionMetrics(const MtmlVpu *vpu, unsigned int sessionId,
MtmlCodecSessionMetrics *metrics);
02382
02408 MtmlReturn MTML_API mtmlVpuGetDecoderSessionStates(const MtmlVpu *vpu, MtmlCodecSessionState *states,
unsigned int length);
02409
02433 MtmlReturn MTML_API mtmlVpuGetDecoderSessionMetrics(const MtmlVpu *vpu, unsigned int sessionId,
MtmlCodecSessionMetrics *metrics);
02434
02435 /***********************************/
02438 /***********************************/
02439
02440
02441 /***************************************************************************************************/
02446 /***************************************************************************************************/
02447
02458 MtmlReturn MTML_API mtmlLogSetConfiguration(const MtmlLogConfiguration *configuration);
02459
02468 MtmlReturn MTML_API mtmlLogGetConfiguration(MtmlLogConfiguration *configuration);
02469
02470 /***********************************/
02473 /***********************************/
02474
02475 /***************************************************************************************************/
02480 /***************************************************************************************************/
02481
02492 const MTML_API char* mtmlErrorString(MtmlReturn result);
02493
02494 /***********************************/
02497 /***********************************/
02498
02499 /***************************************************************************************************/
02504 /***************************************************************************************************/
02505
02527 MtmlReturn MTML_API mtmlDeviceSetMpcMode(const MtmlDevice* device, MtmlMpcMode mode);
02528
02542 MtmlReturn MTML_API mtmlDeviceGetMpcMode(const MtmlDevice* device, MtmlMpcMode* currentMode);
02543
02560 MtmlReturn MTML_API mtmlDeviceCountSupportedMpcProfiles(const MtmlDevice* parentDevice, unsigned int*
count);
02561
02580 MtmlReturn MTML_API mtmlDeviceGetSupportedMpcProfiles(const MtmlDevice* parentDevice, unsigned int
count, MtmlMpcProfile* info);
02581
02598 MtmlReturn MTML_API mtmlDeviceCountSupportedMpcConfigurations(const MtmlDevice* parentDevice, unsigned
int* count);
02599
02618 MtmlReturn MTML_API mtmlDeviceGetSupportedMpcConfigurations(const MtmlDevice* parentDevice, unsigned
int count, MtmlMpcConfiguration* info);
02619
02636 MtmlReturn MTML_API mtmlDeviceGetMpcConfiguration(const MtmlDevice* parentDevice,
MtmlMpcConfiguration* config);
02637
02657 MtmlReturn MTML_API mtmlDeviceGetMpcConfigurationByName(const MtmlDevice* parentDevice, const char*
configName, MtmlMpcConfiguration* config);
02658
02680 MtmlReturn MTML_API mtmlDeviceSetMpcConfiguration(const MtmlDevice* parentDevice, unsigned int id);
02681
02699 MtmlReturn MTML_API mtmlDeviceCountMpcInstancesByProfileId(const MtmlDevice* parentDevice, unsigned
int profileId, unsigned int* count);
02700
02722 MtmlReturn MTML_API mtmlDeviceGetMpcInstancesByProfileId(const MtmlDevice* parentDevice, unsigned int
profileId, unsigned int count, MtmlDevice** mpcInstance);
02723
02740 MtmlReturn MTML_API mtmlDeviceCountMpcInstances(const MtmlDevice* parentDevice, unsigned int* count);
02741
02760 MtmlReturn MTML_API mtmlDeviceGetMpcInstances(const MtmlDevice* parentDevice, unsigned int count,
MtmlDevice** mpcInstance);
02761
02783 MtmlReturn MTML_API mtmlDeviceGetMpcInstanceByIndex(const MtmlDevice* parentDevice, unsigned int
index, MtmlDevice** mpcInstance);
02784
02805 MtmlReturn MTML_API mtmlDeviceGetMpcParentDevice(const MtmlDevice* mpcInstance, MtmlDevice**
parentDevice);
02806
02823 MtmlReturn MTML_API mtmlDeviceGetMpcProfileInfo(const MtmlDevice* mpcInstance, MtmlMpcProfile*
profileInfo);
02824
02841 MtmlReturn MTML_API mtmlDeviceGetMpcInstanceIndex(const MtmlDevice* mpcInstance, unsigned int* index);
02842
02843 /***********************************/
02846 /***********************************/
02847
02848 /***************************************************************************************************/
02853 /***************************************************************************************************/
02854
02869 MtmlReturn MTML_API mtmlDeviceGetMtLinkSpec(const MtmlDevice* device, MtmlMtLinkSpec* spec);
02870
02887 MtmlReturn MTML_API mtmlDeviceGetMtLinkState(const MtmlDevice* device, unsigned int linkId,
MtmlMtLinkState* state);
02888
02907 MtmlReturn MTML_API mtmlDeviceGetMtLinkCapStatus(const MtmlDevice* device, unsigned int linkId,
MtmlMtLinkCap capability, MtmlMtLinkCapStatus* status);
02908
02926 MtmlReturn MTML_API mtmlDeviceGetMtLinkRemoteDevice(const MtmlDevice* device, unsigned int linkId,
MtmlDevice** remoteDevice);
02927
02947 MtmlReturn MTML_API mtmlDeviceCountMtLinkShortestPaths(const MtmlDevice* localDevice, const
MtmlDevice* remoteDevice, unsigned int* pathCount, unsigned int* pathLength);
02948
02973 MtmlReturn MTML_API mtmlDeviceGetMtLinkShortestPaths(const MtmlDevice* localDevice, const MtmlDevice*
remoteDevice, unsigned int pathCount, unsigned int pathLength, MtmlDevice** paths);
02974
02991 MtmlReturn MTML_API mtmlDeviceCountMtLinkLayouts(const MtmlDevice* localDevice, const MtmlDevice*
remoteDevice, unsigned int* linkCount);
02992
03011 MtmlReturn MTML_API mtmlDeviceGetMtLinkLayouts(const MtmlDevice* localDevice, const MtmlDevice*
remoteDevice, unsigned int linkCount, MtmlMtLinkLayout* layouts);
03012
03013 /***********************************/
03016 /***********************************/
03017
03018 /***************************************************************************************************/
03023 /***************************************************************************************************/
03024
03049 MtmlReturn MTML_API mtmlDeviceGetMemoryAffinityWithinNode(const MtmlDevice* device, unsigned int
nodeSetSize, unsigned long* nodeSet);
03050
03070 MtmlReturn MTML_API mtmlDeviceGetCpuAffinityWithinNode(const MtmlDevice* device, unsigned int
cpuSetSize, unsigned long* cpuSet);
03071
03072
03090 MtmlReturn MTML_API mtmlDeviceReset(const MtmlDevice* device);
03091
03113 MtmlReturn MTML_API mtmlMemorySetEccMode(const MtmlMemory* mem, MtmlEccMode mode);
03114
03134 MtmlReturn MTML_API mtmlMemoryGetEccMode(const MtmlMemory* mem, MtmlEccMode *currentMode, MtmlEccMode
*pendingMode);
03135
03154 MtmlReturn MTML_API mtmlMemoryGetRetiredPagesCount(const MtmlMemory* mem, MtmlPageRetirementCount*
count);
03155
03177 MtmlReturn MTML_API mtmlMemoryGetRetiredPages(const MtmlMemory* mem, MtmlPageRetirementCause cause,
unsigned int count, MtmlPageRetirement *pageRetirements);
03178
03197 MtmlReturn MTML_API mtmlMemoryGetRetiredPagesPendingStatus(const MtmlMemory* mem,
MtmlRetiredPagesPendingState *isPending);
03198
03199 /***********************************/
03202 /***********************************/
03203
03204 #ifdef __cplusplus
03205 } // extern "C"
03206 #endif
03207
03208 #endif // MTML_H_