在Windows上运行CUDA Library Example 稀疏矩阵程序

最近研究Tensor Core结构化稀疏矩阵操作,跑一跑NVIDIA的程序。遇到一些Windows上编译链接的问题,查阅资料,收获了一些关于链接的常识。

NVIDIA/CUDALibrarySamples: CUDA Library Samples (github.com)

cuSPARSELt Downloads | NVIDIA Developer

总体过程

在Windows平台上,运行CMake,生成sln文件

用Visual Studio打开sln文件,打开工程,点击启动编译

问题

从CMakeLists中的各种`.so`看出,它是只面向Linux的。需要自己改写成Windows上的。

Windows上链接过程

CUDA cuSPARSELt库的lib文件夹提供了三个文件

为了方便,直接手动设置路径

静态链接

在编译链接时,指定链接库,这里静态链接,我们用`cusparseLt_static.lib`。值得注意的是,它的名字中含有`_static`,它的文件大小是三个文件中最大的。它存储了实际执行的代码。生成可执行文件之后,实际执行的代码被添加到了可执行文件中。这份可执行文件可以不依赖于dll文件直接执行。

在CMakeLists中指定链接库的方式如下

动态链接

我们用`cusparseLt.lib`,值得注意的是,它的名字中不含有`_static`,它的文件大小是三个文件中最小的。它不存储实际执行的代码,只存储符号及其在cusparseLt.dll中的位置。链接时指定`cusparseLt.lib`,生成可执行文件时,实际执行的代码没有添加到可执行文件中。

运行这份可执行文件时,系统查找依赖的dll文件,在需要时加载到内存中执行。为了让系统在需要时找到这些代码,需要把dll文件的位置添加到系统环境变量中。

在其他一些库中,dll文件一般存放在bin文件夹下,它是执行时用的,不是链接时用的。链接时只会用到`lib`文件。动态链接和静态链接用不同的`lib`文件。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值