POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
楼主: hunguqi
打印 上一主题 下一主题

我觉得Intel和Amd能够将任何单线程的程序,都可以用多核同时运行加速处理。欢迎探讨。

[复制链接]
121#
发表于 2011-9-2 18:00 | 只看该作者
本帖最后由 reftin2 于 2011-9-2 18:01 编辑

由于第48楼和第49楼嘲笑楼主,楼主决定公布一个方法,给嘲笑楼主的人,一个有力的反击。

比如有一段程序如下:
语句1: int test1 = 0;
语句2: int test2 = 0;
语句3: test1 = test1 + 10;
语句4: test2 = test2 + 20;
语句5: int test3 = 0;
语句6: test3 = test1 + test2;

=======================

你不能指望cpu的指令预处理能做这么大深度的优化,这要多复杂的译码器才能完成?而且这样做法也是与现代cpu设计理念背道而弛的,这种类型的静态优化问题应该在编译器里解决。
大型计算机上都有并行编译器,可以发掘出代码潜在的并行度,并生成单独的线程执行,但我觉得什么编译器也不如一个头脑清醒的程序设计者。
回复 支持 反对

使用道具 举报

122#
发表于 2011-9-2 18:06 来自手机 | 只看该作者
根本问题在于程序为硬件而写和优化,不是硬件为程序而设计。
回复 支持 反对

使用道具 举报

123#
发表于 2011-9-2 18:19 | 只看该作者
这其实是个不懂编程的人自作聪明瞎YY,还搞的煞有介事。
回复 支持 反对

使用道具 举报

124#
 楼主| 发表于 2011-9-2 18:45 | 只看该作者
本帖最后由 hunguqi 于 2011-9-2 19:32 编辑
largewc 发表于 2011-9-2 02:13
I服了U,我说了那么多,看来你完全没看懂啊,你以为单核CPU就是在单个线程每个周期顺序执行一个指令啊, ...


100楼的同学,俺们握手。

我目前的工作是程序员。但就是写写java,我最想做的是C++的编程做游戏,但生活所迫没办法。
我写过的最牛逼的程序是5年前,用了一下DirectX(非D3D,而是普通的2d游戏)写过一个即时战略游戏,大概1万行代码吧,带地图,带寻路算法,纯单线程,好像当时DX不支持多线程,要么就是我不太懂。

当时让我印象最深的就是我非常崇拜Blizzard的星际争霸的寻路算法,我当时用的是A*算法,无论我怎么优化,都无法做到鼠标点下去瞬间人就能走,我一般都是鼠标点下去,过0.2到0.3秒左右才能走,可能编程功力不够吧。

现在已经全忘了,平时就只打打dota。
回复 支持 反对

使用道具 举报

125#
 楼主| 发表于 2011-9-2 18:49 | 只看该作者
本帖最后由 hunguqi 于 2011-9-2 18:50 编辑

啊呀,多点了一次。
回复 支持 反对

使用道具 举报

126#
发表于 2011-9-2 19:23 | 只看该作者
比如说4个核心8个线程  一个线程就代表像一个人 ...单线程软件就像是一个门   8个人怎么一起挤都挤不进 你用软件建造8个门 每人一个门 这样就进的去了 !
回复 支持 反对

使用道具 举报

127#
发表于 2011-9-2 20:00 | 只看该作者
光一个Do while loop就够你歇菜了。
有那一门语言能够让二个核心来作这事?

除非编程语言全部完全颠覆,否则门都没有。什么叫Intel AMD故意,纯扯蛋。即便有编程语言进化了,让A作for i=0 to 250让B作for i=500 to 251。这俩CPU只剩下抓瞎的份?谁能统一指挥它们?又得花去一个CPU。

人脑就是单线程的,模仿人脑的电脑,注定不可能事事都能用到多核心。

回复 支持 反对

使用道具 举报

128#
发表于 2011-9-2 21:28 | 只看该作者
hunguqi 发表于 2011-9-2 18:45
100楼的同学,俺们握手。

我目前的工作是程序员。但就是写写java,我最想做的是C++的编程做游戏,但 ...

你还没把这个当职业,研究的不够而已,寻路在地图上可以做优化的,比如说做出关键节点,这个可以在地图上做预处理,这样在寻路中,大部分距离都被缩短了,只是你本地到节点的寻路了。

优化方案很多的,根据你的游戏需求不同而不同,呵呵
回复 支持 反对

使用道具 举报

129#
发表于 2011-9-2 21:43 | 只看该作者
任务管理器的框框不是逻辑核心,这点请先明白,然后跑PI的时候实际上是单个逻辑核心满载,有超线程的话,一个框框满载。
回复 支持 反对

使用道具 举报

130#
发表于 2011-9-3 09:18 | 只看该作者
本帖最后由 FENG950 于 2011-9-3 09:23 编辑

为什么两个写游戏的程序员对计算机的一些基础了解这么少还自鸣得意?
回复 支持 反对

使用道具 举报

131#
发表于 2011-9-3 09:30 | 只看该作者
LZ的想法是可以实现的,虽然现在的硬件性能达不到。过上几十年后CPU的前端加上自动代码分析把任务拆分分配给多核也不是不可能。

还有那么多人相信同技术下的大型人形机器人比现代兵器强得多,说不定那家公司的老总也这么蠢搞出这套东西出来。
回复 支持 反对

使用道具 举报

132#
发表于 2011-9-3 12:23 | 只看该作者
这个世界是非线性的,谢谢
回复 支持 反对

使用道具 举报

133#
发表于 2011-9-3 12:27 | 只看该作者
FENG950 发表于 2011-9-3 09:18
为什么两个写游戏的程序员对计算机的一些基础了解这么少还自鸣得意?

不说了,没意义

你就当做cpu单线程就是单线执行的吧,无所谓了,不想解释了
回复 支持 反对

使用道具 举报

134#
发表于 2011-9-3 12:48 | 只看该作者
FENG950 发表于 2011-9-3 09:18
为什么两个写游戏的程序员对计算机的一些基础了解这么少还自鸣得意?

你让编译器的乱序优化,CPU的MMX SSE AUX指令集情何以堪……

你让扣肉从P4的三发射进化到四发射难为情,Intel傻逼的用满四条并行计算管道原来是假的,扣肉同频性能提升不是提高并行量提升的,原来是偷来的。

你觉得单核就是对应单线程吧,那么奔四的HT TMD哪里多出来的那个运行单元,扣肉TMD为啥就没了HT呢,TMD I系列的CPU又把HT回来了?
回复 支持 反对

使用道具 举报

135#
发表于 2011-9-3 12:55 | 只看该作者
hunguqi 发表于 2011-9-2 18:45
100楼的同学,俺们握手。

我目前的工作是程序员。但就是写写java,我最想做的是C++的编程做游戏,但 ...


以“战士”攻击目标为例

client发送攻击指令 —— 服务器接收并验证(该数据包是否非法,攻击条件是否满足)——服务器做出判定(命中、回避、招架、免疫、其它附加效果)——服务器计算伤害数值——返回给攻击方和被攻击方最终计算的结果

请问这次运算如何“多线程并行计算”或乱序执行,绝大部分运算只能单线程顺序执行,intel有个“细胞分裂”的构想,即用多核心并行计算,现在也只停留在实验室里。
回复 支持 反对

使用道具 举报

136#
发表于 2011-9-3 12:57 | 只看该作者
没做过基础应用,光靠想象是不行的

P4是四条计算单元,验证的方法很简单,同期的SSE 指令集正好是128 Bit的,除以32 bit正好是4。但是Intel同期的并行加速算法只支持3管道,也就是三发射,明白了吗。那么就浪费了一条计算管道,最简单的办法就是给这个通道配上寄存器之类,让它可以当做独立cpu来用,那就是HT了。

扣肉改良的算法就是可以并行算法用满4管道了,也就是四发射,所以没有多余的计算管道了,所以没有HT了!

而I系列是8管道的,AVX正好是256 bit,256除以32就是8管道的,明白了吗,但是目前并行算法仍然是四发射的,所以浪费了四条管道,所以HT又回来了,明白了吗

超过4条并行现在进入了瓶颈,很难找到新的办法,这就是未来要解决的事情。

说的够简单了,cpu早就是多线加速单线程了。
回复 支持 反对

使用道具 举报

137#
发表于 2011-9-3 13:01 | 只看该作者
线程和CPU几路计算,根本不是一个东西,别再拿线程的思路套到CPU多路加速上,我已经让楼主更正了。

多核也未必已经要用多线程,Cell的SPU大多都不是用在多线程上,虽然它也是完整核心。

线程只是一个应用级的东西。
回复 支持 反对

使用道具 举报

138#
发表于 2011-9-3 13:14 | 只看该作者
当然,这个说法只针对整数计算,x86众所周知的缺陷就是浮点,采用压栈式的设计,这个设计无法采用并行计算优化单线程。

当初cell也是用这个来恶心intel……

intel曾经想用安腾扔掉x86,被微软干掉了
回复 支持 反对

使用道具 举报

139#
发表于 2011-9-3 13:19 | 只看该作者
现在AMD垃圾很大程度上,AMD所有的CPU目前仍然是三发射的,除了未来的推土机

对Intel早在扣肉就布局的四发射,肯定是没办法的,并行三条和并行四条是有本质区别的。

发射数就是楼主的概念,只是名词不叫做多核而已
回复 支持 反对

使用道具 举报

140#
发表于 2011-9-3 14:10 | 只看该作者
largewc 发表于 2011-9-3 12:48
你让编译器的乱序优化,CPU的MMX SSE AUX指令集情何以堪……

你让扣肉从P4的三发射进化到四发射难为情 ...

好像全世界就你一个人知道多发射(可惜是指令和线程最基本的东西都分不清),你当这里是幼儿园?这里的回复长篇大论,很多人该说的都说了,不理解的还是不理解,继续把指令和执行路径纠缠一块。前面说过你的那些都懒得回你了,我也没必要和你纠缠什么,其实,全世界计算机的工程技术人员都和我们玩了一个猫腻,多线程根本不需要,一个CPU只要做大发射就够了,N路发射的单线程执行就足够并行化了,分什么ILP/TLP都是为了给自己搞技术大帽骗钱的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-9-14 03:34

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表