gpt4 book ai didi

C++ 到 Cuda 转换/字符串生成和比较

转载 作者:行者123 更新时间:2023-11-30 04:35:39 29 4
gpt4 key购买 nike

所以我在一个基础的高中编码类。我们不得不想出一个我们的学期项目。我选择了将我的想法和应用程序作为基础在传统代码中没有使用。这提出了使用的想法CUDA。我会的最好的方法之一知道比较传统的速度方法与非常规是字符串生成和比较。一可以证明这一代人和传统CPU的匹配速度生成定时器和输出。和那么你可以显示增加(或降低)GPU 的速度和输出处理中。

我写了这段 C++ 代码来生成输入到的随机字符一个字符数组,然后匹配它数组到一个预定的字符串。然而像大多数 CPU 编程一样相对于图形处理器编程。我看过CUDAAPI,找不到可能会把我带到右边我想做的事情的方向。

以下是我用 C++ 编写的代码,如果有人可以指出我诸如a之类的东西的方向我可以的随机数生成器使用 ASCII 代码转换为字符,那太好了。

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

int sLength = 0;
int count = 0;
int stop = 0;
int maxValue = 0;
string inString = "aB1@";
static const char alphanum[] =
"0123456789"
"!@#$%^&*"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";

int stringLength = sizeof(alphanum) - 1;

char genRandom()
{
return alphanum[rand() % stringLength];
}

int main()
{
cout << "Length of string to match?" << endl;
cin >> sLength;
string sMatch(sLength, ' ');
while(true)
{
for (int x = 0; x < sLength; x++)
{
sMatch[x] = genRandom();
//cout << sMatch[x];
count++;
if (count == 2147000000)
{
count == 0;
maxValue++;
}
}
if (sMatch == inString)
{
cout << "It took " << count + (maxValue*2147000000) << " randomly generated characters to match the strings." << endl;
cin >> stop;
}
//cout << endl;
}

}

最佳答案

如果您想使用 CUDA 实现伪随机数生成器,请查看 over here .如果你想从一组预先确定的字符中生成 char,你可以将所有可能的 char 放入该数组并创建一个随机索引(就像你正在做的那样现在)。

但我认为使用蛮力进行比较可能更有值(value)。因此,您可以调整您的程序,使其不再尝试随机字符串,而是以任何有意义的顺序逐个尝试字符串。

然后,另一方面,您可以使用 CUDA 在 GPU 上实现暴力破解。这可能很棘手,因为您可能希望在其中一个找到解决方案后立即停止所有 CUDA 线程。我可以通过以下方式想象使用 CUDA 的暴力破解过程:一个线程尝试 aa 作为前两个字母并暴力破解所有后续数字,下一个线程首先尝试 ab两个字母和暴力破解所有后续数字,下一个线程尝试将 ac 作为前两个字母并暴力破解所有后续数字,依此类推。所有这些线程并行运行。当然,您可以改变预定 char 的数量,例如第一个线程尝试 aaaa,第二个线程尝试 aaab。然后,您可以比较不同的输入值。

无论如何,如果您从未接触过 CUDA,我推荐 vector addition sample ,一个非常基本的 CUDA 示例,可以很好地帮助您基本了解 CUDA 的运行情况。此外,您应该阅读 CUDA programming guide让自己熟悉 CUDA 的概念,即包含线程网格的线程 block 网格。一旦理解了这一点,我认为 CUDA 如何组织内容就会变得更加清晰。简而言之,在 CUDA 中,您应该用一次执行多次的内核替换循环。

关于C++ 到 Cuda 转换/字符串生成和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094013/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com