OpenCl和它的工具。评论和印象。 - 页 28 1...212223242526272829 新评论 Sceptic Philozoff 2012.03.09 03:36 #271 joo: 从这个帖子中你绝对猜不到它的作者是the topicstarter....。目前还不清楚他为什么要发起这个话题。 几年后,我们会提醒你这个话题。 就我个人而言,这个分支是非常有用的--即使是在专题讨论会开始吓唬我不成熟的精神的时候,计算的准确性降低的恐怖。 Alexey Subbotin 2012.03.09 06:44 #272 去拆解Windows)))Dotnet不愿意被安装 Renat Fatkhullin 2012.03.22 21:57 #273 Reshetov: 启用遗传算法时, MT5的优化模式非常缓慢。我在MT4上做了一个专家顾问,并对其进行了测试和优化。优化时间在双核上不超过5分钟(当然,MT4只有一个核心参与,但其他任务不受干扰,因为它们可以在第二个核心上运行)。我已经为MT5重写了同样的专家顾问。我已经测试了它的优化。优化时间超过一个小时,确切地说,是近两个小时。有什么区别呢?现在没有任何区别。 那么,MetaTrader 5即使在以开盘价测试时似乎也是领先的:MetaTrader 4和MetaTrader 5的测试速度比较 正如所承诺的那样,我们简化了开杆测试模式,并使其更快。 [删除] 2014.03.24 12:38 #274 嗯,已经两年了。 CUDA版本的EA正在工作。在MT4下。到目前为止,它只处于测试模式。到目前为止,我无法得到nVidia承诺的计算速度的提高。 这里有两个问题。 1. nVidia本身,它夸大了重新设计程序的速度,或者根本不准备其文件,或者从根本上改变了编程的一些基本方面。 2. 在GPU下进行算法并行化所需的时间比预期的要长得多。当我开始将一个程序从DLL移植到CUDA-DLL时,根据我在Caelian语言方面20多年的经验,我想nVidia的承诺应该除以3,他们所报的算法移植时间也应该乘以,比如3。 但事实证明,一般的规则是:nVidia的所有承诺必须除以TEN,而将C语言移植到CUDA的估计时间必须乘以10。 注意:如果你已经了解了GPU加速器的运行原理,你可以在三周内将算法从C语言移植到CUDA上。而且你可以直接这样做--只是为了检查构建。也就是说,你的程序将由显卡中数百或数千个小处理器中的一个来执行。这比在CPU上运行要慢70(七十)倍。是的,很慢,但它很有效。 然后,你可以用更多的努力,开始并行你的程序。这已经比中央处理器上的工作速度慢了4-5倍,或者只快了2-3倍。 在全球范围内修改你的算法,使其在PASSIONS中执行,我重复一遍,在PASSIONS中执行,而不是像他们在世界所有大学里教你的那样按顺序执行,这是一项困难的任务。 让我们把话说清楚--通过多线程原则将通常的顺序算法并行化是困难的,但并不罕见。这是一件事。你以同样的方式在GPU上获得5-10倍的速度提升。但要把顺序算法转换成一堆算法(我的词汇中没有更好的词),加载成百上千的GPU处理器并获得nVidia承诺的100倍的速度提升--这 可能是一个问题。 但这也是可以解决的。这只是一个时间问题。 但也有克里米亚、本德人等.....。 3.MetaTrader-4在为CUDA 编写 DLL 时没有问题。 问题是nVidia软件开发人员(2500人)根本不同意MetaTrader-4-5中使用的多线程模型。当Nvidia从CUDA 3.2切换到4.0+时,他们从根本上改变了这种模式。此外,如果你开始问他们为什么以前是这样(像Metatrader-4和其他数百个多线程程序)而现在是这样,你将听到的回应是"你从根本上误解了我们的kAnstment"。 我以前在哪里听说过....最近..... 4.将一个新的算法从CUDA翻译成CUDA要比直接从C到通用OpenCL容易得多,所以我推荐这种方式。更重要的是,就在今天,nVidia应该正式提出CUDA-6,理论上,在新的Maxwell系列GPU和一些操作系统下,将有可能大大减少编程量--由于内存的统一和放弃CPU和GPU之间的转发操作。 [删除] 2015.04.17 06:16 #275 怎么样? 那么?根本没有人感兴趣?一年来没有一个问题或帖子。但对Nvidia来说,这很有意思:它读了我在这个和其他论坛上的抱怨,把他们的艺术委员会召集起来,用各种可能的方式进行摩擦--并决定交易员也是人,交易终端也是一个程序,并在最新版本的CUDA中为编译器引入了一个特殊键--在CUDA中创建一个高度多线程的程序。http://devblogs.nvidia.com/parallelforall/gpu-pro-tip-cuda-7-streams-simplify-concurrency/像这样的一个字符串nvcc --default-stream per-thread ./pthread_test.cu -o pthreads_per_thread Renat Fatkhullin 2015.04.17 06:51 #276 不幸的是,即使是Xeon Phi也没有起飞。而且它更接近于传统的编程。无论谁在通用计算中需要动力,现在都可以轻松获得,而不会对通用多处理器系统造成太大的压力。英特尔处理器的内核数量增长得足够快。例如,我们的服务器每台有40个核心,我甚至有一台工作电脑有20个核心和DDR4内存。一台拥有40个核心的3Ghz至强的服务器毫不含糊地击败了拥有56个或更多核心的低频至强Phi,而不需要重写一行代码。 [删除] 2015.04.17 07:41 #277 Renat:无论谁需要通用计算的能力,现在都可以轻松获得,而不会对通用多处理器系统造成很大压力。英特尔处理器的内核数量增长相当快。例如,我们的服务器每台有40个内核,我甚至有一台工作电脑有20个内核和DDR4内存。一台基于Xeon的服务器,在3Ghz下有40个内核,毫不含糊地击败了56个或更多内核的低频Xeon Phi,而不需要重写一行代码。你略微错了(2次。都是)。基本上,我以前也是这么想的,特别是在进入GPU编程的时候。(1).对于最简单的算法来说,主机CPU上的 "通用计算能力 "可以很容易得到。这就是大多数OpenMP和GPU程序员的症结所在。有数以亿计的CUDA显卡被售出,但只有大约300个用于它的程序。对于金融--只有大约7-8个(不包括无用的图书馆的收藏)。 查看nVidia网站上的完整列表。http://www.nvidia.com/object/gpu-applications.html?cFncE(我们第一个用于MT4交易终端的商业化的CUDA加速EA还没有*到)。这份名单几年来一直没有变化。 为什么?好吧,因为复杂的自适应算法,可以很容易地 在主机-CPU上从碎片中拼凑起来,结果发现,光是编程是不够的,还需要BREAK。而这并不是一件容易的事,因为......。a).CUDA-OpenCL GPU模型的特殊性和局限性(不同规模的内核应按顺序运行)。b).任何通过PCI总线在GPU和主机处理器之间的数据传输都会扼杀整个速度的提升。而在复杂的适应性算法中,你不能没有它们。(2)."不需要重写一行代码 "也只是针对简单的算法。由于OpenMP--作为GPU的真正替代方案--工作起来很神秘,也就是说,有时它能工作,有时又会产生垃圾,这使情况变得更加糟糕。这是一种错觉,以为只要在一个地方添加一个pragma行,算法就会立即像这样并行化。它远远不是这样。在一个复杂的算法中,数据和并行线程之间会发生这种意想不到的关联,如果不构建一个图,我们就无法做到。GPU是一个完全不同的问题。一开始有更多的工作要做,但从时间上看,这个程序总是能正确工作。此外,一个为CUDA重写的程序(即使没有写内核),通过一行pragma就可以主动翻译成OpenMP,而且这确实是有效的。在这之后再把它翻译成OpenMP是完全没有意义的--为CUDA-OpenCL添加内核会更有视角和可靠性。令人惊讶的是,CUDA GPU的内核变成了简短、清晰和可靠。 就绝对速度和可靠性而言,主机CPU没有机会与GPU对抗。 =金融市场,尤其是外汇是全球巨大进程的一个非常压缩的版本。 =由于这个原因,价格预测的算法不可能是简单的。因此,目前它必须是适应性的,而且是形象化的统计。 =所以在这样一个好的算法中,如果没有模拟和适应性反馈,就没有地方可去。 =因此,如果主机-CPU仍可用于下单(即其速度仍足够高),那么为了测试和优化目的,几乎不可能在没有GPU的情况下工作。 Renat Fatkhullin 2015.04.17 08:04 #278 你说我错了两次,然后打着证明的幌子,泄露了一个完全不相干的证据。我对以下情况的看法是正确的(这一点马上就说了)。在通用的(基于x86 CPU的)计算/算法中,切换到CUDA/OpenCL没有任何意义。x86架构在各方面都在撕毁GPU:更低的开发成本、再培训成本、改写成本(这里只是一个灾难)、最终性能更高、复杂度更低、高频核心数量增加、基础内存频率猛增 - DDR4。即使是多核Xeon Phi的尝试也因为随之而来的复杂性(基于Linux的环境)而夭折,输给了基本CPU的高频核心的纯粹建立。我根本就没有提到OpenMP。在我看来,OpenMP是一个 "懦夫的银弹"。如果你要争取真正的性能,那就摆脱OpenMP的废话,手工写出最初正确的/原生的多线程代码,对它进行剖析并将其推到最大。你自己已经证明,没有足够的GPU计算软件。大多数GPU程序只是最简单的情况,包括密码破解器和愚蠢的矿工(游戏不讨论)。我的看法是,CPU和底层基础设施的发展速度足以在现实世界的应用中实际超越GPU的性能。3-4年前,你可以相信GPU的潜力,但现在已经变得很清楚。 [删除] 2015.04.17 08:45 #279 Renat:你说我错了两次,然后打着证明的幌子,泄露了一个完全不相干的证据。我对以下情况的看法是正确的(这一点马上就说了)。在通用的(基于x86 CPU的)计算/算法中,切换到CUDA/OpenCL没有任何意义。x86架构在各方面都在撕毁GPU:更低的开发成本、再培训成本、改写成本(这里只是一个灾难)、最终性能更高、复杂性更低、高频内核数量增加、基础内存频率猛增--DDR4。即使是多核Xeon Phi的尝试也因为随之而来的复杂性(基于Linux的环境)而夭折,输给了基本CPU的高频核心的纯粹堆积。我根本就没有提到OpenMP。在我看来,OpenMP是一个 "懦夫的银弹"。如果你要争取真正的性能,那就抛弃OpenMP的废话,手写最初正确的/原生的多线程代码,对它进行剖析并将其推到最大。你自己已经证明,没有足够的GPU计算软件。大多数GPU程序只是最简单的情况,包括密码破解器和愚蠢的矿工(游戏不讨论)。我的看法是,CPU和底层基础设施的发展速度足以在现实世界的应用中实际超越GPU的性能。3-4年前,你可以相信GPU的潜力,但现在已经变得很清楚。1.从主机CPU的核心增长率推断,在未来几年 内,它们的数量不太可能 达到3000个核心,就像TODAY一个好的视频卡一样。而每个显卡核心的运行频率约为1GHz。因此,主机处理器不可能与GPU竞争。但这是在假设有一个好的程序,不仅可以而且不只是工作在那3000个核心上,而且还能承担起今天GPU硬件架构的所有隐患。而今天普通显卡 上的GDDR5内存的视频速度约为150GBytes/秒。所有类型的DDR4(25GB/秒)内存仍有很长的 路要走。一个主机处理器怎么能与40-60个内核竞争,即使是在4GHz和25Gb/s的内存下?2.像Phi这样的各种异类并不具备作为视频卡的必要支持和多功能性。因此,他们已经灭亡。3.关于直接多线程编程的需要--是的,我同意你的看法,但这是一项艰巨 的任务。在多线程版本中一次性编写一个复杂的NEW自适应算法是非常困难的。而且你必须通过进化来工作,可以说。此外,我不需要告诉你,当Windows真的满员时,它对多线程的处理是多么糟糕(有各种延迟)。这就是为什么连操作系统都想出了所谓的纤维--简化线程。结论:没有什么比GPU更便宜、更有前途和更可靠的了。 Renat Fatkhullin 2015.04.17 11:37 #280 你在复述一个所有感兴趣的人都已经知道的理论。现实情况是,由于各种因素的结合,cpu在一般用途的任务中速度更快。这一点现在已经很清楚了。gpu的银弹断然无法达到目标。 1...212223242526272829 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
几年后,我们会提醒你这个话题。
就我个人而言,这个分支是非常有用的--即使是在专题讨论会开始吓唬我不成熟的精神的时候,计算的准确性降低的恐怖。
启用遗传算法时, MT5的优化模式非常缓慢。我在MT4上做了一个专家顾问,并对其进行了测试和优化。优化时间在双核上不超过5分钟(当然,MT4只有一个核心参与,但其他任务不受干扰,因为它们可以在第二个核心上运行)。我已经为MT5重写了同样的专家顾问。我已经测试了它的优化。优化时间超过一个小时,确切地说,是近两个小时。有什么区别呢?
现在没有任何区别。
那么,MetaTrader 5即使在以开盘价测试时似乎也是领先的:MetaTrader 4和MetaTrader 5的测试速度比较
正如所承诺的那样,我们简化了开杆测试模式,并使其更快。
嗯,已经两年了。
CUDA版本的EA正在工作。在MT4下。到目前为止,它只处于测试模式。到目前为止,我无法得到nVidia承诺的计算速度的提高。
这里有两个问题。
1. nVidia本身,它夸大了重新设计程序的速度,或者根本不准备其文件,或者从根本上改变了编程的一些基本方面。
2. 在GPU下进行算法并行化所需的时间比预期的要长得多。当我开始将一个程序从DLL移植到CUDA-DLL时,根据我在Caelian语言方面20多年的经验,我想nVidia的承诺应该除以3,他们所报的算法移植时间也应该乘以,比如3。
但事实证明,一般的规则是:nVidia的所有承诺必须除以TEN,而将C语言移植到CUDA的估计时间必须乘以10。
注意:如果你已经了解了GPU加速器的运行原理,你可以在三周内将算法从C语言移植到CUDA上。而且你可以直接这样做--只是为了检查构建。也就是说,你的程序将由显卡中数百或数千个小处理器中的一个来执行。这比在CPU上运行要慢70(七十)倍。是的,很慢,但它很有效。
然后,你可以用更多的努力,开始并行你的程序。这已经比中央处理器上的工作速度慢了4-5倍,或者只快了2-3倍。
在全球范围内修改你的算法,使其在PASSIONS中执行,我重复一遍,在PASSIONS中执行,而不是像他们在世界所有大学里教你的那样按顺序执行,这是一项困难的任务。
让我们把话说清楚--通过多线程原则将通常的顺序算法并行化是困难的,但并不罕见。这是一件事。你以同样的方式在GPU上获得5-10倍的速度提升。但要把顺序算法转换成一堆算法(我的词汇中没有更好的词),加载成百上千的GPU处理器并获得nVidia承诺的100倍的速度提升--这 可能是一个问题。
但这也是可以解决的。这只是一个时间问题。
但也有克里米亚、本德人等.....。
3.MetaTrader-4在为CUDA 编写 DLL 时没有问题。
问题是nVidia软件开发人员(2500人)根本不同意MetaTrader-4-5中使用的多线程模型。当Nvidia从CUDA 3.2切换到4.0+时,他们从根本上改变了这种模式。此外,如果你开始问他们为什么以前是这样(像Metatrader-4和其他数百个多线程程序)而现在是这样,你将听到的回应是"你从根本上误解了我们的kAnstment"。
我以前在哪里听说过....最近.....
4.将一个新的算法从CUDA翻译成CUDA要比直接从C到通用OpenCL容易得多,所以我推荐这种方式。更重要的是,就在今天,nVidia应该正式提出CUDA-6,理论上,在新的Maxwell系列GPU和一些操作系统下,将有可能大大减少编程量--由于内存的统一和放弃CPU和GPU之间的转发操作。
怎么样?
那么?
根本没有人感兴趣?
一年来没有一个问题或帖子。
但对Nvidia来说,这很有意思:它读了我在这个和其他论坛上的抱怨,把他们的艺术委员会召集起来,用各种可能的方式进行摩擦--并决定交易员也是人,交易终端也是一个程序,并在最新版本的CUDA中为编译器引入了一个特殊键--在CUDA中创建一个高度多线程的程序。
http://devblogs.nvidia.com/parallelforall/gpu-pro-tip-cuda-7-streams-simplify-concurrency/
像这样的一个字符串
nvcc --default-stream per-thread ./pthread_test.cu -o pthreads_per_thread
不幸的是,即使是Xeon Phi也没有起飞。而且它更接近于传统的编程。
无论谁在通用计算中需要动力,现在都可以轻松获得,而不会对通用多处理器系统造成太大的压力。英特尔处理器的内核数量增长得足够快。
例如,我们的服务器每台有40个核心,我甚至有一台工作电脑有20个核心和DDR4内存。一台拥有40个核心的3Ghz至强的服务器毫不含糊地击败了拥有56个或更多核心的低频至强Phi,而不需要重写一行代码。
无论谁需要通用计算的能力,现在都可以轻松获得,而不会对通用多处理器系统造成很大压力。英特尔处理器的内核数量增长相当快。
例如,我们的服务器每台有40个内核,我甚至有一台工作电脑有20个内核和DDR4内存。一台基于Xeon的服务器,在3Ghz下有40个内核,毫不含糊地击败了56个或更多内核的低频Xeon Phi,而不需要重写一行代码。
你略微错了(2次。都是)。基本上,我以前也是这么想的,特别是在进入GPU编程的时候。
(1).对于最简单的算法来说,主机CPU上的 "通用计算能力 "可以很容易得到。这就是大多数OpenMP和GPU程序员的症结所在。有数以亿计的CUDA显卡被售出,但只有大约300个用于它的程序。对于金融--只有大约7-8个(不包括无用的图书馆的收藏)。
查看nVidia网站上的完整列表。
http://www.nvidia.com/object/gpu-applications.html?cFncE
(我们第一个用于MT4交易终端的商业化的CUDA加速EA还没有*到)。
这份名单几年来一直没有变化。
为什么?好吧,因为复杂的自适应算法,可以很容易地 在主机-CPU上从碎片中拼凑起来,结果发现,光是编程是不够的,还需要BREAK。而这并不是一件容易的事,因为......。
a).CUDA-OpenCL GPU模型的特殊性和局限性(不同规模的内核应按顺序运行)。
b).任何通过PCI总线在GPU和主机处理器之间的数据传输都会扼杀整个速度的提升。而在复杂的适应性算法中,你不能没有它们。
(2)."不需要重写一行代码 "也只是针对简单的算法。由于OpenMP--作为GPU的真正替代方案--工作起来很神秘,也就是说,有时它能工作,有时又会产生垃圾,这使情况变得更加糟糕。这是一种错觉,以为只要在一个地方添加一个pragma行,算法就会立即像这样并行化。它远远不是这样。在一个复杂的算法中,数据和并行线程之间会发生这种意想不到的关联,如果不构建一个图,我们就无法做到。
GPU是一个完全不同的问题。一开始有更多的工作要做,但从时间上看,这个程序总是能正确工作。此外,一个为CUDA重写的程序(即使没有写内核),通过一行pragma就可以主动翻译成OpenMP,而且这确实是有效的。在这之后再把它翻译成OpenMP是完全没有意义的--为CUDA-OpenCL添加内核会更有视角和可靠性。令人惊讶的是,CUDA GPU的内核变成了简短、清晰和可靠。
就绝对速度和可靠性而言,主机CPU没有机会与GPU对抗。
=金融市场,尤其是外汇是全球巨大进程的一个非常压缩的版本。
=由于这个原因,价格预测的算法不可能是简单的。因此,目前它必须是适应性的,而且是形象化的统计。
=所以在这样一个好的算法中,如果没有模拟和适应性反馈,就没有地方可去。
=因此,如果主机-CPU仍可用于下单(即其速度仍足够高),那么为了测试和优化目的,几乎不可能在没有GPU的情况下工作。
你说我错了两次,然后打着证明的幌子,泄露了一个完全不相干的证据。
我对以下情况的看法是正确的(这一点马上就说了)。
我根本就没有提到OpenMP。在我看来,OpenMP是一个 "懦夫的银弹"。如果你要争取真正的性能,那就摆脱OpenMP的废话,手工写出最初正确的/原生的多线程代码,对它进行剖析并将其推到最大。
你自己已经证明,没有足够的GPU计算软件。大多数GPU程序只是最简单的情况,包括密码破解器和愚蠢的矿工(游戏不讨论)。
我的看法是,CPU和底层基础设施的发展速度足以在现实世界的应用中实际超越GPU的性能。3-4年前,你可以相信GPU的潜力,但现在已经变得很清楚。
你说我错了两次,然后打着证明的幌子,泄露了一个完全不相干的证据。
我对以下情况的看法是正确的(这一点马上就说了)。
我根本就没有提到OpenMP。在我看来,OpenMP是一个 "懦夫的银弹"。如果你要争取真正的性能,那就抛弃OpenMP的废话,手写最初正确的/原生的多线程代码,对它进行剖析并将其推到最大。
你自己已经证明,没有足够的GPU计算软件。大多数GPU程序只是最简单的情况,包括密码破解器和愚蠢的矿工(游戏不讨论)。
我的看法是,CPU和底层基础设施的发展速度足以在现实世界的应用中实际超越GPU的性能。3-4年前,你可以相信GPU的潜力,但现在已经变得很清楚。
1.从主机CPU的核心增长率推断,在未来几年 内,它们的数量不太可能 达到3000个核心,就像TODAY一个好的视频卡一样。而每个显卡核心的运行频率约为1GHz。因此,主机处理器不可能与GPU竞争。但这是在假设有一个好的程序,不仅可以而且不只是工作在那3000个核心上,而且还能承担起今天GPU硬件架构的所有隐患。而今天普通显卡 上的GDDR5内存的视频速度约为150GBytes/秒。所有类型的DDR4(25GB/秒)内存仍有很长的 路要走。
一个主机处理器怎么能与40-60个内核竞争,即使是在4GHz和25Gb/s的内存下?
2.像Phi这样的各种异类并不具备作为视频卡的必要支持和多功能性。因此,他们已经灭亡。
3.关于直接多线程编程的需要--是的,我同意你的看法,但这是一项艰巨 的任务。在多线程版本中一次性编写一个复杂的NEW自适应算法是非常困难的。而且你必须通过进化来工作,可以说。此外,我不需要告诉你,当Windows真的满员时,它对多线程的处理是多么糟糕(有各种延迟)。这就是为什么连操作系统都想出了所谓的纤维--简化线程。
结论:没有什么比GPU更便宜、更有前途和更可靠的了。