自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 CPython v3.12.1 源码学习番外篇(三):编写CUDA扩展

前两篇我们已经编写了Python的C和C++扩展,分别使用了CPython官方的接口和Pybind11对前者友好封装的接口。本篇我们来编写一个CUDA程序来调度显卡,进一步写成Python的扩展包。您如果看过C++扩展篇本篇会非常轻松。有了前面的基础,CUDA扩展的步骤是类似的,几乎仅仅是.cpp文件换为了.cu文件而已。您需要安装一个CUDA库,官方下载地址,本文选用CUDA18:在其bin目录下,有nvcc.exe这个编译.cu文件的编译器。如果cmake部分您觉得不够详细,请您查看。

2024-06-22 02:10:10 984

原创 CPython v3.12.1 源码学习番外篇(二)的补充知识:CMake构建C/C++项目

CMake是一个构建C/C++项目的工具,编写正确的CMakeLists.txt即可完成大部分场景。我们将仅编写1个.h文件和1个.cpp文件然后制作一个动态库(Windows下为.dll,Linux为.so文件)。

2024-06-19 23:51:12 400

原创 CPython v3.12.1 源码学习番外篇(二):编写C++扩展

番外篇二,我们将利用一个使用dll动态库的C++项目,然后使用Pybind11轻松将其编写为Python的包。它将同时具有一个不错的C/C++工程目录结构和Python包结构,可参考Pytorch的目录。您如果具有[]和[]的基础,会更快理解本文。我们会使用到[]构建的rb_math.dll、rb_math.lib和rb_math.h文件,您也可以使用自己的库编写为Python拓展。

2024-06-19 23:48:53 1101 2

原创 CPython v3.12.1 源码学习番外篇(一):编写C扩展

编写Python的C/C++扩展

2024-06-19 15:18:04 1120

原创 CPython v3.12.1 源码学习Windows篇(三)

很幸运,我们的脚本字节码序列在python解释器执行的所有字节码的末尾段,在此之后,仅仅多了一个INTERPRETER_EXIT字节码,字节码的执行就退出了(C层面应该还有些其它工作)。数一下一共是六条字节码,那么让我们稍微修改下CPython源码,让它逐个打印执行的字节码,看看字节码顺序和个数能否对应上。要检测这个的话,显然我们需要检测下面这个分支执行了多少次,因为每执行一次字节码,走一次这个switch case。没错,证明我们的函数是有效的(当然一次成功也可能是偶然,不要在意这里的严谨性)。

2024-06-15 22:44:44 481

原创 CPython v3.12.1 源码学习Windows篇(二)

上一篇我们介绍到了_PyInterpreterState_SetRunningMain这个函数,接下来CPython就会根据你是在执行模块还是代码还是脚本,来选择不同的分支进入了,如下:这个分支就是当你执行python xxx.py进入的分支,突击检查:Python的工作目录是解释器所在目录还是py文件所在目录?为什么?(上一篇看完,你应该能回答)进入pymain_run_file,可以看到先将你的py文件名转化为了python的对象,更具体来说是PyUnicode_Type这个对象(C语言

2024-06-13 23:44:10 601

原创 CPython v3.12.1 源码学习Windows篇(一)

这里有无异常都会进行config的clear内存释放,虽然这里config是栈变量,但其内部包含了指向堆的指针,需保证动态分配的内存也被正确释放,否则config被自动释放后,堆上的内存可能没引用但也没释放(内存泄漏。下面就是检查了一次path0,然后将其赋值给了interp->runtime->sys_path_0和interp->sysdict这个字典的"path"键的项,它就是Python层面的sys.path,然后插入到0号位置。然后就是设置sys.path[0]的部分,可以看到。

2024-06-13 18:36:01 329

原创 一文记:云边协同

云边协同即云计算和边缘计算结合的结构。

2024-03-20 11:30:01 361 1

原创 一文记:边缘计算

边缘计算即是将信息处理的中心放在更靠近人们实际消费信息的地方。

2024-03-20 10:51:01 207 1

原创 一文记:云计算

云计算即将数据统一放在远程信息中心(云端)进行处理,数据的提交和返回通过网络传输实现。

2024-03-20 10:50:46 132 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除