Clean up kernel compilation
This MR reorganizes kernels and is a long-overdue cleanup. The changes are all internal:
-
Kernels are now allowed to specify dependencies on utility functions as part of the
kernel_idstruct. So e.g.oneway_kernel_id::get_deps()[num]returns astd::vector<std::string>&of dependencies of the kernelnum. These dependencies are found in thekernels/deps/directory for each backend. They are primarily reduces. -
Type-specific functions (e.g.
coot_absdiff()and others) that are used in kernels are now stored in thekernels/defs/directory and are included when the kernel requires it. So, e.g., the twowayequ_array_abs_prekernel with typesfloatandu16will havef_defs.cu(orf_defs.cl) andu16_defs.cu(oru16_defs.cl) included during kernel compilation. -
Macros defined during kernel compilation are cleaned up.
-
The
kernel_src.hppfile for both the CUDA and OpenCL backends is now cleaned up significantly.