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

 
Mathemat :
그게 요점입니다. CLContextCreate() 내부의 인수는 외부 GPU가 있는 경우 CPU를 명시적으로 선택할 수 없습니다.

이렇지 않아야 합니다 - https://www.mql5.com/en/docs/opencl/clcontextcreate

옵션

장치

【인】 시스템에 있는 OpenCL 장치의 순서대로 번호입니다. 특정 숫자 대신 다음 값 중 하나를 지정할 수 있습니다. CL_USE_ANY - OpenCL을 지원하는 사용 가능한 모든 장치를 사용할 수 있습니다. CL_USE_GPU_ONLY - OpenCL 에뮬레이션이 금지되며 OpenCL을 지원하는 특수 장치(비디오 카드)만 사용할 수 있습니다 .

Документация по MQL5: Работа с OpenCL / CLContextCreate
Документация по MQL5: Работа с OpenCL / CLContextCreate
  • www.mql5.com
Работа с OpenCL / CLContextCreate - Документация по MQL5
 

예, 그러면 안됩니다. 이것이 바로 이 번호를 얻을 수 있는 곳이며 올바른 번호를 선택하시겠습니까?

https://www.mql5.com/ru/docs/opencl/clgetinfointeger ? 그러나 단 하나의 속성이 있습니다 - 장치 수, CL_DEVICE_COUNT .

나에게는 시스템의 하나이므로 1도 반환됩니다.

Документация по MQL5: Работа с OpenCL / CLGetInfoInteger
Документация по MQL5: Работа с OpenCL / CLGetInfoInteger
  • www.mql5.com
Работа с OpenCL / CLGetInfoInteger - Документация по MQL5
 
최신 619 빌드로 업그레이드하고 프로그램을 다시 컴파일하는 것을 잊지 마십시오. 이 빌드에서는 OpenCL 초기화 원칙이 변경되었습니다.
 
Mathemat :

예, 그러면 안됩니다. 그것이 바로 이 번호를 얻을 수 있는 곳이고 올바른 번호를 선택하는 것입니까?



CL_USE_GPU_ONLY를 지정하려고 시도하면 비디오 카드가 사용되며 번호는 필요하지 않습니다.
 
Rosh : CL_USE_GPU_ONLY를 지정해야 합니다. 그러면 비디오 카드가 사용되며 번호는 필요하지 않습니다.
이것은 분명합니다. 그러나 사용 가능한 개별 비디오와 함께 CPU를 지정하고 싶습니다. 그리고 어떻게 할 것인가?
 

아주 멋진! HD4200은 OpenCL 장치가 아니잖아요?

CPU에 순수한 에뮬레이션이 있는 것처럼 보입니다. 좋아요!

그것은 동일한 i3를 가르칠 것입니다 ...

AMD APP SDK가 i3의 MT5에서 제대로 작동하지 않는 이유를 막연하게 의심하기 시작했습니다. 모든 코어가 실제 존재하는 것은 아니며 AMD에는 하이퍼스레딩 기술이 없습니다. 아마도, 따라서 운전자는 어떻게 든 비뚤어진 상태로 일어납니다.

아니면 공식적으로 장치를 인식하지만 실제로는 아무 소용이 없는 MT5 자체에서 여전히 로션입니까?

 
Mathemat :
그게 요점입니다. CLContextCreate() 내부의 인수는 외부 GPU가 있는 경우 CPU를 명시적으로 선택할 수 없습니다.

이것은 CPU에 있습니다(이 장치 번호는 1입니다).

 2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      CpuTime/GpuTime = 74.73506433823529
2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Result on Cpu МахResult== 4.54091 at 2233 pass
2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 4096
2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      CPU time = 325247 ms
2012.04 . 08 20 : 57 : 36      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Result on Gpu МахResult== 4.54091 at 2233 pass
2012.04 . 08 20 : 57 : 36      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 4096
2012.04 . 08 20 : 57 : 36      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      GPU time = 4352 ms
2012.04 . 08 20 : 57 : 32      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      OpenCL init OK!

CLContextCreate ( device ) 매개변수를 스크립트 매개변수로 가져왔습니다. 모든 옵션을 찌를 수 있습니다.

// 또 다른 시크릿 킬러 콤보가 있다면?? :))

 

2012.04.08 22:01:08    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))

2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    CpuTime/GpuTime = 26.95192501511792
2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Result on Cpu МахResult==4.98137 at 1628 pass
2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    CPU time = 267417 ms
2012.04.08 22:01:32    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Result on Gpu МахResult==4.98137 at 1628 pass
2012.04.08 22:01:32    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:01:32    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    GPU time = 9922 ms
2012.04.08 22:01:22    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    OpenCL init OK!


감사합니다 몰랐네요...

글쎄, 사실, 나는 비율의 비율이 약 3:1이 될 것이라고 거의 의심하지 않았습니다. 당신은 3배 더 많은 코어, 74.735 / 26.952 ~ 2.77을 가지고 있습니다. 그리고 그것은 여전히 기뻐합니다 : 더 많은 코어 - 더 많은 상금! AMD도 여기에서 택시를 잡았습니다 - 코어 수로 인해!

그러나 i5 Sandy Bridge가 있는 다른 사람들은 무엇을 가질지 궁금합니다.

그리고 누군가가 Bulldozer e를 가지고 있다면 마침내 그곳으로 날아갈 수 있습니다. 비록 그것이 잘 되지 않을 수도 있기 때문입니다. FPU로 그는 긴장했습니다.

 
MetaDriver :

그리고 이 테스트에서 어떤 이유에서인지 내 다리미가 당신을 부러뜨렸습니다.

2012.04.09 01:09:36        ParallelTester_00-02-316x7x3j (EURUSD,H1)          CpuTime/GpuTime = 161.0007722007722

2012.04.09 01:09:36    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Result on Cpu МахResult==4.85831 at 2497 pass
2012.04.09 01:09:36    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:09:36    ParallelTester_00-02-316x7x3j (EURUSD,H1)    CPU time = 208496 ms
2012.04.09 01:06:08    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Result on Gpu МахResult==4.85831 at 2497 pass
2012.04.09 01:06:08    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:06:08    ParallelTester_00-02-316x7x3j (EURUSD,H1)    GPU time = 1295 ms

2012.04.09 01:06:07        ParallelTester_00-02-316x7x3j (EURUSD,H1)           OpenCL init OK!


다음은 OpenCL CPU에 대한 이 테스트입니다(4개 코어 모두 100% 로드됨)

2012.04.09 01:11:15    ParallelTester_00-02-316x7x3j (EURUSD,H1)    GPU time = 68547 ms

2012.04.09 01:10:07    ParallelTester_00-02-316x7x3j (EURUSD,H1)    OpenCL init OK!


GPU에는 480개의 파리가 있고 CPU 4는 120배의 차이가 있습니다. 즉, 한 번에 120배 더 많은 계산을 수행할 수 있지만 CPU는 68547/1295=52.9배에 불과합니다. 이것은 CPU 스레드가 GPU 스레드보다 빠르지만 GPU가 더 많은 동시 작업을 수행할 수 있기 때문에 승리한다는 것을 의미합니다. 내가 올바르게 이해하고 있습니까?


CPU의 확장은 100%보다 훨씬 적습니다(약 76%). 대신 4배만 3배 속도 향상 208496/68547=3.04

아마도이 테스트의 특이성이 영향을 미칠 수 있습니다.

 

Andrey , 당신이 뭔가를 엉망으로 만든 것 같습니다. MD 는 비디오 없이 CPU에만 이 테스트를 게시했습니다. CPU 에뮬레이션을 직접 선택하여 내가 알기로는 첫 번째 테스트는 비디오입니다.

그리고 OpenCL을 에뮬레이트한 돌(두 번째 테스트)의 결과는 내 것과 비교해도 의심스러울 정도로 약해 보입니다("GPU"에서 약 10초를 사용했습니다).

제가 잘못 이해한 것이 있으면 바로잡아 주십시오.