2. AI Engine Kernel Overview - 2. AI Engine Kernel Overview - 2026.1 English - XD098

Vitis Tutorials: Getting Started (XD098)

Document_ID
XD098
Release_Date
2026-07-20
Version
2026.1 English

We will use the below function to implement the matrix multiplication logic in the AI Engine: For more information on MMUL API, please refer to the UG1079

Function Code:

	const int32* __restrict  pA=(int32*) in1->ptr;
	const int32* __restrict pB=(int32*) in2->ptr;
	int32* __restrict pC =(int32*) out_put->ptr;

	aie::vector<int32,MMUL::size_A> A0 = aie::load_v<MMUL::size_A>(pA);
	aie::vector<int32,MMUL::size_B> B0 = aie::load_v<MMUL::size_B>(pB);
    
        MMUL C00;
	C00.mul(A0,B0);
	aie::store_v(pC, C00.template to_vector<int32>())

Graph Code:

Simple_Graph()
	{
		in0 = adf::input_plio::create("DataIn1", adf::plio_32_bits, "../data_srcs/MatrixA.txt");
		in1 = adf::input_plio::create("DataIn2", adf::plio_32_bits, "../data_srcs/MatrixB.txt");
		out_put = adf::output_plio::create("DataOut1", adf::plio_32_bits, "../data_srcs/output.txt");

		k1 = kernel::create(MatMul);
		source(k1) = "../design_srcs/MatMul.cpp";
		runtime<ratio>(k1) = 0.9;
			
		connect(in1.out[0],k1.in[0]);
                connect(in2.out[0],k1.in[1]);
                connect(k1.out[0],out_put.in[0]);

                dimensions(k1.in[0])={16};
                dimensions(k1.in[1])={4};
                dimensions(k1.out[0])={4};

	}