很多时候,Git和Rails看起来像魔术......比如在Rails 3 Tutorial一书的第一章中,它讨论了Git:
git remote add origin git@github.com:peter/first_app.git
git push origin master
Run Code Online (Sandbox Code Playgroud)
并且它几乎说"它只是有效"而没有说太多关于它们是什么并且开始谈论分支.在网上搜索显示git remote add添加"短名称",例如origin,它也可以是任何名称,这就像URL的别名.并且origin是远程回购所指向的通常路径.(在"添加远程存储库"下的http://git-scm.com/book/en/Git-Basics-Working-with-Remotes中)
那么为什么URL不是 git://git@github.com/peter/first_app.git在其他语法中 - 它是什么语法?为什么一定要结束.git?我尝试不使用.git最终,它也有效.如果没有.git,还有什么呢?在git中git@github.com似乎是git的服务器上的用户帐户?
另外,为什么它需要如此冗长才能使用git push origin master?默认不能是origin和master吗?我发现第一次,origin master需要,但经过一个小的编辑和提交,然后git push就是它所需要的(没有必要origin master).知道发生了什么的人可以提供一些细节吗?
有时候感觉就像没有任何解释的魔法......有时使用它的人是如此自信,当被问到为什么时,无法解释它,并回答"就像它的方式".有时非常务实和务实.实践并不坏,但可能不实际到不知道发生了什么.
在Firefox中有插件和扩展.你能解释一下为什么这些插件有不同的名称和标签吗?它们之间是否存在差异所以它们需要不同的名称?我觉得区分这些东西有点不自然,扩展有如此多的功能,他们缺少与插件相比的东西?
本周我的任务中有这个问题,我不明白缓存是如何被打败的,或者我如何用汇编程序来展示它.有人能指出我正确的方向吗?
使用汇编程序示例显示如何消除两个不同的缓存(关联和直接映射).解释为什么会发生这种情况以及如何解决这个问题.用于击败缓存的相同程序是否相同?
注意:这是作业.不要只为我回答这个问题,它不会帮助我理解这些材料.
使用c程序:
int main(int argc , char** argv)
{
return __builtin_popcountll(0xf0f0f0f0f0f0f0f0);
}
Run Code Online (Sandbox Code Playgroud)
和编译器行(gcc 4.4 - Intel Xeon L3426):
gcc -msse4.2 poptest.c -o poptest
Run Code Online (Sandbox Code Playgroud)
我没有得到内置的popcnt insruction,而是编译器生成一个查找表并以这种方式计算popcount.生成的二进制文件超过8000个字节.(东旭!)
非常感谢您的帮助.
I'm implementing an ultra fast popcount on Intel Xeon® Phi®, as it's a performance hotspot of various bioinformatics software.
I've implemented five pieces of code,
#if defined(__MIC__)
#include <zmmintrin.h>
__attribute__((align(64))) static const uint32_t POPCOUNT_4bit[16] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
__attribute__((align(64))) static const uint32_t MASK_4bit[16] = {0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF};
inline uint64_t vpu_popcount1(uint64_t* buf, size_t n) { …Run Code Online (Sandbox Code Playgroud) 我有两个功能,do_step_one(i)并且do_step_two(i),i从... 0到N-1.
目前,我有这个(顺序)代码:
for(unsigned int i=0; i<N; i++) {
do_step_one(i);
}
for(unsigned int i=0; i<N; i++) {
do_step_two(i);
}
Run Code Online (Sandbox Code Playgroud)
的每次调用do_step_one(),并do_step2()可以以任何顺序和并行执行,但任何do_step_two()需要的全部结束do_step_one(),开始(使用它do_step_one()的结果).
我尝试了以下方法:
#omp parallel for
for(unsigned int i=0; i<N; i++) {
do_step_one(i);
#omp barrier
do_step_two(i);
}
Run Code Online (Sandbox Code Playgroud)
但是gcc抱怨道
convolve_slices.c:21:警告:屏障区域可能不会紧密嵌套在工作共享,关键,有序,主要或显式任务区域内.
我有什么误解?如何解决这个问题?
//quick inline asm statements performing the swap_byte for key_scheduling
inline void swap_byte(unsigned char *x, unsigned char *y)
{
unsigned char t;
asm("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(t)
:"r"(*x)
:"%eax");
asm("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(*x)
:"r"(*y)
:"%eax");
asm("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(*y)
:"r"(t)
:"%eax");
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想从交换焦炭x和存储y,与同为y至x.我已经通过更改movl来编译这些指令mov但没有成功.编译/链接的问题在哪里?
这是cygwin中编译的输出:
$ gcc rc4_main.c -o rc4ex
/tmp/ccy0wo6H.s: Assembler messages:
/tmp/ccy0wo6H.s:18: Error: operand type mismatch for `mov'
/tmp/ccy0wo6H.s:18: Error: …Run Code Online (Sandbox Code Playgroud)