CUDA小白 - NPP(1) - NppCore

news2025/1/4 17:32:36

cuda小白
原文链接 NPP

GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》

先从最基本的开始,最基础的无非就是与CUDA相关的函数,由于比较基础,所以就没有深究与原始的cuda开头的函数的关系.
当前模块内容比较简单,如果没有使用需求可以跳过。
常见的NppStatus,可以看这里。*

一、获取GPU设备属性

获取GPU单个SM模块最大线程个数,单个block最大的线程个数,有效GPU的最大SM个数

int nppGetGpuDeviceProperties(int *pMaxThreadsPerSM,
							  int *pMaxThreadsPerBlock,
							  int *pNumberOfSMs)	

二、GPU名字

获取设备名字,一般就是显卡的型号

const char* nppGetGpuName(void)	

三、获取SM个数

int nppGetGpuNumSMs(void)	

四、获取NPP库版本

用于表示版本的又三个变量 major,minor,build

const NppLibraryVersion* nppGetLibVersion(void)	

五、单个Blovk最大线程个数

int nppGetMaxThreadsPerBlock(void)	

六、单个SM最大线程个数

int nppGetMaxThreadsPerSM(void)	

七、获取CUDA的stream流

cudaStream_t nppGetStream(void)	

八、获取上下文

NppStatus nppGetStreamContext(NppStreamContext * pNppStreamContext)	

九、获取当前stream关联到的设备中每个SM最大线程个数

unsigned int nppGetStreamMaxThreadsPerSM(void)	

十、获取当前stream关联到的设备中SM个数

unsigned int nppGetStreamNumSMs(void)	

十一、设置stream

NppStatus nppSetStream(cudaStream_t hStream)	

本地test,因为比较简单,所以干脆放在一起进行测试了,测试结果如下:

code:

#include <iostream>
#include <cuda_runtime.h>
#include <npp.h>

#define PRINT_VALUE(value) {  \
  std::cout << "[GPU] " << #value << " = " << value << std::endl; }

int main() {
  int max_threads_per_sm;
  int max_threads_per_block;
  int number_of_sm;
  int ret = nppGetGpuDeviceProperties(&max_threads_per_sm, &max_threads_per_block,
                                      &number_of_sm);
  PRINT_VALUE(max_threads_per_sm)
  PRINT_VALUE(max_threads_per_block)
  PRINT_VALUE(number_of_sm)
  
  std::string device_name = nppGetGpuName();
  PRINT_VALUE(device_name)

  int gpu_num_sm = nppGetGpuNumSMs();
  PRINT_VALUE(gpu_num_sm)

  NppLibraryVersion version = *(nppGetLibVersion());
  PRINT_VALUE(version.major)
  PRINT_VALUE(version.minor)
  PRINT_VALUE(version.build)

  int max_threads_per_block2 = nppGetMaxThreadsPerBlock();
  PRINT_VALUE(max_threads_per_block2)


  int max_threads_per_sm2 = nppGetMaxThreadsPerSM();
  PRINT_VALUE(max_threads_per_sm2)

  unsigned int stream_max_threads_per_sm = nppGetStreamMaxThreadsPerSM();
  PRINT_VALUE(stream_max_threads_per_sm)

  unsigned int stream_number_of_sm = nppGetStreamNumSMs();
  PRINT_VALUE(stream_number_of_sm)

  return 0;
}

compile:

g++ -o test test.cpp -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lnppc -lnppim

result:

请添加图片描述

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

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

相关文章

不能从真实机向VMware里直接拖文件怎么办

如果真实机的文件不能拖动到虚拟机里面有两种解决办法&#xff1a; 1.重启虚拟机 2.更新自己的vmtools工具&#xff0c;因为这个操作是由他来完成的。 在虚拟机-------更新vmtools里面

【Linux】socket 编程基础

文章目录 &#x1f4d5; 网络间的通信&#x1f4d5; socket 是什么1. socket 套接字2. 套接字描述符3. 基本的 socket 接口函数3.1 头文件3.2 socket() 函数3.3 bind() 函数struct sockaddr主机序列与网络序列 3.4 listen() 函数3.5 connect() 函数3.6 accept() 函数IP 地址风格…

死锁相关概念

死锁的概念 在并发环境下&#xff0c;各进程因竞争资源而造成的一种互相等待对方手里的资源&#xff0c;导致各进程都阻塞&#xff0c;都无法向前推进的现象&#xff0c;就是“死锁”。&#xff08;死锁进程一定处于阻塞态&#xff09; 死锁 各进程互相等待对方手里的资源&a…

SLAM十四讲学习笔记 第二期:部分课后实践代码

持续更新.... 前期准备第二讲实验一&#xff1a;简单输出 第五讲任务一&#xff1a;imageBasics&#xff08;Ubuntu配置opencv&#xff09;任务二&#xff1a;双目匹配点云&#xff08;Ubuntu配置pangolin&#xff09;检验部分我认为可以加深对CMake的理解 任务三&#xff1a;r…

vite打包部署问题总结

目录 Vue3 vite&#xff1a;is a JavaScript file. Did you mean to enable the allowJs option? 使用vscode搭建 vue3 vite 项目&#xff0c; 部署到服务器 js css文件路径访问不到的问题 Vue3 vite&#xff1a;is a JavaScript file. Did you mean to enable the allowJs …

thinkphp安装workman

需要加版本&#xff0c;版本太高了不行 composer require topthink/think-worker1.0.*

字符替换“6666”

将给定字符串中的连续“6”替换&#xff0c;个数大于3小于10替换成“9”&#xff0c;大于9替换成“27”。 (本笔记适合初通Python&#xff0c;熟悉六大基本数据类型(str字符串、int整型、float浮点型、list列表、tuple元组、set集合、dict字典)常规应用的 coder 翻阅) 【学习的…

Prometheus介绍

Prometheus介绍 1. Prometheus 简介2. Prometheus 的特点3. Prometheus 的架构4. Prometheus 的基本组件5. Prometheus工作流程6. Prometheus和Zabbix对比7. Prometheus的部署模式7.1 基本高可用模式7.2 基本高可用远程存储7.3 基本HA 远程存储 联邦集群方案 8. Prometheus能…

探索图结构:从基础到算法应用

文章目录 理解图的基本概念学习图的遍历算法学习最短路径算法案例分析&#xff1a;使用 Dijkstra 算法找出最短路径结论 &#x1f389;欢迎来到数据结构学习专栏~探索图结构&#xff1a;从基础到算法应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;I…

C++:构造方法(函数);拷贝(复制)构造函数:浅拷贝、深拷贝;析构函数。

1.构造方法(函数) 构造方法是一种特殊的成员方法&#xff0c;与其他成员方法不同: 构造方法的名字必须与类名相同&#xff1b; 无类型、可有参数、可重载 会自动生成&#xff0c;可自定义 一般形式:类名(形参)&#xff1b; 例: Stu(int age); 当用户没自定义构造方法时&…

Linux——基础IO(2)及动静态库多种方式使用及制作

目录 0. 前言 1. 文件存储设备—磁盘 1.1 文件及存储介质 1.2 磁盘结构 1.3 磁盘存储结构 1.4 磁盘的抽象&#xff08;虚拟、逻辑&#xff09;结构 1.5 磁盘分区管理 2. 理解文件系统 2.1 Linux磁盘文件管理 2.2 文件inode属性及Data block数据追溯 2.3 inode编号及…

网络安全(黑客)自学——日薪2700

以下是练习舞蹈时长两年半的苕皮哥的故事 你想想一个跨专业的自学三个月都能拿到日薪2700&#xff0c;你上你也行&#xff0c;那么接下来就是我给大家&#xff0c;整理的网络安全学习思路&#xff0c;让大家斩获高薪&#xff01; 前言&#xff1a; 想自学网络安全&#xff08;黑…

DataFrame.plot函数详解(四)

DataFrame.plot函数详解&#xff08;四&#xff09; 1. area DataFrame.plot.area(xNone, yNone, stackedTrue, **kwargs) df pd.DataFrame({sales: [3, 2, 3, 9, 10, 6],signups: [5, 5, 6, 12, 14, 13],visits: [20, 42, 28, 62, 81, 50], }, indexpd.date_range(start2020…

【算法系列篇】前缀和

文章目录 前言什么是前缀和算法1.【模板】前缀和1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 【模板】二维前缀和2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 寻找数组的中心下标3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 除自身以外的数组的乘积4.1 题目要求4.2 做题思…

Linux学习之Ubuntu 20中OpenResty的nginx目录里内容和配置文件

参考的文章是《nginx配置详解》 可以参考我以前的文章安装OpenResty。 cd /usr/local/openresty切换目录&#xff0c;ls -l查看目录里边的内容。 我的系统中&#xff0c;nginx目录是/usr/local/openresty/nginx&#xff0c;在这个目录里边有一些目录&#xff0c;如下&#xff…

二进制数间按位逻辑运算按位逻辑与、逻辑或运算bitwise_and()bitwise_or()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 二进制数间按位逻辑运算 按位逻辑与、逻辑或运算 bitwise_and() bitwise_or() [太阳]选择题 下列代码最后一次输出的结果是&#xff1f; import numpy as np a, b 3, 8 print("…

linux————haproxy

一、概述 HAProxy是一个免费的负载均衡软件&#xff0c;可以运行于大部分主流的Linux操作系统上&#xff08;CentOS、Ubuntu、Debian、OpenSUSE、Fedora、麒麟、欧拉、UOS&#xff09;。 HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力&#xff0c;具备丰富的功能。HAProxy具…

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(三)

Java语言是最为流行的面向对象编程语言之一&#xff0c; Java运行时环境&#xff08;JRE&#xff09;拥有着非常大的用户群&#xff0c;其安全问题十分重要。近年来&#xff0c;由JRE漏洞引发的JVM逃逸攻击事件不断增多&#xff0c;对个人计算机安全造成了极大的威胁。研究JRE安…

HLS实现CORDIC算法计算正余弦并上板验证

硬件&#xff1a;ZYNQ7010 软件&#xff1a;MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、CORDIC算法计算正余弦 CORDIC算法详细分析网上有很多资料&#xff0c;它的主要思想是用一系列旋转去逼近目标角度&#xff0c;这一系列旋转的角度为 θ a r…

思乐直播系统短视频直播系统源码 直播短视频平台系统APP源码多功能后台系统

思乐直播系统&#xff0c;集直播、短视频等功能&#xff0c;根据市场趋势开发并推出思乐直播APP&#xff0c;APP功能丰富且可在后台管理系统进行配置&#xff0c;做到按需求来开启功能。APP使用起来方便快捷&#xff0c;随时随地开启直播、分享短视频。 整个系统具备非常完善、…