63 lines
2.9 KiB
Python
63 lines
2.9 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you 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.
|
|
"""Shared enum / value tables for PTX intrinsic schemas and user wrappers.
|
|
|
|
Single source of truth. Both ``tvm.tirx.op`` (user wrappers that validate
|
|
arguments via ``_choice``) and ``tvm.tirx.cuda.operator.intrinsics.*``
|
|
(schema declarations using ``Choice(choices=...)`` / ``IntAttr(choices=...)``)
|
|
import from here.
|
|
|
|
Adding a new modifier value requires changing exactly one place.
|
|
"""
|
|
|
|
# Memory ordering / scope -----------------------------------------------------
|
|
FENCE_SEM = ("sc", "acq_rel")
|
|
FENCE_SCOPE = ("cta", "cluster", "gpu", "sys")
|
|
FENCE_PROXY_ASYNC_SPACE = ("", "global", "shared::cta", "shared::cluster")
|
|
CLUSTER_BARRIER_SEM = ("", "release", "relaxed")
|
|
|
|
# CTA group (used by tcgen05 and TMA) -----------------------------------------
|
|
TCGEN05_CTA_GROUP = (1, 2)
|
|
|
|
# NVSHMEM ---------------------------------------------------------------------
|
|
NVSHMEM_CMP = ("eq", "ne", "gt", "ge", "lt", "le")
|
|
NVSHMEM_SIG_OP = ("set", "add")
|
|
|
|
# Floating-point rounding -----------------------------------------------------
|
|
F32X2_ROUND = ("rz", "rn", "rm", "rp")
|
|
|
|
# cp.async (non-bulk) ---------------------------------------------------------
|
|
CP_ASYNC_CACHE_HINT = ("", "evict_last", "evict_first", "evict_normal")
|
|
CP_ASYNC_PREFETCH_SIZE = (-1, 64, 128, 256)
|
|
CP_ASYNC_FILL_MODE = ("", "zero")
|
|
|
|
# cp.async.bulk (TMA) ---------------------------------------------------------
|
|
CP_ASYNC_BULK_CACHE_HINT = ("", "evict_last", "evict_first", "evict_normal", "evict_last_use")
|
|
CP_ASYNC_BULK_RED_OP = ("add", "min", "max", "inc", "dec", "and", "or", "xor")
|
|
|
|
# ldmatrix / stmatrix ---------------------------------------------------------
|
|
LDMATRIX_DTYPE = (".b16", ".b8")
|
|
LDMATRIX_NUM = (1, 2, 4)
|
|
|
|
# tcgen05.cp ------------------------------------------------------------------
|
|
TCGEN05_CP_SHAPES = ("32x128b", "4x256b", "128x128b", "128x256b", "64x128b")
|
|
TCGEN05_CP_MULTICAST = ("", "warpx4", "warpx2::02_13", "warpx2::01_23")
|
|
TCGEN05_CP_DECOMPRESS = ("", "b8x16.b4x16_p64", "b8x16.b6x16_p32")
|
|
|
|
# tcgen05.ld / tcgen05.st -----------------------------------------------------
|
|
TCGEN05_LDST_SHAPES = ("16x32bx2", "16x64b", "16x128b", "16x256b", "32x32b")
|