From 90f57edfac0f702feae164113d0d6e7907043f6f Mon Sep 17 00:00:00 2001 From: dsharletg Date: Wed, 12 Jul 2017 09:21:22 -0700 Subject: [PATCH] Add more comments and error checking. --- .../arm-32-android/libhalide_hexagon_host.so | Bin 79584 -> 79584 bytes .../arm-64-android/libhalide_hexagon_host.so | Bin 22184 -> 22184 bytes .../bin/src/halide_hexagon_remote.h | 2 +- .../bin/src/halide_hexagon_remote_skel.c | 4 ++-- .../bin/src/halide_hexagon_remote_stub.c | 8 ++++---- .../bin/v60/libhalide_hexagon_remote_skel.so | Bin 32504 -> 32536 bytes .../libhalide_hexagon_remote_skel.so | Bin 37888 -> 37888 bytes .../hexagon_remote/halide_hexagon_remote.idl | 2 +- src/runtime/hexagon_remote/halide_remote.cpp | 19 +++++++++++++++--- src/runtime/hexagon_remote/host_shim.cpp | 18 +++++++++-------- src/runtime/hexagon_remote/pack_buffer.h | 5 +++++ 11 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/runtime/hexagon_remote/bin/arm-32-android/libhalide_hexagon_host.so b/src/runtime/hexagon_remote/bin/arm-32-android/libhalide_hexagon_host.so index a16be44a6f4ebd4949d1b09d4ae9bf4151091ffa..fc4653f555acc100fb796bf0a705871d5d05cd3e 100755 GIT binary patch delta 872 zcmXYwT}TvB6vxlmU0Ef^ul(4=uZ;XiAw#33f;B42Bn|UHL)aEK-N-LYA)%Nn?1Pn| zGQo&z4-tW@xw|>Syc7r;)SJ~-`XCu>nv`Z?SgbXjnb`}6-}#^Wzvsf`p5=AZ^15lz z9p$V6a1PyWj|p7>&_Y5Cr{KKsH}w$~3lG!6Xq6sV%!nnz<2@ei7fz&ma8p`JKVrlj zAth@TcZ9{PumMVh_t`6G5uWGFVy)1-cN-gop4>)mvlyWEJV21RAg$$k422m*09K02 zl>l1@0Lm!G3e(Ip${Q%(ItSpQd`_C&pO2Y?g#dLVgB4_@7^G0`p#p&W(vQ3kd8hBd zA@o8fnz0#DAq)y!!X&(iGK|0{=z+J8giTn9<>0`Rcoc1zj{w)mQv}DLmUdsjhQL+b zif?tawAin-oDa@PGqyvhlil?5VtPUAQ$`KIsB5W#I?%bMl`tZZE`)DfR>Q_QkKMt?MepZb9W;-t;M zI({iUy*DIm>vb1VZPXXhZk0YGGlli~abnj$g+E2SL98R*jF3f$lB1@G(|&MB8nRbT zVu!dCiymZR4~MqIQToyP;vk8Vkobzj0UQ?VlLr7>8vTE62p+cN31ue|BRv zVvAgnLOx6u7gO;dPRlWAIABavheKP2I2bY0)X3g+ylcT#@o*_-N2#}siuI+qFG?FD JxwjPU#{c8ae8d0% delta 876 zcmXYwZAepL6vxlmt~hC1S~{1ME;G}Vlr)lxv?yw6I%EWrprTeEe4`goDDETpK}m3O zjT?=?u)_B(?_hl}i2P#V2Mx1?nSL{S2I%^3l${_L1)-f8!G6$RCx44j#gNt*HPGlGAp8Y%&*_QXWVFXqSE@e@s5#1U7sK zM*I!e!2;i49qfpB7N0{KOo9X70OD0Vfq8HRk76nwK?~9yRFeiL!AV&k%n7E#dxE=g zCiYfsMNJJ{yHi&QbrrSMP+4D94FJMaxJ7zURD}G~DVg`lGH-Y<^ImT+%T_qNgN;rT z`#84sLFPRd+|2e#<_8QfSk0_bH_W)tns&@<`r@Ld+ld~kYxpAbH)w7bQJFiT(#s}^ z${biy`*`M4onDstRS9@moD8%eqzevu&d1<_O#SUF%mk zkekC^hV+EWewMSU<;RK8!m(vl^ImppO$(G02Tdc)woZi}12g>88mz>jTpertCG+&s zVBOT>4Mb&-E2P^M4(pjQsKw6_Z~v3|0%9YvoOm}x79vU&#XS*1WTZjjN?Y~nCk{xR zW%)x`EzTLyjg4ZH33H>m=u>OQ1iQ!yh;L2UfiAJcjP<&0hxpEnr^RtI8vW5bagoDr z|DWAhgjnUb$50^}#aRnx;GjPu7CZD&%7UmzXNE`Nv^oC1IJ|GgdGS~lCWI;1b%`Ze Pcpyw&C4X}kmg)ZkzG-{z diff --git a/src/runtime/hexagon_remote/bin/arm-64-android/libhalide_hexagon_host.so b/src/runtime/hexagon_remote/bin/arm-64-android/libhalide_hexagon_host.so index bea4a09f2f043991412e63090553c4894894a194..f396dd4bae01d5d4bf7da10d7bd7e24ed5e73c2e 100755 GIT binary patch delta 133 zcmZ3nmT|>e#tj7;u3Zde#tj7;u9XZ5j58Q`7{4*3Gl(&~VtB{k$;im)#JG&1li>nG0OKJBM#gAH zD@F%~Fh(OrO-4ONF-8W41fUvi25W{8pzIcgyOXzSv`+Tcye40qo0yZskXD+P%#fFu eo63-!pOVUe0Fy6ph;4S&x-8F_x>?ezp9cWsSRsZ0 diff --git a/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote.h b/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote.h index 1f77e7a1f500..a12e03ee91b1 100644 --- a/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote.h +++ b/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote.h @@ -37,7 +37,7 @@ __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_initialize_kernels_ __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_get_symbol_v4)(halide_hexagon_remote_handle_t module_ptr, const char* name, int nameLen, halide_hexagon_remote_handle_t* sym_ptr) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_power_hvx_on)(void) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_power_hvx_off)(void) __QAIC_HEADER_ATTRIBUTE; -__QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_run_v2)(halide_hexagon_remote_handle_t module_ptr, halide_hexagon_remote_handle_t symbol, const halide_hexagon_remote_buffer* input_buffers, int input_buffersLen, halide_hexagon_remote_buffer* output_buffers, int output_buffersLen, int scalar_count, const unsigned char* small, int smallLen) __QAIC_HEADER_ATTRIBUTE; +__QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_run_v2)(halide_hexagon_remote_handle_t module_ptr, halide_hexagon_remote_handle_t symbol, const halide_hexagon_remote_buffer* input_buffers, int input_buffersLen, halide_hexagon_remote_buffer* output_buffers, int output_buffersLen, int scalar_count, const unsigned char* small_input_args, int small_input_argsLen) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_release_kernels_v2)(halide_hexagon_remote_handle_t module_ptr) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_poll_log)(char* log, int logLen, int* read_size) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(halide_hexagon_remote_poll_profiler_state)(int* func, int* threads) __QAIC_HEADER_ATTRIBUTE; diff --git a/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_skel.c b/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_skel.c index a5fedf2d6170..073eeb351505 100644 --- a/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_skel.c +++ b/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_skel.c @@ -425,8 +425,8 @@ static const Parameter parameters[8] = {{SLIM_IFPTR32(0x8,0x10),{{(const uintptr static const Parameter* const parameterArrays[21] = {(&(parameters[5])),(&(parameters[2])),(&(parameters[2])),(&(parameters[5])),(&(parameters[2])),(&(parameters[2])),(&(parameters[5])),(&(parameters[5])),(&(parameters[2])),(&(parameters[2])),(&(parameters[3])),(&(parameters[4])),(&(parameters[5])),(&(parameters[0])),(&(parameters[2])),(&(parameters[0])),(&(parameters[1])),(&(parameters[7])),(&(parameters[7])),(&(parameters[6])),(&(parameters[7]))}; static const Method methods[9] = {{REMOTE_SCALARS_MAKEX(0,0,0x2,0x1,0x0,0x0),0x4,0x4,3,2,(&(parameterArrays[15])),0x4,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x2,0x1,0x0,0x0),0x8,0x4,4,3,(&(parameterArrays[14])),0x4,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x0,0x0,0x0,0x0),0x0,0x0,0,0,0,0x0,0x0},{REMOTE_SCALARS_MAKEX(0,0,255,255,15,15),0x18,0x0,10,6,(&(parameterArrays[8])),0x4,0x1},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x0,0x0,0x0),0x4,0x0,1,1,(&(parameterArrays[1])),0x4,0x0},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x2,0x0,0x0),0x4,0x4,4,2,(&(parameterArrays[19])),0x4,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x0,0x1,0x0,0x0),0x0,0x8,2,2,(&(parameterArrays[17])),0x1,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x0,0x0,0x0),0x4,0x0,1,1,(&(parameterArrays[0])),0x4,0x0},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x0,0x0,0x0),0x20,0x0,8,8,(&(parameterArrays[0])),0x4,0x0}}; static const Method* const methodArrays[10] = {&(methods[0]),&(methods[1]),&(methods[2]),&(methods[2]),&(methods[3]),&(methods[4]),&(methods[5]),&(methods[6]),&(methods[7]),&(methods[8])}; -static const char strings[357] = "initialize_kernels_v3\0busbwUsagePercentage\0set_performance_mode\0poll_profiler_state\0release_kernels_v2\0bwMegabytesPerSec\0set_performance\0output_buffers\0mipsPerThread\0input_buffers\0power_hvx_off\0get_symbol_v4\0scalar_count\0power_hvx_on\0set_latency\0set_bus_bw\0module_ptr\0mipsTotal\0read_size\0set_mips\0poll_log\0threads\0sym_ptr\0symbol\0run_v2\0small\0func\0name\0code\0"; -static const uint16_t methodStrings[35] = {121,288,152,268,246,103,22,234,238,329,257,322,166,137,208,336,194,257,347,314,64,342,306,297,302,278,0,352,257,43,59,84,257,180,221}; +static const char strings[368] = "initialize_kernels_v3\0busbwUsagePercentage\0set_performance_mode\0poll_profiler_state\0release_kernels_v2\0bwMegabytesPerSec\0small_input_args\0set_performance\0output_buffers\0mipsPerThread\0input_buffers\0power_hvx_off\0get_symbol_v4\0scalar_count\0power_hvx_on\0set_latency\0set_bus_bw\0module_ptr\0mipsTotal\0read_size\0set_mips\0poll_log\0threads\0sym_ptr\0symbol\0run_v2\0func\0name\0code\0"; +static const uint16_t methodStrings[35] = {138,305,169,285,263,103,22,251,255,346,274,339,183,154,225,121,211,274,358,331,64,353,323,314,319,295,0,363,274,43,59,84,274,197,238}; static const uint16_t methodStringsArrays[10] = {26,16,34,33,9,31,23,20,29,0}; __QAIC_SLIM_EXPORT const Interface __QAIC_SLIM(halide_hexagon_remote_slim) = {10,&(methodArrays[0]),0,0,&(methodStringsArrays [0]),methodStrings,strings}; #endif //_HALIDE_HEXAGON_REMOTE_SLIM_H diff --git a/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_stub.c b/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_stub.c index 0cb7d241e728..8b3a975cb8d2 100644 --- a/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_stub.c +++ b/src/runtime/hexagon_remote/bin/src/halide_hexagon_remote_stub.c @@ -425,8 +425,8 @@ static const Parameter parameters[8] = {{SLIM_IFPTR32(0x8,0x10),{{(const uintptr static const Parameter* const parameterArrays[21] = {(&(parameters[5])),(&(parameters[2])),(&(parameters[2])),(&(parameters[5])),(&(parameters[2])),(&(parameters[2])),(&(parameters[5])),(&(parameters[5])),(&(parameters[2])),(&(parameters[2])),(&(parameters[3])),(&(parameters[4])),(&(parameters[5])),(&(parameters[0])),(&(parameters[2])),(&(parameters[0])),(&(parameters[1])),(&(parameters[7])),(&(parameters[7])),(&(parameters[6])),(&(parameters[7]))}; static const Method methods[9] = {{REMOTE_SCALARS_MAKEX(0,0,0x2,0x1,0x0,0x0),0x4,0x4,3,2,(&(parameterArrays[15])),0x4,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x2,0x1,0x0,0x0),0x8,0x4,4,3,(&(parameterArrays[14])),0x4,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x0,0x0,0x0,0x0),0x0,0x0,0,0,0,0x0,0x0},{REMOTE_SCALARS_MAKEX(0,0,255,255,15,15),0x18,0x0,10,6,(&(parameterArrays[8])),0x4,0x1},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x0,0x0,0x0),0x4,0x0,1,1,(&(parameterArrays[1])),0x4,0x0},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x2,0x0,0x0),0x4,0x4,4,2,(&(parameterArrays[19])),0x4,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x0,0x1,0x0,0x0),0x0,0x8,2,2,(&(parameterArrays[17])),0x1,0x4},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x0,0x0,0x0),0x4,0x0,1,1,(&(parameterArrays[0])),0x4,0x0},{REMOTE_SCALARS_MAKEX(0,0,0x1,0x0,0x0,0x0),0x20,0x0,8,8,(&(parameterArrays[0])),0x4,0x0}}; static const Method* const methodArrays[10] = {&(methods[0]),&(methods[1]),&(methods[2]),&(methods[2]),&(methods[3]),&(methods[4]),&(methods[5]),&(methods[6]),&(methods[7]),&(methods[8])}; -static const char strings[357] = "initialize_kernels_v3\0busbwUsagePercentage\0set_performance_mode\0poll_profiler_state\0release_kernels_v2\0bwMegabytesPerSec\0set_performance\0output_buffers\0mipsPerThread\0input_buffers\0power_hvx_off\0get_symbol_v4\0scalar_count\0power_hvx_on\0set_latency\0set_bus_bw\0module_ptr\0mipsTotal\0read_size\0set_mips\0poll_log\0threads\0sym_ptr\0symbol\0run_v2\0small\0func\0name\0code\0"; -static const uint16_t methodStrings[35] = {121,288,152,268,246,103,22,234,238,329,257,322,166,137,208,336,194,257,347,314,64,342,306,297,302,278,0,352,257,43,59,84,257,180,221}; +static const char strings[368] = "initialize_kernels_v3\0busbwUsagePercentage\0set_performance_mode\0poll_profiler_state\0release_kernels_v2\0bwMegabytesPerSec\0small_input_args\0set_performance\0output_buffers\0mipsPerThread\0input_buffers\0power_hvx_off\0get_symbol_v4\0scalar_count\0power_hvx_on\0set_latency\0set_bus_bw\0module_ptr\0mipsTotal\0read_size\0set_mips\0poll_log\0threads\0sym_ptr\0symbol\0run_v2\0func\0name\0code\0"; +static const uint16_t methodStrings[35] = {138,305,169,285,263,103,22,251,255,346,274,339,183,154,225,121,211,274,358,331,64,353,323,314,319,295,0,363,274,43,59,84,274,197,238}; static const uint16_t methodStringsArrays[10] = {26,16,34,33,9,31,23,20,29,0}; __QAIC_SLIM_EXPORT const Interface __QAIC_SLIM(halide_hexagon_remote_slim) = {10,&(methodArrays[0]),0,0,&(methodStringsArrays [0]),methodStrings,strings}; #endif //_HALIDE_HEXAGON_REMOTE_SLIM_H @@ -714,9 +714,9 @@ static __inline int _stub_method_3(remote_handle _handle, uint32_t _mid, uint32_ _allocator_deinit(_al); return _nErr; } -__QAIC_STUB_EXPORT int __QAIC_STUB(halide_hexagon_remote_run_v2)(halide_hexagon_remote_handle_t module_ptr, halide_hexagon_remote_handle_t symbol, const halide_hexagon_remote_buffer* input_buffers, int input_buffersLen, halide_hexagon_remote_buffer* output_buffers, int output_buffersLen, int scalar_count, const unsigned char* small, int smallLen) __QAIC_STUB_ATTRIBUTE { +__QAIC_STUB_EXPORT int __QAIC_STUB(halide_hexagon_remote_run_v2)(halide_hexagon_remote_handle_t module_ptr, halide_hexagon_remote_handle_t symbol, const halide_hexagon_remote_buffer* input_buffers, int input_buffersLen, halide_hexagon_remote_buffer* output_buffers, int output_buffersLen, int scalar_count, const unsigned char* small_input_args, int small_input_argsLen) __QAIC_STUB_ATTRIBUTE { uint32_t _mid = 4; - return _stub_method_3(_halide_hexagon_remote_handle(), _mid, (uint32_t*)&module_ptr, (uint32_t*)&symbol, (void**)&input_buffers, (uint32_t*)&input_buffersLen, (void**)&output_buffers, (uint32_t*)&output_buffersLen, (uint32_t*)&scalar_count, (char**)&small, (uint32_t*)&smallLen); + return _stub_method_3(_halide_hexagon_remote_handle(), _mid, (uint32_t*)&module_ptr, (uint32_t*)&symbol, (void**)&input_buffers, (uint32_t*)&input_buffersLen, (void**)&output_buffers, (uint32_t*)&output_buffersLen, (uint32_t*)&scalar_count, (char**)&small_input_args, (uint32_t*)&small_input_argsLen); } static __inline int _stub_method_4(remote_handle _handle, uint32_t _mid, uint32_t _in0[1]) { remote_arg _pra[1]; diff --git a/src/runtime/hexagon_remote/bin/v60/libhalide_hexagon_remote_skel.so b/src/runtime/hexagon_remote/bin/v60/libhalide_hexagon_remote_skel.so index 2b3d2a1760094474945ae58830c865b5335c92d3..d4030b6e510d03d8780220baf8d707c5e5828710 100755 GIT binary patch delta 8677 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 LjEWA0RImRAp!+X; delta 9035 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 diff --git a/src/runtime/hexagon_remote/bin/v60/signed_by_debug/libhalide_hexagon_remote_skel.so b/src/runtime/hexagon_remote/bin/v60/signed_by_debug/libhalide_hexagon_remote_skel.so index 0824f3896db5dcf76c10b575be804adb4ccfe7da..24aea14073c2d0acbf29dca3006ebc659ec8014e 100644 GIT binary patch delta 7031 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 Sb_=#uPo%kohQR7J!G8l input_buffers, rout sequence output_buffers, - in long scalar_count, in buffer small); + in long scalar_count, in buffer small_input_args); // Routine to clean up a module on the remote side. long release_kernels_v2(in handle_t module_ptr); diff --git a/src/runtime/hexagon_remote/halide_remote.cpp b/src/runtime/hexagon_remote/halide_remote.cpp index 4e222c66ec45..f2fb293c9c47 100644 --- a/src/runtime/hexagon_remote/halide_remote.cpp +++ b/src/runtime/hexagon_remote/halide_remote.cpp @@ -316,7 +316,8 @@ int halide_hexagon_remote_get_symbol_v4(handle_t module_ptr, const char* name, i int halide_hexagon_remote_run_v2(handle_t module_ptr, handle_t function, const buffer *input_buffersPtrs, int input_buffersLen, buffer *output_buffersPtrs, int output_buffersLen, - int scalar_count, const unsigned char *small, int smallLen) { + int scalar_count, + const unsigned char *small_input_args, int small_input_argsLen) { // Get a pointer to the argv version of the pipeline. pipeline_argv_t pipeline = reinterpret_cast(function); @@ -332,6 +333,8 @@ int halide_hexagon_remote_run_v2(handle_t module_ptr, handle_t function, void **args = (void **)__builtin_alloca((input_buffersLen + scalar_count + output_buffersLen) * sizeof(void *)); buffer_t *buffers = (buffer_t *)__builtin_alloca((input_buffersLen + output_buffersLen) * sizeof(buffer_t)); + const unsigned char *small_input_args_end = small_input_args + small_input_argsLen; + void **next_arg = &args[0]; buffer_t *next_buffer_t = &buffers[0]; // Input buffers come first. @@ -340,7 +343,12 @@ int halide_hexagon_remote_run_v2(handle_t module_ptr, handle_t function, // This buffer is passed directly. next_buffer_t->host = input_buffersPtrs[i].data; } else { - next_buffer_t->host = const_cast(read_buffer(small)); + next_buffer_t->host = const_cast(read_buffer(small_input_args)); + if (small_input_args > small_input_args_end) { + log_printf("Input buffer %d read past the end of small_input_args [%p, %p)\n", + i, small_input_args - small_input_args_end); + return halide_error_code_access_out_of_bounds; + } } *next_arg = next_buffer_t; } @@ -352,7 +360,12 @@ int halide_hexagon_remote_run_v2(handle_t module_ptr, handle_t function, } // Input scalars are last. for (int i = 0; i < scalar_count; i++, next_arg++) { - *next_arg = const_cast(read_buffer(small)); + *next_arg = const_cast(read_buffer(small_input_args)); + if (small_input_args > small_input_args_end) { + log_printf("Input scalar %d read past the end of small_input_args by %d bytes\n", + i, small_input_args - small_input_args_end); + return halide_error_code_access_out_of_bounds; + } } // Prior to running the pipeline, power HVX on (if it was not already on). diff --git a/src/runtime/hexagon_remote/host_shim.cpp b/src/runtime/hexagon_remote/host_shim.cpp index be0e60fb7440..b9133bfa23ca 100644 --- a/src/runtime/hexagon_remote/host_shim.cpp +++ b/src/runtime/hexagon_remote/host_shim.cpp @@ -16,27 +16,29 @@ int halide_hexagon_remote_run(handle_t module_ptr, handle_t function, const int buffer_alignment = 128; const int scalar_alignment = 4; - int small_size = 0; + int small_input_args_size = 0; - // Add up the number and size of the small input buffers. + // Add up the number and size of the small input buffers. Buffers + // are considered small if they are less than + // min_input_buffer_size bytes. const int min_input_buffer_size = 4096; for (int i = 0; i < input_buffersLen; i++) { if (input_buffersPtrs[i].dataLen < min_input_buffer_size) { - small_size += packed_buffer_size(input_buffersPtrs[i].dataLen, buffer_alignment); + small_input_args_size += packed_buffer_size(input_buffersPtrs[i].dataLen, buffer_alignment); } } // Add up the number and size of the scalars. for (int i = 0; i < input_scalarsLen; i++) { - small_size += packed_buffer_size(input_scalarsPtrs[i].dataLen, scalar_alignment); + small_input_args_size += packed_buffer_size(input_scalarsPtrs[i].dataLen, scalar_alignment); } // Allocate a buffer to hold the packed small buffers and scalars. - unsigned char *small = (unsigned char *)__builtin_alloca(small_size + buffer_alignment); - small = (unsigned char *)(((uintptr_t)small + buffer_alignment - 1) & ~(buffer_alignment - 1)); + unsigned char *small_input_args = (unsigned char *)__builtin_alloca(small_input_args_size + buffer_alignment); + small_input_args = (unsigned char *)(((uintptr_t)small_input_args + buffer_alignment - 1) & ~(buffer_alignment - 1)); // Pack up the small buffers. - unsigned char *write = small; + unsigned char *write = small_input_args; for (int i = 0; i < input_buffersLen; i++) { if (input_buffersPtrs[i].dataLen < min_input_buffer_size) { write_buffer(write, input_buffersPtrs[i].data, input_buffersPtrs[i].dataLen, buffer_alignment); @@ -56,7 +58,7 @@ int halide_hexagon_remote_run(handle_t module_ptr, handle_t function, return halide_hexagon_remote_run_v2(module_ptr, function, input_buffersPtrs, input_buffersLen, output_buffersPtrs, output_buffersLen, - input_scalarsLen, small, small_size); + input_scalarsLen, small_input_args, small_input_args_size); } } // extern "C" diff --git a/src/runtime/hexagon_remote/pack_buffer.h b/src/runtime/hexagon_remote/pack_buffer.h index 9eedc3be9235..5b65636c9bdd 100644 --- a/src/runtime/hexagon_remote/pack_buffer.h +++ b/src/runtime/hexagon_remote/pack_buffer.h @@ -3,6 +3,9 @@ #include +// This header implements a simple buffer packing protocol for packing +// and unpacking scalars and buffers into a larger buffer. + template void write_scalar(unsigned char *&write, const T& value) { *(T *)write = value; @@ -34,6 +37,8 @@ inline uint32_t aligned_offset(const unsigned char *start, uint32_t offset, uint return x - (uintptr_t)start; } +// Buffers are stored with two offsets, indicating the start and end +// of the buffer from the start. inline void write_buffer(unsigned char *&write, const unsigned char *buffer, uint32_t size, uint32_t alignment) { unsigned char *start = write; uint32_t header_size = sizeof(uint32_t) * 2;