Protocol Documentation

Table of Contents

vipuuser.proto

Top

Copyright (c) 2020 Graphcore Ltd. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

Allocation

FieldTypeLabelDescription
id string

Unique identifier for the allocation.

spec AllocationSpec

The Allocation specification.

AllocationSpec

FieldTypeLabelDescription
cluster_id string

The cluster containing the allocation.

agent_ids string repeated

The agents in the allocation.

CreatePartitionReply

FieldTypeLabelDescription
partition_id string

Unique identifier of the created partition.

CreatePartitionRequest

FieldTypeLabelDescription
requirements PartitionRequirements

Partition requirements

disable_auto_reset bool

Disable Auto-reset for the partition

relocatable bool

If set to true, the V-IPU controller may consider reallocation of this partition to a different set of IPUs on partition errors

GetPartitionIpuofConfigReply

FieldTypeLabelDescription
ipuof_config PartitionConfig

IPUoF configurations for the partition (each Gcd)

GetPartitionIpuofConfigRequest

FieldTypeLabelDescription
partition_id string

Unique id of the Partition

gcd_id GetPartitionIpuofConfigRequest.GcdID

Gcd id

GetPartitionIpuofConfigRequest.GcdID

FieldTypeLabelDescription
id uint32

GetPartitionStatusReply

FieldTypeLabelDescription
status PartitionStatus

GetPartitionStatusRequest

FieldTypeLabelDescription
partition_id string

Unique identifier for the partition

IpuofDevice

FieldTypeLabelDescription
ip string

The IP address of the IPUoF endpoint.

server_port uint32

The port number of the IPUoF endpoint.

rdma_port uint32

The port number of the IPUoF rdma endpoint.

device_id uint32

The remote device number of the IPU.

ipulink_segment_id uint32

The IpuLink Segment id for the IPU.

routing_id uint32

The routing id for the IPU

ipu_arch_id uint32

The IPU architecture ID

ipu_id uint32

The IPU ID attribute in GCDA

chip_id string

chip_id contains the silicon ID of the given IPU

gwsw_version string

gwsw_version contains the GWSW version of the IPUM where the IpuofDevice is located to.

ipum_sw_version string

ipum_sw_version contains the IPU-M SW version where the IpuofDevice is located.

ListIPUAttributesReply

FieldTypeLabelDescription
entries ListIPUAttributesReply.Entry repeated

ListIPUAttributesReply.Entry

FieldTypeLabelDescription
agent string

ipu_attributes ListIPUAttributesReply.Entry.IpuAttributesEntry repeated

The uint32 map key represents IpuHwID

ListIPUAttributesReply.Entry.Attributes

FieldTypeLabelDescription
attributes ListIPUAttributesReply.Entry.Attributes.AttributesEntry repeated

ListIPUAttributesReply.Entry.Attributes.AttributesEntry

FieldTypeLabelDescription
key string

value string

ListIPUAttributesReply.Entry.IpuAttributesEntry

FieldTypeLabelDescription
key uint32

value ListIPUAttributesReply.Entry.Attributes

ListIPUAttributesRequest

FieldTypeLabelDescription
agents string repeated

Filter to only fetch attributes from certain agents

ListPartitionsReply

FieldTypeLabelDescription
partitions Partition repeated

List of configured partitions.

ListPartitionsRequest

FieldTypeLabelDescription
allocation_id string

[optional] Only list partitions within the specific allocation If not specified, list all partitions in all allocations that the user has access to

Partition

FieldTypeLabelDescription
id string

Unique id of the partition

spec PartitionSpec

Partition Specification

ready_state PartitionReadyState

Partition State

ipuof_server_version string

Return the IPUoF server version

PartitionConfig

FieldTypeLabelDescription
ipulink_routing_type IpuLinkRoutingType

The routing method configured for the IPUs.

sync_type SyncType

The sync groupings configured for the IPUs.

reconfigurable bool

Boolean to set the "Fabric Reconfigurable" IPUoF attribute

gw_routing_type GatewayRoutingType

Gateway Routing Type for multi-ipulink-segment partitions

num_ipulink_segments uint32

The number of IpuLinkSegments

gcd_configs PartitionConfig.Gcd repeated

The GCD configurations for the partition.

ipuof_server_version string

The IPUoF server version associated with this partition

PartitionConfig.Gcd

FieldTypeLabelDescription
devices IpuofDevice repeated

The IPU devices in the GCD.

attributes PartitionConfig.Gcd.AttributesEntry repeated

Arbitrary attributes as key-value pairs.

PartitionConfig.Gcd.AttributesEntry

FieldTypeLabelDescription
key string

value string

PartitionIpu

FieldTypeLabelDescription
ipulink_domain_topology_id uint32

The physical identifier of the IpuLinkDomain in the cluster for this IPU

ipulink_domain_routing_id uint32

The logical identifier of the IpuLinkDomain when in the partition.

topology_id uint32

The physical identifier of the IPU in the IpuLinkDomain.

routing_id uint32

The logical identifier of the IPU when in the partition.

PartitionRequirements

FieldTypeLabelDescription
id string

Unique id of the partition

size uint32

Partition size required

cluster_id string

Specify specific cluster for the partition (optional) If not specified, partition will be created in any available cluster - deprecated. Use the allocation_id.

ipulink_routing_type IpuLinkRoutingType

The routing method required for the IPUs in an IpuLinkDomain (optional) If not specified, a default routing method will be selected based on the partition size and the cluster topology.

num_ipulink_segments uint32

The number of ipu link segments used from separate IpuLinkDomains in the partition (optional) If not specified single ipulink segment will be used.

gw_routing_type GatewayRoutingType

The routing method required for the ipu link segments (optional, Multi-ipulink-segement partitions only) If not specified, default routing method will be selected based on the inter-ipulink-domain topology

sync_type SyncType

The sync groupings to use for the inter-GCD sync group (GS2) (optional) If not specified, GST_DEFAULT will be used.

num_gcds uint32

The number of GCDs to divide the partition into (optional) If not specified, single GCD will be assumed.

reconfigurable bool

Boolean to set the "Fabric Reconfigurable" IPUoF attribute (optional) If not specified, partition will be non-reconfigurable.

num_replicas uint32

The total number of replicas across all GCDs (optional) If not specified, it is assumed that there is one replica per GCD, which is equivalent to setting num_replicas == num_gcds.

allocation_id string

Specify specific allocation for the partition (optional) If not specified, partition will be created in any available allocation

ipus PartitionIpu repeated

The selection of IPUs from a cluster. When PartitionIpu requirement is specified, cluster_id must be provided.

PartitionSpec

FieldTypeLabelDescription
cluster_id string

The cluster containing the IPUs to be partitioned.

ipus PartitionIpu repeated

The selection of IPUs from the cluster.

ipulink_routing_type IpuLinkRoutingType

The routing method to use for the IPUs in an IpuLinkDomain.

sync_type SyncType

The sync groupings to use for the inter-GCD sync group (GS2).

num_gcds uint32

The number of GCDs to divide the partition into.

num_ipulink_segments uint32

The number of ipu link segments used from separate IpuLinkDomains in the partition

reconfigurable bool

Boolean to set the "Fabric Reconfigurable" IPUoF attribute

gw_routing_type GatewayRoutingType

Gateway Routing Type

num_replicas uint32

Give the total number of replicas independently of the number of GCDs.

allocation_id string

The allocation containing the IPUs to be partitioned.

PartitionStatus

FieldTypeLabelDescription
partition_id string

ready_state PartitionReadyState

operation_state PartitionOperationState

errors string repeated

max_auto_reset_retries uint32

auto_reset_retry_count uint32

last_auto_reset_time google.protobuf.Timestamp

RemovePartitionReply

RemovePartitionRequest

FieldTypeLabelDescription
partition_id string

Unique identifier of the partition to reset.

force bool

Force remove ignore errors while removing a partition

ResetPartitionReply

ResetPartitionRequest

FieldTypeLabelDescription
partition_id string

Unique identifier of the partition to reset.

relocatable bool

If set to true, the V-IPU controller may consider reallocating of this partition to a different set of IPUs on reset errors, overriding value set during partition creation. If set to false, value set during the partition creation will be used.

GatewayRoutingType

NameNumberDescription
GRT_UNDEFINED 0

GRT_RING 2

RING - Routing for GW Clusters with loop links enabled

GRT_SWRING 3

SWRING - Routing for GW Clusters with switched GW links

IpuLinkRoutingType

NameNumberDescription
IRT_UNDEFINED 0

IRT_DNC 1

DNC - Default Configuration

IRT_SWNC 2

SWNC - Sliding Window Configuration

IRT_BTNC 3

BTNC - Barley Twist Configuration

IRT_RINGSWNC 4

RINGSWNC - Sliding Window Configuration with loop links enabled

PartitionOperationState

NameNumberDescription
POS_UNDEFINED 0

POS_IDLE 1

POS_CREATING 2

POS_REMOVING 3

POS_RESETTING 4

POS_FAILED 5

PartitionReadyState

NameNumberDescription
PS_UNDEFINED 0

PS_PENDING 1

PS_ACTIVE 2

PS_REMOVED 3

PS_ERROR 4

SyncType

Types of sync configuration which can be applied globally to a partition.

NameNumberDescription
ST_UNDEFINED 0

ST_GS2_DEFAULT 1

Default global sync configuration

ST_GS2_INDEPENDENT_RAILS 2

Independent rails sync configuration - unsupported configuration

ST_POD_NATIVE_DEFAULT 3

POD Native default sync configuration

ST_POD_NATIVE_REPLICATED_PIPELINE 4

POD Native replicated pipeline sync configuration

UserService

Method NameRequest TypeResponse TypeDescription
ListPartitions ListPartitionsRequest ListPartitionsReply

List the configured partitions.

ListIPUAttributes ListIPUAttributesRequest ListIPUAttributesReply

List the attributes of the users IPUs

CreatePartition CreatePartitionRequest CreatePartitionReply

Create a partition

RemovePartition RemovePartitionRequest RemovePartitionReply

Remove a partition

ResetPartition ResetPartitionRequest ResetPartitionReply

Force a reset of the partition back to an initial state.

GetPartitionIpuofConfig GetPartitionIpuofConfigRequest GetPartitionIpuofConfigReply

Get IPUoF configurations for a configured partition

GetPartitionStatus GetPartitionStatusRequest GetPartitionStatusReply

Get status of a partition.

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)