<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Qt. Запуск потоков на отдельных ядрах процессора</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html</link>
    <description>Здравствуйте!&lt;br&gt;&lt;br&gt;Пишу кое-какую софтину на Qt.&lt;br&gt;В приложении работают несколько потоков. Для повышения быстродействия&lt;br&gt;хочу запускать их на разных ядрах процессора, но не знаю как. Хотелось&lt;br&gt;бы решить проблему средствами Qt.&lt;br&gt;Если кто решал подобную задачу, подскажите, пожалуйста!&lt;br&gt;&lt;br&gt;Заранее спасибо!&lt;br&gt;</description>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (fork)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#10</link>
    <pubDate>Sat, 04 Feb 2012 22:06:04 GMT</pubDate>
    <description>&amp;gt;На процессоре с несколькими ядрами каждое новое ядро загружается вычислениями при условии, &amp;gt;что ресурсы другого ядра полностью задействованы.&lt;br&gt;&amp;gt; Если я не &lt;br&gt;&amp;gt; ошибаюсь...) &lt;br&gt;&lt;br&gt;Ошибаетесь )   &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (goodfornothing)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#9</link>
    <pubDate>Sun, 22 Jan 2012 13:14:01 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; моей проге 3 потока и обязательным условием является то, что определенные &lt;br&gt;&amp;gt;&amp;gt; 2 потока должны работать на разных ядрах? Получается, что 3 потока &lt;br&gt;&amp;gt;&amp;gt; будут случайным образом раскиданы по 2 ядрам и те потоки, которые &lt;br&gt;&amp;gt;&amp;gt; должны выполняться на разных ядрах, будут выполняться на одном ядре. Это &lt;br&gt;&amp;gt;&amp;gt; не есть хорошо( &lt;br&gt;&amp;gt; По любому, 3 потока будут случайным образом (нет, не случайным, это зависит &lt;br&gt;&amp;gt; от планировщика! слышим с галерки) раскиданы по двум ядрам. СтартанИте не &lt;br&gt;&amp;gt; QThread::idealThreadCount(), а Ваше количество потоков. А в Вашем случае, надо наверное &lt;br&gt;&amp;gt; использовать не Qt, и решение будет сильно платформенно зависимым и слишком &lt;br&gt;&amp;gt; &quot;системным&quot;, чтобы опред-е потоки запускать на опред-х ядрах.&lt;br&gt;&lt;br&gt;&quot;нет, не случайным, это зависит от планировщика!&quot;. С точки зрения программы, это процесс случайный, ведь я не могу управлять планировщиком. Каким образом будет действовать планировщик при запуске процесса, я не знаю, поэтому для меня это случайный процесс&lt;br&gt;</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (primus)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#8</link>
    <pubDate>Fri, 20 Jan 2012 15:34:12 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &quot;порождаете QThread::idealThreadCount() Ваших потоков и start()-уете их&quot;. Хотелось бы, &lt;br&gt;&amp;gt; чтобы я определял, сколько мне запустить потоков в приложении, а не &lt;br&gt;&amp;gt; функция idealThreadCount() =) Предположим, эта функция возвращает информацию о количестве &lt;br&gt;&amp;gt; потоков, которые можно параллельно запускать на имеющемся железе. Берем проц с &lt;br&gt;&amp;gt; 2 ядрами. По идее, функция вернет значение &quot;2&quot;. А если в &lt;br&gt;&amp;gt; моей проге 3 потока и обязательным условием является то, что определенные &lt;br&gt;&amp;gt; 2 потока должны работать на разных ядрах? Получается, что 3 потока &lt;br&gt;&amp;gt; будут случайным образом раскиданы по 2 ядрам и те потоки, которые &lt;br&gt;&amp;gt; должны выполняться на разных ядрах, будут выполняться на одном ядре. Это &lt;br&gt;&amp;gt; не есть хорошо( &lt;br&gt;&lt;br&gt;По любому, 3 потока будут случайным образом (нет, не случайным, это зависит от планировщика! слышим с галерки) раскиданы по двум ядрам. СтартанИте не QThread::idealThreadCount(), а Ваше количество потоков. А в Вашем случае, надо наверное использовать не Qt, и решение будет сильно </description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (goodfornothing)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#7</link>
    <pubDate>Fri, 20 Jan 2012 14:16:40 GMT</pubDate>
    <description>&amp;gt; Есть в Qt класс QThread &lt;br&gt;&amp;gt; Наследуете от него класс, выполняющий Вашу, требующую распараллеливания функцию (со всякими &lt;br&gt;&amp;gt; там QMutex-ами и т.д., если надо).&lt;br&gt;&amp;gt; Потом порождаете QThread::idealThreadCount() Ваших потоков и start()-уете их.&lt;br&gt;&amp;gt; Получается оптимальная загрузка процессоров при мультиплатформенном решении и без системного &lt;br&gt;&amp;gt; программирования.&lt;br&gt;&lt;br&gt;&quot;порождаете QThread::idealThreadCount() Ваших потоков и start()-уете их&quot;. Хотелось бы, чтобы я определял, сколько мне запустить потоков в приложении, а не функция idealThreadCount() =) Предположим, эта функция возвращает информацию о количестве потоков, которые можно параллельно запускать на имеющемся железе. Берем проц с 2 ядрами. По идее, функция вернет значение &quot;2&quot;. А если в моей проге 3 потока и обязательным условием является то, что определенные 2 потока должны работать на разных ядрах? Получается, что 3 потока будут случайным образом раскиданы по 2 ядрам и те потоки, которые должны выполняться на разных ядрах, будут выполняться на одном ядре. Это н</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (goodfornothing)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#6</link>
    <pubDate>Fri, 20 Jan 2012 13:56:09 GMT</pubDate>
    <description>&amp;gt; Я  не пойму смысл вопроса. Если приложение написано многопоточным, то оно &lt;br&gt;&amp;gt; и так будет исполнятся на разных ядрах/процессорах. На каких именно - &lt;br&gt;&amp;gt; зависит уже от системы.&lt;br&gt;&lt;br&gt;Если я не ошибаюсь, распараллеливание произойдет только в многопроцессорной системе. На процессоре с несколькими ядрами каждое новое ядро загружается вычислениями при условии, что ресурсы другого ядра полностью задействованы. Таким образом, никакой гарантии параллельного выполнения потоков на многоядерном процессоре мы не получаем. Если я не ошибаюсь...)&lt;br&gt;</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (primus)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#5</link>
    <pubDate>Fri, 20 Jan 2012 13:50:31 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; Я  не пойму смысл вопроса. Если приложение написано многопоточным, то оно &lt;br&gt;&amp;gt;&amp;gt; и так будет исполнятся на разных ядрах/процессорах. На каких именно - &lt;br&gt;&amp;gt;&amp;gt; зависит уже от системы.&lt;br&gt;&amp;gt; Не очень-то оптимистичный ответ) &lt;br&gt;&amp;gt; Поискал в нете, нашел некий класс QtConcurrent: &lt;br&gt;&amp;gt; &quot;Программы, написанные с помощью QtConcurrent, автоматически приводят количество используемых &lt;br&gt;&amp;gt; потоков в соответствие с доступным количеством процессорных ядер. Это означает, что &lt;br&gt;&amp;gt; приложения написанные сегодня, будут продолжать масштабироваться при развертывании на &lt;br&gt;&amp;gt; многоядерных системах в будущем.&quot; &lt;br&gt;&amp;gt; Кто-нибудь использовал эту штуку?&lt;br&gt;&lt;br&gt;Есть в Qt класс QThread&lt;br&gt;Наследуете от него класс, выполняющий Вашу, требующую распараллеливания функцию (со всякими там QMutex-ами и т.д., если надо).&lt;br&gt;Потом порождаете QThread::idealThreadCount() Ваших потоков и start()-уете их.&lt;br&gt;Получается оптимальная загрузка процессоров при мультиплатформенном решении и без системного программирования.&lt;br&gt;</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (goodfornothing)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#4</link>
    <pubDate>Mon, 16 Jan 2012 11:26:34 GMT</pubDate>
    <description>&amp;gt;&amp;gt; То есть, задача на уровне пользователя не решается???&lt;br&gt;&amp;gt; Решается, но тут уже системное программирование не на Qt.&lt;br&gt;&amp;gt; Я  не пойму смысл вопроса. Если приложение написано многопоточным, то оно &lt;br&gt;&amp;gt; и так будет исполнятся на разных ядрах/процессорах. На каких именно - &lt;br&gt;&amp;gt; зависит уже от системы.&lt;br&gt;&lt;br&gt;Не очень-то оптимистичный ответ)&lt;br&gt;Поискал в нете, нашел некий класс QtConcurrent:&lt;br&gt;&lt;br&gt;&quot;Программы, написанные с помощью QtConcurrent, автоматически приводят количество используемых потоков в соответствие с доступным количеством процессорных ядер. Это означает, что приложения написанные сегодня, будут продолжать масштабироваться при развертывании на многоядерных системах в будущем.&quot;&lt;br&gt;&lt;br&gt;Кто-нибудь использовал эту штуку?&lt;br&gt;</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (gfh1gfh1)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#3</link>
    <pubDate>Mon, 16 Jan 2012 10:56:04 GMT</pubDate>
    <description>&amp;gt; То есть, задача на уровне пользователя не решается???&lt;br&gt;&lt;br&gt;Решается, но тут уже системное программирование не на Qt.&lt;br&gt;Я  не пойму смысл вопроса. Если приложение написано многопоточным, то оно и так будет исполнятся на разных ядрах/процессорах. На каких именно - зависит уже от системы.&lt;br&gt;</description>
</item>

<item>
    <title>Qt. Запуск потоков на отдельных ядрах процессора (goodfornothing)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9357.html#2</link>
    <pubDate>Mon, 16 Jan 2012 10:02:29 GMT</pubDate>
    <description>&amp;gt; Распределением ресурсов занимается ядро системы/планировщик задач.&lt;br&gt;&lt;br&gt;То есть, задача на уровне пользователя не решается???&lt;br&gt;</description>
</item>

</channel>
</rss>
