GPU的Python编码

GPU的Python编码,python,gpu,Python,Gpu,我是Python新手,必须处理20GB左右的数据文件。目前,我想了解是否可以编写任何Python代码(如下所示)并在GPU上运行。事实上,我只需要打开这些文件,制作如下内容: file=open(fnTar,"w") for iLine in List: iLine=iLine.replace(“\\”,””) file.write(iLine) file.close() Run this on GPU: file=open(fnTar,"w") for iLi

我是Python新手,必须处理20GB左右的数据文件。目前,我想了解是否可以编写任何Python代码(如下所示)并在GPU上运行。事实上,我只需要打开这些文件,制作如下内容:

file=open(fnTar,"w")
for iLine in List:
    iLine=iLine.replace(“\\”,””)
    file.write(iLine)
file.close()
Run this on GPU:
    file=open(fnTar,"w")
    for iLine in List:
        iLine=iLine.replace(“\\”,””)
        file.write(iLine)
    file.close()
我知道有像Dask这样的高级API可以更高效地处理大型文件,但将来我还需要以不同的方式处理数据(一些计算)。是否可以在GPU上运行这样的代码而不更改原始脚本?比如:

file=open(fnTar,"w")
for iLine in List:
    iLine=iLine.replace(“\\”,””)
    file.write(iLine)
file.close()
Run this on GPU:
    file=open(fnTar,"w")
    for iLine in List:
        iLine=iLine.replace(“\\”,””)
        file.write(iLine)
    file.close()

我的理解是,即使使用CUDA也需要对代码进行一些额外的更改,如果使用numpy之类的模块,您必须找到为CUDA开发的等效模块。因此,这也可能不是我想要的简单快捷的解决方案。

根据我对你问题的理解,这可能不是你想要的。GPU擅长于矩阵操作,而不是显式处理大型文件。为此,您确实需要更多的内存或一些分块处理的方法。

您可以在框架内执行强大的字符串操作。如果您有CSV,那么数据加载会非常快:

谢谢您的提问。下面是如何使用NVIDIA GPU快速完成这一任务(时间和代码!)。它将要求您使用cudf或nvstrings。这些只是玩具示例,因此请根据您的用例进行适当调整

CUDF

1) 直接创建和读取文件(假设您的用例为CSV):

以下是输出:

                 a  b   c
0   test \ phase 1  2   3
1   test \phase 2   4   5
2   test\phase 3    6   7
2) 进行替换:

df['a'] = df['a'].str.replace("\\","", regex=False) # regex=False is important as this particular instance as replace won't work without it (created a github issue to fix that)!
df.head()
您的输出将是:

      a             b   c
0   test  phase 1   2   3
1   test phase 2    4   5
2   testphase 3     6   7
['hllo', 'godbye']
3) 写文件

df.to_csv("testdone.csv")
NVSTRINGS

对于nvstrings解决方案,请将列表发送到设备。我没有您的文件或其格式信息,因此如果您愿意,我会请您尝试:)。但是,请注意您的实现的IO,因为延迟可能会导致它花费比cudf更长的时间。将文件发送到GPU并仅在GPU上处理它确实更好(更快)。我并不是真的推荐这种方式,只是在一个玩具示例中向您展示您可以做什么:)

输出将是:

      a             b   c
0   test  phase 1   2   3
1   test phase 2    4   5
2   testphase 3     6   7
['hllo', 'godbye']
至于20GB的文件大小,如果您有GPU内存大小,比如在Titan RTX/GV100/或RTX8000上,那么在没有Dask的单个GPU上应该可以。如果没有,则将其应用于
dask_cudf


希望这有帮助

GPU无法执行文件IO。你所要求的是不可能的,而且在GPU计算方面也没有“简单而快速”的解决方案