13 | __global__ void fused_lstm_kernel(const float* __restrict__ x,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 | const float* __restrict__ w_ih,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 | const float* __restrict__ w_hh,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 | const float* __restrict__ bias,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:13:61: note: the first parameter in the range is 'x'
13 | __global__ void fused_lstm_kernel(const float* __restrict__ x,
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:16:62: note: the last parameter in the range is 'bias'
16 | const float* __restrict__ bias,
| ^~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:17:36: warning: 2 adjacent parameters of 'fused_lstm_kernel' of similar type ('int') are easily swapped by mistake [bugprone-easily-swappable-parameters]
17 | int batch,
| ^~~~~~~~~~
18 | int seq_length,
| ~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:17:40: note: the first parameter in the range is 'batch'
17 | int batch,
| ^~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:18:40: note: the last parameter in the range is 'seq_length'
18 | int seq_length,
| ^~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:19:36: warning: 2 adjacent parameters of 'fused_lstm_kernel' of similar type ('int') are easily swapped by mistake [bugprone-easily-swappable-parameters]
19 | int input_size,
| ^~~~~~~~~~~~~~~
20 | int hidden_size,
| ~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:19:40: note: the first parameter in the range is 'input_size'
19 | int input_size,
| ^~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:20:40: note: the last parameter in the range is 'hidden_size'
20 | int hidden_size,
| ^~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:21:36: warning: 3 adjacent parameters of 'fused_lstm_kernel' of similar type ('float *__restrict') are easily swapped by mistake [bugprone-easily-swappable-parameters]
21 | float* __restrict__ h, // hidden state: [batch, hidden_size]
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22 | float* __restrict__ c, // cell state: [batch, hidden_size]
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 | float* __restrict__ y // output sequence: [batch, seq_length, hidden_size]
| ~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:21:56: note: the first parameter in the range is 'h'
21 | float* __restrict__ h, // hidden state: [batch, hidden_size]
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:23:56: note: the last parameter in the range is 'y'
23 | float* __restrict__ y // output sequence: [batch, seq_length, hidden_size]
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:26:13: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
26 | int b = blockIdx.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:30:15: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
30 | int tid = threadIdx.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:42:20: warning: result of multiplication in type 'int' is used as a pointer offset after an implicit widening conversion to type 'ptrdiff_t' [bugprone-implicit-widening-of-multiplication-result]
42 | float* h_ptr = h + b * hidden_size;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:42:24: note: make conversion explicit to silence this warning
5 | float* h_ptr = h + b * hidden_size;
| ^~~~~~~~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:42:24: note: perform multiplication in a wider type
42 | float* h_ptr = h + b * hidden_size;
| ^
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:43:20: warning: result of multiplication in type 'int' is used as a pointer offset after an implicit widening conversion to type 'ptrdiff_t' [bugprone-implicit-widening-of-multiplication-result]
43 | float* c_ptr = c + b * hidden_size;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:43:24: note: make conversion explicit to silence this warning
43 | float* c_ptr = c + b * hidden_size;
| ^~~~~~~~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:43:24: note: perform multiplication in a wider type
43 | float* c_ptr = c + b * hidden_size;
| ^
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:45:20: warning: result of multiplication in type 'int' is used as a pointer offset after an implicit widening conversion to type 'ptrdiff_t' [bugprone-implicit-widening-of-multiplication-result]
45 | float* y_ptr = y + b * seq_length * hidden_size;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:45:24: note: make conversion explicit to silence this warning
45 | float* y_ptr = y + b * seq_length * hidden_size;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:45:24: note: perform multiplication in a wider type
45 | float* y_ptr = y + b * seq_length * hidden_size;
| ^~~~~~~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:51:22: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
51 | for (int i = threadIdx.x; i < input_size; i += blockDim.x) {
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:51:56: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
51 | for (int i = threadIdx.x; i < input_size; i += blockDim.x) {
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:63:34: warning: result of multiplication in type 'int' is used as a pointer offset after an implicit widening conversion to type 'ptrdiff_t' [bugprone-implicit-widening-of-multiplication-result]
63 | const float* w_row = w_ih + row * input_size;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:63:41: note: make conversion explicit to silence this warning
63 | const float* w_row = w_ih + row * input_size;
| ^~~~~~~~~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:63:41: note: perform multiplication in a wider type
63 | const float* w_row = w_ih + row * input_size;
| ^~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:69:37: warning: result of multiplication in type 'int' is used as a pointer offset after an implicit widening conversion to type 'ptrdiff_t' [bugprone-implicit-widening-of-multiplication-result]
69 | const float* w_row_hh = w_hh + row * hidden_size;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:69:44: note: make conversion explicit to silence this warning
69 | const float* w_row_hh = w_hh + row * hidden_size;
| ^~~~~~~~~~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:69:44: note: perform multiplication in a wider type
69 | const float* w_row_hh = w_hh + row * hidden_size;
| ^~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:118: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]
118 | torch::Tensor x,
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:119:5: warning: 4 adjacent parameters of 'fused_lstm_forward' of similar type ('std::vector<torch::Tensor>') are easily swapped by mistake [bugprone-easily-swappable-parameters]
119 | std::vector<torch::Tensor> lstm_weights_ih,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120 | std::vector<torch::Tensor> lstm_weights_hh,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
121 | std::vector<torch::Tensor> lstm_biases_ih,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122 | std::vector<torch::Tensor> lstm_biases_hh,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:119:32: note: the first parameter in the range is 'lstm_weights_ih'
119 | std::vector<torch::Tensor> lstm_weights_ih,
| ^~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:122:32: note: the last parameter in the range is 'lstm_biases_hh'
122 | std::vector<torch::Tensor> lstm_biases_hh,
| ^~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:129:17: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
129 | int batch = x_contig.size(0);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:130:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
130 | int seq_length = x_contig.size(1);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:131:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
131 | int input_size = x_contig.size(2);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:133:23: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
133 | int hidden_size = lstm_weights_ih[0].size(0) / 4;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250208_optimize_b5_s4_e1_sweep/level_3/task_36/b5_s2_fused_lstm_sync_opt/edit_1/edit_1.cu:141:22: warning: narrowing conversion from 'size_type' (aka 'unsigned long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
141 | int num_layers = lstm_weights_ih.size();
| ^