编译 ,  Ampere 显卡,rtx 3060   3070...

nvcc -arch=sm_86 -o hello hello_ptx.cu

或写成Makefile:

hello: hello_sm_id.cunvcc -arch=sm_86 -o $@ $^
#nvcc -arch=sm_86 -o hello hello_sm_id.cu

$@  是指目标

$^  是指第一个依赖  ^^

hello_ptx.cu

#include <stdio.h>
#include <stdint.h>static __device__ __inline__ uint32_t __mysmid(){uint32_t ssmid;asm volatile("mov.u32 %0, %%smid;" : "=r"(ssmid));return ssmid;}static __device__ __inline__ uint32_t __mywarpid(){uint32_t warpid;asm volatile("mov.u32 %0, %%warpid;" : "=r"(warpid));return warpid;}static __device__ __inline__ uint32_t __mylaneid(){uint32_t laneid;asm volatile("mov.u32 %0, %%laneid;" : "=r"(laneid));return laneid;}__global__ void mykernel(){int idx = threadIdx.x+blockDim.x*blockIdx.x;unsigned thx = threadIdx.x;
//      if(threadIdx.x==1023)// && blockIdx.x<3)
//      if(threadIdx.x==1)
//      if((thx==0 || thx==32 || thx==64 || thx==96 || thx==128 || thx==160 || thx==192 || thx==224 || thx==256) && blockIdx.x==0)if(blockIdx.x<=33 && thx==0)printf("I am thread %d, my SM ID is %d, my warp ID is %d, and my warp lane is %d\n", idx, __mysmid(), __mywarpid(), __mylaneid());
}int main(){dim3 grid_;dim3 block_;grid_.x=34;block_.x=1024;mykernel<<<grid_,block_>>>();cudaDeviceSynchronize();return 0;
}
//$ nvcc -arch=sm_20 -o hello hello_ptx.cu

运行:

结果分析:

rtx3060中,

当 block 的个数从一个增加到两个,3个,...

smid的值为 0,  2,  4, ...直到偶数最大  max_even(smid), 然后是  1,3,5,... 直到奇数最大 max_odd(smid).

rtx 3060  2 SM/TPC

奇偶的变化,跟这个里的2是否有关系呢?以及有什么关系呢?

cuda ptx 汇编语言示例:读寄存器相关推荐

  1. 【Android 逆向】代码调试器开发 ( ptrace 函数 | 读寄存器 | 写寄存器 )

    文章目录 一.读寄存器 二.写寄存器 一.读寄存器 调用 ptrace(PTRACE_GETREGS, m_nPid, NULL, regs) 读取进程运行时的寄存器 ; 读取寄存器时 , 进程必须处 ...

  2. STM32开发笔记112:ADS1258驱动设计——读寄存器

    文章目录 前言 1.转换速率 2.寄存器读命令 (1)时序 (2)命令字节 (3)读1字节驱动程序 (4)读寄存器驱动程序 (5)测试程序 (6)上电缺省值 3.寄存器详解 (1)CONFIG0 BI ...

  3. CUDA PTX ISA阅读笔记(一)

    不知道这是个啥的看这里:Parallel Thread Execution ISA Version 5.0. 简要来说,PTX就是.cu代码编译出来的一种东西,然后再由PTX编译生成执行代码.如果不想 ...

  4. 寄存器和存储器的区别_汇编语言 第二章 寄存器

    第二章 寄存器 在 CPU 中: 运算器进行信息处理: 寄存器进行信息存储(主要部分,工作原理): 控制器控制各种器件进行工作: 内部总线连接各种器件,在它们之间进行数据的传送. 不同的 CPU,寄存 ...

  5. c++ nvcc编译CUDA程序入门示例

    nvcc nvcc是NVIDIA CUDA Compiler,用来编译host和device程序. 这里的术语: host:指CPU及其内存 device:指GPU及其内存 使用nvcc,就可以编译C ...

  6. CUDA PTX ISA阅读笔记(二)

    8. 第八章 指令集 这一章占了整个手册的一大半(百十来页吧),主要介绍各种指令,虽然页数很多,但是大多数指令都很简单. 8.1. 指令的形式和语义描述 这章就是主要描述每个PTX指令.除了指令的形式 ...

  7. OV7670无FIFO读寄存器成功

    使用stm32f103zet6 接3V3,GND SIOC 接PD0,SIOD接PD1 XCLK接PA8 SCCB.c #include "SCCB.h"#define SCCB_ ...

  8. 哔哩哔哩小甲鱼 汇编语言 记录一下 寄存器(内存访问)两个小实验

    第一个实验: 打开win10中的模拟器. 1, ,2, 2, 3,通过-t命令进行单步执行.执行完所有已经输入的程序就可以看到最后的AX BX CX寄存器内容. 最后的AX BX CX: AX=112 ...

  9. 汇编语言基础教程-寄存器

    32位CPU一般包括如下寄存器 1.通用寄存器 8个32位寄存器 EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP 8个16位寄存器 AX,BX,CX,DX,SI,DI,BP,SP 8个 ...

最新文章

  1. 如何删除sublime目录
  2. 解决eclipse中出现Resource is out of sync with the file system问题
  3. CentOS 7安装Keepalived
  4. Redis事务中几种常见的场景-exec执行前后的语法错误时的处理
  5. php自定义中文分词方法,PHPAnalysis中文分词类详解
  6. 如果我要...(研究版)
  7. extern c用法解析
  8. 【视频技术解读】编解码的理论和实践
  9. 前端趋势榜:上周最有意思、又实用的 10 大 Web 项目 - 210922
  10. PHP项目中,记录错误日志
  11. 获取浏览器唯一标识_探讨浏览器指纹
  12. Microsoft ScriptControl 控件使用指南
  13. vijos p1782——借教室(noip2012提高组第2题)
  14. 2019年最新手机CPU处理器性能排行天梯图
  15. 如何区分精确率(precision)、准确率(accuracy)和召回率(recall)
  16. PID学习笔记:模拟加热系统的PID控制
  17. 光伏运维将面临行业洗牌?
  18. 计算机工程制图箭头怎么画,cad中箭头画法
  19. Pandas熊猫框架
  20. 《前端》eval函数

热门文章

  1. 系统架构师(软考)------网络互联模型与常见的网络协议
  2. JAVA与PLC通讯读取数据(两种方式)
  3. Mysql数据库备份(一)
  4. k8s :pod has unbound immediate PersistentVolumeClaims
  5. 熟悉的人不认识我了,不熟悉的人认识我了
  6. 膨胀腐蚀-OpenCL加速及kernel变成二进制文件
  7. 华清远见嵌入式学习心得1
  8. python做马尔科夫模型预测法_通过Python的Networkx和Sklearn来介绍隐性马尔科夫模型...
  9. 人工智能与神经生理学:差异为何重要
  10. UG 10.0 GRIP 问题