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

 
Mathemat :

자, 드디어 여러분을 기다리고 있습니다. 실험할 준비가 되었다면 Intel OpenCL Runtime을 설치하십시오( 링크의 지침).

아무것도 변경하지 않고 스크립트를 실행하고 이전 동료와 동일한 방식으로 "전문가" 탭에서 로그를 게시합니다. 스크립트의 총 실행 시간은 약 3분입니다. 기다려 주세요. 동시에 OpenCL이 가장 멋진 베어스톤 Sandy Bridge에서 어떻게 작동하는지 알아낼 것입니다.

당신의 인내심이 충분하지 않거나 이것이 당신의 능력을 넘어서는 것처럼 보이더라도 괜찮습니다. 우리는 기분을 상하게 하지 않을 것입니다.

추신: 이 스크립트의 목적은 별도의 비디오 드래곤 없이 베어 CPU가 무엇을 할 수 있는지 확인하는 것입니다. Intel Runtime이 올바르게 설정되면 이 스크립트의 속도가 약 200 또는 그보다 조금 더 빨라질 것이라고 생각합니다.

Intel OpenCL Runtime이 올바르게 실행되었는지 의심됩니다.

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1347.164383561644

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==0.9316 at 10253 pass

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 4


 
casinonsk :

Intel OpenCL Runtime이 올바르게 실행되었는지 의심됩니다.

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

아마도 CLContextCreate() 인수를 0이 아닌 다른 값으로 설정했을 것입니다. 글쎄, 나는 당신에게 아무것도 변경하지 말라고 요청했습니다! 우리는 이미 당신의 머리가 둘 달린 비디오 드래곤의 능력을 알고 있습니다. 하지만 당신은 여러 가지가있는 것 같습니다 ...

내 대략적인 추정에 따르면 CLContextCreate(0)을 사용하면 각각 CPU 시간 = 180000ms 및 GPU 시간 = 900ms(대략)의 순서로 숫자가 있어야 합니다. 그런 CPU의 경우 이상하게 긴 첫 번째 실행 시간 이 있습니다. 아마도 그는 다른 작업으로 많이로드 되었습니까?

내가 첨부한 것과 동일한 형식으로 스크립트를 실행할 수 있습니다. 코드에서 아무것도 변경하지 않고 단일 ?

PS 물론 device = 0이 CPU가 아니라 다른 것에 해당할 수도 있습니다. 그럼 실험(0에서 3까지). 이론상 가장 긴 GPU 시간은 베어 CPU에 해당해야 합니다. 주최자.

 
Mathemat :

CLContextCreate() 인수를 0이 아닌 다른 값으로 설정합니다. 글쎄, 나는 당신에게 아무것도 변경하지 말라고 요청했습니다! 우리는 이미 당신의 머리가 둘 달린 비디오 드래곤의 능력을 알고 있습니다. 하지만 당신은 여러 가지가있는 것 같습니다 ...

내 대략적인 추정에 따르면 CLContextCreate(0)을 사용하면 각각 CPU 시간 = 180000ms 및 GPU 시간 = 900ms(대략)의 순서로 숫자가 있어야 합니다. 그런 CPU의 경우 이상하게 긴 첫 번째 실행 시간 이 있습니다. 아마도 그는 다른 작업으로 많이로드 되었습니까?

아무 것도 변경하지 않고 내가 첨부 방식으로 스크립트를 실행할 수 있습니까?

PS 물론 device = 0이 CPU가 아니라 다른 것에 해당할 수도 있습니다. 그럼 실험(0에서 3까지). 이론상 가장 긴 GPU 시간은 베어 CPU에 해당해야 합니다. 주최자.

설정을 변경하지 않았습니다! 그대로 출시되었습니다.

비디오에 따르면 예, 2x590입니다.

CLContextCreate(0) 1,2,3에서 다시 실행하면 결과는 이전과 동일합니다.

Intel OpenCL 런타임에 문제가 있을 수 있습니다.

 
casinonsk :

설정을 변경하지 않았습니다! 그대로 출시되었습니다.

CLContextCreate(0) 1,2,3에서 다시 실행하면 결과는 이전과 동일합니다.

모든 결과가 동일합니까? 나는 그것을 믿을 수 없다... 글쎄, 그것은 베어 CPU의 이 스크립트에서 GPU 시간 = 219ms가 될 수 없습니다. 가장 좋은 경우에는 약 800ms이지만 200ms는 전혀 아닙니다.

다음은 일반적인 결과입니다(저는 Pentium G840 CPU를 사용합니다).

2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 88.40817091454272
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==1.05116 at 7785 pass
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CPU time = 235873 ms
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==1.05116 at 7785 pass
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    GPU time = 2668 ms
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    CLGetInfoInteger() returned 1

확인 가자.

 
Mathemat :

모든 결과가 동일합니까? 나는 그것을 믿을 수 없다... 글쎄, 그것은 베어 CPU의 이 스크립트에서 GPU 시간 = 219ms가 될 수 없습니다. 가장 좋은 경우에는 약 800ms이지만 200ms는 전혀 아닙니다.

확인 가자.

여기에서 CLContextCreate (0) 로 다시 시도했습니다.

 2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1265.405982905983

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==1.48772 at 2051 pass

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 296105 ms

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==1.48772 at 2051 pass

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 234 ms

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 5


 
casinonsk : CLContextCreate(0) 으로 다시 시도했습니다.

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

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

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

흥미로운 결과가 있습니다)) 이것이 총 장치 수가 아니라 현재

 2012.04 . 22 22 : 02 : 51      ParallelTester_00- 01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0

아직 계산이 진행 중이지만 완료되는 대로 게시하겠습니다.

그런데 도움말에는 CLGetInfoInteger() 도 CL_DEVICE_COUNT도 없습니다.

추신. 결과

 2012.04 . 22 22 : 02 : 51      ParallelTester_00- 01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0
2012.04 . 22 22 : 03 : 03      ParallelTester_00- 01 x_cycle (EURUSD,M30)        GPU time = 11357 ms
2012.04 . 22 22 : 03 : 03      ParallelTester_00- 01 x_cycle (EURUSD,M30)        Соunt indicators = 16 ; Count history bars = 144000 ; Count pass = 12800
2012.04 . 22 22 : 03 : 03      ParallelTester_00- 01 x_cycle (EURUSD,M30)        Result on Gpu МахResult== 1.68487 at 9198 pass
2012.04 . 22 22 : 03 : 03      ParallelTester_00- 01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 1
2012.04 . 22 22 : 03 : 04      ParallelTester_00- 01 x_cycle (EURUSD,M30)        GPU time = 998 ms
2012.04 . 22 22 : 03 : 04      ParallelTester_00- 01 x_cycle (EURUSD,M30)        Соunt indicators = 16 ; Count history bars = 144000 ; Count pass = 12800
2012.04 . 22 22 : 03 : 04      ParallelTester_00- 01 x_cycle (EURUSD,M30)        Result on Gpu МахResult== 1.68487 at 9198 pass
2012.04 . 22 22 : 10 : 13      ParallelTester_00- 01 x_cycle (EURUSD,M30)        CPU time = 428706 ms
2012.04 . 22 22 : 10 : 13      ParallelTester_00- 01 x_cycle (EURUSD,M30)        Соunt indicators = 16 ; Count history bars = 144000 ; Count pass = 12800
2012.04 . 22 22 : 10 : 13      ParallelTester_00- 01 x_cycle (EURUSD,M30)        Result on Cpu МахResult== 1.68487 at 9198 pass
2012.04 . 22 22 : 10 : 13      ParallelTester_00- 01 x_cycle (EURUSD,M30)        CpuTime/GpuTime = 429.565130260521
 
fyords : 그런데 CLGetInfoInteger()도 CL_DEVICE_COUNT도 도움말에 없습니다.

추신. 결과

1. 도움말을 업데이트하십시오. 귀하의 도움말은 분명히 구식입니다.

2. 당신은

 2012.03 . 04 22 : 27 : 16      Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 ( 2 units, 1660 MHz, 1024 Mb, version 295.73 )
2012.03 . 04 22 : 27 : 16      Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 ( 4 units, 2812 MHz, 2048 Mb, version 2.0 )

첫 번째 숫자인 11357ms는 호스트(베어 CPU)를 나타내고 두 번째 숫자인 998ms는 비디오를 나타냅니다. 호스트의 승리 순서는 대략적으로 AMD OpenCL에서 달성한 가속과 매우 일치합니다(4코어 Athlon II에서 약 38배). 실제로는 충분하지 않지만 50-60에 가까운 어딘가에 더 많아야 합니다. 기억력이 매우 느린 경우가 있습니다.

물론 CpuTime / GpuTime 수치는 마지막으로 계산된 장치에 대해서만 계산됩니다.

 
Mathemat :

1. 도움말을 업데이트하십시오. 귀하의 도움말은 분명히 구식입니다.

2. CpuTime / GpuTime 수치는 물론 마지막으로 계산된 장치에 대해서만 계산됩니다.

1. 덕분에 전부 수동으로 업데이트했는데, 터미널과 메타에디터와 함께 도움말이 업데이트되지 않는 이유는 무엇입니까?

2. 예, 하지만 여전히 좋습니다).

 
papaklass :

하드웨어에서는 거의 모든 것이 명확하고 호스트만 OpenCL 장치입니다. 반면에 일찍부터(p. 51) 이렇게 높은 결과가 나온 것이 이상합니다.

 2012.04 . 08 13 : 28 : 01      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       OpenCL init OK!
2012.04 . 08 13 : 28 : 08      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       GPU time = 7145 ms
2012.04 . 08 13 : 28 : 08      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 4096
2012.04 . 08 13 : 28 : 08      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       Result on Gpu МахResult== 3.86669 at 1682 pass
2012.04 . 08 13 : 35 : 11      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       CPU time = 422888 ms
2012.04 . 08 13 : 35 : 11      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 4096
2012.04 . 08 13 : 35 : 11      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       Result on Cpu МахResult== 3.86669 at 1682 pass
2012.04 . 08 13 : 35 : 11      ParallelTester_00- 02 -s16x7x3k (EURUSD,H1)       CpuTime/GpuTime = 59.18656403079076

어떤 이유로 코드 삽입 에서 커서를 꺼낼 수 없습니다. 그리고 내가 누군가를 인용해도 똑같은 넌센스. 이것은 포럼 버그입니까?

오히려 포럼 엔진의 버그이지만 항상 그런 것은 아닙니다. 나는 보통 HTML 버튼을 클릭하고 마지막 태그 뒤에 몇 글자를 수동으로 삽입합니다. 그런 다음 게시물의 시각적 편집 모드로 돌아갑니다.

사유: