Composable GPU system- Alternating GPU resources to fulfill both AI training and inference requirements.
PCIe switch based Composable GPU Solution to improve GPU utilization in E-commerce Service.
H3 Platform have been committed to the research and development of composable architecture for a long time, and have developed a full set of composable architecture API ready for the next generation IT. This composable API framework consists of over 50 unique API commands. In this blog, we will show you some capabilities of this API and how it can help to ease IT management. Based on the RedfishAPI standard, our API can be easily applied to any system. We will demonstrate some APIs then explain the how to drive this APIs.
With our API, it is possible to assign /unassign devices to different host, generate management information such as device-host relationships, chassis control and management and more.
Let’s demonstrate a well-structured API with the resource assignment command. It is the most , and the key to enable flexibility of the resources which ultimately leads to better utilization of these resources.
Assign Device (request)
Assign Device (response)
Now let’s analysis what each line means.
PATCH /redfish/v1/Fabrics/PCIe/Zones/{zoneID}
PATCH command is for “action”, In the given example, the action would be to “assign” device(s) to a host port.
A “Zone”, by Redfish official definition is a Resource blocks provide an inventory of components available to the client for building compositions.
In our API, we define zone by unique host port, meaning that each zone represents a host port, thus given a unique “zone ID”. The “zone id” is used when user is to select a specific host port. Therefore, when user gets the information of a zone, there will always be a host port endpoint. In the given example, it would be Endpoint/hostport2_H1.
Endpoint is the PCIe endpoint, it could be either host port or device. After targeting a zone, users should select which “device” endpoint(s) are to assign. Of course, it could be any PCIe device such as GPU, SSD, and FPGA.
Endpoints/Device2_2
Device is straight forward, displayed as DeviceA_B. A_B in this case is the PCIe port which the target device is installed. Depending on the actual device chassis, the format could be different. But in our chassis, there are two device drawers, each with four PCIe slots. Therefore device2_2 represents the device installed in the second PCIe slot of the drawer 2. When assigning device, user simply add the URL of the device endpoint under the “endpoint” bracket of the zone. In the given example, we are assigning two devices to the host port, which are device2_2 and device2_4.
When device(s) is successfully assigned, the response will show “OK” and would display the new endpoint list under the zone.
From the above example, you can easily realize that there is a fix structure in our API. Basically, all our API commands include a “request”, which is the action that user is trying to perform. Whether it is to retrieve management information with GET command or to modify the endpoints mapping with PATCH command, any action should be “requested”. Following the request, users will get a “response” which tells the result of whatever action that was requested.
RedfishAPI is a web-based API service, the resources are accessed using URLs. The URLs are returned in JSON format. From the above example, you can find that every endpoint is given a unique URL.
Here is the URL to a device under our API framework:
http(s)://{IP address of the system}/redfish/v1/Fabrics/PCIe/Endpoints/{Device#}
The first string is the IP address of the system, in this case is our PCIe chassis. “Redfish” is for the Redfish version object and “v1” is the root URL for version 1 of the redfish services. Fabrics/PCIe/Endpoints is the URL to reach the endpoints of the PCIe switch. Finally, the device# specifies which exact device endpoint to reach. The actions are defined by the prefixes. The "Patch" in the given Assign Device example is a prefix, it is mostly used when composing resource. There are also prefix such as "Get" and "Post" for retrieving system information and for user authentication respectively.
If you are interested in composable API, welcome to contact sales@h3platform.com for more information.