CUDA动态库生成和调用的简单例子

adagio_chen 2014-08-18 03:17:04
加精
昨天讲了关于静态库(lib)的生成和使用,今天用讲一下动态库(dll)的例子。

仍以 Window 和 VS2008 环境为例。

动态库的生成:

1. 建立一个名为 TestLib 的项目,配置CUDA环境。

2. 建立头文件 Test.h


// Test.h
#ifndef TEST_H
#define TEST_H

extern "C"
void __declspec (dllexport) Test(int n);

#endif


3. 建立cu文件 Test.cu

// Test.cu
#include <stdio.h>
#include "Test.h"

__global__
void Kernel(int *n)
{
*n *= 10;
}

void Test(int n)
{
int *n_d;
cudaMalloc((void**)&n_d, sizeof(int));
cudaMemcpy(n_d, &n, sizeof(int), cudaMemcpyHostToDevice);
Kernel<<<1, 1>>>(n_d);
cudaMemcpy(&n, n_d, sizeof(int), cudaMemcpyDeviceToHost);
cudaFree(n_d);
printf("%d\n", n);
}


4. 在项目属性中设置输出类型为Dynamic Library (.dll)

5. Build. 生成一个TestLib.lib 和 一个 TestLib.dll

动态库的调用:

1. 新建一个名为 Test 的项目。注意,这里可以不需要配置CUDA环境。

2. 建立 main.cpp


#include "Test.h"

void main()
{
Test(20);
}


3. 加入TestLib.lib

4. Build. 把 TestLib.dll 和生成的 可执行程序放在一起(或者系统目录等)。运行。

运行结果:
200
...全文
1948 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
austin9972 2014-08-22
  • 打赏
  • 举报
回复
u010199907 2014-08-19
  • 打赏
  • 举报
回复
学习了,谢谢
qq_19778059 2014-08-19
  • 打赏
  • 举报
回复
学习了,谢谢
hugh_z 2014-08-19
  • 打赏
  • 举报
回复
learning
qq_19693865 2014-08-19
  • 打赏
  • 举报
回复
lp880211 2014-08-18
  • 打赏
  • 举报
回复
MArk。 感谢
jenly10 2014-08-18
  • 打赏
  • 举报
回复
andy_huashao 2014-08-18
  • 打赏
  • 举报
回复
学习了,谢谢
baidu_19698259 2014-08-18
  • 打赏
  • 举报
回复
haohao百日依山尽

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧