OpenCL: MQL5의 내부 구현 테스트 - 페이지 60

 
Mathemat :

예, MD , 베어 CPU에서 뭔가 좋지 않습니다. 여기서 인텔은 여전히 최대한 지배합니다 ...

글쎄요, 당신은 슈퍼 비디오를 가지고 있습니다.

응. 나는 순무를 긁는다. 그러나 운전자가 비뚤어질 수 있습니다. 나는 그것을 만지기가 두렵습니다. 일단 철거되고 나면 거의 완전한 어둠 속에 있는 자신을 발견했습니다. Winda는 명백히 부적합한 자신의 드라이버와 함께 카드를 집어 들었습니다. 1% 가시성 조건에서 AMD APP SDK를 다시 삽입해야 했습니다. 재밌었다.. :)) 백번도 처음으로 모든 버튼을 눌렀다..............
 
MetaDriver : 네. 나는 순무를 긁는다. 그러나 운전자가 비뚤어질 수 있습니다. 만지기가 무서워
멋지네요. Intel과 AMD 모두에서 기본 드라이버도 비뚤어집니다. 단지 성장 문제이기를 바랍니다.
 

여러분, 순수 CPU의 이 OpenCL이 MQL5 또는 다른 언어에서만 그러한 가속을 제공합니까?

MQL5 + OpenCL VS C++ + 전체 컴파일러 최적화 를 비교했습니까?

이것이 OpenCL이 멋진 것이 아니라 MQL5 자체에 최적화가 부족하다는 의혹이 있습니다.

추신: 저는 i7 2700K를 가지고 있으며 깨끗한 CPU에서 테스트하기 위해 (얻는 즉시) 시도할 것입니다.

 
Mathemat :
멋지네요. Intel과 AMD 모두에서 기본 드라이버도 비뚤어집니다. 단지 성장 문제 이기를 바랍니다 .
예, 몇 년 안에 더 이상 그렇지 않을 것이며 모든 것이 명확하게 작동할 것으로 기대합니다. 지금 나는 다른 문제가 있습니다 - 이 쓰레기를 지능적으로 프로그래밍하는 방법을 배우려면 ... :)
 
hrenfx :

여러분, 순수 CPU의 이 OpenCL이 MQL5 또는 다른 언어에서만 그러한 가속을 제공합니까?

MQL5 + OpenCL VS C++ + 전체 컴파일러 최적화 를 비교했습니까?

이것이 OpenCL이 멋진 것이 아니라 MQL5 자체에 최적화가 부족하다는 의혹이 있습니다.

추신: 저는 i7 2700K를 가지고 있으며 깨끗한 CPU에서 테스트하기 위해 (얻는 즉시) 시도할 것입니다.

아니, 그들은하지 않았다.

해보자! 좋은 거래.

원칙적으로 코드는 최대 10분 이내에 C ++로 이식됩니다(수를 계산하는 베어 CPU에서). C++에서 OpenCL 사용하는 방법은 입문서에서만 봤는데 실제로 해보지는 않았습니다. 그리고 일반적으로 필요할 것입니다.

 
hrenfx : 이것이 OpenCL 쿨이 아니라 MQL5 자체에 최적화가 부족하다는 의혹이 있습니다.

네, 매우 논리적입니다. 최근에 나는 ixbt 포럼에서 CPU 분석가와 충돌했습니다. 그는 또한 생각합니다. 토론의 시작은 여기 (내 별명은 tamehtaM )입니다. 저의 무능함 때문에 발길질하지 말아주세요. 그러나 Felid 는 너무 지나치다는 인상이 있습니다. Felid는 GP(IGP)에 대해 너무 자주 이야기합니다. IGP인 그가 어리석게 결석하거나 너무 약할 때도 마찬가지입니다.

이 주제의 첫 번째 게시물은 Intel OpenCL 런타임을 올바르게 설치하는 방법을 아직 몰랐을 때 작성되었습니다. 사실 아직도 모든 것이 옳다고 확신할 수는 없습니다. 그러나 이미 지금은 AMD APP SDK보다 약 3배 더 좋습니다.

가속 수치는 고통스럽게 큽니다. 확실히 그렇습니다. 그리고 최적화가 나타날 때 분명히 작아져야 합니다.

또 다른 흥미로운 점은 이러한 최적화가 없더라도 5가 4보다 빠릅니다.

그리고 가속 자체가 중요한 것은 아닙니다. 가장 중요한 것은 실행 시간의 절대 수치입니다. 그들은 확실히 더 나빠지지 않을 것입니다. 더 정확히 말하면, 그렇게 해서는 안 됩니다.

 
Mathemat :

이것은 분명히 CPU가 아닌 개별 카드에 있는 것입니다. 에뮬레이션에서 이러한 가속은 거의 불가능합니다. 그리고 이미 가지고 있는 장치의 수는 5입니다.

괜찮으시다면 약간 수정한 코드를 실행하고 결과를 여기에 올려주세요. 코드에서 다른 OpenCL 장치에 대한 계산은 반복되며(빠르야 함) x86에서 가장 긴 계산은 한 번만 수행됩니다. 발판은 길지만 스크립트 자체는 한 번 실행됩니다.

나는 이미 당신을 고문했다는 것을 이해합니다. 그러나 어쨌든 지원팀에 좋은 정보가 될 것입니다.

결과는 다음과 같습니다.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) CPU 시간/Gpu 시간 = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 Cpu MaxResult==1.41575의 결과
2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) CPU 시간 = 301643ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 GPU MaxResult==1.41575의 결과
2012.04.23 21:37:56 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle(EURUSD,H1) GPU 시간 = 687ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) OpenCL 초기화 OK! 장치 번호 = 4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 GPU MaxResult==1.41575의 결과
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) GPU 시간 = 234ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) OpenCL 초기화 OK! 장치 번호 = 3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 GPU MaxResult==1.41575의 결과
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) GPU 시간 = 234ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) OpenCL 초기화 OK! 장치 번호 = 2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 GPU MaxResult==1.41575의 결과
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) GPU 시간 = 234ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) OpenCL 초기화 OK! 장치 번호 = 1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 GPU MaxResult==1.41575의 결과
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) GPU 시간 = 234ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle(EURUSD,H1) OpenCL 초기화 OK! 장치 번호 = 0

 
casinonsk :

결과는 다음과 같습니다.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) CPU 시간/Gpu 시간 = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 Cpu MaxResult==1.41575의 결과
2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle(EURUSD,H1) CPU 시간 = 301643ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle(EURUSD,H1) 7544 패스에서 GPU MaxResult==1.41575의 결과
2012.04.23 21:37:56 ParallelTester_00-01x_cycle(EURUSD,H1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle(EURUSD,H1) GPU 시간 = 687ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle(EURUSD,H1) OpenCL 초기화 OK! 장치 번호 = 4

자, 이제 장치 = 4가 분명해졌습니다. 이것은 베어 CPU입니다. 그리고 시간 GPU 시간 = 687ms - 매우 일관적입니다. 모든 것이 괜찮습니다.

왜 실행 시간이 나에게 명확하지 않습니다. CPU 시간 이 너무 큽니다. 또한 훨씬 낮은 코어 주파수(2.8GHz)로 약 235000ms가 있습니다.

메모리가 거의 없거나 매우 느리거나 CPU는 항상 일종의 리소스 집약적 작업으로 로드됩니다. 불명. 배율이 부자연스럽게 큽니다.

 
Mathemat :

자, 이제 장치 = 4가 분명해졌습니다. 이것은 베어 CPU입니다. 그리고 시간 GPU 시간 = 687ms - 매우 일관적입니다. 모든 것이 괜찮습니다.

왜 실행 시간이 나에게 명확하지 않습니다. CPU 시간 이 너무 큽니다. 또한 훨씬 낮은 코어 주파수(2.8GHz)로 약 235000ms가 있습니다.

메모리가 거의 없거나 매우 느리거나 CPU는 항상 일종의 리소스 집약적 작업으로 로드됩니다. 불명. 배율이 부자연스럽게 큽니다.

EA를 최적화하고 있는데 코어가 약간 로드되어 있습니다.

메모리 16Gb

 
casinonsk : EA를 최적화하고 있습니다. 코어가 약간 로드되어 있습니다.

그러면 모든 것이 명확해집니다. 최적화가 끝나면 동일한 스크립트를 실행해 보십시오. 그녀는 아마도 모든 코어를 로드할 것입니다.

다른 어떤 것도 방해하지 않는 조건에서 베어 톱 엔드 CPU를 보는 것은 매우 흥미 롭습니다.