piLaboratory / TWoLife

A C++ library for agent-based simulations of demography in heterogeneous landscapes
3 stars 6 forks source link

Integração por Rcpp? #15

Open andrechalom opened 10 years ago

andrechalom commented 10 years ago

Precisamos verificar se é possível e desejável fazer a integração do código CPP diretamente com R usando o pacote Rcpp (ao invés do "extern C" que estamos usando)

andrechalom commented 10 years ago

OK, de uma olhada breve, esse issue se desdobra nas seguintes questões:

Compilação independente de plataforma?

A compilação do código c++ precisa indicar flags para o compilador a respeito de onde o Rcpp está instalado (assim como já estamos indicando o "-fopenmp", mas ainda não encontrei uma forma segura de passar essas informações.

Uso de vectors

O c++ tem estruturas muitos melhores do que o c para trabalhar com vetores, por exemplo vector (Já estamos usando um vector de indivíduos, por exemplo, mas podemos passar a usar um vector para tudo o que entra e sai pela interface R, como a paisagem e localização dos indivíduos).

Uso das funções do R

Estamos usando runif e rexp; aparentemente o Rcpp tem uma forma própria de gerenciar essas chamadas de dentro do C++.

Adaptação da chamada R -> C++

Finalmente, precisamos transformar a chamada da função TWoLife para usar SEXP ao invés de doubles, ints, etc. Essa deve ser a parte fácil (:

piklprado commented 10 years ago

Em nossa reunião ainda não tínhamos certeza se o trabalho valeria à pena. Agora que vc tem uma ideia melhor do trampo, tem também se vale tocar adiante?

andrechalom commented 10 years ago

Olha, a vantagem maior de usar Rcpp é que a gente pode usar a Standard Template Library no código inteiro. Isso quer dizer: nada de ficar alocando memória na mão, nada de ficar se preocupando se paisagem[DIM][DIM] pode ser declarado estaticamente, e a gente poderia (teoricamente pq eu ainda n consegui) usar tipos de dados com "sabor de R" no código C, como List. É um ganho considerável, mas envolve repensar um bocado de coisas.

piklprado commented 10 years ago

Na sua avaliação estas vantagens colocariam este enhancement em qual prioridade?

andrechalom commented 10 years ago

Estou marcando essa issue pra reunião presencial. Acho que precisamos discutir as vantagens e desvantagens com o time.

andrechalom commented 10 years ago

Enquanto isso... http://dirk.eddelbuettel.com/blog/2014/07/16/#introducing_rcppparallel

piklprado commented 10 years ago

Ok, um ponto de pauta para a próxima reunião. Quanto tempo de presencial vc estima para batermos o martleo e fecharmos este issue?

awade2 commented 10 years ago

Pessoal, estou meio perdido com esse issue. Não entendo o suficiente para dar uma opinião. Sugiro que se possível, na reunião presencial o Chalom faça uma prévia do problema em questão. 1) Não entendi a questão do inline 2) Não entendo as implicações das mudanças no tópico Udo das funções em R. 3) Não entendi o ultimo tópico. Não haverá mais doubles e ints no código?

Estou me perguntando até que ponto vale a pena mudarmos toda a estrutura que criamos até agora. Qual é o ganho real que teremos com essa mudança? Caso, não seja grande, acho melhor reduzir o nível de prioridade deste issue.

piklprado commented 10 years ago

Pra mim na primeira reunião presencial temos que ler o material que o Chalom enviou e pedir a ele que apresente brevemente pros e contras, for dummies.

awade2 commented 10 years ago

Existe algum tópico em que agendamos as reuniões? Se não, quando podemos marcar? Por mim qualquer dia vale.

piklprado commented 10 years ago

Quando acumularmos indicações de pressenciais o suficiente para uma tarde chamamos uma reunião, q tal?