Make sure all ci-enabled impls are in the output
Summary:
In the CI, we will check that all registered impls are available in the output, unless they are specified as`ci=False`.
We add the `ci=` flag because right now we don't have lazy imports to import optional backend modules while we want different behavior between flags `enabled` and `ci`.
For `enabled` flag, we want "best-effort". If a module is not available (e.g. flash attention 3 is not available on A100), we should check if it is not available, then skip it automatically instead of error out for the best user experience.
For `ci` flag, we want to make sure that things are already setup in fbcode CI, and if flash attention 3 is not available, it is a red flag and we have to report it in the unit test.
Reviewed By: bertmaher
Differential Revision: D64473609
fbshipit-source-id: 320255f73942705038d50aac1f14d318b62a4765