我想说我在 C 方面的知识是公平的,我希望扩展一个程序来增强我对并行编程的了解。
它本质上是我所指的程序是一个蛮力生成器,通过密码递增,例如从 0000 .. 特定字符集的 zzzz: 需要 crypt(3) 的蛮力代码帮助
该算法概述如下(归功于 Jerome)
int len = 3;
char letters[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int nbletters = sizeof(letters)-1;
int main() {
int i, entry[len];
for(i=0 ; i<len ; i++) entry[i] = 0;
do {
for(i=0 ; i<len ; i++) putchar(letters[entry[i]]);
putchar('\n');
for(i=0 ; i<len && ++entry[i] == nbletters; i++) entry[i] = 0;
} while(i<len);
}
您会以何种合乎逻辑的方式说这可以通过多线程来扩展?
CUDA 是一个愚蠢但简单的解决方案。我听说过 OpenMP,在我的书中它看起来像是一个很好的解决方案,您认为如何将其拆分以受益于我的计算机的多个内核?即核心 1 计算 aaaa..ffff,核心 2 计算 ffff...zzzz,这是唯一有意义的方法吗?