慎用 maxrregcount

需要编译一个 *.cubin 文件。

在编译时使用--ptxas-option=v参数,显示register使用的个数是36。于是,在编译时使用maxrregcount=32。从而,register的使用个数是32,使用了“8 bytes stack frame, 12 bytes spill stores, 28 bytes spill loads”

nvcc -cubin -m64 -arch sm_35 *.cu --use_fast_math --maxrregcount=32 --ptxas-options=-v -O3 -o *.cubin

但是,经过多次测试,发现浮点计算结果不一样(int计算结果没有测试)。

因此,发现了这个bug:maxrregcount可能导致最终结果不同。

搜了一下,其他人也遇到了这个问题。有一个解释如下:

“Operation order may change with register optimization. Since fp arithmetic is not associative due to finite precision, this may affect the result.”

时间: 2024-08-11 01:21:32

慎用 maxrregcount的相关文章

php编译参数注解--不明白许多参数的作用 慎用 –with-curlwrappers参数

在Linux下安装PHP,源代码方式安装,总需要配置很多参数.这里列出常用配置参数,并详细用中文解释说明了.给大家一些参考 编译PHP的时候慎用 –with-curlwrappers参数 ./configure --prefix=/usr/local/PHP                                   php 安装目录 --with-apxs2=/usr/local/apache/bin/apxs     表示使用apache2.0以上版本,apxs表示使用的apache

慎用缺省构造函数的一种场景

本文通过示例来谈谈慎用缺省构造函数的一种设计场景.--以JAVA为例展开讨论. 为了便于讨论,我们假定需要建模一个Student,包括姓名和出生地两个属性.我们看到不少下面的代码: public class Student { private String name = null; private String birthPlace = null; public Student() { } public void setName(String name) { this.name = name;

慎用System.Web.HttpContext.Current

每当控制流离开页面派生的Web表单上的代码的时候,HttpContext类的静态属性Current可能是有用的. 使用这个属性,我们可以获取当前请求(Request),响应(Response),会话(Session,)和应用程序对象(Application objects)以及请求更多服务. 以下面的代码为例. private void Page_Load(object sender, System.EventArgs e) { MyClass myClass = new MyClass();

Effective_java之二:慎用重载函数

每周写一篇技术博客的愿望一直没实现, 从这周開始每周五晚10点是写博客的时间 OOP的一个重要特性就是多态,实现多态的目的有多种途径.比方:重载overload.重写overwite.面向接口编程等等.可是在实际应用中应该慎用重载,这也是Effective Java中提到的一条.以下先展示下eJava中提到的代码: @Test public void testOverWrite(){ List<Integer> intList = new ArrayList<Integer>();

慎用Outline ,UGUI Outline实现原理分析

使用 UGUI 制作背包的时候,同事发现如果背包中添加了大量的物品,比如两百个,Unity就会出错,提示 Canvas element contains more than 65535 vertices. This is not supported .意思就是 Canvas下面的顶点数过多. 转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn 如下图: 但是一个物品 的GameObject 难道有300个顶点不成? 不看不知道一看吓

Effective Item 13 - 慎用tagged class

其实作者的原标题是<Prefer class hierarchies to tagged classes>,即用类层次优于tagged class. 我不知道有没有tagged class这么一说,其实作者指的tagged class的是一个类描述了多种抽象,可以根据某个field决定不同的实例. 下面是书中例子,使用shape和部分表示长度的field构成形状并计算面积,脑补一下什么是tagged class: class Figure { enum Shape { RECTANGLE, C

慎用私有继承

在C++中,public 公有继承被视为"is-a"关系. class Animal{ public :    void Eat() { ... } }: class Tiger : public Animal{ public:    bool IsKing() {...} };// Tiger 是一种Animal 如果public换成private,编译器不能将派生类对象转型为基类对象,所有不能调用基类中的成员函数,不再是"is-a"的关系. ----------

C/C++中慎用宏(#define)

宏的定义在程序中是非常有用的,但是使用不当,就会给自身造成很大的困扰.通常这种困扰为:宏使用在计算方面. 本例子主要是在宏的计算方面,很多时候,大家都知道定义一个计算的宏,对于编译和编程是多么的有用.现在定义有以下一个计算 "乘法" 的宏. #include <stdio.h> #define MUL(a) ((a)*(a)*(a)) int main(int argc,char *argv[]) { int i = 10; int sum = MUL(i); printf

慎用UltraEdit32打开UTF8格式文件

UTF16的BOM头是FF FE,UTF8的BOM头是EF BB BF.但是用UltraEdit32打开UTF8文件,切换到HEX模式,会发现BOM头变成了FF FE.而且在打开log4j的UTF8编码的日志文件时,中文也会显示为乱码.为了避免烦恼,决定以后不用UltraEdit32打开UTF8文件了. 使用Notepad++打开则无任何问题.     慎用UltraEdit32打开UTF8格式文件