2017-05-07 14 views
0

OpenCL에서 내 Nvidia Geforce GTX 970에 최대 연산 유닛이 13 개인 이유를 누가 말해 줄 수 있습니까? 또한 실행 단위 (EU)와 동일한 최대 계산 단위가 있습니까? 왜냐하면 내 아이리스 6100 랩탑에서 device.max_compute_units는 48이며 이는 그래픽 카드의 EU와 동일합니다.OpenCL, PyopenCL, 왜 GTX970에는 13 개의 연산 유닛 만 있습니까? 병렬 프로세스 양을 찾는 방법

누군가이 문제에 관해 밝힐 수 있습니까? 나는 여기서 얼마나 많은 프로세스가 병렬로 수행 될 수 있는지 알아 내려고 노력 중이다. 어쩌면 틀린 매개 변수를보고 있을까요?

천 덕분에 ...

+0

GPU에는 13 개의 컴퓨팅 유닛 (NVIDIA의 용어로 스트리밍 멀티 프로세서)이 있기 때문입니다. – talonmies

+0

[작업 그룹 수에 해당하는 컴퓨터 단위 수] 가능한 중복 (http://stackoverflow.com/questions/9326430/number-of-compute-units-corresponding-to-the-number-of-work- 그룹) – talonmies

답변

1

당신은 코어의 수와 연산 유닛의 수를 쿼리 할 수 ​​없습니다. 인텔 통합 GPU는 일반적으로 컴퓨팅 유닛 당 8 개의 코어 만 가지고 있으며, 엔비디아는 컴퓨팅 유닛 당 192 또는 128 코어를 가지고 있습니다. Max_compute_units는 계산 단위 수이며 파티션을 찾기 위해 (그리고 제한적으로) 장치 파티션에서 사용할 수 있지만 일반적으로 CPU 만 장치 파티셔닝을 지원합니다.

병렬로 수행 할 수있는 프로세스 (작업 항목)의 수는 하드웨어의 기능에 따라 다릅니다. AMD 그래픽 카드의 경우 코어 수 (계산 단위 수의 64 배)가 최대 40 배가 될 수 있습니다. 예를 들어 8 개의 연산 장치 AMD GPU는 20k (8 * 64 * 40) 개의 스레드를 기내에 장착 할 수 있으며 단일 큐에 더 많은 스레드를 장착 할 수 있습니다.

최대 계산 단위 수는 드라이버에서 변경할 수 있습니다. 베타 드라이버 및 12 개의 컴퓨팅 장치 만 표시하는 통합 인텔 GPU를 보았습니다. 또한 새로운 AMD GPU는 일부 컴퓨팅 장치 예약을 지원 받았습니다. 일부 응용 프로그램에서는 오디오 컴퓨팅을 지원하므로 범용 컴퓨팅 커널은 해당 응용 프로그램의 나머지 컴퓨팅 장치 만 볼 수 있습니다.

엔비디아 GPU에 계산 유닛이 13 개 있고 드라이버가 모두 13을 계산할 수있는 경우 OpenCL은 모두 13 개를 사용할 수 있습니다. GTX970은 Intel Iris GPU보다 더 많은 코어를 가지고 있습니다.

대기열에 들어간 OpenCL 커널의 작업 그룹은 전체적으로 계산 단위로 실행되므로 각 작업 그룹의 작업 항목은 동일한 작업 그룹의 다른 작업 항목과 계산 단위의 동일한 메모리를 공유합니다. 그러나 일부 공급 업체는 규칙을 조금 더 확장 할 수 있습니다. 단일 작업 그룹에 대해 Compute 단위를 공동으로 사용할 수 있습니다. 인텔 igpu와 같은.

+0

Intel GPU에는 실행 단위 (EU)가 있습니다. 각각 7 개의 SIMD 스레드 (웨이브/워프) 중에서 선택할 수 있습니다. 인텔 드라이버는 이것을 "계산 단위"용 OpenCL API에 매핑하지만, 기껏해야 부정확 한 매핑입니다. 작업 그룹은 여러 EU에서 실행될 수 있습니다. 따라서 아키텍처 전반에서 사과를 비교하는 것은 완전히 공정한 사과가 아닙니다. 5.3의 https://software.intel.com/sites/default/files/managed/c5/9a/The-Compute-Architecture-of-Intel-Processor-Graphics-Gen9-v1d0.pdf – Tim

+0

을 참조하십시오. 그러면 여러 개의 유? L3 조각? –

+0

공유 로컬 메모리는 여러 EU에서 공유합니다 (24 번 생각합니다). 예, L3에서 빠져 나옵니다 (5.5 절, 동일한 문서, SLM이 L3 상자에 표시됨). – Tim