小编hil*_*ldy的帖子

cudaMalloc 改成异步了吗?

我在其他地方读到 cudaMalloc 将跨内核同步。(例如, cudaMalloc 会同步主机和设备吗?)但是,我刚刚测试了这段代码,根据我在可视化分析器中看到的内容,cudaMalloc 似乎没有同步。如果将 cudaFree 添加到循环中,则会同步。我正在使用 CUDA 7.5。有谁知道 cudaMalloc 是否改变了它的行为?或者我错过了一些微妙之处?非常感谢!

__global__ void slowKernel()
{
  float input = 5;
  for( int i = 0; i < 1000000; i++ ){
    input = input * .9999999;
  }
}

__global__ void fastKernel()
{
  float input = 5;
  for( int i = 0; i < 100000; i++ ){
    input = input * .9999999;
  }
}

void mallocSynchronize(){
  cudaStream_t stream1, stream2;
  cudaStreamCreate( &stream1 );
  cudaStreamCreate( &stream2 );
  slowKernel <<<1, 1, 0, …
Run Code Online (Sandbox Code Playgroud)

cuda

5
推荐指数
1
解决办法
3138
查看次数

标签 统计

cuda ×1