双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

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

adagio_chen adagio_chen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
昨天讲了关于静态库(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
...全文
评论 11
收藏 已收藏
分享
返回顶部
adagio_chen
CUDA 591 成员 2,925 内容