我一直试图验证你的System \ n“,gpus)上的哪个OpenCL平台和gpu`s are located in, and at the same time count if there are more than one amd gpu on the system. I can get all visible outputs but im having a hard time using if statements to check if the displayed card actually are a advanced micro devices unit, i hope anyone can help me out a little here. Here is the current code:

if (listdevices)

{

int i, j;

char* value;

char* ellesmere = "Ellesmere";

char* valuemodel;

char* amdman1 = "Advanced Micro Devices, Inc.";

char* amdman2 = "Advanced Micro Devices, Inc";

char* amdman3 = "AMD";

char* amdman4 = "Advanced Micro Devices, Inc. ";

char* value2;

size_t valueSize;

cl_uint platformCount;

cl_platform_id* platforms;

cl_device_type device_type;

cl_uint deviceCount;

cl_device_id* devices;

cl_uint maxComputeUnits;

cl_uint globalMemsize;

uint64_t gpus = 0;

bool amdplatformlocated = false;

uint64_t amdplatform;

uint64_t currentplatform;

uint64_t countamd;

// get all platforms

clGetPlatformIDs(0, NULL, &platformCount);

platforms = (cl_platform_id*)malloc(sizeof(cl_platform_id) * platformCount);

clGetPlatformIDs(platformCount, platforms, NULL);

for (i = 0; i < platformCount; i++) {

printf("\n\nPlatform-index: %d: \n\n", i);

currentplatform = i;

// get all devices

clGetDeviceIDs(platforms[i], CL_DEVICE_TYPE_GPU, 0, NULL, &deviceCount);

devices = (cl_device_id*)malloc(sizeof(cl_device_id) * deviceCount);

clGetDeviceIDs(platforms[i], CL_DEVICE_TYPE_GPU, deviceCount, devices, NULL);

// for each device print critical attributes

for (j = 0; j < deviceCount; j++) {

gpus++;

// print device info & check if AMD model

clGetDeviceInfo(devices[j], CL_DEVICE_NAME, 0, NULL, &valueSize);

value = (char*)malloc(valueSize);

clGetDeviceInfo(devices[j], CL_DEVICE_NAME, valueSize, value, NULL);

printf(" %d. Device: %s.\n", j + 1, value);

if (value == ellesmere) {

amdplatformlocated = true;

amdplatform = currentplatform;

printf(" %d.%d Located AMD Device: %s\n", j + 1, 2, amdplatformlocated);

}

free(value);

// print manufacturer info & check if AMD

clGetDeviceInfo(devices[j], CL_DEVICE_VENDOR, 0, NULL, &valueSize);

value = (char*)malloc(valueSize);

clGetDeviceInfo(devices[j], CL_DEVICE_VENDOR, valueSize, value, NULL);

clGetDeviceInfo(devices[j], CL_DEVICE_VENDOR, valueSize, value2, NULL);

printf(" %d.%d Vendor: %s\n", j + 1, 1, value);

if (value2 == amdman1 || value2 == amdman2 || value2 == amdman3 || value2 == amdman4) {

amdplatformlocated = 1;

amdplatform = currentplatform;

printf(" %d.%d Located AMD Device: %s\n", j + 1, 2, amdplatformlocated);

countamd++;

}

free(value);

// print hardware device version

clGetDeviceInfo(devices[j], CL_DEVICE_VERSION, 0, NULL, &valueSize);

value = (char*)malloc(valueSize);

clGetDeviceInfo(devices[j], CL_DEVICE_VERSION, valueSize, value, NULL);

printf(" %d.%d Hardware version: %s\n", j + 1, 2, value);

free(value);

// print software driver version

clGetDeviceInfo(devices[j], CL_DRIVER_VERSION, 0, NULL, &valueSize);

value = (char*)malloc(valueSize);

clGetDeviceInfo(devices[j], CL_DRIVER_VERSION, valueSize, value, NULL);

printf(" %d.%d Software version: %s\n", j + 1, 3, value);

free(value);

// print c version supported by compiler for device

clGetDeviceInfo(devices[j], CL_DEVICE_OPENCL_C_VERSION, 0, NULL, &valueSize);

value = (char*)malloc(valueSize);

clGetDeviceInfo(devices[j], CL_DEVICE_OPENCL_C_VERSION, valueSize, value, NULL);

printf(" %d.%d OpenCL C version: %s\n", j + 1, 4, value);

free(value);

// print parallel compute units

clGetDeviceInfo(devices[j], CL_DEVICE_MAX_COMPUTE_UNITS,

sizeof(maxComputeUnits), &maxComputeUnits, NULL);

printf(" %d.%d Parallel compute units: %d\n", j + 1, 5, maxComputeUnits);

}

free(devices);

}

printf("\nWe have registered %d GPU`s;

if(amdplatformlocated == 1){

printf(“看来,平台%d在你的系统上包含AMD GPU`s., amdplatform);

}

else {

printf("\nDid you find your AMD Card on this list?\n");

}

free(platforms);

win_exit();

return 0;

}Which currently on a AMD RX570 Card gives this output:

> Platform-index: 0:

>

>

>

> Platform-index: 1:

>

> 1. Device: Ellesmere.

> 1.1 Vendor: Advanced Micro Devices, Inc.

> 1.2 Hardware version: OpenCL 2.0 AMD-APP (2442.12)

> 1.3 Software version: 2442.12

> 1.4 OpenCL C version: OpenCL C 2.0

> 1.5 Parallel compute units: 32

> 1.6 Maximum Memory Size:

We have registered 1 GPU`s

你有没有在这张名单上找到你的AMD卡?

PRE>

如果(value == ellesmere)不起作用,那么在供应商部分也不行。为什么是这样?两者都是当前的char *,如果我使用简单的代码来比较它们的工作原理,我没有看到什么?

谢谢

opencl获取gpu信息_如果在尝试获取OpenCL gpu设备类型时,Char *语句出现问题相关推荐

  1. 浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息

    渗透攻击红队 一个专注于红队攻击的公众号 大家好,这里是 渗透攻击红队 的第 41 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更 Powershell 内网渗透一直 ...

  2. uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...

    同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API. 在微信小程序中,我们往往需要获取用户的身份信息,比如昵称.头像.性别.地区等 ...

  3. java 获取apk版本号_纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限...

    [实例简介] 纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限... 代码讲解地址:http://blog.csdn.net/chillax_li/article/details/4185 ...

  4. GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练

    GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练 目录 GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练 GPU基础信息查看 Pytorch是否使用 ...

  5. scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...

    如何使用Scanner类从控制台读取输入? 像这样: System.out.println("Enter your username:"); Scanner = input(); ...

  6. 浏览器获取设备信息_过滤获取日志和浏览器信息

    承接上一个课件<分析Nginx日志获取IP地址的省份信息> 现在希望是获取浏览器和操作系统相关数据 准备一个工具类UserAgentUtil 编写代码 解析浏览器的useragent字符串 ...

  7. 获取行信息_论文推荐 | 周乐韬,黄丁发,袁林果,等:基于状态和残差的北斗基准站观测数据表达与信息分级...

    <测绘学报> 构建与学术的桥梁 拉近与权威的距离 复制链接,关注<测绘学报>抖音! [测绘学报的个人主页]长按复制此条消息,长按复制打开抖音查看TA的更多作品##7NsBSyn ...

  8. js如何获取jwt信息_企业舆情要怎么获取,如何处理负面舆情信息?

    一.企业获取舆情的重要性 舆情监控与舆情分析是一直伴随着企业成长的不可或缺的部分,良好的企业形象有助于快速树立品牌形象,提升用户的认可度从而转化成一股神秘的力量让企业爆发式的增长,比如某干妈辣酱当时火 ...

  9. js如何获取jwt信息_如何获取有价值的信息

    信息时代的重要特征,就是信息增加的速度与传播速度相对过去有了质的飞越.但随之而来的问题也出现了,信息的噪音(无价值信息)爆炸性增长,真正有价值的信息迅速被信息噪音淹没,因为有价值的信息永远是线性增长的 ...

最新文章

  1. 成功解决fp = builtins.open(filename, quot;rbquot;) OSError: [Errno 22] Invalid argument: 'F:\\File_Pyt
  2. Kaggle知识点:时序数据与Embedding
  3. 支付二维码php能实现吗_(实用篇)微信支付扫码支付php版
  4. spark 广播变量大数据_Spark基础知识(三)--- Spark的广播变量和累加器
  5. 如何通过软件项目开发来提高自身的实力。
  6. 提的最多的数据库“索引”,先来简单了解一下
  7. 最简单的SpringMVC + Maven配置
  8. arch Linux添加源,在Arch Linux系统中使用Archlinuxcn源(清华源)的方法
  9. clickhouse聚合函数之groupBitmap
  10. Python 学习入门(22)—— 线程同步
  11. 利用计算机对调查问卷进行,关于电脑需求调查问卷
  12. A goal-driven tree-structured neural model for math word problems论文阅读
  13. Leetcode 黄金分割点等级简单
  14. MATLAB积分计算与积分变换
  15. 重装也无法修复此计算机,win10系统重置此电脑失败怎么解决
  16. Python数据挖掘入门与实践-OneR分类算法
  17. 如何搭建EOS主网节点?
  18. 区块链溯源的应用四大领域
  19. 内网建站 NAT穿透 局域网穿透
  20. 什么是框架?常用框架有哪些?

热门文章

  1. Android反编工具的使用-Android Killer
  2. 让程序员不再苦逼的四大神器
  3. Firebug 1.7正式版发布,支持Firefox 4
  4. 理解Flex itemRenderer(5)--效率
  5. Server.MapPath(path)的使用
  6. 视频格式转换工具使用
  7. jquery实现表格的多行删除
  8. 将web项目导入到eclipse/MyEclipse中常见错误
  9. 动态规划之——最长公共子序列(nyoj36)
  10. MySQL添加服务、设置密码、修改密码