MCPcopy Create free account
hub / github.com/davisking/dlib / test_copy_tensor_slice_gpu

Function test_copy_tensor_slice_gpu

dlib/test/dnn.cpp:3101–3167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3099 }
3100 }
3101 void test_copy_tensor_slice_gpu()
3102 {
3103 using namespace dlib::tt;
3104 print_spinner();
3105 resizable_tensor dest(10, 9, 7, 15);
3106 resizable_tensor src1(10, 3, 7, 15);
3107 resizable_tensor src2(10, 3, 6, 12);
3108 resizable_tensor src3(10, 9, 7, 15);
3109 tt::tensor_rand rnd;
3110 rnd.fill_gaussian(dest);
3111 rnd.fill_gaussian(src1);
3112 rnd.fill_gaussian(src2);
3113 rnd.fill_gaussian(src3);
3114
3115 const resizable_tensor old_dest = dest;
3116
3117 cuda::copy_tensor(false, dest, 0, 0, 0, src1, 0, 0, 0, src1.k(), src1.nr(), src1.nc()); //full copy src1->dest
3118 cuda::copy_tensor(false, dest, src1.k(), 0, 0, src2, 0, 0, 0, src2.k(), src2.nr(), src2.nc()); //full copy src2->dest with offset of src1
3119 cuda::copy_tensor(false, dest, src1.k() + src2.k(), 1, 1, src3, 3, 1, 1, 3, src3.nr()-2, src3.nc()-2); //partial copy src3 into the rest place of dest
3120
3121
3122 for (long i = 0; i < dest.num_samples(); ++i)
3123 {
3124 for (long k = 0; k < dest.k(); ++k)
3125 {
3126 for (long r = 0; r < dest.nr(); ++r)
3127 {
3128 for (long c = 0; c < dest.nc(); ++c)
3129 {
3130 float old_dest_value = tensor_read_cpu(old_dest, i, k, r, c);
3131 float dest_value = tensor_read_cpu(dest, i, k, r, c);
3132 // first part is from src1
3133 if (k < src1.k())
3134 {
3135 float src_value = tensor_read_cpu(src1, i, k, r, c);
3136 DLIB_TEST(src_value == dest_value);
3137 }
3138 // second part is from src2
3139 else if (k < src1.k() + src2.k())
3140 {
3141 if (r < src2.nr() && c < src2.nc())
3142 {
3143 float src_value = tensor_read_cpu(src2, i, k - src1.k(), r, c);
3144 DLIB_TEST(src_value == dest_value);
3145 }
3146 else
3147 {
3148 DLIB_TEST(old_dest_value == dest_value);
3149 }
3150 }
3151 // third part is from src3
3152 else
3153 {
3154 if (r > 0 && c > 0 && r + 1 < src3.nr() && c + 1 < src3.nc())
3155 {
3156 float src_value = tensor_read_cpu(src3, i, k - src1.k() - src2.k() + 3, r, c);
3157 DLIB_TEST(src_value == dest_value);
3158 }

Callers

nothing calls this directly

Calls 7

print_spinnerFunction · 0.85
tensor_read_cpuFunction · 0.85
copy_tensorFunction · 0.50
kMethod · 0.45
nrMethod · 0.45
ncMethod · 0.45
num_samplesMethod · 0.45

Tested by

no test coverage detected