|
|
@ -49,20 +49,12 @@ |
|
|
|
using namespace cv::gpu; |
|
|
|
using namespace cv::gpu; |
|
|
|
using namespace cv::gpu::device; |
|
|
|
using namespace cv::gpu::device; |
|
|
|
|
|
|
|
|
|
|
|
namespace |
|
|
|
namespace column_filter |
|
|
|
{ |
|
|
|
{ |
|
|
|
#define MAX_KERNEL_SIZE 32 |
|
|
|
#define MAX_KERNEL_SIZE 32 |
|
|
|
|
|
|
|
|
|
|
|
__constant__ float c_kernel[MAX_KERNEL_SIZE]; |
|
|
|
__constant__ float c_kernel[MAX_KERNEL_SIZE]; |
|
|
|
|
|
|
|
|
|
|
|
void loadKernel(const float* kernel, int ksize, cudaStream_t stream) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (stream == 0) |
|
|
|
|
|
|
|
cudaSafeCall( cudaMemcpyToSymbol(c_kernel, kernel, ksize * sizeof(float), 0, cudaMemcpyDeviceToDevice) ); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
cudaSafeCall( cudaMemcpyToSymbolAsync(c_kernel, kernel, ksize * sizeof(float), 0, cudaMemcpyDeviceToDevice, stream) ); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <int KSIZE, typename T, typename D, typename B> |
|
|
|
template <int KSIZE, typename T, typename D, typename B> |
|
|
|
__global__ void linearColumnFilter(const PtrStepSz<T> src, PtrStep<D> dst, const int anchor, const B brd) |
|
|
|
__global__ void linearColumnFilter(const PtrStepSz<T> src, PtrStep<D> dst, const int anchor, const B brd) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -196,182 +188,185 @@ namespace filter |
|
|
|
{ |
|
|
|
{ |
|
|
|
{ |
|
|
|
{ |
|
|
|
0, |
|
|
|
0, |
|
|
|
::caller< 1, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 1, T, D, BrdColReflect101>, |
|
|
|
::caller< 2, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 2, T, D, BrdColReflect101>, |
|
|
|
::caller< 3, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 3, T, D, BrdColReflect101>, |
|
|
|
::caller< 4, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 4, T, D, BrdColReflect101>, |
|
|
|
::caller< 5, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 5, T, D, BrdColReflect101>, |
|
|
|
::caller< 6, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 6, T, D, BrdColReflect101>, |
|
|
|
::caller< 7, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 7, T, D, BrdColReflect101>, |
|
|
|
::caller< 8, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 8, T, D, BrdColReflect101>, |
|
|
|
::caller< 9, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller< 9, T, D, BrdColReflect101>, |
|
|
|
::caller<10, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<10, T, D, BrdColReflect101>, |
|
|
|
::caller<11, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<11, T, D, BrdColReflect101>, |
|
|
|
::caller<12, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<12, T, D, BrdColReflect101>, |
|
|
|
::caller<13, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<13, T, D, BrdColReflect101>, |
|
|
|
::caller<14, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<14, T, D, BrdColReflect101>, |
|
|
|
::caller<15, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<15, T, D, BrdColReflect101>, |
|
|
|
::caller<16, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<16, T, D, BrdColReflect101>, |
|
|
|
::caller<17, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<17, T, D, BrdColReflect101>, |
|
|
|
::caller<18, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<18, T, D, BrdColReflect101>, |
|
|
|
::caller<19, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<19, T, D, BrdColReflect101>, |
|
|
|
::caller<20, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<20, T, D, BrdColReflect101>, |
|
|
|
::caller<21, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<21, T, D, BrdColReflect101>, |
|
|
|
::caller<22, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<22, T, D, BrdColReflect101>, |
|
|
|
::caller<23, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<23, T, D, BrdColReflect101>, |
|
|
|
::caller<24, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<24, T, D, BrdColReflect101>, |
|
|
|
::caller<25, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<25, T, D, BrdColReflect101>, |
|
|
|
::caller<26, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<26, T, D, BrdColReflect101>, |
|
|
|
::caller<27, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<27, T, D, BrdColReflect101>, |
|
|
|
::caller<28, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<28, T, D, BrdColReflect101>, |
|
|
|
::caller<29, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<29, T, D, BrdColReflect101>, |
|
|
|
::caller<30, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<30, T, D, BrdColReflect101>, |
|
|
|
::caller<31, T, D, BrdColReflect101>, |
|
|
|
column_filter::caller<31, T, D, BrdColReflect101>, |
|
|
|
::caller<32, T, D, BrdColReflect101> |
|
|
|
column_filter::caller<32, T, D, BrdColReflect101> |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
0, |
|
|
|
0, |
|
|
|
::caller< 1, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 1, T, D, BrdColReplicate>, |
|
|
|
::caller< 2, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 2, T, D, BrdColReplicate>, |
|
|
|
::caller< 3, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 3, T, D, BrdColReplicate>, |
|
|
|
::caller< 4, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 4, T, D, BrdColReplicate>, |
|
|
|
::caller< 5, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 5, T, D, BrdColReplicate>, |
|
|
|
::caller< 6, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 6, T, D, BrdColReplicate>, |
|
|
|
::caller< 7, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 7, T, D, BrdColReplicate>, |
|
|
|
::caller< 8, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 8, T, D, BrdColReplicate>, |
|
|
|
::caller< 9, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller< 9, T, D, BrdColReplicate>, |
|
|
|
::caller<10, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<10, T, D, BrdColReplicate>, |
|
|
|
::caller<11, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<11, T, D, BrdColReplicate>, |
|
|
|
::caller<12, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<12, T, D, BrdColReplicate>, |
|
|
|
::caller<13, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<13, T, D, BrdColReplicate>, |
|
|
|
::caller<14, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<14, T, D, BrdColReplicate>, |
|
|
|
::caller<15, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<15, T, D, BrdColReplicate>, |
|
|
|
::caller<16, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<16, T, D, BrdColReplicate>, |
|
|
|
::caller<17, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<17, T, D, BrdColReplicate>, |
|
|
|
::caller<18, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<18, T, D, BrdColReplicate>, |
|
|
|
::caller<19, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<19, T, D, BrdColReplicate>, |
|
|
|
::caller<20, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<20, T, D, BrdColReplicate>, |
|
|
|
::caller<21, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<21, T, D, BrdColReplicate>, |
|
|
|
::caller<22, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<22, T, D, BrdColReplicate>, |
|
|
|
::caller<23, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<23, T, D, BrdColReplicate>, |
|
|
|
::caller<24, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<24, T, D, BrdColReplicate>, |
|
|
|
::caller<25, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<25, T, D, BrdColReplicate>, |
|
|
|
::caller<26, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<26, T, D, BrdColReplicate>, |
|
|
|
::caller<27, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<27, T, D, BrdColReplicate>, |
|
|
|
::caller<28, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<28, T, D, BrdColReplicate>, |
|
|
|
::caller<29, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<29, T, D, BrdColReplicate>, |
|
|
|
::caller<30, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<30, T, D, BrdColReplicate>, |
|
|
|
::caller<31, T, D, BrdColReplicate>, |
|
|
|
column_filter::caller<31, T, D, BrdColReplicate>, |
|
|
|
::caller<32, T, D, BrdColReplicate> |
|
|
|
column_filter::caller<32, T, D, BrdColReplicate> |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
0, |
|
|
|
0, |
|
|
|
::caller< 1, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 1, T, D, BrdColConstant>, |
|
|
|
::caller< 2, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 2, T, D, BrdColConstant>, |
|
|
|
::caller< 3, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 3, T, D, BrdColConstant>, |
|
|
|
::caller< 4, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 4, T, D, BrdColConstant>, |
|
|
|
::caller< 5, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 5, T, D, BrdColConstant>, |
|
|
|
::caller< 6, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 6, T, D, BrdColConstant>, |
|
|
|
::caller< 7, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 7, T, D, BrdColConstant>, |
|
|
|
::caller< 8, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 8, T, D, BrdColConstant>, |
|
|
|
::caller< 9, T, D, BrdColConstant>, |
|
|
|
column_filter::caller< 9, T, D, BrdColConstant>, |
|
|
|
::caller<10, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<10, T, D, BrdColConstant>, |
|
|
|
::caller<11, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<11, T, D, BrdColConstant>, |
|
|
|
::caller<12, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<12, T, D, BrdColConstant>, |
|
|
|
::caller<13, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<13, T, D, BrdColConstant>, |
|
|
|
::caller<14, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<14, T, D, BrdColConstant>, |
|
|
|
::caller<15, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<15, T, D, BrdColConstant>, |
|
|
|
::caller<16, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<16, T, D, BrdColConstant>, |
|
|
|
::caller<17, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<17, T, D, BrdColConstant>, |
|
|
|
::caller<18, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<18, T, D, BrdColConstant>, |
|
|
|
::caller<19, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<19, T, D, BrdColConstant>, |
|
|
|
::caller<20, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<20, T, D, BrdColConstant>, |
|
|
|
::caller<21, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<21, T, D, BrdColConstant>, |
|
|
|
::caller<22, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<22, T, D, BrdColConstant>, |
|
|
|
::caller<23, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<23, T, D, BrdColConstant>, |
|
|
|
::caller<24, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<24, T, D, BrdColConstant>, |
|
|
|
::caller<25, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<25, T, D, BrdColConstant>, |
|
|
|
::caller<26, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<26, T, D, BrdColConstant>, |
|
|
|
::caller<27, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<27, T, D, BrdColConstant>, |
|
|
|
::caller<28, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<28, T, D, BrdColConstant>, |
|
|
|
::caller<29, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<29, T, D, BrdColConstant>, |
|
|
|
::caller<30, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<30, T, D, BrdColConstant>, |
|
|
|
::caller<31, T, D, BrdColConstant>, |
|
|
|
column_filter::caller<31, T, D, BrdColConstant>, |
|
|
|
::caller<32, T, D, BrdColConstant> |
|
|
|
column_filter::caller<32, T, D, BrdColConstant> |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
0, |
|
|
|
0, |
|
|
|
::caller< 1, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 1, T, D, BrdColReflect>, |
|
|
|
::caller< 2, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 2, T, D, BrdColReflect>, |
|
|
|
::caller< 3, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 3, T, D, BrdColReflect>, |
|
|
|
::caller< 4, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 4, T, D, BrdColReflect>, |
|
|
|
::caller< 5, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 5, T, D, BrdColReflect>, |
|
|
|
::caller< 6, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 6, T, D, BrdColReflect>, |
|
|
|
::caller< 7, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 7, T, D, BrdColReflect>, |
|
|
|
::caller< 8, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 8, T, D, BrdColReflect>, |
|
|
|
::caller< 9, T, D, BrdColReflect>, |
|
|
|
column_filter::caller< 9, T, D, BrdColReflect>, |
|
|
|
::caller<10, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<10, T, D, BrdColReflect>, |
|
|
|
::caller<11, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<11, T, D, BrdColReflect>, |
|
|
|
::caller<12, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<12, T, D, BrdColReflect>, |
|
|
|
::caller<13, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<13, T, D, BrdColReflect>, |
|
|
|
::caller<14, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<14, T, D, BrdColReflect>, |
|
|
|
::caller<15, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<15, T, D, BrdColReflect>, |
|
|
|
::caller<16, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<16, T, D, BrdColReflect>, |
|
|
|
::caller<17, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<17, T, D, BrdColReflect>, |
|
|
|
::caller<18, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<18, T, D, BrdColReflect>, |
|
|
|
::caller<19, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<19, T, D, BrdColReflect>, |
|
|
|
::caller<20, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<20, T, D, BrdColReflect>, |
|
|
|
::caller<21, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<21, T, D, BrdColReflect>, |
|
|
|
::caller<22, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<22, T, D, BrdColReflect>, |
|
|
|
::caller<23, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<23, T, D, BrdColReflect>, |
|
|
|
::caller<24, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<24, T, D, BrdColReflect>, |
|
|
|
::caller<25, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<25, T, D, BrdColReflect>, |
|
|
|
::caller<26, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<26, T, D, BrdColReflect>, |
|
|
|
::caller<27, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<27, T, D, BrdColReflect>, |
|
|
|
::caller<28, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<28, T, D, BrdColReflect>, |
|
|
|
::caller<29, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<29, T, D, BrdColReflect>, |
|
|
|
::caller<30, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<30, T, D, BrdColReflect>, |
|
|
|
::caller<31, T, D, BrdColReflect>, |
|
|
|
column_filter::caller<31, T, D, BrdColReflect>, |
|
|
|
::caller<32, T, D, BrdColReflect> |
|
|
|
column_filter::caller<32, T, D, BrdColReflect> |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
0, |
|
|
|
0, |
|
|
|
::caller< 1, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 1, T, D, BrdColWrap>, |
|
|
|
::caller< 2, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 2, T, D, BrdColWrap>, |
|
|
|
::caller< 3, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 3, T, D, BrdColWrap>, |
|
|
|
::caller< 4, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 4, T, D, BrdColWrap>, |
|
|
|
::caller< 5, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 5, T, D, BrdColWrap>, |
|
|
|
::caller< 6, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 6, T, D, BrdColWrap>, |
|
|
|
::caller< 7, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 7, T, D, BrdColWrap>, |
|
|
|
::caller< 8, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 8, T, D, BrdColWrap>, |
|
|
|
::caller< 9, T, D, BrdColWrap>, |
|
|
|
column_filter::caller< 9, T, D, BrdColWrap>, |
|
|
|
::caller<10, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<10, T, D, BrdColWrap>, |
|
|
|
::caller<11, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<11, T, D, BrdColWrap>, |
|
|
|
::caller<12, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<12, T, D, BrdColWrap>, |
|
|
|
::caller<13, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<13, T, D, BrdColWrap>, |
|
|
|
::caller<14, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<14, T, D, BrdColWrap>, |
|
|
|
::caller<15, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<15, T, D, BrdColWrap>, |
|
|
|
::caller<16, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<16, T, D, BrdColWrap>, |
|
|
|
::caller<17, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<17, T, D, BrdColWrap>, |
|
|
|
::caller<18, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<18, T, D, BrdColWrap>, |
|
|
|
::caller<19, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<19, T, D, BrdColWrap>, |
|
|
|
::caller<20, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<20, T, D, BrdColWrap>, |
|
|
|
::caller<21, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<21, T, D, BrdColWrap>, |
|
|
|
::caller<22, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<22, T, D, BrdColWrap>, |
|
|
|
::caller<23, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<23, T, D, BrdColWrap>, |
|
|
|
::caller<24, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<24, T, D, BrdColWrap>, |
|
|
|
::caller<25, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<25, T, D, BrdColWrap>, |
|
|
|
::caller<26, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<26, T, D, BrdColWrap>, |
|
|
|
::caller<27, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<27, T, D, BrdColWrap>, |
|
|
|
::caller<28, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<28, T, D, BrdColWrap>, |
|
|
|
::caller<29, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<29, T, D, BrdColWrap>, |
|
|
|
::caller<30, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<30, T, D, BrdColWrap>, |
|
|
|
::caller<31, T, D, BrdColWrap>, |
|
|
|
column_filter::caller<31, T, D, BrdColWrap>, |
|
|
|
::caller<32, T, D, BrdColWrap> |
|
|
|
column_filter::caller<32, T, D, BrdColWrap> |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
::loadKernel(kernel, ksize, stream); |
|
|
|
if (stream == 0) |
|
|
|
|
|
|
|
cudaSafeCall( cudaMemcpyToSymbol(column_filter::c_kernel, kernel, ksize * sizeof(float), 0, cudaMemcpyDeviceToDevice) ); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
cudaSafeCall( cudaMemcpyToSymbolAsync(column_filter::c_kernel, kernel, ksize * sizeof(float), 0, cudaMemcpyDeviceToDevice, stream) ); |
|
|
|
|
|
|
|
|
|
|
|
callers[brd_type][ksize]((PtrStepSz<T>)src, (PtrStepSz<D>)dst, anchor, cc, stream); |
|
|
|
callers[brd_type][ksize]((PtrStepSz<T>)src, (PtrStepSz<D>)dst, anchor, cc, stream); |
|
|
|
} |
|
|
|
} |
|
|
|