CUDA thread index:

int blockId = blockIdx.z * (gridDim.x*gridDim.y)
                    + blockIdx.y * gridDim.x
                    + blockIdx.x;

int threadId = blockId * (blockDim.x * blockDim.y * blockDim.z)
                      + threadIdx.z * (blockDim.x * blockDim.y)
                      + threadIdx.y * blockDim.x
                      + threadIdx.x;

从上到下分别是:

block的3,2,1维;

thread的3,2,1维。

如果没有对应维度,删除对应的计算部分即可。

维度的值最小是1,但是索引的值最小是0.

ps: 最少的情况是都只有1维,最多的情况是都有3维。

所以最简单的都只有1维时:blockIdx.x * blockDim.x + threadIdx.x

CUDA 计算线程索引的一般公式的更多相关文章

  1. CUDA软件架构—网格(Grid)、线程块(Block)和线程(Thread)的组织关系以及线程索引的计算公式

    网格(Grid).线程块(Block)和线程(Thread)的组织关系 CUDA的软件架构由网格(Grid).线程块(Block)和线程(Thread)组成,相当于把GPU上的计算单元分为若干(2~3 ...

  2. cuda计算的分块

    gpu的架构分为streaming multiprocessors 每个streaming multiprocessors(SM)又能分步骤执行很多threads,单个SM内部能同时执行的thread ...

  3. Java并发(八)计算线程池最佳线程数

    目录 一.理论分析 二.实际应用 为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务.并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行.在高并发的情况下采用线程池,可以有 ...

  4. CUDA并行计算 | 线程模型与内存模型

    文章目录 前言 CUDA线程模型(如何组织线程) CUDA内存模型(了解不同内存优缺点,合理使用) 前言   CUDA(Compute Unified Device Architecture)是显卡厂 ...

  5. (转)c# math 计算两点之间的角度公式

    计算两点之间的角度公式是: 假设点一(X1,Y1),点二(X2,Y2) double angleOfLine = Math.Atan2((Y2 - Y1), (X2 - X2)) * 180 / Ma ...

  6. 计算MySQL的内存峰值公式 (转)

    -- 计算MySQL的内存峰值公式,计算所有的连接满了的情况下: select (@@key_buffer_size + @@query_cache_size + @@tmp_table_size   ...

  7. 计算MySQL的内存峰值公式

      -- 计算MySQL的内存峰值公式,计算所有的连接满了的情况下:select (@@key_buffer_size + @@query_cache_size + @@tmp_table_size  ...

  8. 计算MySQL的内存峰值公式 (转)

    -- 计算MySQL的内存峰值公式,计算所有的连接满了的情况下: select (@@key_buffer_size + @@query_cache_size + @@tmp_table_size   ...

  9. CUDA 计算pi (π)

    通过简单的程序设计熟练CUDA的使用步骤 下面是cuda代码及相关注释 #include <stdio.h> #include <iostream> #include < ...

随机推荐

  1. webconfig标签收集

    在web项目启动时,很多因为vs没有报错,而页面跑不出来的情况,无法调试找到错误, 可以在webconfig中添加一个标签,运行项目就可以在页面显示错误 <customErrors mode=& ...

  2. linux 安装 mysql

    二进制安装mysql 1,下载安装包,使用国内站点速度会比较快,如清华站点https://mirrors.tuna.tsinghua.edu.cn 登陆linux系统后,使用wget 进行下载mysq ...

  3. 解决SpringMVC拦截器中Request数据只能读取一次的问题

    解决SpringMVC拦截器中Request数据只能读取一次的问题 开发项目中,经常会直接在request中取数据,如Json数据,也经常用到@RequestBody注解,也可以直接通过request ...

  4. 计算kdj

    import pandas as pd def KDJ_K(df,n=9):    df['highest'] = df['high'].rolling(n).max()    df['lowest' ...

  5. 执行多条SQL语句,实现数据库事务(不可传入Sql参数)

    执行多条SQL语句,实现数据库事务(不可传入Sql参数) http://blog.csdn.net/hanxuemin12345/article/details/9980371

  6. 网站JS控制的QQ悬浮

    这是一个网站JS控制的QQ悬浮客服:代码1document.writeln("<div id=\"feedback\"><div id=\"f ...

  7. 帆软报表(FineReport)实现跨数据源父子查询(2阶段查询)

    问题描述: 在报表中需要查询多个系统多个数据源,且有一个数据源的入参是另一个数据源的返回值.所以当用户点击查询到展现报表数据这个过程中,需要先做父查询,查询出的结果在作为子查询. 实现方案: 方案一: ...

  8. 局域网内yum源搭建

    在一些环境下,服务器不能连接互联网,但是我们又偏偏需要安装一些软件,此时有点麻烦了.通过使用centos镜像文件,搭建yum本地源,局域网内所有服务器都可以连接这一本地源进行软件的下载和安装,下面具体 ...

  9. VNC 分辨率修改

    正确的: vncserver -geometry 1280x1024 错误的: vncserver -geometry 1280*1024

  10. PHPEXCEL读出数据是PHPExcel_RichText类型

    今天在做导入EXCEL数据时,而且单元格里的数据类型改成文本类型后,在PHPEXCEL读出来的是PHPExcel_RichText类型的,这类型使getValue()是不管用了,因为这时候getVal ...