Я бы сказал, что мои знания в C честны, и я хотел бы расширить программу, чтобы расширить мои знания в области параллельного программирования.
Это, по сути, программа, к которой я обращаюсь, это генератор грубой силы, который увеличивает число паролей, например, от 0000 .. zzzz определенного набора символов:
Нужна помощь с кодом грубой силы для склепа (3)
Алгоритм описан ниже (благодарю Джерома за это)
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, это единственный метод, который имеет смысл с этим?