我想使用 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 代码中的变量。
如果要模拟具有两个单精度浮点的双精度浮点,那么性能会是什么样的,并且可以做得好吗?
目前,Nvidia正在为双精度特斯拉卡充电,这使得您可以获得单精度性能的三分之一(值得注意的是Titan/Titan Black除外).
如果要使用具有gimped双精度的Geforce GPU并使用2个单精度浮点模拟双精度,性能会是什么样的?
我有一个使用函数模板专为性能的原因,所以该功能将只做什么它需要做的,而不是不断地加载并读取布尔检查羯羊它需要做的东西或者不是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不仅仅是布尔值,并且提供的解决方案看起来比问题更糟糕,坦率地说,我不明白它的一个词.