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

matlab如何使用cu文件,Matlab编译cuda的.cu文件相关推荐

  1. java编译生成哪些文件_java编译后生成什么文件?生成的文件包括什么?

    在大家编译完java程序的时候,都是会生成一个文件的,作为java新手不清楚java编译后生成什么文件?那么今天我们就给大家讲解一下这方面的内容,大家可以参考下文哦! java文件编译过后会生成一个c ...

  2. matlab 如何调用mex文件,matlab调用mex文件报错

    尝试matlab调用c语言,已经编译出了.mexw32文件,无错误,调用此函数,matlab就崩溃,请大神帮忙看看吧! 提示错误如下: Stack Trace (from fault): [  0] ...

  3. eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件

    导读: 最近在看 Flink 源码的时候发现到一段实用的代码,该代码实现了 java 动态编译以及生成 jar 文件.将其进行改进后可以应用到我们的平台上,实现在平台页面上编写 java 代码语句,提 ...

  4. 文件生成过程编译过程

    目录 文件生成过程 编译整个过程 文件生成过程 文件生成的过程通常包括以下步骤: 1.编写源代码:在本地计算机上使用文本编辑器编写程序源代码文件,文件通常以特定的文件扩展名结尾,如.c..cpp..h ...

  5. Linux下文件的编译

    一.文件的编译     gcc 文件名 c文件类型     .h --头文件     .h.--gch 头文件的编译结果,与头文件同时存在时,会被优先使用     .c --源文件     .i -- ...

  6. python怎么查找文件-Python寻找路径和查找文件路径的示例

    Sys.path 指定用于模块搜索路径的字符串列表 也可以通过sys模块的append方法在Python环境中增加搜索路径. Sys.path.append("/usr/bin/" ...

  7. matlab怎么跑.cpp程序,MATLAB编译cpp文件

    目的:打通MATLAB与VC之间的通道,实现用MATLAB调用VC程序,以及VC调用MATLAB程序. 上篇博客实现了将MATLAB的M文件编译成C/C++文件,exe应用程序.这篇实现MATLAB编 ...

  8. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  9. matlab打开F90文件,ifort编译f90程序命令

    F90=ifort ./configure --with-device=ch_p4 --prefix=/opt/mpich/intel –rsh=ssh –cc=icc –c++=icpc –fc=i ...

最新文章

  1. 工业4.0的小小思考
  2. Golang实践录:开篇
  3. 【Linux】Linux软件安装和定时任务
  4. Spring Security的HTTP基本验证示例
  5. hibernate二级缓存(二)二级缓存实现原理简单剖析
  6. gcc 源码下载地址
  7. Java 正则表达式的用法及常用方法
  8. 国产操作系统环境搭建(内含镜像资源)
  9. 浅谈FLUKE光缆认证?何为CFP?何为OFP?
  10. 内核驱动 (二)Linux按键驱动分析
  11. html制作透明正方形,用css3简单的制作3d半透明立方体图片详解
  12. Deepin系统应用商店 不可用 解决办法
  13. COSCon'22@Beijing | 北京分会场等你赴约
  14. 十万个为什么 —— 古代没有拼音,怎么认字?
  15. VS番茄插件的常用快捷键(提高工作效率)
  16. 51单片机模拟音乐详解
  17. python迭代器什么时候用_如何在python中使用迭代器
  18. uniapp的判断h5还是app的问题
  19. sort 函数排序之cmp浅析
  20. 【前端小项目】基于Vue全家桶的在线音乐播放器(提供在线演示)

热门文章

  1. linux进程上下文切换,Linux 性能分析总结之 CPU 上下文切换(二)
  2. 迅捷路由器 服务器无响应,如果路由器重启还是上不了网 几招搞定
  3. echarty轴自定义显示不全_表格打印不全怎么办?这招超简单!
  4. 王道408数据结构——第二章 线性表
  5. foreach循环符合就不往下走了_柴油发电机组冷却液循环故障解决方法
  6. 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
  7. 女老师vs男老师的区别...
  8. 农商银行招聘计算机人员考什么,农商银行招聘考试题都考什么?
  9. 对象中multipartfile 空报错_Python 为什么会有个奇怪的“...”对象?
  10. 元胞自动机模型_【ABM仿真模拟】第三章 元胞自动机 B