Tag: 处理器

为什么英特尔Haswell XEON CPU零星地计算FFT和ART?

在最后几天,我观察到我无法解释的新工作站的行为。 对这个问题做了一些研究, INTEL Haswell架构和当前Skylake Generation中可能存在一个bug。 在撰写关于可能的错误之前,让我给你一个使用的硬件,程序代码和问题本身的概述。 工作站硬件规范 英特尔至强E5-2680 V3 2500MHz 30Mcaching12核 Supermicro SC745 BTQ -R1K28B-SQ 4 x 32GB ECC Registered DDR4-2133 Ram INTEL SSD 730系列480 GB NVIDIA Tesla C2075 NVIDIA TITAN 有问题的操作系统和程序代码 我目前正在运行Ubuntu 15.04 64位桌面版本,最新的更新和内核的东西安装。 除了使用这台机器开发CUDA内核和东西,我最近testing了一个纯C程序。 该程序正在对相当大的input数据集进行一些修改后的ART 。 所以代码执行一些FFT并花费相当多的时间来完成计算。 我目前无法发布/链接到任何源代码,因为这是正在进行的研究,无法发布。 如果你不熟悉ART ,只是简单的解释一下。 ART是一种技术,用于重build从计算机断层摄影机接收到的数据,以获取可见的图像进行诊断。 所以我们的代码版本重build了像2048x2048x512这样的大小的数据集。 到目前为止,没有什么特别的,也没有涉及火箭科学。 经过几个小时的debugging和修复错误,代码在参考结果上进行了testing,我们可以确认代码的工作原理。 代码使用的唯一的库是标准的math.h 没有特殊的编译参数,没有额外的库的东西,可能会带来额外的问题 。 观察问题 该代码使用一种技术来实现ART,以最小化重构数据所需的投影。 那么我们假设我们可以重build一个包含25个投影的数据片。 代码在12个内核上以完全相同的input数据启动。 请注意,该实现不是基于multithreading,目前启动了12个程序实例。 我知道这不是最好的办法,涉及适当的线程pipe理是非常build议,这已经在改善列表:) […]

使用C获取Linux中的CPU数量

有没有一个API来获取Linux中可用的CPU数量? 我的意思是,不使用/ proc / cpuinfo或任何其他系统节点文件… 我发现这个实现使用sched.h: int GetCPUCount() { cpu_set_t cs; CPU_ZERO(&cs); sched_getaffinity(0, sizeof(cs), &cs); int count = 0; for (int i = 0; i < 8; i++) { if (CPU_ISSET(i, &cs)) count++; } return count; } 但是,使用通用库不会有更高的水平吗?

什么是处理程序

嗨,我正在尝试学习一些编程相关的术语,我经常来到这个词处理程序。 任何人都可以请求解释什么处理程序意味着什么时候使用该术语。

无钟电脑芯片发生了什么事?

几年前,“下一件大事”就是没有时钟的电脑。 背后的想法是没有时钟,处理器将运行速度更快。 那就是现在,现在,我找不到任何有关它是如何来的信息,或者如果这个想法是一个胸围… 有人知道吗? 以供参考: http://www.cs.columbia.edu/~nowick/technology-review-article-10-01.pdf

行业标准中禁止#定义?

我是计算机系的第一年,我的教授说#define在#if , #ifdef , #else和其他一些预处理指令中被禁止在行业标准中使用。 他因为意外的行为而使用“禁止”这个词。 这是准确的吗? 如果是这样的话 事实上,是否有禁止使用这些指令的标准?

如何创buildLooper线程,然后立即发送消息?

我有一个工作线程,在后台,处理消息。 像这样的东西: class Worker extends Thread { public volatile Handler handler; // actually private, of course public void run() { Looper.prepare(); mHandler = new Handler() { // the Handler hooks up to the current Thread public boolean handleMessage(Message msg) { // … } }; Looper.loop(); } } 从主线程(UI线程,并不重要)我想要做这样的事情: Worker worker = new Worker(); worker.start(); worker.handler.sendMessage(…); […]

单精度和双精度浮点运算有什么区别?

单精度浮点运算和双精度浮点运算有什么区别? 我特别感兴趣的是有关video游戏机的实用术语。 例如,任天堂64有一个64位的处理器,如果这样做,那么这是否意味着它能够进行双精度浮点运算? PS3和Xbox 360能否实现双精度浮点运算或单精度浮点运算,并且一般使用的是双精度能力(如果存在的话)。

caching行如何工作?

据我所知,处理器通过caching行将数据导入caching,例如,在我的Atom处理器上,无论实际读取数据的大小如何,一次只能导入约64个字节。 我的问题是: 想象一下,你需要从内存中读取一个字节,这64个字节将被带入caching? 我可以看到的两种可能性是64字节从感兴趣的字节之下的最接近的64字节边界开始,或者64字节以某种预定的方式在字节周围扩展(例如,一半以下,一半以上或上述所有)。 这是哪个?

如何将Process Builder的输出redirect到一个string?

我正在使用下面的代码来启动一个进程生成器。我想知道如何将其输出redirect到一个string。 ProcessBuilder pb = new ProcessBuilder(System.getProperty("user.dir")+"/src/generate_list.sh", filename); Process p = pb.start(); 我尝试使用ByteArrayOutputStream但它似乎并没有工作。

预处理后gcc能输出C代码吗?

我正在使用一个开源的库,似乎有很多预处理指令来支持C以外的其他语言。所以我可以研究库在做什么,我希望看到预编译后编译的C代码,更像我写的东西。 gcc(或其他Linux上常用的工具)可以读取这个库,但输出的C代码已经被预处理转换为任何东西,并且也可以被人类读取?