我正在尝试通过研究使用-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) 我是一名程序员,但在数学方面退出了不好.我最近读了一篇提到频域熵的文章,他从FFT功率谱计算出这个东西,但没有告诉我怎么做.我无法在网上找到足够的信息来了解它是什么.我很感激任何帮助..
这是文章的一部分:
当尝试执行使用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正在运行.
我的公司是一个定制开发商店,用于许多项目,一些较大,一些较小.目前,我们通过电子邮件处理所有客户沟通.因此,我们通过电子邮件发送设计文档,将其标记并发回.然后我们推出了他们产品的测试版,他们给我们发电子邮件,提出任何错误,新功能等.等等......
当我正在努力实现一个新的错误跟踪系统(看起来它现在将是Mantis)时,我想知道如何最好地允许我们的客户与我们的开发过程接口,以便更好地跟踪功能请求和客户端提交了错误并将我们的回复传达给客户.
如果有人知道一个特别好的bug跟踪系统我会有兴趣听到这个.否则,我只是在寻找一些通用指南或良好的商业惯例,使您的公司能够有效地与客户进行交互.
更新:我的公司使用LAMPP堆栈,因为我们是一家预算有限的小商店,我们倾向于坚持使用开源和免费的工具.
大多数人是使用Team Foundation Server来处理这个还是来回发送电子邮件?
我在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)
这里缺少什么?
目标
读取大小为1.3GB的大型二进制文件并更改某些位,然后将其写回单独的文件(无法修改原始文件).
方法
当我读入二进制文件时,它被存储在以十六进制格式编码的大量字符串中,这是不可变的,因为我使用的是python.
我的算法循环遍历整个文件,并在列表中存储需要修改的字符串的所有索引.问题是字符串中的所有索引都需要修改为相同的值.由于不变性,我无法做到这一点.我无法将其转换为字符列表,因为这会破坏我的内存限制并花费大量时间.可行的事情是将它存储在一个单独的字符串中,但由于不可变的性质,我必须制作大量的字符串对象并继续连接它们.
我使用了https://waymoot.org/home/python_string/中的一些想法,但它并没有给我一个好的表现.任何想法,目标是将现有的超长字符串完全复制到另一个,除了由索引列表中的值确定的某些占位符?
在回答有关将二维字符串数组打印到表中的问题时,我意识到:
我还没有找到更好的方法来确定fmt::format
实际格式化为字符串并检查该字符串的长度的调用结果的长度。
这是设计使然,还是有更有效的方法来实现这一点?我不太了解 fmtlib 的内部结构,但我想,在内存分配发生之前就知道结果的长度。我特别想避免内存分配。
您知道GNU Radio(GNU Radio Companion中的文件接收器)将样本存储在二进制文件中的格式吗?
我需要在Matlab中阅读这些示例,但是问题是文件太大而无法在Matlab中阅读。
我正在用C ++编写程序以读取此二进制文件。
我需要从笔记本电脑上的麦克风插头获取原始信号流。由于我在编写与硬件直接交互的代码方面的经验几乎没有,因此我欢迎任何可能的参考资料。
我正在使用 Linux - Ubuntu 14.04。
我写了一个简单的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秒后退出.22880
kill -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
流程继续运行,我需要做什么?