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

Function test_copy_tensor_gpu

dlib/test/dnn.cpp:2997–3046  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2995 }
2996#ifdef DLIB_USE_CUDA
2997 void test_copy_tensor_gpu()
2998 {
2999 using namespace dlib::tt;
3000 print_spinner();
3001 resizable_tensor dest(10, 9, 7, 15);
3002 resizable_tensor src1(10, 3, 7, 15);
3003 resizable_tensor src2(10, 3, 7, 15);
3004 resizable_tensor src3(10, 9, 7, 15);
3005 tt::tensor_rand rnd;
3006 rnd.fill_gaussian(dest);
3007 rnd.fill_gaussian(src1);
3008 rnd.fill_gaussian(src2);
3009 rnd.fill_gaussian(src3);
3010 cuda::copy_tensor(false, dest, 0, src1, 0, src1.k()); //full copy src1->dest
3011 cuda::copy_tensor(false, dest, src1.k(), src2, 0, src2.k()); //full copy src2->dest with offset of src1
3012 cuda::copy_tensor(false, dest, src1.k() + src2.k(), src3, 3, 3); //partial copy src3 into the rest place of dest
3013
3014
3015 for (long i = 0; i < dest.num_samples(); ++i)
3016 {
3017 for (long k = 0; k < dest.k(); ++k)
3018 {
3019 for (long r = 0; r < dest.nr(); ++r)
3020 {
3021 for (long c = 0; c < dest.nc(); ++c)
3022 {
3023 float dest_value = tensor_read_cpu(dest, i, k, r, c);
3024 // first part is from src1
3025 if (k < src1.k())
3026 {
3027 float src_value = tensor_read_cpu(src1, i, k, r, c);
3028 DLIB_TEST(src_value == dest_value);
3029 }
3030 // second part is from src2
3031 else if (k < src1.k() + src2.k())
3032 {
3033 float src_value = tensor_read_cpu(src2, i, k - src1.k(), r, c);
3034 DLIB_TEST(src_value == dest_value);
3035 }
3036 // third part is from src3
3037 else
3038 {
3039 float src_value = tensor_read_cpu(src3, i, k - src1.k() - src2.k() + 3, r, c);
3040 DLIB_TEST(src_value == dest_value);
3041 }
3042 }
3043 }
3044 }
3045 }
3046 }
3047 void test_copy_tensor_add_to_gpu()
3048 {
3049 using namespace dlib::tt;

Callers 1

run_testsMethod · 0.85

Calls 7

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

Tested by

no test coverage detected