小编pyt*_*nic的帖子

我该如何进行llvm链接时间优化

我编译了一个C++程序,例如使用以下内容.

clang++ -O4 -emit-llvm file1.cpp -c -o file1.bc 
clang++ -O4 -emit-llvm file2.cpp -c -o file2.bc 

llvm-link file1.bc file2.bc 
Run Code Online (Sandbox Code Playgroud)

如何在此处执行链接时间优化?

c++ llvm clang

4
推荐指数
1
解决办法
4612
查看次数

我可以向不同的线程发送信号吗

假设我有一个线程 A,它想向线程 B、C 和 D 发送信号。我可以做这样的事情吗?

SendSignalTo( ThreadB, SIGUSR1 );
SendSignalTo( ThreadC, SIGUSR1 );
SendSignalTo( ThreadD, SIGUSR1 );
Run Code Online (Sandbox Code Playgroud)

使用 SIGUSR1 信号处理程序,为线程 B、C 和 D 定义不同,如下所示。

void SIGUSR1_Handler_for_ThreadB(...){...}
void SIGUSR1_Handler_for_ThreadC(...){...}
void SIGUSR1_Handler_for_ThreadD(...){...}
Run Code Online (Sandbox Code Playgroud)

如果没有,还有什么选择。

c c++ linux x86 gcc

4
推荐指数
1
解决办法
7197
查看次数

如何从LLVM中的终止符指令中删除后继

对于基本块,我想将条件跳转更改为无条件跳转.因此,如果一个基本块有两个后继者,我想删除其中一个后继者的边缘.我希望基本块直接跳转到其中一个继承者.我怎样才能做到这一点?

为了说明我的观点,我想改变

      A
    /  \
   /    \
  B      C
Run Code Online (Sandbox Code Playgroud)

     A
      \
       \
        C
Run Code Online (Sandbox Code Playgroud)

c c++ compiler-construction llvm

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

替换 LLVM 指令的操作数

在下面的代码中,我尝试替换 LLVM 指令的操作数。然而它不起作用并且没有任何改变。知道如何解决这个问题吗?

for (OI = insn->op_begin(), OE = insn->op_end(); OI != OE; ++OI)
{
    Value *val = *OI;
    iter = mapClonedAndOrg.find( val );

    if( iter != mapClonedAndOrg.end( ) )
    {
        // Here I try to replace the operand, to no effect!
        val = (Value*)iter->second.PN;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction llvm

4
推荐指数
1
解决办法
3699
查看次数

缓存可以保存来自多个进程的数据吗?

我们知道缓存使用虚拟地址.那么,当涉及多个进程时,这是如何工作的,特别是对于共享高速缓存,例如共享二级高速缓存,甚至是本地L1高速缓存,当切换进程时,如同时(超级)多线程一样,你可以有线程来自在同一物理核心上运行的两个不同进程.当涉及来自不同进程的线程时,超线程是否有任何好处,或者它是否只能在涉及相同进程的线程时提高性能?

x86 multithreading caching multiprocessing

4
推荐指数
1
解决办法
459
查看次数

如何从命令行检查 Spark 配置?

基本上,我想通过命令行检查Spark配置的一个属性,例如“spark.local.dir”,即无需编写程序。有没有办法做到这一点?

linux hadoop scala apache-spark

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

如何在 Scala 中分配引用而不是值?

以下面的代码为例,

var a = new StringBuffer("Foo!")
val b = a
a = null
println(b)
Run Code Online (Sandbox Code Playgroud)

我预计b的值会变为null,但事实并非如此。与 Java 中分配引用不同,这里a被复制到b。我们如何在 Scala 中分配引用而不是仅仅复制值?

java scala

4
推荐指数
1
解决办法
872
查看次数

为什么火花继续重新计算RDD?

我使用flatMap制作RDD.稍后我会对它进行范围分区.如果我坚持原始RDD,一切正常.但是,如果我不缓存它,范围分区器部分想要重新计算原始RDD的一部分.我知道如果我没有足够的内存,但在这种情况下,我的系统中的内存比RDD占用的内存多得多.其次,该RDD的计算很长,因此重新启动/重新计算确实会损害性能.这种奇怪行为的原因是什么?

PS我只使用RDD一次.所以,这不应该发生.

scala apache-spark

4
推荐指数
1
解决办法
1070
查看次数

sc.textFile之后的zipWithIndex会给出正确的行号吗?

说如果我这样做,如下所示.

val rdd = sc.textFile("someFile.txt")
val rddWithLines = rdd.zipWithIndex
Run Code Online (Sandbox Code Playgroud)

zipWithIndex添加的索引是否与输入文件中的行号(当然第一行为0)相对应?或者在这种情况下订单是否破裂?

scala apache-spark

4
推荐指数
1
解决办法
671
查看次数

_mm256_shuffle_ps如何工作?

我明白了_mm_shuffle_ps工作.例如,在下面.

__m128 r = _mm_shuffle_ps(x,y, _MM_SHUFFLE(2,0,2,0)); 
Run Code Online (Sandbox Code Playgroud)

r将有内容x[0],x[2],y[0],y[2].

但是我看到它_MM_SHUFFLE也需要4个参数_mm256_shuffle_ps,而矢量每个都有8个元素.所以,逻辑上_MM_SHUFFLE应该采取8个参数.有人可以解释这是如何工作的吗?

c x86 simd intrinsics avx

4
推荐指数
1
解决办法
1666
查看次数