개발자에게 질문 - 최적화 중 모든 컴퓨팅 코어 사용 - 페이지 8

 
흥미로운 접근 방식입니다.
나도 내 "자전거"를 만들어야 합니다.
작업은 다음과 같습니다.
매개변수의 수는 가변적입니다.
값에 따라 새 매개변수가 나타나거나 기존 매개변수가 사라질 수 있습니다.
그들의 수는 클 수 있습니다 (30, 100, 200, 무한대). 평균은 20-50이 될 것이라고 생각합니다.
전략은 사용 가능한 매개 변수 값의 특정 조합으로만 완료된 것으로 간주되며 완료된 전략만 이익, 손실 등을 계산할 수 있습니다.
우리는 (계산적 관점에서) 매개변수를 쉽게 추가 및 제거하고, 값이 변경될 때 어떤 매개변수가 나타나고 사라지는지 결정할 수 있습니다.

좋은 매개변수를 얻으려면 테스터를 사용하는 방법을 알아야 합니다. 매개변수는 전략의 기능적 요소입니다. 테스터를 프로그래밍 방식으로 제어하고(시작, 중지, 기기 변경, 날짜, 레버리지, 계산 시간 추정값 얻기, 어드바이저/지표의 매개변수 변경 등), 최적화 결과(캐시 판독)를 얻을 수 있습니다.
어떤 아이디어 :) ? 아직 개발 단계에 이르지 못했습니다.
 
Aliaksandr Hryshyn :
흥미로운 접근 방식입니다.
나도 내 "자전거"를 만들어야 합니다.
작업은 다음과 같습니다.
매개변수의 수는 가변적입니다.
값에 따라 새 매개변수가 나타나거나 기존 매개변수가 사라질 수 있습니다.
그들의 수는 클 수 있습니다 (30, 100, 200, 무한대). 평균은 20-50이 될 것이라고 생각합니다.
전략은 사용 가능한 매개 변수 값의 특정 조합으로만 완료된 것으로 간주되며 완료된 전략만 이익, 손실 등을 계산할 수 있습니다.
우리는 (계산적 관점에서) 매개변수를 쉽게 추가 및 제거하고, 값이 변경될 때 어떤 매개변수가 나타나고 사라지는지 결정할 수 있습니다.

좋은 매개변수를 얻으려면 테스터를 사용하는 방법을 알아야 합니다. 매개변수는 전략의 기능적 요소입니다. 테스터를 프로그래밍 방식으로 제어하고(시작, 중지, 기기 변경, 날짜, 활용, 계산 시간 추정치 얻기, 어드바이저/지표 매개변수 변경 등), 최적화 결과 얻기(캐시 읽기)가 가능합니다.
어떤 아이디어 :) ? 아직 개발 단계에 이르지 못했습니다.

세부 사항에 따라 이 문제에 대한 몇 가지 솔루션이 있을 수 있습니다.

모든 매개변수, 이미 존재하는 매개변수와 나타날 수 있는 매개변수가 매개변수 세트(염색체 또는 기타 동등물)에서 엄격하게 정의된 위치에 있으면 전혀 문제가 없습니다.

각 매개변수의 특정 위치를 미리 결정할 수 없는 경우 매개변수를 서로 엄격하게 결합할 수 있는 유형으로 나눌 필요가 있습니다(그러면 매개변수의 위치는 중요하지 않음) - AO 수정은 요구되는.

문제를 해결하기 위한 다른 옵션이 있지만 어떤 경우에도 표준 AO에 대한 추가 기능인 사용자 지정 AO가 필요합니다.

 
Boris Egorov :
메모리 과부하에 대한 infa가 확인되었습니다 .... 이상하지만 아무도 스왑을 취소하지 않았습니다. 다시 개발자가 이것을 고려해야한다고 생각합니다.

문제를 해결한 방법을 구독 취소합니다. 우리는 당신에 대해 걱정하고 있습니다.

한 에이전트에 필요한 최소 메모리 양(모든 사람이 균등하게 로드되기 시작할 때까지 활성화된 메모리 수를 줄였습니까?)

페이지 파일을 늘렸습니까? 이 경우 물리적 메모리가 지속적으로 교체되고 속도가 크게 느려질 수 있으므로 총 최적화 시간이 최소일 때 이러한 수의 코어를 찾아야 합니다.

 
Edgar Akhmadeev :

문제를 해결한 방법을 구독 취소합니다. 우리는 당신에 대해 걱정하고 있습니다.

한 에이전트에 필요한 최소 메모리 양(모든 사람이 균등하게 로드되기 시작할 때까지 활성화된 메모리 수를 줄였습니까?)

페이지 파일을 늘렸습니까? 이 경우 물리적 메모리가 지속적으로 교체되고 속도가 크게 느려질 수 있으므로 총 최적화 시간이 최소일 때 이러한 수의 코어를 찾아야 합니다.

그것은 모두 진드기의 사용, 역사의 깊이, 도구의 수에 달려 있습니다. 작업 관리자를 보면 모든 것이 표시됩니다. 전체 RAM의 볼륨에서 운영 체제의 경우 1-2GB를 뺀 값을 에이전트 하나가 사용하는 볼륨으로 나눈 값입니다. 모든 사람은 모든 것을 개별적으로 가지고 있습니다.

RAM의 한 영역이 따옴표와 지표에 사용되는 경우 개발자는 상황을 실제로 개선할 수 있습니다.
 
Aliaksandr Hryshyn :

그것은 모두 진드기의 사용, 역사의 깊이, 도구의 수에 달려 있습니다. 작업 관리자를 보면 모든 것이 표시됩니다. 전체 RAM의 볼륨에서 운영 체제의 경우 1-2GB를 뺀 값을 에이전트 하나가 사용하는 볼륨으로 나눈 값입니다. 모든 사람은 모든 것을 개별적으로 가지고 있습니다.

RAM의 한 영역이 따옴표와 지표에 사용되는 경우 개발자는 상황을 실제로 개선할 수 있습니다.

나한테 설명하는거야? 나는이 문제를 사람에게 설명했고 이제 결과에 관심이 있습니다. 피드백이 없습니다.

그리고 우리는 이미 터미널의 비효율적인 메모리 사용에 대해 여러 번 논의했으며 MQ는 각 에이전트에 대한 틱 및 임시 파일의 히스토리를 복제하고 각 틱 최적화 전에 긴 생성을 통해 상황을 변경할 것을 여러 번 약속했습니다. 개인적으로 몇 년 안에 에이전트의 거의 절반을 비활성화하고 최적화를 틱해야 합니다. 8GB와 8명의 에이전트가 있습니다. 그러나 지금은 가지고 있는 것을 사용하며 메모리 크기를 늘리거나 에이전트를 비활성화할 수 있습니다.

 
Edgar Akhmadeev :

나한테 설명하는거야? 나는이 문제를 사람에게 설명했고 이제 결과에 관심이 있습니다. 피드백이 없습니다.

그리고 우리는 이미 터미널의 비효율적인 메모리 사용에 대해 여러 번 논의했으며 MQ는 각 에이전트에 대한 틱 및 임시 파일의 히스토리를 복제하고 각 틱 최적화 전에 긴 생성을 통해 상황을 변경할 것을 여러 번 약속했습니다. 개인적으로 몇 년 안에 에이전트의 거의 절반을 비활성화하고 최적화를 틱해야 합니다. 8GB와 8명의 에이전트가 있습니다. 그러나 지금은 가지고 있는 것을 사용하며 메모리 크기를 늘리거나 에이전트를 비활성화할 수 있습니다.

> 문제를 해결한 방법을 구독 취소합니다. 우리는 당신에 대해 걱정하고 있습니다.

> 이 문제를 누군가에게 설명했고 이제 결과에 관심이 있습니다. 피드백이 없습니다.

미안해요, 일을 해서 시간이 없었어요.

어드바이저 최적화를 진행했습니다. 옵티마이저가 작동하기 시작하기 위해 일부 "중요하지 않은" 부분을 제거했습니다(특히, OpenCL 및 SQLite와 관련된 모든 것). 이제 메모리 오버플로가 없습니다. 하지만 ... 이것은 물론 해결책이 아닙니다.

다른 PC에서는 정지하지 않기 위해 일부 코어를 비활성화해야 했습니다. 예를 들어 3950X(16코어/32스레드) 및 32GB의 시스템(모든 스레드를 사용할 때)이 중단되었습니다. . 더군다나 작업관리자를 통해 프로세스를 넘길때까지 매달린건 에이전트들이었다.... 코어 몇 개를 껐다 켰다 했더니 오산이 나왔다. 개발자가 문제를 명확히 하기 위해 뭔가를 해야 한다고 생각합니다. 옵티마이저가 계산을 위해 정확히 11GB의 메모리가 필요한 경우 경고와 같은 것으로 명시적으로 작성해야 합니다. 다시 한 번 스왑에 대해 상기시켜 드리겠습니다. Xmeters가 설치되어 있습니다... 작업 표시줄에서 메모리 로드를 시각적으로 바로 확인할 수 있습니다.

나는 특별히 AMD CPU와 관련된 다른 결함이 있다고 생각하며, 고문은 동일했지만 이전에는 발생하지 않았습니다. 증상은 다음과 같습니다. 5개의 코어만 관련되어 있습니다. .... 그리고 계산 오류가 멈춥니다... 그리고 이것은 확실히 메모리가 아닙니다. 동일한 어드바이저가 문제 없이 16개의 스레드를 로드할 때 고려했기 때문에 이 문제는 어떻게든 부동입니다. 존재하거나 존재하지 않습니다. 옵티마이저가 아닌 상태에서 테스트를 실행하면 정상적으로 실행됩니다. 이것을 여러 번 알아차렸습니다. 기본적으로, 당신은 그것을 알아낼 필요가 있습니다.

네트워크 에이전트에 대한 브레이크와 관련하여 - 상황이 여전히 존재합니다. "하나의 핵심 - 하나의 작업" - 개발자의 이해에 접근할 수 없습니다. 이전과 마찬가지로 10개의 코어가 각각 30개의 작업을 분배하고 30개의 다른 네트워크 에이전트는 유휴 상태입니다. 그는 무언가에 대해 오랫동안 생각하면서 과제를 내줍니다. 일반적으로 브레이크는 견고합니다.

예, 잊어버렸습니다. 참여, 가능한 모든 도움 및 조언에 감사드립니다.
 

레나트 파트훌린에게

그럼에도 불구하고 나는 다시 주제를 제기하고 구체적으로 Renat Fatkhullin 에게 질문하고 싶습니다.

1. 성능 면에서 완전히 다른 여러 서버의 로컬 팜에서 최적화를 수행하고 CPU의 성능이 다르다는 사실로 인해 최적화 중에 끔찍한 지연이 발생하는 것을 보았습니다. CPU Xeon E5-2620 v2(2.1GHz), Xeon E5-2620 0(2.00GHz), i7-3820(3.6GHz), Xeon E3-1245(3.7GHz), Ryzen 7 2700 . Ryzen 7 2700이 있는 서버가 있다고 가정합니다. , 라이젠 9 3950X. 현재 알고리즘은 다음과 같이 작동합니다. 작업 배치를 형성하고 이 작업 배치를 사용 가능한 각 코어로 균등하게 나눕니다. 이제 저속 CPU Xeon E5-2620 0(2.00GHz) 및 Xeon E5-2620 v2(2.1GHz)가 있는 것을 고려하면 팜이 작업을 계산하고 유휴 상태이며 이 두 CPU는 작업의 절반도 계산했습니다. 따라서 전체 농장은 어리석게 서 있습니다. 이것은 CPU의 속도가 다르고 작업이 일괄 처리로 분산되어 있는 한 계속 발생하며 계속 발생할 것입니다. 경험에 따르면 네트워크 지연은 전혀 중요하지 않으며 무시할 수 있습니다. 작업 분배 알고리즘을 다시 만들 수 있습니까? 사용 가능한 각 코어에 여러 작업을 배포하지 않고 " 해제된 각 코어 - 현재 세대 팩에서 하나의 작업을 제공"합니다.

2. 테스트 결과를 xml 파일에 10분마다 저장하는 기능을 추가할 수 있나요.... 그리고 마지막 저장 위치부터 시작하나요?

Renat Fatkhullin - MetaQuotes
  • www.mql5.com
Профиль трейдера
 

우리는 테스터와 옵티마이저의 완전한 재작성에 종사하고 있습니다.

누적된 문제를 근본적으로 다시 수정하고 수정하겠습니다.

 
Renat Fatkhullin :

우리는 테스터와 옵티마이저의 완전한 재작성에 종사하고 있습니다.

누적된 문제를 근본적으로 다시 수정하고 수정하겠습니다.

그럴까요:

1. 에이전트의 백로그에 대한 더 빠른 반응(허용되는 경우) 에이전트의 응답이 없는 경우 패킷 발행이 몇 분 동안 중단되고 패킷이 재분배됩니다.

2. 원격 시스템의 모든 에이전트에 대한 데이터의 하나의 인스턴스에서 다운로드 가능성이 구현되어 있습니까?

3. 최적화에 필요한 데이터(파일)를 모두 다운로드하지 않고 에이전트 연결에 실패하면 대용량 데이터 전송 문제가 해결되나요?

 

여기서 또 걱정되는게....

최적화가 진행 중이고 그 순간에 에이전트의 메타 트레이더가 업데이트되고 있다고 가정해 봅시다. .... 동시에 에이전트는 작업(더 정확하게는 작업 배치)을 가지고 있었습니다. 손실되거나 다시 계산될 것입니다 ?