MetaTrader 5 Python 사용자 그룹 - Metatrader에서 Python을 사용하는 방법 - 페이지 25

 
fxsaber :

코드의 OpenCL 부분을 어떻게 디버그했습니까?

실행 및 결과 인쇄.
 
Fast235 :

Renat, 많은 수의 어레이로 작업하거나 한 Expert Advisor에 많은 기호 및 표시기 세트가 있는 경우 OpenCL이 어떤 경우에 이점을 제공하는지에 대해 작성해 주십시오.

교차 링크 없이 수백만 개의 어레이를 수집할 수 있고 병렬로 분석할 수 있다면 속도를 높일 수 있습니다.

일반적으로 과제의 한계 를 해결하고 이해하는 사람은 자신의 질문에 쉽게 대답할 것입니다. 한계에 대한 이해는 없지만(그리고 "만약에"라는 꿈만 있을 뿐) 해결 되는 작업에 대한 고뇌와 함께 끊임없이 병렬 처리는 멋진 아이디어로 남아 있습니다.

불행히도 대부분의 작업은 효과적으로 병렬화할 수 없습니다.

 
Renat Fatkhullin :

교차 링크 없이 수백만 개의 어레이를 수집할 수 있고 병렬로 분석할 수 있다면 속도를 높일 수 있습니다.

일반적으로 과제의 한계 를 해결하고 이해하는 사람은 자신의 질문에 쉽게 대답할 것입니다. 한계에 대한 이해는 없지만(그리고 "만약에"라는 꿈만 있음) 해결 되는 작업에 대한 고뇌와 함께 끊임없이 병렬 처리는 멋진 아이디어로 남아 있습니다.

불행히도 대부분의 작업은 효과적으로 병렬화할 수 없습니다.

계산에 수반되는 순간이 있다는 사실에 대해 기억합니다. 그래서 내 머리에 질문이 생겼습니다.

 
Renat Fatkhullin :
실행 및 결과 인쇄.

OpenCL 코드 안에 출력물을 넣을 수 있습니까?

 

OpenCL에 대해 무례한 경우

개별 N 개의 이중 값을 쓸 수 있는 대형(벡터) 레지스터가 있는 프로세서가 있다고 상상할 수 있습니다(예: N=64라고 하면 레지스터에 64개 값을 쓸 수 있음).
이러한 레지스터는 더하기, 곱하기 등이 가능합니다. 그들 사이에서 하나의 명령으로 N 개의 복식에 대해 작업을 수행할 수 있는 것으로 나타났습니다.

하지만 한계가 있습니다.

동일한 레지스터 내의 값에 대해 작업할 수 없습니다. 예를 들어, 한 레지스터 값의 일부를 서로 추가할 수 없습니다.
이러한 프로세서는 주파수 측면에서 기존 CPU보다 훨씬 열등하여 하나의 값을 순차적으로 처리해야 하는 작업에 사용하는 것은 의미가 없습니다.
낮은 주파수 외에도 메모리 제한이 있으며 특수 메모리에서만 값을 로드 및 언로드할 수 있습니다.
RAM의 데이터는 이 특수 메모리에 복사할 수 있지만 매우 좁은(느린) 채널을 통해서만 가능합니다.
따라서 많은 양의 데이터를 처리해야 하는 작업도 OpenCL에 적합하지 않습니다.

 
fxsaber :

OpenCL 코드 안에 출력물을 넣을 수 있습니까?

밖의.

교육 프로그램을 낳지 맙시다. 우리와 일반적으로 인터넷에서 OpenCL에 대해 자세히 만들고 설명하는 모든 것을 읽고 읽으십시오.

OpenCL 검색:




일반적으로 Google의 "opencl trading" 에는 우리 리소스의 많은 자료가 있다는 것이 매우 흥미 롭습니다.


 
Renat Fatkhullin :

다음은 단일 스레드/OpenCL 모드에서 Python 3.8 및 MQL5의 비교입니다. 시간(초), 낮을수록 좋음

파이-싱글.py
파이 멀티.파이
스피드 PI.mq5 싱글
속도 PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

numbera를 통한 JIT 모드의 Python, 하드웨어는 다음과 같습니다.

  • Windows 10 x64, Intel Xeon E5-2690 v3 @ 2.60GHz
  • 지포스 RTX 2080

OpenCL을 사용하는 예는 매우 간단하고 최적화에 군더더기가 없습니다. OpenCL에게는 작업이 크지 않고 준비를 위한 오버헤드가 그를 위해 일했지만 그는 여전히 훨씬 더 나은 결과를 보여주었습니다.

OpenCL을 사용하면 매우 큰 병렬 계산 을 정기적으로 실행할 수 있습니다. 진입 문턱은 크지 않고 하루면 사용 방법을 알아낼 수 있습니다.

재생 파일이 첨부되어 있습니다.

OpenCL에서 PI를 계산하는 이 문제는 7년 전에 해결된 것으로 나타났습니다.

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • www.mql5.com
Настоящая статья открывает небольшой цикл публикаций, посвященных программированию на OpenCL, или Open Computing Language. Платформа MetaTrader 5 в ее текущем воплощении до подключения OpenCL не позволяла напрямую, т.е. нативно, использовать преимущества многоядерных процессоров для ускорения вычислений. В разделе "Статьи", правда, еще полтора...
 
당신이 그것을 알아낼 수 있을 때까지.
Single thread: the value of PI is 3.141592653590
Single thread: calculated in 7.382561 seconds
OpenCL not found. Error code= 5100
OpenCL initialization failed with 5100

다운로드할 항목에 대한 직접 링크가 있는 사람이 있습니까? 인텔은 등록이 필요합니다.


Shl 프로세서의 Intel GPU에서 비디오 어댑터 드라이버를 충돌시킨 다음 Intel_OpenCL_driver를 설치한 다음 비디오 어댑터 드라이버를 설치해야 합니다. 따라서 모든 것이 작동하고 비디오가 느려지지 않습니다.

 

Vict :

이 기능을 적극적으로 사용하면 시작이 몇 분짜리 퀘스트로 바뀌지 않을까 걱정됩니다.

캐싱을 활성화할 수 있습니다.

레나트 팻쿨린 :

다음은 단일 스레드/OpenCL 모드에서 Python 3.8 및 MQL5의 비교입니다. 시간(초), 낮을수록 좋음

파이-싱글.py
파이 멀티.파이
스피드 PI.mq5 싱글
속도 PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

numbera를 통한 JIT 모드의 Python, 하드웨어는 다음과 같습니다.

  • Windows 10 x64, Intel Xeon E5-2690 v3 @ 2.60GHz
  • 지포스 RTX 2080

다중 스레드 모드에서는 10,000개 스레드에서 CPU와 GPU 성능을 비교하고 있습니다. 파이썬에서는 GPU가 사용되지 않습니다.

적절한 비디오 카드가 있는 컴퓨터를 찾으면 Python 코드를 수정하고 이 컴퓨터에서 테스트하겠습니다.OpenCL에 대한 기사를 상기시켜 주셔서 감사합니다. CPU에서 코드를 실행하려고 하면 GPU가 필요하다고 생각했습니다.

일반적으로 나는 누가 더 빠른지 증명하려고 하지 않았습니다. Python 통합 계획에 대해 알아보는 것이 더 재미있습니다.

파이썬에 틱에 대한 거래 기능 과 이벤트가 있습니까?


역시나 GPU가 필요한듯 한데 'AMD APP SDK'는 다운이 안되네요.
Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция: Ордер – это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк...
 
Ilyas :

OpenCL에 대해 무례한 경우

개별 N 개의 이중 값을 쓸 수 있는 대형(벡터) 레지스터가 있는 프로세서가 있다고 상상할 수 있습니다(예: N=64라고 하면 레지스터에 64개 값을 쓸 수 있음).
이러한 레지스터는 더하거나 곱할 수 있습니다. 그들 사이에서 하나의 명령으로 N 개의 복식에 대해 작업을 수행할 수 있는 것으로 나타났습니다.

하지만 한계가 있습니다.

동일한 레지스터 내의 값에 대해 작업할 수 없습니다. 예를 들어, 한 레지스터 값의 일부를 서로 추가할 수 없습니다.
이러한 프로세서는 주파수 측면에서 기존 CPU보다 훨씬 열등하여 하나의 값을 순차적으로 처리해야 하는 작업에 사용하는 것은 의미가 없습니다.
낮은 주파수 외에도 메모리 제한이 있으며 특수 메모리에서만 값을 로드 및 언로드할 수 있습니다.
RAM의 데이터는 이 특수 메모리에 복사할 수 있지만 매우 좁은(느린) 채널을 통해서만 가능합니다.
따라서 많은 양의 데이터를 처리해야 하는 작업도 OpenCL에 적합하지 않습니다.

PI 계산 예에는 벡터가 없습니다. 거기에서 총액은 단순히 여러 개의 독립적인 청크로 나누어져 각 OpenCL 코어로 전송됩니다. 결국 모든 것이 합산됩니다.

예를 들어 개별 그래픽 카드가 없고 CPU에 4개의 물리적 코어 + 4개의 가상 코어가 있는 경우 실행은 8배 더 빠릅니다. 저것들. 합계의 조각은 병렬로 각 코어에서 계산됩니다.