이러한 배경에서 AMD는 분명히 더 빠른 수학 계산(AMD의 광부 농장이 일반적으로 수집)뿐만 아니라 공개 표준 전략(많은 것을 공개하고 대중에게 홍보)으로 인해 유리해 보입니다. AMD 카드에 OpenCL 2.0이 도입되면서 이 사양은 CUDA의 기능에 매우 근접했으며 이제 CUDA에 의존하는 것은 의미가 없습니다 .
이것은 유용한 정보입니다. 그렇지 않으면 약 7년 전에 CUDA를 사용했지만 여전히 규칙적이라고 생각했습니다.
질문 - OpenCL에서 디버거는 어떻습니까? MT5 터미널에 대해 말하는 것이 아니라 일반적인 용어로 말하는 것입니다. 지금까지 Visual Studio 용 플러그인 및 독립 실행형 디버거(더 이상 사용되지 않음)인 Intel의 디버거만 보았습니다. 그러나 Intel의 프로세서와 통합 그래픽에 대한 선명도가 특히 높아진 것 같습니다. 그리고 일반적으로 병렬 코드를 디버깅하는 방법을 이해하지 못합니다. 저에게는 여전히 순수한 블랙박스입니다.
Nvidia 카드의 명시적 존재를 요구할 수 있는 특정 영역 또는 자신을 위해서만 CUDA로 작업할 수 있습니다.
예, CUDA에는 더 많은 기능이 있었습니다. 그러나 OpenCL 2.0이 포함된 AMD 하드웨어가 출시되고 OpenCL 2.1의 새 버전이 출시됨에 따라 공급업체에 종속되는 것은 의미가 없습니다. 특히 이 공급업체가 기능을 축소하는 경우.
최대 적용 범위의 관점에서 볼 때 기존 프로세서에서 잘 작동하는 OpenCL이라는 하나의 선택만 있습니다. 즉, GPU의 무조건적인 존재를 요구하거나 GPU와 CPU에 대한 두 가지 버전의 코드를 작성할 필요가 없습니다. 작성된 OpenCL 코드는 다른 구성에서 작동합니다.
특수 디버거에서만 CUDA/OpenCL을 디버그할 수 있습니다. 여기에는 기적이 있을 수 없습니다.
그렇다면 이 모든 것을 인용 없이 신성한 형태로 가질 수 있습니까? PPC는 지각과 창조에 얼마나 불편한가
그리고 신경망의 경우 이미 표준 클래스 가 있어야 하며 wellslab과 같은 opcl)을 즉시 사용할 수 있습니다.
그럼 왜 안될까요? 보세요, MQL이 모르는 단일 특정 기능은 없습니다. MQL에서 OCL용으로 이 함수를 작성하고 디버깅한 다음 모든 것을 해킹했습니다. 코드 변환기를 OCL로 만들 수도 있지만 직접 하는 데에는 별 의미가 없습니다. 아마도 MQ가 그렇게 할 것입니다. 그러나 나는 그것을 의심합니다.
모든 것이 훌륭하지만! 일반적으로 OCL과 모든 병렬화 도구에는 큰 문제가 있습니다. 알고리즘의 아주 작은 부분을 효과적으로 병렬화할 수 있습니다. 병렬 컴퓨팅 의 예에서 파동의 모방, 파괴와 함께 피라미드에 공이 떨어지는 것, 즉 작은 입자로 쪼개질 수 있고 각각이 자체 프로세스에 따라 계산되는 모든 것이 그렇게 사랑받는 이유는 무엇입니까?
핸디캡/익스체인지에서는 물론 신경망, 푸리에, 웨이블릿, 필터 등과 같은 다양한 변환이며 모두 완벽하게 병렬입니다. 그러나 병렬화할 수 없는 선형 알고리즘이 있습니다. 일반적으로 알고리즘의 다음 단계의 결과가 이전 단계의 결과를 기반으로 하는 경우입니다.
나는 이제 2개의 멋진 비디오를 사고 모든 것이 내 테스터에서 날아갈 것이라고 생각하는 사람들을 위해 이것을 썼습니다.
이러한 배경에서 AMD는 분명히 더 빠른 수학 계산(AMD의 광부 농장이 일반적으로 수집)뿐만 아니라 공개 표준 전략(많은 것을 공개하고 대중에게 홍보)으로 인해 유리해 보입니다. AMD 카드에 OpenCL 2.0이 도입되면서 이 사양은 CUDA의 기능에 매우 근접했으며 이제 CUDA에 의존하는 것은 의미가 없습니다 .
이것은 유용한 정보입니다. 그렇지 않으면 약 7년 전에 CUDA를 사용했지만 여전히 규칙적이라고 생각했습니다.
질문 - OpenCL에서 디버거는 어떻습니까? MT5 터미널에 대해 말하는 것이 아니라 일반적인 용어로 말하는 것입니다. 지금까지 Visual Studio 용 플러그인 및 독립 실행형 디버거(더 이상 사용되지 않음)인 Intel의 디버거만 보았습니다. 그러나 Intel의 프로세서와 통합 그래픽에 대한 선명도가 특히 높아진 것 같습니다. 그리고 일반적으로 병렬 코드를 디버깅하는 방법을 이해하지 못합니다. 저에게는 여전히 순수한 블랙박스입니다.
Nvidia 카드의 명시적 존재를 요구할 수 있는 특정 영역 또는 자신을 위해서만 CUDA로 작업할 수 있습니다.
예, CUDA에는 더 많은 기능이 있었습니다. 그러나 OpenCL 2.0이 포함된 AMD 하드웨어가 출시되고 OpenCL 2.1의 새 버전이 출시됨에 따라 공급업체에 종속되는 것은 의미가 없습니다. 특히 이 공급업체가 기능을 축소하는 경우.
최대 적용 범위의 관점에서 볼 때 기존 프로세서에서 잘 작동하는 OpenCL이라는 하나의 선택만 있습니다. 즉, GPU의 무조건적인 존재를 요구하거나 GPU와 CPU에 대한 두 가지 버전의 코드를 작성할 필요가 없습니다. 작성된 OpenCL 코드는 다른 구성에서 작동합니다.
특수 디버거에서만 CUDA/OpenCL을 디버그할 수 있습니다. 여기에는 기적이 있을 수 없습니다.
예에서
사용 가능한 CPU 장치가 있는 구성에서 "OpenCL을 찾을 수 없음"이 표시됨
그래서 -
공장
* 질문은 장치의 기본 선택입니다.
그렇다면 이 모든 것을 인용 없이 신성한 형태로 가질 수 있습니까? PPC는 지각과 창조에 얼마나 불편한가
그리고 신경망의 경우 이미 표준 클래스 가 있어야 하며 wellslab과 같은 opcl)을 즉시 사용할 수 있습니다.
"#define HL2Count " + ( string )hl2NeuronCount + " \r\n"
//------------------------------------------------------------------------------------
"#define NeuronSensitivity " + ( string )NeuronSensitivity_P + " \r\n"
//------------------------------------------------------------------------------------
"#define sampleCount " + ( string )sampleCount + " \r\n"
//------------------------------------------------------------------------------------
"#define signalCount " + ( string )signalCount + " \r\n"
//------------------------------------------------------------------------------------
"#define StrArrSaSize " + ( string )( sizeof (ArrSample) / sizeof ( float )) + "\r\n"
"typedef struct{float C[StrArrSaSize];} ArrSa; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrWeSize " + ( string )( sizeof (ArrWe) / sizeof ( float )) + " \r\n"
"typedef struct{float C[StrArrWeSize];} ArrWe; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrCrSize " + ( string )( sizeof (ArrCr) / sizeof ( float )) + " \r\n"
"typedef struct{float C[StrArrCrSize];}ArrCr; \r\n"
//------------------------------------------------------------------------------------
"#define Spread " + ( string )(Spread_P * Point ()) + " \r\n"
//------------------------------------------------------------------------------------
"#define Point " + ( string ) Point () + " \r\n"
"#define SL " + ( string )(StopLoss_P * Point ()) + " \r\n"
"#define TP " + ( string )(TakeProfit_P * Point ()) + " \r\n"
//------------------------------------------------------------------------------------
" \r\n"
"__kernel void Work(__global ArrSa *Sample, \r\n"
" __global ArrWe *Weights, \r\n"
" __global ArrCr *Result) \r\n"
"{ \r\n"
" int thread = get_global_id(0); \r\n"
" \r\n"
" //------------------Переменные нейронной сети---------------------------------\r\n"
그렇다면 이 모든 것을 인용 없이 신성한 형태로 가질 수 있습니까? PPC는 지각과 창조에 얼마나 불편한가
그리고 신경망의 경우 이미 표준 클래스 가 있어야 하며 wellslab과 같은 opcl)을 즉시 사용할 수 있습니다.
이것은 MQL5 코드의 GPU 계산뿐만 아니라 터미널의 그래픽 기능에 대한 데모입니다.
스크립트 형태의 전체 소스 코드가 첨부되어 있습니다. OpenCL 1.2의 버그가 수정되었습니다.
에이전트를 위해 클라우드로 이동합니까?
에이전트를 위해 클라우드로 이동합니까?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
DLL 없이 MetaTrader 5 터미널에서 직접 OpenCL로 할 수 있는 일은 다음과 같습니다.
레나트 팻쿨린 , 2016.12.10 14:49
머지 않아 최소한 CPU 구현을 위해 MQL5 Cloud Network 에서 OpenCL을 허용할 것입니다.모든 것이 훌륭하지만! 일반적으로 OCL과 모든 병렬화 도구에는 큰 문제가 있습니다. 알고리즘의 아주 작은 부분을 효과적으로 병렬화할 수 있습니다. 병렬 컴퓨팅 의 예에서 파동의 모방, 파괴와 함께 피라미드에 공이 떨어지는 것, 즉 작은 입자로 쪼개질 수 있고 각각이 자체 프로세스에 따라 계산되는 모든 것이 그렇게 사랑받는 이유는 무엇입니까?
핸디캡/익스체인지에서는 물론 신경망, 푸리에, 웨이블릿, 필터 등과 같은 다양한 변환이며 모두 완벽하게 병렬입니다. 그러나 병렬화할 수 없는 선형 알고리즘이 있습니다. 일반적으로 알고리즘의 다음 단계의 결과가 이전 단계의 결과를 기반으로 하는 경우입니다.
나는 이제 2개의 멋진 비디오를 사고 모든 것이 내 테스터에서 날아갈 것이라고 생각하는 사람들을 위해 이것을 썼습니다.