IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).

Mojo function

from_numpy

def from_numpy[mut: Bool, //, dtype: DType, rank: Int, origin: Origin[mut=mut]](ref[origin] array: PythonObject) -> TileTensor[dtype, Layout[TypeList[#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)](), TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].static_value))], PrevV))]()], origin]

Borrows an N-D C-contiguous NumPy array as a TileTensor.

The tensor aliases the NumPy array's buffer; no bytes are copied. Its origin is tied to array, so the compiler keeps array alive for as long as the tensor is used.

This calls into CPython, so it is a host-side entry point.

Example:

from layout import from_numpy
from std.python import Python

var np = Python.import_module("numpy")
var array = np.arange(6, dtype="float64").reshape(2, 3)
var tensor = from_numpy[.float64, 2](array)
var value = tensor[1, 2]

Parameters:

  • mut (Bool): The mutability of the borrow, inferred from array.
  • dtype (DType): The expected element dtype of the array.
  • rank (Int): The expected number of dimensions.
  • origin (Origin[mut=mut]): The origin of the borrow, inferred from array.

Args:

  • array (PythonObject): A C-contiguous NumPy ndarray of rank dimensions whose dtype matches dtype.

Returns:

TileTensor[dtype, Layout[TypeList[#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)](), TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].static_value))], PrevV))]()], origin]: A row-major TileTensor viewing the array's buffer.

Raises:

If array.ndim is not rank, is not C-contiguous, has a dtype that does not match dtype, or is not writable when borrowed mutably.

Was this page helpful?