在MATLAB中使用mex编译CUDA文件(.cu)

本文参考了:http://tomheaven.cn/index.php/2016/matlab_mexcuda/#more-47以及 https://www.freesion.com/article/4732370363/目标:将用c++写成的.cu文件转为MATLAB可以直接调用的mexw64文件手段:使用VS2017作为编译器(电脑已安装NVIDIA GPU Computing Toolkit)原因:.cu文件作为设备和主机均能使用的文件,需要NVCC编译器编译,因此用vs2017主要是用它里面
摘要由CSDN通过智能技术生成

本文参考了:http://tomheaven.cn/index.php/2016/matlab_mexcuda/#more-47
以及 https://www.freesion.com/article/4732370363/

目标:将用c++写成的.cu文件转为MATLAB可以直接调用的mexw64文件

手段:使用VS2017作为编译器(电脑已安装NVIDIA GPU Computing Toolkit)

原因:.cu文件作为设备和主机均能使用的文件,需要NVCC编译器编译,因此用vs2017主要是用它里面由NVIDIA GPU Computing Toolkit安装的nvcc编译器

具体步骤:

  1. 安装:NVIDIA GPU Computing Toolkit 10.2,vs 2017,MATLAB 2020b

  2. 先使用 mex -v mexGPUExample.cu 查看调试信息,根据信息找答案。对信息中显示否的项,要自己对应实际的路径修改xml文件

  3. 配置电脑的环境变量:
    CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
    CUDA_BIN_PATH=%CUDA_PATH%\bin
    CUDA_LIB_PATH=%CUDA_PATH%\lib\x64

  4. 创建mex_CUDA_win64.xml文件,这个文件主要作用是引导系统找到指定的路径里的文件和编译器,并且包含了编译命令。写入以下内容,并将文件拷贝进.cu文件所在目录;
    注意:
    (1)vs版本(VS141COMNTOOLS)和cuda版本号(Version=“10.2”)以及各环境变量与自己电脑的路径要匹配;
    (2)注意修改或者添加注册表内容,对应xml文件的hklmExists和hkcuExists;网上的大部分教程都与此xml文件的注册表路径不同,因为我的注册表结构与他们的不同,所以此处做了修改,只要系统能找到就行
    (3)LIB和LIBPATH要根据自己电脑的路径路径决定

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- Copyright 2013-2014 The MathWorks, Inc. -->
    <config
        Name="NVIDIA CUDA Compiler"
        ShortName="nvcc"
        Manufacturer="NVIDIA"
        Version="10.2"
        Language="CUDA"
        Priority="A"
        Location="$NVCC" >
        <Details
            CompilerExecutable="$COMPILER"
            CompilerDefines="$COMPDEFINES"
            CompilerFlags="$COMPFLAGS"
            OptimizationFlags="$OPTIMFLAGS"
            DebugFlags="$DEBUGFLAGS"
            IncludeFlags="$INCLUDE"
            LinkerExecutable&#
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值