小编pyt*_*nic的帖子

CRC校验和使用长(64位)

我检查了CRC64的不同实现.例如,这个,这个这个.所有这些的问题是它们使用字节.但是,在64位系统上,我想使用long(8字节).通过这种方式,我需要减少迭代次数.例如,对于128字节的数据,使用a byte,我需要迭代128次,而使用long,我需要迭代16次.

是否有任何CRC64实现使用long甚至字长大于一个字节?可以修改这些方案吗?

c checksum

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

在这种情况下,缓存一致性如何影响性能

假设核心A正在修改变量X而核心B正在读取该变量(X).当然,在这种情况下,高速缓存一致性协议将更新核心B的高速缓存,因为X已被核心A修改,并且当然这种高速缓存一致性将减慢核心B上的执行.但是,这种高速缓存一致性是否也会影响核心A的性能,假设变量X驻留在其缓存中.

c multithreading multicore x86-64 multiprocessing

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

SSE指令在哪里优于正常指令

x86-64的SSE指令(向量指令)在哪里优于正常指令.因为我所看到的是,执行SSE指令所需的频繁加载和存储会使由于向量计算而产生的任何增益无效.那么有人可以给我一个示例SSE代码,它比普通代码表现更好.

也许是因为我分别传递了每个参数,就像这样......

__m128i a = _mm_set_epi32(pa[0], pa[1], pa[2], pa[3]);
__m128i b = _mm_set_epi32(pb[0], pb[1], pb[2], pb[3]);
__m128i res = _mm_add_epi32(a, b);

for( i = 0; i < 4; i++ )
 po[i] = res.m128i_i32[i];
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以一次性传递所有4个整数,我的意思是一次性传递整个128个字节pa?并分配res.m128i_i32po一气呵成?

c sse x86-64

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

如何在LLVM中禁用优化

我正在clang使用-O4优化编译代码.但是,我想禁用内联函数.我有自己的LLVM传递,它为生成的代码注入了一些代码.在我通过之后,我想启用内联函数.我怎样才能做到这一点.

c c++ llvm clang

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

是否采用C++标准来对齐这样的结构

举个例子

class A
{
public:
  int a; 
  char b;
  int c;
};
Run Code Online (Sandbox Code Playgroud)

我看到每个编译器(对于x86,32或64位)为类分配12个字节A,而不是9.因此它们可以对齐b整数边界或总线边界.我的问题是,如果这是在C++标准中这样做,如果有任何编译器不这样做.

c++ x86

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

如何检查为Spark编写的scala程序中的资源/内存泄漏

我有一个用Scala编写的Spark程序.我注意到,随着容器执行越来越多的任务,它的内存消耗不断增加,直到纱线刚刚杀死容器为止.因此,存在一些资源/内存泄漏,这在代码中并不明显.有没有办法检查这种泄漏?

hadoop scala bigdata hadoop-yarn apache-spark

6
推荐指数
0
解决办法
277
查看次数

"spark.memory.fraction"似乎没有任何效果

在Spark中,java.lang.OutOfMemoryError: Java heap space从函数中读取HDFS中大约1 GB的字符串时出现错误.我使用的执行程序内存是6 GB.为了增加用户内存,我甚spark.memory.fraction至减少到0.3,但我仍然得到相同的错误.似乎降低该值没有任何影响.我正在使用Spark 1.6.1并使用Spark 1.6核心库进行编译.我在这里做错了吗?

java scala apache-spark

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

在LLVM中,如何检查块是否为合并块

我正在写一个LLVM Pass.我的传递需要知道哪个块是合并块,即具有多于1个前驱的块.如何在我的代码中测试?

c++ llvm clang

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

条件表达式总是在C中评估为0或1吗?

条件表达式,例如涉及&&||的表达式 ,他们总是评价为0或1吗?或者对于真实情况,1以外的数字是可能的吗?我问,因为我想分配一个像这样的变量.

int a = cond1 && cond2;
Run Code Online (Sandbox Code Playgroud)

我想知道我是否应该做以下事情.

int a = (cond1 && cond2)? 1:0;
Run Code Online (Sandbox Code Playgroud)

c logical-operators semantics

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

AVX2浮点数比较并获得0.0或1.0而不是全0或全1位

基本上,在结果向量中,我想为所有输入浮点值> 1保存1.0,而对于所有输入浮点值<= 1保存0.0.这是我的代码,

float f[8] = {1.2, 0.5, 1.7, 1.9, 0.34, 22.9, 18.6, 0.7};
float r[8]; // Must be {1, 0, 1, 1, 0, 1, 1, 0}

__m256i tmp1 = _mm256_cvttps_epi32(_mm256_loadu_ps(f));
__m256i tmp2 = _mm256_cmpgt_epi32(tmp1, _mm256_set1_epi32(1));
_mm256_store_ps(r, _mm256_cvtepi32_ps(tmp2));

for(int i = 0; i < 8; i++)
    std::cout << f[i] << " : " << r[i] << std::endl;
Run Code Online (Sandbox Code Playgroud)

但我没有得到正确的结果.这就是我得到的.为什么AVX2关系操作不适合我?

1.2 : 0
0.5 : 0
1.7 : 0
1.9 : 0
0.34 : 0
22.9 : -1
18.6 : -1
0.7 …
Run Code Online (Sandbox Code Playgroud)

c++ sse simd avx avx2

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