小编Aga*_*ade的帖子

GCC gprof 逐行错误“有人错误计数”

我想使用 gcc 的 gprof 逐行分析。但是在编译我的程序、运行它并执行之后,gprof -l binary_name我收到如下消息:

gprof: somebody miscounted: ltab.len=9403 instead of 9391
Run Code Online (Sandbox Code Playgroud)

gprof binary_name运行没有错误,但我无法使用该-l选项运行。我无法找到这方面的文档。谷歌自动完成表明我不是第一个收到此错误的人,但我找不到任何相关线程。我尝试过 g++-9 g++-10 和 g++-11。我尝试过使用-g和进行编译-ggdb。我认为也许 gprof 不喜欢我的程序是多线程的,但即使删除 OpenMP 依赖项并告诉 libtorch 使用 1 个线程,我也会得到相同的行为。

我怀疑这个错误不应该被最终用户看到,因为它没有给出解决方案的提示,并提到ltab.len这很可能是用户不会熟悉的 gcc 代码中的变量。

gcc g++ gprof

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

在GPU上使用2个FP32仿真FP64

如果要模拟具有两个单精度浮点的双精度浮点,那么性能会是什么样的,并且可以做得好吗?

目前,Nvidia正在为双精度特斯拉卡充电,这使得您可以获得单精度性能的三分之一(值得注意的是Titan/Titan Black除外).

如果要使用具有gimped双精度的Geforce GPU并使用2个单精度浮点模拟双精度,性能会是什么样的?

floating-point double cuda

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

如何在没有2 ^ n if语句的情况下启动具有许多布尔参数的函数模板

我有一个使用函数模板专为性能的原因,所以该功能将只做什么它需要做的,而不是不断地加载并读取布尔检查羯羊它需要做的东西或者不是CUDA(C++)代码.

所有模板参数都是布尔值.在启动内核时,CPU检查布尔值并启动相应的,我相信它被称为"实例化"内核模板.我理解这会给出指数代码大小的增长,但我的问题是关于其他的东西:启动内核模板涉及2 ^ n if语句,是否有更聪明的语法?

例如,如果n = 2:

if(bool1){
    if(bool2){
        <true,true>func();
    }
    else{
        <true,false>func();
    }
}
else{
    if(bool2){
        <false,true>func();
    }
    else{
        <false,false>func();
    }
}
Run Code Online (Sandbox Code Playgroud)

当n = 10时,它变得不可接受,是否有语法来避免这种恐怖?

例如我试过, <bool1 ? true:false,bool2 ? true:false>func()但编译器不喜欢它...

将布尔标志更改为模板参数似乎谈论类似的问题,但OP不仅仅是布尔值,并且提供的解决方案看起来比问题更糟糕,坦率地说,我不明白它的一个词.

c++ syntax templates

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

标签 统计

c++ ×1

cuda ×1

double ×1

floating-point ×1

g++ ×1

gcc ×1

gprof ×1

syntax ×1

templates ×1