9 | const float* __restrict__ gates,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 | const float* __restrict__ prev_c,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:9:31: note: the first parameter in the range is 'gates'
9 | const float* __restrict__ gates,
| ^~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:10:31: note: the last parameter in the range is 'prev_c'
10 | const float* __restrict__ prev_c,
| ^~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:11:5: warning: 2 adjacent parameters of 'lstm_elementwise_forward' of similar type ('float *__restrict') are easily swapped by mistake [bugprone-easily-swappable-parameters]
11 | float* __restrict__ h,
| ^~~~~~~~~~~~~~~~~~~~~~
12 | float* __restrict__ c,
| ~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:11:25: note: the first parameter in the range is 'h'
11 | float* __restrict__ h,
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:12:25: note: the last parameter in the range is 'c'
12 | float* __restrict__ c,
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:16:15: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
16 | int idx = blockIdx.x * blockDim.x + threadIdx.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:18:18: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
18 | int stride = blockDim.x * gridDim.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:46:5: warning: 3 adjacent parameters of 'tiled_linear_forward_kernel' of similar type ('const float *__restrict') are easily swapped by mistake [bugprone-easily-swappable-parameters]
46 | const float* __restrict__ input,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47 | const float* __restrict__ weight,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48 | const float* __restrict__ bias,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:46:31: note: the first parameter in the range is 'input'
46 | const float* __restrict__ input,
| ^~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:48:31: note: the last parameter in the range is 'bias'
48 | const float* __restrict__ bias,
| ^~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:55:15: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
55 | int row = blockIdx.x * TILE_DIM + threadIdx.y;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:56:15: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
56 | int col = blockIdx.y * TILE_DIM + threadIdx.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:66:20: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
66 | int colA = t * TILE_DIM + threadIdx.x; // Column index for input
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:67:20: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
67 | int rowB = t * TILE_DIM + threadIdx.y; // Row index for weight tile
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:101:5: warning: 2 adjacent parameters of 'lstm_forward_cuda' of similar type ('torch::Tensor') are easily swapped by mistake [bugprone-easily-swappable-parameters]
101 | torch::Tensor input,
| ^~~~~~~~~~~~~~~~~~~~
102 | torch::Tensor w_ih,
| ~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:101:19: note: the first parameter in the range is 'input'
101 | torch::Tensor input,
| ^~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:102:19: note: the last parameter in the range is 'w_ih'
102 | torch::Tensor w_ih,
| ^~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:101:19: warning: the parameter 'input' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
101 | torch::Tensor input,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:102:19: warning: the parameter 'w_ih' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
102 | torch::Tensor w_ih,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:103:5: warning: 4 adjacent parameters of 'lstm_forward_cuda' of similar type ('torch::Tensor') are easily swapped by mistake [bugprone-easily-swappable-parameters]
103 | torch::Tensor w_hh,
| ^~~~~~~~~~~~~~~~~~~
104 | torch::Tensor b_ih,
| ~~~~~~~~~~~~~~~~~~~
105 | torch::Tensor b_hh,
| ~~~~~~~~~~~~~~~~~~~
106 | torch::Tensor h0,
| ~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:103:19: note: the first parameter in the range is 'w_hh'
103 | torch::Tensor w_hh,
| ^~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:106:19: note: the last parameter in the range is 'h0'
106 | torch::Tensor h0,
| ^~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:103:19: warning: the parameter 'w_hh' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
103 | torch::Tensor w_hh,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:104:19: warning: the parameter 'b_ih' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
104 | torch::Tensor b_ih,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:105:19: warning: the parameter 'b_hh' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
105 | torch::Tensor b_hh,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:106:19: warning: the parameter 'h0' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
106 | torch::Tensor h0,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:107:19: warning: the parameter 'c0' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
107 | torch::Tensor c0
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:109:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
109 | int batch_size = input.size(0);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:110:19: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
110 | int seq_len = input.size(1);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:111:9: warning: Value stored to 'input_size' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
111 | int input_size = input.size(2);
| ^~~~~~~~~~ ~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:111:9: note: Value stored to 'input_size' during its initialization is never read
111 | int input_size = input.size(2);
| ^~~~~~~~~~ ~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:111:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
111 | int input_size = input.size(2);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:112:23: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
112 | int hidden_size = h0.size(1);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:152:19: warning: the parameter 'input' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
152 | torch::Tensor input,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:153:19: warning: the parameter 'weight' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
153 | torch::Tensor weight,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:154:19: warning: the parameter 'bias' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
154 | torch::Tensor bias
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:156:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
156 | int batch_size = input.size(0);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:157:21: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
157 | int input_dim = input.size(1);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:158:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
158 | int output_dim = weight.size(0);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:181:19: warning: the parameter 'x' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
181 | torch::Tensor x,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:182:5: warning: 4 adjacent parameters of 'forward' of similar type ('std::vector<torch::Tensor>') are easily swapped by mistake [bugprone-easily-swappable-parameters]
182 | std::vector<torch::Tensor> lstm_weights_ih,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
183 | std::vector<torch::Tensor> lstm_weights_hh,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
184 | std::vector<torch::Tensor> lstm_biases_ih,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
185 | std::vector<torch::Tensor> lstm_biases_hh,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:182:32: note: the first parameter in the range is 'lstm_weights_ih'
182 | std::vector<torch::Tensor> lstm_weights_ih,
| ^~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:185:32: note: the last parameter in the range is 'lstm_biases_hh'
185 | std::vector<torch::Tensor> lstm_biases_hh,
| ^~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:187:5: warning: 2 adjacent parameters of 'forward' of similar type ('torch::Tensor') are easily swapped by mistake [bugprone-easily-swappable-parameters]
187 | torch::Tensor fc_bias,
| ^~~~~~~~~~~~~~~~~~~~~~
188 | torch::Tensor h0,
| ~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:187:19: note: the first parameter in the range is 'fc_bias'
187 | torch::Tensor fc_bias,
| ^~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:188:19: note: the last parameter in the range is 'h0'
188 | torch::Tensor h0,
| ^~
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:196:22: warning: narrowing conversion from 'size_type' (aka 'unsigned long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
196 | int num_layers = lstm_weights_ih.size();
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:212:36: warning: parameter 'fc_weight' is passed by value and only copied once; consider moving it to avoid unnecessary copies [performance-unnecessary-value-param]
2 | out = linear_forward_cuda(out, fc_weight, fc_bias);
| ^
| std::move( )
/home/robert_sakana_ai/llm_cuda/experiments/20250212_optimize_b5_s4_e1_v2/level_3/task_35/b4_s2_35_lstm_load_balancing/edit_1/edit_1.cu:212:47: warning: parameter 'fc_bias' is passed by value and only copied once; consider moving it to avoid unnecessary copies [performance-unnecessary-value-param]
212 | out = linear_forward_cuda(out, fc_weight, fc_bias);
| ^
| std::move( )