Avoiding tmp buffer overflows
This commit is contained in:
parent
3e2198c6e1
commit
f3bc6bacd2
3 changed files with 7 additions and 5 deletions
|
@ -98,7 +98,6 @@ void run_frame_network(LPCNetState *lpcnet, float *gru_a_condition, float *gru_b
|
||||||
compute_conv1d(&feature_conv1, conv1_out, net->feature_conv1_state, in);
|
compute_conv1d(&feature_conv1, conv1_out, net->feature_conv1_state, in);
|
||||||
if (lpcnet->frame_count < FEATURE_CONV1_DELAY) RNN_CLEAR(conv1_out, FEATURE_CONV1_OUT_SIZE);
|
if (lpcnet->frame_count < FEATURE_CONV1_DELAY) RNN_CLEAR(conv1_out, FEATURE_CONV1_OUT_SIZE);
|
||||||
compute_conv1d(&feature_conv2, conv2_out, net->feature_conv2_state, conv1_out);
|
compute_conv1d(&feature_conv2, conv2_out, net->feature_conv2_state, conv1_out);
|
||||||
celt_assert(FRAME_INPUT_SIZE == FEATURE_CONV2_OUT_SIZE);
|
|
||||||
if (lpcnet->frame_count < FEATURES_DELAY) RNN_CLEAR(conv2_out, FEATURE_CONV2_OUT_SIZE);
|
if (lpcnet->frame_count < FEATURES_DELAY) RNN_CLEAR(conv2_out, FEATURE_CONV2_OUT_SIZE);
|
||||||
_lpcnet_compute_dense(&feature_dense1, dense1_out, conv2_out);
|
_lpcnet_compute_dense(&feature_dense1, dense1_out, conv2_out);
|
||||||
_lpcnet_compute_dense(&feature_dense2, condition, dense1_out);
|
_lpcnet_compute_dense(&feature_dense2, condition, dense1_out);
|
||||||
|
|
|
@ -62,7 +62,7 @@ LPCNET_EXPORT void lpcnet_plc_destroy(LPCNetPLCState *st) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void compute_plc_pred(PLCNetState *net, float *out, const float *in) {
|
static void compute_plc_pred(PLCNetState *net, float *out, const float *in) {
|
||||||
float zeros[1024] = {0};
|
float zeros[3*PLC_MAX_RNN_NEURONS] = {0};
|
||||||
float dense_out[PLC_DENSE1_OUT_SIZE];
|
float dense_out[PLC_DENSE1_OUT_SIZE];
|
||||||
_lpcnet_compute_dense(&plc_dense1, dense_out, in);
|
_lpcnet_compute_dense(&plc_dense1, dense_out, in);
|
||||||
compute_gruB(&plc_gru1, zeros, net->plc_gru1_state, dense_out);
|
compute_gruB(&plc_gru1, zeros, net->plc_gru1_state, dense_out);
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "tansig_table.h"
|
#include "tansig_table.h"
|
||||||
#include "nnet.h"
|
#include "nnet.h"
|
||||||
#include "nnet_data.h"
|
#include "nnet_data.h"
|
||||||
|
#include "plc_data.h"
|
||||||
|
|
||||||
#ifdef NO_OPTIMIZATIONS
|
#ifdef NO_OPTIMIZATIONS
|
||||||
#warning Compiling without any vectorization. This code will be very slow
|
#warning Compiling without any vectorization. This code will be very slow
|
||||||
|
@ -315,13 +316,15 @@ void compute_gru2(const GRULayer *gru, float *state, const float *input)
|
||||||
state[i] = h[i];
|
state[i] = h[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MAX_RNN_NEURONS_ALL IMAX(MAX_RNN_NEURONS, PLC_MAX_RNN_NEURONS)
|
||||||
|
|
||||||
void compute_gruB(const GRULayer *gru, const float* gru_b_condition, float *state, const float *input)
|
void compute_gruB(const GRULayer *gru, const float* gru_b_condition, float *state, const float *input)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int N, M;
|
int N, M;
|
||||||
int stride;
|
int stride;
|
||||||
float zrh[3*MAX_RNN_NEURONS];
|
float zrh[3*MAX_RNN_NEURONS_ALL];
|
||||||
float recur[3*MAX_RNN_NEURONS];
|
float recur[3*MAX_RNN_NEURONS_ALL];
|
||||||
float *z;
|
float *z;
|
||||||
float *r;
|
float *r;
|
||||||
float *h;
|
float *h;
|
||||||
|
@ -330,7 +333,7 @@ void compute_gruB(const GRULayer *gru, const float* gru_b_condition, float *stat
|
||||||
z = zrh;
|
z = zrh;
|
||||||
r = &zrh[N];
|
r = &zrh[N];
|
||||||
h = &zrh[2*N];
|
h = &zrh[2*N];
|
||||||
celt_assert(gru->nb_neurons <= MAX_RNN_NEURONS);
|
celt_assert(gru->nb_neurons <= MAX_RNN_NEURONS_ALL);
|
||||||
celt_assert(input != state);
|
celt_assert(input != state);
|
||||||
celt_assert(gru->reset_after);
|
celt_assert(gru->reset_after);
|
||||||
stride = 3*N;
|
stride = 3*N;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue