Объединить несколько ядер в единую обработку ядра, на Linux, возможно? - PullRequest
3 голосов
/ 23 марта 2011

Я думаю о идее, когда медленное приложение должно работать на полной производительности на процессоре Core i7. Существует ли какое-либо программное обеспечение / утилита linux для объединения всех ядер для этого приложения, чтобы оно могло работать с более высокой производительностью, чем при использовании только 1 ядра?

приложение - readpst, и оно использует только 1 ядро ​​для обработки PST-файлов outlook.

Это нормально, если я не могу использовать все ядра, все будет хорошо, если можно использовать как 3 ядра.

возможно? или я пьян?

Я перепишу его, чтобы использовать несколько ядер, если мои знания C в области разветвления хороши.

Ответы [ 6 ]

6 голосов
/ 23 марта 2011

Процессоры на базе Intel Nehalem (i7, i5, i3) уже делают это в определенной степени.

Используя режим Turbo Boost, когда используется одно ядро, он автоматически разгоняется до тех пор, покапределы мощности и температуры достигнуты.

Более новые версии i7 (чипы 2K) делают это еще лучше.

Читайте это и это .

4 голосов
/ 23 июня 2012

То, что вы ищете, называется «Single System Image» или SSI. В интернете мало информации о людях, занимающихся такими вещами, поскольку они, как правило, зарезервированы для суперкомпьютеров (и, возможно, серверов).

http://en.wikipedia.org/wiki/Single_system_image

4 голосов
/ 23 марта 2011

«Возможно? Или я пьян?»

Ты пьян! Если бы это было легко в общем случае, Intel уже встроила бы его в процессоры!

2 голосов
/ 23 марта 2011

Нет, приложение должно быть многопоточным, чтобы использовать более одного ядра. Вы, конечно, можете написать многопоточную версию этого приложения, если хотите, но может быть нелегко убедиться, что разные потоки не мешают друг другу.

1 голос
/ 06 марта 2018

Такое приложение недоступно, но возможно.

Когда ОС будет работать в виртуальной машине, тогда гипервизор может использовать несколько процессоров, чтобы определить, какой код процессора может выполняться параллельно, и не требуется выполнять их последовательно, а затем они могут быть фактически выполнены с несколькими другими ЦП сразу,

В следующую секунду, когда операционные процессоры бездействуют (поскольку они закончили свою работу быстрее, диспетчер может предоставить им новое, они могут начать вычислять следующую секунду инструкций.

Причина, по которой нам нужно сделать это на уровне гипервизора, а не в ОС, заключается в том, что из-за блокировки памяти это невозможно.

1 голос
/ 23 марта 2011

Если вы хотите облегчить работу нескольких ядер, вы можете написать многопоточную версию вашей программы. Но только в том случае, если он на самом деле распараллелен. Вы сказали, что читаете из pst-файлов, стараясь не столкнуться с узкими местами ввода-вывода.

Отличная библиотека для работы с потоками, мьютексами, семафорами и т. Д. POSIX Threads .

...