New openMP development for test cases
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1489 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
0369405646
commit
7a8ab5fb50
6 changed files with 118 additions and 253 deletions
|
|
@ -25,6 +25,7 @@
|
||||||
#include <likelihoodcalculator.h>
|
#include <likelihoodcalculator.h>
|
||||||
//#include <peo>
|
//#include <peo>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <utils.h>
|
||||||
|
|
||||||
extern ProbMatrixContainer *probmatrixs_ptr;
|
extern ProbMatrixContainer *probmatrixs_ptr;
|
||||||
|
|
||||||
|
|
@ -58,4 +59,32 @@ private:
|
||||||
ParsimonyCalculator &parseval;
|
ParsimonyCalculator &parseval;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class PhyloLikelihoodTimeEval : public moeoEvalFunc < PhyloMOEO >
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
PhyloLikelihoodTimeEval( LikelihoodCalculator &y): likeval(y) { }
|
||||||
|
|
||||||
|
void operator () (PhyloMOEO & _sol)
|
||||||
|
{
|
||||||
|
ObjectiveVector objVec;
|
||||||
|
likeval.set_tree(_sol.get_tree());
|
||||||
|
struct timeval start;
|
||||||
|
gettimeofday(&start,NULL);
|
||||||
|
|
||||||
|
objVec[0] = -likeval.calculate_likelihood();
|
||||||
|
struct timeval end;
|
||||||
|
gettimeofday(&end,NULL);
|
||||||
|
|
||||||
|
print_elapsed_time_short(&start,&end);
|
||||||
|
_sol.objectiveVector(objVec);
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
LikelihoodCalculator &likeval;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -241,55 +241,6 @@ double LikelihoodCalculator::calculate_likelihood_exp(edge focus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// double LikelihoodCalculator::calculate_all_likelihoods()
|
|
||||||
// {
|
|
||||||
// oldroot = invalid_node;
|
|
||||||
// graph::edge_iterator it = tree_ptr->TREE.edges_begin();
|
|
||||||
// graph::edge_iterator it_end = tree_ptr->TREE.edges_end();
|
|
||||||
// while(it != it_end)
|
|
||||||
// {
|
|
||||||
//
|
|
||||||
// // select a new root
|
|
||||||
// bfocus = *it;
|
|
||||||
// a = tree_ptr->istaxon(bfocus.target()) ? bfocus.source() : bfocus.target();
|
|
||||||
// b = bfocus.opposite(a);
|
|
||||||
//
|
|
||||||
// for(int i=0; i< nrates; i++)
|
|
||||||
// {
|
|
||||||
// double len = tree_ptr->get_branch_length(bfocus)*rates_prob[i];
|
|
||||||
// len = len < BL_MIN ? BL_MIN : len;
|
|
||||||
// ProbMatrix &p = (*probmatrixs)[ len];
|
|
||||||
// prob[i] = p.p;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // make the new tree
|
|
||||||
// tree_ptr->convert_graph_to_tree(a, NULL);
|
|
||||||
//
|
|
||||||
// if( oldroot!=invalid_node)
|
|
||||||
// {
|
|
||||||
// update_partials(); //cj( oldroot, a, *it);
|
|
||||||
// cout << "likelihood ..." << sum_site_liks() <<endl;
|
|
||||||
// }
|
|
||||||
// else { //first iteration
|
|
||||||
// init_partials();
|
|
||||||
// calculate_partials( a, &b);
|
|
||||||
// calculate_partials( b, &a);
|
|
||||||
// cout << "likelihood ..." << sum_site_liks() << endl;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// for(int i=0; i< nrates; i++)
|
|
||||||
// {
|
|
||||||
// double factor = rates_prob[i];
|
|
||||||
// double len = tree_ptr->get_branch_length(bfocus);
|
|
||||||
// len = len < BL_MIN ? BL_MIN : len;
|
|
||||||
// probmatrixs->change_matrix( len*factor, tree_ptr->get_branch_length(bfocus)*factor);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// oldroot = a;
|
|
||||||
// ++it;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
void LikelihoodCalculator::update_partials() //node *oldroot, node newroot, edge newedge)
|
void LikelihoodCalculator::update_partials() //node *oldroot, node newroot, edge newedge)
|
||||||
{
|
{
|
||||||
|
|
@ -334,7 +285,6 @@ void LikelihoodCalculator::recalculate_cj(node n, node father)
|
||||||
|
|
||||||
double LikelihoodCalculator::calculate_likelihood()
|
double LikelihoodCalculator::calculate_likelihood()
|
||||||
{
|
{
|
||||||
|
|
||||||
double lik;
|
double lik;
|
||||||
|
|
||||||
// pthread_t threads[2]; /* holds thread info */
|
// pthread_t threads[2]; /* holds thread info */
|
||||||
|
|
@ -360,29 +310,16 @@ double LikelihoodCalculator::calculate_likelihood()
|
||||||
for(int i=0; i<2; i++)
|
for(int i=0; i<2; i++)
|
||||||
pthread_join(threads[i],NULL);*/
|
pthread_join(threads[i],NULL);*/
|
||||||
//cout << "calculando partials..." << endl;
|
//cout << "calculando partials..." << endl;
|
||||||
struct timeval tempo1, tempo2, result;
|
struct timeval start;
|
||||||
gettimeofday(&tempo1, NULL);
|
gettimeofday(&start,NULL);
|
||||||
calculate_partials( a, &b);
|
calculate_partials( a, &b);
|
||||||
calculate_partials( b, &a);
|
calculate_partials( b, &a);
|
||||||
//cout << "somando..." << endl;
|
//cout << "somando..." << endl;
|
||||||
// sum all partials
|
// sum all partials
|
||||||
lik = sum_site_liks();
|
lik = sum_site_liks();
|
||||||
gettimeofday(&tempo2, NULL);
|
struct timeval end;
|
||||||
timeval_subtract(&result,&tempo2,&tempo1);
|
gettimeofday(&end,NULL);
|
||||||
long remainder = result.tv_sec % 3600;
|
print_elapsed_time_short(&start, &end);
|
||||||
long hours = (result.tv_sec - remainder)/3600;
|
|
||||||
long seconds = remainder % 60;
|
|
||||||
long minutes = (remainder - seconds) / 60;
|
|
||||||
cout << "Execution time : ";
|
|
||||||
cout.width(3);
|
|
||||||
cout.fill(' ');
|
|
||||||
cout << hours << ":";
|
|
||||||
cout.width(2);
|
|
||||||
cout.fill('0');
|
|
||||||
cout << minutes << ":";
|
|
||||||
cout.width(2);
|
|
||||||
cout.fill('0');
|
|
||||||
cout << seconds << "." << result.tv_usec << "(" << result.tv_sec << ")" << endl;
|
|
||||||
return lik;
|
return lik;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -402,12 +339,10 @@ double LikelihoodCalculator::sum_site_liks( )
|
||||||
prob[i] = p->p;
|
prob[i] = p->p;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#pragma omp parallel for private(factor_correct) schedule(dynamic) num_threads(2) reduction(+:lik)
|
|
||||||
for(int i=0; i < seqlen; i++)
|
for(int i=0; i < seqlen; i++)
|
||||||
{
|
{
|
||||||
factor_correct = Factors[a][i] + Factors[b][i] ;
|
factor_correct = Factors[a][i] + Factors[b][i] ;
|
||||||
site_liks[i] = sum_partials(i);
|
site_liks[i] = sum_partials(i);
|
||||||
//#pragma omp critical
|
|
||||||
lik += ( log(site_liks[i]) + factor_correct)* SeqData->pattern_count(i);
|
lik += ( log(site_liks[i]) + factor_correct)* SeqData->pattern_count(i);
|
||||||
}
|
}
|
||||||
return lik;
|
return lik;
|
||||||
|
|
@ -498,7 +433,6 @@ void LikelihoodCalculator::calculate_node_partial( node father, node son, edge e
|
||||||
for(int r=0; r<nrates; r++)
|
for(int r=0; r<nrates; r++)
|
||||||
{
|
{
|
||||||
double sum = 0;
|
double sum = 0;
|
||||||
//#pragma omp critical
|
|
||||||
ProbMatrix *p = edgeprobmatrix[edgeaux][r];
|
ProbMatrix *p = edgeprobmatrix[edgeaux][r];
|
||||||
|
|
||||||
for(int i=0; i < 4; i++)
|
for(int i=0; i < 4; i++)
|
||||||
|
|
@ -594,7 +528,6 @@ double LikelihoodCalculator::calculate_likelihood_omp()
|
||||||
|
|
||||||
init_partials();
|
init_partials();
|
||||||
|
|
||||||
struct timeval tempo1, tempo2, result;
|
|
||||||
|
|
||||||
|
|
||||||
int seqlen = tree_ptr->number_of_positions();
|
int seqlen = tree_ptr->number_of_positions();
|
||||||
|
|
@ -608,7 +541,8 @@ double LikelihoodCalculator::calculate_likelihood_omp()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gettimeofday(&tempo1, NULL);
|
struct timeval start;
|
||||||
|
gettimeofday(&start,NULL);
|
||||||
|
|
||||||
#pragma omp parallel for reduction(+:lik)
|
#pragma omp parallel for reduction(+:lik)
|
||||||
for(int i=0; i< seqlen; i++)
|
for(int i=0; i< seqlen; i++)
|
||||||
|
|
@ -619,22 +553,10 @@ double LikelihoodCalculator::calculate_likelihood_omp()
|
||||||
// sum all partials
|
// sum all partials
|
||||||
lik += sum_site_liks_omp(i);
|
lik += sum_site_liks_omp(i);
|
||||||
}
|
}
|
||||||
gettimeofday(&tempo2, NULL);
|
struct timeval end;
|
||||||
timeval_subtract(&result,&tempo2,&tempo1);
|
gettimeofday(&end,NULL);
|
||||||
long remainder = result.tv_sec % 3600;
|
cout << " !! ";
|
||||||
long hours = (result.tv_sec - remainder)/3600;
|
print_elapsed_time_short(&start,&end);
|
||||||
long seconds = remainder % 60;
|
|
||||||
long minutes = (remainder - seconds) / 60;
|
|
||||||
cout << "Execution time : ";
|
|
||||||
cout.width(3);
|
|
||||||
cout.fill(' ');
|
|
||||||
cout << hours << ":";
|
|
||||||
cout.width(2);
|
|
||||||
cout.fill('0');
|
|
||||||
cout << minutes << ":";
|
|
||||||
cout.width(2);
|
|
||||||
cout.fill('0');
|
|
||||||
cout << seconds << "." << result.tv_usec << "(" << result.tv_sec << ")" << endl;
|
|
||||||
return lik;
|
return lik;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -645,7 +567,6 @@ double LikelihoodCalculator::sum_site_liks_omp( int pos )
|
||||||
register double lik = 0;
|
register double lik = 0;
|
||||||
register double factor_correct;
|
register double factor_correct;
|
||||||
|
|
||||||
//#pragma omp parallel for private(factor_correct) schedule(dynamic) num_threads(2) reduction(+:lik)
|
|
||||||
factor_correct = Factors[a][pos] + Factors[b][pos] ;
|
factor_correct = Factors[a][pos] + Factors[b][pos] ;
|
||||||
site_liks[pos] = sum_partials(pos);
|
site_liks[pos] = sum_partials(pos);
|
||||||
lik = ( log(site_liks[pos]) + factor_correct)* SeqData->pattern_count(pos);
|
lik = ( log(site_liks[pos]) + factor_correct)* SeqData->pattern_count(pos);
|
||||||
|
|
@ -668,7 +589,6 @@ void LikelihoodCalculator::calculate_node_partial_omp( node father, node son, ed
|
||||||
{
|
{
|
||||||
register double sum;
|
register double sum;
|
||||||
//unsigned char l;
|
//unsigned char l;
|
||||||
//#pragma omp parallel for
|
|
||||||
long index = pos*nrates*4;
|
long index = pos*nrates*4;
|
||||||
// accumulatre
|
// accumulatre
|
||||||
Factors[father][pos]+=Factors[son][pos];
|
Factors[father][pos]+=Factors[son][pos];
|
||||||
|
|
@ -677,7 +597,6 @@ void LikelihoodCalculator::calculate_node_partial_omp( node father, node son, ed
|
||||||
for(int r=0; r<nrates; r++)
|
for(int r=0; r<nrates; r++)
|
||||||
{
|
{
|
||||||
double sum = 0;
|
double sum = 0;
|
||||||
//#pragma omp critical
|
|
||||||
ProbMatrix *p = edgeprobmatrix[edgeaux][r];
|
ProbMatrix *p = edgeprobmatrix[edgeaux][r];
|
||||||
|
|
||||||
for(int i=0; i < 4; i++)
|
for(int i=0; i < 4; i++)
|
||||||
|
|
|
||||||
|
|
@ -89,8 +89,12 @@ private:
|
||||||
long total_pos = SeqData->pattern_count();
|
long total_pos = SeqData->pattern_count();
|
||||||
int ntaxons = SeqData->num_seqs();
|
int ntaxons = SeqData->num_seqs();
|
||||||
//int nedges = tree_ptr->TREE.number_of_edges();
|
//int nedges = tree_ptr->TREE.number_of_edges();
|
||||||
part_memory_internal = new double[ (ntaxons-2) * nrates * total_pos * 4 ];
|
unsigned long tamanho = (ntaxons-2) * nrates * total_pos * 4;
|
||||||
part_memory_factors = new double [ (2*ntaxons-2) * total_pos];
|
cout << "tamanho de alocacao:" << tamanho << endl;
|
||||||
|
part_memory_internal = new double[ tamanho ];
|
||||||
|
tamanho = (2*ntaxons-2) * total_pos;
|
||||||
|
cout << "tamanho de alocacao:" << tamanho << endl;
|
||||||
|
part_memory_factors = new double [ tamanho ];
|
||||||
part_memory_probmatrix_ptr = new ProbMatrix* [ (2*ntaxons-3) * nrates ] ;
|
part_memory_probmatrix_ptr = new ProbMatrix* [ (2*ntaxons-3) * nrates ] ;
|
||||||
site_liks = new double[total_pos];
|
site_liks = new double[total_pos];
|
||||||
cout << "allocating done..." << endl;
|
cout << "allocating done..." << endl;
|
||||||
|
|
|
||||||
|
|
@ -47,180 +47,55 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// measures execution time
|
// measures execution time
|
||||||
struct timeval tempo1, tempo2, result;
|
struct timeval tempo1, tempo2, result;
|
||||||
|
eoParser parser(argc, argv);
|
||||||
|
datafile = parser.createParam(string(), "data", "Datafile", 'd',"Param").value();
|
||||||
|
int nthreads = parser.createParam(omp_get_max_threads(), "nthreads", "Numthreads", 't',"Param").value();
|
||||||
|
int ntrees = parser.createParam(20, "ntrees", "NumTrees", 'n',"Param").value();
|
||||||
|
int nexp = parser.createParam(1, "nexps", "NumExps", 'e',"Param").value();
|
||||||
|
|
||||||
cout << "\n\nReading Sequence Datafile...";
|
cout << "\n\nReading Sequence Datafile...";
|
||||||
// Sequences seq("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.50_5000");
|
|
||||||
// Sequences seq2("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.50_50000");
|
|
||||||
// Sequences seq3("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.50_500000");
|
|
||||||
|
|
||||||
/* Sequences seq4("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.250_5000");
|
Sequences seq6(datafile.c_str());
|
||||||
Sequences seq5("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.250_50000");*/
|
|
||||||
Sequences seq6("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.250_500000");
|
|
||||||
// Sequences seq7("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.500_5000");
|
// Sequences seq7("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/TEST.500_5000");
|
||||||
cout << " done.\n";
|
cout << " done.\n";
|
||||||
// calculate datafile
|
// calculate datafile
|
||||||
cout << "calculating pattersn..." << endl;
|
cout << "calculating pattersn..." << endl;
|
||||||
|
|
||||||
/* seq.calculate_patterns();
|
|
||||||
seq.calculate_frequences();
|
|
||||||
seq2.calculate_patterns();
|
|
||||||
seq2.calculate_frequences();
|
|
||||||
seq3.calculate_patterns();
|
|
||||||
seq3.calculate_frequences();*/
|
|
||||||
/* seq4.calculate_patterns();
|
|
||||||
seq4.calculate_frequences();
|
|
||||||
seq5.calculate_patterns();
|
|
||||||
seq5.calculate_frequences();*/
|
|
||||||
seq6.calculate_patterns();
|
seq6.calculate_patterns();
|
||||||
seq6.calculate_frequences();
|
seq6.calculate_frequences();
|
||||||
// seq7.calculate_patterns();
|
|
||||||
// seq7.calculate_frequences();
|
|
||||||
|
|
||||||
|
ostringstream os;
|
||||||
|
os << datafile << "_results_" << nthreads << ".txt";
|
||||||
|
ofstream of(os.str().c_str());
|
||||||
|
|
||||||
gsl_rng *rn2 = gsl_rng_alloc(gsl_rng_default);
|
gsl_rng *rn2 = gsl_rng_alloc(gsl_rng_default);
|
||||||
RandomNr *rn = new RandomNr(time(NULL));
|
RandomNr *rn = new RandomNr(time(NULL));
|
||||||
|
omp_set_num_threads(nthreads);
|
||||||
/* phylotreeIND templatetree( rn, seq, rn2);
|
for(int i=0; i < nexp; i++)
|
||||||
phylotreeIND templatetree2( rn, seq2, rn2);
|
|
||||||
phylotreeIND templatetree3( rn, seq3, rn2);*/
|
|
||||||
/* phylotreeIND templatetree4( rn, seq4, rn2);
|
|
||||||
phylotreeIND templatetree5( rn, seq5, rn2);*/
|
|
||||||
phylotreeIND templatetree6( rn, seq6, rn2);
|
|
||||||
// phylotreeIND templatetree7( rn, seq7, rn2);
|
|
||||||
|
|
||||||
|
|
||||||
/* SubstModel modelHKY( seq, SubstModel::HKY85);
|
|
||||||
SubstModel modelHKY2( seq2, SubstModel::HKY85);
|
|
||||||
SubstModel modelHKY3( seq3, SubstModel::HKY85);*/
|
|
||||||
/* SubstModel modelHKY4( seq4, SubstModel::HKY85);
|
|
||||||
SubstModel modelHKY5( seq5, SubstModel::HKY85);*/
|
|
||||||
SubstModel modelHKY6( seq6, SubstModel::HKY85);
|
|
||||||
// SubstModel modelHKY7( seq7, SubstModel::HKY85);
|
|
||||||
|
|
||||||
/* modelHKY.init();
|
|
||||||
modelHKY2.init();
|
|
||||||
modelHKY3.init();*/
|
|
||||||
/* modelHKY4.init();
|
|
||||||
modelHKY5.init();*/
|
|
||||||
modelHKY6.init();
|
|
||||||
// modelHKY7.init();
|
|
||||||
//modelHKY.set_kappa(3.890);
|
|
||||||
/* ProbMatrixContainer probmatrixs(modelHKY);
|
|
||||||
ProbMatrixContainer probmatrixs2(modelHKY2);
|
|
||||||
ProbMatrixContainer probmatrixs3(modelHKY3);*/
|
|
||||||
/* ProbMatrixContainer probmatrixs4(modelHKY4);
|
|
||||||
ProbMatrixContainer probmatrixs5(modelHKY5);*/
|
|
||||||
ProbMatrixContainer probmatrixs6(modelHKY6);
|
|
||||||
// ProbMatrixContainer probmatrixs7(modelHKY7);
|
|
||||||
|
|
||||||
|
|
||||||
//probmatrixs_ptr = &probmatrixs;
|
|
||||||
|
|
||||||
|
|
||||||
/* LikelihoodCalculator lik_calc(templatetree, modelHKY, probmatrixs, 4);
|
|
||||||
LikelihoodCalculator lik_calc2(templatetree2, modelHKY2, probmatrixs2, 4);
|
|
||||||
LikelihoodCalculator lik_calc3(templatetree3, modelHKY3, probmatrixs3, 4);*/
|
|
||||||
/* LikelihoodCalculator lik_calc4(templatetree4, modelHKY4, probmatrixs4, 4);
|
|
||||||
LikelihoodCalculator lik_calc5(templatetree5, modelHKY5, probmatrixs5, 4); */
|
|
||||||
LikelihoodCalculator lik_calc6(templatetree6, modelHKY6, probmatrixs6, 4);
|
|
||||||
// LikelihoodCalculator lik_calc7(templatetree7, modelHKY7, probmatrixs7, 4);
|
|
||||||
//lik_calc.set_alpha(0.950);
|
|
||||||
/* modelHKY.init();
|
|
||||||
modelHKY2.init();
|
|
||||||
modelHKY3.init();*/
|
|
||||||
/* modelHKY4.init();
|
|
||||||
modelHKY5.init();*/
|
|
||||||
modelHKY6.init();
|
|
||||||
// modelHKY7.init();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Phyloraninit initializer(templatetree);
|
|
||||||
Phyloraninit initializer2(templatetree2);
|
|
||||||
Phyloraninit initializer3(templatetree3);*/
|
|
||||||
/* Phyloraninit initializer4(templatetree4);
|
|
||||||
Phyloraninit initializer5(templatetree5);*/
|
|
||||||
Phyloraninit initializer6(templatetree6);
|
|
||||||
// Phyloraninit initializer7(templatetree7);
|
|
||||||
|
|
||||||
/* eoPop<PhyloMOEO> population(1, initializer);
|
|
||||||
eoPop<PhyloMOEO> population2(1, initializer2);
|
|
||||||
eoPop<PhyloMOEO> population3(1, initializer3);*/
|
|
||||||
/* eoPop<PhyloMOEO> population4(1, initializer4);
|
|
||||||
eoPop<PhyloMOEO> population5(1, initializer5);*/
|
|
||||||
eoPop<PhyloMOEO> population6(1, initializer6);
|
|
||||||
// eoPop<PhyloMOEO> population7(1, initializer7);
|
|
||||||
|
|
||||||
cout << "Reading trees..." << endl;
|
|
||||||
/* readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.50_5000", population);
|
|
||||||
readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.50_50000", population2);
|
|
||||||
readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.50_500000", population3);*/
|
|
||||||
/* readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.250_5000", population4);
|
|
||||||
readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.250_50000", population5);*/
|
|
||||||
readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.250_500000", population6);
|
|
||||||
// readtrees("/home/wcancino/experimentos/PhyloMOEA_0.2/omp_tests/datasets/start.TEST.500_5000", population7);
|
|
||||||
|
|
||||||
gettimeofday(&tempo1, NULL);
|
|
||||||
|
|
||||||
cout << " Number of processors available:" << omp_get_num_procs() << " MAX Number of threads " << omp_get_max_threads() << endl;
|
|
||||||
|
|
||||||
cout.precision(15);
|
|
||||||
// lik_calc.set_tree(population[0].get_tree());
|
|
||||||
// cout << lik_calc.calculate_likelihood() << endl;
|
|
||||||
// cout << lik_calc.calculate_likelihood_omp() << endl;
|
|
||||||
//
|
|
||||||
// lik_calc2.set_tree(population2[0].get_tree());
|
|
||||||
// cout << lik_calc2.calculate_likelihood() << endl;
|
|
||||||
// cout << lik_calc2.calculate_likelihood_omp() << endl;
|
|
||||||
//
|
|
||||||
// lik_calc3.set_tree(population3[0].get_tree());
|
|
||||||
// cout << lik_calc3.calculate_likelihood() << endl;
|
|
||||||
// cout << lik_calc3.calculate_likelihood_omp() << endl;
|
|
||||||
|
|
||||||
// lik_calc4.set_tree(population4[0].get_tree());
|
|
||||||
// cout << lik_calc4.calculate_likelihood() << endl;
|
|
||||||
// cout << lik_calc4.calculate_likelihood_omp() << endl;
|
|
||||||
//
|
|
||||||
// lik_calc5.set_tree(population5[0].get_tree());
|
|
||||||
// cout << lik_calc5.calculate_likelihood() << endl;
|
|
||||||
// cout << lik_calc5.calculate_likelihood_omp() << endl;
|
|
||||||
|
|
||||||
lik_calc6.set_tree(population6[0].get_tree());
|
|
||||||
cout << lik_calc6.calculate_likelihood() << endl;
|
|
||||||
cout << lik_calc6.calculate_likelihood_omp() << endl;
|
|
||||||
//
|
|
||||||
// lik_calc7.set_tree(population7[0].get_tree());
|
|
||||||
// cout << lik_calc7.calculate_likelihood() << endl;
|
|
||||||
// cout << lik_calc7.calculate_likelihood_omp() << endl;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
for(int i=0; i < population.size(); i++)
|
|
||||||
{
|
{
|
||||||
|
phylotreeIND templatetree6( rn, seq6, rn2);
|
||||||
lik_calc.set_tree(population[i].get_tree());
|
SubstModel modelHKY6( seq6, SubstModel::HKY85);
|
||||||
// gettimeofday(&tempo1, NULL);
|
modelHKY6.init();
|
||||||
cout << lik_calc.calculate_likelihood_omp() << endl;
|
ProbMatrixContainer probmatrixs6(modelHKY6);
|
||||||
/* gettimeofday(&tempo2, NULL);
|
LikelihoodCalculator lik_calc6(templatetree6, modelHKY6, probmatrixs6, 4);
|
||||||
timeval_subtract(&result,&tempo2,&tempo1);
|
modelHKY6.init();
|
||||||
long remainder = result.tv_sec % 3600;
|
Phyloraninit initializer6(templatetree6);
|
||||||
long hours = (result.tv_sec - remainder)/3600;
|
eoPop<PhyloMOEO> population6(ntrees, initializer6);
|
||||||
long seconds = remainder % 60;
|
cout.precision(15);
|
||||||
long minutes = (remainder - seconds) / 60;
|
PhyloLikelihoodTimeEval eval( lik_calc6 );
|
||||||
cout << "Execution time : ";
|
|
||||||
cout.width(3);
|
|
||||||
cout.fill(' ');
|
|
||||||
cout << hours << ":";
|
|
||||||
cout.width(2);
|
|
||||||
cout.fill('0');
|
|
||||||
cout << minutes << ":";
|
|
||||||
cout.width(2);
|
|
||||||
cout.fill('0');
|
|
||||||
cout << seconds << "." << result.tv_usec << "(" << result.tv_sec << ")" << endl;*/
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
cout << " Number of processors available:" << omp_get_num_procs() << " MAX Number of threads " << omp_get_max_threads() << endl;
|
||||||
|
gettimeofday(&tempo1, NULL);
|
||||||
|
|
||||||
|
apply<PhyloMOEO> (eval, population6);
|
||||||
|
|
||||||
|
gettimeofday(&tempo2, NULL);
|
||||||
|
cout << "\n"; print_elapsed_time(&tempo1,&tempo2);
|
||||||
|
print_elapsed_time_short(&tempo1,&tempo2,of);
|
||||||
|
of << endl;
|
||||||
|
}
|
||||||
|
of.close();
|
||||||
gsl_rng_free(rn2);
|
gsl_rng_free(rn2);
|
||||||
// delete probmatrixs;
|
// delete probmatrixs;
|
||||||
delete rn;
|
delete rn;
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,41 @@ int timeval_subtract (struct timeval *result, struct timeval *x, struct timeva
|
||||||
return x->tv_sec < y->tv_sec;
|
return x->tv_sec < y->tv_sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void print_elapsed_time(struct timeval *x, struct timeval *y)
|
||||||
|
{
|
||||||
|
struct timeval result;
|
||||||
|
timeval_subtract(&result,y,x);
|
||||||
|
long remainder = result.tv_sec % 3600;
|
||||||
|
long hours = (result.tv_sec - remainder)/3600;
|
||||||
|
long seconds = remainder % 60;
|
||||||
|
long minutes = (remainder - seconds) / 60;
|
||||||
|
cout << "Execution time : ";
|
||||||
|
cout.width(3);
|
||||||
|
cout.fill(' ');
|
||||||
|
cout << hours << ":";
|
||||||
|
cout.width(2);
|
||||||
|
cout.fill('0');
|
||||||
|
cout << minutes << ":";
|
||||||
|
cout.width(2);
|
||||||
|
cout.fill('0');
|
||||||
|
cout << seconds << "." << result.tv_usec << "(" << result.tv_sec << ")" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_elapsed_time_short(struct timeval *x, struct timeval *y, ostream &os)
|
||||||
|
{
|
||||||
|
struct timeval result;
|
||||||
|
timeval_subtract(&result,y,x);
|
||||||
|
os << " " << result.tv_sec << "." << result.tv_usec;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void print_cpu_time(clock_t start, clock_t end)
|
||||||
|
{
|
||||||
|
double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
|
||||||
|
cout << " " << cpu_time_used << " ";
|
||||||
|
}
|
||||||
|
|
||||||
void welcome_message()
|
void welcome_message()
|
||||||
{
|
{
|
||||||
cout << "\nPhyloMOEA, a program for multi-criteria phylogenetic inference\n";
|
cout << "\nPhyloMOEA, a program for multi-criteria phylogenetic inference\n";
|
||||||
|
|
|
||||||
|
|
@ -32,5 +32,8 @@ void optimize_solutions( eoPop<PhyloMOEO> &);
|
||||||
void optimize_solution( PhyloMOEO &);
|
void optimize_solution( PhyloMOEO &);
|
||||||
void readtrees(const char *, eoPop<PhyloMOEO> &);
|
void readtrees(const char *, eoPop<PhyloMOEO> &);
|
||||||
int timeval_subtract (struct timeval *, struct timeval *, struct timeval *);
|
int timeval_subtract (struct timeval *, struct timeval *, struct timeval *);
|
||||||
|
void print_cpu_time(clock_t ,clock_t);
|
||||||
|
void print_elapsed_time(struct timeval *, struct timeval *);
|
||||||
|
void print_elapsed_time_short(struct timeval *, struct timeval *, ostream &os=cout);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue