tbb

n-bodies: a parallel TBB solution: parallel code with parallel_invoke: will it run faster?

Earlier in the month I fleshed out a spatially arranged subdivision method I learned from Matteo Frigo but didn’t have time to actually run it and compare against my baselines.  And in the meantime my test machine has been regrooved into a Windows 7 box, so my first order of business is to retest my baselines.  I reran the serial algorithm a few times and averaged the results.  While the raw numbers (using the same compiler and machine but jus

Advance warning, UFO invasion expected at GDCeu'10

Last year, exhilarated by the energy at the Evoke demoparty, I had been putting together a task-scheduler suitable for demoscene intros, managing to fit inside a 16K executable graphics, music and parallelism (which makes me qualify as scener-wanabee, I guess). nulstein, the resulting project, is documented in my "Do-it-yourself Game Task Scheduling" article, with full source code available.

n-bodies: a parallel TBB solution: parallel code: balanced recursive parallelism with parallel_invoke

Last time, after struggling with different lock configurations to reduce synchronization overhead managing the interactions of n-squared bodies, I changed perspectives on the problem by spatially representing the interactions between all the bodies and (re-)discovering in that view a means to group the interactions so that independent threads could work together without having to worry about locking the data.

n-bodies: a parallel TBB solution: parallel code: a fresh look using recursive parallelism

When last I had a chance to play with this code, I experimented with using multiple locks to enable multiple simultaneous (and disjoint) interactions between pairs of bodies.  It helped but performance still didn’t cross the base line using only one thread.  Overhead in the loop could be reduced by using only one scoped lock instead of two, but it would require an array of locks indexed by i, and j.

Intel® TBB 3.0 в Intel® Manycore Testing Lab

Несколько недель назад у меня появилась возможность поработать на 32-х ядерном сервере лаборатории Manycore Testing Lab (MTL), в то время, когда принимались заявки на машинное время и академическое сообщество не успело загрузить своими задачами все серверы.  Использование лаборатории бесплатно для академического сообщества (Intel Academic community). Но, конечно, есть некоторые ограничения. Информацию и инструкции о серверах и доступе можно найти на странице проекта MTL  /en-us/.

n-bodies: a parallel TBB solution: parallel code: spreading the “fix” around

Last time I was able to make the n-bodies acceleration code at least thread safe by employing a scoped lock, at a disastrous cost in performance.  If you think about it, it’s a bad way to manage the eight HW threads my test machine has available.  The obvious alternative is to have a lock per body-any thread needing to adjust a pair of bodies would need to acquire each body’s lock before proceeding.  That’s more locking overhead than before-twice as many locks-b

TBB 3.0 task scheduler improves composability of TBB based solutions. Part 2.

Master threads isolation described in the first part of the blog was not the only change in the TBB 3.0 scheduler ameliorating composability of the code parallelized with TBB. Another tightening in the scheduler guarantees improves a popular usage model described in the TBB Reference Manual as “Letting main thread work while child tasks run”. Here is a short example of what it looks like:


Весенний выпуск Intel® Threading Building Blocks

На первой майской неделе я в свои неполных 37 с удивлением осознал, что люблю это время года :) Это просто волшебство какое-то - за один-два тёплых дня всё вокруг позеленело, неожиданно запахло черёмухой, вскоре подтянулись с белоснежными цветами прочие деревья и кусты, и вот мир вокруг преобразился.

К чему эти банальности? :) Да просто так; захотелось поделиться хорошим настроением, пока это волшебство не кончилось.

Traversing concurrent_hash_map concurrently

People keep asking how to traverse tbb::concurrent_hash_map concurrently with other operations. But it wouldn’t be worth the blog if there was not any problem. The Reference clearly states that:
Concurrent operations (count, find, insert, and erase) invalidate any existing iterators that point into the table, An exception to this rule is that count and find do not invalidate iterators if no insertions or erasures have occurred after the most recent call to method rehash.

页面

订阅 tbb