matlab调用cuda,window下matlab调用cuda的开发流程

2023-05-16

这两天抽点时间研究matlab调用cuda程序的问题,发现网上这方面的资料比较少,而且nvidia提供的白皮书描述的不够详尽,因此对于开发流程进行总结,希望大家有用。

总的来说,matlab中调用cuda程序有两种方法,第一是利用开勇的cuda wizard创建cuda程序的dll,然后结合matlab的mex编译器在matlab中进行调用;第二种是根据白皮书中所写,将cuda程写成标准的mex文件格式,然后利用mex编译器生成二进制代码,在matlab中进行调用。两种方法生成的都是以.mexw32或.mexw64结尾的二进制程序,直接在m文件中使用即可。

1. Matlab白皮书方法

A.  仅仅使用cufft,将cuda代码和C代码函数写在mex标准文件中,则利用下面的编译指令可以完成二进制程序的生成。

mex fft2_cuda.c -IC:/CUDA/include -LC:/CUDA/lib -lcudart -lcufft

B.  代码里面包含核函数,readme中说明使用如下指令可以完成,但是总是报错,说nvmex.pl有错误,可能是vs或者matlab版本不对?(我用的vs2005 sp1 and Matlab R2010)

nvmex -f nvmexopts.bat Szeta.cu -IC:/cuda/include -LC:/cuda/lib -lcufft -lcudart

C. 从网上下载了一个代码,非常不错,里面包含matlab编译脚本文件my_compile.m, cuda文件test.cu,mex标准文件test.cpp.这是一个非常好的例子,参照即可。首先运行my_compile test.cpp, 然后就会生成二进制程序文件以供matlab调用。

my_compile.m

///

function my_compile(varargin)

!"%VS80COMNTOOLS%vsvars32.bat" & nvcc -c -arch compute_13 test.cu

n=getenv('CUDA_LIB_PATH'); if n(1)=='"', n=n(2:end); end, if n(end)=='"', n=n(1:end-1);end

mex(['-L' n],'-lcudart','test.obj',varargin{:});

test.cu

//

extern "C" void gpuAdd(double* A, double* B, double *C);

__global__ void vecAdd(double* A, double* B, double* C)

{

int i = threadIdx.x;

C[i]=A[i]+B[i];

}

void gpuAdd(double* A, double* B, double *C)

{

double *Ad,*Bd,*Cd;

cudaMalloc((void**)&Ad,5*sizeof(double));

cudaMalloc((void**)&Bd,5*sizeof(double));

cudaMalloc((void**)&Cd,5*sizeof(double));

cudaMemcpy(Ad,A,5*sizeof(double),cudaMemcpyHostToDevice);     cudaMemcpy(Bd,B,5*sizeof(double),cudaMemcpyHostToDevice);

vecAdd<<<1,5>>>(Ad,Bd,Cd);

cudaMemcpy(C,Cd,5*sizeof(double),cudaMemcpyDeviceToHost);

cudaFree(Ad);cudaFree(Bd);cudaFree(Cd);

}

test.cpp

/

#include "mex.h"

extern "C" void gpuAdd(double* A, double* B, double *C);

void mexFunction(

int nlhs, mxArray *plhs[],

int nrhs, const mxArray *prhs[])

{

double *C;

if (mxGetNumberOfElements(prhs[0])!=5) mexErrMsgTxt("Wrong number of elements in A!");

if (mxGetNumberOfElements(prhs[1])!=5) mexErrMsgTxt("Wrong number of elements in B!");

C=(double*)mxGetData(plhs[0]=mxCreateDoubleMatrix(1,5,mxREAL));

gpuAdd((double*)mxGetData(prhs[0]),(double*)mxGetData(prhs[1]),C);

}

2.   动态库的方法

首先按照开勇的dll开发方法,完成cuda程序的dll封装。然后创建一个包含mexFunction的标准mex文件,将调用的cuda函数写入其中即可。编译的方法类似:

mex -L. -ltest test.c

3.  直接把cuda程序编译成exe文件,在matlab中通过system函数来调用也可,(懒人办法)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab调用cuda,window下matlab调用cuda的开发流程 的相关文章

  • char ch= 中 什么意思java_问一下java里的char到底是什么

    我们上课用的联系学java的软件是readytoprogramJAVAIDE xff0c 学到char变量的时候出了点问题 xff0c 教材上教的是让我们输 xff1a charch1 ch2 ch3 ch1 61 c readChar c
  • 理科大学可能类似纹路里

    11月5日 xff0c 第二届上海市政府新闻办公室推出全新形象片 上海 恒新之城 xff0c 以更为开放 更求创新 更讲包容的姿态展示新时代的风采 xff0c 迎接的到来 开放 创新 包容已成为上海最鲜明的品格 xff0c 这种品格是新时代
  • 三星 S10 运行 Ubuntu 系统

    导读DeX 是一种模仿桌面操作系统的用户 UI 界面 xff0c 把支持 DeX 的三星手机用数据线连上外置显示器 xff0c 用户就可以获得一种类似桌面系统的使用体验 三星 S8 Note 8 S9 Note 9 S10 系列都支持 De
  • Ubuntu的妥协将支持精选的32位应用

    据外媒Tom 39 s hardware xff0c Ubuntu开发人员Canonical在早先的时候宣布Ubuntu 19 10将不再更新32位软件包和应用程序 xff0c 引来了诸多应用开发者的不满 现在 xff0c Ubuntu方面
  • Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

    Jdk升级到11引起的问题 xff1a 程序包javax xml bind annotation不存在 Jdk12 都发布了 xff0c 我也下载一个玩一玩吧 刚准备要下载 xff0c 发现之前已经下载了一个11 xff0c 那就11 吧
  • 车载系统测试-功能测试第一天

    一 混动车型测试前注意 1 踩刹车加启动按钮 xff0c 进入ok模式 xff0c OK模式下可以进行常规测试 xff1b 点击启动按钮进入acc on模式 xff1b 在ok模式下 xff0c 充电不可用时可以踩油门进行充电 xff1b
  • 去除office非正版提示的方法(转)

    又是office的问题 每次回家都碰到相关问题 这次是微软正版计划的认证 去百度一下发现是一个 34 Office 正版增值计划通知 KB949810 CHS 34 补丁的问题 症状是 打开Office中的相应组件如WORD xff0c 那
  • 在SQLSERVER中如何检测一个字符串中是否包含另一个字符串

    当charindex返回值大于0时则包含 为0不包含 select CHARINDEX 39 456 39 39 123456 39 SQL语句使用CHARINDEX函数 xff0c 来测试一个字符串中是否包含另一个字符串中的方法 xff1
  • vim全选,全部复制,全部删除

    全选 xff08 高亮显示 xff09 xff1a 按esc后 xff0c 然后ggvG或者ggVG 全部复制 xff1a 按esc后 xff0c 然后ggyG 全部删除 xff1a 按esc后 xff0c 然后dG 解析 xff1a gg
  • FTP命令收集

    FTP FTP命令是Internet用户使用最频繁的命令之一 xff0c 熟悉并灵活应用FTP的内部命令 xff0c 可以大大方便使用者 xff0c 并收到事半功倍之效 如果你想学习使用进行后台FTP下载 xff0c 那么就必须学习FTP指
  • 如何屏蔽Chrome新标签页中8个缩略图

    PS xff1a 该经验本源来百度 雨燕之子 技术流匠师 xff0c 然本文图片等整理均属原创 第一步 xff1a 安装扩展Stylish 第二步 xff1a 安装成功红写入新样式 xff0c 名称自己起个喜欢的就好 xff0c 代码内容
  • VNC 登录上去灰屏,没有shell脚本,鼠标变成X

    CenterOS 1 安装vncserver yum install tigervnc server y 2 vncpasswd 设置pwd 3 etc sysconfig vncservers VNCSERVER 61 34 1 root
  • 计算机编程之高级语言

    高级语言 High level programming language 相对于机器语言 machine language xff0c 是一种指令集的体系 这种指令集 xff0c 称机器码 machine code xff0c 是电脑的CP
  • C/C++ 笔试,难倒我哉

    2012 6 27日下午 xff0c 去了一个软件公司笔试面试 xff0c 3道题目 xff0c 都是 C 语言的编程题 xff0c 题意简单明了 xff0c 写起来好麻烦 xff0c 而且是在纸上写的 xff0c 平常习惯了写写改改 xf
  • 【C++实现python字符串函数库】一:分割函数:split、rsplit

    C 43 43 实现python字符串函数库 split 与rsplit 方法 前言 本系列文章将介绍python提供的字符串函数 xff0c 并尝试使用C 43 43 来实现这些函数 这些C 43 43 函数在这里做单独的分析 xff0c
  • python处理excel链接_Python处理Excel文件实例代码

    由于工作需要 需要检查是否一个查询的一部分内容是有效的 查询存储在Excel中 文本内容页面的标题 和页面的URL格式中的每个细胞的超链接 所以我本能地想到使用Python来读取Excel文件并执行文本分析 然后为每个链接时 执行一个Htt
  • 无所事事的周末

    按理说 xff0c 晚上睡得很早 xff0c 早上应该起得早 不幸的是 xff0c 酒精已经渗入身体 xff0c 身体多个部位都不舒服 早上起的是很迟的 xff0c 已经到了上午十点钟 xff0c 起来后并没有做什么事情 xff0c 和舍友
  • CocosCreator的节点显示和隐藏

    隐藏和显示有两种方式 xff1a 1 禁止节点node的运行 xff0c 方法是x node active 61 false 此时隐藏了节点 xff0c 且节点不再运行 恢复节点正常运行 xff0c x node active 61 tru
  • php获取mysql数据并导出为txt_php提交过来的数据生成为txt文件

    一共两个文件 xff0c 具体链接数据库的部分给直接去除了 xff0c 前台是提交的文字部分 xff0c 一行一个 xff0c 在提交后另一个程序文件进行处理 xff0c 然后按照提交的文件名生成相应的txt 文件 xff0c 并在txt
  • (?!)正则表达式的用法

    xff08 xff1f xff01 xff09 表示不匹配一段字符串中的指定字符串 xff0c 例如 xff1a flag 61 True 指匹配指定部位的布尔值 xff0c 可以写成 xff1a s 43 flag s 43 61 s 4

随机推荐

  • HTML5资源汇总(更新游戏引擎cocos2d-html5)

    我也是现学现用 xff0c 想了解的可以看看效果 xff0c 想知道实现的也有源码 http cocos2d html5 org Cocos2d HTML5 API和Cocos2d x一致 xff0c 同样的代码可以支持cocos2d x
  • Sumo 模型细节_VehicleSpeed

    在仿真中 xff0c 对车速的影响是多方面的 每一种影响都为车速设定了上限 在任何给定情况下的实际速度是所有影响的最小速度 maxSpeed lt vType gt attribute maxSpeed 可以被认为是发动机的最大速度或驾驶员
  • python的一些语法糖

    1 Python中if else语句的多种写法 a b c 61 1 2 3 1 常规 if a gt b c 61 a else c 61 b 2 表达式 c 61 a if a gt b else b 3 二维列表 c 61 b a a
  • Ubuntu下安装使用Xfce4

    安装 xff1a 代码 sudo apt get install xfce4 xfce4 taskbar plugin xfce4 taskbar plugin是我需要 xff0c 你可不用 xff0c 完整安装xfce4 的桌面环境 su
  • 彻底卸载Xubuntu Kubuntu

    卸载Xubuntu sudo apt remove activity log manager apg apport gtk apt offline aptdaemon aptdaemon data atril atril common bi
  • Wincap安装出现“error opening file for writing wpcap.dll”之解决办法

    Wincap安装出现 error opening file for writing wpcap dll 之解决办法 安装Wireshark时 xff0c 一直出现下面的错误 xff0c 选择忽略这个错误 xff0c Wireshark能正常
  • sqlserver调用webapi

    1 开启组件 xff08 2012以上版本支持 xff09 sp configure 39 show advanced options 39 1 GO RECONFIGURE GO sp configure 39 Ole Automatio
  • 贪吃蛇c语言代码 vc++6.0,贪吃蛇代码-C语言版-VC++6.0

    这是一个贪吃蛇代码 运行环境VC 43 43 6 0 该程序不需要graphics h头文件 这是一个贪吃蛇代码 xff0c 运行环境VC 43 43 6 0 亲测完美运行 该程序在dos系统下运行 xff0c 不需要graphics h头
  • indent expected

    缩进问题 检查代码缩进 转载于 https www cnblogs com gcixx p 11448437 html
  • kibana配置文件说明书

    端口号 server port 5601 kibana服务安装的地址 server host 34 192 168 122 21 34 当使用代理时 xff0c 这里可能对应的是加工后的kibana的URL server basePath
  • ORACLE 清理SYSAUX表空间

    在数据库检查中发现SYSAUX表空间占用过大 xff0c SYSAUX是ORACLE10G开始提供的功能 xff0c 用于数据库为SYSTEM表空间减负 用以下语句查出相应的表空间值 select a tablespace name tru
  • Ubuntu怎么切换为中文版

    Ubuntu怎么切换为中文版 1 打开Ubuntu 2 打开设置 系统设置 xff1b 3 进入Language Support xff1b 4 安装语言 xff1b 5 这时在语言菜单中可以看到安装好的汉语 xff1b 6 将安装好的语言
  • django rest framework自定义返回格式

    一 默认response view from rest framework generics import ListAPIView from serializer import IdcSerializer from models impor
  • Go used as value问题

    练习Go变参时遇到一个报错 xff1a used as value 代码如下 xff1a 错误代码 func myfunc arg int for n 61 range arg fmt Printf 34 And the number is
  • 核密度图(直方图的拟合曲线)

    核密度图可以看作是概率密度图 xff0c 其纵轴可以粗略看做是数据出现的次数 xff0c 与横轴围成的面积是一 法一 xff1a seaborn的kdeplot函数专门用于画核密度估计图 参考 xff1a https www jianshu
  • WinCE6.0bootloader的研究

    为了加载操作系统映像至内存 xff0c Bootloader 在 BSP 的开发中至关重要 1 BootLoader的架构 1 1 Bootloader 简介 Bootloader 是建立在操作系统内核运行之前的一小段程序 xff0c 通过
  • vs2017和vs2019专业版和企业版

    步骤 xff1a 打开vs2017 xff0c 依次点击 gt 帮助 gt 注册产品 专业版 xff1a Professional KBJFW NXHK6 W4WJM CRMQB G3CDH 企业版 xff1a Enterprise NJV
  • vue 创建监听,和销毁监听(addEventListener, removeEventListener)

    最近在做一个有关监听scroll的功能 发现我添加监听之后一直不起作用 mounted window addEventListener 34 scroll 34 this setHeadPosition this setHeadPositi
  • 开发板boa移植

    1 xff0e 下载Boa源码 下载地址 http www boa org 最新发行版本 xff1a 0 94 13 下载 boa 0 94 13 tar gz 解压 xff1a tar xzf boa 0 94 13 tar gz 2 安
  • matlab调用cuda,window下matlab调用cuda的开发流程

    这两天抽点时间研究matlab调用cuda程序的问题 xff0c 发现网上这方面的资料比较少 xff0c 而且nvidia提供的白皮书描述的不够详尽 xff0c 因此对于开发流程进行总结 xff0c 希望大家有用 总的来说 xff0c ma