Skip to content

Commit

Permalink
Merge pull request #27 from andrechalom/master
Browse files Browse the repository at this point in the history
Switch para compilação com/sem paralelismo
  • Loading branch information
awade2 committed Oct 16, 2014
2 parents 2e35727 + 7e45d55 commit 2a21f33
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion TWoLife.R
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# Os passos abaixo foram adaptados de http://users.stat.umn.edu/~geyer/rc/

Sys.setenv("PKG_CPPFLAGS" = "-fopenmp") # liga biblioteca de paralelismo
Sys.setenv("PKG_CPPFLAGS" = "-fopenmp -DPARALLEL") # liga biblioteca de paralelismo
system("rm TWoLife.{so,o}") #limpa sources velhos
system ("R CMD SHLIB TWoLife.cpp") ## compila no R
dyn.load("TWoLife.so") ## carrega os source resultantes como biblioteca dinamica no R
Expand Down
4 changes: 3 additions & 1 deletion individuo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class individuo
/** Identificador único de cada indivíduo */
const unsigned long id;
/** Identificador máximo já usado */
static unsigned long MAXID;
static unsigned long MAXID;
/** Posição X da localização do indivíduo */
double x;
/** Posição Y da localização do indivíduo */
Expand Down Expand Up @@ -82,6 +82,8 @@ class individuo
* */
individuo(/** Individuo pai */ const individuo& rhs);

/** Reinicia o contador de indivíduos **/
static void reset_id() {MAXID = 0;}
/** Retorna o identificador único deste indivíduo */
const unsigned long get_id() const {return this->id;}
/** Atualiza a lista de vizinhos deste indivíduo. Deve ser chamada a cada passo de tempo pela \ref paisagem */
Expand Down
7 changes: 5 additions & 2 deletions paisagem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ void paisagem::populating(double raio, int N, double angulo_visada, double passo
double taxa_morte, double incl_b, double incl_d, double death_m,
int dens_type)
{
individuo::reset_id(); // reinicia o contador de id dos individuos
// Considerar diferentes possibilidades de posições iniciais. TBI.
for(int i=0; i<this->N; i++)
{
Expand Down Expand Up @@ -65,8 +66,10 @@ void paisagem::update()
{
if(this->popIndividuos.size()>0)
{
// Este for loop pode ser paralelizado, pois o que acontece com cada individuo eh independente
#pragma omp parallel for
// Este for loop pode ser paralelizado, pois o que acontece com cada individuo eh independente
#ifdef PARALLEL
#pragma omp parallel for
#endif
for(unsigned int i=0; i<this->popIndividuos.size(); i++)
{
this->atualiza_vizinhos(this->popIndividuos[i]);//atualiza os vizinhos
Expand Down

0 comments on commit 2a21f33

Please sign in to comment.