P55注解

作者: GPUSLadySisiy | 来源:发表于2018-12-12 15:10 被阅读0次

原著:The maximum threads per block are 512, and hence the total number of blocks is calculated by dividing the total number of threads (N) by 512. But if N is not an exact multiple of 512, then N divided by 512 may give a wrong number of blocks, which is one less than the actual count. So, to get the next highest integer value for the number of blocks, 511 is added to N and then it is divided by 512. It is basically the ceil operation on division. 

注解:在C系的语言中,整数的除法操作,a / b,  是不四舍五入的,一概舍掉尾数。例如7 / 3 = 2,余数或者尾数都不要了。这样如果不能整除,(6/3是整除的,得2。但7/3也得2。8/3也得2.直到9/3=3)实际上会稍微造成一点启动CUDA线程总数的问题,例如说,513个总线程,实际上513 / 512 = 1(因为C不要尾数),这样实际上只启动了1个block,里面只有512个线程,那么最后一个线程怎么办?答案是,单独为它其他一个不满的block。也就是说,实际上最常见的代码是这样的:
count = N / 512;
if (N % 512 != 0) //不能整除
    count++;
也就是可以手工判断一次,如果不能整除,+1个block。这是为何这里说的block会少一个的由来。作者没解释。

然后+511又是什么鬼?有一个常见的优化,可以将if优化掉。刚才那个判断可以直接用这样的方式解决:

count = a / b;
if (a % b != 0) count++;
可以被优化成:count = (a + b - 1) / b;

这里的(a + b - 1) / b被叫做整数的快速向上取整优化(见于任何一本计算机学科的《数值计算》课程)。

所以这里的b如果是512的话,就成了:(a + 512 - 1) / 512, 也就是(a + 511) / 512

所以是这样来的。

相关文章

  • P55注解

    原著:Themaximumthreadsperblockare512,andhencethetotalnumber...

  • p55

    看着你所敬佩的人物的言行,不是让你去复制他们,而是让你活学活用,使之适应你自己的个人风格

  • 第二部分 目录《探戈的意义》《The meaning of Ta

    P55 Part2 the history of tango music, poetry and dance in...

  • 2021-04-22

    今日上午第一节 处置《面对面练习册》p55专题二

  • 《白鹿原》p55

    进攻和溃败时都没有害怕而逃亡时却如惊弓之鸟,那原因是端枪瞄准大哥的士兵时他已经豁出去了,而逃亡时他不想豁出去了。 ...

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • 注解的使用

    元注解 注解 注解本质就是接口: 元注解:修饰注解的注解 自定义注解 Text.java FruitName.ja...

  • 注解

    Java注解 注解 元注解 自定义注解 元注解:负责注解其他注解 共有4个标准的meta-annotation类型...

网友评论

      本文标题:P55注解

      本文链接:https://www.haomeiwen.com/subject/fqxmfqtx.html