CUDA项目初始化及常见问题

3 篇文章 0 订阅
1 篇文章 0 订阅

CUDA简介

CUDA(Compute Unified Device Architecture,统一计算架构)是NVIDIA所推出的GPGPU框架。尤其是在进行并行运算时,能够在极大程度上提升运算速度。现在我们常使用的深度学习框架底层也都是通过CUDA进行加速的。在基于物理模拟中,很多在CPU上需要耗费大量时间才能计算出的结果,在CUDA上却可以做到实时计算。

CUDA项目初始化

要初始化项目,环境配置一般来说是比较耗费时间并且需要查阅一定资料的。因而为了便捷地初始化CUDA项目,我们使用cmake便可以轻松达到这个目的。

当然,要使用CUDA必须先上Nvida的官网下载CUDA Toolkit。
下载并安装完CUDA Toolkit后只需要使用cmake来自动化配置环境便可以了。
本文提供一个CUDA项目初始化的模板,可以通过Github下载:cuda_project_template
具体的使用方法参考这个Github的介绍就可以了。

CUDA项目初始化常见问题

以CUDA为例,在构建一个新的项目时,普遍CUDA部分的计算会独立作为一个部分并生成静态链接库。而主程序或者其他核心部分计算要调用CUDA时需要链接到这个CUDA的静态链接库。而这其中最常见的问题就是:

value MT_StaticRelease' doesn't match value 'MTd_StaticDebug'

或者是

value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease'

再通过搜索相关问题的解决办法后,我将这两种方法的解决办法结合了一下,以下的cmake部分配置可以解决上述问题:

    add_compile_options(
        $<$<CONFIG:>:/MT>
        $<$<CONFIG:Debug>:/MTd>
        $<$<CONFIG:Release>:/MT> 
    )

    set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")

具体的CMakeLists.txt可以参考上述Github中的cmake文件:CMakeLists.txt

关于解决C4819警告的方案

在CUDA项目编译过程中经常会出现如下警告:

warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss

最简单便捷的方式就是将此警告无视,在cmake中我们可以如下设置:

set_target_properties(
    ${PROJECT_NAME} PROPERTIES
    COMPILE_FLAGS "-Xcompiler \"/wd4819\""
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值