This post provides feedback on REP-2008. It is great to see the significantly re-written REP-2008 which makes it easier to understand and review. The decision to separate benchmarking into REP-2014 is also a welcome change. Thanks to the TSC for driving these changes in the updated proposal.
Comment on REP-2008 for Consideration
What this REP provides is an entry point for developers to define their own acceleration kernels, integrate them into ROS 2 applications and if appropriate, command the ROS 2 build system to build such accelerators.
The current name of REP-2008 does not match its stated purpose. The stated purpose is āto define acceleration kernels and integrate them into ROS with existing hardware acceleration standardsā. A more representative name is āREP-2008 - ROS2 acceleration kernels with build integrationā. Can this REP be renamed to accurately reflect its scope and purpose?
For example, the use of OpenCL, CUDA, Vulkan, HLS, Halide, Exo, etc. is beyond the scope of this REP and often attached to the specific accelerator in-use
REP-2008 declares that industry standard interfaces for hardware acceleration are out of scope. This includes open standards, industry standards, and proprietary interfaces which appears to be in conflict with the below statement from the proposal:
A ROS 2 package supports hardware acceleration if it provides support for at least one of the supported hardware acceleration commercial solutions (or accelerators) that comply with this REP.
OpenCV, Vulkan, et. all have implementations providing hardware acceleration. The clause above is saying that using OpenCV or Vulkan would not comply with this REP, and not support hardware acceleration. This language should address building accelerated kernels and linking to those kernels. Broader statements on hardware acceleration are beyond the scope of the REP.
The architecture proposed in this REP is meant to be generic and technology-agnostic
Proof of this REP as vendor-neutral and not biased can be improved with an Altera FPGA implementation. Are there implementations to verify this as an ament_non-AMD producing accelerated kernels?
develop a hardware acceleration kernels for those functions identified before, and optimize the dataflow across Nodes
3.1 accelerate computations at the Node or Component level for each one of those functions identified in 2. as good candidates.
3.2 accelerate inter-Node exchanges and reduce the overhead of the ROS 2 message-passing system across all its abstraction layers.
Data flow optimization between nodes can be provided by REP-2007 and is implemented in RCL with ROS2 Humble. REP-2008 defining this is duplicate work, and adds developer confusion and fragmentation. Can REP-2008 remove this?
In summary we propose:
- Rename to āREP-2008 - ROS2 acceleration kernels with build integrationā to accurately reflect its scope and purpose.
- The āSpecificationā section language needs clarification around building accelerated kernels and linking to those kernels, not a broader statement on hardware acceleration which is out of scope in the REP.
- Add one or more example implementations to verify this as an ament_non-AMD producing accelerated kernels.
- Remove 3.2 from Methodology as this can be provided by REP-2007.
Thanks.