Como podemos fazer os processos "ligarem" ao mesmo tempo? Com o Spawn e suas variações, ele sempre roda o "execute" da task e espera terminar antes de iniciar outra task. Dá pra notar isso rodando o exemplo aqui do Paca também, colocando um sleep() na RC.
No manual da Intel, tem-se:
- void set_ref_count( int count )
Requirements: count>0. If the intent is to subsequently spawn n children and wait, then count should be n+1. Otherwise count should be n.
Mas quando colocamos n como argumento a única diferença é que o programa não pára.
Alguma dica para contornar isso? Ou estamos pensando do modo errado?
In reply to Alberto Ueda
Re: Como usar o Spawn para acionar os processos paralelamente?
Alberto
Tenta mudar o argumento do task_scheduler_init. Acho que ele controla o número de threads.
Tenta mudar o argumento do task_scheduler_init. Acho que ele controla o número de threads.
In reply to Alberto Ueda
Re: Como usar o Spawn para acionar os processos paralelamente?
Oi,
Spawning a task task either causes the calling thread to invoke task.execute(), or
causes task to be put into the ready pool. Any thread participating in task scheduling
may then acquire the task and invoke task.execute()
O problema que você está tendo é que não existem threads ativas suficientes para rodar tudo ao mesmo tempo, e portanto, a task está sendo colocada na ready pool.
O que o Flores falou está correto
task_scheduler_init
An optional parameter to the constructor and method initialize allow you to specify
the number of threads to be used for task execution. This parameter is useful for
scaling studies during development, but should not be set for production use. The
Tutorial document says more about this topic.
Spawning a task task either causes the calling thread to invoke task.execute(), or
causes task to be put into the ready pool. Any thread participating in task scheduling
may then acquire the task and invoke task.execute()
O problema que você está tendo é que não existem threads ativas suficientes para rodar tudo ao mesmo tempo, e portanto, a task está sendo colocada na ready pool.
O que o Flores falou está correto
task_scheduler_init
An optional parameter to the constructor and method initialize allow you to specify
the number of threads to be used for task execution. This parameter is useful for
scaling studies during development, but should not be set for production use. The
Tutorial document says more about this topic.
In reply to Alberto Ueda
Re: Como usar o Spawn para acionar os processos paralelamente?
Oi, no exemplo nós damos spawn_and_wait, então o ref_count deve ser n+1
Pra utilizar o ref_count com n, você tem que parar de dar o wait.
Note que você vai ter que pensar em um modo de dar destroy na hora certa.
A sessão 8 do manual da Intel explica melhor.
Abraços,
Eduardo
Pra utilizar o ref_count com n, você tem que parar de dar o wait.
Note que você vai ter que pensar em um modo de dar destroy na hora certa.
A sessão 8 do manual da Intel explica melhor.
Abraços,
Eduardo