call → run_correctness
callrun_correctness
{
"kernel_code": "import torch\nimport torch.nn as nn\nfrom torch.utils.cpp_extension import load_inline\n\n_cpp_src = r'''\n#include <torch/extension.h>\ntorch::Tensor relu_avg_pool(torch::Tensor x);\n'''\n_cuda_src = r'''\n#include <torch/extension.h>\n#include <cuda.h>\n#include <cuda_runtime.h>\n__global__ void relu_avg_pool_kernel(const float* __restrict__ x, float* __restrict__ out,\n int N, int C, int H, int W,\n long sN, long sC, long sH, long sW) {\n int n = blockIdx.y;\n int k = blockIdx.x * 32 + threadIdx.x;\n if (k >= C) return;\n const float* base = x + (long)n * sN + (long)k * sC;\n float sum = 0.0f;\n for (int h = 0; h < H; ++h) {\n const float* row = base + (long)h * sH;\n #pragma unroll 4\n for (int w = 0; w < W; ++w) {\n float v = row[(long)w * sW];\n sum += v > 0.0f ? v : 0.0f;\n }\n }\n out[(long)n * C + k] = sum / (float)(H * W);\n}\ntorch::Tensor relu_avg_pool(torch::Tensor x) {\n TORCH_CHECK(x.is_cuda() && x.scalar_type() == at::kFloat && x.dim() == 4, \"bad input\");\n int N=(int)x.size(0), C=(int)x.size(1), H=(int)x.size(2), W=(int)x.size(3);\n auto out=torch::empty({N,C}, x.options());\n relu_avg_pool_kernel<<<dim3((C+31)/32,N), dim3(32)>>>(x.data_ptr<float>(), out.data_ptr<float>(), N,C,H,W,\n (long)x.stride(0),(long)x.stride(1),(long)x.stride(2),(long)x.stride(3));\n return out;\n}\n'''\n_ext = load_inline(name='squeezenet_relu_avg_ext_v2', cpp_sources=_cpp_src, cuda_sources=_cuda_src,\n functions=['relu_avg_pool'], extra_cuda_cflags=['-O3'], verbose=False)\n\ndef _conv_relu(x, conv):\n return torch.ops.aten.cudnn_convolution_relu(x, conv.weight, conv.bias, list(conv.padding), list(conv.stride), list(conv.dilation), conv.groups)\n\nclass FireModule(nn.Module):\n def __init__(self, in_channels, squeeze_channels, expand1x1_channels, expand3x3_channels):\n super().__init__()\n self.squeeze=nn.Conv2d(in_channels,squeeze_channels,kernel_size=1)\n self.squeeze_activation=nn.ReLU(inplace=True)\n self.expand1x1=nn.Conv2d(squeeze_channels,expand1x1_channels,kernel_size=1)\n self.expand1x1_activation=nn.ReLU(inplace=True)\n self.expand3x3=nn.Conv2d(squeeze_channels,expand3x3_channels,kernel_size=3,padding=1)\n self.expand3x3_activation=nn.ReLU(inplace=True)\n def forward(self,x):\n x=_conv_relu(x,self.squeeze)\n return torch.cat([_conv_relu(x,self.expand1x1), _conv_relu(x,self.expand3x3)], 1)\n\nclass ModelNew(nn.Module):\n def __init__(self,num_classes=1000):\n super().__init__()\n self.features=nn.Sequential(\n nn.Conv2d(3,96,kernel_size=7,stride=2), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3,stride=2,ceil_mode=True),\n FireModule(96,16,64,64), FireModule(128,16,64,64), FireModule(128,32,128,128), nn.MaxPool2d(kernel_size=3,stride=2,ceil_mode=True),\n FireModule(256,32,128,128), FireModule(256,48,192,192), FireModule(384,48,192,192), FireModule(384,64,256,256), nn.MaxPool2d(kernel_size=3,stride=2,ceil_mode=True),\n FireModule(512,64,256,256))\n self.classifier=nn.Sequential(nn.Dropout(p=0.0), nn.Conv2d(512,num_classes,kernel_size=1), nn.ReLU(inplace=True), nn.AdaptiveAvgPool2d((1,1)))\n self.to(memory_format=torch.channels_last)\n def forward(self,x):\n x=x.contiguous(memory_format=torch.channels_last)\n # fused first conv/relu, then maxpool and fire modules\n x=_conv_relu(x,self.features[0])\n x=self.features[2](x)\n for i in range(3,6): x=self.features[i](x)\n x=self.features[6](x)\n for i in range(7,11): x=self.features[i](x)\n x=self.features[11](x)\n x=self.features[12](x)\n x=self.classifier[1](x)\n return _ext.relu_avg_pool(x)\n"
}
result ← run_correctness (fail)
failrun_correctness
run_correctness FAILED: unexpected error during tool execution.
_WorkItemTimeout: work item exceeded soft timeout budget
Traceback (most recent call last):
File "/scratch/abaner/KernelBench/src/kernelbench/agent/agent.py", line 627, in _execute_tool
return tool.execute(self.ctx, **args)
File "/scratch/abaner/KernelBench/src/kernelbench/agent/tools.py", line 365, in execute
return ctx.eval_client.run_correctness(ctx, kernel_code)
File "/scratch/abaner/KernelBench/src/kernelbench/agent/eval_client.py", line 58, in run_correctness
return self._call("correctness", args)
File "/scratch/abaner/KernelBench/src/kernelbench/agent/eval_client.py", line 117, in _call
payload = self._response_q.get(timeout=remaining)
File "<string>", line 2, in get
File "/opt/conda/lib/python3.10/multiprocessing/managers.py", line 818, in _callmethod
kind, result = conn.recv()
File "/opt/conda/lib/python3.10/multiprocessing/connection.py", line 250, in recv
buf = self._recv_bytes()
File "/opt/conda/lib/python3.10/multiprocessing/connection.py", line 414, in _recv_bytes
buf = self._recv(4)
File "/opt/conda/lib/python3.10/multiprocessing/connection.py", line 379, in _recv
chunk = read(handle, remaining)
File "/scratch/abaner/KernelBench/scripts/run_sweep.py", line 161, in _alarm_handler
raise _WorkItemTimeout("work item exceeded soft timeout budget")
__mp_main__._WorkItemTimeout: work item exceeded soft timeout budget