xmos-ai-tools 1.2.1.dev20__py3-none-win_amd64.whl → 1.3.2.dev180__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. xmos_ai_tools/__init__.py +7 -7
  2. xmos_ai_tools/io_server/__init__.py +151 -151
  3. xmos_ai_tools/runtime/buildfiles/aitoolslib.cmake +13 -13
  4. xmos_ai_tools/runtime/buildfiles/aitoolslib.make +8 -8
  5. xmos_ai_tools/runtime/include/flash_server.h +2 -3
  6. xmos_ai_tools/runtime/include/lib_nn/api/add_int16_transform.h +2 -1
  7. xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16_transform.h +2 -1
  8. xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16_transform.h +4 -2
  9. xmos_ai_tools/runtime/include/lib_nn/api/nn_api.h +2 -0
  10. xmos_ai_tools/runtime/include/lib_nn/api/nn_layers.h +11 -51
  11. xmos_ai_tools/runtime/include/lib_nn/api/nn_op_utils.h +3 -0
  12. xmos_ai_tools/runtime/include/lib_nn/api/quadratic_approximation.h +1 -0
  13. xmos_ai_tools/runtime/include/lib_nn/api/version.h +2 -2
  14. xmos_ai_tools/runtime/include/lib_nn/api/vpu_memmove_word_aligned.h +15 -0
  15. xmos_ai_tools/runtime/include/lib_nn/api/vpu_memset_256.h +55 -0
  16. xmos_ai_tools/runtime/include/lib_tflite_micro/api/fast_flash.h +6 -0
  17. xmos_ai_tools/runtime/include/lib_tflite_micro/api/inference_engine.h +13 -13
  18. xmos_ai_tools/runtime/include/lib_tflite_micro/api/load_weights.h +64 -0
  19. xmos_ai_tools/runtime/include/lib_tflite_micro/api/version.h +1 -1
  20. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_config.h +1 -1
  21. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_custom_options.h +2 -2
  22. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_error_reporter.h +3 -3
  23. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_interpreter.h +8 -8
  24. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_ops.h +21 -7
  25. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_profiler.h +4 -4
  26. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_utils.h +5 -5
  27. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud.h +3 -3
  28. xmos_ai_tools/runtime/include/tensorflow/lite/array.h +4 -4
  29. xmos_ai_tools/runtime/include/tensorflow/lite/context_util.h +2 -2
  30. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/error_reporter.h +3 -3
  31. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/flatbuffer_conversions.h +2 -2
  32. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/tensor_utils.h +2 -2
  33. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/c_api_types.h +3 -3
  34. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/common.h +17 -17
  35. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/common.h +2 -2
  36. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/cppmath.h +2 -2
  37. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/max.h +2 -2
  38. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/min.h +2 -2
  39. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor.h +2 -2
  40. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor_utils.h +2 -2
  41. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/quantization_util.h +2 -2
  42. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add.h +3 -3
  43. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add_n.h +2 -2
  44. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/arg_min_max.h +2 -2
  45. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_matmul.h +2 -2
  46. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_to_space_nd.h +2 -2
  47. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/binary_function.h +2 -2
  48. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_args.h +2 -2
  49. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_to.h +2 -2
  50. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/ceil.h +2 -2
  51. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/comparisons.h +2 -2
  52. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/concatenation.h +3 -3
  53. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/conv.h +2 -2
  54. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/cumsum.h +2 -2
  55. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depth_to_space.h +3 -3
  56. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_float.h +1 -1
  57. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_uint8.h +1 -1
  58. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/dequantize.h +4 -4
  59. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/div.h +2 -2
  60. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/elu.h +2 -2
  61. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/exp.h +2 -2
  62. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fill.h +2 -2
  63. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor.h +2 -2
  64. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_div.h +2 -2
  65. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_mod.h +2 -2
  66. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fully_connected.h +2 -2
  67. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/hard_swish.h +2 -2
  68. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/add.h +2 -2
  69. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/conv.h +2 -2
  70. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/depthwise_conv.h +2 -2
  71. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/fully_connected.h +2 -2
  72. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/l2normalization.h +2 -2
  73. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/logistic.h +2 -2
  74. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mul.h +2 -2
  75. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/pooling.h +2 -2
  76. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/tanh.h +2 -2
  77. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/transpose_conv.h +2 -2
  78. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/l2normalization.h +4 -4
  79. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/leaky_relu.h +3 -3
  80. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/log_softmax.h +2 -2
  81. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/logistic.h +2 -2
  82. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/lstm_cell.h +5 -5
  83. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/maximum_minimum.h +2 -2
  84. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/mul.h +2 -2
  85. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/neg.h +2 -2
  86. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pad.h +8 -8
  87. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pooling.h +2 -2
  88. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.h +2 -2
  89. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils_impl.h +2 -2
  90. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/prelu.h +2 -2
  91. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/process_broadcast_shapes.h +3 -3
  92. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/quantize.h +4 -4
  93. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/reduce.h +3 -3
  94. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/requantize.h +2 -2
  95. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_bilinear.h +4 -4
  96. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_nearest_neighbor.h +3 -3
  97. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/round.h +2 -2
  98. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/select.h +2 -2
  99. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/slice.h +5 -5
  100. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/softmax.h +2 -2
  101. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_batch_nd.h +2 -2
  102. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_depth.h +3 -3
  103. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/strided_slice.h +6 -6
  104. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/sub.h +2 -2
  105. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/tanh.h +2 -2
  106. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose.h +2 -2
  107. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose_conv.h +2 -2
  108. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/runtime_shape.h +2 -2
  109. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/strided_slice_logic.h +9 -9
  110. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/tensor_ctypes.h +2 -2
  111. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/types.h +2 -2
  112. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/kernel_util.h +2 -2
  113. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/padding.h +2 -2
  114. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h +2 -2
  115. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h +2 -2
  116. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h +2 -2
  117. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/recording_single_arena_buffer_allocator.h +2 -2
  118. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/single_arena_buffer_allocator.h +2 -2
  119. xmos_ai_tools/runtime/include/tensorflow/lite/micro/benchmarks/micro_benchmark.h +7 -7
  120. xmos_ai_tools/runtime/include/tensorflow/lite/micro/fake_micro_context.h +2 -2
  121. xmos_ai_tools/runtime/include/tensorflow/lite/micro/flatbuffer_utils.h +2 -2
  122. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activation_utils.h +2 -2
  123. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activations.h +6 -2
  124. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/add.h +2 -2
  125. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_function_specializations.h +2 -2
  126. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_interface.h +2 -2
  127. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_slicers.h +2 -2
  128. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_tf_utils.h +4 -4
  129. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buf_mgr.h +2 -2
  130. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buffers.h +2 -2
  131. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/types.h +6 -6
  132. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer.h +2 -2
  133. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv.h +2 -2
  134. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv_test.h +2 -2
  135. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/depthwise_conv.h +2 -2
  136. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/dequantize.h +3 -3
  137. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ethosu.h +2 -2
  138. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/fully_connected.h +2 -2
  139. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/hard_swish.h +2 -2
  140. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_runner.h +2 -2
  141. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_util.h +2 -2
  142. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/leaky_relu.h +2 -2
  143. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logical.h +2 -2
  144. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logistic.h +2 -2
  145. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval.h +48 -48
  146. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval_test.h +57 -57
  147. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_shared.h +2 -2
  148. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_ops.h +2 -2
  149. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_tensor_utils.h +2 -2
  150. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/mul.h +2 -2
  151. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pad.h +2 -2
  152. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pooling.h +15 -15
  153. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/prelu.h +2 -2
  154. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/quantize.h +3 -3
  155. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reduce.h +2 -2
  156. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reshape.h +2 -2
  157. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/softmax.h +2 -2
  158. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/strided_slice.h +2 -2
  159. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/sub.h +2 -2
  160. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/svdf.h +2 -2
  161. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/conv_test_data.h +2 -2
  162. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/lstm_test_data.h +7 -7
  163. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.h +2 -2
  164. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/hifimini/fixedpoint_utils.h +2 -2
  165. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_eval.h +2 -2
  166. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_shared.h +2 -2
  167. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_add.h +2 -2
  168. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_conv.h +2 -2
  169. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_depthwise_conv.h +2 -2
  170. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_fully_connected.h +2 -2
  171. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pad.h +2 -2
  172. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pooling.h +2 -2
  173. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reduce.h +2 -2
  174. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reshape.h +2 -2
  175. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_softmax.h +2 -2
  176. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_svdf.h +2 -2
  177. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_helpers.h +3 -3
  178. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/greedy_memory_planner.h +2 -2
  179. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/linear_memory_planner.h +2 -2
  180. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/memory_plan_struct.h +2 -2
  181. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/micro_memory_planner.h +2 -2
  182. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/non_persistent_buffer_planner_shim.h +2 -2
  183. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocation_info.h +3 -3
  184. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocator.h +3 -3
  185. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_arena_constants.h +2 -2
  186. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_context.h +3 -3
  187. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_graph.h +4 -4
  188. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter.h +2 -2
  189. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_context.h +2 -2
  190. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_graph.h +4 -4
  191. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_log.h +4 -4
  192. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_mutable_op_resolver.h +50 -50
  193. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_op_resolver.h +2 -2
  194. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler.h +2 -2
  195. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler_interface.h +2 -2
  196. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_resource_variable.h +2 -2
  197. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_time.h +2 -2
  198. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_utils.h +2 -2
  199. xmos_ai_tools/runtime/include/tensorflow/lite/micro/mock_micro_graph.h +2 -2
  200. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size.h +2 -2
  201. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size_wrapper.h +2 -2
  202. xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_allocator.h +2 -2
  203. xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_interpreter.h +2 -2
  204. xmos_ai_tools/runtime/include/tensorflow/lite/micro/system_setup.h +2 -2
  205. xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helper_custom_ops.h +2 -2
  206. xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helpers.h +6 -6
  207. xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/micro_test.h +4 -4
  208. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/flatbuffer_conversions_bridge.h +2 -2
  209. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h +2 -2
  210. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/log_utils.h +2 -2
  211. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/metrics.h +3 -3
  212. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/op_resolver.h +3 -3
  213. xmos_ai_tools/runtime/include/tensorflow/lite/portable_type_to_tflitetype.h +2 -2
  214. xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_generated.h +2731 -2731
  215. xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_utils.h +2 -2
  216. xmos_ai_tools/runtime/lib/host_xtflitemicro.lib +0 -0
  217. xmos_ai_tools/runtime/lib/libxtflitemicro.a +0 -0
  218. xmos_ai_tools/xformer/__init__.py +64 -60
  219. xmos_ai_tools/xformer/flash.py +190 -190
  220. xmos_ai_tools/xinterpreters/__init__.py +1 -1
  221. xmos_ai_tools/xinterpreters/exceptions.py +38 -38
  222. xmos_ai_tools/xinterpreters/host_interpreter.py +651 -652
  223. xmos_ai_tools/xinterpreters/libs/windows/xtflm_python.dll +0 -0
  224. {xmos_ai_tools-1.2.1.dev20.data → xmos_ai_tools-1.3.2.dev180.data}/data/Scripts/xcore-opt.exe +0 -0
  225. {xmos_ai_tools-1.2.1.dev20.dist-info → xmos_ai_tools-1.3.2.dev180.dist-info}/METADATA +5 -7
  226. {xmos_ai_tools-1.2.1.dev20.dist-info → xmos_ai_tools-1.3.2.dev180.dist-info}/RECORD +228 -226
  227. {xmos_ai_tools-1.2.1.dev20.dist-info → xmos_ai_tools-1.3.2.dev180.dist-info}/WHEEL +1 -1
  228. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_common.h +0 -19
  229. {xmos_ai_tools-1.2.1.dev20.dist-info → xmos_ai_tools-1.3.2.dev180.dist-info}/top_level.txt +0 -0
xmos_ai_tools/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
- from importlib.metadata import version, PackageNotFoundError
2
-
3
- try:
4
- __version__ = version(__name__)
5
- except PackageNotFoundError:
6
- # package is not installed
7
- pass
1
+ from importlib.metadata import version, PackageNotFoundError
2
+
3
+ try:
4
+ __version__ = version(__name__)
5
+ except PackageNotFoundError:
6
+ # package is not installed
7
+ pass
@@ -1,151 +1,151 @@
1
- # Copyright (c) 2020, XMOS Ltd, All rights reserved
2
-
3
- import usb
4
- from typing import Tuple
5
- import numpy as np
6
-
7
- IOSERVER_INVOKE = int(0x01)
8
- IOSERVER_TENSOR_SEND_OUTPUT = int(0x02)
9
- IOSERVER_TENSOR_RECV_INPUT = int(0x03)
10
- IOSERVER_RESET = int(0x07)
11
- IOSERVER_EXIT = int(0x08)
12
-
13
-
14
- class IOServerError(Exception):
15
- """Error from device"""
16
-
17
- pass
18
-
19
-
20
- class IOError(IOServerError):
21
- """IO Error from device"""
22
-
23
- pass
24
-
25
-
26
- def handle_usb_error(func):
27
- def wrapper(*args, **kwargs):
28
- try:
29
- return func(*args, **kwargs)
30
- except usb.core.USBError as e:
31
- print(f"USB error {e}")
32
- if e.backend_error_code == usb.backend.libusb1.LIBUSB_ERROR_PIPE:
33
- raise IOError()
34
- else:
35
- raise IOServerError(f"Wow...") from e
36
-
37
- return wrapper
38
-
39
-
40
- class IOServer:
41
- def __init__(self, output_details: Tuple[dict, ...] = None, timeout=5000):
42
- self.__out_ep = None
43
- self.__in_ep = None
44
- self._dev = None
45
- self._output_details = output_details
46
- self._timeout = timeout
47
- self._max_block_size = 512 # TODO read from (usb) device?
48
- super().__init__()
49
-
50
- def bytes_to_arr(self, data_bytes, tensor_num):
51
- if self._output_details:
52
- d = self._output_details[tensor_num]
53
- s = d["shape"]
54
- return np.frombuffer(data_bytes, dtype=d["dtype"])[: np.prod(s)].reshape(s)
55
- return np.frombuffer(data_bytes, dtype=np.uint8)
56
-
57
- def write_input_tensor(self, raw_img, tensor_num=0, model_num=0):
58
- self._download_data(
59
- IOSERVER_TENSOR_RECV_INPUT,
60
- raw_img,
61
- tensor_num=tensor_num,
62
- model_num=model_num,
63
- )
64
-
65
- def read_output_tensor(self, tensor_num=0, model_num=0):
66
- # Retrieve result from device
67
- data_read = self._upload_data(
68
- IOSERVER_TENSOR_SEND_OUTPUT,
69
- model_num=model_num,
70
- tensor_num=tensor_num,
71
- )
72
- assert type(data_read) is bytearray
73
- return self.bytes_to_arr(data_read, tensor_num)
74
-
75
- def close(self):
76
- if self._dev is not None:
77
- self._dev.write(self._out_ep, bytes([IOSERVER_EXIT, 0, 0]), 1000)
78
- usb.util.dispose_resources(self._dev)
79
- self._dev = None
80
-
81
- @handle_usb_error
82
- def _download_data(self, cmd, data_bytes, tensor_num=0, model_num=0):
83
- # TODO rm this extra CMD packet
84
- self._out_ep.write(bytes([cmd, model_num, tensor_num]))
85
- self._out_ep.write(data_bytes, 1000)
86
- if (len(data_bytes) % self._max_block_size) == 0:
87
- self._out_ep.write(bytearray(), 1000)
88
-
89
- @handle_usb_error
90
- def _upload_data(self, cmd, tensor_num=0, model_num=0):
91
- read_data = bytearray()
92
- self._out_ep.write(bytes([cmd, model_num, tensor_num]), self._timeout)
93
- buff = usb.util.create_buffer(self._max_block_size)
94
- read_len = self._dev.read(self._in_ep, buff, 10000)
95
- read_data.extend(buff[:read_len])
96
- while read_len == self._max_block_size:
97
- read_len = self._dev.read(self._in_ep, buff, 10000)
98
- read_data.extend(buff[:read_len])
99
-
100
- return read_data
101
-
102
- def _clear_error(self):
103
- self._dev.clear_halt(self._out_ep)
104
- self._dev.clear_halt(self._in_ep)
105
-
106
- def connect(self):
107
- self._dev = None
108
- while self._dev is None:
109
- # TODO - more checks that we have the right device..
110
- self._dev = usb.core.find(idVendor=0x20B1, product="xAISRV")
111
-
112
- # set the active configuration. With no arguments, the first
113
- # configuration will be the active one
114
- self._dev.set_configuration()
115
-
116
- # get an endpoint instance
117
- cfg = self._dev.get_active_configuration()
118
- intf = cfg[(0, 0)]
119
- self._out_ep = usb.util.find_descriptor(
120
- intf,
121
- # match the first OUT endpoint
122
- custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress)
123
- == usb.util.ENDPOINT_OUT,
124
- )
125
-
126
- self._in_ep = usb.util.find_descriptor(
127
- intf,
128
- # match the first IN endpoint
129
- custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress)
130
- == usb.util.ENDPOINT_IN,
131
- )
132
-
133
- assert self._out_ep is not None
134
- assert self._in_ep is not None
135
-
136
- print("Connected to XCORE_IO_SERVER via USB")
137
-
138
- # TODO move to super()
139
- def start_inference(self):
140
- # Send cmd
141
- self._out_ep.write(bytes([IOSERVER_INVOKE, 0, 0]), 1000)
142
-
143
- # Send out a 0 length packet
144
- self._out_ep.write(bytes([]), 1000)
145
-
146
- def reset(self):
147
- # Send cmd
148
- self._out_ep.write(bytes([IOSERVER_RESET, 0, 0]), 1000)
149
-
150
- # Send out a 0 length packet
151
- self._out_ep.write(bytes([]), 1000)
1
+ # Copyright (c) 2020, XMOS Ltd, All rights reserved
2
+
3
+ import usb
4
+ from typing import Tuple
5
+ import numpy as np
6
+
7
+ IOSERVER_INVOKE = int(0x01)
8
+ IOSERVER_TENSOR_SEND_OUTPUT = int(0x02)
9
+ IOSERVER_TENSOR_RECV_INPUT = int(0x03)
10
+ IOSERVER_RESET = int(0x07)
11
+ IOSERVER_EXIT = int(0x08)
12
+
13
+
14
+ class IOServerError(Exception):
15
+ """Error from device"""
16
+
17
+ pass
18
+
19
+
20
+ class IOError(IOServerError):
21
+ """IO Error from device"""
22
+
23
+ pass
24
+
25
+
26
+ def handle_usb_error(func):
27
+ def wrapper(*args, **kwargs):
28
+ try:
29
+ return func(*args, **kwargs)
30
+ except usb.core.USBError as e:
31
+ print(f"USB error {e}")
32
+ if e.backend_error_code == usb.backend.libusb1.LIBUSB_ERROR_PIPE:
33
+ raise IOError()
34
+ else:
35
+ raise IOServerError(f"Wow...") from e
36
+
37
+ return wrapper
38
+
39
+
40
+ class IOServer:
41
+ def __init__(self, output_details: Tuple[dict, ...] = None, timeout=5000):
42
+ self.__out_ep = None
43
+ self.__in_ep = None
44
+ self._dev = None
45
+ self._output_details = output_details
46
+ self._timeout = timeout
47
+ self._max_block_size = 512 # TODO read from (usb) device?
48
+ super().__init__()
49
+
50
+ def bytes_to_arr(self, data_bytes, tensor_num):
51
+ if self._output_details:
52
+ d = self._output_details[tensor_num]
53
+ s = d["shape"]
54
+ return np.frombuffer(data_bytes, dtype=d["dtype"])[: np.prod(s)].reshape(s)
55
+ return np.frombuffer(data_bytes, dtype=np.uint8)
56
+
57
+ def write_input_tensor(self, raw_img, tensor_num=0, model_num=0):
58
+ self._download_data(
59
+ IOSERVER_TENSOR_RECV_INPUT,
60
+ raw_img,
61
+ tensor_num=tensor_num,
62
+ model_num=model_num,
63
+ )
64
+
65
+ def read_output_tensor(self, tensor_num=0, model_num=0):
66
+ # Retrieve result from device
67
+ data_read = self._upload_data(
68
+ IOSERVER_TENSOR_SEND_OUTPUT,
69
+ model_num=model_num,
70
+ tensor_num=tensor_num,
71
+ )
72
+ assert type(data_read) is bytearray
73
+ return self.bytes_to_arr(data_read, tensor_num)
74
+
75
+ def close(self):
76
+ if self._dev is not None:
77
+ self._dev.write(self._out_ep, bytes([IOSERVER_EXIT, 0, 0]), 1000)
78
+ usb.util.dispose_resources(self._dev)
79
+ self._dev = None
80
+
81
+ @handle_usb_error
82
+ def _download_data(self, cmd, data_bytes, tensor_num=0, model_num=0):
83
+ # TODO rm this extra CMD packet
84
+ self._out_ep.write(bytes([cmd, model_num, tensor_num]))
85
+ self._out_ep.write(data_bytes, 1000)
86
+ if (len(data_bytes) % self._max_block_size) == 0:
87
+ self._out_ep.write(bytearray(), 1000)
88
+
89
+ @handle_usb_error
90
+ def _upload_data(self, cmd, tensor_num=0, model_num=0):
91
+ read_data = bytearray()
92
+ self._out_ep.write(bytes([cmd, model_num, tensor_num]), self._timeout)
93
+ buff = usb.util.create_buffer(self._max_block_size)
94
+ read_len = self._dev.read(self._in_ep, buff, 10000)
95
+ read_data.extend(buff[:read_len])
96
+ while read_len == self._max_block_size:
97
+ read_len = self._dev.read(self._in_ep, buff, 10000)
98
+ read_data.extend(buff[:read_len])
99
+
100
+ return read_data
101
+
102
+ def _clear_error(self):
103
+ self._dev.clear_halt(self._out_ep)
104
+ self._dev.clear_halt(self._in_ep)
105
+
106
+ def connect(self):
107
+ self._dev = None
108
+ while self._dev is None:
109
+ # TODO - more checks that we have the right device..
110
+ self._dev = usb.core.find(idVendor=0x20B1, product="xAISRV")
111
+
112
+ # set the active configuration. With no arguments, the first
113
+ # configuration will be the active one
114
+ self._dev.set_configuration()
115
+
116
+ # get an endpoint instance
117
+ cfg = self._dev.get_active_configuration()
118
+ intf = cfg[(0, 0)]
119
+ self._out_ep = usb.util.find_descriptor(
120
+ intf,
121
+ # match the first OUT endpoint
122
+ custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress)
123
+ == usb.util.ENDPOINT_OUT,
124
+ )
125
+
126
+ self._in_ep = usb.util.find_descriptor(
127
+ intf,
128
+ # match the first IN endpoint
129
+ custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress)
130
+ == usb.util.ENDPOINT_IN,
131
+ )
132
+
133
+ assert self._out_ep is not None
134
+ assert self._in_ep is not None
135
+
136
+ print("Connected to XCORE_IO_SERVER via USB")
137
+
138
+ # TODO move to super()
139
+ def start_inference(self):
140
+ # Send cmd
141
+ self._out_ep.write(bytes([IOSERVER_INVOKE, 0, 0]), 1000)
142
+
143
+ # Send out a 0 length packet
144
+ self._out_ep.write(bytes([]), 1000)
145
+
146
+ def reset(self):
147
+ # Send cmd
148
+ self._out_ep.write(bytes([IOSERVER_RESET, 0, 0]), 1000)
149
+
150
+ # Send out a 0 length packet
151
+ self._out_ep.write(bytes([]), 1000)
@@ -1,13 +1,13 @@
1
- set(XMOS_AITOOLSLIB_DEFINITIONS
2
- "TF_LITE_STATIC_MEMORY"
3
- "TF_LITE_STRIP_ERROR_STRINGS"
4
- "XCORE"
5
- "NO_INTERPRETER"
6
- )
7
-
8
- if("${APP_BUILD_ARCH}" STREQUAL xs3a OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS3A)
9
- set(XMOS_AITOOLSLIB_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/../lib/libxtflitemicro.a")
10
- else()
11
- set(XMOS_AITOOLSLIB_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/../lib/libhost_xtflitemicro.a")
12
- endif()
13
- set(XMOS_AITOOLSLIB_INCLUDES "${CMAKE_CURRENT_LIST_DIR}/../include")
1
+ set(XMOS_AITOOLSLIB_DEFINITIONS
2
+ "TF_LITE_STATIC_MEMORY"
3
+ "TF_LITE_STRIP_ERROR_STRINGS"
4
+ "XCORE"
5
+ "NO_INTERPRETER"
6
+ )
7
+
8
+ if("${APP_BUILD_ARCH}" STREQUAL xs3a OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS3A)
9
+ set(XMOS_AITOOLSLIB_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/../lib/libxtflitemicro.a")
10
+ else()
11
+ set(XMOS_AITOOLSLIB_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/../lib/libhost_xtflitemicro.a")
12
+ endif()
13
+ set(XMOS_AITOOLSLIB_INCLUDES "${CMAKE_CURRENT_LIST_DIR}/../include")
@@ -1,8 +1,8 @@
1
- XMOS_AITOOLSLIB_DEFINITIONS = \
2
- -DTF_LITE_STATIC_MEMORY \
3
- -DTF_LITE_STRIP_ERROR_STRINGS \
4
- -DXCORE \
5
- -DNO_INTERPRETER
6
-
7
- XMOS_AITOOLSLIB_LIBRARIES = $(XMOS_AITOOLSLIB_PATH)/lib/libxtflitemicro.a
8
- XMOS_AITOOLSLIB_INCLUDES = -I$(XMOS_AITOOLSLIB_PATH)/include
1
+ XMOS_AITOOLSLIB_DEFINITIONS = \
2
+ -DTF_LITE_STATIC_MEMORY \
3
+ -DTF_LITE_STRIP_ERROR_STRINGS \
4
+ -DXCORE \
5
+ -DNO_INTERPRETER
6
+
7
+ XMOS_AITOOLSLIB_LIBRARIES = $(XMOS_AITOOLSLIB_PATH)/lib/libxtflitemicro.a
8
+ XMOS_AITOOLSLIB_INCLUDES = -I$(XMOS_AITOOLSLIB_PATH)/include
@@ -26,9 +26,8 @@ typedef struct flash {
26
26
  typedef enum flash_command {
27
27
  FLASH_READ_PARAMETERS =
28
28
  0, ///< Read a set of parameters. // TODO: share with lib_tflite_micro
29
- FLASH_READ_MODEL = 1, ///< Read a whole model.
30
- FLASH_READ_OPERATORS =
31
- 2, ///< Read the binary for an operator - future extension
29
+ FLASH_READ_PARAMETERS_ASYNC = 1, ///< Read parameters asynchronously.
30
+ FLASH_READ_SYNCHRONIZE = 2, ///< Complete async read.
32
31
  FLASH_READ_XIP =
33
32
  3, ///< Read code to execute-in-place throught L2 cache - future extension
34
33
  FLASH_SERVER_QUIT = 4,
@@ -29,7 +29,8 @@
29
29
  C_API int add_int16_tensor_blob(void *output,
30
30
  float input1_scaler,
31
31
  float input2_scaler,
32
- float output_scaler);
32
+ float output_scaler,
33
+ char *err_msg);
33
34
 
34
35
  /**
35
36
  * Macro that calculates the number of int16_t that should be allocated to
@@ -21,7 +21,8 @@
21
21
  * @returns 1 on success, 0 on fail (fallback required)
22
22
  */
23
23
  C_API int dequantize_int16_tensor_blob(void *output,
24
- float input_scaler);
24
+ float input_scaler,
25
+ char *err_msg);
25
26
 
26
27
  /**
27
28
  * Macro that calculates the number of int16_t that should be allocated to
@@ -25,7 +25,8 @@
25
25
  */
26
26
  C_API int requantize_int16_tensor_blob(void *output,
27
27
  float input_scaler,
28
- float output_scaler);
28
+ float output_scaler,
29
+ char *err_msg);
29
30
  /**
30
31
  * Macro that calculates the number of int16_t that should be allocated to
31
32
  * store the output of ``quantise_int16_tensor_blob()``
@@ -56,7 +57,8 @@ C_API int requantize_int16_tensor_blob(void *output,
56
57
  C_API int multiply_int16_tensor_blob(void *output,
57
58
  float input1_scaler,
58
59
  float input2_scaler,
59
- float output_scaler);
60
+ float output_scaler,
61
+ char *err_msg);
60
62
 
61
63
  /**
62
64
  * Macro that calculates the number of int16_t that should be allocated to
@@ -8,6 +8,8 @@
8
8
 
9
9
  #define C_API EXTERN_C
10
10
 
11
+ #define ERR_MSG_DESCRIPTOR_FAIL_BYTES() (128)
12
+
11
13
  #ifndef __has_builtin
12
14
  #define __has_builtin(x) 0
13
15
  #endif
@@ -109,50 +109,6 @@ typedef struct padding_sizes_t {
109
109
  int32_t right;
110
110
  } padding_sizes_t;
111
111
 
112
- /**
113
- * @brief Execute @oper{pad_prepare} function.
114
- *
115
- * `plan` points to the output vector @tensor{y} with length @math{N}.
116
- *
117
- * `p` struct describing the padding to be applied to the input tensor.
118
- *
119
- * `x` parameters describing the input tensor to be padded.
120
- *
121
- * `bytes_per_pixel` the bytes per pixel for tensor x.
122
- *
123
- * @param plan [out] The output vector @tensor{y}
124
- * @param p [in] The input vector @tensor{x}
125
- * @param x [in] Look-up table @tensor{T}
126
- * @param bytes_per_pixel [in] Length @math{N} of input and output vectors
127
- */
128
- C_API void pad_prepare(nn_pad_plan_t *plan, const padding_sizes_t *p,
129
- const nn_image_params_t *x,
130
- const unsigned bytes_per_pixel);
131
-
132
- /**
133
- * @brief Execute @oper{pad_run} job.
134
- *
135
- * See @oper_ref{pad_run} for more details about the @oper{requantize_16_to_8}
136
- * operator.
137
- *
138
- * `Y` points to the output vector @tensor{y}.
139
- *
140
- * `X` points to the input vector @tensor{x}.
141
- *
142
- * `plan` points to the (initialized) plan.
143
- *
144
- * @requires_word_alignment{Y,X}
145
- *
146
- * @param y [out] The output vector @tensor{y}
147
- * @param x [in] The input vector @tensor{x}
148
- * @param plan [in] The prameters describing how to pad.
149
- */
150
- void pad_run(char *y, char *x, const nn_pad_plan_t *p, uint32_t pad_value);
151
-
152
- void pad_ref(char *y, char *x, const padding_sizes_t *p,
153
- const nn_image_params_t *xp, const unsigned bytes_per_pixel,
154
- uint32_t pad_value);
155
-
156
112
  /**
157
113
  * Func to calculate n_3
158
114
  */
@@ -336,12 +292,16 @@ void softmax_generate_exp_lut(int zero_point, float scale, float *lut);
336
292
  void softmax_ref(int8_t *Y, const int8_t *X, const float zero_point,
337
293
  const float scale, const int length);
338
294
 
339
- void slice_memcpy(int8_t *dst, int8_t *src, int32_t *in_offsets,
340
- int32_t *out_offsets, int32_t *begin, int32_t *end,
341
- void (*memcpy_func)(void *, void *, size_t));
295
+ void softmax_single(int8_t *Y, const int8_t *X, const float *lut,
296
+ const int offset);
297
+
298
+ void mean_int8(const int8_t *input, int8_t *output, const int start_dim_size,
299
+ const int mean_dim_size, const int end_dim_size,
300
+ const float in_zero_point, const float out_zero_point,
301
+ const float scale_mul);
302
+
303
+ void mean_int16(const int16_t *input, int16_t *output, const int start_dim_size,
304
+ const int mean_dim_size, const int end_dim_size,
305
+ const float scale_mul);
342
306
 
343
- void slice_memcpy_get_params(int *begin_dst, int *end_dst, int *in_offsets,
344
- int *out_offsets, int *shape_dst, const int *begin,
345
- const int *size, const int *shape,
346
- const int dtype_size, const int rank);
347
307
  #endif // LAYERS_H_
@@ -8,6 +8,9 @@
8
8
 
9
9
  #include "xs3_vpu.h"
10
10
 
11
+ C_API int calculateAlignedThreadSplit(int tc, int split_size, int split_start[], int split_end[]);
12
+ C_API int calculateThreadSplit(int tc, int split_size, int split_start[], int split_end[], int alignment);
13
+
11
14
  #ifdef __XC__
12
15
  extern "C" {
13
16
  #endif
@@ -78,5 +78,6 @@ C_API float approximation_function_tanh(float x);
78
78
  C_API float approximation_function_logistics(float x);
79
79
  C_API float approximation_function_elu(float x);
80
80
  C_API float approximation_function_relu(float x);
81
+ C_API float approximation_function_relu6(float x);
81
82
 
82
83
  #endif
@@ -1,11 +1,11 @@
1
- // Copyright (c) 2020, XMOS Ltd, All rights reserved
1
+ // Copyright (c) 2024, XMOS Ltd, All rights reserved
2
2
  #ifndef LIB_NN_VERSION_H_
3
3
  #define LIB_NN_VERSION_H_
4
4
 
5
5
  namespace lib_nn {
6
6
 
7
7
  static const unsigned major_version = 0;
8
- static const unsigned minor_version = 3;
8
+ static const unsigned minor_version = 4;
9
9
  static const unsigned patch_version = 0;
10
10
 
11
11
  } // namespace lib_nn
@@ -0,0 +1,15 @@
1
+ #ifndef _vpu_memmove_word_aligned_h_
2
+ #define _vpu_memmove_word_aligned_h_
3
+
4
+ /**
5
+ * Function that copies a block of memory. Both source and destination
6
+ * address must be word aligned. Any number of bytes can be copied. There
7
+ * may be an overlap between the destination and source.
8
+ *
9
+ * @param dst Destination address, must be word aligned.
10
+ * @param src Source address, must be word aligned.
11
+ * @param byte_count Number of bytes to copy - may be zero
12
+ */
13
+ void vpu_memmove_word_aligned(void * dst, const void * src, unsigned int byte_count);
14
+
15
+ #endif
@@ -0,0 +1,55 @@
1
+ #include <stdint.h>
2
+
3
+ #ifndef _vpu_memset_256_h_
4
+ #define _vpu_memset_256_h_
5
+
6
+ /**
7
+ * Function that replicates a vector. The source address must be word
8
+ * aligned, the destination address is assumed to be aligned with the
9
+ * replication pattern in the source. Any number of bytes can be copied.
10
+ * There should not be an overlap between the destination and source.
11
+ *
12
+ * It is assumed that the source address contains 32 replicated bytes (if
13
+ * the destination address is byte aligned), or that it contains 16
14
+ * replicated shorts (if the destination address is 16-bit aligned), or
15
+ * that it contains 8 replicated ints.
16
+ *
17
+ * broadcast_32_to_256() and BROADCAST_8_TO_32() cane be used to
18
+ * create the source vector
19
+ *
20
+ * @param dst Destination address
21
+ * @param src Source address, must be word aligned.
22
+ * @param byte_count Number of bytes to copy - may be zero
23
+ */
24
+ void vpu_memset_256(void *dst, const void *src, unsigned int byte_count);
25
+
26
+ /**
27
+ * Function that replicates an int over a vector. The vector must be
28
+ * aligned on an 8-byte boundary. In order to replicate a byte or short over
29
+ * a vector, combine this with a call to BROADCAST_8_TO_32() or
30
+ * BROADCAST_16_TO_32(). Declare the vector as a uint64_t x[] in order to
31
+ * guarantee 8-byte alignement.
32
+ *
33
+ * @param dst Destination address, must be 8-byte aligned
34
+ * @param from Value to be replicated
35
+ */
36
+ void broadcast_32_to_256(void *dst, uint32_t from);
37
+
38
+ /**
39
+ * Macro that replicates a byte over an int.
40
+ * Use with broadcast_32_to_256() in order to replicate a byte over a vector
41
+ */
42
+ #define BROADCAST_8_TO_32(f) (((uint8_t)f) * 0x01010101)
43
+
44
+ /**
45
+ * Macro that replicates a short over an int
46
+ * Use with broadcast_32_to_256() in order to replicate a short over a vector
47
+ */
48
+ #define BROADCAST_16_TO_32(f) (((uint16_t)f) * 0x00010001)
49
+
50
+ /**
51
+ * Macro that replicates a byte over a short
52
+ */
53
+ #define BROADCAST_8_TO_16(f) (((uint8_t)f) * 0x00000101)
54
+
55
+ #endif
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include <quadflash.h>
5
5
 
6
+ #ifdef __XC__
6
7
  /** Fast flash library.
7
8
  * Before calling any of the functions in here, lib_quad_flash must be initialised as normal by using
8
9
  * fl_connectToDevice(qspi, flash_spec, n_flash_spec).
@@ -44,4 +45,9 @@ int fast_flash_init(fl_QSPIPorts &qspi);
44
45
  */
45
46
  void fast_flash_read(fl_QSPIPorts &qspi, unsigned addr, unsigned word_count, unsigned read_data[], chanend ?c_data_out);
46
47
 
48
+ #else
49
+ int fast_flash_init(fl_QSPIPorts *qspi);
50
+ void fast_flash_read(fl_QSPIPorts *qspi, unsigned addr, unsigned word_count, unsigned read_data[], chanend_t c_data_out);
51
+ #endif
52
+
47
53
  #endif