Replies: 6 comments
-
@Kirpich30000 could you comment on the question? |
Beta Was this translation helpful? Give feedback.
-
There is no C++ implementation - kernel were specifically designed for high efficiency and implemented from scratch in assembly. |
Beta Was this translation helpful? Give feedback.
-
To add your own kernel you will need to add a solver and register it in solver.cpp. Peek any solver and look at the code to see how it is implemented. Some solvers use workspace, others - don't. Some solvers invokes only a single kernel, while the other could invoke multiple kernels to perform the operation. |
Beta Was this translation helpful? Give feedback.
-
@junliume I recommend removing |
Beta Was this translation helpful? Give feedback.
-
Also to register the solver for the specific convolution (or not conv) calls it supports like these: https://github.com/ROCmSoftwarePlatform/MIOpen/blob/d19c2575ca918f6b63a022f004d591795afcd85d/src/mlo_dir_conv.cpp#L110 |
Beta Was this translation helpful? Give feedback.
-
Intro info about solvers: #866 |
Beta Was this translation helpful? Give feedback.
-
I would like to know how MIOpen implements the Winograd convolution algorithm, but I only found the convolution kernel implemented in assembly language in the project source code, which is difficult to read and understand. I guess these assembly kernels should be converted from C++ kernels, but I can't find where the related C++ kernel implementations are, could you tell me where these C++ kernel implementation files are?
How can I add my own kernel to MIOpen? Is there a manual for this?
Beta Was this translation helpful? Give feedback.
All reactions