Для этого я пытаюсь скопируйте модель с https://github.com/gmarkall/numba-bfloa ... ototype.py. Я пропускаю части, относящиеся к CUDA, потому что я не буду писать код CUDA, но не знаю, нужно ли мне их чем-то заменять.
Итак далеко у меня есть:
Код: Выделить всё
import numpy as np
from numba.core.types.scalars import Number
from numba.np import numpy_support
class Float128(Number):
def __init__(self, *args, **kws):
super().__init__(name='float128')
float128_type = Float128()
numpy_support.FROM_DTYPE[np.dtype(np.float128)] = float128_type
Код: Выделить всё
@intrinsic
def bfloat16_add(typingctx, a, b):
sig = bfloat16_type(bfloat16_type, bfloat16_type)
def codegen(context, builder, sig, args):
i16 = ir.IntType(16)
function_type = ir.FunctionType(i16, [i16, i16])
instruction = ("{.reg.b16 one; "
"mov.b16 one, 0x3f80U; "
"fma.rn.bf16 $0, $1, one, $2;}")
asm = ir.InlineAsm(function_type, instruction, "=h,h,h")
return builder.call(asm, args)
return sig, codegen
Подробнее здесь: https://stackoverflow.com/questions/785 ... m-an-array