程序演示了如何动态加载CUBIN/PTX文件并执行其中的函数,包含cubin.cu、main.cu两个文件。其中cubin.cu包含需要被动态加载的函数kernel_run。

cubin.cu

#include <stdio.h>
#include <cuda_runtime.h>extern "C"   __global__  void kernel_run(){printf("hello world!\n");
}

main.cu

#include <stdio.h>
#include <cuda_runtime.h>
#include <cuda.h>
int main(){CUresult error;CUdevice cuDevice; cuInit(0);int deviceCount = 0;error = cuDeviceGetCount(&deviceCount);printf("device count is %d\n",deviceCount);error = cuDeviceGet(&cuDevice, 0); if(error!=CUDA_SUCCESS){printf("Error happened in get device!\n");}CUcontext cuContext;error = cuCtxCreate(&cuContext, 0, cuDevice);if(error!=CUDA_SUCCESS){printf("Error happened in create context!\n");}CUmodule module;error=cuModuleLoad (&module, "first.cubin");if(error!=CUDA_SUCCESS){printf("Error happened in load moudle %d!\n",error);}CUfunction mykernel;error= cuModuleGetFunction(&mykernel,module,"kernel_run");//error= cuModuleGetFunction(&mykernel,module,"_Z10kernel_runv");if(error!=CUDA_SUCCESS){printf("get function error!\n");}cuLaunchKernel(mykernel, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0);cudaThreadSynchronize();printf("Over\n");return 1;
}

注意:cuModuleGetFunction中的函数名为编译后的函数名,extern “C” 声明kernel函数可以使得编译后的函数名保持不变,否则按C++的函数名_Z10kernel_runv 否则找不到

makefile

NVCC=/usr/local/cuda-7.0/bin/nvcc
LIBS= -lcuda
all:mainfirst.cubin:cubin.cu$(NVCC) -ptx -o $@ $< -lcuda -arch=sm_30main:main.cu$(NVCC) -rdc=true $(LIBS) -o main main.cu
clean:rm -rf main

注意:cubin文件需要根据硬件的实际情况知名 -arch否则文件无法成功加载会报错误。PTX文件作为中间文件则一般不需要关注这个问题。

CUDA CUBIN/PTX文件动态加载相关推荐

  1. java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)

    相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...

  2. so文件动态加载注意事项

    动态加载是指将so文件存放于服务器,在需要用的时候,通过服务器下载到本地,然后加载. 需要注意的: 手机cpu架构,不同的架构运行不同的so 解决方法: 1,欺骗性: 如果so架构不全,就在apk打包 ...

  3. LVGL学习之路——基于lv_lib_freetype库的TTF字体文件动态加载中文字体(阿里普惠字体)

    前言   在学习lvgl中,在英文字体上很多人都用过,但是中文字体往往需要靠取模去实现.那么我就在想,如何像windows那样加载动态的字体呢,这样想做多大字体都行.于是就开始了字体的移植. 什么是t ...

  4. html 文件动态加载.PDI 流程图

    1 //javascript脚本 <script> 2 window.onload = function () { 3 var aid = document.getElementById( ...

  5. 关于apk加壳之动态加载dex文件

    由于自己之前做了一个关于手机令牌的APK软件,在实现的过程中尽管使用了native so进行一定的逻辑算法保护,但是在自己逆向破解的过程中发现我的手机令牌关键数据能够"轻易地"暴露 ...

  6. android 加载三方so的方法_Android开发教程之动态加载so库文件的方法

    Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...

  7. Android动态加载技术

    基本信息 Author:kaedea GitHub:android-dynamical-loading 我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装AP ...

  8. Android插件化开发之动态加载技术简单易懂的介绍方式

    转载地方:https://segmentfault.com/a/1190000004062866 基本信息 Author:kaedea GitHub:android-dynamical-loading ...

  9. Android插件化学习之路(一)之动态加载综述

    前段时间,公司项目完成了插件化的开发,自己也因此学习了很多Android插件化的知识,于是想把这些内容记录下来,本次带来Android插件化的第一篇:动态加载综述 Android插件化学习之路(一)之 ...

最新文章

  1. php创建多级目录完整封装类操作
  2. 利用getchar()消除多余字符数据(主要是“回车”)
  3. 将dataGridView数据转成DataTable
  4. writer在java中的意思_Java在FileWriter和BufferedWriter之间的区别
  5. Python:Tensorflow中两个稀疏张量相乘
  6. 邓西百度网盘批量转存检测工具 v1.0.0818
  7. ruby imap抓取inbox中所有邮件的主题
  8. 计算机系统-电路设计02-与门电路
  9. 上海电力学院linux大作业,上海电力电路大作业2重点.docx
  10. Error in loadNamespace(name) : there is no package called ‘yaml’
  11. 批量查找修改替换多个 Word 文件中的关键字,也支持修改替换 Excel、PPT、PDF 和记事本文本文件
  12. 【2019年04月09日】A股净资产收益率ROE最高排名
  13. 基础知识——PMIC
  14. ★ Android 各类依赖库文件 收藏 ★
  15. 2022年深圳市科技型中小微企业贷款贴息资助标准及申报条件,补贴100万
  16. android车载应用市场,车载市场
  17. 单片C语言程序设计,用C语言编程操作SPMC75系列单片 - 控制/MCU - 电子发烧友网
  18. CSS实现间隔线|(竖线)
  19. 一文了解 HDFS 及其组成框架
  20. 自然语言处理 - 二元语法与中文分词

热门文章

  1. win10 中使用bat脚本关机,重启 代码
  2. linux+swap分区规则_linux关于swap分区的划分规则
  3. 线性代数——矩阵正定性及二次型的矩阵表示
  4. linux主ip地址 网络信息不可用,win10 安装虚拟机提示 主IP地址显示网络信息不可用...
  5. 国内外,网络安全厂商都有哪些?
  6. 如何获取网站的ico图标
  7. Houdini 节点
  8. ⼤⼚H5 开发概述-H5 开发及其前世今⽣
  9. 羊毛党千亿产业链,信息安全何去何从?
  10. matlab应用于体育彩票上,马尔科夫预测法在体育彩票“排列三”中的应用