我想在XeonE5 Sandy Bridge上使用基于精确事件的采样(PEBS)来记录特定事件的所有地址(例如缓存未命中).
但是,Core TM i7处理器和Intel®XeonTM5500处理器性能分析指南(第24页)包含以下警告:
由于PEBS机制在指令完成时捕获寄存器的值,因此无法重建以下类型的加载指令(Intel asm约定)的解除引用的地址.
MOV RAX, [RAX+const]
这种指令主要与指针追逐相关联.
mystruc = mystruc->next;
这是捕获存储器指令地址的这种方法的重大缺点.
根据objdump,我在程序中有许多该表单的加载指令.有什么办法可以避免吗?
由于这是一个特定于英特尔的问题,解决方案不必以任何方式移植,它只需要工作.我的代码是用C语言编写的,我理想地寻找编译器级解决方案(gcc或icc),但欢迎任何建议.
一些例子:
mov 0x18(%rdi),%rdi
mov (%rcx,%rax,8),%rax
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,该指令退役之后(因此当我看到的寄存器值来找出我装到/从)的地址(分别的值%rdi + 18和%rcx + 8 * %rax这些实施例中)通过的结果重写mov.
我想看看是否可以在函数中运行函数列表.我能找到的最接近的东西是循环整个模块.我只想使用预先选择的功能列表.
这是我原来的问题:
样本输入
qA2
Run Code Online (Sandbox Code Playgroud)
样本输出(必须打印到单独的行,如果至少一个字母通过则为True,否则为每个测试的所有字母都失败):
True
True
True
True
True
Run Code Online (Sandbox Code Playgroud)
我写了一个测试.当然我可以写出5组不同的代码,但这看起来很难看.然后我开始想知道我是否可以循环完成他们要求的所有测试.
仅一个测试的代码:
raw = 'asdfaa3fa'
counter = 0
for i in xrange(len(raw)):
if raw[i].isdigit() == True: ## This line is where I'd loop in diff func's
counter = 1
print True
break
if counter == 0:
print False
Run Code Online (Sandbox Code Playgroud)
我尝试使用所有测试运行循环失败:
raw = 'asdfaa3fa'
lst = [raw[i].isalnum(),raw[i].isalpha(),raw[i].isdigit(),raw[i].islower(),raw[i].isupper()]
counter = 0
for f in range(0,5):
for i in xrange(len(raw)):
if lst[f] == True: ## loop through f, which …Run Code Online (Sandbox Code Playgroud) 每当我尝试mpi_reduce使用mpi_in_place发送缓冲区进行调用时,它都会崩溃.谷歌的一个拖网显示这对Mac OS OMPI 1.3.3来说是一个问题 - 但我在CentOS上使用OMPI 1.6.3(使用gfortran 4.4.6).
以下程序崩溃:
PROGRAM reduce
USE mpi
IMPLICIT NONE
REAL, DIMENSION(2, 3) :: buffer, gbuffer
INTEGER :: ierr, me_world
INTEGER :: buf_shape(2), counts
CALL mpi_init(ierr)
CALL mpi_comm_rank(mpi_comm_world, me_world, ierr)
buffer = 1.
IF (me_world .EQ. 0) PRINT*, "buffer: ", buffer
buf_shape = SHAPE(buffer)
counts = buf_shape(1)*buf_shape(2)
CALL mpi_reduce(MPI_IN_PLACE, buffer, counts, mpi_real, mpi_sum, 0, mpi_comm_world, ierr)
IF (me_world .EQ. 0) PRINT*, "buffer: ", buffer
CALL mpi_finalize(ierr)
END PROGRAM reduce
Run Code Online (Sandbox Code Playgroud)
MPI错误是:
MPI_ERR_ARG: …Run Code Online (Sandbox Code Playgroud) 我正在将Ace Editor集成到一个Web应用程序中,并使用像这样的vim键绑定:
var editor = ace.edit('editor');
editor.setDisplayIndentGuides(false);
editor.setHighlightActiveLine(false);
editor.setShowFoldWidgets(false);
editor.setShowInvisibles(false);
editor.setShowPrintMargin(false);
editor.setKeyboardHandler('ace/keyboard/vim');
Run Code Online (Sandbox Code Playgroud)
我也将此命令映射到Ctrl-S/Command-S,因为我想测试行为
editor.commands.addCommand({
name: 'saveFile',
bindKey: {
win: 'Ctrl-S', mac: 'Command-S',
sender: 'editor|cli'
},
exec: function (env, args, request) {
console.log('saving...', env, args, request);
}
});
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但问题是当使用ESCape键在Vim中进入"普通"模式,并使用:w来保存文件时,上面定义的命令的exec函数不会像调用Ctrl-S/Command那样被调用-S ......
并且keybinding-vim.js文件抛出一个错误,关于CodeMirror.commands.save没有被定义...
我查看了API文档和演示,但一直无法找到解决此问题的"正确"方法.
帮助赞赏.谢谢
我尝试通过pip安装pygobject
pip install --user PyGObject
Run Code Online (Sandbox Code Playgroud)
但我不工作:
Collecting PyGObject
Using cached pygobject-2.28.3.tar.bz2
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 20, in <module>
File "C:\Users\A\AppData\Local\Temp\pip-build-phby_jwb\PyGObject\
setup.py", line 272
raise SystemExit, 'ERROR: Nothing to do, gio could not be found and is
essential.'
^
SyntaxError: invalid syntax
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\A\AppData\Local\Temp\pip-build-phby_jwb\PyGObject
Run Code Online (Sandbox Code Playgroud)
我的python版本v3.5.0:374f501f4567,现在我在Windows 7上工作
我想将 DAG 设置为一次运行一天。我怎样才能做到这一点?
我试过“取决于过去=真”,但它只能确保每个任务随后运行。我想要的是,如果我从 X 天开始回填,那么 X 天的所有任务都会在 X+1 天的 DAG 开始之前运行,依此类推。
我喜欢我的标签显示为 4 个空格,为此我有首选项core.pager = 'less -x4'.
我知道此时我在吹毛求疵,但即使在差异模式下,我也希望前导标签为 4 个空格,这显然是最常用的 - 但是由于前导+, -,它仅显示为 3或。由于对齐的行,这有点烦人,如果有些没有前导选项卡,与其他人相比,它们会移动 1 列。
我可以更正差异的显示,less -x1,5以获得 4 个空格的选项卡,在列 1 模 4 上对齐。但是,此选项会导致前导选项卡在非差异模式下显示为 1 列,这反过来又非常令人不安。
因此,对于两个具体示例,我如何设置 git 选项以便我使用:
less -x1,5对于差异(或真正的补丁显示)命令,例如git diff或git show HEADless -x4 对于不显示差异的命令,例如 git show HEAD~1:package.json我确信必须有一个不同的渲染器来处理基本diff和cat操作,但我无法找到这些特定的选项(尽管它们可能存在,但关于 git 主题有很多噪音)。我也不想写一大堆别名,这有点太脏了。那么这甚至可能吗?
如果你有一些社交网络应用程序,并且你希望你的用户使用移动设备与他们进行交互,你会使用WAP或普通网站的瘦身版本吗?
我的思路是,由于所有可用的移动网络浏览器(Iphone,Opera Mini),WAP已经死亡或至少开始流血致死.这是一个很好的假设吗?
此外,在选择您想要开发的移动访问类型时,您应该考虑哪种受众考虑因素?
我不确定我的目标设备.我很确定我的用户会更"现代",所以我们可以假设Windows Mobile,iPhone和Blackberry设备.
假设我有一堆十六进制数字,我在 python 中打印,例如,用于调试目的的地址,并且我希望能够直观地比较它们。对此的一个很大帮助是对数字进行分组,类似于我们对小数使用千位分隔符的方式。
\n\n这也是为什么当你十六进制转储某些数字时,数字按 4 分组,而不是深不可测的长十六进制字符字符串。
\n\n不可读: 47167689711616
\n勉强可读: 2ae61563e000
\n半可读: 47,167,689,711,616
\n最可读: 2ae6,1563,e000
我并不关心分隔符是什么,是否按 2、3 或 4 位数字分组。但是,分组选项似乎不起作用:
\n\n>>> \'{:x}\'.format(47167689711616)\n\'2ae61563e000\'\n>>> \'{:,x}\'.format(47167689711616)\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nValueError: Cannot specify \',\' with \'x\'.\nRun Code Online (Sandbox Code Playgroud)\n\nI\xe2\x80\x99m 使用的机器(并且 I\xe2\x80\x99m 不是 admin)仅具有python 3.4。
\n