免費開始練習
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)。當我們想知道某個房間在整條街上的總序號時,邏輯便是「目前所在的大樓編號」乘以「每棟樓有多少房間」,再加上「在該棟樓裡的房間編號」。

▼ 還有更多解析內容

🏷️ 相關主題

巨量資料分析流程與資料品質管理
查看更多「[統計資訊] 統計學、巨量資料概論」的主題分類考古題