Typical Scientific Python Optimization Path

2024-05-09 13:57:48 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个相当普遍的问题,我正在尝试调整一个基于python的科学计算代码来实时执行。目前,保守地说,单线程实现的执行速度比实时处理慢1000倍左右。但是,我不确定下一步要做什么来提高表现。在

我已经做了显而易见的事情。所有繁重的工作要么通过numpy数组计算完成,要么使用Cython内置的模块完成。大约50%的时间用于计算FFT和进行数组乘法,另外50%的时间用于Cython例程。Cython套路本身并不完美,但也不算太糟。我还对代码进行了分析,以确保其他一些不那么重要的例程占用的时间不会超过我的想象。在

好消息是代码很容易适应并行处理。实际上,我已经使用python进程完成了这项工作,它几乎线性地扩展到计算机中CPU核的数量。但是,这只给我大约20倍的速度提升。在

那么,我从这里开始做什么呢?在C语言中将代码重写为Python模块,可能直接使用cpythonapi?完全放弃Python而改用其他语言?尝试使用PyCUDA或openCL实现代码吗?完全是别的什么?在


Tags: 模块代码fftnumpy时间数组事情例程