我正在尝试用 Julia 编写有关 GPU 计算的教程。在演示简单的矩阵运算时,一切都很顺利,GPU 击败了单线程和多线程的等效项。
\n现在我试图提出一个更复杂的例子,涉及模拟数据的生成X和一些估计的计算\xce\xb2,而这就是事情变得奇怪的时候。无论我做什么,GPU (Nvidia RTX 2070) 模拟的性能都比其多线程 (20) 模拟性能差约 20 倍。
以下是 MRE 的一些代码:
\n# Meta-simulation constants =================================\nreplications = 10\nn = 100\np = 2\n\xce\xbc = rand(replications)\n\n# Multi-threaded simulations =================================\n\xce\xb2_par = fill(0., (p, replications))\nfunction parsim()\n Threads.@threads for r in 1:replications\n X = rand(Float16, (n, p)) .* \xce\xbc[r]; # Sample data\n \xce\xb2 = sum(X .^ 2, dims = 1); # Estimate parameters\n \xce\xb2_par[:, r] = \xce\xb2\n end\nend\n\n# GPU simulations =================================\nusing …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenCV和GPU在视频中进行实时人/人/事实检测.我需要用于视频处理和人工检测的OpenCv代码.请帮助我使用Opencv或任何其他编程在视频中找到人工检测的代码.非常感谢你的时间.
如何使这个函数的for循环使用GPU与OpenCL?
public static double[] Calculate(double[] num, int period)
{
var final = new double[num.Length];
double sum = num[0];
double coeff = 2.0 / (1.0 + period);
for (int i = 0; i < num.Length; i++)
{
sum += coeff * (num[i] - sum);
final[i] = sum;
}
return final;
}
Run Code Online (Sandbox Code Playgroud) 我尝试学习CUDA。它与 C 非常相似。我尝试在我的 GPU 中运行一些代码。但我认为它并不快,我认为这与我的代码有关。我想只有我 __global__ void func(ull* num1, ull* num2, ull* sum)在 GPU 上工作。这就是我要的。但它并不快。我该怎么办。
typedef uint64_t ull;
#define E1 1
#define E2 5000000000000000
__global__ void func(ull* num1, ull* num2, ull* sum)
{
for (ull i = *num1; i <= *num2; i++)
{
sum[0] += i;
}
}
int main()
{
ull n1 = E1;
ull n2 = E2;
ull sum = 0;
ull* d_n1;
ull* d_n2;
ull* d_sum;
cudaMalloc(&d_n1, sizeof(ull));
cudaMalloc(&d_n2, sizeof(ull));
cudaMalloc(&d_sum, sizeof(ull));
cudaMemcpy(d_n1, &n1, sizeof(ull), cudaMemcpyHostToDevice); …Run Code Online (Sandbox Code Playgroud)