小编Mic*_*ael的帖子

CUDA是否会悄悄地贬低双倍浮动?

我正在研究CUDA头文件,cuda/6.5.14/RHEL6.x/include/math_functions_dbl_ptx1.h并看到每个带double参数的算术函数都将其转换为float:

static __forceinline__ double fabs(double a)
{
  return (double)fabsf((float)a);
}

...

static __forceinline__ double floor(double a)
{
  return (double)floorf((float)a);
}
Run Code Online (Sandbox Code Playgroud)

由于我依赖于双精度浮点的基本方法(代码中有很多潜在的灾难性取消)我在相信自己的眼睛时遇到了一些麻烦.

你能解释一下这里发生了什么吗?

c++ floating-point cuda

3
推荐指数
1
解决办法
329
查看次数

STL向量在哪里保存不同大小的数据项?

具体来说,STL如何在vector <vector <T>>中对齐矢量项,假设每个矢量项可能会改变大小?外部向量是否对齐引用并将项目保留在其他位置?

c++ stl

2
推荐指数
1
解决办法
96
查看次数

禁止隐式`unsigned`到'double`转换

是否有可能禁止C++中基本类型之间的隐式转换?特别是,我想禁止隐式转换unsignedfloat或者double因为这些错误:

int i = -5;
...
unsigned u = i; // The dawn of the trouble.
...
double d = u;   // The epicenter of the bug that took a day to fix.
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

explicit operator double( unsigned );
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用:

explicit.cpp:1: error: only declarations of constructors can be ‘explicit’
explicit.cpp:1: error: ‘operator double(unsigned int)’ must be a nonstatic member function
Run Code Online (Sandbox Code Playgroud)

c++ floating-point unsigned

2
推荐指数
1
解决办法
89
查看次数

将本地分支(master)重置为远程分支(master)的状态

我在本地 master 中有一些旧的本地提交,因此git status表明我比 origin/master 领先 58 个提交。我不关心那些旧的提交,并且想将本地主控重置为与远程主控相同。这样做的首选是什么?另一个分支也是如此。

git

2
推荐指数
1
解决办法
8930
查看次数

rvalues的价值是什么?

也就是说,当一个人利用C++ 11 typename &&功能(如移动构造函数等)时,通常会在设计良好的C++ 03代码中获得多少性能提升?多长时间值得麻烦,在什么情况下?

编辑:

想象一个替代的宇宙,而不是右值引用C++ 11使用关键字"returns"扩展C++ 03,该关键字标记将由函数返回的局部变量.如果局部变量被标记为"返回",则将其放置在堆栈中通常存在返回值的部分中.想象一下,您可以像这样使用该关键字:

SomeClass foo()
{
    returning SomeClass bar; // Created where return value usually resides.
    // do something with bar
    return bar; // No copy constructor is involved here.
}
Run Code Online (Sandbox Code Playgroud)

我认为这样的机制可以创建make_unique,就像右值引用一样,并且可以减少混淆和潜在的陷阱.三法则仍然是三法则而不是成为五法则; 没有混淆是否&& if rvalue ref或universal ref; 没有必要std :: move等.

我在这里错过了什么?

c++ rvalue-reference language-lawyer move-semantics c++11

1
推荐指数
1
解决办法
124
查看次数

如何防止 Tcl 打印设置的值?

对设置变量的 Tcl 过程的调用似乎打印了正在设置的值。

% proc a { } { set b "I don't want that!" }
% a
I don't want that!
Run Code Online (Sandbox Code Playgroud)

如何防止?

tcl

1
推荐指数
1
解决办法
626
查看次数

为什么 C++ 不允许 :: 在已知类型的对象上?

#include <vector>

int main()
{
    std::vector< int > vi;

    // This is legal.
    for( std::vector< int >::iterator it = vi.begin(); it != vi.end(); ++it )
    {
    }

    // This is not legal. WHY NOT? 
    // Compiler knows vi's type, as evident from the c++11 syntax for such loop:
    // for( auto it : each vi )
    // So why not support :: on objects of known type?
    for( vi::iterator it = vi.begin(); it != vi.end(); ++it )
    {
    }

    return …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer

0
推荐指数
1
解决办法
80
查看次数