# RUN: SUPPORTLIB=%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext %PYTHON %s | FileCheck %s import numpy as np import os import sys _SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) sys.path.append(_SCRIPT_PATH) from tools import mlir_pytaco_api as pt compressed = pt.compressed passed = 0 all_types = [pt.complex64, pt.complex128] for t in all_types: i, j = pt.get_index_vars(2) A = pt.tensor([2, 3], dtype=t) B = pt.tensor([2, 3], dtype=t) C = pt.tensor([2, 3], compressed, dtype=t) A.insert([0, 1], 10 + 20j) A.insert([1, 2], 40 + 0.5j) B.insert([0, 0], 20) B.insert([1, 2], 30 + 15j) C[i, j] = A[i, j] + B[i, j] indices, values = C.get_coordinates_and_values() passed += isinstance(values[0], t.value) passed += np.array_equal(indices, [[0, 0], [0, 1], [1, 2]]) passed += np.allclose(values, [20, 10 + 20j, 70 + 15.5j]) # CHECK: Number of passed: 6 print("Number of passed:", passed)
# format) and store it as a compressed sparse fiber tensor. We use a small # tensor for the purpose of testing. To run the program using the data from # the real application, please download the data from: # http://frostt.io/tensors/nell-2/ B = pt.read(os.path.join(_SCRIPT_PATH, "data/nell-2.tns"), csf) # These two lines have been modified from the original program to use static # data to support result comparison. C = pt.from_array(np.full((B.shape[1], 25), 1, dtype=np.float64)) D = pt.from_array(np.full((B.shape[2], 25), 2, dtype=np.float64)) # Declare the result to be a dense matrix. A = pt.tensor([B.shape[0], 25], rm) # Declare index vars. i, j, k, l = pt.get_index_vars(4) # Define the MTTKRP computation. A[i, j] = B[i, k, l] * D[l, j] * C[k, j] ########################################################################## # Perform the MTTKRP computation and write the result to file. with tempfile.TemporaryDirectory() as test_dir: golden_file = os.path.join(_SCRIPT_PATH, "data/gold_A.tns") out_file = os.path.join(test_dir, "A.tns") pt.write(out_file, A) # # CHECK: Compare result True # print(f"Compare result {utils.compare_sparse_tns(golden_file, out_file)}")
import sys import tempfile _SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) sys.path.append(_SCRIPT_PATH) from tools import mlir_pytaco_api as pt from tools import testing_utils as utils # Define the CSR format. csr = pt.format([pt.dense, pt.compressed], [0, 1]) # Read matrices A and B from file, infer size of output matrix C. A = pt.read(os.path.join(_SCRIPT_PATH, "data/A.mtx"), csr) B = pt.read(os.path.join(_SCRIPT_PATH, "data/B.mtx"), csr) C = pt.tensor([A.shape[0], B.shape[1]], csr) # Define the kernel. i, j, k = pt.get_index_vars(3) C[i, j] = A[i, k] * B[k, j] # Force evaluation of the kernel by writing out C. with tempfile.TemporaryDirectory() as test_dir: golden_file = os.path.join(_SCRIPT_PATH, "data/gold_C.tns") out_file = os.path.join(test_dir, "C.tns") pt.write(out_file, C) # # CHECK: Compare result True # print(f"Compare result {utils.compare_sparse_tns(golden_file, out_file)}")
# RUN: SUPPORTLIB=%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext %PYTHON %s | FileCheck %s import filecmp import numpy as np import os import sys import tempfile _SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) sys.path.append(_SCRIPT_PATH) from tools import mlir_pytaco_api as pt from tools import testing_utils as utils i, j, k, l, m = pt.get_index_vars(5) # Set up scalar. alpha = pt.tensor(42.0) # Set up some sparse tensors with different dim annotations and ordering. S = pt.tensor([8, 8, 8], pt.format([pt.compressed, pt.dense, pt.compressed], [1, 0, 2])) X = pt.tensor([8, 8, 8], pt.format([pt.compressed, pt.compressed, pt.compressed], [1, 0, 2])) S.insert([0, 0, 0], 2.0) S.insert([1, 1, 1], 3.0) S.insert([4, 4, 4], 4.0) S.insert([7, 7, 7], 5.0) X[i, j, k] = alpha[0] * S[i, j, k]