小编ray*_*ray的帖子

cpu 代码延迟了 cuda 内核执行

我无法理解以下公认的非常简单的代码,这是一个更复杂的项目的简化版本,我现在花了很多时间在这个项目上。这段代码将在大约 2000 毫秒内在我的系统上运行。但是,当我启用该线路使 cpu 进入睡眠状态 500 毫秒时,该程序总共将运行更长的时间,大约为 2500 毫秒。

我无法理解这如何符合cuda 内核相对于主机异步执行的声明?

在 Visual Studio 2019 上运行 cuda 11.1

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <chrono>
#include <iostream>
#include <numeric>
#include <thread>

__global__ void kernel(double* val, int siz) {
    for (int i = 0; i < siz; i++) val[i] = sqrt(val[i]); //calculate square root for every value in array
}

int main() {
    auto t1 = std::chrono::high_resolution_clock::now();

    const int siz = 1'000'000; //array length
    double* val = new double[siz];
    std::iota(val, …
Run Code Online (Sandbox Code Playgroud)

c++ cuda

2
推荐指数
1
解决办法
51
查看次数

标签 统计

c++ ×1

cuda ×1