Skip to content

Commit 08cad31

Browse files
authored
Call Py_DECREF after using PyObject_GetAttrString in intel driver (#3077)
I'm not sure that the whole problem is in the use of this particular function, but I haven't found any other problem areas yet. Signed-off-by: Anatoly Myachev <[email protected]>
1 parent bb38a43 commit 08cad31

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

third_party/intel/backend/driver.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -419,10 +419,18 @@ def format_of(ty):
419419
}}
420420
421421
// extract kernel metadata
422-
int num_warps = PyLong_AsLong(PyObject_GetAttrString(kernel_metadata, "num_warps"));
423-
int num_ctas = PyLong_AsLong(PyObject_GetAttrString(kernel_metadata, "num_ctas"));
424-
int shared_memory = PyLong_AsLong(PyObject_GetAttrString(kernel_metadata, "shared"));
425-
int threads_per_warp = PyLong_AsLong(PyObject_GetAttrString(kernel_metadata, "threads_per_warp"));
422+
PyObject *num_warps_attr = PyObject_GetAttrString(kernel_metadata, "num_warps");
423+
int num_warps = PyLong_AsLong(num_warps_attr);
424+
Py_DECREF(num_warps_attr);
425+
PyObject *num_ctas_attr = PyObject_GetAttrString(kernel_metadata, "num_ctas");
426+
int num_ctas = PyLong_AsLong(num_ctas_attr);
427+
Py_DECREF(num_ctas_attr);
428+
PyObject *shared_attr = PyObject_GetAttrString(kernel_metadata, "shared");
429+
int shared_memory = PyLong_AsLong(shared_attr);
430+
Py_DECREF(shared_attr);
431+
PyObject *threads_per_warp_attr = PyObject_GetAttrString(kernel_metadata, "threads_per_warp");
432+
int threads_per_warp = PyLong_AsLong(threads_per_warp_attr);
433+
Py_DECREF(threads_per_warp_attr);
426434
427435
// extract cluster dims
428436
PyObject *clusterDim = PyObject_GetAttrString(kernel_metadata, "cluster_dims");
@@ -433,6 +441,7 @@ def format_of(ty):
433441
int clusterDimX = PyLong_AsLong(PyTuple_GetItem(clusterDim, 0));
434442
int clusterDimY = PyLong_AsLong(PyTuple_GetItem(clusterDim, 1));
435443
int clusterDimZ = PyLong_AsLong(PyTuple_GetItem(clusterDim, 2));
444+
Py_DECREF(clusterDim);
436445
// extract launch metadata
437446
if (launch_enter_hook != Py_None){{
438447
PyObject* args = Py_BuildValue("(O)", launch_metadata);
@@ -465,9 +474,7 @@ def format_of(ty):
465474
return NULL;
466475
}}
467476
468-
// return None
469-
Py_INCREF(Py_None);
470-
return Py_None;
477+
Py_RETURN_NONE;
471478
}}
472479
473480
static PyMethodDef ModuleMethods[] = {{

0 commit comments

Comments
 (0)