小编Met*_*est的帖子

以64位值为键的哈希表

我有一个哈希表,其键是64位值.表大小可以是不同的功率长度2,例如2,4,8等...我想要一个适用于这种情况的哈希表函数,也就是说,它具有最小的冲突.例如,如果我希望表大小为32,则散列函数应生成0到31之间的值,并且64位输入的冲突最小.

我已经找到了32位输入的良好解决方案,但是还没有64位输入.

对于32位密钥,我正在使用此功能

#define hash32(x)   ( (x) * 2654435761 )

unsigned int getHashKey( unsigned long x )
{
  return hash32(x) >> ( 32 - h_bits );
}
Run Code Online (Sandbox Code Playgroud)

将hash32(x)等效于64位会很有趣.

c hash

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

没有MMU的内存保护

我想知道如何在没有MMU支持的情况下保护内存.我试图谷歌它,但没有看到任何有价值的论文或研究.那些处理它的只会处理bug,例如未初始化的指针,而不是由于软错误引起的内存损坏,也就是说,由于硬件瞬时故障破坏了写入内存位置的指令.

我想知道这个的原因是因为我正在开发一个没有任何内存保护的专有多核平台.现在我的问题是,软件可以用来保护内存,特别是由于软错误导致的疯狂写入(而不是程序员的错误).任何有关这方面的帮助将非常感激.

c memory memory-management

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

防止gcc内联函数

是否可以阻止gcc编译器内联特定函数.如果是这样,怎么样?

不要告诉我降低优化级别.我想要所有的优化,但标记一个特定的函数不被编译器内联,就像变量的情况下的volatile一样.

我想要这样做的原因是因为我的函数使用内联汇编定义的标签,gcc在内联函数时会搞砸,因为内联会导致gcc创建该标签的多个实例.

c linux x86 gcc

6
推荐指数
2
解决办法
4041
查看次数

如何实现确定性的malloc

假设我有一个应用程序的两个实例,它们具有相同的输入和相同的执行顺序。因此,作为一种错误检测机制,一个实例是一个冗余实例,用于与另一个实例比较内存中的数据。

现在,我希望所有内存分配和释放在两个进程中以完全相同的方式发生。最简单的方法是什么?写我自己的malloc和免费的吗?那么分配给其他功能(例如mmap)的内存又如何呢?

c linux malloc x86

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

如何在LLVM模块中插入函数

我正在写一个LLVM传递,我通过调用克隆一些函数llvm::CloneFunction.现在我也想在模块中插入这些功能.我怎样才能做到这一点?

c++ llvm

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

是否可以将共享L2缓存的一部分分配给不同的核心

可以说,4个线程在Multicore x86处理器的4个独立核心上运行,并且它们不共享任何数据,是否可以通过编程方式使4个核心使用共享L2缓存的单独和预定义部分.

c linux x86 multicore

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

如何使用qemu为CPU建模?

我需要在multicoe x86-64处理器上添加一些硬件,并使用仿真对其进行测试,因此我考虑使用QEMU。但是我想知道在qemu中对CPU建模的一般想法。关于此的任何好的文档都将是很棒的。如果做起来太困难,我可能会考虑只使用PIN工具进行简单的模拟。

另外,是否可以使用QEMU对非常规硬件进行建模,例如处理器不同内核之间的某些共享寄存器?当前实现的模型是否正确模拟了诸如缓存访问之类的事情?qemu模拟器是否精确地测量了经过时间以进行模拟?

c multicore x86-64 qemu

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

std :: atomic不能用于clang?

我正在尝试使用std :: atomic和clang.但是,每当我尝试包含头文件atomic(#include <atomic>)时,我都会收到"未找到原子"的消息.请注意,我包括 - std=c++11 -stdlib=libc++在编译时.我错过了什么?

我使用的clang版本是3.2.

c++ atomic clang stdatomic

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

Spark中的分布式缓存的等价物?

在Hadoop中,您可以使用分布式缓存来复制每个节点上的只读文件.在Spark中这样做的等效方法是什么?我知道广播变量,但这只适用于变量,而不是文件.

java hadoop scala apache-spark

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

我可以在运行时更改Spark的执行程序内存吗?

是否可以在Spark中在运行时更改执行程序内存的值?我想这样做的原因是,对于某些地图任务,我希望纱线调度程序将每个任务放在一个单独的节点上.通过将执行程序内存增加到接近节点的总内存,我确保它们分布在每个节点上.后来,我想为每个节点运行几个任务,所以我会为它们降低执行程序内存.

java hadoop scala hadoop-yarn apache-spark

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