Как зарегистрировать np.float128 как допустимый тип числа, чтобы я мог суммировать массив?Python

Программы на Python
Anonymous
Как зарегистрировать np.float128 как допустимый тип числа, чтобы я мог суммировать массив?

Сообщение Anonymous »

Я хочу написать числовую функцию, которая принимает сумму массива np.float128. В моей настройке они имеют 80-битную точность, но если их будет проще преобразовать в настоящие float128, я тоже буду этому рад. Моя цель — иметь возможность быстро и без потери точности суммировать массив np.float128, в конечном итоге возвращая np.float128 в мой код Python.
Для этого я пытаюсь скопируйте модель с 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
На что мне следует заменить bfloat16_add для моего float128? Я думаю, мне нужно определить сложение для numba....?

Подробнее здесь: https://stackoverflow.com/questions/785 ... m-an-array

Вернуться в «Python»