在Visual Studio中进行Python,C++和CUDA混合编程:Windows操作系统下的环境配置

在Visual Studio和PyCharm中进行Python,C++和CUDA混合编程:Windows操作系统下的环境配置

项目需求

现有一Python开发的项目,部分代码需要改用C++运行提速。C++部分中还有一些模块需要改用CUDA运行以实现并行化。整个项目只需运行于Windows操作系统。

整体方案

  1. 进行CUDA开发,生成链接库文件(.lib.dll);
  2. 编制CUDA部分的测试单元,验证其正确性;
  3. 利用pybind11构建C++编写的Python库,并在其中引入CUDA部分的库文件;
  4. 编写Python程序,验证整个项目的正确性。

Visual Studio和CUDA的安装

  1. 安装Visual Studio,建议2019或者2022版本;
  2. 安装CUDA,版本根据实际需求来,建议11.6及以上;

注意:必须先安装Visual Studio,再安装CUDA;安装CUDA时,务必勾选Visual Studio Integration项目。

构建CUDA程序链接库

  1. 在Visual Studio中新建工程,选择CUDA 11.6 Runtime;
  2. 在“项目”—“属性”—“常规”页面,将“配置类型”改为“动态库(.dll)”;
  3. 在“项目”—“生成自定义…”页面,勾选“CUDA 11.6(.targets,.props)”
  4. 此后便可以编制代码(.cu源文件和.cuh头文件),注意头文件中需要对要导出的函数添加形如extern "C" __declspec(dllexport) void functionName(...);的内容,否则后面的步骤会出错;
  5. 生成项目,此时需要找到并记录生成文件的位置,例如"…/x64/Debug/xxx.lib"。

注意:这里11.6是笔者安装的版本,请根据实际版本操作;

构建CUDA测试单元

  1. 在Visual Studio中,在同一解决方案下新建工程,选择C++空项目;
  2. 创建文件,通过下列代码导入头文件和库文件;
#include "头文件.cuh"  //注意这里添加头文件,用的相对路径
#pragma comment (lib, "库文件路径.lib")   

构建基于pybind11的C++编写的Python库

  1. 首先,利用pip安装pybind11并克隆源码:
pip install pybind11
git clone https://github.com/pybind/pybind11.git

这里省略了虚拟环境的相关内容,有需要者自行创建;

  1. 在刚刚执行命令的文件夹下,创建CMakeLists.txt:
cmake_minimum_required(VERSION 3.2) 
project(工程名)
add_subdirectory(pybind11)
pybind11_add_module(工程名 源码文件.cpp)

将“工程名”和“源码文件.cpp”替换成实际名称;

  1. 使用cmake构建Visual Studio工程,对于VS2019版本,将G参数换成"Visual Studio 16 2019"
cmake . -G "Visual Studio 17 2022" -A x64

执行完毕后,即可在文件夹中看到Visual Studio的工程文件,包含:工程名.sln工程名.vcxprojALL_BUILD.vcxprojZERO_CHECK.vcxproj。我们只需要工程名.vcxproj,把它添加到原有的那个解决方案(不是这一步生成的解决方案)中即可。

  1. 生成项目,在工程名.vcxproj同文件夹下的Debug文件夹中,即可找到生成的.pyd文件。

在Python中利用上述工程

新建一个文件夹,在其中启动PyCharm,并将之前生成的pyd文件导入,即可在Python中通过import命令导入。这里不推荐VSCode,因为安全性问题,VSCode不会自动检查pyd文件中的内容,因此缺乏提示,这对于编写代码是不利的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值