小编ein*_*ica的帖子

在当前不可调试的 GPU 上创建了 CUDA 上下文

当我开始 cuda 调试时,Nsight 返回此错误:

在当前不可调试的 GPU 上创建了 CUDA 上下文。断点将被禁用。

适配器:GeForce GT 720M

这是我的系统和CUDA信息。

请注意,已安装最新版本的 CUDA 和 Nsight。

我搜索了这个问题,但找不到我的答案。太感谢了。

Report Information
    UnixTime Generated                                                      1490538033
OS Information
    Computer Name                                                           DESKTOP-OLFM6NT
    NetBIOS Name                                                            DESKTOP-OLFM6NT
    OS Name                                                                 Windows 10 Pro
    GetVersionEx
        dwMajorVersion                                                      10
        dwMinorVersion                                                      0
        dwBuildNumber                                                       14393
        dwPlatformId                                                        2
        wServicePackMajor                                                   0
        wServicePackMinor                                                   0
        wSuiteMask                                                          256
        wProductType                                                        Workstation
    GetProductInfo                                                          48
    GetNativeSystemInfo
        wProcessorArchitecture                                              x64
        dwPageSize                                                          4096
        lpMinimumApplicationAddress                                         65536
        lpMaximumApplicationAddress                                         140737488289791
        dwActiveProcessorMask                                               15
        dwNumberOfProcessors                                                4
        dwAllocationGranularity                                             65536
        wProcessorLevel                                                     6
        wProcessorRevision                                                  17665
    EnumDisplayDevices
        Display Device
            DeviceName                                                      \\.\DISPLAY1
            DeviceString …
Run Code Online (Sandbox Code Playgroud)

cuda cuda-context

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

如何使用cudaStream_t访问nvprof中看到的数字流ID?

在nvprof中,我可以看到我正在使用的每个cuda执行流的流ID(0,13,15等)

给定一个流变量,我希望能够打印出流ID.目前我找不到任何API来执行此操作并且转换cudaStream_t为int或uint不会产生合理的ID.sizeof()cudaStream_t是8个字节.

cuda nvprof

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

为最近的CPU架构生成每个周期加载/存储

灵感来自这个答案

每个循环的FLOPS用于沙桥和haswell SSE2/AVX/AVX2

对于Sandy/Ivy Bridge,Broad/Haswell,Sky/Kaby Lake,可以在核心上发布的正常装载/装载和存储的数量是多少?同样有趣的是AMD Bulldozer,Jaguar和Zen的数量.

PS - 我知道由于缓存/内存带宽可能不是可持续的速率,我只是询问问题.

cpu performance x86 cpu-architecture memory-bandwidth

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

MySQL/InnoDB 如何在内部表示 NULL 值?

在 MySQL 中(或者我应该说:使用 MySQL 的 InnoDB 引擎)-如何表示空值?即如果允许列具有NULLs ,表(或单个记录,如果它在记录级别)的表示如何更改?

如果不同的列数据类型不同 - 要么解释表示 NULL 的各种方法,要么只选择一种数据类型(例如INT)。

mysql innodb

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

有条件地编译基于数字模板参数的转换运算符

我有template <bool P> class Foo很多代码.我希望能够将Foo<true>'s转换成Foo<false>'s,即有一个operator Foo<false>()方法.但是编译器不喜欢Foo存在的这种方法,它只喜欢它Foo<true>,并且警告"如何不调用"运算符进行隐式或显式转换"(GCC 5.4.x)

似乎我不能使用SFINAE:std::enable_if适用于类型; 我试过的一个价值变量(真正的案例有一个value而不是一个type成员)也没有帮助.

我怎样才能让这个运算符只被编译Foo<false>(除了专门化Foo<false>不同和复制我的所有代码)?

到目前为止,我最好的尝试是:

template <bool P> class Foo {
    // etc. etc.
    template <bool OtherValue>
    operator Foo<OtherValue>()
    {
        static_assert(OtherValue, "You should not be using this conversion!");
        // conversion code here
        return Foo<false>(args,go,here);
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ templates class typecast-operator

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

NVCC 失败并显示错误““_GLIBCXX_MATH_H”未定义”

我正在编译一个 CUDA 程序 - 一个简单而无害的程序。无论我如何简化它或删除一些代码或包含文件,nvcc 都会告诉我:

In file included from /usr/local/cuda/bin/..//include/crt/common_functions.h:271:0,
                 from /usr/local/cuda/bin/..//include/common_functions.h:50,
                 from /usr/local/cuda/bin/..//include/cuda_runtime.h:115,
                 from <command-line>:0:
/usr/local/cuda/bin/..//include/crt/math_functions.h:8891:5: error: "_GLIBCXX_MATH_H" is not defined [-Werror=undef]
Run Code Online (Sandbox Code Playgroud)

我在 Linux 上使用 CUDA 9.0 或 9.1,而 CUDA 使用 GCC(5 或 6)。为什么会发生这种情况,我该如何解决?

cuda nvcc compiler-options

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

无法从指向现有变量的指针创建唯一指针

我正在尝试修改 LLVM 代码的某些部分。我在这里面临困难:

{这部分代码只是为了创建一个传递给另一个模块的 OptimizationRemark}

OptimizationRemarkAnalysis &LoopAccessInfo::recordAnalysis(StringRef RemarkName,
                                                       Instruction *I) {
  assert(!Report && "Multiple reports generated");

  Value *CodeRegion = TheLoop->getHeader();
  DebugLoc DL = TheLoop->getStartLoc();

  if (I) {
    CodeRegion = I->getParent();
    // If there is no debug location attached to the instruction, revert back to
    // using the loop's.
    if (I->getDebugLoc())
      DL = I->getDebugLoc();
  }

  OptimizationRemarkAnalysis R(DEBUG_TYPE, RemarkName, DL, CodeRegion);
  Report = std::unique_ptr<OptimizationRemarkAnalysis>{&R};

  return *Report;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试构建它时,它工作正常。但是当我在基准上运行它时,它给出了这样的错误:

#0 0x0000563337f8bb9f llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/cs15btech11044/list_of_llvms/LLVM_second_remark/LLVM_for_commits_2/llvm/lib/Support/Unix/Signals.inc:398:0
#1 0x0000563337f8bc32 PrintStackTraceSignalHandler(void*) /home/cs15btech11044/list_of_llvms/LLVM_second_remark/LLVM_for_commits_2/llvm/lib/Support/Unix/Signals.inc:462:0
#2 0x0000563337f89e07 llvm::sys::RunSignalHandlers() /home/cs15btech11044/list_of_llvms/LLVM_second_remark/LLVM_for_commits_2/llvm/lib/Support/Signals.cpp:49:0
#3 0x0000563337f8b40b …
Run Code Online (Sandbox Code Playgroud)

llvm unique-ptr c++11

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

在C++ 20获得批准之前,我应该如何使用day-since-epoch值?

我正在编写一些代码,这些代码使用日期 - 自某些时期和年 - 月 - 日独立表示.编辑:我还应该提到理论上这些年份可能是负数,而0年可能存在也可能不存在.

现在,C++ 20将引入一个std::year_month_day,它本身和我的类的交互都应该非常有用.但是现在,我是否应该使用std::chrono我的日期,或者如果我只是加起来并减去日期分辨率日期,它是否太无用了?

c++ days c++-chrono c++17

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

我可以避免通过 time_t 打印 time_point 吗?

这是改编自 cppreference.com的示例:

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

int main() {
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);
    std::cout << "The time was just "
              << std::put_time(std::localtime(&now_c), "%F %T") << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个。我想打印我的时间点而不必经过time_t. 我可以这样做吗...:

  1. 根本?
  2. put_time支持任意格式?

笔记:

  • 标准库解决方案是最好的;非标准但稳健的解决方案也是相关的。
  • 没有一个傻瓜的这个-因为我也是在任意格式印刷兴趣; 但应该注意的是,@HowardHinnant 对此的回答解决了这个问题的第一部分。

c++ time-t c++-standard-library c++11 c++-chrono

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

如何禁止"ISO C++不支持'__int128'警告?

我正在使用gcc编译我的代码,使用-Wall -Wextra -Wpedantic开关和非扩展标准集(比如说-std=c++14).但是 - 我希望有一个例外并使用__int128,这给我一个警告:

warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]
Run Code Online (Sandbox Code Playgroud)

我可以抑制特定的警告__int128吗?或者,我可以-Wpedantic在使用此类型之前和之后临时抑制吗?

c++ gcc int128 compiler-warnings

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