def ptx_lmem_alloc_array(context, builder, sig, args): shape = [ s.literal_value for s in sig.args[0] ] dtype = parse_dtype(sig.args[1]) return _generic_array(context, builder, shape=shape, dtype=dtype, symbol_name='_cudapy_lmem', addrspace=nvvm.ADDRSPACE_LOCAL, can_dynsized=False)
def cuda_local_array_integer(context, builder, sig, args): length = sig.args[0].literal_value dtype = parse_dtype(sig.args[1]) return _generic_array(context, builder, shape=(length,), dtype=dtype, symbol_name='_cudapy_lmem', addrspace=nvvm.ADDRSPACE_LOCAL, can_dynsized=False)
def cuda_shared_array_tuple(context, builder, sig, args): shape = [ s.literal_value for s in sig.args[0] ] dtype = parse_dtype(sig.args[1]) return _generic_array(context, builder, shape=shape, dtype=dtype, symbol_name=_get_unique_smem_id('_cudapy_smem'), addrspace=nvvm.ADDRSPACE_SHARED, can_dynsized=True)
def cuda_shared_array_integer(context, builder, sig, args): length = sig.args[0].literal_value dtype = parse_dtype(sig.args[1]) return _generic_array(context, builder, shape=(length,), dtype=dtype, symbol_name=_get_unique_smem_id('_cudapy_smem'), addrspace=nvvm.ADDRSPACE_SHARED, can_dynsized=True)
def hsail_smem_alloc_array_tuple(context, builder, sig, args): shape = [s.literal_value for s in sig.args[0]] dtype = parse_dtype(sig.args[1]) return _generic_array(context, builder, shape=shape, dtype=dtype, symbol_name='_hsapy_smem', addrspace=target.SPIR_LOCAL_ADDRSPACE)
def hsail_smem_alloc_array_integer(context, builder, sig, args): length = sig.args[0].literal_value dtype = parse_dtype(sig.args[1]) return _generic_array(context, builder, shape=(length, ), dtype=dtype, symbol_name='_hsapy_smem', addrspace=target.SPIR_LOCAL_ADDRSPACE)
def dppy_local_array_tuple(context, builder, sig, args): shape = [s.literal_value for s in sig.args[0]] dtype = parse_dtype(sig.args[1]) return _generic_array( context, builder, shape=shape, dtype=dtype, symbol_name="_dppy_lmem", addrspace=address_space.LOCAL, )
def dppy_local_array_integer(context, builder, sig, args): length = sig.args[0].literal_value dtype = parse_dtype(sig.args[1]) return _generic_array( context, builder, shape=(length, ), dtype=dtype, symbol_name="_dppy_lmem", addrspace=address_space.LOCAL, )
def typer(shape, dtype): # Only integer literals and tuples of integer literals are valid # shapes if isinstance(shape, types.Integer): if not isinstance(shape, types.IntegerLiteral): return None elif isinstance(shape, (types.Tuple, types.UniTuple)): if any([not isinstance(s, types.IntegerLiteral) for s in shape]): return None else: return None ndim = parse_shape(shape) nb_dtype = parse_dtype(dtype) if nb_dtype is not None and ndim is not None: return types.Array(dtype=nb_dtype, ndim=ndim, layout='C')