gpt4 book ai didi

c - Cuda GPU 中的错误共享 : does it exist/similar to CPUs?

转载 作者:行者123 更新时间:2023-12-02 00:02:20 25 4
gpt4 key购买 nike

我知道在对称多处理器 (SMP) 系统中,由于每个内核中的单独缓存,可能会发生错误共享,对于以下代码:http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads

01  double sum=0.0, sum_local[NUM_THREADS];
02 #pragma omp parallel num_threads(NUM_THREADS)
03 {
04 int me = omp_get_thread_num();
05 sum_local[me] = 0.0;
06
07 #pragma omp for
08 for (i = 0; i < N; i++)
09 sum_local[me] += x[i] * y[i];
10
11 #pragma omp atomic
12 sum += sum_local[me];
13 }

所以我的问题是:
  • 错误共享主要来自这样一个事实,即通过由固定字节数组成的块访问内存,并且每个进程都有自己的缓存。这块内存是一起写入和读取的。我的理解接近事实吗?
  • GPU 中的内存访问模式如何?所有的流处理器共享一组缓存还是有单独的缓存?错误共享是否也是 GPU 计算中的一个问题?
  • 最佳答案

  • 并不是一起读取或写入缓存线,而是如果任何 CPU 写入任何字节,它都会使整个缓存线无效。
  • 取决于 GPU。至少对于某些 NVidia GPU,L1 缓存(全局内存的)不连贯,因此您还有其他问题。禁用 L1 后,您可能会在 L2 缓存中遇到问题,这是一致的。
  • 关于c - Cuda GPU 中的错误共享 : does it exist/similar to CPUs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20598496/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com