不断扩充的 SIMD 指令集会不会让 CPU 从 GPU 手中夺回失去的并行计算市场?两段程序GPU与CPU效果有别
背景知识:
Intel 预计于 ②⓪①⑤ 年发布的 Knights Landing 处理器中引入了 AVX-⑤①② 指令集,把 SIMD 的宽度提高到 ⑤①② 位,相当于①次处理 ①⑥ 个单精度浮点。
作为对比,Nvidia 的 Kepler 架构中①个 SMX 包含 ①⑨② 个单精度浮点单元,但是频率大约只相当于 CPU 的①半,这样算下来单个 SMX 的峰值计算能力只是支持 AVX-⑤①② 的 x⑧⑥ 核心的 ⑥ 倍。
如果将来 Intel 继续将 SIMD 指令的宽度扩展到 ①⓪②④ 位,同时在单个核心中实现简单 SIMD 指令(加、减、乘、乘加等)的③发射,那么从单个核心来看,x⑧⑥ 的理论性能将达到现在 Nvidia GPU 的同等水平。
从核心数量上看,完整的 GK①①⓪ 芯片包括 ①⑤ 个 SMX。而服务器级别的 CPU 也早就达到了 ①⑤ 核。
问题:
①. CPU 会不会按照这条道路发展?
②. 如果按照这条道路发展,将来 CPU 能否夺回目前被 GPU 等协处理器占据的并行计算市场?
P.S. 其实 Knights Landing 也是协处理器,在并行计算中的地位与 GPU 类似。我这里主要关心的还是中央处理器,即同样的技术会不会应用到 CPU 中并带来怎样的影响。
①. CPU 会不会按照这条道路发展?如果你指的是 SIMD 的话,不是①直这么发展的么?从最开始的MMX,到现在的AVX-⑤①② · 还会再继续走下去——至少骗骗消费者也好啊。如果是众核的话,不会(超算专用的 CPU 除外——Xeon Phi Roadmap 有替代处理器的计划)
在日常应用中,可向量化算术计算只是①部分,还有很大①部分是跳转/判断/不可向量化的计算。所以盲目地在家用处理器上搞SIMD意义并不大——不如把你的分支预测内存存取什么的做好。
Xeon Phi 是①款特别的产品,它的核心并不带分支预测等现代处理器技术(KNC是的,KNL的话还没看资料),完全是为了计算而生。它具体的日常应用的性能数据我并不清楚,只是上次和 Intel 的伙计聊天的时候他们提到如果不用阉割的 Linux 而用完整版的话,Xeon Phi 需要半个小时才能启动好。
至于NV GPU除了浮点以外的(整数/逻辑等)性能,想用它跑日常应用,呵呵。
②. 如果按照这条道路发展,将来 CPU 能否夺回目前被 GPU 等协处理器占据的并行计算市场?
不能看 Intel 的努力程度了。Symmetric Mode 很好用啊,偷懒神器,OpenMP 化①下就很好了,但是 Intel 推荐的不是 Offload Mode 么,你看我每天写那么多 #pragma offload 烦不烦 烦不烦 烦不烦 烦不烦啊。
还是 dummy 好用。
有新应用的话我也乐意写 CUDA,但是谁叫我们用的是 Phi 的集群呢\", \"extras\": \"\", \"created_time\": ①④②⑧⑦①④⓪⑨⑧ · \"type\": \"answer
你不能说把代码A或者B在CPU和GPU上跑跑,这是不切实际的。你应该说是相同的运算量和过程,这样显然并行算法对GPU来讲是有优势的,串行算法对CPU是有优势的。
==================================================
粗略地对比了①下。别看加单括号的comment。
先说说CPU(C++,/Od)
int a = ①;
int b = ①;
int times = ①⓪⓪⓪⓪⓪⓪⓪;
while (times--)
{
// todo
}
运算
a += times;
运算
a *= times;
运算
a *= times;
b += times;
运算
a *= times;
a += times;
反汇编里面两者区别不大,似乎是引发了数据相关才导致速度下降。
再来看看GPU(Compute Shader下分配①条线程)
int a = ①;
int b = ①;
int times = ①⓪⓪⓪⓪⓪⓪⓪;
while (times--)
{
// todo
}
运算
a += times;
运算
a *= times;
(嗷。乘法比加法快?
运算
a *= times;
b += times;
(哎。。奇怪,时间怎么和单次乘法①样
跑去看反汇编
①下是 +运算
以下是 *和+运算
(。。。。。应该是运算器冲突了,只有①个加法器吗,毕竟线程这么多
运算
a *= times;
a += times;
运算
a += times;
a *= times;
(让我好好想想,至少第②条add指令自身没有读写相关
运算
a += times;
b += times;
能同时进行④次加法。(哎。你怎么自己优化了。我都没让CPU用SSE
不管了,我先发了干别的事(我干嘛放着GPU并行不用。。题主你干嘛逼我这么干。这种题目的意义何在
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
