| 24 | }; |
| 25 | |
| 26 | HalideCudaTargetTrait::FeatureSet HalideCudaTargetTrait::features( |
| 27 | CompNode comp_node) const { |
| 28 | FeatureSet set; |
| 29 | set.set(Target::CUDA); |
| 30 | auto&& prop = CompNodeEnv::from_comp_node(comp_node).cuda_env().device_prop; |
| 31 | auto in = [ver = prop.major * 10 + prop.minor](int low, int high) { |
| 32 | return ver >= low && ver < high; |
| 33 | }; |
| 34 | if (in(30, 32)) { |
| 35 | set.set(Target::CUDACapability30); |
| 36 | } else if (in(32, 35)) { |
| 37 | set.set(Target::CUDACapability32); |
| 38 | } else if (in(35, 40)) { |
| 39 | set.set(Target::CUDACapability35); |
| 40 | } else if (in(50, 61)) { |
| 41 | set.set(Target::CUDACapability50); |
| 42 | } else if (in(61, 70)) { |
| 43 | set.set(Target::CUDACapability61); |
| 44 | } else { |
| 45 | mgb_log_warn( |
| 46 | "cuda capability(%d.%d) not support for Halide, using compute " |
| 47 | "capability 6.1", |
| 48 | prop.major, prop.minor); |
| 49 | set.set(Target::CUDACapability61); |
| 50 | } |
| 51 | return set; |
| 52 | } |
| 53 | |
| 54 | HalideCudaTargetTrait::FunctionHandle HalideCudaTargetTrait::compile_and_load( |
| 55 | CompNode comp_node, Halide::Target target, const HalideExecutable& hl_exec) { |
no test coverage detected