-
Notifications
You must be signed in to change notification settings - Fork 744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SYCL][FPGA] Rename [[intel::disable_loop_pipelining]] attribute function metadata #11372
Conversation
…data Metadata emitted from front-end when an FPGA IPA kernel has the property pipelined<N> is a function metadata of the form !disable_loop_pipelining !X, !X = !{i32 0|1}. This is confusing as the user means to pipeline the kernel/not pipeline the kernel as opposed to enabling/disabling the pipelining of all loops in the kernel/function, and this name does not reflect that. This patch renames the functin metadata to !disable_kernel_pipelining. This was likely caused by a miscommunication with the related loop metadata that's currently being attached when the loop attribute [[intel::disable_loop_pipelining]] is used: {!"llvm.loop.intel.pipelining.enable", i32 0} This patch also changes the loop metadata to !llvm.loop.intel.pipelining.disable and invert the argument to reflet the correct attribute behavior and match with function metadata change. Signed-off-by: Soumi Manna <soumi.manna@intel.com>
Signed-off-by: Soumi Manna <soumi.manna@intel.com>
indicates that the kernel should be pipelined or not. Cannot be used on the | ||
same loop or function, or in conjunction with ``speculated_iterations``, | ||
``max_concurrency``, ``initiation_interval``, ``ivdep``, | ||
``max_reinvocation_delay`` or ``enable_loop_pipelining`` attribute. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @bowenxue-intel for reviews. We added support for "enable_loop_pipeling" on #9263
@smanna12 Thanks for the response, I also just noticed that there is the enable_loop_pipelining attribute. In this case, I am double-checking whether it makes sense for the loop metadata emitted when [[intel::disable_loop_pipelining]] is used to be changed, or if it can remain as is, which would result in less work on the SPIR-V and our middle-end. Other than that, LGTM |
Signed-off-by: Soumi Manna <soumi.manna@intel.com>
Signed-off-by: Soumi Manna <soumi.manna@intel.com>
Signed-off-by: Soumi Manna <soumi.manna@intel.com>
@bowenxue-intel, could you please review updated patch? Thank you |
Thank you @bowenxue-intel for reviews! Related SPIRV PR: KhronosGroup/SPIRV-LLVM-Translator#2171 @intel/dpcpp-cfe-reviewers, please review. Thank you |
…or loops and functions (#2171) Refactor SPIRVWriter to accept !disable_kernel_pipelining instead of !disable_loop_pipelining for function metadata, and !llvm.loop.intel.pipelining.disable instead of !llvm.loop.intel.pipelining.enable for loop metadata. Refactor SPIRVReader to emit !disable_kernel_pipelining instead of !disable_loop_pipelining for function metadata, and !llvm.loop.intel.pipelining.disable instead of !llvm.loop.intel.pipelining.enable for loop metadata. Relevant/Related intel/llvm PR: intel/llvm#11372
@elizabethandrews / @premanandrao could you please review? Thank you |
…or loops and functions (#2171) Refactor SPIRVWriter to accept !disable_kernel_pipelining instead of !disable_loop_pipelining for function metadata, and !llvm.loop.intel.pipelining.disable instead of !llvm.loop.intel.pipelining.enable for loop metadata. Refactor SPIRVReader to emit !disable_kernel_pipelining instead of !disable_loop_pipelining for function metadata, and !llvm.loop.intel.pipelining.disable instead of !llvm.loop.intel.pipelining.enable for loop metadata. Relevant/Related intel/llvm PR: #11372 Original commit: KhronosGroup/SPIRV-LLVM-Translator@e68ddf7
Signed-off-by: Soumi Manna <soumi.manna@intel.com>
Latest commit 624a580 was just a small update in document. @intel/llvm-gatekeepers, This PR is ready to be merged. Thank you |
Metadata emitted from front-end when an FPGA IPA kernel has the property pipelined is a function metadata of the form !disable_loop_pipelining !X, !X = !{i32 0|1}.
This is confusing as the user means to pipeline the kernel/not pipeline the kernel as opposed to enabling/disabling the pipelining of all loops in the kernel/function, and this name does not reflect that. This patch renames the function metadata to "!pipeline_kernel", and to flip the argument. We believe it may convey information better about what to do with the kernel when the property is absent.
This was likely caused by a miscommunication with the related loop metadata that's currently being attached when the loop attribute [[intel::disable_loop_pipelining]] is used: {!"llvm.loop.intel.pipelining.enable", i32 0}