统一Python/C++/CUDA内存:Python缓冲数组 -> C++11 `std::vector` -> CUDA托管内存
项目描述
统一Python/C++/CUDA内存:Python缓冲数组 ↔ C++11 std::vector ↔ CUDA托管内存。
为什么
应使用每种编程语言的现有功能和技术规范来操作数据。Python代码应该是Python风格的。CUDA代码应该是… CUDActic? C代码应该是… 哎,干净。
然而,在实践中,在语言之间转换数据格式可能会很痛苦。
其他库在转换/传递不同语言空间之间数据格式时,往往体积庞大、结构复杂且难以维护。相比之下,cuvec利用了Python、C/C++11和CUDA的最新功能,以使代码尽可能简洁。暴露“本地”容器,使代码遵循您语言的约定。想要像numpy.ndarray一样的功能?没问题。想要转换成std::vector?或者可能是用于CUDA内核的原始float *?简单。
更少的模板代码(更少错误,更容易调试,更快原型设计)
更少的内存拷贝(更快执行)
更低的内存使用(用更少的硬件做更多的事)
非目标
与数学功能相关的一切。目标是暴露功能,而不是(重新)创建功能。
即使是设置元素值这样的简单操作,也留给用户和/或现有功能——例如
Python: arr[:] = value
NumPy: arr.fill(value)
CuPy: cupy.asarray(arr).fill(value)
C++: std::fill(vec.begin(), vec.end(), value)
C & CUDA: memset(vec.data(), value, sizeof(T) * vec.size())
安装
需求
Python 3.7或更高版本(例如通过Anaconda或Miniconda,或通过python3-dev)
(可选) CUDA SDK/ Toolkit(包括NVIDIA GPU的驱动程序)
注意:如果CUDA SDK/ Toolkit是在安装CuVec之后安装的,则必须重新安装CuVec以启用CUDA支持
pip install cuvec
用法
请参阅使用文档和快速示例,了解如何升级Python ↔ C++ ↔ CUDA接口。
另请参阅NumCu,这是一个使用CuVec构建的最小独立Python包。
外部项目
有关将其集成到Python、C++、CUDA、CMake、pybind11和通用SWIG项目中的信息,请参阅外部项目文档。还提供了使用CPython API、pybind11 API和SWIG的完整和明确的示例模块。
贡献
请参阅CONTRIBUTING.md。
许可
版权
项目详情
cuvec-6.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f0471d6a17cb653e452383bede361866065234b40fa29ae477315139e936677 |
|
MD5 | a219dc34556ee7f7612558180dd92bda |
|
BLAKE2b-256 | 2185261081078829f2458642f9c271254da4aaf0033e1b1081d849b50f950475 |