CUDA C:查看GPU设备信息

相关阅读

CUDA Cicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12530616.html?spm=1001.2014.3001.5482


        了解自己设备的性能是很有必要的,为此CUDA 运行时(runtime)API给用户也提供了一些查询设备信息的函数,下面的函数用于查看GPU设备的一切信息。

__host__ ​cudaError_t cudaGetDeviceProperties (cudaDeviceProp* prop, int device)Parameters
prop   -设备属性指针
device -设备编号

        其中参数prop是指向设备属性结构cudaDeviceProp的指针,它的定义如下所示。

struct cudaDeviceProp {char name[256];cudaUUID_t uuid;size_t totalGlobalMem;size_t sharedMemPerBlock;int regsPerBlock;int warpSize;size_t memPitch;int maxThreadsPerBlock;int maxThreadsDim[3];int maxGridSize[3];int clockRate;size_t totalConstMem;int major;int minor;size_t textureAlignment;size_t texturePitchAlignment;int deviceOverlap;int multiProcessorCount;int kernelExecTimeoutEnabled;int integrated;int canMapHostMemory;int computeMode;int maxTexture1D;int maxTexture1DMipmap;int maxTexture1DLinear;int maxTexture2D[2];int maxTexture2DMipmap[2];int maxTexture2DLinear[3];int maxTexture2DGather[2];int maxTexture3D[3];int maxTexture3DAlt[3];int maxTextureCubemap;int maxTexture1DLayered[2];int maxTexture2DLayered[3];int maxTextureCubemapLayered[2];int maxSurface3D[3];int maxSurface1DLayered[2];int maxSurface2DLayered[3];int maxSurfaceCubemap;int maxSurfaceCubemapLayered[2];size_t surfaceAlignment;int concurrentKernels;int ECCEnabled;int pciBusID;int pciDeviceID;int pciDomainID;int tccDriver;int asyncEngineCount;int unifiedAddressing;int memoryClockRate;int memoryBusWidth;int l2CacheSize;int persistingL2CacheMaxSize;int maxThreadsPerMultiProcessor;int streamPrioritiesSupported;int globalL1CacheSupported;int localL1CacheSupported;size_t sharedMemPerMultiprocessor;int regsPerMultiprocessor;int managedMemory;int isMultiGpuBoard;int multiGpuBoardGroupID;int singleToDoublePrecisionPerfRatio;int pageableMemoryAccess;int concurrentManagedAccess;int computePreemptionSupported;int canUseHostPointerForRegisteredMem;int cooperativeLaunch;int cooperativeMultiDeviceLaunch;int pageableMemoryAccessUsesHostPageTables;int directManagedMemAccessFromHost;int accessPolicyMaxWindowSize;
}

        这些信息的含义如下所示。

name:ASCII字符串,用于标识设备。
uuid:16字节的唯一标识符。
totalGlobalMem:设备上可用的全局内存总量(以字节为单位)。
sharedMemPerBlock:线程块可用的最大共享内存量(以字节为单位)。
regsPerBlock:线程块可用的最大32位寄存器数量。
warpSize:线程束(warp)大小(以线程数为单位)。
memPitch:由cudaMallocPitch()分配的内存区域允许的最大pitch(以字节为单位)。
maxThreadsPerBlock:每个块中的最大线程数。
maxThreadsDim:块的每个维度的最大尺寸(数组,包含3个元素)。
maxGridSize:网格的每个维度的最大尺寸(数组,包含3个元素)。
clockRate:时钟频率(以千赫为单位)。
totalConstMem:设备上可用的常量内存总量(以字节为单位)。
major、minor:定义设备计算能力的主要和次要修订号。
textureAlignment:纹理对齐要求;对齐到textureAlignment字节的纹理基地址无需应用偏移量。
texturePitchAlignment:绑定到pitched内存的2D纹理引用的pitch对齐要求。
deviceOverlap:如果设备可以在执行内核时并发地在主机和设备之间复制内存,则为1;否则为0。已弃用,请改用asyncEngineCount。
multiProcessorCount:设备上的多处理器数量。
kernelExecTimeoutEnabled:如果设备上执行的内核有运行时限制,则为1;否则为0。
integrated:如果设备是集成(主板)GPU,则为1;如果是独立(卡)组件,则为0。
canMapHostMemory:如果设备可以将主机内存映射到CUDA地址空间以供cudaHostAlloc()/cudaHostGetDevicePointer()使用,则为1;否则为0。
computeMode:设备当前处于的计算模式。可用模式包括:cudaComputeModeDefault、cudaComputeModeProhibited、cudaComputeModeExclusiveProcess。
maxTexture1D:最大1D纹理尺寸。
maxTexture1DMipmap:最大1D mipmap纹理尺寸。
maxTexture1DLinear:绑定到线性内存的1D纹理的最大尺寸。
maxTexture2D:最大2D纹理尺寸(数组,包含2个元素)。
maxTexture2DMipmap:最大2D mipmap纹理尺寸(数组,包含2个元素)。
maxTexture2DLinear:绑定到pitch linear内存的2D纹理的最大尺寸(数组,包含3个元素)。
maxTexture2DGather:如果需要执行纹理聚集操作,则包含最大2D纹理尺寸(数组,包含2个元素)。
maxTexture3D:最大3D纹理尺寸(数组,包含3个元素)。
maxTexture3DAlt:最大替代3D纹理尺寸(数组,包含3个元素)。
maxTextureCubemap:最大立方体纹理宽度或高度。
maxTexture1DLayered:最大1D分层纹理尺寸(数组,包含2个元素)。
maxTexture2DLayered:最大2D分层纹理尺寸(数组,包含3个元素)。
maxTextureCubemapLayered:最大立方体分层纹理尺寸(数组,包含2个元素)。
maxSurface1D:最大1D表面尺寸。
maxSurface2D:最大2D表面尺寸(数组,包含2个元素)。
maxSurface3D:最大3D表面尺寸(数组,包含3个元素)。
maxSurface1DLayered:最大1D分层表面尺寸(数组,包含2个元素)。
maxSurface2DLayered:最大2D分层表面尺寸(数组,包含3个元素)。
maxSurfaceCubemap:最大立方体表面宽度或高度。
maxSurfaceCubemapLayered:最大立方体分层表面尺寸(数组,包含2个元素)。
surfaceAlignment:表面的对齐要求。
concurrentKernels:如果设备支持在同一上下文中同时执行多个内核,则为1;否则为0。不能保证设备上同时存在多个内核,因此不应依赖此功能以确保正确性。
ECCEnabled:如果设备已启用ECC支持,则为1;否则为0。
pciBusID:设备的PCI总线标识符。
pciDeviceID:设备的PCI设备(有时称为插槽)标识符。
pciDomainID:设备的PCI域标识符。
tccDriver:如果设备正在使用TCC驱动程序,则为1;否则为0。
asyncEngineCount:当设备可以在执行内核时并发地在主机和设备之间复制内存时为1。当设备可以在主机和设备之间双向并发地复制内存并同时执行内核时为2。如果两者都不支持,则为0。
unifiedAddressing:如果设备与主机共享统一的地址空间,则为1;否则为0。
memoryClockRate:内存时钟峰值频率(以千赫为单位)。
memoryBusWidth:内存总线宽度(以位为单位)。
l2CacheSize:L2缓存大小(以字节为单位)。
persistingL2CacheMaxSize:L2缓存的最大持久化行大小(以字节为单位)。
maxThreadsPerMultiProcessor:每个多处理器的最大常驻线程数。
streamPrioritiesSupported:如果设备支持流优先级,则为1;否则为0。
globalL1CacheSupported:如果设备支持在L1缓存中缓存全局内存,则为1;否则为0。
localL1CacheSupported:如果设备支持在L1缓存中缓存局部内存,则为1;否则为0。
sharedMemPerMultiprocessor:多处理器可用的最大共享内存量(以字节为单位);此量由所有同时驻留在多处理器上的线程块共享。
regsPerMultiprocessor:多处理器可用的最大32位寄存器数量;此数量由所有同时驻留在多处理器上的线程块共享。
managedMemory:如果设备支持在此系统上分配托管内存,则为1;否则为0。
isMultiGpuBoard:如果设备位于多GPU板上(例如Gemini卡),则为1;否则为0。
multiGpuBoardGroupID:与同一板上关联的设备组的唯一标识符。位于同一多GPU板上的设备将共享相同的标识符。
hostNativeAtomicSupported:如果设备与主机之间的链接支持本机原子操作,则为1;否则为0。
singleToDoublePrecisionPerfRatio:单精度性能(以浮点运算每秒为单位)与双精度性能之比。
pageableMemoryAccess:如果设备支持在没有调用cudaHostRegister的情况下一致地访问分页内存,则为1;否则为0。
concurrentManagedAccess:如果设备可以与CPU并发地一致访问托管内存,则为1;否则为0。
computePreemptionSupported:如果设备支持计算抢占,则为1;否则为0。
canUseHostPointerForRegisteredMem:如果设备可以在CPU处使用主机注册的内存的相同虚拟地址,则为1;否则为0。
cooperativeLaunch:如果设备支持通过cudaLaunchCooperativeKernel启动协作内核,则为1;否则为0。
cooperativeMultiDeviceLaunch:如果设备支持通过cudaLaunchCooperativeKernelMultiDevice启动协作内核,则为1;否则为0。
sharedMemPerBlockOptin:可由特殊选择使用的每个设备的最大块共享内存(字节)。
pageableMemoryAccessUsesHostPageTables:如果设备通过主机的页表访问分页内存,则为1;否则为0。
directManagedMemAccessFromHost:如果主机可以直接访问设备上的托管内存而无需迁移,则为1;否则为0。
maxBlocksPerMultiProcessor:每个多处理器上可驻留的最大线程块数。
accessPolicyMaxWindowSize:cudaAccessPolicyWindow::num_bytes的最大值。
reservedSharedMemPerBlock:CUDA驱动程序保留的每个块的共享内存(以字节为单位)。
hostRegisterSupported:如果设备支持通过cudaHostRegister注册主机内存,则为1;否则为0。
sparseCudaArraySupported:如果设备支持稀疏CUDA数组和稀疏CUDA mipmap数组,则为1;否则为0。
hostRegisterReadOnlySupported:如果设备支持使用cudaHostRegister标志cudaHostRegisterReadOnly注册必须映射为只读的内存,则为1;否则为0。
timelineSemaphoreInteropSupported:如果设备支持外部时间线信号量交互,则为1;否则为0。
memoryPoolsSupported:如果设备支持使用cudaMallocAsync和cudaMemPool系列API,则为1;否则为0。
gpuDirectRDMASupported:如果设备支持GPUDirect RDMA API,则为1;否则为0。
gpuDirectRDMAFlushWritesOptions:根据cudaFlushGPUDirectRDMAWritesOptions枚举解释的位掩码。
gpuDirectRDMAWritesOrdering:请参阅cudaGPUDirectRDMAWritesOrdering枚举以获取数值。
memoryPoolSupportedHandleTypes:与内存池基于IPC支持的句柄类型的位掩码。
deferredMappingCudaArraySupported:如果设备支持延迟映射CUDA数组和CUDA mipmap数组,则为1;否则为0。
ipcEventSupported:如果设备支持IPC事件,则为1;否则为0。
unifiedFunctionPointers:如果设备支持统一指针,则为1;否则为0。

        可以注意到,cudaGetDeviceProperties函数需要设备编号作为参数,如何知道自己有多少设备呢?可以使用cudaGetDeviceCount函数,如下所示。

__host__ __device__ cudaError_t cudaGetDeviceCount (int* count)Parameters
count -计算能力大于2.0的设备数指针

        有时候我们需要知道设备的CUDA驱动API版本和CUDA运行时API版本,可以分别使用下面的两个函数。 

__host__​ cudaError_t cudaDriverGetVersion (int* driverVersion)
__host__​ __device__ cudaError_t cudaRuntimeGetVersion (int* runtimeVersion)Parameters
driverVersion   -指向驱动版本号的指针
runtimeVersion  -指向运行时版本号的指针

        这两个版本号的组成方式是:1000*主版本号+10*小版本号。例如对于9.1版本,版本号是9010;对于10.3版本,版本号是10030。

        下面给出了一段程序,查询了大家一般感兴趣的设备属性。

#include <cuda_runtime.h>
#include <stdio.h>#define CHECK(call)                                                            \
{                                                                              \const cudaError_t error = call;                                            \if (error != cudaSuccess)                                                  \{                                                                          \fprintf(stderr, "Error: %s:%d, ", __FILE__, __LINE__);                 \fprintf(stderr, "code: %d, reason: %s\n", error,                       \cudaGetErrorString(error));                                    \exit(1);                                                               \}                                                                          \
}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);printf("\n");}int dev = 0, driverVersion = 0, runtimeVersion = 0;for(dev = 0; dev < deviceCount; dev++){CHECK(cudaSetDevice(dev));cudaDeviceProp deviceProp;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("  Number of multiprocessor:                      %d\n",deviceProp.multiProcessorCount);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);printf("\n");}exit(EXIT_SUCCESS);
}

        下面是一个服务器上测试的输出结果。

./checkDeviceInfor Starting...
Detected 3 CUDA Capable device(s)Device 0: "Tesla P100-PCIE-16GB"CUDA Driver Version / Runtime Version          11.4 / 10.1CUDA Capability Major/Minor version number:    6.0Total amount of global memory:                 15.90 GBytes (17071734784 bytes)GPU Clock rate:                                1329 MHz (1.33 GHz)Memory Clock rate:                             715 MhzMemory Bus Width:                              4096-bitL2 Cache Size:                                 4194304 bytesMax Texture Dimension Size (x,y,z)             1D=(131072), 2D=(131072,65536), 3D=(16384,16384,16384)Max Layered Texture Size (dim) x layers        1D=(32768) x 2048, 2D=(32768,32768) x 2048Total amount of constant memory:               65536 bytesTotal amount of shared memory per block:       49152 bytesTotal number of registers available per block: 65536Warp size:                                     32Maximum number of threads per multiprocessor:  2048Number of multiprocessor:                      56Maximum number of threads per block:           1024Maximum sizes of each dimension of a block:    1024 x 1024 x 64Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 65535Maximum memory pitch:                          2147483647 bytesDevice 1: "Tesla P100-PCIE-16GB"CUDA Driver Version / Runtime Version          11.4 / 10.1CUDA Capability Major/Minor version number:    6.0Total amount of global memory:                 15.90 GBytes (17071734784 bytes)GPU Clock rate:                                1329 MHz (1.33 GHz)Memory Clock rate:                             715 MhzMemory Bus Width:                              4096-bitL2 Cache Size:                                 4194304 bytesMax Texture Dimension Size (x,y,z)             1D=(131072), 2D=(131072,65536), 3D=(16384,16384,16384)Max Layered Texture Size (dim) x layers        1D=(32768) x 2048, 2D=(32768,32768) x 2048Total amount of constant memory:               65536 bytesTotal amount of shared memory per block:       49152 bytesTotal number of registers available per block: 65536Warp size:                                     32Maximum number of threads per multiprocessor:  2048Number of multiprocessor:                      56Maximum number of threads per block:           1024Maximum sizes of each dimension of a block:    1024 x 1024 x 64Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 65535Maximum memory pitch:                          2147483647 bytesDevice 2: "Tesla P100-PCIE-16GB"CUDA Driver Version / Runtime Version          11.4 / 10.1CUDA Capability Major/Minor version number:    6.0Total amount of global memory:                 15.90 GBytes (17071734784 bytes)GPU Clock rate:                                1329 MHz (1.33 GHz)Memory Clock rate:                             715 MhzMemory Bus Width:                              4096-bitL2 Cache Size:                                 4194304 bytesMax Texture Dimension Size (x,y,z)             1D=(131072), 2D=(131072,65536), 3D=(16384,16384,16384)Max Layered Texture Size (dim) x layers        1D=(32768) x 2048, 2D=(32768,32768) x 2048Total amount of constant memory:               65536 bytesTotal amount of shared memory per block:       49152 bytesTotal number of registers available per block: 65536Warp size:                                     32Maximum number of threads per multiprocessor:  2048Number of multiprocessor:                      56Maximum number of threads per block:           1024Maximum sizes of each dimension of a block:    1024 x 1024 x 64Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 65535Maximum memory pitch:                          2147483647 bytes                         2147483647 bytes

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

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

相关文章

MyBatis 学习(二)之 第一个 MyBatis 案例

目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…

找不到mfc140.dll怎么办?教你五种mfc140.dll丢失的解决方法

当计算机系统中mfc140.dll文件丢失时&#xff0c;可能会引发一系列运行问题&#xff0c;影响到系统的正常功能及应用程序的稳定执行。具体来说&#xff0c;由于mfc140.dll是Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;它的缺失会导致依赖于该动态链…

如何用好应用权限,保护隐私数据?银河麒麟桌面操作系统V10 SP1 2303 update2新功能解析

为您介绍银河麒麟桌面操作系统V10 SP1 2303 update2隐私设置和权限管理功能&#xff0c;为您的个人数据安全保驾护航。 说到个人数据隐私&#xff0c;在科技重塑生活本质的数字世界&#xff0c;个人信息遭受持续威胁。2018年&#xff0c;某国际知名社交平台因安全系统漏洞而遭…

深入解析Mybatis-Plus框架:简化Java持久层开发(六)

&#x1f340; 前言 博客地址&#xff1a; CSDN&#xff1a;https://blog.csdn.net/powerbiubiu &#x1f44b; 简介 上一章介绍了新增的操作&#xff0c;后续删除&#xff0c;更新&#xff0c;查询的操作相对新增要复杂一些&#xff0c;因为有些方法的使用涉及到了条件&…

学习使用paddle来构造hrnet网络模型

1、首先阅读了hrnet的网络结构分析&#xff0c;了解到了网络构造如下&#xff1a; 参考博文姿态估计之2D人体姿态估计 - &#xff08;HRNet&#xff09;Deep High-Resolution Representation Learning for Human Pose Estimation&#xff08;多家综合&#xff09;-CSDN博客 最…

vue 部署后修改配置文件(接口IP)

近期&#xff0c;有一个项目&#xff0c;运维在部署的时候&#xff0c;接口ip还没有确定&#xff0c;而且ip后面的路径一直有变动&#xff0c;导致我这里一天打包至少四五次才行&#xff0c;很麻烦&#xff0c;然后看了下有没有打包后修改配置文件修改接口ip的方法&#xff0c;…

大话设计模式——4.装饰模式(Decorator Pattern)

1.定义 1&#xff09;可以在不改动原有对象代码的情况下扩展对象的功能&#xff0c;通过聚合的方式相较于继承更加灵活。 2&#xff09;UML图 2.示例 汽车有很多装饰可选&#xff0c;如座椅、音响、轮胎等都可以进行自定义组装 1&#xff09;抽象汽车对象 public interfac…

数据结构------栈(Stack)和队列(Queue)

也是好久没写博客了&#xff0c;那今天就回归一下&#xff0c;写一篇数据结构的博客吧。今天要写的是栈和队列&#xff0c;也是数据结构中比较基础的知识。那么下面开始今天要写的博客了。 目录 栈&#xff08;Stack&#xff09; 队列&#xff08;Queue&#xff09; 喜欢就点…

AI论文速读 | 立场观点:时间序列分析,大模型能告诉我们什么?

题目&#xff1a;Position Paper: What Can Large Language Models Tell Us about Time Series Analysis 作者&#xff1a;Ming Jin ; Yifan Zhang ; Wei Chen ; Kexin Zhang ; Yuxuan Liang ; Bin Yang ; Jindong Wang ; Shirui Pan ; Qingsong Wen 机构&#xff1a;莫纳什大…

form 表单 转换为json-多种(通用/多维数组) 全方案

JSON 在 JavaScript 中重要&#xff0c;因其轻量、通用、易读&#xff0c;适用于数据交换、存储和传输。 为什么写这个文章&#xff0c;废话不多&#xff0c;直接近主题。 一、通用 一般采用jquery编写 var key $(#"cyberwin_form_card_newadd").serialize(); 结…

类和对象(2)——距离C++又近了一步

目录 一、构造函数 1.1声明和定义构造函数 1.2成员名和参数名 1.3构造函数的使用 1.4初始化列表 二、析构函数 2.1析构函数的概念 2.2析构函数的性质 三、拷贝构造函数 四、赋值运算符重载 4.1运算符重载 4.2赋值运算符重载 一、构造函数 我们知道&#xff0c;C中…

项目解决方案: 实时视频拼接方案介绍

目 录 1、实时视频拼接概述 2、适用场景 3、系统介绍 3.1拼接形式 3.1.1横向拼接 3.1.2纵向拼接 3.2前端选择 3.2.1前端类型 3.2.2推荐配置 3.3后端选择 3.3.1录像回放 3.3.2客户端展示 4、拼接方案介绍 4.1基于4K摄像机的拼接方案 4.1.1系统架构…

Pytorch从零开始实战19

Pytorch从零开始实战——生成手势图像 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——生成手势图像环境准备模型选择模型训练模型分析总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytorch2.0.1cu118&…

webrtc

stun服务 阿里云服务器安全组添加端口开放 webrtc-streamer视屏流服务器搭建 - 简书

Prometheus-监控远程linux的主机

一、本地访问 1、访问 http://8.137.122.212:9090/2、查看监控的主机 默认只监控了本机一台主机 这里的IP地址原本是‘localhost’&#xff0c;为了方便我将‘localhost’换成了主机的IP地址 现在看只监控了本机一台主机 3、查看监控数据 通过http://8.137.122.212:9090/m…

RT-Thread studio上创建一个STM32F103的CAN通讯功能

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff08;2&#xff0…

1.1 编程环境的安装

汇编语言 汇编语言环境部署 第二个运行程序直接双击安装一直下一步即可MASM文件复制到D盘路径下找到dosbox安装路径&#xff1a;C:\Program Files (x86)\DOSBox-0.74找到该文件双击打开它&#xff0c;修改一下窗口大小 把这两行改成如下所示 运行dos&#xff0c;黑框中输入mou…

C#,数值计算,求解微分方程的吉尔(Gear)四阶方法与源代码

1 微分方程 微分方程&#xff0c;是指含有未知函数及其导数的关系式。解微分方程就是找出未知函数。 微分方程是伴随着微积分学一起发展起来的。微积分学的奠基人Newton和Leibniz的著作中都处理过与微分方程有关的问题。微分方程的应用十分广泛&#xff0c;可以解决许多与导数…

【Web安全靶场】sqli-labs-master 21-37 Advanced-Injection

sqli-labs-master 21-37 Advanced-Injection 第一关到第二十关请见专栏 文章目录 sqli-labs-master 21-37 Advanced-Injection第二十一关-Cookie注入第二十二关-Cookie注入第二十三关-注释符过滤的报错注入第二十四关-二次注入第二十五关-过滤OR、AND双写绕过第二十五a关-过滤…

【嵌入式——QT】日期与定时器

日期 QTime&#xff1a;时间数据类型&#xff0c;仅表示时间&#xff0c;如 16:16:16&#xff1b;QDate&#xff1a;日期数据类型&#xff0c;仅表示日期&#xff0c;如2024-1-22&#xff1b;QDateTime&#xff1a;日期时间数据类型&#xff0c;表示日期和时间&#xff0c;如2…