[Debian-astro-commits] [gyoto] 33/221: MPI: Get requested quantities from data pointer instead of Scenery.
Thibaut Jean-Claude Paumard
thibaut at moszumanska.debian.org
Fri May 22 20:52:31 UTC 2015
This is an automated email from the git hooks/post-receive script.
thibaut pushed a commit to branch master
in repository gyoto.
commit 82a24f08b062eac91741703d1bda199c681788e9
Author: Thibaut Paumard <paumard at users.sourceforge.net>
Date: Sat Oct 11 12:53:11 2014 +0200
MPI: Get requested quantities from data pointer instead of Scenery.
---
include/GyotoScenery.h | 2 +-
lib/Scenery.C | 23 ++++++++++++++++++-----
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/include/GyotoScenery.h b/include/GyotoScenery.h
index ea2017c..c697295 100644
--- a/include/GyotoScenery.h
+++ b/include/GyotoScenery.h
@@ -295,7 +295,7 @@ class Gyoto::Scenery : protected Gyoto::SmartPointee {
/**
* This is all quantities except Spectrum, BinSpectrum and ImpactCoords.
*/
- size_t getScalarQuantitiesCount() const ;
+ size_t getScalarQuantitiesCount(Quantity_t *q=NULL) const ;
/// Get ph_.tmin_
double tMin() const ;
diff --git a/lib/Scenery.C b/lib/Scenery.C
index 46df2ca..2c83b6b 100644
--- a/lib/Scenery.C
+++ b/lib/Scenery.C
@@ -268,13 +268,22 @@ void Scenery::rayTrace(size_t imin, size_t imax,
size_t ij[2]={imin, jmin};
size_t nbnuobs=0;
- Quantity_t quantities = getRequestedQuantities();
+ Quantity_t quantities = GYOTO_QUANTITY_NONE;
+
+ if (mpi_workers_) {
+ if (data) quantities=Quantity_t(*data);
+ for (int w=0; w<mpi_workers_->remote_size(); ++w)
+ mpi_workers_->send(w, raytrace, quantities);
+ } else {
+ mpi_manager_->recv(0, raytrace, quantities);
+ }
+
if (quantities & (GYOTO_QUANTITY_SPECTRUM | GYOTO_QUANTITY_BINSPECTRUM)) {
if (!spr) throwError("Spectral quantity requested but "
"no spectrometer specified!");
nbnuobs = spr -> nSamples();
}
- size_t nelt= getScalarQuantitiesCount();
+ size_t nelt= getScalarQuantitiesCount(&quantities);
if (quantities & GYOTO_QUANTITY_SPECTRUM) nelt += nbnuobs;
if (quantities & GYOTO_QUANTITY_BINSPECTRUM) nelt += nbnuobs;
// if (quantities & GYOTO_QUANTITY_IMPACTCOORDS) nelt += 16;
@@ -700,10 +709,14 @@ std::string Scenery::getRequestedQuantitiesString() const {
return squant;
}
-size_t Scenery::getScalarQuantitiesCount() const {
+size_t Scenery::getScalarQuantitiesCount(Quantity_t *q) const {
size_t nquant=0;
- Quantity_t quantities
- = quantities_?quantities_:(astrobj()?astrobj()->getDefaultQuantities():0);
+ Quantity_t quantities;
+ if (q) quantities=*q;
+ else
+ quantities=quantities_?
+ quantities_:
+ (astrobj()?astrobj()->getDefaultQuantities():GYOTO_QUANTITY_NONE);
if (quantities & GYOTO_QUANTITY_INTENSITY ) ++nquant;
if (quantities & GYOTO_QUANTITY_EMISSIONTIME) ++nquant;
if (quantities & GYOTO_QUANTITY_MIN_DISTANCE) ++nquant;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-astro/packages/gyoto.git
More information about the Debian-astro-commits
mailing list