CUDA与已有的VS项目结合

先新建一个简单的控制台应用程序,项目名称为Test00301,如下图所示:

然后在项目中新建一个名为Test01.cu文件,如下图所示:

然后在解决方案资源管理器中选择该项目并点击右键,在弹出的菜单中选择“生成自定义…”,如下图所示:

在弹出的“Visual C++生成自定义项文件”窗体上勾选CUDA4.2(或其它版本),如下图所示:

然后在解决方案资源管理器中选择文件Test.cu并点击右键,在弹出的菜单中选择“属性”,如下图所示:

在弹出的属性页上设置“项类型”为CUDA C/C++,如下图所示:

最后,打开项目的属性页,如下图所示,在“配置属性”——“链接器”——“输入”中的“附件依赖项”里面添加cudart.lib(中间采用分号;连接),如下图所示:

至此,就可以在Test.cu文件中添加cuda代码并能通过编译,现在Test.cu中添加如下代码(用于获取显卡信息):

#include <stdio.h>
#include <iostream>
#include <cuda_runtime.h> //CUDA运行时库头文件
using namespace std;

//显示设备信息
extern "C" void showDeviceProp(void)
{
	int i,count;    
	cudaDeviceProp prop;
	cudaError_t cudaStatus=cudaGetDeviceCount(&count);
	if(cudaStatus == cudaSuccess) {
		cout<<"共有设备数目:"<<count<<"\n";
		if(count>0)
		{
			for(i=0;i<count;i++)
			{
				cudaGetDeviceProperties(&prop,i);//获取设备的属性信息
				cout<<"\n第"<<i+1<<"个设备信息:\n";
				cout<<"设备名称:"<<prop.name<<"\n";
				cout<<"总内存:"<<prop.totalGlobalMem/1048576<<"M\n";
				cout<<"常量内存:"<<prop.totalConstMem<<"字节\n";
				cout<<"设备中处理器数目:"<<prop.multiProcessorCount<<"个\n";
				cout<<"每个线程块最多包含线程数目:"<<prop.maxThreadsPerBlock<<"个\n";	
				cout<<"一个线程格中可包含的线程块数目:I="<< prop.maxGridSize[0]
					<<" J="<<prop.maxGridSize[1]<<" K="<<prop.maxGridSize[2]<<"\n";
				cout<<"多维线程块中可以包含的最大线程数目:I="<< prop.maxThreadsDim[0]
					<<" J="<<prop.maxThreadsDim[1]<<" K="<<prop.maxThreadsDim[2]<<"\n";
			}
		}		
	}
	else
	{
		cout<<"没有获取到设备信息!请检查计算机是否具有支持CUDA的显卡设备以及CUDA驱动程序版本是否需要更新!\n";
	}	
}

然后在Test00301.cpp中添加该cu文件中函数的外部引用,如下:

// Test00301.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

extern "C" void showDeviceProp();
int _tmain(int argc, _TCHAR* argv[])
{
	//显示设备属性信息
	showDeviceProp();
	//暂停
	system("pause");
	return 0;
}

运行程序,其结果如下图所示:

值得注意的是,在cpp或h文件中调用cu或cuh中定义的函数,直接采用include的方式包含然后调用暂时是行不通的,可以采用extern的方式将cu或cuh中定义的CUDA函数设置为公共函数,然后在cpp或h中声明这个extern函数,最后在cpp或h文件中需要的地方调用即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值