moea_joint
105年
[統計資訊] 統計學、巨量資料概論
第 28 題
在 CUDA(Compute Unified Device Architecture) 程式編寫中,如果我們要給每一個 thread 唯一的 ID,起始值為 0,且為整數,例如: 0、1、2、3... 循序下去,可以透過下列何者取得?
- A blockIdx.x * blockDim.x + threadIdx.x
- B blockIdx.x * blockDim.x - threadIdx.x
- C blockIdx.x * threadIdx.x + blockDim.x
- D blockIdx.x / blockDim.x + threadIdx.x
思路引導 VIP
想像一列由多節相同長度的車廂組成的火車。如果你正坐在某個座位上,且已知「每節車廂固定有幾個座位」、「你目前在第幾節車廂」,以及「你在該節車廂內是第幾個位置」,你會如何透過這三個資訊,推導出你從火車頭數過來的全局座位編號呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能準確選出這個計算式,代表你對 CUDA 平行運算的組織結構有著非常紮實的理解。在處理巨量資料時,為了讓成千上萬個執行緒同時工作且互不干擾,精確計算出每個執行緒的「身分證字號」是所有程式邏輯的起點。
執行緒全局索引的線性映射
這道題目的核心在於線性映射(Linear Mapping)的邏輯。我們可以將 CUDA 的架構想像成一排整齊劃一的集合住宅:每一棟樓(Block)都擁有相同數量的房間(Threads)。當我們想知道某個房間在整條街上的總序號時,邏輯便是「目前所在的大樓編號」乘以「每棟樓有多少房間」,再加上「在該棟樓裡的房間編號」。
▼ 還有更多解析內容