matlab如何使用cu文件,Matlab编译cuda的.cu文件

matlab函数,大体首先是用nvcc命令生成.o文件,然后用mex链接对应库文件,生成动态链接库(.mexw64等)。

测试环境:

1) Windows x64 + matlab + cuda 5.5 + vs2012

2) Ubuntu 12.04 amd64 server + matlab + gcc + cuda 5.5

windows用户需要根据自身编译器更改函数第10行,改为cl.exe所在文件夹。

如果第53行出错,请您在matlab中先mex -setup配置编译器。。。

使用方法e.g.

nvmex('a.cu');

function nvmex(cuFileName)

%NVMEX Compiles and links a CUDA file for MATLAB usage

% NVMEX(FILENAME) will create a MEX-File (also with the name FILENAME) by

% invoking the CUDA compiler, nvcc, and then linking with the MEX

% function in MATLAB.

if ispc % Windows

Host_Compiler_Location = '-ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64"';

CUDA_INC_Location = ['"' getenv('CUDA_PATH')  '\include"'];

CUDA_SAMPLES_Location =['"' getenv('NVCUDASAMPLES5_5_ROOT')  '\common\inc"'];

PIC_Option = '';

if ( strcmp(computer('arch'),'win32') ==1)

machine_str = ' --machine 32 ';

CUDA_LIB_Location = ['"' getenv('CUDA_PATH')  '\lib\Win32"'];

elseif  ( strcmp(computer('arch'),'win64') ==1)

machine_str = ' --machine 64 ';

CUDA_LIB_Location = ['"' getenv('CUDA_PATH')  '\lib\x64"'];

end

else % Mac and Linux (assuming gcc is on the path)

CUDA_INC_Location = '/usr/local/cuda/include';

CUDA_SAMPLES_Location = '/usr/local/cuda/samples/common/inc';

Host_Compiler_Location = ' ';

PIC_Option = ' --compiler-options -fPIC ';

machine_str = [];

if ( strcmp(computer('arch'),'win32') ==1)

CUDA_LIB_Location = '/usr/local/cuda/lib';

elseif  ( strcmp(computer('arch'),'win64') ==1)

CUDA_LIB_Location = '/usr/local/cuda/lib64';

end

end

% !!! End of things to modify !!!

[~, filename] = fileparts(cuFileName);

nvccCommandLine = [ ...

'nvcc --compile ' Host_Compiler_Location ' ' ...

'-o '  filename '.o ' ...

machine_str PIC_Option ...

' -I' '"' matlabroot '/extern/include "' ...

' -I' CUDA_INC_Location ' -I' CUDA_SAMPLES_Location ...

' "' cuFileName '" '

];

mexCommandLine = ['mex ' filename '.o'  ' -L' CUDA_LIB_Location  ' -lcudart'];

disp(nvccCommandLine);

warning off;

status = system(nvccCommandLine);

warning on;

if status < 0

error 'Error invoking nvcc';

end

disp(mexCommandLine);

eval(mexCommandLine);

end

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BeetleX.Redis基础操作和对象格式

Decr为键 key 储存的数字值减去一。如果键 key 不存在&#xff0c; 那么键 key 的值会先被初始化为 0 &#xff0c; 然后再执行 DECR 操作。如果键 key 储存的值不能被解释为数字&#xff0c; 那么 DECR 命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。v…

mingw w64 matlab,Matlab安装MinGW-w64问题解决

在命令行窗口执行mex -setup报如下错误&#xff1a;错误使用 mex未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C 编译器&#xff1b;请参阅安装 MinGW-w64 编译器。有关更多选项&#xff0c;请访问http://www.mathworks.com/support/compilers/R2017a/。解决办…

C++map容器-查找和统计

map查找和统计 功能描述&#xff1a; 对map容器进行查找数据以及统计数据 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <map> //map容器 查找和统计void test01() {//查找map<int, int >m;m.insert(p…

为容器提供持久存储,这个方法试试看

随着近几年容器应用的兴起&#xff0c;持久性存储已成为采用该应用的主要障碍。容器已成为机器处理和深度学习应用程序的主流&#xff0c;越来越多的供应商正将重点放在可以将大量数据和闪存链接到容器编排平台的存储接口上。VAST Data 就是其中之一&#xff0c;它于本周宣布了…

matlab解调2fsk,2FSK调制解调系统的MATLAB实现

第 34 卷 第 2 期 玉林师范学院学报(自然科学) Vol.34 No.2 2013 年 JOURNAL OF YULIN NORMAL UNIVERSITY (Natural Science) 物理 学 1 引言 信原理是高校电子信息类专业的一门重要的专业基础课&#xff0c;该门课程理论性强、内容抽象&#xff0c;如果仅靠单纯的课堂讲解&…

基于matlab的回波,基于MATLAB回波信号产生与消除.doc

基于MATLAB回波信号产生与消除摘 要MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等&#xff0c;主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB语言具备高效、可及推理能…

C++map容器-插入和删除

map插入和删除 功能描述&#xff1a; map容器进行插入数据和删除数据 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <map>//map容器 插入和删除 void printMap(map<int, int> &m) {for (map<in…

你需要了解的 JIT Debugging

如果你还不清楚什么是转储文件&#xff0c;不知道什么时候需要转储文件&#xff0c;请参考转储文件系列文章的第一篇 —— 转储文件知多少。前言 我在 你需要知道的 N 种抓取 dump 的工具 的工具 这篇文章里&#xff0c;向大家介绍了几款可以抓取转储文件的工具及其简单用法。不…

C++map容器-排序

map容器排序 利用仿函数&#xff0c;可以改变排序规则 代码如下&#xff1a; #include <iostream> using namespace std; #include <map> //map容器 排序class Mycompare {public:bool operator()(int v1, int v2) {//降序return v1 > v2;} };void test01() {…

超越“迁移”的思考:应用程序该如何被Kubernetes接管?

传统虚拟机&#xff08;VM&#xff09;的可扩展性差强人意&#xff0c;但Kubernetes可以快速&#xff0c;无缝地扩展正在运行的服务。Kubernetes将容器、集群以及广泛的抽象配置方法引入桌面&#xff0c;用于提升部署和变更管理体验&#xff0c;从而使人们对Kubernetes关注更多…

C++string容器-字符串拼接

string字符串拼接 功能描述&#xff1a; 实现在字符串末尾拼接字符串 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string字符串拼接 void test01() {string str1 "我";str1 "爱…

如何运用领域驱动设计 - 存储库

概述在上一篇文章<如何运用领域驱动设计 - 聚合>中&#xff0c;我们已经了解过领域驱动设计中一个很核心的对象-聚合。在现实场景中&#xff0c;我们往往需要将聚合持久化到某个地方&#xff0c;或者是从某个地方创建出聚合。此时就会使得领域对象与我们的基础架构产生紧…

C++string容器-字符串查找和替换

string查找和替换 功能描述&#xff1a; 查找&#xff1a;查找指定字符串是否存在 替换&#xff1a;在指定的位置替换字符串 函数原型&#xff1a; rfind 和find 的区别&#xff1a; rfind从右往左查找 find从左往右查找 查找案列代码如下&#xff1a; #include <iostrea…

如何运用领域驱动设计 - 工作单元

概述在上一篇 《如何运用领域驱动设计 - 存储库》 的文章中&#xff0c;我们讲述了有关仓储的概念和使用规范。仓储为聚合提供了持久化到本地的功能&#xff0c;但是在持久化的过程中&#xff0c;有时一个聚合根中的各个领域对象会分散到不同的数据库表里面&#xff1b;又或者是…

C++string容器-字符串比较

string字符串比较 功能描述: 字符串之间的比较 比较方式&#xff1a; 通常用来比较两个字符串是否相等 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring> //string字符串比较void test01() {string…

国产自主研发编程语言火了,同行十二年,不知Python是木兰?

1月17号有媒体称&#xff0c;一款面向智能物联网和编程教育的号称自主研发语言横空出世&#xff0c;名为【Mulan 】。消息一出&#xff0c;引起了众多争议。但有知乎网友发现&#xff0c;下载的程序包解包后——是个 Python&#xff1f;何为木兰&#xff1f;1月17号&#xff0c…

C++string容器-字符存取

string中单个字符存取方式有两种 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string 字符存取 void test01() {string str "hello";cout << "str " << str << endl;for (int i…

有了容器为什么kubernetes还需要Pod?

简介容器并不是软件开发的银弹&#xff0c;没有任何一种技术能解决软件开发中的所有问题当我们采用容器化技术的时候&#xff0c;摒弃了传统的物理机或者虚拟机的部署方式&#xff0c;以一种更加轻快&#xff0c;便捷的方式来部署我们的应用。到容器化的进阶&#xff0c;再加上…

C++string容器-插入和删除

string插入和删除 功能描述&#xff1a; 对string字符串进行插入和删除字符操作 函数原型&#xff1a; #include <iostream> using namespace std; #include <cstring>//字符串 插入和删除 void test01() {string str "hello";str.insert(1, "…

.NET绘制旋转太极图

前言我之前发了一篇《 用.NET写“算命”程序》的文章&#xff0c;但有人纷纷提出了质疑&#xff0c;认为没有“科学”&#xff08; mi xin&#xff09;依据????。所谓“太极生两仪&#xff0c;两仪生四象&#xff0c;四象生八卦&#xff0c;八卦定吉凶&#xff0c;吉凶生大…