Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查每个cudamaloc都有一个带有bash脚本的cudaFree_Bash_Awk_Text Processing - Fatal编程技术网

检查每个cudamaloc都有一个带有bash脚本的cudaFree

检查每个cudamaloc都有一个带有bash脚本的cudaFree,bash,awk,text-processing,Bash,Awk,Text Processing,在我的代码中,我有一些CUDAMALLOC,它们总是这样: cudaMalloc((void**) &solDevicePtr, (NG*G) * sizeof(solDevicePtr[0])); cudaFree看起来就像: cudaFree(solDevicePtr); 我要做的是使用bash脚本从malloc中提取信息“solDevicePtr”,然后检查我的文件中是否存在cudaFree(solDevicePtr)表达式,但对于所有cudaMalloc(myvar) 我如何

在我的代码中,我有一些CUDAMALLOC,它们总是这样:

cudaMalloc((void**) &solDevicePtr, (NG*G) * sizeof(solDevicePtr[0]));
cudaFree看起来就像:

cudaFree(solDevicePtr);
我要做的是使用bash脚本从malloc中提取信息“solDevicePtr”,然后检查我的文件中是否存在cudaFree(solDevicePtr)表达式,但对于所有cudaMalloc(myvar)

我如何使用bash脚本、awk等实现它?一个想法是提取和存储每个cudamaloc变量,并检查相应的cudaFree(myvar)。另一个想法是将所有cudamaloc变量存储在一个数组中,然后将所有cudaFree变量存储在另一个数组中,并在排序后比较数组

如果不成功,最好显示哪些变量没有被释放


致以最诚挚的问候

像这样的事情应该可以:

code=/path/to/code
for i in $(grep -PRo '(?<=cudaMalloc\(\(void\*\*\) &)([^,]+)(?=, )' "$code"); do
    if ! grep -PRq "cudaFree\\($i\\)"; then
        echo "$i is not freed"
    fi
done
code=/path/to/code

对于以美元表示的i(grep-PRo'(?提供更多的示例输入和所需的输出。此外,如果是关于清理文本,不要假设人们知道它的细节,只需给出一个算法和您迄今为止尝试过的内容。感谢您的回复,这真的很有帮助。现在,我正在翻译一个Matlab代码,其中变量使用一次,释放一次,并为其添加清晰的名称变量在GPU RAM(*devicePtr)和CPU RAM(*hostPtr)上工作。所以现在它应该工作得很好,但你是对的,它可能会对更一般和复杂的代码给出错误的答案。