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

昨天讲了关于静态库(lib)的生成和使用,今天用讲一下动态库(dll)的例子。

仍以 Window 和 VS2008 环境为例。

动态库的生成:

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

2. 建立头文件 Test.h
 

C/C++ code?

1

2

3

4

5

6

7

8

// Test.h

#ifndef TEST_H

#define TEST_H

 

extern "C"

void __declspec (dllexport) Test(int n);

 

#endif



3. 建立cu文件 Test.cu

C/C++ code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// 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
 

C/C++ code?

1

2

3

4

5

6

#include "Test.h"

 

void main()

{

    Test(20);

}



3. 加入TestLib.lib

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

运行结果:
200

转:https://bbs.csdn.net/topics/390863922

发布了9 篇原创文章 · 获赞 4 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览