Right now the workflow for tuning Kokkos with Apollo is a bit screwy. I download and install Apollo, then I build a connector on top of it (kokkos/kokkos-tools#89), that just links in Apollo. With this PR, I add the connector code to Apollo itself. Critically, if users don't interface with Kokkos, this does absolutely nothing, this code functionally doesn't exist. Also, no dependency on Kokkos is induced, the headers you need for this kind of support are completely separable from Kokkos (these are the headers in connectors/kokkos/include/impl). What's neat here is that as Apollo develops, we don't need to tell people to check out and maintain two repos, they just build Apollo, set KOKKOS_PROFILE_LIBRARY, and be done with it.
I'm going to do some code cleanup, but is this methodology kosher? Or should we maintain that separation?
Right now the workflow for tuning Kokkos with Apollo is a bit screwy. I download and install Apollo, then I build a connector on top of it (kokkos/kokkos-tools#89), that just links in Apollo. With this PR, I add the connector code to Apollo itself. Critically, if users don't interface with Kokkos, this does absolutely nothing, this code functionally doesn't exist. Also, no dependency on Kokkos is induced, the headers you need for this kind of support are completely separable from Kokkos (these are the headers in
connectors/kokkos/include/impl
). What's neat here is that as Apollo develops, we don't need to tell people to check out and maintain two repos, they just build Apollo, setKOKKOS_PROFILE_LIBRARY
, and be done with it.I'm going to do some code cleanup, but is this methodology kosher? Or should we maintain that separation?