3.6 QUERYING DEVICE PROPERTIES

news2024/9/23 7:33:06

我们关于将执行资源分配给区块的讨论提出了一个重要问题。我们如何确定可用资源的数量?当CUDA应用程序在系统上执行时,它如何确定设备中的SM数量以及可以分配给每个SM的块和线程数量?可能与执行CUDA应用程序相关的其他资源尚未讨论。一般来说,许多现代应用程序被设计为在各种硬件系统上执行。该应用程序通常需要查询底层硬件的可用资源和功能,以便利用能力更强的系统,同时补偿能力较差的系统。

在CUDA C中,存在主机代码的内置机制来查询系统中可用设备的属性。CUDA运行时系统(设备驱动程序)有一个API函数cudaGetDeviceCount,该函数返回系统中可用的CUDA设备数量。主机代码可以使用以下语句确定可用CUDA设备的数量:

int dev_count;
cudaGetDeviceCount(&dev_count);

资源和能力查询
在日常生活中,我们经常查询环境中可用的资源和能力。当我们预订酒店时,我们可以查看酒店房间附带的设施。如果房间里有吹风机,我们不需要带吹风机。大多数美国酒店客房都配有吹风机;其他地区的许多酒店没有。
一些亚洲和欧洲酒店提供牙膏甚至牙刷,而大多数美国酒店则不提供。许多美国酒店同时提供洗发水和护发素,而其他大洲的酒店通常只提供洗发水。
如果房间里有微波炉和冰箱,我们可以拿走晚餐的剩菜,预计第二天再吃。如果酒店有游泳池,我们可以带上泳衣,并在商务会议后畅游。如果酒店没有游泳池,但有健身室,我们可以带跑鞋和运动服。一些高端的亚洲酒店甚至提供运动服!
这些酒店设施是酒店财产或资源和能力的一部分。资深旅行者在酒店网站上查看这些酒店,选择更符合他们需求的酒店,并根据这些细节更高效地打包。

虽然可能并不明显,但现代PC系统通常有两个或多个CUDA设备。原因是许多PC系统都配有一个或多个“集成”GPU。这些GPU是默认的图形单元,提供基本的功能和硬件资源,为现代基于Windows的用户界面执行最小的图形功能。大多数CUDA应用程序在这些集成设备上表现不佳。这一弱点将是主机代码遍及所有可用设备,查询其资源和功能,并选择具有足够资源的设备来令人满意地执行应用程序的原因。

CUDA运行时从0到dev_count-1对系统中所有可用设备进行编号。它提供了一个APl函数cudaGetDeviceProperties,该函数返回其编号作为参数给出的设备的属性。我们可以使用主机代码中的以下语句来遍默化可用设备并查询其属性:
在这里插入图片描述

内置类型cudaDeviceProp是C结构类型,其字段表示CUDA设备的属性。读者参考该类型所有领域的CUDA C编程指南。我们将讨论其中一些与将执行资源分配给线程特别相关的领域。我们假设属性在dev_prop变量中返回,其字段由cudaGet- DeviceProperties函数设置。如果读者选择以不同的方式命名变量,则显然需要在下面的讨论中替换适当的变量名称。

顾名思义,dev_prop.maxThreadsPerBlock字段表示查询设备中块中允许的最大线程数。一些设备在每个块中允许多达1024个线程,而其他设备允许更少的线程。未来的设备甚至可能每个块允许超过1024个线程。因此,应该查询可用的设备,并确定每个块中允许足够数量线程的设备。

设备中的SM数量在dev_prop.multiProcessorCount中给出。正如我们之前所讨论的,一些设备只有少量的SM(例如tWO),有些设备的SM数量要多得多(例如30)。如果应用程序需要大量的SM才能达到令人满意的性能,它绝对应该检查潜在设备的此属性。此外,设备的时钟频率在dev_prop.clockRate中。时钟速率和SM数量的组合很好地表明了设备的硬件执行能力。

主机代码可以在字段dev_prop.maxThreadsDim[0]、dev_prop.maxThreads
Dim[1]和dev_prop.maxThreadsDim[2]
(用于x、y和z维度)中找到块每个维度允许的最大线程数。此类信息可用于自动调谐系统,以便在评估底层硬件性能最佳的块尺寸时设置块尺寸的范围。同样,它可以确定dev_prop.maxGridSize[0],、dev_prop.maxGridSize[1]和dev_prop.maxGridSize[2](用于x、y和z维度)中网格每个维度允许的最大块数。这些信息通常用于确定网格是否有足够的线程来处理整个数据集,或者是否需要一些迭代。

cudaDeviceProp类型还有更多字段。我们将在介绍它们旨在反映的概念和功能时讨论它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12.8-1.8

2023.12.8 redis容器 docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf redis.conf不存在,需先在宿主机创建该目录下文件&#xff0c…

《亚太教育》是什么级别的期刊?是正规期刊吗?能评职称吗?

《亚太教育》主要发表教育理论研究、教育教学实践、学校管理、学科教育、科研管理等学术论文以及其他与教育教学相关的学术论文和研究成果,现征集教育管理以及各学科优秀论文。欢迎.各位教师、教育工作者及高校学生踊跃投稿。 收录情况:知网万方维普收录 投稿方式&a…

主播职业发展

主播作为当今互联网时代的新兴职业,拥有着广阔的发展前景和无限的可能性。为了在竞争激烈的市场中脱颖而出,主播需要不断提升自己的专业技能,拓展知识领域,增强互动能力,积累粉丝基础,寻求合作机会&#xf…

实现导航栏吸顶操作

一、使用VueUse插件 // 安装 npm i vueuse/core二、点击搜索useScroll 2.1搜索结果如图 三、使用 // 这是示例代码 import { useScroll } from vueuse/core const el ref<HTMLElement | null>(null) const { x, y, isScrolling, arrivedState, directions } useSc…

TS2307: Cannot find module ‘./App.vue‘ or its corresponding type declarations.

目录 1. 问题描述2. 解决方案一&#xff1a;VSCode Volar&#xff08;官方推荐&#xff09;3. 解决方案二&#xff1a;WebStorm 2023.2 &#xff08;官方推荐&#xff09;4. 解决方案三&#xff1a;禁用严格类型检查选项&#xff08;不推荐&#xff09;5. 解决方案四&#xff…

redhat+ oracle 11.2.0.4 RAC 搭建 dataguard

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; redhat oracle 11.2.0.4 RAC 搭建 dataguard 1.安装环境 主机名 OS DB SID db_name db_unique_name rac1 Redhat7 11.2.0.4 orcl1 orcl o…

用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化

目录 一. 简述二. Fork 项目三. 搭建开发环境四. 初始化皮肤项目五. 添加相关依赖六. 预览 一. 简述 大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过&#xff0c;项目地址&#xff1a;xxl-job。它是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单…

XREAL推出其新款AR眼镜:XREAL Air 2 Ultra,体量轻内置音效

这款眼镜堪称科技的杰作&#xff0c;它以钛合金为框架&#xff0c;尽显轻盈与精致。配备的双3D环境传感器&#xff0c;宛如双眼般敏锐&#xff0c;能精准捕捉头部运动&#xff0c;让你在虚拟与现实间自由穿梭。120Hz的超高刷新率与500尼特的亮度&#xff0c;让你在4米之外感受1…

tcp/ip协议2实现的插图,数据结构6 (24 - 章)

(142) 142 二四1 TCP传输控制协议 tcpstat统计量与tcp 函数调用链 (143) 143 二四2 TCP传输控制协议 宏定义与常量值–上 (144) 144 二四3 TCP传输控制协议 宏定义与常量值–下 (145) 145 二四4 TCP传输控制协议 结构tcphdr,tcpiphdr (146) 146 二四5 TCP传输控制协议 结构 tcp…

服务端性能测试——性能测试体系

目录&#xff1a; 1.性能测试介绍 性能测试介绍性能体系&#xff1a;性能测试与分析优化&#xff1a;行业流行性能压测工具介绍行业流行性能监控工具介绍行业流行性能剖析工具介绍性能测试流程与方法性能测试计划 计划&#xff1a;DAU&#xff0c;PV(perday)&#xff0c;订单量…

混淆技术概论

混淆技术概论 引言 在逆向工程领域&#xff0c;混淆技术是一种非常重要的技术手段&#xff0c;通过打破人们的思维惯性&#xff0c;使得逆向分析变得更加困难。本文将会介绍混淆技术的概念、分类及其应用&#xff0c;以及如何使用IPA Guard进行iOS IPA重签名。 混淆技术概述…

2024 运维监控方案解读

WGCLOUD监控系统是一款免费开源的运维工具&#xff0c;具有部署简单&#xff0c;上手容易&#xff0c;轻量高效&#xff0c;性能突出&#xff0c;对新手友好&#xff0c;安全稳定&#xff0c;私有化部署等特点 1、WGCLOUD可以监控大部分的主机和服务器&#xff0c;比如Linux、…

Java索引优先队列设计思路与实现

Java 学习面试指南&#xff1a;https://javaxiaobear.cn 1、实现思路 存储数据时&#xff0c;给每一个数据元素关联一个整数&#xff0c;例如insert(int k,T t),我们可以看做k是t关联的整数&#xff0c;那么我们的实现需要通过k这个值&#xff0c;快速获取到队列中t这个元素&a…

加速科技ST2500 数模混合信号测试设备累计装机量突破500台!

国产数字机&#xff0c;测试中国芯&#xff01;新年伊始&#xff0c;国产半导体测试设备领军企业加速科技迎来了振奋人心的一刻&#xff0c;ST2500 数模混合信号测试设备累计装机量突破500台&#xff01;加速科技凭借其持续的创新能力、完善的解决方案能力、专业热忱的本地化服…

【记录】一次内存泄漏造成的内存溢出

记录一下这个问题&#xff0c;前一阵子同事离职了&#xff0c;接手了他的一个项目&#xff0c;然后测试同事说程序连续运行半天就会崩溃&#xff0c;看了下crash文件的关键信息是最后oom了&#xff0c;oom上面的log是logutils写日志&#xff0c;以为是频繁的日志写造成的内存溢…

js viewer 图片浏览器

示例1 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><script src"js/viewer.min.js"></script><link rel"stylesheet" href"css/viewer.min.css…

<Python>PyQt5中UI界面和逻辑函数分开写的一种方式

前言 如果经常使用PyQt5这种模块来编写带UI界面的程序&#xff0c;那么很自然的就会涉及到&#xff0c;一旦程序比较大&#xff0c;UI控件多的时候&#xff0c;需要将UI和逻辑程序分离&#xff0c;这样方便管理&#xff0c;也方便维护。 配置&#xff1a; 平台&#xff1a;win…

工程监测中振弦采集仪的数据处理方法研究

工程监测中振弦采集仪的数据处理方法研究 工程监测中振弦采集仪的数据处理方法研究是针对振弦采集仪所采集到的数据进行分析和处理&#xff0c;以获得需要的监测信息和结构响应。以下是一种常见的数据处理方法&#xff1a; 1. 数据清洗: 首先对采集到的原始数据进行清洗&#…

python爬取豆瓣影评,涉及知识点:bs4,requests、time、random

页面源代码: <!DOCTYPE html> <html lang="zh-CN" class="ua-windows ua-webkit"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="renderer" conten…

Low Poly Cartoon House Interiors

400个独特的低多边形预制件的集合,可以轻松创建高质量的室内场景。所有模型都已准备好放入场景中,并使用一个纹理创建,以提高性能!包含演示场景! 模型分类: - 墙壁(79件) - 地板(28块) - 浴室(33个) - 厨房(36件) - 厨房道具(68件) - 房间道具(85件) - 灯具(…