CUDA에서 같은 블록에있는 32 개의 인접한 스레드가 워프로 예약된다는 것을 알고 있습니다. 그러나 자주 블록 당 1 개의 스레드가있는 여러 개의 블록이있는 튜토리얼 CUDA 코드를 자주 찾습니다. 이 모델에서는 32 블록의 32 개 스레드가 워프로 예약됩니까? 그렇지 않다면이 모델이 블록 당 32 스레드로 구성하는 것보다 효율적이지 않다고 말할 수 있습니까? 감사!32 블록의 32 개 스레드가 워프로 예약됩니까?
5
A
답변
6
아니요, 서로 다른 블록의 스레드를 동일한 워프에서 예약 할 수 없습니다. 스레드 하나만있는 스레드 블록 그리드를 만드는 경우 시스템에서 완전한 성능을 얻지 못합니다. 블록 당 32 (또는 32의 정수 배수) 스레드를 갖는 것보다 효율적입니다. 예를 들어 페르미 (Fermi) SM은 32 개의 워프 레인을 사용할 수 있습니다. 단일 스레드의 블록을 스케줄하는 경우, 주어진 시간에 32 개의 레인 중 오직 하나만 사용할 수 있습니다.
스레드에는 단일 블록 내에서 정의되는 스레드 ID (threadIdx 기본 제공 변수)가 있습니다.
C 프로그래밍 가이드의 하드웨어 멀티 스레딩 섹션에는 a formula which defines the total number of warps in a single block이 나와 있습니다.
0
추가 할 사항이 한 번 더 있습니다. 항상은 워프를 통해 발생하기 때문에 블록 당 32 개 미만의 스레드 (1,2..8,16)를 할당하더라도 워프 (32 개 스레드)에 대해 계산이 발생하고 리소스는 32 스레드가 지연됩니다 블록.
각 스레드가 한 개씩 32 개의 블록을 할당하는 경우 32X32 스레드에 대한 리소스가 정지됩니다. 가능하다면 이것을 피하십시오.
관련 문제
- 1. 차이 * 토큰 [32]과 CHAR 토큰 [32]
- 2. IA-32 |
- 3. C#의 32 비트 * 32 비트 데이터 문제
- 4. 시스템이 32 비트 또는 64 비트이든 상관없이 uint는 32 비트입니까?
- 5. 32 비트 서버 및 32/64 비트 클라이언트가있는 서브 버전
- 6. JavaFX는 32 비트 Windows에서 작동합니까? (또는 32 비트 JVM)?
- 7. 32 비트 CPU에서 Int64 구현
- 8. 힘내는 Windows에서 파일 이름에 32 개 이상의 문자를 지원합니까?
- 9. _m128 벡터의 4 개 32 비트 요소 합
- 10. 루비에서 32 개 항목을 그룹으로 구성하는 가장 좋은 방법은 무엇입니까?
- 11. C++ 64 비트 프로세스에서 32 개 비트 목표를 주입하는
- 12. Python CRC-32 비법
- 13. 32 비트 컴퓨터
- 14. C# UTF-32 ToLower
- 15. 기수 32 FFT 구현
- 16. VB.NET에 COM 32 추가
- 17. 32 비트 ApiKey/AppId?
- 18. 샤드 크기 (32 비트)?
- 19. Windows에서 32 비트 오디오?
- 20. mfc100u.dll의 32 비트 버전?
- 21. python on 32 bit
- 22. Zip의 CRC-32 필드
- 23. 32 비트 모드에서 열기
- 24. microsoft.rtc.collaboration 32 비트
- 25. --with-arch-32 =?
- 26. uint64_t 32 비트 시스템에 기록
- 27. 16 색 값을 32 색 값으로 변환하는 방법은 무엇입니까? 32 개 색상 값을 말한다으로 변환해야하는 경우 나 RGB로 설정 한
- 28. 32 비트와 64 비트 Excel 2007의 차이점
- 29. 정수 오버 플로우 IA 32
- 30. 32 비트 Qt 라이브러리를 가져와야합니다.