详细记录 win10+VS+OPENCL 安装和环境配置,图文

为完成CUDA 和OPEN CL的任务, 这两天配置了基于WIN10和VS2012/2015的环境。
分了3篇记录, 另外两篇分别是:

解决win10+VS2012+CUDA NVIDIA安装失败

win10+VS+Cuda10 环境配置

注:

  • 我同时装了中文版的VS2012和英文版的VS2015, 总体来说两者在配置上一样, 为方便其他朋友理解, 我截图了中文版的VS2012。

流程如下:

1. 新建项目 在这里插入图片描述
2. 添加文件
文件名称后缀 按需用 .c 或.cpp 等在这里插入图片描述
3. 设置生成属性
点击项目右键, 选择生成自定义,并勾选CUDA10.2

在这里插入图片描述

4. 设置包含和库:
右键项目-> 属性 ->VC++目录->包含目录, 库目录

“包含目录”中选择路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include
“库目录”中选择路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64
需要注意的是,如果创建的是Win32控制台应用程序,必须选择lib下的Win32目录,而不能选择x64目录。
在这里插入图片描述
5. 添加依赖项:
右键项目-> 属性 ->连接器 ->输入 ->附加依赖项

添加:
OpenCL.lib
cudart_static.lib

在这里插入图片描述
6. 选择文件编译类型为cuda
右键文件 -> 属性 -> 配置属性-> 常规 -> 项类型
选择CUDA C/C++
在这里插入图片描述
7. 放段代码测试一下:
sample.c


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
 
#ifdef MAC
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
 
int main() {
 
	/* Host data structures */
	cl_platform_id *platforms;
	cl_uint num_platforms;
	cl_int i, err, platform_index = -1;
 
	/* Extension data */
	char* ext_data;							
	size_t ext_size;   
	const char icd_ext[] = "cl_khr_icd";
 
	err = clGetPlatformIDs(5, NULL, &num_platforms);		
	if(err < 0) {		
		perror("Couldn't find any platforms.");			
		exit(1);							
	}									
 
	printf("I have platforms: %d\n", num_platforms); 
 
	/* Access all installed platforms */
	platforms = (cl_platform_id*) 					
		malloc(sizeof(cl_platform_id) * num_platforms);	
	clGetPlatformIDs(num_platforms, platforms, NULL);		
 
	/* Find extensions of all platforms */

	for(i=0; i<num_platforms; i++) 
	{
		/* Find size of extension data */
		err = clGetPlatformInfo(platforms[i], 			
			CL_PLATFORM_EXTENSIONS, 0, NULL, &ext_size);	
		if(err < 0) 
		{
			perror("Couldn't read extension data.");			
			exit(1);
		}	
 
		printf("The size of extension data is: %d\n", ext_size);
 
		/* Access extension data */  
		ext_data = (char*)malloc(ext_size);	
		clGetPlatformInfo(platforms[i], CL_PLATFORM_EXTENSIONS, 	
			ext_size, ext_data, NULL);				
		//printf("Platform %d supports extensions: %s\n", i, ext_data);
 
		char *name = (char*)malloc(ext_size);
		clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, 	
			ext_size, name, NULL);				
		printf("Platform %d name: %s\n", i, name);
 
		char *vendor = (char*)malloc(ext_size);
		clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, 	
			ext_size, vendor, NULL);				
		printf("Platform %d vendor: %s\n", i, vendor);
 
		char *version = (char*)malloc(ext_size);
		clGetPlatformInfo(platforms[i], CL_PLATFORM_VERSION, 	
			ext_size, version, NULL);				
		printf("Platform %d version: %s\n", i, version);

		char *profile = (char*)malloc(ext_size);
		clGetPlatformInfo(platforms[i], CL_PLATFORM_PROFILE, 	
			ext_size, profile, NULL);				
		printf("Platform %d full profile or embeded profile?: %s\n", i, profile);
 
		/* Look for ICD extension */   
		if(strstr(ext_data, icd_ext) != NULL) 
			platform_index = i;
		std::cout<<"Platform_index = "<<platform_index<<std::endl;
		/* Display whether ICD extension is supported */
		if(platform_index > -1)
			printf("Platform %d supports the %s extension.\n", 
			platform_index, icd_ext);
 
		std::cout<<std::endl;
 
		free(ext_data);
		free(name);
		free(vendor);
		free(version);
		free(profile);
	}
		
	if(platform_index <= -1)
		printf("No platforms support the %s extension.\n", icd_ext);
 
	/* Deallocate resources */
	free(platforms);
	return 0;
} 

  1. 成功后,执行会看到这个:
    在这里插入图片描述
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值