9 | const float* __restrict__ A,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 | const float* __restrict__ B,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:9:31: note: the first parameter in the range is 'A'
9 | const float* __restrict__ A,
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:10:31: note: the last parameter in the range is 'B'
10 | const float* __restrict__ B,
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:12:5: warning: 2 adjacent parameters of 'bmm_warp_uniform_kernel' of similar type ('int') are easily swapped by mistake [bugprone-easily-swappable-parameters]
12 | int batch_size,
| ^~~~~~~~~~~~~~~
13 | int M,
| ~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:12:9: note: the first parameter in the range is 'batch_size'
12 | int batch_size,
| ^~~~~~~~~~
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:13:9: note: the last parameter in the range is 'M'
13 | int M,
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:20:19: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
20 | const int b = blockIdx.z;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:21:21: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
21 | const int row = blockIdx.y * TILE_SIZE + threadIdx.y;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:22:21: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
22 | const int col = blockIdx.x * TILE_SIZE + threadIdx.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:25:28: 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]
25 | const float* batch_A = A + b * M * K;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:25:32: note: make conversion explicit to silence this warning
4 | const float* batch_A = A + b * M * K;
| ^~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:25:32: note: perform multiplication in a wider type
25 | const float* batch_A = A + b * M * K;
| ^~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:26:28: 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]
26 | const float* batch_B = B + b * K * N;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:26:32: note: make conversion explicit to silence this warning
26 | const float* batch_B = B + b * K * N;
| ^~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:26:32: note: perform multiplication in a wider type
26 | const float* batch_B = B + b * K * N;
| ^~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:27:22: 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]
27 | float* batch_C = C + b * M * N;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:27:26: note: make conversion explicit to silence this warning
27 | float* batch_C = C + b * M * N;
| ^~~~~~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:27:26: note: perform multiplication in a wider type
27 | float* batch_C = C + b * M * N;
| ^~~~~
| static_cast<ptrdiff_t>( )
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:44:27: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
44 | const int k_idx = k_base + threadIdx.x;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:45:27: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
45 | const int k_idy = k_base + threadIdx.y;
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:78:41: warning: the parameter 'A' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
78 | torch::Tensor forward_bmm(torch::Tensor A, torch::Tensor B) {
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:78:58: warning: the parameter 'B' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
78 | torch::Tensor forward_bmm(torch::Tensor A, torch::Tensor B) {
| ^
| const &
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:86:22: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
86 | int batch_size = A.size(0);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:87:13: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
87 | int M = A.size(1);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:88:13: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
88 | int K = A.size(2);
| ^
/home/robert_sakana_ai/llm_cuda/experiments/20250202_optimize_b10_s4_e0_sweep/level_1/task_3/b7_s2_bmm_warp_uniform_base/base/base.cu:89:13: warning: narrowing conversion from 'int64_t' (aka 'long') to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
89 | int N = B.size(2);
| ^