我有一个pandas数据框作为doepy包的输出,该包包含大约5000行。每列都包含我的用户定义函数的值。
doepy输出(我们叫此paramTable):
| paramA | paramB | paramC | paramD | paramE |
| ------ | ------ | ------ | ------ | ------ |
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| ------ | ------ | ------ | ------ | ------ |
用户定义的函数(伪代码)
def myfunc(df, a, b, c, d, e):
# do something to df, which is another dataframe
paramTable的迭代:
for index, row in paramTable.iterrows():
myfunc(df, row['paramA'], row['paramB']...)
每次运行myfunc
大约需要2秒钟。它调用了一些用户定义的函数并执行了一些熊猫操作。它已在Python中进行了优化。我可以使用Numba或Cython进一步优化它,但是它仍然无法适应将在不同版本的paramTable
上执行的myfunc调用的数量。
使用GPU在较大的myfunc
上执行paramTable
的最佳方法是什么?我知道GPU的时钟速度远低于CPU,但是从更大的角度看,GPU看起来很适合。