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

 

뭔가 효과가 없습니다. 초기화 문자열은 정상입니다.

2012.04.01 05:52:01    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))


(AMD에서 OpenCL 1.1을 설정하고 그 위에 1.2를 설정). 그러나 이제 테스트 를 실행하면

2012.04.01 06:06:49    ParallelTester_00-01x (EURUSD,H1)    OpenCL not found.


그 전에 Intel 그래픽 드라이버를 최신 버전으로 업데이트한 후 자체 설치 프로그램으로 AMD 드라이버를 철거한 다음 모든 것을 다시 설치했습니다.

그리고 내가 지금 무엇을 잘못하고 있습니까?

추신 하지만 곧 Ivy가 출시될 예정이므로 Intel HD 4000과 함께 통합 그래픽에서 Intel이 무엇을 할 수 있는지 모두에게 보여줄 것입니다. 그래픽 을 보세요.

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat :

그리고 내가 지금 무엇을 잘못하고 있습니까?

테스트를 다시 컴파일하십시오. 도움이 될 것입니다. 그렇지 않은 경우 서비스 데스크로 이동하십시오.
 
Mathemat :

그리고 내가 지금 무엇을 잘못하고 있습니까?
CLCreateContext는 bool 매개변수 use_gpu를 int 장치(장치 번호)로 변경했습니다. 코드를 수정합니다.
 
mql5 :
새 빌드에서 CLContextCreate 함수의 매개변수가 변경되어 이제 bool use_gpu 대신 int 장치가 사용됩니다.

device>=0이 OpenCL 장치 번호로 순서대로 사용될 때
with device==OPENCL_DEVICE_ANY (-1) 사용 가능한 모든 장치에서 자동 선택이 사용됩니다.
with device==OPENCL_DEVICE_GPU (-2) 사용 가능한 모든 GPU 장치에서 자동 선택이 사용됩니다.

코드로 어떻게 하는지 보여주세요. CLContextCreate( OPENCL_DEVICE_ANY )를 호출 하고 컴파일할 때 다음 결과를 얻습니다.

'OPENCL_DEVICE_ANY' - undeclared identifier    ParallelTester_00-01x.mq5    145    31


빌드 619.

그리고 두 번째 질문: 최신 도움말은 어디에서 찾을 수 있습니까?

추신 -1 인수를 입력하자마자 작동했습니다. OPENCL_DEVICE_ANY 상수가 아직 선언되지 않았습니다. :)

 
빌드 619에서 이러한 상수의 이름은 CL_DEVICE_ANY/CL_DEVICE_GPU로 변경되었습니다.

그러나 후속 빌드에서는 CL_USE_ANY/CL_USE_GPU_ONLY가 됩니다.
 

OpenCL이 i3-2120에서 어떻게 작동하는지 확인하기로 결정했습니다(이것은 제 컴퓨터가 아니며 시스템에 별도의 비디오가 없습니다). AMD APP SDK 제공, OpenCL-Z가 모든 것을 결정했습니다. 초기화하는 동안 터미널에 다음 줄이 표시되었습니다.

2012.04.02 03:59:47    Terminal    CPU: GenuineIntel  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)


메시지에 첨부되고 빌드 619의 최신 변경 사항을 고려하여 약간 수정된 MetaDriver '코드를 확인했습니다( 여기 에서 첫 번째 테스트 참조). 결과:

2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CPU time = 20483 ms
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    GPU time = 27628 ms
2012.04.02 03:59:55    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!


"GPU"에서 실행하는 동안 4개의 프로세서 스레드가 모두 100%로 완전히 사용되었습니다.

가속을 달성하려면 어떻게 해야 합니까? Pentium G840 기반 시스템(별도의 비디오도 없음)에서 가속은 25배였습니다.

추신 서비스데스크에 쪽지 보냈는데 제 문제일 가능성이 더 큽니다... 이미 눈을 감고 AMD APP SDK를 올바르게 설치하고 제거하는 방법을 배운 것 같습니다만, 내가 모든 함정을 우회하지 않았다는 것을. 그리고 시스템에 Intel OpenCL Runtime이 설치되어 있는데도 불구하고 단말기에서 돌이 여전히 OpenCL 장치로 인식되지 않습니다.

PPS 다른 것을 파헤친 것으로 나타났습니다( https://www.mql5.com/en/forum/6042/page25 ).

Ashes: 2012.03.05 17:43:16 터미널 CPU: 정품 Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz(OpenCL 1.1 포함)(4개 장치, 3092MHz, 4008Mb, 버전 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.7347677666287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) 1125 패스에서 Cpu MaxResult==1.27347에 대한 결과
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) 카운트 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CPU 시간 = 21309ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) 1125 패스에서 GPU MaxResult==1.27347에 대한 결과
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) 표시기 = 16; 카운트 기록 막대 = 144000; 카운트 패스 = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) GPU 시간 = 29001ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL 초기화 OK!

:((((

어쩌면 "잘못된 시스템의 수류탄"이 있습니까? (AMD SDK 버전 기준)

프로세서도 i3-2120과 거의 동일합니다...
파일:
 

결국 GPU + OpenCL이 문제입니다!

2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) 50패스에서 CPU MaxResult==3.78654에 대한 결과
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) 표시기 = 16; 카운트 기록 막대 = 50000; 카운트 패스 = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CPU 시간 = 101946ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU MaxResult==3.78654 at 50 pass
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) 카운트 지시자 = 16; 카운트 기록 막대 = 50000; 카운트 패스 = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU 시간 = 140ms

 
MetaDriver :

결국 GPU + OpenCL이 문제입니다!

2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU 시간 = 140ms

GPU 계산 시간이 너무 짧지 않도록 테스트를 제안합니다. 어쨌든 140ms, imho는 특히 수십 밀리초의 GetTickCount() 측정 오류로 인해 너무 신뢰할 수 없습니다.

MD 님 너무 부럽습니다.

 
Mathemat :

GPU 계산 시간이 너무 짧지 않도록 테스트를 제안합니다.

CPU를 기다릴 인내심이 없습니다 :) 여기, 숲으로 더 멀리 갈수록 GPU는 더 시원해집니다...
 
MigVRN :
CPU를 기다릴 인내심이 없습니다 :) 여기, 숲으로 더 멀리 갈수록 GPU는 더 시원해집니다...

비슷하게. :)

하지만 지금 당장은 4096마리의 꿀벌에 발사할 것입니다. CPU는 5분 후에 계산됩니다.