clock()CUDA中的时钟测量是什么clock64()?
根据CUDA 文档,时钟是“每多处理器计数器”。根据我的理解,这是指主 GPU 时钟(而不是着色器时钟)。
但是,当我测量时钟计数并使用主 GPU 时钟频率将其转换为时间值时,我得到的结果是实际值的两倍(我使用 cuda 事件使用主机代码的内核执行时间来测量实际值)。这表明clock()返回着色器时钟频率而不是主 GPU 时钟。
我该如何解决这个困惑?
编辑:我通过将从 cudaGetDeviceProperties 获得的时钟速率除以 2 来计算主 GPU 时钟频率。据我了解cudaGetDeviceProperties给出的值是着色器时钟频率。
我试图找到一个动态分配的数组的fft.使用输入数组从主机复制到设备cudaMemcpy2D.然后获取fft(cufftExecR2C)并将结果从设备复制回主机.
所以我最初的问题是如何在fft中使用音高信息.然后我在这里找到了答案 - CUFFT:如何计算投手指针的fft?
但不幸的是它不起作用.我得到的结果是垃圾值.以下是我的代码.
#define NRANK 2
#define BATCH 10
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <cufft.h>
#include <stdio.h>
#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;
const size_t NX = 4;
const size_t NY = 6;
int main()
{
// Input array (static) - host side
float h_in_data_static[NX][NY] ={
{0.7943 , 0.6020 , 0.7482 , 0.9133 , 0.9961 , 0.9261},
{0.3112 , 0.2630 , 0.4505 , 0.1524 , 0.0782 , 0.1782},
{0.5285 , 0.6541 , 0.0838 …Run Code Online (Sandbox Code Playgroud)