Testing 如何测试cuda程序

Testing 如何测试cuda程序,testing,cuda,Testing,Cuda,我已经为向量加法和向量乘法编写了一个cuda程序,但我不知道如何测试该程序的输出,答案/输出是否正确。是否有任何方法来测试程序的正确性,以及是否有用于cuda向量/矩阵加法/乘法的在线数据集?通用方法是编写与内核完全相同的实现,并在CPU上生成结果[金标准],并将其与GPU内核的输出进行比较。这意味着将输出阵列复制到主机并在CPU上进行比较。对于矢量加法/乘法,您可以生成一个随机数组,并在CPU和GPU(使用相同的输入数组)上生成输出,然后在CPU上进行比较。但您如何知道您的“金标准”是正确的?

我已经为向量加法和向量乘法编写了一个cuda程序,但我不知道如何测试该程序的输出,答案/输出是否正确。是否有任何方法来测试程序的正确性,以及是否有用于cuda向量/矩阵加法/乘法的在线数据集?

通用方法是编写与内核完全相同的实现,并在CPU上生成结果[金标准],并将其与GPU内核的输出进行比较。这意味着将输出阵列复制到主机并在CPU上进行比较。对于矢量加法/乘法,您可以生成一个随机数组,并在CPU和GPU(使用相同的输入数组)上生成输出,然后在CPU上进行比较。

但您如何知道您的“金标准”是正确的?这不是同一个问题吗,但是现在有两个问题而不是一个?谢谢你的建议,如果矩阵/向量的大小非常大怎么办,例如:1000000000000@talonmies通常,当我们需要更高的性能时,我们在CUDA中移植一个代码,这意味着您已经有了一个代码。在这种情况下,我建议实现金标准,因为它相当简单[vector add/multiply],在线可用,并且易于手动和编程调试。但是,您是回答(我要求您)以下问题的最佳人选:“如何确保仅使用CUDA编写的代码的准确性,而不使用金标准”: