【发布时间】:2021-04-04 16:53:21
【问题描述】:
我需要澄清如何使用 OpenACC 在设备上映射循环。我也不确定块、扭曲和线程的作用。
如果我有这样的循环:
#pragma acc parallel loop
for(i=0; i<1024; i++){
vector[i] += 1;
}
而且我的 GPU 支持“每个块的最大线程数 = 1024”。 如何将循环并行化为块?
我的第一个想法是单个块足以处理操作,因为向量有 1024 个元素。在这种情况下,我认为该块由 1024 个线程组成,每个线程对应于具有不同索引 i 的操作vector[i] += 1;。
我对线程的理解是否正确?
我会有 32 条 32 条线的经线。他们是如何被处决的?可以同时运行吗?
【问题讨论】:
标签: multithreading gpu openacc