小编Mar*_*ler的帖子

优化C代码中的汇编代码冗余

我正在尝试通过研究使用-O3优化在gcc中编译的简单C代码来学习矢量化.更具体地说,编译器的矢量化程度如何.这是一个个人的旅程,能够通过更复杂的计算来验证gcc -O3的性能.我理解传统的观点是编译器比人更好,但我从不认为这种智慧是理所当然的.

然而,在我的第一个简单测试中,我发现一些选择gcc非常奇怪,而且老实说,在优化方面非常疏忽.我愿意假设有一些编译器是有目的的,并且知道一些关于CPU的信息(在这种情况下是Intel i5-2557M),我不知道.但我需要知识渊博的人做一些确认.

我的简单测试代码(段)是:

int i;
float a[100];

for (i=0;i<100;i++) a[i]= (float) i*i;
Run Code Online (Sandbox Code Playgroud)

与for循环对应的结果汇编代码(段)如下:

.L6:                        ; loop starts here
    movdqa  xmm0, xmm1      ; copy packed integers in xmm1 to xmm0
.L3:
    movdqa  xmm1, xmm0      ; wait, what!?  WHY!?  this is redundant.
    cvtdq2ps    xmm0, xmm0  ; convert integers to float
    add rax, 16             ; increment memory pointer for next iteration
    mulps   xmm0, xmm0      ; pack square all integers in xmm0
    paddd   xmm1, xmm2      ; …
Run Code Online (Sandbox Code Playgroud)

c optimization assembly gcc

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

什么是FFT结果中的频域熵以及如何计算它?

我是一名程序员,但在数学方面退出了不好.我最近读了一篇提到频域熵的文章,他从FFT功率谱计算出这个东西,但没有告诉我怎么做.我无法在网上找到足够的信息来了解它是什么.我很感激任何帮助..

这是文章的一部分: 在此输入图像描述

signal-processing fft software-defined-radio

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

当尝试在GNU Radio中使用我的USRP时,我得到"没有找到----->的设备"错误

当尝试执行使用USRP的GNU Radio程序时,我得到一个错误回溯,(在Python中)通常以以下结尾:

    self.u = uhd.usrp_source(device_addr=args, stream_args=uhd.stream_args('fc32'))
  File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/__init__.py", line 122, in constructor_interceptor
    return old_constructor(*args)
  File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/uhd_swig.py", line 2351, in make
    return _uhd_swig.usrp_source_make(*args)
RuntimeError: LookupError: KeyError: No devices found for ----->
Run Code Online (Sandbox Code Playgroud)

USRP正在运行.

gnuradio usrp uhd

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

如何获得定制开发项目的最终用户(客户端)反馈

我的公司是一个定制开发商店,用于许多项目,一些较大,一些较小.目前,我们通过电子邮件处理所有客户沟通.因此,我们通过电子邮件发送设计文档,将其标记并发回.然后我们推出了他们产品的测试版,他们给我们发电子邮件,提出任何错误,新功能等.等等......

当我正在努力实现一个新的错误跟踪系统(看起来它现在将是Mantis)时,我想知道如何最好地允许我们的客户与我们的开发过程接口,以便更好地跟踪功能请求和客户端提交了错误并将我们的回复传达给客户.

如果有人知道一个特别好的bug跟踪系统我会有兴趣听到这个.否则,我只是在寻找一些通用指南或良好的商业惯例,使您的公司能够有效地与客户进行交互.

更新:我的公司使用LAMPP堆栈,因为我们是一家预算有限的小商店,我们倾向于坚持使用开源和免费的工具.

大多数人是使用Team Foundation Server来处理这个还是来回发送电子邮件?

bug-tracking end-user user-feedback

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

无法在Anaconda Python上安装wxPython

我在RHEL6系统上安装了Anaconda Python.为了运行gnuradio我需要wxPython.出于这个原因,我做到了

conda install wxpython
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试在python中导入Wx模块时.然后出现以下错误:

>>> import wx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/scr1/nemanja/install/anaconda/lib/python2.7/site-packages/wx-3.0-gtk2/wx/__init__.py", line 45, in <module>
from wx._core import *
File "/scr1/nemanja/install/anaconda/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py", line 4, in <module>
import _core_
ImportError: /scr1/nemanja/install/anaconda/lib/python2.7/site-packages/wx-3.0-gtk2/wx/../../../../libwx_gtk2u-3.0.so.0: undefined symbol: g_malloc_n
Run Code Online (Sandbox Code Playgroud)

这里缺少什么?

wxpython gnuradio anaconda

6
推荐指数
2
解决办法
7966
查看次数

将string中的特定索引更改为相同的值python

目标

读取大小为1.3GB的大型二进制文件并更改某些位,然后将其写回单独的文件(无法修改原始文件).

方法

当我读入二进制文件时,它被存储在以十六进制格式编码的大量字符串中,这是不可变的,因为我使用的是python.

我的算法循环遍历整个文件,并在列表中存储需要修改的字符串的所有索引.问题是字符串中的所有索引都需要修改为相同的值.由于不变性,我无法做到这一点.我无法将其转换为字符列表,因为这会破坏我的内存限制并花费大量时间.可行的事情是将它存储在一个单独的字符串中,但由于不可变的性质,我必须制作大量的字符串对象并继续连接它们.

我使用了https://waymoot.org/home/python_string/中的一些想法,但它并没有给我一个好的表现.任何想法,目标是将现有的超长字符串完全复制到另一个,除了由索引列表中的值确定的某些占位符?

python string file-io

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

如何在不运行“fmt::format”的情况下计算出结果的长度?

在回答有关将二维字符串数组打印到表中的问题时,我意识到

我还没有找到更好的方法来确定fmt::format实际格式化为字符串并检查该字符串的长度的调用结果的长度。

这是设计使然,还是有更有效的方法来实现这一点?我不太了解 fmtlib 的内部结构,但我想,在内存分配发生之前就知道结果的长度。我特别想避免内存分配。

c++ fmt

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

录制样本的GNU广播文件格式

您知道GNU Radio(GNU Radio Companion中的文件接收器)将样本存储在二进制文件中的格式吗?

我需要在Matlab中阅读这些示例,但是问题是文件太大而无法在Matlab中阅读。

我正在用C ++编写程序以读取此二进制文件。

gnuradio

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

从麦克风插头访问原始信号

我需要从笔记本电脑上的麦克风插头获取原始信号流。由于我在编写与硬件直接交互的代码方面的经验几乎没有,因此我欢迎任何可能的参考资料。

我正在使用 Linux - Ubuntu 14.04。

c hardware signal-processing

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

bash:睡眠过程没有被杀死

我写了一个简单的bash脚本,除了睡觉之外什么都不做.

#!/bin/bash

echo "Sleeping..."
sleep 180s
Run Code Online (Sandbox Code Playgroud)

运行脚本后,我看到系统上运行了两个进程:

user 22880  0.0  0.0  12428  1412 pts/28   S+   20:12   0:00 /bin/bash ./sleep.sh
user 22881  0.0  0.0   7196   356 pts/28   S+   20:12   0:00 sleep 180s
Run Code Online (Sandbox Code Playgroud)

我通过使用哪个来杀死进程SIGTERM来给id 进程.但是,在此之后,我仍然看到运行的sleep命令在180秒后退出.22880kill -15 22880

user 22881  0.0  0.0   7196   356 pts/28   S    20:12   0:00 sleep 180s
Run Code Online (Sandbox Code Playgroud)

为什么会这样?如果不让sleep 180s流程继续运行,我需要做什么?

bash shell sleep signals

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