本帖最后由 蓝云风翼 于 2010-9-15 21:54 编辑

#define S_FUNCTION_NAME simuCuda /* Defines and Includes */

#define S_FUNCTION_LEVEL 2

#include "simstruc.h"

static void mdlInitializeSizes(SimStruct *S)

{

ssSetNumSFcnParams(S, 0);

if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {

return; /* Parameter mismatch reported by the Simulink engine*/

}

if (!ssSetNumInputPorts(S, 1)) return;

if (!ssSetNumOutputPorts(S,1)) return;

ssSetInputPortDirectFeedThrough(S, 0, 1);

ssSetInputPortRequiredContiguous(S,0,1);

ssSetInputPortMatrixDimensions(S,0,120,160);

ssSetOutputPortMatrixDimensions(S,0,120,160);

ssSetInputPortDataType(S, 0, SS_UINT8);

ssSetOutputPortDataType(S, 0, SS_UINT8);

ssSetNumSampleTimes(S, 1);

ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);

}

static void mdlInitializeSampleTimes(SimStruct *S)

{

ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);

ssSetOffsetTime(S, 0, 0.0);

//one time CUDA initialization

if(!InitCUDA()) {

ssPrintf("cuda initialization failed !!!\n");

}

}

//this function is called once for each input sample

static void mdlOutputs(SimStruct *S, int_T tid)

{

uint8 *x = (uint8*) ssGetInputPortSignal(S,0);

uint8 *y = (uint8*) ssGetOutputPortSignal(S,0);

processNewFrame(x, y);

}

static void mdlTerminate(SimStruct *S)

{}

/* Simulink/Real-Time Workshop Interface */

#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */

#include "simulink.c" /* MEX-file interface mechanism */

#else

#include "cg_sfun.h" /* Code generation registration function */

#endif

在上面的代码中无论是mdlInitializeSampleTimes或mdlInitializeSizes函数我们采用CUDA执行一个初始化的时间。对于数据样本我们调用CUDA函数的processNewFrame,这将反过来输入和输出GPU的参数

CUDA代码需要和Simulink程序在同一个源文件中。这种结合的源文件(支持CUDA + Simulink的S -函数)名为“simuCuda.cu”可以从MATLAB的内部使用下面的命令行编译,这将创建mex文件:simuCuda.mex32

nvmex -f nvmexopts.bat simuCuda.cu -IF:\cuda\include -I'F:\cuda\cuda sdk\common\inc' -LF:\cuda\lib -L'F:\cuda\cuda sdk\common\lib' -lcudart -lcutil32

注意: 你需要链接CUDA 的“include” 和 “library” , 使用 –L, -I and –l flags.

将相关您使用的 CUDA dlls(e.g. cudart.dll, cutil32.dll etc) 放到simuCuda.mex32 文件目录下

创建一个Simulink模型,并添加一个S -功能块。在块的参数提供的名称simuCuda。您现在可以运行模型,通过使用GPU观察所得的性能。

需要的工具:

nvmex.pl – copy this file to the MATLAB “bin” directory

·nvmex_helper.m

·nvmex.m

·nvmexopts.bat

(for Matlab 2008a and up)

2010-9-15 21:37 上传

点击文件名下载附件

cuda加速simulink

下载积分: 贝壳 -1

nvidia显卡加速matlab,利用nvidia cuda加速simulink S-function相关推荐

  1. matlab cuda 加速,Matlab中调用CUDA加速的方法……

     呃,大家都知道哈,现在nVIDIA显卡的计算能力那是越来越强大了,不利用一下岂不是可惜了,尤其是现在Fermi大大加强了双精度计算能力之后,N卡+Matlab已经变成了我们解决数理问题的强大工具 ...

  2. centos7 cuda测试_Linux/Centos7 nvidia显卡驱动安装 以及安装 CUDA

    1. 安装前的准备 检查是否有Nvidia显卡 lspci | grep -i nvidia 正常应该显示Nvidia显卡的型号,没有任何显示需要更新pci硬件库update-pciids 2.检查显 ...

  3. Kali Linux 安装Nvidia显卡驱动(二)CUDA, Pyrit and Cpyrit-cuda

    1:已增加KaliLinux官方源或其它源后更新. apt-get update && apt-get upgrade -y && apt-get dist-upgra ...

  4. 我的NVIDIA开发者之旅——利用NVIDIA TAO工具包3.0和Deepstream快速搭建车辆信息识别系统

    利用NVIDIA TAO工具包3.0和Deepstream快速搭建车辆信息识别系统 实现目标 部署工具:NVIDIA DeepStream SDK 简单设置参数 工作流程 注意事项 GPU深度学习推理 ...

  5. linux给进程加速,Linux 利用并行进程加速命令执行

    现在,计算机能力有了大幅度的提升,但是如果你有一个需要大量运算的程序,仅仅运行在一个核心上,那么其他的核心都会被闲置.如果想提高速度,软件必须留意并充分利用大核心. 下面,我门看一下如何让命令运行得更 ...

  6. 如何使用Nvidia显卡对abaqus进行加速

    本文介绍了如何使用 Nvidia CUDA1的加速功能,使Abaqus计算加速. 原文 驱动都设置完成可直接查看查看 环境变量设置 安装显卡 提前查询好主板是否与显卡兼容,在购买显卡. 本次使用的是N ...

  7. Ubuntu 16.04系统中利用CUDA安装更新NVIDIA显卡驱动程序的方法

    严正声明:本文系作者davidhopper原创,未经许可,不得转载. 在ThinkPad系列笔记本电脑中使用过Ubuntu 16.04系统的同学都知道,NVIDIA显卡驱动程序特别难安装.以我使用的T ...

  8. 【CUDA开发】CUDA的安装、Nvidia显卡型号及测试

    说明:想要让Theano在Windows8.1下能利用GPU并行运算,必须有支持GPU并行运算的Nvidia显卡,且要安装CUDA,千万不要电脑上是Intel或AMD的显卡,却要编写CUDA. 文中用 ...

  9. Ubuntu16.04 Caffe系列 最新更新安装教程 附NVIDIA显卡安装及cuda、cudnn、caffe的安装

    博文版本:NVIDIA 418.74(对应显卡2070,如果是1060的请下载较低版本的),cuda 10.0, cudnn 7.6.2, opencv 3.4.3 总结了一些网上其他教程的坑并已修改 ...

最新文章

  1. 【2016.12.04】JavaScript笔记
  2. Matplotlib实例教程(七)密度图
  3. 计算机上检查视力表,视力检测(30cm视力表自测)
  4. 【Clickhouse】问题记录
  5. 解读Cardinality Estimation算法(第二部分:Linear Counting)
  6. Java:重写equals()和hashCode() 1
  7. 远程电脑桌面控制怎么看计算机,计算机如何通过远程控制,可以查看他人电脑屏幕...
  8. 我改了500个Bug,但是!!
  9. 现代办公通讯手段对比分析
  10. matlab中waitbar用法,matlab中waitbar
  11. php面向对象精要(3)
  12. C\C++中函数后面加const
  13. 计算机培训机构年终总结范文,2020老师培训年终工作总结范文5篇
  14. 从数学归纳法到递归算法
  15. Windows系统目录及常用快捷键
  16. apache poi excel word 加密,不用借助其他jxcell.jar包
  17. 牛客练习赛68 B.牛牛的算术
  18. 一路狂奔的“幸运咖”,再造下一个“蜜雪冰城”?
  19. [推荐]资金计划与预算的联系与区别
  20. Tomcat环境变量配置(转载)

热门文章

  1. 视频编码h264怎么看_你所要知道的音视频--04
  2. 【LeetCode】127. Word Ladder 解题报告(Python)
  3. 第二章数据通信基础(冲!)
  4. python元祖格式_python中元祖
  5. 一枚程序员的跑步之路
  6. 2010年8月9日 流水账
  7. 我所看过的n部动漫(n=23)
  8. Rust之包,箱和模块管理(四):用use关键字引用其他包
  9. vivo联合天猫超品日共同打造X70系列城市影像馆
  10. Java中访问修饰符public、private、protect、default访问范围