Merge branch 'kernels' of https://github.com/hansungk/vortex-private into kernels

This commit is contained in:
Richard Yan
2024-04-15 10:22:19 -07:00

View File

@@ -58,9 +58,9 @@ static void parse_args(int argc, char **argv) {
void cleanup() { void cleanup() {
if (device) { if (device) {
vx_mem_free(device, kernel_arg.addr_a); // vx_mem_free(device, kernel_arg.addr_a);
vx_mem_free(device, kernel_arg.addr_b); // vx_mem_free(device, kernel_arg.addr_b);
vx_mem_free(device, kernel_arg.addr_c); // vx_mem_free(device, kernel_arg.addr_c);
vx_dev_close(device); vx_dev_close(device);
} }
} }
@@ -108,6 +108,17 @@ int run_test(const kernel_arg_t& kernel_arg,
std::cout << "download destination buffer" << std::endl; std::cout << "download destination buffer" << std::endl;
RT_CHECK(vx_copy_from_dev(device, staging_buf.data(), kernel_arg.addr_c, buf_size)); RT_CHECK(vx_copy_from_dev(device, staging_buf.data(), kernel_arg.addr_c, buf_size));
std::cout << "downloading result C matrix from device, device mem address="
<< std::hex << kernel_arg.addr_c << ", size=" << std::dec
<< buf_size << " bytes\n";
std::ofstream file("output.c.bin", std::ios::binary | std::ios::out);
if (!file) {
std::cerr << "error: failed to open output.c.bin for writing\n";
exit(EXIT_FAILURE);
}
file.write(reinterpret_cast<char *>(staging_buf.data()), buf_size);
file.close();
// verify result // verify result
std::cout << "verify result" << std::endl; std::cout << "verify result" << std::endl;
{ {
@@ -166,9 +177,12 @@ int main(int argc, char *argv[]) {
// allocate device memory // allocate device memory
std::cout << "allocate device memory" << std::endl; std::cout << "allocate device memory" << std::endl;
RT_CHECK(vx_mem_alloc(device, src_a_buf_size, VX_MEM_TYPE_GLOBAL, &kernel_arg.addr_a)); // RT_CHECK(vx_mem_alloc(device, src_a_buf_size, VX_MEM_TYPE_GLOBAL, &kernel_arg.addr_a));
RT_CHECK(vx_mem_alloc(device, src_b_buf_size, VX_MEM_TYPE_GLOBAL, &kernel_arg.addr_b)); // RT_CHECK(vx_mem_alloc(device, src_b_buf_size, VX_MEM_TYPE_GLOBAL, &kernel_arg.addr_b));
RT_CHECK(vx_mem_alloc(device, dst_buf_size, VX_MEM_TYPE_GLOBAL, &kernel_arg.addr_c)); // RT_CHECK(vx_mem_alloc(device, dst_buf_size, VX_MEM_TYPE_GLOBAL, &kernel_arg.addr_c));
kernel_arg.addr_a = 0x20000UL;
kernel_arg.addr_b = 0x28000UL;
kernel_arg.addr_c = 0xc0000000UL;
kernel_arg.dim_m = dim_m; kernel_arg.dim_m = dim_m;
kernel_arg.dim_n = dim_n; kernel_arg.dim_n = dim_n;
@@ -222,7 +236,7 @@ int main(int argc, char *argv[]) {
<< src_a_buf_size << " bytes\n"; << src_a_buf_size << " bytes\n";
std::ofstream file("input.a.bin", std::ios::binary | std::ios::out); std::ofstream file("input.a.bin", std::ios::binary | std::ios::out);
if (!file) { if (!file) {
std::cerr << "error: failed to open args.bin for writing\n"; std::cerr << "error: failed to open input.a.bin for writing\n";
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
file.write(reinterpret_cast<char *>(buf_ptr), src_a_buf_size); file.write(reinterpret_cast<char *>(buf_ptr), src_a_buf_size);
@@ -239,7 +253,7 @@ int main(int argc, char *argv[]) {
<< src_b_buf_size << " bytes\n"; << src_b_buf_size << " bytes\n";
std::ofstream file("input.b.bin", std::ios::binary | std::ios::out); std::ofstream file("input.b.bin", std::ios::binary | std::ios::out);
if (!file) { if (!file) {
std::cerr << "error: failed to open args.bin for writing\n"; std::cerr << "error: failed to open input.b.bin for writing\n";
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
file.write(reinterpret_cast<char *>(buf_ptr), src_b_buf_size); file.write(reinterpret_cast<char *>(buf_ptr), src_b_buf_size);