| 16 | "v" V(CUDNN_MAJOR) "." V(CUDNN_MINOR) "." V(CUDNN_PATCHLEVEL) |
| 17 | |
| 18 | TEST_F(CUDA, DILATED_CONVOLUTION_FORWARD) { |
| 19 | auto args = get_dilated_args(); |
| 20 | Checker<ConvolutionForward> checker(handle_cuda()); |
| 21 | #if CUDNN_VERSION >= 7500 |
| 22 | checker.set_before_exec_callback( |
| 23 | AlgoChecker<ConvolutionForward>(ExecutionPolicyAlgoName{ |
| 24 | "DEFAULT", |
| 25 | {{ConvBiasForward::algo_name<ConvBiasForward::DefaultParam>( |
| 26 | "CUDNN:Convolution:CUDNN_CONVOLUTION_FWD_ALGO_" |
| 27 | "IMPLICIT_" |
| 28 | "PRECOMP_" |
| 29 | "GEMM" CUDNN_VERSION_STRING, |
| 30 | {}) |
| 31 | .c_str(), |
| 32 | {}}}})); |
| 33 | printf("cudnn version >= 7.5, use cudnn impl for dilated convolution\n"); |
| 34 | #else |
| 35 | checker.set_before_exec_callback( |
| 36 | AlgoChecker<ConvolutionForward>(ExecutionPolicyAlgoName{ |
| 37 | "DEFAULT", |
| 38 | {{ConvBiasForward::algo_name<ConvBiasForward::MatmulParam>( |
| 39 | "MATMUL", {}) |
| 40 | .c_str(), |
| 41 | {{"CUBLAS", {}}}}}})); |
| 42 | #endif |
| 43 | NormalRNG default_rng; |
| 44 | for (auto&& arg : args) { |
| 45 | float scale = 1.0f / sqrt(arg.filter[1] * arg.filter[2] * arg.filter[3]); |
| 46 | UniformFloatRNG rng(scale, 2 * scale); |
| 47 | checker.set_dtype(0, dtype::Float32()) |
| 48 | .set_dtype(1, dtype::Float32()) |
| 49 | .set_rng(0, &default_rng) |
| 50 | .set_rng(1, &default_rng) |
| 51 | .set_epsilon(1e-3) |
| 52 | .set_param(arg.param) |
| 53 | .execs({arg.src, arg.filter, {}}); |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | TEST_F(CUDA, DILATED_CONVOLUTION_BACKWARD_DATA) { |
| 58 | std::vector<TestArg> args = get_dilated_args(); |
nothing calls this directly
no test coverage detected