小编ein*_*ica的帖子

我可以在不重启的情况下在Linux中使用CUDA停止所有进程吗?

是否可以通过CUDA使用GPU停止所有正在运行的处理,而无需重新启动机器?

cuda restart kill-process

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

如何初始化联盟?

如果它是a struct那么就可以完成

*p = {var1, var2..};
Run Code Online (Sandbox Code Playgroud)

但似乎这不起作用union:

union Ptrlist
{
        Ptrlist *next;
            State *s;
};

Ptrlist *l;
l = allocate_space();
*l = {NULL};
Run Code Online (Sandbox Code Playgroud)

只得到:

expected expression before ‘{’ token
Run Code Online (Sandbox Code Playgroud)

c unions

16
推荐指数
2
解决办法
3万
查看次数

为什么还要了解CUDA Warps?

我有GeForce GTX460 SE,所以它是:6 SM x 48 CUDA核心= 288 CUDA核心.众所周知,在一个Warp中包含32个线程,并且在一个块中同时(一次)只能执行一个Warp.也就是说,在单个多处理器(SM)中,即使有48个可用核心,也可以同时只执行一个Block,一个Warp和32个线程?

此外,可以使用threadIdx.x和blockIdx.x来分发具体的Thread和Block的示例.要分配它们,请使用内核<<< Blocks,Threads >>>().但是如何分配特定数量的Warp-s并分发它们,如果不可能那么为什么还要去了解Warps呢?

cuda gpu gpu-warp

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

如何使用nvcc禁用编译器警告

我想禁用特定编译器警告nvcc,特别是

警告:不允许NULL引用

我正在使用的代码使用NULL引用是其中的一部分#pragma,因此无法避免.

一个理想的解决方案是nvcc在我们想要禁用警告的源文件中,但编译器标志也可以,如果存在只关闭有问题的警告.

编辑:5年前我问过这个问题,从那以后就提供了两种不同的解决方案.

下面的@ user2333829提出的第一个是使用NULL编译器标志来关闭整个文件的警告.

第二个解决方案,通过@cr_dave5年提出的问题被问之后,是一个#pragma基础的方法,可以让你关闭警告非常有针对性的方式.

多年来感谢您的反馈!

cuda pragma compiler-warnings nvcc

16
推荐指数
3
解决办法
7536
查看次数

为什么启用未定义的行为清理会干扰优化?

考虑以下代码:

#include <string_view>

constexpr std::string_view f() { return "hello"; }

static constexpr std::string_view g() {
    auto x = f();
    return x.substr(1, 3);
}

int foo() { return g().length(); }
Run Code Online (Sandbox Code Playgroud)

如果我用 GCC 10.2 和 flags 编译它--std=c++17 -O1,我会得到:

foo():
        mov     eax, 3
        ret
Run Code Online (Sandbox Code Playgroud)

此外,据我所知,这段代码没有任何未定义的行为问题。

但是 - 如果我添加 flag -fsanitize=undefined,编译结果是:

.LC0:
        .string "hello"
foo():
        sub     rsp, 104
        mov     QWORD PTR [rsp+80], 5
        mov     QWORD PTR [rsp+16], 5
        mov     QWORD PTR [rsp+24], OFFSET FLAT:.LC0
        mov     QWORD PTR [rsp+8], 3
        mov     QWORD …
Run Code Online (Sandbox Code Playgroud)

c++ gcc compiler-optimization constexpr ubsan

16
推荐指数
2
解决办法
603
查看次数

我可以在int值上使用C++中的not运算符吗?

奇怪的问题,但有人向我展示了这一点,我想知道你可以使用不!C++中的int运算符?(对我来说很奇怪).

#include <iostream>
using namespace std;

int main()
{
   int a=5, b=4, c=4, d;
   d = !( a > b && b <= c) || a > c && !b;
   cout << d;
   system ("pause");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ int negation logical-operators

15
推荐指数
3
解决办法
3万
查看次数

unordered_multimap - 迭代find()的结果产生具有不同值的元素

C++中的multimap看起来很奇怪,我想知道为什么

#include <iostream>
#include <unordered_map>

using namespace std;

typedef unordered_multimap<char,int> MyMap;

int main(int argc, char **argv)
{
    MyMap map;
    map.insert(MyMap::value_type('a', 1));
    map.insert(MyMap::value_type('b', 2));
    map.insert(MyMap::value_type('c', 3));
    map.insert(MyMap::value_type('d', 4));
    map.insert(MyMap::value_type('a', 7));
    map.insert(MyMap::value_type('b', 18));

    for(auto it = map.begin(); it != map.end(); it++) {
        cout << it->first << '\t';
        cout << it->second << endl;
    }

    cout << "all values to a" << endl;
    for(auto it = map.find('a'); it != map.end(); it++) {
        cout << it->first << '\t' << it->second << endl;
    }

}
Run Code Online (Sandbox Code Playgroud)

这是输出: …

c++ iteration stl unordered-map c++11

15
推荐指数
3
解决办法
2万
查看次数

返回时为什么指针不能自动转换为unique_ptr?

让我通过一个例子提出我的问题.

#include <memory>

std::unique_ptr<int> get_it() {
        auto p = new int;
        return p;
}

int main() {
        auto up ( get_it() );
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

无法编译时出现以下错误:

a.cpp:5:9: error: could not convert ‘p’ from ‘int*’ to ‘std::unique_ptr<int>’
  return p;
         ^
Run Code Online (Sandbox Code Playgroud)

为什么没有从原始指针自动转换为唯一的指针?我应该做什么呢?

动机:我理解使用智能指针清除所有权应该是一种好习惯; 我从某个地方得到一个指针(我拥有),就像int*在这种情况下一样,我(想想我)想要它unique_ptr.


如果您正在考虑评论或添加您自己的答案,请在提案N4029中解决Herbert Sutter关于此问题的论点.

c++ pointers explicit smart-pointers c++11

15
推荐指数
3
解决办法
6218
查看次数

std :: variant和boost :: variant之间有什么区别?

答案

什么是C++标准库中的boost :: variant?

它被提到boost::variant并且std::variant有所不同.

  • 就使用这些课程的人而言,有什么区别?
  • 委员会表达了采用std::variant这些差异的动机是什么?
  • 在使用其中任何一个进行编码时应该注意什么,以保持与切换到另一个的最大兼容性?

(动机是boost::variant在前C++ 17代码中使用)

c++ boost variant boost-variant c++17

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

如果constexpr在递归泛型lambda中:不同的编译器行为

以下代码使用g ++ 7.3.0成功编译,无法使用clang ++ 6.0.0进行编译(编译标志为-std=c++17 -Wall -Wextra -Werror -pedantic-errors):

auto foo = [](auto, auto... tail) {
    if constexpr (sizeof...(tail) > 0)
    {
        return foo(tail...);
    }
    else
    {
        return 42;
    }
};

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

clang ++编译错误信息:

错误:使用推导类型'auto'声明的变量'foo'不能出现在自己的初始化程序中

return foo(tail...);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,符合标准的行为是什么?

c++ lambda language-lawyer c++17 if-constexpr

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