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

Function copy_tensor

dlib/cuda/cpu_dlib.cpp:3071–3108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3069 // ------------------------------------------------------------------------------------
3070
3071 void copy_tensor(
3072 bool add_to,
3073 tensor& dest,
3074 size_t dest_k_offset,
3075 const tensor& src,
3076 size_t src_k_offset,
3077 size_t count_k
3078 )
3079 {
3080 const size_t dest_sample_size = static_cast<size_t>(dest.nc() * dest.nr() * dest.k());
3081 const size_t src_sample_size = static_cast<size_t>(src.nc() * src.nr() * src.k());
3082
3083 const size_t block_size = count_k * dest.nc() * dest.nr();
3084
3085 DLIB_CASSERT(dest.num_samples() == src.num_samples() &&
3086 dest.nc() == src.nc() && dest.nr() == src.nr(), "All sources should fit into dest tensor size");
3087 DLIB_CASSERT(dest.k() - dest_k_offset >= count_k, "Not enough space in dest tensor");
3088 DLIB_CASSERT(src.k() - src_k_offset >= count_k, "Not enough space in src tensor");
3089
3090 float* dest_p = dest.host() + dest_k_offset * dest.nc() * dest.nr();
3091 const float* src_p = src.host() + src_k_offset * src.nc() * src.nr();
3092
3093 for (long i = 0; i < src.num_samples(); ++i)
3094 {
3095 if (add_to)
3096 {
3097 for (size_t j = 0; j < block_size; ++j)
3098 dest_p[j] += src_p[j];
3099 }
3100 else
3101 {
3102 ::memcpy(dest_p, src_p, block_size * sizeof(float));
3103 }
3104
3105 dest_p += dest_sample_size;
3106 src_p += src_sample_size;
3107 }
3108 }
3109
3110 // ------------------------------------------------------------------------------------
3111

Callers 15

test_copy_tensor_cpuFunction · 0.50
test_copy_tensor_gpuFunction · 0.50
test_concatFunction · 0.50
test_trilFunction · 0.50
forwardMethod · 0.50
backwardMethod · 0.50

Calls 6

memcpyFunction · 0.70
ncMethod · 0.45
nrMethod · 0.45
kMethod · 0.45
num_samplesMethod · 0.45
hostMethod · 0.45

Tested by 10

test_copy_tensor_cpuFunction · 0.40
test_copy_tensor_gpuFunction · 0.40
test_concatFunction · 0.40
test_trilFunction · 0.40