gpt4 book ai didi

python - Cython:使用类型化内存 View 时,Cython 用户是否应该实现他们自己的 "vector"函数库?

转载 作者:太空宇宙 更新时间:2023-11-03 12:39:17 24 4
gpt4 key购买 nike

如果我正在使用类型化的内存 View ,并且我想添加我使用这样的内存 View 表示的两个向量,或者获取它们的点积,或者其他类似的向量,Cython 是否希望我自己实现这些函数?

我对此没有问题,但我想知道如果我忙于编写添加向量/乘以标量/点积/等,我是否做错了什么。靠我自己。感觉像是一种反模式,但我不确定。

什么是正确的模式?

最佳答案

如果您的代码在线性代数函数或向量化运算上花费了大量时间,那么它可能不是 Cythonizing 的理想选择。

numpy 数组之间的点积通常使用已经高度优化的 BLAS 库调用执行,如果您尝试在 Cython* 中重新发明轮子,您肯定会做得更糟。类似地,基本的向量化操作(例如添加两个向量)对于 numpy 数组已经非常有效,尽管在某些情况下可能在 Cython 中做得更好(例如,通过利用并行化,或通过避免中间数组分配)。

Cython 对于加速不容易矢量化的操作最有用,否则您将不得不求助于 Python for 循环等。最好的方法通常是识别和 Cythonize 这些瓶颈,而不是尝试用 Cython 重写所有内容。


*话虽如此,可以通过将指针传递到数组中的第一个元素来直接在类型化内存 View 上调用 BLAS 或 LAPACK 函数(有关示例,请参见 herehere)。

关于python - Cython:使用类型化内存 View 时,Cython 用户是否应该实现他们自己的 "vector"函数库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28948175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com