认识CUDA

CUDA

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。

 如果这是你第一次使用CUDA,在Linux系统中,你可能想使用以下命令来检查CUDA
编译器是否正确安装:

nvcc

使用nvidia-smi查询GPU信息

nvidia-smi

在运行时设置设备

CUDA_VISIBLE_DEVICES=2,nvidia驱动程序会屏蔽其他GPU,这时设备2作为设备0出现在应用程序中。

CUDA_VISIBLE_DEVICES=2,3 nvidia驱动程序将只使用ID为2和3的设备,并且会将设备ID分别映射为0和1。

使用运行时API查询GPU信息

checkDeviceInfor.cu

#include "../common/common.h"
#include <cuda_runtime.h>
#include <stdio.h>
​
/** Display a variety of information on the first CUDA device in this system,* including driver version, runtime version, compute capability, bytes of* global memory, etc.*/
​
int main(int argc, char **argv)
{printf("%s Starting...\n", argv[0]);
​int deviceCount = 0;cudaGetDeviceCount(&deviceCount);
​if (deviceCount == 0){printf("There are no available device(s) that support CUDA\n");}else{printf("Detected %d CUDA Capable device(s)\n", deviceCount);}
​int dev = 0, driverVersion = 0, runtimeVersion = 0;cudaDeviceProp deviceProp;
​for(;  dev < deviceCount; dev++){CHECK(cudaSetDevice(dev));CHECK(cudaGetDeviceProperties(&deviceProp, dev));printf("Device %d: \"%s\"\n", dev, deviceProp.name);}
​cudaDriverGetVersion(&driverVersion);cudaRuntimeGetVersion(&runtimeVersion);printf("  CUDA Driver Version / Runtime Version          %d.%d / %d.%d\n",driverVersion / 1000, (driverVersion % 100) / 10,runtimeVersion / 1000, (runtimeVersion % 100) / 10);printf("  CUDA Capability Major/Minor version number:    %d.%d\n",deviceProp.major, deviceProp.minor);printf("  Total amount of global memory:                 %.2f GBytes (%llu ""bytes)\n", (float)deviceProp.totalGlobalMem / pow(1024.0, 3),(unsigned long long)deviceProp.totalGlobalMem);printf("  GPU Clock rate:                                %.0f MHz (%0.2f ""GHz)\n", deviceProp.clockRate * 1e-3f,deviceProp.clockRate * 1e-6f);printf("  Memory Clock rate:                             %.0f Mhz\n",deviceProp.memoryClockRate * 1e-3f);printf("  Memory Bus Width:                              %d-bit\n",deviceProp.memoryBusWidth);
​if (deviceProp.l2CacheSize){printf("  L2 Cache Size:                                 %d bytes\n",deviceProp.l2CacheSize);}
​printf("  Max Texture Dimension Size (x,y,z)             1D=(%d), ""2D=(%d,%d), 3D=(%d,%d,%d)\n", deviceProp.maxTexture1D,deviceProp.maxTexture2D[0], deviceProp.maxTexture2D[1],deviceProp.maxTexture3D[0], deviceProp.maxTexture3D[1],deviceProp.maxTexture3D[2]);printf("  Max Layered Texture Size (dim) x layers        1D=(%d) x %d, ""2D=(%d,%d) x %d\n", deviceProp.maxTexture1DLayered[0],deviceProp.maxTexture1DLayered[1], deviceProp.maxTexture2DLayered[0],deviceProp.maxTexture2DLayered[1],deviceProp.maxTexture2DLayered[2]);printf("  Total amount of constant memory:               %lu bytes\n",deviceProp.totalConstMem);printf("  Total amount of shared memory per block:       %lu bytes\n",deviceProp.sharedMemPerBlock);printf("  Total number of registers available per block: %d\n",deviceProp.regsPerBlock);printf("  Warp size:                                     %d\n",deviceProp.warpSize);printf("  Maximum number of threads per multiprocessor:  %d\n",deviceProp.maxThreadsPerMultiProcessor);printf("  Maximum number of threads per block:           %d\n",deviceProp.maxThreadsPerBlock);printf("  Maximum sizes of each dimension of a block:    %d x %d x %d\n",deviceProp.maxThreadsDim[0],deviceProp.maxThreadsDim[1],deviceProp.maxThreadsDim[2]);printf("  Maximum sizes of each dimension of a grid:     %d x %d x %d\n",deviceProp.maxGridSize[0],deviceProp.maxGridSize[1],deviceProp.maxGridSize[2]);printf("  Maximum memory pitch:                          %lu bytes\n",deviceProp.memPitch);
​exit(EXIT_SUCCESS);
}
​

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

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

相关文章

抽奖的问题

import randomlucky_num [] # 存放中奖人名单&#xff0c;避免多次中奖 lucky_count 0 # 表示每一种奖品人数够了for time in range(0, 3): # 抽三次奖lucky_count 0 # 每次刷新print(f第一次抽奖现在开始&#xff0c;这次抽的是{3-time}等奖\n)# 判断奖品是哪个if time…

金和OA c6 uploadfileeditorsave接口存在任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和-c6 uploadfileeditorsave 任意文件上传&#xff0c;攻击者…

线程的基础

文章目录 线程的介绍&#xff1a;创建线程的三种方式&#xff1a;一、继承Thread二、实现Runnable接口三、实现Callable接口 线程的优先级&#xff1a;多线程&#xff1a;线程终止&#xff1a;线程常用方法&#xff1a;用户线程和守护线程线程的生命周期&#xff1a;Synchroniz…

MySQL慢查询日志分析(慢查询日志)

一、背景 &emsp;&emsp;MySQL的慢查询日志是MySQL提供的一种日志记录&#xff0c;他用来记录在MySQL中响应的时间超过阈值的语句&#xff0c;具体指运行时间超过long_query_time&#xff08;默认是10秒&#xff09;值的SQL&#xff0c;会被记录到慢查询日志中。 &em…

AI:112-基于卷积神经网络的美食图片识别与菜谱推荐

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队

一、前言 性能测试之于软件系统&#xff0c;是保障其业务承载能力及稳定性的关键措施。以软件系统的能力建设为主线&#xff0c;系统能力设计工作与性能测试工作&#xff0c;既有先后之顺序&#xff0c;亦有相互之影响。以上&#xff0c;在性能测试的场景决策&#xff0c;架构…

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜&#xff0c;Kotlin&#xff08;1&#xff09; 实现查看图片的放大镜&#xff0c;放大镜随着手指在屏幕上的移动&#xff0c;放大镜里面展示手指触点为中心、半径长度的圆形放大后的图片。 剪切出一块圆形Path…

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库&#xff0c;打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作&#xff0c;而管理员和超级管理员则可通过后台管理系统对停车…

13.Go 异常

1、宕机 Go语言的类型系统会在编译时捕获很多错误&#xff0c;但有些错误只能在运行时检查&#xff0c;如数组访问越界、空指针引用等&#xff0c;这些运行时错误会引起宕机。 一般而言&#xff0c;当宕机发生时&#xff0c;程序会中断运行&#xff0c;并立即执行在该gorouti…

Vue2 - diff 原理(动图演示)

目录 1&#xff0c;diffdiff 的时间点 2&#xff0c;_update 函数3&#xff0c;_patch 函数&#xff08;进行 diff&#xff09;3.1&#xff0c;根节点比较3.2&#xff0c;子节点比较 4&#xff0c;key的问题举例1举例2 1&#xff0c;diff 解释&#xff1a;对比新旧虚拟DOM树&a…

软件测试基础理论学习-软件测试方法论

软件测试方法论 软件测试的方法应该建立在不同的软件测试类型上&#xff0c;不同的测试类型会存在不同的方法。本文以软件测试中常见的黑盒测试为例&#xff0c;简述常见软件测试方法。 黑盒测试用例设计方法包括等价类划分法、边界值分析法、因果图法、判定表驱动法、正交试…

神经网络:经典模型热门模型

在这里插入代码片【一】目标检测中IOU的相关概念与计算 IoU&#xff08;Intersection over Union&#xff09;即交并比&#xff0c;是目标检测任务中一个重要的模块&#xff0c;其是GT bbox与pred bbox交集的面积 / 二者并集的面积。 下面我们用坐标&#xff08;top&#xff0…

数据结构与算法之美学习笔记:44 | 最短路径:地图软件是如何计算出最优出行路径的?

目录 前言算法解析总结引申 前言 本节课程思维导图&#xff1a; 我们学习了图的两种搜索算法&#xff0c;深度优先搜索和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图&#xff0c;也就是图中的每条边都有一个权重&#xff0c;我们该如何计算两点之间的最短…

Docker安装Elasticsearch,kibana,ik分词器

安装elasticsearch 下载elasticsearch&#xff0c;查看版本&#xff1a;Elasticsearch Guide [8.11] | Elastic docker pull elasticsearch:7.17.16 查看镜像是否下载成功 docker images 创建网络&#xff0c;因为需要部署kibana容器&#xff0c;要让es和kibana容器互联 …

Spring——Spring基于注解的IOC配置

基于注解的IOC配置 学习基于注解的IOC配置&#xff0c;大家脑海里首先得有一个认知&#xff0c;即注解配置和xml配置要实现的功能都是一样的&#xff0c;都是要降低程序间的耦合。只是配置的形式不一样。 1.创建工程 1.1 pom.xml <?xml version"1.0" encoding…

2024 AIGC 应用层十大趋势;iPhone 遭史上最复杂攻击!丨 RTE 开发者日报 Vol.119

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

数据库分区分表

分区分表 为什么要分库分表 软件时代&#xff0c;传统应用都有这样一个特点&#xff1a;访问量、数据量都比较小&#xff0c;单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大&#xff0c;对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问…

【 RF 射频 电缆】 MIL-C-17F 标准 规格

第〇、&#xff1f;&#xff1f; RGXXXXX 第一、应用场景 标准号应用场景–&#xff08;–&#xff09;RG-8 RG-9 RG-11粗缆以太网–RG-58细缆以太网–RG-59 RG-75电视系统–RG-62ARCnet网络和IBM 3270网络–RG142电信设备之间的互连 航空电子机架 雷达 GPS 医疗–RG178通信…

Spring常用注解及模拟用户登录流程示例

注解 Resource注解实现自动注入 (反射)代码块xml配置文件 Autowired注解实现自动化注入代码块xml配置文件 扫描器-四个注解Dao层-RepositoryService层-ServiceController层-Controller测试任意类-Component 常用注解示例-模拟用户登录配置自动扫描的xml文件实体类Userdao层消息…

几个有趣的go服务框架

开篇先吐槽几句&#xff5e; 我个人有一些习惯&#xff0c; 比如在服务设计时会考虑的比较长远&#xff0c;会考虑到到未来的扩展等等…然后程序设计的抽象成度就会比较高&#xff0c;各个模块之间解耦&#xff0c;但这样往往就会带来程序的复杂度提升。 这其实在一些公司里面…