Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Параллельное выполнение


Автор: Свят86 16.11.2011, 15:54
Здравсвуйте.
у меня заминка с такой задачей:
есть функция дешифрования алгоритма DES взятая из dcpcrypt2 и брутфорс ключей написанный на ассемблере. необходимо распараллелить вычисления так, чтобы 
первый процессор обрабатывал брутфорс, а остальные процессоры вызывали функцию дешифрования, в которую передаются закрытый текст и ключ.

не могу понять как сформировать эту задачу, пытаюсь разобраться с  MPI, но мне в принципе без разницы каким образом это реализовать.

Автор: Свят86 17.11.2011, 09:31
модераторы, перенесите пожалуйста тему в общие вопросы.

Автор: Alca 17.11.2011, 11:01
Цитата

но мне в принципе без разницы каким образом это реализовать

если кодишь на C++ Builder, то там есть классы для работы с потоками

Автор: Свят86 17.11.2011, 12:35
это понятно, просто для этих потоков нужно сформировать задачу! и у меня это не получается...
вот код:

    ZeroMemory(szPassword, sizeof(szPassword));
        TDCP_des* Cipher = new TDCP_des(this);

        while (TRUE)
        {
                __asm
                {
                    pushad
                    mov edi,offset szPassword
                    mov ebx,offset bAlphabet
                L1: movzx eax,byte ptr [edi]
                    xlat
                    cmp al,0
                    je L3
                    mov [edi],al
                    jmp L5
                L3: xlat
                    stosb
                    jmp L1
                L5: popad
                };
            Cipher->InitStr(szPassword, __classid(TDCP_sha1));
            DecryptStr=Cipher->DecryptString(EncryptStr);
            if (DecryptStr==MessStr) break;
        };

        Cipher->Burn();
        Cipher->Free();

while (TRUE) - это первый поток (основной)
а  Cipher->InitStr(szPassword, __classid(TDCP_sha1)); и DecryptStr=Cipher->DecryptString(EncryptStr); для остальных потоков! помогите плиз с реализацией.

Автор: Alca 17.11.2011, 12:45
Если билдер, то прочти это http://forum.vingrad.ru/forum/topic-60076/view-all.html

Автор: Свят86 17.11.2011, 13:21
я читаю большую книгу по MPI, но на это уйдет куча времени, я задачу нужно решить до выходных! тут всего пары строк не хватает! 

Автор: Alca 17.11.2011, 18:25
студент?

Автор: Свят86 17.11.2011, 19:26
нет, просто нужно показать что можно из большого сервера выжать! smile  вобщем потоки походу не пойдут сюда, здесь нужно MPI использовать...

Автор: Alca 17.11.2011, 19:44
ты лучше покажи, что можно с  http://ru.wikipedia.org/wiki/CUDA выжать  smile

Добавлено @ 19:44
в топку CPU, GPU рулит

Автор: kemiisto 17.11.2011, 19:54
Alca, ну, покажи нам чего ты там нарулил.

Автор: Свят86 17.11.2011, 20:17
у меня сервер большой, CUDE до него далековато! smile)

Автор: Alca 17.11.2011, 20:53
Цитата

Alca, ну, покажи нам чего ты там нарулил.


kemiisto, ты хочешь сказать, что CPU быстрее CUDA?

Автор: Свят86 17.11.2011, 21:29
не, CUDA на много быстрее, я даже подумывал над рас предложением с использованием видях, но у меня в распоряжении мощный сервер и он сделает самую быструю видяху!

Автор: kemiisto 17.11.2011, 22:20
Цитата(Alca @  17.11.2011,  19:53 Найти цитируемый пост)
kemiisto, ты хочешь сказать, что CPU быстрее CUDA?

Твое предложение бессмысленно, т.к.
1. У человека уже есть компьютер на котором нужно посчитать быстро с множеством CPU. Не GPU.
2. У человека уже есть код C++, который отлажен на x86, а портирование на CUDA и отладка на другой архитектуре займёт туеву хучу времени.
3. Человек не знает CUDA, а изучение CUDA займёт туеву хучу времени.
4. CUDA - ограниченная технология, подходящая не для любой задачи. А уж ощутимый выигрыш можно получить не так часто.
5. CUDA - nVidia only. OpenCL хоть бы предожил.

Автор: Свят86 17.11.2011, 22:29
мне нравятся ваши рассуждения, но давайте вы объединитесь и подкините мне пару строк решающих мою проблему! smile)

Автор: Alca 17.11.2011, 22:38
Свят86, подожди

Цитата

1. У человека уже есть компьютер на котором нужно посчитать быстро с множеством CPU. Не GPU.

множество - это понятие растяжимое

Цитата

2. У человека уже есть код C++, который отлажен на x86, а портирование на CUDA и отладка на другой архитектуре займёт туеву хучу времени.

Ага, я видел этот выдернутый код  smile . Он еще хочет MPI. 
Не, он хочет чтоб за него все написали, всего пару строк

Цитата

3. Человек не знает CUDA, а изучение CUDA займёт туеву хучу времени.

Походу он ничего не знает

Цитата

4. CUDA - ограниченная технология, подходящая не для любой задачи. А уж ощутимый выигрыш можно получить не так часто.

Ну покалькулировать то можно  smile . Я видел 8-ое увеличение подсчета MD5, кажись OpenCL (4 ядра i5 против GTX 460)

Цитата

5. CUDA - nVidia only. OpenCL хоть бы предожил.

Я не против

Автор: Свят86 17.11.2011, 22:49
суммарная мощность процессоров более 500Ггц
код выдернутый, но это сама суть! я не спорю что в MPI еще не до конца разобрался, но кода там и вправду чуть чуть! строка с инициализацией,
строка с определением количества процессоров ну и вконце опрос на решение/нерешение задачи и завершение MPI! с этим все понятно, но вот в середине... 
просто по книге что у меня есть получается какой-то бред типа процессоры сами разбирают задачи! мне это немного не понятно! с потоками мы их сами вызываем, а по примеру 
в книге получается что они сами разбирают!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)