标签: cpu

GPU作为CPU的可行性?

您认为GPU作为CUDA等CPU计划的未来是什么?你认为它们会成为主流并成为业界的下一个流行趋势吗?Apple正在构建一个使用GPU执行CPU任务的新框架,并且Nvidias CUDA项目在科学方面取得了很多成功.你会建议学生在这个领域投入时间吗?

cpu cuda gpu gpgpu

13
推荐指数
4
解决办法
2496
查看次数

任务管理器中的CPU时间到底是什么时候?

我有一些托管在Windows服务中的WCF服务.昨天我查看了任务管理器,发现我的Windows服务进程的CPU时间超过5小时,而其他大多数进程都是0.

那是什么意思?

我应该担心CPU时间是5个多小时吗?

cpu wcf windows-services

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

预取L1和L2的数据

在Agner Fog的手册" C++中的优化软件 "第9.10节"大数据结构中的Cahce争论"中,他描述了当矩阵宽度等于称为临界步幅的情况时转置矩阵的问题.在他的测试中,当宽度等于临界步幅时,L1中矩阵的成本增加40%. 如果矩阵更大并且仅适用于L2,则成本为600%! 这在表9.1中的文字中得到了很好的总结.这与在为什么将512x512的矩阵转置比转置513x513的矩阵要慢得多一样是必不可少的

后来他写道:

这种效果对于二级高速缓存争用而言比一级高速缓存争用强得多的原因是二级高速缓存不能一次预取多行.

所以我的问题与预取数据有关.

根据他的评论,我推断L1可以一次预取多个缓存行. 预取了多少?

据我所知,尝试编写代码来预取数据(例如使用_mm_prefetch)很少有用.我读过的唯一例子是Prefetching Examples?它只有O(10%)的改进(在某些机器上).Agner后来解释了这个:

原因是现代处理器由于无序执行和高级预测机制而自动预取数据.现代微处理器能够自动预取包含具有不同步幅的多个流的常规访问模式的数据.因此,如果可以使用固定步幅以常规模式排列数据访问,则不必显式预取数据.

那么CPU如何决定预取哪些数据,以及有哪些方法可以帮助CPU为预取做出更好的选择(例如"具有固定步幅的常规模式")?

编辑:根据Leeor的评论,让我添加我的问题并使其更有趣. 与L1相比,为什么关键步幅对L2的影响要大得多?

编辑:我试图使用代码重现Agner Fog的表格为什么转换512x512的矩阵要比转置513x513的矩阵慢得多? 我在Xeon E5 1620(Ivy Bridge)上以MSVC2013 64位版本模式运行它,它具有L1 32KB 8路,L2 256 KB 8路和L3 10MB 20路.L1的最大矩阵大小约为90x90,L3为256x256,L3为1619.

Matrix Size  Average Time
64x64        0.004251 0.004472 0.004412 (three times)
65x65        0.004422 0.004442 0.004632 (three times)
128x128      0.0409
129x129      0.0169
256x256      0.219   //max L2 matrix size
257x257      0.0692
512x512      2.701
513x513      0.649
1024x1024    12.8
1025x1025    10.1
Run Code Online (Sandbox Code Playgroud)

我没有看到L1中的任何性能损失,但是L2明显具有关键的步幅问题,可能是L3.我不确定为什么L1没有出现问题.有可能还有一些其他的背景源(开销)占据了L1时代的主导地位.

c cpu x86 cpu-cache

13
推荐指数
1
解决办法
5056
查看次数

GCC对读/写指令的重新排序

Linux的同步原语(自旋锁,互斥锁,RCU)使用内存屏障指令强制重新排序内存访问指令.这种重新排序可以由CPU本身或编译器完成.

有人可以展示一些GCC生成的代码示例吗?我主要对x86感兴趣.我之所以问这个问题,是为了理解GCC如何决定可以重新排序的指令.不同的x86 mirco架构(例如:沙桥与常春藤桥)使用不同的缓存架构.因此,我想知道GCC如何进行有效的重新排序,无论缓存架构如何,都有助于执行性能.一些示例C代码和重新排序的GCC生成的代码将非常有用.谢谢!

memory cpu gcc linux-kernel compiler-optimization

13
推荐指数
2
解决办法
5830
查看次数

在现代处理器中是否有128位整数的硬件支持?

我们是否仍然需要在软件中模拟128位整数,或者现在平均桌面处理器中是否有硬件支持?

cpu x86 int128

13
推荐指数
2
解决办法
3755
查看次数

无法在VirtualBox上启用多个CPU

我想使用一个以上的CPU在VirtualBox中运行Ubuntu 14.04 32位,但是当我停止计算机并进入设置->系统->处理器时,处理器滑块呈灰色,如您在屏幕截图图像。
如何启用此功能?

主机操作系统:Windows 10 Pro 64位
来宾操作系统:Ubuntu 14.04 32位
VirtualBox:版本5.1.22 r115126
处理器:Intel(R)CoreTM i7-3770 CPU @ 3.40GHz(8 CPUs),〜3.4GHz

在此处输入图片说明

PS:我首先遇到的问题是Ubuntu虚拟机非常慢,我想提高性能,因此也欢迎提出任何建议。

windows cpu ubuntu virtualbox

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

设计一个可以直接处理IL的CPU有什么意义吗?

如果我理解正确的话:

AMD和英特尔等目前的CPU开发公司都拥有自己的API代码(汇编语言),就像他们在机器代码(1G语言)上看到的2G语言一样

是否可能或希望(性能或其他方面)拥有一个可以在其核心而不是当前API调用上执行IL处理的CPU?

c# compiler-construction cpu performance cpu-architecture

12
推荐指数
4
解决办法
753
查看次数

BIOS ROM如何映射到PC上的地址空间?

x86 CPU在物理地址0xFFFFFFF0处开始执行.BIOS ROM位于地址空间的末尾.CPU从ROM执行的第一条指令是远跳,导致重新加载CS段,因此从物理区0x000F0000 - 0x000FFFFF内执行下一条指令.

什么原因导致ROM在两个区域都做出响应?PC上有一些特殊的地址解码逻辑吗?我在Bochs源代码中发现了一条评论,该代码指出最后128K的BIOS ROM映射到0xE0000 - 0xFFFFF.但是我找不到更多关于此的信息.很明显,这是PC特有的,因为我有x86嵌入式主板,并且这种镜像不会发生在那里.我只能用近跳.

embedded cpu x86 bios

12
推荐指数
2
解决办法
4957
查看次数

12
推荐指数
2
解决办法
9616
查看次数

GPU PoolAllocator会爆炸CPU内存

我制作了一个具有相对常见操作的张量流模型(除了一些tf.where和索引处理之外),但是用不同的输入形状(模型中有许多未定义的张量形状)来调用它.

CPU上的一切正常.但是当你使用GPU时,RAM的使用(不是GPU内存,CPU的内存)稳步增加,以填满机器的256GB并自行杀死.

在此过程中,我得到了通常的消息:

2017-03-17 16:42:22.366601: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247] PoolAllocator: After 18347 get requests, put_count=18345 evicted_count=1000 eviction_rate=0.0545108 and unsatisfied allocation rate=0.0763068
2017-03-17 16:42:22.366680: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:259] Raising pool_size_limit_ from 4385 to 4823
Run Code Online (Sandbox Code Playgroud)

据我所知,GPU的某些DMA内存的池分配器.问题是它似乎永远不会满足它所获得的驱逐率,并且永远不会为自己分配更多的空间.

这是正常的行为吗?他们是控制这个的方法吗?现在,在耗尽内存之前,我无法训练模型超过1小时.

注意:我使用TF的nigthly构建版本,因为我当前模型运行所需的一些错误修正.此外,在训练期间没有添加任何操作,因为我打电话tf.get_default_graph().finalize()

编辑:尝试运行tcmalloc而不是malloc.没有帮助.我还使用了内存分析器,并没有说存在内存泄漏,tcmalloc的内存使用率稳定在500MB,即使内存使用率top更高且程序最终运行OOM.那么为什么tcmalloc剖析器不同意我看到的内存使用情况top呢?

编辑2:重新编译TF与改变硬编码参数,使其"工作".看到这里

memory cpu cpu-usage tensorflow

12
推荐指数
1
解决办法
1494
查看次数