문제

나는 이상한 행동을 관찰하고있어 그것이 인텔 제온 피 관련 여부 알고 싶습니다.

기본적으로 모두가 알고있는 행렬 곱셈(루프에 대해 중첩 된 세 개)의 작은 예제 코드가 있습니다.나는 인텔 마이크에 계산을 오프로드 target 프라그마와 세 행렬을 map(to:A,B) map(tofrom:C).

이제 내가 관찰하는 것은 작은 행렬에 대한 것입니다.메모리 전송이 매우 오래 걸렸습니다.네이티브 버전(동일한 코드,동일한 병렬 처리 전략,오프로드 없음)에 비해 오프로드 버전은 약 320 천분의 1 초 더 많은 시간을 소비합니다.나는 초기화 오버 헤드를 제거하기 위해 코드의 워밍업 실행을했다.

메모리의 동일한 양이 320 천분의 1 초는 매우 나쁜 몰래 복사되는 엔비디아 테슬라 케이 20 에 비해.

메모리 전송 속도를 향상시킬 수 있는 몇 가지 환경 설정이 있습니까?

추가 질문:오프로드_보고서 환경 변수를 통해 오프로드보고를 활성화했습니다.보고서에 표시된 두 타이밍 결과의 차이점은 무엇입니까:

[Offload] [HOST]  [Tag 5] [CPU Time]        26.995279(seconds)
[Offload] [MIC 0] [Tag 5] [CPU->MIC Data]   3221225480 (bytes)
[Offload] [MIC 0] [Tag 5] [MIC Time]        16.859548(seconds)
[Offload] [MIC 0] [Tag 5] [MIC->CPU Data]   1073741824 (bytes)

마이크 시간(메모리 전송)에서 누락 된 10 초는 무엇입니까?)

그럼 세 번째 질문.인텔 마이크와 함께 고정 메모리를 사용할 수 있습니까?그렇다면 어떻게?

도움이 되었습니까?

해결책

그것은 아마도 시간이 걸리는 마이크에 메모리 할당입니다.시간이가는 곳을 더 잘 이해하기 위해 오버 헤드의 세 가지 소스를 시도하고 분리하십시오:

// Device initialization
#pragma offload_transfer target(mic)
...
// Memory allocation and first data transfer
// This is expected to have overhead proportional to the amount of memory allocated
// Doing at least one transfer will speed up subsequent transfers
#pragma offload_transfer target(mic) in(p[0:SIZE] : alloc_if(1) free_if(0))

...
// This transfer should be faster
// For large sizes, approaching 6 GiB/s
#pragma offload_transfer target(mic) in(p[0:SIZE] : alloc_if(0) free_if(0))

다른 팁

당신이"초기화 오버 헤드를 제거하기 위해 코드의 워밍업 실행을 수행했습니다"라고 말했기 때문에 더미 섹션을 오프로드하여 오프로드 런타임을 시작했다고 가정합니다."오프 로드"(기본값)또는 프로그램 초기화 시간(오프 로드 시작=시작 시)에 시작하기위한 조정이 있음을 기억합니다.어쨌든,디마 엔진에도 빠른 경로가 있습니다.빠른 경로는 버퍼(전송될)가 페이지 크기에 맞춰질 때 수행됩니다.오프로드 응용 프로그램의 경우 임계값 정수와 함께 환경 변수를 간단히 설정할 수 있습니다.이 임계값은 거대한 페이지를 사용하기 전에 필요한 버퍼의 크기를 정의합니다.그래서 당신은 두 가지를 얻습니다:거대한 페이지와 빠른 전송!이 기능은 코프로세서에 투명한 거대한 페이지가 도입되더라도 여전히 의미가 있습니다.

버퍼를 정렬 할 수 있습니다 호스트 따라서 측면(최대.의.벡터-너비 및 페이지 크기;-).추가 오프로드 조항(레오)없이 기억하십시오;그러나 호스트 버퍼의 정렬은 단순히 상속 오프로드 섹션에 의해.모든 것을 포함해야 2 메가바이트에 정렬(하지만 당신은 작은 버퍼에 대한 자원을 낭비하지 않도록 할당이 훨씬 똑똑 할 수 있습니다).그것으로 당신은 당신이 필요로하는 경우 더 많은 배경을 찾을 수있는 충분한 키워드가 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top