我无法理解以下公认的非常简单的代码,这是一个更复杂的项目的简化版本,我现在花了很多时间在这个项目上。这段代码将在大约 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)