MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / build_decoder_resblock

Function build_decoder_resblock

src/models/pocket_tts/mimi_decoder.cpp:1028–1067  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1026 const int64_t step_elems = config_.num_heads * head_dim_;
1027 carry_key_sources_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1028 carry_value_sources_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1029 carry_key_destinations_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1030 carry_value_destinations_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1031 append_key_sources_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1032 append_value_sources_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1033 append_key_destinations_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1034 append_value_destinations_.assign(static_cast<size_t>(cache_steps_ + 1), {});
1035
1036 for (int64_t next_keep_steps = 1; next_keep_steps <= cache_steps_; ++next_keep_steps) {
1037 const int64_t append_steps = std::min<int64_t>(frames_, next_keep_steps);
1038 const int64_t carry_steps = next_keep_steps - append_steps;
1039 auto & carry_key_src = carry_key_sources_[static_cast<size_t>(next_keep_steps)];
1040 auto & carry_value_src = carry_value_sources_[static_cast<size_t>(next_keep_steps)];
1041 auto & carry_key_dst = carry_key_destinations_[static_cast<size_t>(next_keep_steps)];
1042 auto & carry_value_dst = carry_value_destinations_[static_cast<size_t>(next_keep_steps)];
1043 auto & append_key_src = append_key_sources_[static_cast<size_t>(next_keep_steps)];
1044 auto & append_value_src = append_value_sources_[static_cast<size_t>(next_keep_steps)];
1045 auto & append_key_dst = append_key_destinations_[static_cast<size_t>(next_keep_steps)];
1046 auto & append_value_dst = append_value_destinations_[static_cast<size_t>(next_keep_steps)];
1047 carry_key_src.reserve(static_cast<size_t>(config_.transformer_layers));
1048 carry_value_src.reserve(static_cast<size_t>(config_.transformer_layers));
1049 carry_key_dst.reserve(static_cast<size_t>(config_.transformer_layers));
1050 carry_value_dst.reserve(static_cast<size_t>(config_.transformer_layers));
1051 append_key_src.reserve(static_cast<size_t>(config_.transformer_layers));
1052 append_value_src.reserve(static_cast<size_t>(config_.transformer_layers));
1053 append_key_dst.reserve(static_cast<size_t>(config_.transformer_layers));
1054 append_value_dst.reserve(static_cast<size_t>(config_.transformer_layers));
1055
1056 const size_t append_elems = static_cast<size_t>(append_steps * step_elems);
1057 const size_t append_src_offset = static_cast<size_t>((frames_ - append_steps) * step_elems) * sizeof(float);
1058 const size_t append_dst_offset = static_cast<size_t>((cache_steps_ - append_steps) * step_elems) * sizeof(float);
1059 const size_t carry_elems = static_cast<size_t>(carry_steps * step_elems);
1060 const size_t carry_src_offset = static_cast<size_t>((cache_steps_ - carry_steps) * step_elems) * sizeof(float);
1061 const size_t carry_dst_offset = static_cast<size_t>((cache_steps_ - next_keep_steps) * step_elems) * sizeof(float);
1062
1063 for (size_t layer = 0; layer < prefix_keys_.size(); ++layer) {
1064 if (carry_steps > 0) {
1065 carry_key_src.push_back(ggml_view_1d(ggml_ctx_, prefix_keys_[layer].tensor, carry_elems, carry_src_offset));
1066 carry_value_src.push_back(ggml_view_1d(ggml_ctx_, prefix_values_[layer].tensor, carry_elems, carry_src_offset));
1067 carry_key_dst.push_back(ggml_view_1d(ggml_ctx_, work_prefix_keys_[layer].tensor, carry_elems, carry_dst_offset));
1068 carry_value_dst.push_back(ggml_view_1d(ggml_ctx_, work_prefix_values_[layer].tensor, carry_elems, carry_dst_offset));
1069 } else {
1070 carry_key_src.push_back(nullptr);

Callers 1

Calls 4

EluModuleClass · 0.85
ResidualAddModuleClass · 0.85
buildMethod · 0.45

Tested by

no test coverage detected