Merge branch 'main' of github.com:PhasicFlow/phasicFlow

This commit is contained in:
Hamidreza
2025-05-16 19:15:17 +03:30
3422 changed files with 318448 additions and 165 deletions

8
.gitignore vendored
View File

@ -37,11 +37,15 @@
*.out
*.app
# directories
# Exclude specific directories wherever they appear
build/**
include/**
bin/**
lib/**
**/build/
**/include/
**/bin/
**/lib/
test*/**
**/**notnow
doc/code-documentation/
@ -61,3 +65,5 @@ doc/DTAGS
**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9]
**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
**/VTK

View File

@ -96,7 +96,7 @@ public:
return Control_();
}
auto inline constexpr usingDoulle()const
auto inline constexpr usingDouble()const
{
return pFlow::usingDouble__;
}

View File

@ -359,7 +359,7 @@ bool pFlow::sphereInteraction<cFM,gMM, cLT>::hearChanges
if(msg.equivalentTo(message::ITEMS_REARRANGE))
{
notImplementedFunction;
return false;
return true;
}
fatalErrorInFunction<<"Event "<< msg.eventNames()<<

View File

@ -467,7 +467,7 @@ pFlow::postprocessData::fieldsDataBase::fieldsDataBase
systemControl& control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime
TimeValueType startTime
)
:
time_(control.time()),
@ -492,7 +492,7 @@ pFlow::postprocessData::fieldsDataBase::fieldsDataBase
}
}
pFlow::timeValue pFlow::postprocessData::fieldsDataBase::currentTime() const
pFlow::TimeValueType pFlow::postprocessData::fieldsDataBase::currentTime() const
{
return time_.currentTime();
}
@ -914,7 +914,7 @@ pFlow::uniquePtr<pFlow::postprocessData::fieldsDataBase>
systemControl& control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime
TimeValueType startTime
)
{
word dbType;

View File

@ -78,7 +78,7 @@ private:
anyList allFields_;
/// Map to store the last capture time of each field
wordMap<timeValue> captureTime_;
wordMap<TimeValueType> captureTime_;
/// Reference to the Time object
Time& time_;
@ -178,7 +178,7 @@ public:
systemControl& control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime);
TimeValueType startTime);
/// no copy constructor
fieldsDataBase(const fieldsDataBase&) = delete;
@ -203,7 +203,7 @@ public:
systemControl& control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime
TimeValueType startTime
),
(control, postDict, inSimulation, startTime)
);
@ -211,7 +211,7 @@ public:
// - Public Access Functions
/// returns the current time
timeValue currentTime()const;
TimeValueType currentTime()const;
/// const ref to object Time
const Time& time()const
@ -282,7 +282,7 @@ public:
/// Get the next avaiable time folder after the current time folder
/// This is only used for post-simulation processing
virtual
timeValue getNextTimeFolder()const
TimeValueType getNextTimeFolder()const
{
return -1.0;
}
@ -291,7 +291,7 @@ public:
/// This is used only for post-simulation processing
/// @returns the time value of the next folder.
virtual
timeValue setToNextTimeFolder()
TimeValueType setToNextTimeFolder()
{
return -1.0;
}
@ -300,7 +300,7 @@ public:
/// This is used only for post-simulation processing
/// @returns the time value of the skipped folder
virtual
timeValue skipNextTimeFolder()
TimeValueType skipNextTimeFolder()
{
return -1.0;
}
@ -316,7 +316,7 @@ public:
systemControl& control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime);
TimeValueType startTime);
};
} // namespace pFlow::postprocessData

View File

@ -49,7 +49,7 @@ pFlow::postprocessData::simulationFieldsDataBase::simulationFieldsDataBase
systemControl &control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime
TimeValueType startTime
)
:
fieldsDataBase(control, postDict, inSimulation, startTime),

View File

@ -60,7 +60,7 @@ public:
systemControl& control,
const dictionary& postDict,
bool inSimulation,
timeValue startTime);
TimeValueType startTime);
~simulationFieldsDataBase() override = default;

View File

@ -86,12 +86,12 @@ private:
word fieldName_;
/// Timestamp when mask was last updated (-1 indicates never updated)
timeValue lastUpdated_ = -1;
TimeValueType lastUpdated_ = -1;
/// Updates the mask based on current field values if needed, returns true if successful
bool updateMask()
{
timeValue t = database().currentTime();
TimeValueType t = database().currentTime();
if( equal( t, lastUpdated_)) return true;
@ -206,11 +206,11 @@ private:
std::vector<bool> mask_;
timeValue lastUpdated_ = -1;
TimeValueType lastUpdated_ = -1;
bool updateMask()
{
timeValue t = database().currentTime();
TimeValueType t = database().currentTime();
if( equal( t, lastUpdated_)) return true;

View File

@ -46,7 +46,7 @@ inline
bool writeField
(
iOstream& os,
timeValue t,
TimeValueType t,
const regionField<T> field,
uint32 threshold,
const T& defValue=T{}

View File

@ -52,7 +52,7 @@ template<typename T>
inline bool writeField
(
iOstream& os,
timeValue t,
TimeValueType t,
const regionField<T>& field,
const regionPoints& regPoints,
const T& invalidVal = T{}

View File

@ -27,7 +27,7 @@ Licence:
pFlow::postprocessData::postprocessData::postprocessData
(
const systemControl &control,
timeValue startTime
TimeValueType startTime
)
:
auxFunctions(control),
@ -50,7 +50,7 @@ pFlow::postprocessData::postprocessData::postprocessData
if( !dict_.fileExist() || !dict_.headerOk() )
{
WARNING<<"You requested postprocessData function while,"
<<" the dictionary system/postprocessDataDict does not exist."
<<" the dictionary settings/postprocessDataDict does not exist."
<<" This feature is disabled in the current run."<<END_WARNING;
return;
}

View File

@ -85,7 +85,7 @@ public:
/// this constructor is used when postprocesing is active
/// during simulation.
/// @param control const reference to systemControl
postprocessData(const systemControl& control, timeValue startTime = -1.0);
postprocessData(const systemControl& control, TimeValueType startTime = -1.0);
~postprocessData()override = default;

View File

@ -55,7 +55,7 @@ private:
mutable T* data_ = nullptr;
index size_ = 0;
IndexType size_ = 0;
public:
@ -104,7 +104,7 @@ public:
/// Returns the number of elements in the span
INLINE_FUNCTION_HD
index size() const
IndexType size() const
{
return size_;
}
@ -139,14 +139,14 @@ public:
/// Returns a reference to the element at the specified index
INLINE_FUNCTION_HD
T& operator[](index i)
T& operator[](IndexType i)
{
return data_[i];
}
/// Returns a const reference to the element at the specified index
INLINE_FUNCTION_HD
T& operator[](index i)const
T& operator[](IndexType i)const
{
return data_[i];
}

View File

@ -23,21 +23,21 @@ Licence:
void pFlow::baseTimeControl::setTimeControl
(
timeValue startTime,
timeValue endTime,
timeValue interval,
TimeValueType startTime,
TimeValueType endTime,
TimeValueType interval,
const word &intervalPrefix
)
{
isTimeStep_ = false;
intervalPrefix_ = intervalPrefix;
rRange_ = stridedRange<timeValue>(startTime, endTime, interval);
rRange_ = stridedRange<TimeValueType>(startTime, endTime, interval);
}
pFlow::baseTimeControl::baseTimeControl(
const dictionary &dict,
const word &intervalPrefix,
timeValue defStartTime)
TimeValueType defStartTime)
: intervalPrefix_(intervalPrefix)
{
auto tControl = dict.getVal<word>("timeControl");
@ -59,10 +59,10 @@ pFlow::baseTimeControl::baseTimeControl(
if(!isTimeStep_)
{
auto startTime = (dict.getValOrSet<timeValue>("startTime", defStartTime));
auto endTime = (dict.getValOrSet<timeValue>("endTime", largeValue));
auto interval = dict.getVal<timeValue>(intervalWord);
rRange_ = stridedRange<timeValue>(startTime, endTime, interval);
auto startTime = (dict.getValOrSet<TimeValueType>("startTime", defStartTime));
auto endTime = (dict.getValOrSet<TimeValueType>("endTime", largeValue));
auto interval = dict.getVal<TimeValueType>(intervalWord);
rRange_ = stridedRange<TimeValueType>(startTime, endTime, interval);
}
else
@ -78,9 +78,9 @@ pFlow::baseTimeControl::baseTimeControl(
pFlow::baseTimeControl::baseTimeControl
(
const dictionary& dict,
const timeValue defInterval,
const TimeValueType defInterval,
const word& intervalPrefix,
const timeValue defStartTime
const TimeValueType defStartTime
)
:
intervalPrefix_(intervalPrefix)
@ -104,10 +104,10 @@ pFlow::baseTimeControl::baseTimeControl
if(!isTimeStep_)
{
auto startTime = (dict.getValOrSet<timeValue>("startTime", defStartTime));
auto endTime = (dict.getValOrSet<timeValue>("endTime", largeValue));
auto interval = dict.getValOrSet<timeValue>(intervalWord, defInterval);
rRange_ = stridedRange<timeValue>(startTime, endTime, interval);
auto startTime = (dict.getValOrSet<TimeValueType>("startTime", defStartTime));
auto endTime = (dict.getValOrSet<TimeValueType>("endTime", largeValue));
auto interval = dict.getValOrSet<TimeValueType>(intervalWord, defInterval);
rRange_ = stridedRange<TimeValueType>(startTime, endTime, interval);
}
else
@ -131,9 +131,9 @@ pFlow::baseTimeControl::baseTimeControl(int32 start, int32 end, int32 stride, co
pFlow::baseTimeControl::baseTimeControl
(
timeValue start,
timeValue end,
timeValue stride,
TimeValueType start,
TimeValueType end,
TimeValueType stride,
const word &intervalPrefix
)
:
@ -147,7 +147,7 @@ pFlow::baseTimeControl::baseTimeControl
{
}
bool pFlow::baseTimeControl::eventTime(uint32 iter, timeValue t, timeValue dt) const
bool pFlow::baseTimeControl::eventTime(uint32 iter, TimeValueType t, TimeValueType dt) const
{
if(isTimeStep_)
{
@ -166,7 +166,7 @@ bool pFlow::baseTimeControl::eventTime(const timeInfo &ti) const
}
bool
pFlow::baseTimeControl::isInRange(uint32 iter, timeValue t, timeValue dt) const
pFlow::baseTimeControl::isInRange(uint32 iter, TimeValueType t, TimeValueType dt) const
{
if(isTimeStep_)
{
@ -178,7 +178,7 @@ pFlow::baseTimeControl::isInRange(uint32 iter, timeValue t, timeValue dt) const
}
}
pFlow::timeValue
pFlow::TimeValueType
pFlow::baseTimeControl::startTime() const
{
if(!isTimeStep_)
@ -191,7 +191,7 @@ pFlow::baseTimeControl::startTime() const
return 0;
}
pFlow::timeValue
pFlow::TimeValueType
pFlow::baseTimeControl::endTime() const
{
if(!isTimeStep_)
@ -204,7 +204,7 @@ pFlow::baseTimeControl::endTime() const
return 0;
}
pFlow::timeValue
pFlow::TimeValueType
pFlow::baseTimeControl::rInterval() const
{
if(!isTimeStep_)

View File

@ -36,16 +36,16 @@ private:
int32StridedRagne iRange_;
stridedRange<timeValue> rRange_;
stridedRange<TimeValueType> rRange_;
word intervalPrefix_;
protected:
void setTimeControl(
timeValue startTime,
timeValue endTime,
timeValue interval,
TimeValueType startTime,
TimeValueType endTime,
TimeValueType interval,
const word& intervalPrefix);
public:
@ -53,14 +53,14 @@ public:
baseTimeControl(
const dictionary& dict,
const word& intervalPrefix = "",
timeValue defStartTime = 0.0
TimeValueType defStartTime = 0.0
);
baseTimeControl(
const dictionary& dict,
const timeValue defInterval,
const TimeValueType defInterval,
const word& intervalPrefix="",
const timeValue defStartTime=0.0);
const TimeValueType defStartTime=0.0);
baseTimeControl(
int32 start,
@ -70,9 +70,9 @@ public:
);
baseTimeControl(
timeValue start,
timeValue end,
timeValue stride,
TimeValueType start,
TimeValueType end,
TimeValueType stride,
const word& intervalPrefix = ""
);
@ -99,17 +99,17 @@ public:
return isTimeStep_;
}
bool eventTime(uint32 iter, timeValue t, timeValue dt) const;
bool eventTime(uint32 iter, TimeValueType t, TimeValueType dt) const;
bool eventTime(const timeInfo& ti)const;
bool isInRange(uint32 iter, timeValue t, timeValue dt) const;
bool isInRange(uint32 iter, TimeValueType t, TimeValueType dt) const;
timeValue startTime() const;
TimeValueType startTime() const;
timeValue endTime() const;
TimeValueType endTime() const;
timeValue rInterval() const;
TimeValueType rInterval() const;
int32 startIter() const;

View File

@ -36,16 +36,16 @@ pFlow::timeControl::timeControl
ti_(dict),
startTime_
(
dict.getVal<timeValue>("startTime")
dict.getVal<TimeValueType>("startTime")
),
endTime_
(
dict.getVal<timeValue>("endTime")
dict.getVal<TimeValueType>("endTime")
),
stopAt_(endTime_),
saveInterval_
(
dict.getVal<timeValue>("saveInterval")
dict.getVal<TimeValueType>("saveInterval")
),
lastSaved_(startTime_),
performSorting_
@ -65,9 +65,9 @@ pFlow::timeControl::timeControl
pFlow::timeControl::timeControl(
dictionary& dict,
timeValue startTime,
timeValue endTime,
timeValue saveInterval,
TimeValueType startTime,
TimeValueType endTime,
TimeValueType saveInterval,
word startTimeName)
:
ti_(startTime, dict),
@ -95,9 +95,9 @@ pFlow::timeControl::timeControl(
checkForOutputToFile();
}
pFlow::timeValue pFlow::timeControl::setTime(timeValue t)
pFlow::TimeValueType pFlow::timeControl::setTime(TimeValueType t)
{
timeValue tmp = ti_.currentTime();
TimeValueType tmp = ti_.currentTime();
ti_.currentTime_ = t;
lastSaved_ = t;
checkForOutputToFile();

View File

@ -37,7 +37,7 @@ class dictionary;
class timeControl
{
public:
using timeStridedRange = stridedRange<timeValue>;
using timeStridedRange = stridedRange<TimeValueType>;
private:
@ -47,19 +47,19 @@ private:
timeInfo ti_;
// - start time of simulation
timeValue startTime_;
TimeValueType startTime_;
// - end time of simulation
timeValue endTime_;
TimeValueType endTime_;
// - stopAt
timeValue stopAt_;
TimeValueType stopAt_;
// - time interval for time folder output
timeValue saveInterval_;
TimeValueType saveInterval_;
// - the last time folder that was saved
timeValue lastSaved_;
TimeValueType lastSaved_;
bool managedExternaly_ = false;
@ -80,7 +80,7 @@ private:
inline word timeName_ = "wrongSettings"; // for managedExternamly
static
inline timeValue writeTime_ = 0; // for managedExternamly
inline TimeValueType writeTime_ = 0; // for managedExternamly
void checkForOutputToFile();
@ -92,22 +92,22 @@ public:
timeControl(
dictionary& dict,
timeValue startTime,
timeValue endTime,
timeValue saveInterval,
TimeValueType startTime,
TimeValueType endTime,
TimeValueType saveInterval,
word startTimeName);
virtual ~timeControl() = default;
timeValue dt()const
TimeValueType dt()const
{
return ti_.dt();
}
timeValue setTime(timeValue t);
TimeValueType setTime(TimeValueType t);
void setStopAt(timeValue sT)
void setStopAt(TimeValueType sT)
{
if(managedExternaly_)
{
@ -115,24 +115,24 @@ public:
}
}
timeValue startTime()const
TimeValueType startTime()const
{
return startTime_;
}
timeValue endTime()const
TimeValueType endTime()const
{
return endTime_;
}
timeValue saveInterval()const
TimeValueType saveInterval()const
{
return saveInterval_;
}
word timeName()const;
timeValue currentTime() const
TimeValueType currentTime() const
{
return ti_.currentTime();
}

View File

@ -36,16 +36,16 @@ private:
uint32 currentIter_;
// - current time of simulation
timeValue currentTime_;
TimeValueType currentTime_;
// - integration time step
timeValue dt_;
TimeValueType dt_;
inline static uint32 presicion_ = 5;
public:
timeInfo(uint32 cIter, timeValue cTime, timeValue dt)
timeInfo(uint32 cIter, TimeValueType cTime, TimeValueType dt)
: currentIter_(cIter),
currentTime_(cTime),
dt_(dt)
@ -55,31 +55,31 @@ public:
timeInfo(const dictionary& dict)
:
currentIter_(0),
currentTime_(dict.getVal<timeValue>("startTime")),
dt_( dict.getVal<timeValue>("dt"))
currentTime_(dict.getVal<TimeValueType>("startTime")),
dt_( dict.getVal<TimeValueType>("dt"))
{
presicion_ = dict.getValOrSet<uint32>("timePrecision",5);
}
timeInfo(timeValue currentTime, const dictionary& dict)
timeInfo(TimeValueType currentTime, const dictionary& dict)
:
currentIter_(0),
currentTime_(currentTime),
dt_( dict.getVal<timeValue>("dt"))
dt_( dict.getVal<TimeValueType>("dt"))
{
presicion_ = dict.getValOrSet<int32>("timePrecision",5);
}
inline const timeValue& currentTime()const
inline const TimeValueType& currentTime()const
{
return currentTime_;
}
inline const timeValue& t() const
inline const TimeValueType& t() const
{
return currentTime_;
}
inline const timeValue& dt() const
inline const TimeValueType& dt() const
{
return dt_;
}
@ -109,7 +109,7 @@ public:
inline
word prevTimeName()const
{
return real2FixedStripZeros( max(currentTime_-dt_, timeValue(0)), presicion_);
return real2FixedStripZeros( max(currentTime_-dt_, TimeValueType(0)), presicion_);
}
static

View File

@ -0,0 +1,55 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName settingsDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
// list of libraries that should be loaded during runtime;
// for example, "libPostprocessData.so" (optional)
libs ();
// Auxiliary function to be run during simulation (optional)
auxFunctions postprocessData;
// time step for integration in seconds, (mandatory)
dt 0.00001;
// start time for simulation, can be any valid value. Simulation starts from
// time folder with the same name
startTime 0;
// end time for simulation (mandatory)
endTime 10;
// time interval between each data save on disk, (mandatory)
saveInterval 0.01;
// maximum number of digits for time folder, (opetional, default is 5)
timePrecision 5;
// gravitational acceleration vector (m/s2), (mandatory)
g (0 -9.8 0); // gravity vector (m/s2)
// include a list of objects that are not normally in the save list on disk, (optional)
includeObjects (diameter);
// exculde a list of objects from saving on the disk, (optional)
excludeObjects ();
// integration method for position and velocity, (mandatory)
integrationMethod AdamsBashforth2;
// if keep the integeration history under timeFolder/integeration or not, (optional, default is no)
integrationHistory Yes;
// data writting format (ascii or binary), (mandatory)
writeFormat ascii;
// report timers (Yes or No)?, (optional, default is Yes)
timersReport Yes;
// time interval between each timer report, (optional, default is 0.04)
timersReportInterval 0.01; // time interval for reporting timers

View File

@ -27,11 +27,11 @@ Licence:
namespace pFlow
{
Map<timeValue, fileSystem> getTimeFolders(const fileSystem& path);
Map<TimeValueType, fileSystem> getTimeFolders(const fileSystem& path);
class timeFolder
{
using timeList = Map<timeValue, fileSystem>;
using timeList = Map<TimeValueType, fileSystem>;
protected:
@ -61,14 +61,14 @@ public:
}
inline
timeValue currentTime()const
TimeValueType currentTime()const
{
if(folders_.empty()) return -1;
return currentFolder_->first;
}
inline
timeValue nextTime()const
TimeValueType nextTime()const
{
auto next = currentFolder_;
next++;
@ -98,7 +98,7 @@ public:
return !finished();
}
bool setTime(timeValue upto)
bool setTime(TimeValueType upto)
{
timeList::iterator orgFolder = currentFolder_;
@ -140,14 +140,14 @@ public:
return false;
}
timeValue startTime()const
TimeValueType startTime()const
{
if(folders_.empty()) return -1;
auto [t,f] = *folders_.begin();
return t;
}
timeValue endTime()const
TimeValueType endTime()const
{
if(folders_.empty()) return -1;
auto [t,f] = *(--folders_.end());
@ -162,16 +162,16 @@ public:
};
inline
Map<timeValue, fileSystem> getTimeFolders(const fileSystem& path)
Map<TimeValueType, fileSystem> getTimeFolders(const fileSystem& path)
{
Map<timeValue, fileSystem> tFolders;
Map<TimeValueType, fileSystem> tFolders;
auto subDirs = subDirectories(path);
for(auto& subD: subDirs)
{
auto timeName = tailName(subD.wordPath(), '/');
timeValue TIME;
TimeValueType TIME;
if( auto success = readReal(timeName, TIME); success)
{
if(!tFolders.insertIf(TIME, subD))

View File

@ -0,0 +1,64 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName domainDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
// Simulation domain: every particles that goes outside this domain will be deleted
globalBox
{
min (-0.12 -0.12 0.00);
max (0.12 0.12 0.11);
}
pointSorting
{
active Yes; // optional (default: No)
dx 0.01; // optional (default: 0.01)
timeControl simulationTime; // runTime, or timeStep
startTime 0.0;
endTime 100; // optional (default: very large number)
sortingInterval 0.1; // in seconds
}
boundaries
{
left
{
type exit; // other options: periodict, reflective
}
right
{
type exit; // other options: periodict, reflective
}
bottom
{
type exit; // other options: periodict, reflective
}
top
{
type exit; // other options: periodict, reflective
}
rear
{
type exit; // other options: periodict, reflective
}
front
{
type exit; // other options: periodict, reflective
}
}

View File

@ -32,15 +32,23 @@ pFlow::pointSorting::pointSorting(const dictionary & dict)
dx_(
performSorting_()?
dict.getVal<real>("dx"):
1.0
0.01
)
{
if( performSorting_() )
REPORT(2)<<"Point sorting is "<<Yellow_Text("active")<<" in simulation"<<END_REPORT;
else
REPORT(2)<<"Point sorting is "<<Yellow_Text("inactive")<<" in simulation"<<END_REPORT;
{
REPORT(2)<<"Point sorting is "<<Yellow_Text("active")<<" in the simulation"<<END_REPORT;
dictionary dict2("pointSorting");
dict2.add("avtive", performSorting_);
dict2.add("dx", dx_);
timeControl_.write(dict2);
output.incrIndent();
output<<dict2<<endl;
output.decrIndent();
}
}
pFlow::uint32IndexContainer
pFlow::pointSorting::getSortedIndices(
const box& boundingBox,

View File

@ -50,9 +50,9 @@ public:
return performSorting_();
}
bool sortTime(uint32 iter, real t, real dt)const
bool sortTime(const timeInfo& ti)const
{
return performSorting_() && timeControl_.eventTime(iter, t, dt);
return performSorting_() && timeControl_.eventTime(ti);
}
uint32IndexContainer getSortedIndices(

View File

@ -178,7 +178,7 @@ bool pFlow::pointStructure::beforeIteration()
{
const timeInfo ti = TimeInfo();
if(pointSorting_().sortTime(ti.iter(), ti.t(), ti.dt()))
if(pointSorting_().sortTime(ti))
{
auto sortedIndices = pointSorting_().getSortedIndices(
simulationDomain_().globalBox(),

View File

@ -25,11 +25,14 @@ Licence:
pFlow::Logical::Logical(const word& l)
{
if (!evaluteWord(l, s_, yesNoSet_))
bool s;
int yesNoSet;
if (!evaluteWord(l, s, yesNoSet))
{
fatalErrorInFunction << " invalid input for Logical: " << l << endl;
fatalExit;
}
*this = Logical(s, yesNoSet);
}
pFlow::Logical::Logical(const char* ch)
@ -42,7 +45,7 @@ pFlow::Logical::evaluteWord(const word& l, bool& b, int& yesNoSet)
{
auto Ul = toUpper(l);
for (int i = 0; i < 4; ++i)
for (int i = 1; i < 5; ++i)
{
if (toUpper(YesNo__[i][0]) == Ul)
{
@ -89,20 +92,26 @@ pFlow::Logical::read(iIstream& is)
is.setBad();
return false;
}
return evaluteWord(w, s_, yesNoSet_);
bool s;
int yesNoSet;
if( evaluteWord(w, s, yesNoSet) )
{
*this = Logical(s, yesNoSet);
return true;
}
return false;
}
bool
pFlow::Logical::write(iOstream& os) const
{
if (s_)
if (s_ > 0)
{
os << YesNo__[yesNoSet_][0];
os << YesNo__[s_][0];
}
else
{
os << YesNo__[yesNoSet_][1];
os << YesNo__[-s_][1];
}
return os.check(FUNCTION_NAME);
}

View File

@ -41,24 +41,30 @@ class Logical
private:
/// bool value
bool s_ = false;
/// negative value means false
/// positive value means true
/// 0 means not set, but still valid as true
int8_t s_ = -1;
/// Set numbe of of Yes or No
int yesNoSet_ = 0;
/// Set of Yes or Nos
inline static const word YesNo__[4][2] = { { "Yes", "No" },
inline static const word YesNo__[5][2] = { { "Y", "Y" },
{ "Yes", "No" },
{ "on", "off" },
{ "true", "false" },
{ "Ok", "No" } };
/// Construct from bool and set number
inline explicit Logical(bool s, int yns)
: s_(s),
yesNoSet_(yns)
inline Logical(bool s, int yns)
{
yns = std::max(1, std::min(4, yns));
s_ = s ? static_cast<int8_t>(yns) : static_cast<int8_t>(-yns);
}
inline explicit Logical(int8_t s)
{
s_ = s;
}
public:
/// Type info
@ -79,7 +85,8 @@ public:
/// Construct from bool
inline explicit Logical(bool s)
: s_(s)
:
Logical(s, 1)
{
}
@ -104,8 +111,7 @@ public:
/// Assignment with bool
inline Logical& operator=(const bool& b)
{
s_ = b;
yesNoSet_ = 0;
*this = Logical(b);
return *this;
}
@ -114,19 +120,19 @@ public:
/// () operator, return bool value
inline bool operator()() const
{
return s_;
return s_ > 0;
}
/// Return bool value
inline explicit operator bool() const
{
return s_;
return s_ > 0;
}
/// Not operator
inline Logical operator!() const
{
return Logical(!s_, yesNoSet_);
return Logical(static_cast<int8_t>(-s_));
}
//// IO operations

View File

@ -21,7 +21,6 @@ Licence:
\brief Helper functions for built-in types.
*/
#ifndef __bTypesFunctions_hpp__
#define __bTypesFunctions_hpp__

View File

@ -61,19 +61,20 @@ using uint64 = unsigned long long int;
using word = std::string;
using timeValue = double;
/// type for time values
using TimeValueType = double;
/// type for indexing arrays and vectors
#ifdef pFlow_Build_Index64
#define Index64 1
using index = std::size_t;
using IndexType = std::size_t;
inline const char* IndexType__ = "std::size_t";
#else
#define Index64 0
using index = uint32;
using IndexType = uint32;
inline const char* IndexType__ = "uint32";
#endif
inline word
floatingPointDescription()
{

11
thirdParty/README.md vendored Normal file
View File

@ -0,0 +1,11 @@
# Third-party packages used in PhasicFlow
This folder contains the third-party packages that are used by PhasicFlow. Since the source code is under the main directory of the project, they are downloaded with the source code. But this does not mean that these packages are maintained by PhasicFlow or they are a part of the project.
## [Zoltan](./Zoltan/)
This package is used for space-decomposition and load balancing for MPI execution of the code.
## Thrust
This package is a parallel library developed by NVIDIA. It is built for either CUDA or OpenMP depending of the type of build.

133
thirdParty/Zoltan/CMakeLists.txt vendored Normal file
View File

@ -0,0 +1,133 @@
#
# A) Define the package
#
TRIBITS_PACKAGE(Zoltan)
#
# B) Set up package-specific options
#
TRIBITS_ADD_OPTION_AND_DEFINE( ${PACKAGE_NAME}_ENABLE_UINT_IDS
UNSIGNED_INT_GLOBAL_IDS
"typedef unsigned int ZOLTAN_ID_TYPE"
OFF )
TRIBITS_ADD_OPTION_AND_DEFINE( ${PACKAGE_NAME}_ENABLE_ULONG_IDS
UNSIGNED_LONG_GLOBAL_IDS
"typedef unsigned long ZOLTAN_ID_TYPE"
OFF )
TRIBITS_ADD_OPTION_AND_DEFINE( ${PACKAGE_NAME}_ENABLE_ULLONG_IDS
UNSIGNED_LONG_LONG_GLOBAL_IDS
"typedef unsigned long long ZOLTAN_ID_TYPE"
OFF )
TRIBITS_ADD_OPTION_AND_DEFINE(${PACKAGE_NAME}_ENABLE_HUND
HAVE_ZOLTAN_HUND
"Enable support for HUND in ${PACKAGE_NAME}."
OFF )
TRIBITS_ADD_OPTION_AND_DEFINE(${PACKAGE_NAME}_ENABLE_KNUTH_HASH
HAVE_ZOLTAN_KNUTH_HASH
"Enable support for Knuth's hash function in ${PACKAGE_NAME}."
OFF )
TRIBITS_ADD_OPTION_AND_DEFINE(${PACKAGE_NAME}_ENABLE_F90INTERFACE
BUILD_ZOLTAN_F90_INTERFACE
"Enable build of F90 interface to ${PACKAGE_NAME}."
OFF )
TRIBITS_ADD_OPTION_AND_DEFINE(${PACKAGE_NAME}_ENABLE_PURIFY
HAVE_PURIFY
"Enable work-arounds to purify bugs."
OFF )
OPTION(${PACKAGE_NAME}_ENABLE_CPPDRIVER
"Enable C++ driver for ${PACKAGE_NAME}."
${${PROJECT_NAME}_ENABLE_CXX} )
IF (${PROJECT_NAME}_ENABLE_CXX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK")
ENDIF()
IF(${PROJECT_NAME}_ENABLE_Fortran AND BUILD_ZOLTAN_F90_INTERFACE)
# Special Fortran compiler-specific flags
IF (${CMAKE_Fortran_COMPILER_ID} MATCHES "PGI")
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DPGI")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPGI")
ENDIF()
IF (${CMAKE_Fortran_COMPILER_ID} MATCHES "LAHEY")
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DFUJITSU")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFUJITSU")
ENDIF()
SET(ZOLTAN_BUILD_ZFDRIVE YES)
ENDIF()
#
# C) Add the libraries, tests, and examples
#
IF (NOT TPL_ENABLE_MPI)
ADD_SUBDIRECTORY(siMPI)
SET(ZOLTAN_BUILD_ZFDRIVE NO)
ENDIF()
ADD_SUBDIRECTORY(src)
TRIBITS_ADD_TEST_DIRECTORIES(src/driver)
IF(ZOLTAN_BUILD_ZFDRIVE)
# CMAKE version > 2.6.4 is needed; earlier versions use C++ compiler to link
# fdriver, while fdriver needs F90.
TRIBITS_ADD_TEST_DIRECTORIES(src/fdriver)
ENDIF()
TRIBITS_ADD_TEST_DIRECTORIES(test)
TRIBITS_ADD_EXAMPLE_DIRECTORIES(example)
TRIBITS_EXCLUDE_FILES(
test/ch_brack2_3
test/ch_bug
test/ch_degenerate
test/ch_degenerateAA
test/ch_drake
test/ch_grid20x19
test/ch_hammond
test/ch_hammond2
test/ch_hughes
test/ch_nograph
test/ch_onedbug
test/ch_random
test/ch_serial
test/ch_slac
test/hg_cage10
test/hg_diag500_4
test/hg_ewgt
test/hg_felix
test/hg_ibm03
test/hg_ml27
test/hg_nograph
test/hg_vwgt
test/nem_ti_20k
test/nem_ti_4k
test/misc_siefert
test/th
test/bin
doc/Zoltan_html/tu_html
src/ZoltanComponent
src/driver_old
src/fdriver_old
)
#
# D) Do standard postprocessing
#
TRIBITS_PACKAGE_POSTPROCESS()

45
thirdParty/Zoltan/COPYRIGHT_AND_LICENSE vendored Normal file
View File

@ -0,0 +1,45 @@
/*
* @HEADER
*
* ***********************************************************************
*
* Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
* Copyright 2012 Sandia Corporation
*
* Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
* the U.S. Government retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the Corporation nor the names of the
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Questions? Contact Karen Devine kddevin@sandia.gov
* Erik Boman egboman@sandia.gov
*
* ***********************************************************************
*
* @HEADER
*/

17
thirdParty/Zoltan/Disclaimer vendored Normal file
View File

@ -0,0 +1,17 @@
Zoltan Library for Parallel Applications
Neither Sandia, the government, the DOE, nor any of their employees, makes
any warranty, express or implied, or assumes any legal liability or
responsibility for the accuracy, completeness, or usefulness of any
information, apparatus, product, or process disclosed, or represents that
its use would not infringe privately owned rights. This information is made
available on an "AS-IS" basis.
ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
EXCLUDED HEREUNDER.
Neither Sandia nor the Government, nor their agents, officers and employees
shall be liable for any loss, damage (including, incidental, consequential
and special), injury or other casualty of whatsoever kind, or by whomsoever
caused, to the person or property of anyone arising out of or resulting from
this information, or the accuracy and validity of this information.

251
thirdParty/Zoltan/Known_Problems vendored Normal file
View File

@ -0,0 +1,251 @@
Problems existing in Zoltan.
This file was last updated on $Date$
-------------------------------------------------------------------------------
ERROR CONDITIONS IN ZOLTAN
When a processor returns from Zoltan to the application due to an error
condition, other processors do not necessarily return the same condition.
In fact, other processors may not know that the processor has quit Zoltan,
and may hang in a communication (waiting for a message that is not sent
due to the error condition). The parallel error-handling capabilities of
Zoltan will be improved in future releases.
-------------------------------------------------------------------------------
RCB/RIB ON ASCI RED
On ASCI Red, the number of context IDs (e.g., MPI Communicators) is limited
to 8192. The environment variable MPI_REUSE_CONTEXT_IDS must be set to
reuse the IDs; setting this variable, however, slows performance.
An alternative is to set Zoltan_Parameter TFLOPS_SPECIAL to "1". With
TFLOPS_SPECIAL set, communicators in RCB/RIB are not split and, thus, the
application is less likely to run out of context IDs. However, ASCI Red
also has a bug that is exposed by TFLOPS_SPECIAL; when messages that use
MPI_Send/MPI_Recv within RCB/RIB exceed the MPI_SHORT_MSG_SIZE, MPI_Recv
hangs. We do not expect these conditions to exist on future platforms and,
indeed, plan to make TFLOPS_SPECIAL obsolete in future versions of Zoltan
rather than re-work it with MPI_Irecv. -- KDD 10/5/2004
-------------------------------------------------------------------------------
ERROR CONDITIONS IN OCTREE, PARMETIS AND JOSTLE
On failure, OCTREE, ParMETIS and Jostle methods abort rather than return
error codes.
-------------------------------------------------------------------------------
ZOLTAN_INITIALIZE BUT NO ZOLTAN_FINALIZE
If Zoltan_Initialize calls MPI_Init, then MPI_Finalize
will never be called because there is no Zoltan_Finalize routine.
If the application uses MPI and calls MPI_Init and MPI_Finalize,
then there is no problem.
-------------------------------------------------------------------------------
HETEROGENEOUS ENVIRONMENTS
Some parts of Zoltan currently assume that basic data types like
integers and real numbers (floats) have identical representation
on all processors. This may not be true in a heterogeneous
environment. Specifically, the unstructured (irregular) communication
library is unsafe in a heterogeneous environment. This problem
will be corrected in a future release of Zoltan for heterogeneous
systems.
-------------------------------------------------------------------------------
F90 ISSUES
Pacific Sierra Research (PSR) Vastf90 is not currently supported due to bugs
in the compiler with no known workarounds. It is not known when or if this
compiler will be supported.
N.A.Software FortranPlus is not currently supported due to problems with the
query functions. We anticipate that this problem can be overcome, and support
will be added soon.
-------------------------------------------------------------------------------
PROBLEMS EXISTING IN PARMETIS
(Reported to the ParMETIS development team at the University of Minnesota,
metis@cs.umn.edu)
Name: Free-memory write in PartGeomKway
Version: ParMETIS 3.1.1
Symptom: Free-memory write reported by Purify and Valgrind for graphs with
no edges.
Description:
For input graphs with no (or, perhaps, few) edges, Purify and Valgrind
report writes to already freed memory as shown below.
FMW: Free memory write:
* This is occurring while in thread 22199:
SetUp(void) [setup.c:80]
PartitionSmallGraph(void) [weird.c:39]
ParMETIS_V3_PartGeomKway [gkmetis.c:214]
Zoltan_ParMetis [parmetis_interface.c:280]
Zoltan_LB [lb_balance.c:384]
Zoltan_LB_Partition [lb_balance.c:91]
run_zoltan [dr_loadbal.c:581]
main [dr_main.c:386]
__libc_start_main [libc.so.6]
_start [crt1.o]
* Writing 4 bytes to 0xfcd298 in the heap.
* Address 0xfcd298 is at the beginning of a freed block of 4 bytes.
* This block was allocated from thread -1781075296:
malloc [rtlib.o]
GKmalloc(void) [util.c:151]
idxmalloc(void) [util.c:100]
AllocateWSpace [memory.c:28]
ParMETIS_V3_PartGeomKway [gkmetis.c:123]
Zoltan_ParMetis [parmetis_interface.c:280]
Zoltan_LB [lb_balance.c:384]
Zoltan_LB_Partition [lb_balance.c:91]
run_zoltan [dr_loadbal.c:581]
main [dr_main.c:386]
__libc_start_main [libc.so.6]
_start [crt1.o]
* There have been 10 frees since this block was freed from thread 22199:
GKfree(void) [util.c:168]
Mc_MoveGraph(void) [move.c:92]
ParMETIS_V3_PartGeomKway [gkmetis.c:149]
Zoltan_ParMetis [parmetis_interface.c:280]
Zoltan_LB [lb_balance.c:384]
Zoltan_LB_Partition [lb_balance.c:91]
run_zoltan [dr_loadbal.c:581]
main [dr_main.c:386]
__libc_start_main [libc.so.6]
_start [crt1.o]
Reported: Reported 8/31/09 http://glaros.dtc.umn.edu/flyspray/task/50
Status: Reported 8/31/09
Name: PartGeom limitation
Version: ParMETIS 3.0, 3.1
Symptom: inaccurate number of partitions when # partitions != # processors
Description:
ParMETIS method PartGeom produces decompositions with #-processor
partitions only. Zoltan parameters NUM_GLOBAL_PARTITIONS and
NUM_LOCAL_PARTITIONS will be ignored.
Reported: Not yet reported.
Status: Not yet reported.
Name: vsize array freed in ParMetis
Version: ParMETIS 3.0 and 3.1
Symptom: seg. fault, core dump at runtime
Description:
When calling ParMETIS_V3_AdaptiveRepart with the vsize parameter,
ParMetis will try to free the vsize array even if it was
allocated in Zoltan. Zoltan will then try to free vsize again
later, resulting in a fatal error. As a temporary fix,
Zoltan will never call ParMetis with the vsize parameter.
Reported: 11/25/2003.
Status: Acknowledged by George Karypis.
Name: ParMETIS_V3_AdaptiveRepart and ParMETIS_V3_PartKWay crash
for zero-sized partitions.
Version: ParMETIS 3.1
Symptom: run-time error "killed by signal 8" on DEC. FPE, divide-by-zero.
Description:
Metis divides by partition size; thus, zero-sized partitions
cause a floating-point exception.
Reported: 9/9/2003.
Status: ?
Name: ParMETIS_V3_AdaptiveRepart dies for zero-sized partitions.
Version: ParMETIS 3.0
Symptom: run-time error "killed by signal 8" on DEC. FPE, divide-by-zero.
Description:
ParMETIS_V3_AdaptiveRepart divides by partition size; thus, zero-sized
partitions cause a floating-point exception. This problem is exhibited in
adaptive-partlocal3 tests. The tests actually run on Sun and Linux machines
(which don't seem to care about the divide-by-zero), but cause an FPE
signal on DEC (Compaq) machines.
Reported: 1/23/2003.
Status: Fixed in ParMetis 3.1, but new problem appeared (see above).
Name: ParMETIS_V3_AdaptiveRepart crashes when no edges.
Version: ParMETIS 3.0
Symptom: Floating point exception, divide-by-zero.
Description:
Divide-by-zero in ParMETISLib/adrivers.c, function Adaptive_Partition,
line 40.
Reported: 1/23/2003.
Status: Fixed in ParMetis 3.1.
Name: Uninitialized memory read in akwayfm.c.
Version: ParMETIS 3.0
Symptom: UMR warning.
Description:
UMR in ParMETISLib/akwayfm.c, function Moc_KWayAdaptiveRefine, near line 520.
Reported: 1/23/2003.
Status: Fixed in ParMetis 3.1.
Name: Memory leak in wave.c
Version: ParMETIS 3.0
Symptom: Some memory not freed.
Description:
Memory leak in ParMETISLib/wave.c, function WavefrontDiffusion;
memory for the following variables is not always freed:
solution, perm, workspace, cand
We believe the early return near line 111 causes the problem.
Reported: 1/23/2003.
Status: Fixed in ParMetis 3.1.
Name: tpwgts ignored for small graphs.
Version: ParMETIS 3.0
Symptom: incorrect output (partitioning)
Description:
When using ParMETIS_V3_PartKway to partition into partitions
of unequal sizes, the input array tpwgts is ignored and
uniform-sized partitions are computed. This bug shows up when
(a) the number of vertices is < 10000 and (b) only one weight
per vertex is given (ncon=1).
Reported: Reported to George Karypis and metis@cs.umn.edu on 2002/10/30.
Status: Fixed in ParMetis 3.1.
Name: AdaptiveRepart crashes on partless test.
Version: ParMETIS 3.0
Symptom: run-time segmentation violation.
Description:
ParMETIS_V3_AdaptiveRepart crashes with a SIGSEGV if
the input array _part_ contains any value greater then
the desired number of partitions, nparts. This shows up
in Zoltan's "partless" test cases.
Reported: Reported to George Karypis and metis@cs.umn.edu on 2002/12/02.
Status: Fixed in ParMetis 3.1.
Name: load imbalance tolerance
Version: ParMETIS 2.0
Symptom: missing feature
Description:
The load imbalance parameter UNBALANCE_FRACTION can
only be set at compile-time. With Zoltan it is
necessary to be able to set this parameter at run-time.
Reported: Reported to metis@cs.umn.edu on 19 Aug 1999.
Status: Fixed in version 3.0.
Name: no edges
Version: ParMETIS 2.0
Symptom: segmentation fault at run time
Description:
ParMETIS crashes if the input graph has no edges and
ParMETIS_PartKway is called. We suspect all the graph based
methods crash. From the documentation it is unclear if
a NULL pointer is a valid input for the adjncy array.
Apparently, the bug occurs both with NULL as input or
a valid pointer to an array.
Reported: Reported to metis@cs.umn.edu on 5 Oct 1999.
Status: Fixed in version 3.0.
Name: no vertices
Version: ParMETIS 2.0, 3.0, 3.1
Symptom: segmentation fault at run time
Description:
ParMETIS may crash if a processor owns no vertices.
The extent of this bug is not known (which methods are affected).
Again, it is unclear if NULL pointers are valid input.
Reported: Reported to metis@cs.umn.edu on 6 Oct 1999.
Status: Fixed in 3.0 and 3.1 for the graph methods, but not the geometric methods.
New bug report sent on 2003/08/20.
Name: partgeom bug
Version: ParMETIS 2.0
Symptom: floating point exception
Description:
For domains where the global delta_x, delta_y, or delta_z (in 3D)
is zero (e.g., all nodes lie along the y-axis), a floating point
exception can occur when the partgeom algorithm is used.
Reported: kirk@cs.umn.edu in Jan 2001.
Status: Fixed in version 3.0.
-------------------------------------------------------------------------------

370
thirdParty/Zoltan/Makefile.am vendored Normal file
View File

@ -0,0 +1,370 @@
# @HEADER
#
########################################################################
#
# Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
# Copyright 2012 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Questions? Contact Karen Devine kddevin@sandia.gov
# Erik Boman egboman@sandia.gov
#
########################################################################
#
# @HEADER
## #######################################################################
## Options to automake (rarely used - don't worry about it)
## #######################################################################
AUTOMAKE_OPTIONS = foreign
## #######################################################################
## Aclocal command (rarely used - don't worry about it)
## #######################################################################
ACLOCAL_AMFLAGS = -I config
## #######################################################################
## Additional files to be included in distribution for 'make dist'
## #######################################################################
ZOLTAN_TESTS = \
test/test_zoltan \
test/runtests \
test/ctest_zoltan.pl \
test/ch_simple \
test/hg_simple
ZOLTAN_DOCS = \
doc/Zoltan_html/Zoltan.html \
doc/Zoltan_html/Zoltan_FAQ.html \
doc/Zoltan_html/Zoltan_bugreport.html \
doc/Zoltan_html/Zoltan_cite.html \
doc/Zoltan_html/Zoltan_construction.html \
doc/Zoltan_html/Zoltan_phil.html \
doc/Zoltan_html/Zoltan_pubs.html \
doc/Zoltan_html/dev_html/brack3d.png \
doc/Zoltan_html/dev_html/dev.html \
doc/Zoltan_html/dev_html/dev_add.html \
doc/Zoltan_html/dev_html/dev_add_interface.html \
doc/Zoltan_html/dev_html/dev_add_lb.html \
doc/Zoltan_html/dev_html/dev_add_memory.html \
doc/Zoltan_html/dev_html/dev_add_params.html \
doc/Zoltan_html/dev_html/dev_add_remap.html \
doc/Zoltan_html/dev_html/dev_add_struct.html \
doc/Zoltan_html/dev_html/dev_cpp.html \
doc/Zoltan_html/dev_html/dev_degenerate.html \
doc/Zoltan_html/dev_html/dev_dist.html \
doc/Zoltan_html/dev_html/dev_dist_compile.html \
doc/Zoltan_html/dev_html/dev_dist_cvs.html \
doc/Zoltan_html/dev_html/dev_dist_dir.html \
doc/Zoltan_html/dev_html/dev_driver.html \
doc/Zoltan_html/dev_html/dev_fortran.html \
doc/Zoltan_html/dev_html/dev_hier.html \
doc/Zoltan_html/dev_html/dev_hsfc.html \
doc/Zoltan_html/dev_html/dev_intro.html \
doc/Zoltan_html/dev_html/dev_intro_coding.html \
doc/Zoltan_html/dev_html/dev_intro_philosophy.html \
doc/Zoltan_html/dev_html/dev_intro_sqe.html \
doc/Zoltan_html/dev_html/dev_lb.html \
doc/Zoltan_html/dev_html/dev_lb_interface.html \
doc/Zoltan_html/dev_html/dev_lb_structs.html \
doc/Zoltan_html/dev_html/dev_lb_types.html \
doc/Zoltan_html/dev_html/dev_mig.html \
doc/Zoltan_html/dev_html/dev_parmetis.html \
doc/Zoltan_html/dev_html/dev_phg.html \
doc/Zoltan_html/dev_html/dev_rcb.html \
doc/Zoltan_html/dev_html/dev_refs.html \
doc/Zoltan_html/dev_html/dev_reftree.html \
doc/Zoltan_html/dev_html/dev_rib.html \
doc/Zoltan_html/dev_html/dev_services.html \
doc/Zoltan_html/dev_html/dev_services_debug.html \
doc/Zoltan_html/dev_html/dev_services_hash.html \
doc/Zoltan_html/dev_html/dev_services_objlist.html \
doc/Zoltan_html/dev_html/dev_services_parallel.html \
doc/Zoltan_html/dev_html/dev_services_params.html \
doc/Zoltan_html/dev_html/dev_services_time.html \
doc/Zoltan_html/dev_html/dev_services_zoltantimer.html \
doc/Zoltan_html/dev_html/dev_test_script.html \
doc/Zoltan_html/dev_html/dev_view.html \
doc/Zoltan_html/dev_html/film2d.png \
doc/Zoltan_html/dev_html/hammondMesh.png \
doc/Zoltan_html/dev_html/hammondPoints.png \
doc/Zoltan_html/dev_html/zdrive.inp \
doc/Zoltan_html/ug_html/figures/arrow.gif \
doc/Zoltan_html/ug_html/figures/HGFigure.gif \
doc/Zoltan_html/ug_html/figures/hierexample.fig \
doc/Zoltan_html/ug_html/figures/hierexample.gif \
doc/Zoltan_html/ug_html/figures/Z.gif \
doc/Zoltan_html/ug_html/ug.html \
doc/Zoltan_html/ug_html/ug_alg.html \
doc/Zoltan_html/ug_html/ug_alg_block.html \
doc/Zoltan_html/ug_html/ug_alg_geom.html \
doc/Zoltan_html/ug_html/ug_alg_graph.html \
doc/Zoltan_html/ug_html/ug_alg_hier.html \
doc/Zoltan_html/ug_html/ug_alg_hsfc.html \
doc/Zoltan_html/ug_html/ug_alg_hypergraph.html \
doc/Zoltan_html/ug_html/ug_alg_jostle.html \
doc/Zoltan_html/ug_html/ug_alg_oct.html \
doc/Zoltan_html/ug_html/ug_alg_parkway.html \
doc/Zoltan_html/ug_html/ug_alg_parmetis.html \
doc/Zoltan_html/ug_html/ug_alg_patoh.html \
doc/Zoltan_html/ug_html/ug_alg_phg.html \
doc/Zoltan_html/ug_html/ug_alg_ptscotch.html \
doc/Zoltan_html/ug_html/ug_alg_random.html \
doc/Zoltan_html/ug_html/ug_alg_rcb.html \
doc/Zoltan_html/ug_html/ug_alg_reftree.html \
doc/Zoltan_html/ug_html/ug_alg_rib.html \
doc/Zoltan_html/ug_html/ug_alg_simple.html \
doc/Zoltan_html/ug_html/ug_backward.html \
doc/Zoltan_html/ug_html/ug_color.html \
doc/Zoltan_html/ug_html/ug_color_parallel.html \
doc/Zoltan_html/ug_html/ug_cpp.html \
doc/Zoltan_html/ug_html/ug_examples.html \
doc/Zoltan_html/ug_html/ug_examples_init.html \
doc/Zoltan_html/ug_html/ug_examples_lb.html \
doc/Zoltan_html/ug_html/ug_examples_mig.html \
doc/Zoltan_html/ug_html/ug_examples_query.html \
doc/Zoltan_html/ug_html/ug_fortran.html \
doc/Zoltan_html/ug_html/ug_graph_vs_hg.html \
doc/Zoltan_html/ug_html/ug_index.html \
doc/Zoltan_html/ug_html/ug_interface.html \
doc/Zoltan_html/ug_html/ug_interface_augment.html \
doc/Zoltan_html/ug_html/ug_interface_color.html \
doc/Zoltan_html/ug_html/ug_interface_init.html \
doc/Zoltan_html/ug_html/ug_interface_lb.html \
doc/Zoltan_html/ug_html/ug_interface_mig.html \
doc/Zoltan_html/ug_html/ug_interface_order.html \
doc/Zoltan_html/ug_html/ug_intro.html \
doc/Zoltan_html/ug_html/ug_order.html \
doc/Zoltan_html/ug_html/ug_order_parmetis.html \
doc/Zoltan_html/ug_html/ug_order_ptscotch.html \
doc/Zoltan_html/ug_html/ug_param.html \
doc/Zoltan_html/ug_html/ug_query.html \
doc/Zoltan_html/ug_html/ug_query_lb.html \
doc/Zoltan_html/ug_html/ug_query_mig.html \
doc/Zoltan_html/ug_html/ug_refs.html \
doc/Zoltan_html/ug_html/ug_release.html \
doc/Zoltan_html/ug_html/ug_usage.html \
doc/Zoltan_html/ug_html/ug_util.html \
doc/Zoltan_html/ug_html/ug_util_comm.html \
doc/Zoltan_html/ug_html/ug_util_dd.html \
doc/Zoltan_html/ug_html/ug_util_mem.html
ZOLTAN_SAMPLE = \
SampleConfigurationScripts/mac_osX_no_fortran \
SampleConfigurationScripts/linux_with_purify_zoltan_only \
SampleConfigurationScripts/mac_osX_zoltan_only \
SampleConfigurationScripts/linux_zoltan_only \
SampleConfigurationScripts/linux_trilinos_runtests \
SampleConfigurationScripts/linux_zoltan_dist \
SampleConfigurationScripts/mac_osX_zoltan_dist
ZOLTAN_CMAKE = \
CMakeLists.txt \
src/CMakeLists.txt \
src/driver/CMakeLists.txt \
src/fdriver/CMakeLists.txt \
test/CMakeLists.txt \
test/ch_simple/CMakeLists.txt \
test/hg_simple/CMakeLists.txt \
cmake/Dependencies.cmake \
cmake/Zoltan_config.h.in
EXTRA_DIST = config/generate-makeoptions.pl \
README.html README.txt \
config/strip_dup_incl_paths.pl config/strip_dup_libs.pl \
config/replace-install-prefix.pl config/string-replace.pl \
config/token-replace.pl \
Disclaimer GNU_Lesser_GPL.txt Known_Problems VERSION \
$(ZOLTAN_DOCS) $(ZOLTAN_SAMPLE) $(ZOLTAN_TESTS)
## #######################################################################
## Tools in the auxillary directory
## #######################################################################
AUX_DIST = config/install-sh config/missing config/mkinstalldirs
## #######################################################################
## Files to be deleted by 'make maintainer-clean'
## #######################################################################
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 autom4te.cache/* \
configure config.status config.log \
src/common/config-h.in src/common/stamp-h.in \
$(AUX_DIST)
#The following line helps the test harness recover from build errors.
all-local:
@echo ""
@echo "Trilinos package zoltan built successfully."
@echo ""
## #######################################################################
## Subdirectories to be make'd recursively
## #######################################################################
#We now build tests and examples through separate make targets, rather than
#during "make". We still need to conditionally include the test and example
#in SUBDIRS, even though BUILD_TESTS and BUILD_EXAMPLES will never be
#defined, so that the tests and examples are included in the distribution
#tarball.
#Add this later
if SUB_TEST
TEST_SUBDIR=
endif
if SUB_EXAMPLE
EXAMPLE_SUBDIR=example
endif
if BUILD_TESTS
tests: examples
@echo ""
@echo "Now building zoltan tests."
@echo ""
@echo "Zoltan tests use drivers and input files; no compilation necessary."
@echo ""
@echo "Finished building zoltan tests."
@echo ""
else
tests:
@echo "zoltan tests were disabled at configure time"
endif
if BUILD_EXAMPLES
examples:
@echo ""
@echo "Now building zoltan examples."
@echo ""
cd $(top_builddir)/example && $(MAKE)
@echo ""
@echo "Finished building zoltan examples."
@echo ""
install-examples:
cd $(top_builddir)/example && $(MAKE) install
else
examples:
@echo "zoltan examples were disabled at configure time"
install-examples:
@echo "zoltan examples were disabled at configure time"
endif
clean-tests:
cd $(top_builddir)/test && $(MAKE) clean
clean-examples:
cd $(top_builddir)/example && $(MAKE) clean
everything:
$(MAKE) && $(MAKE) examples && $(MAKE) tests
clean-everything:
$(MAKE) clean-examples && $(MAKE) clean-tests && $(MAKE) clean
install-everything:
$(MAKE) install && $(MAKE) install-examples
if HAVE_MPI
SIMPI_SUBDIR=
else
SIMPI_SUBDIR=siMPI
endif
SUBDIRS = $(SIMPI_SUBDIR) src $(EXAMPLE_SUBDIR) $(TEST_SUBDIR)
## #######################################################################
## The below targets allow you to use the new
## testharness to run the test suite as make targets
## #######################################################################
TRILINOS_HOME_DIR=@abs_top_srcdir@/../..
TRILINOS_BUILD_DIR=@abs_top_builddir@/../..
TRILINOS_MPI_MAX_PROC=4
TRILINOS_TEST_CATEGORY=INSTALL
runtests-serial :
$(PERL_EXE) $(TRILINOS_HOME_DIR)/commonTools/test/utilities/runtests \
--trilinos-dir=$(TRILINOS_HOME_DIR) \
--comm=serial \
--build-dir=$(TRILINOS_BUILD_DIR) \
--category=$(TRILINOS_TEST_CATEGORY) \
--output-dir=@abs_top_builddir@/test/runtests-results \
--verbosity=1 \
--packages=zoltan
runtests-mpi :
$(PERL_EXE) $(TRILINOS_HOME_DIR)/commonTools/test/utilities/runtests \
--trilinos-dir=$(TRILINOS_HOME_DIR) \
--comm=mpi \
--mpi-go=$(TRILINOS_MPI_GO) \
--build-dir=$(TRILINOS_BUILD_DIR) \
--max-proc=$(TRILINOS_MPI_MAX_PROC) \
--category=$(TRILINOS_TEST_CATEGORY) \
--output-dir=@abs_top_builddir@/test/runtests-results \
--verbosity=1 \
--packages=zoltan
## #######################################################################
## Export makefile stuff
## #######################################################################
if USING_EXPORT_MAKEFILES
install-exec-hook:
mkdir -p $(DESTDIR)$(includedir)
cp $(top_builddir)/Makefile.export.zoltan $(DESTDIR)$(includedir)/.
$(PERL_EXE) $(top_srcdir)/config/replace-install-prefix.pl \
--exec-prefix=$(exec_prefix) \
--my-export-makefile=Makefile.export.zoltan \
--my-abs-top-srcdir=@abs_top_srcdir@ \
--my-abs-incl-dirs=@abs_top_builddir@/src:@abs_top_srcdir@/src \
--my-abs-lib-dirs=@abs_top_builddir@/src
$(PERL_EXE) $(top_srcdir)/config/generate-makeoptions.pl $(top_builddir)/src/Makefile ZOLTAN > $(DESTDIR)$(includedir)/Makefile.export.zoltan.macros
uninstall-hook:
rm -f $(includedir)/Makefile.export.zoltan
rm -f $(includedir)/Makefile.export.zoltan.macros
else
install-exec-hook:
uninstall-hook:
endif
## #######################################################################

View File

@ -0,0 +1,80 @@
@HAVE_MPI_FALSE@SIMPI_INCDIR = -I@abs_top_srcdir@/siMPI/pyMPI/siMPI
@HAVE_MPI_FALSE@SIMPI_LIBS = -L@abs_top_builddir@/siMPI/pyMPI/siMPI -lsimpi
ZOLTAN_INCLUDES = -I@abs_top_builddir@/src/include -I@abs_top_srcdir@/src/include $(SIMPI_INCDIR)
#@BUILD_FORTRAN90DRIVER_TRUE@ZFORLIBS = @FCLIBS@
@USE_FORTRAN_TRUE@ZFLIBS = @FLIBS@
#The following line can be edited in the case that -lm is not available
@USE_FORTRAN_FALSE@ZFLIBS = -lm
#@BUILD_FORTRAN90DRIVER_FALSE@ZFORLIBS = $(ZFLIBS)
ZFORLIBS = $(ZFLIBS)
ZOLTAN_LIBS = @LDFLAGS@ -L@abs_top_builddir@/src -lzoltan @LIBS@ $(ZFORLIBS) $(SIMPI_LIBS)
ZOLTAN_LIBRARY_INCLUDES = -I@abs_top_builddir@/src/include -I@abs_top_srcdir@/src/include -I@abs_top_srcdir@/src/all -I@abs_top_srcdir@/src/coloring -I@abs_top_srcdir@/src/ha -I@abs_top_srcdir@/src/hier -I@abs_top_srcdir@/src/hsfc -I@abs_top_srcdir@/src/lb -I@abs_top_srcdir@/src/oct -I@abs_top_srcdir@/src/order -I@abs_top_srcdir@/src/par -I@abs_top_srcdir@/src/params -I@abs_top_srcdir@/src/tpls -I@abs_top_srcdir@/src/ccolamd -I@abs_top_srcdir@/src/phg -I@abs_top_srcdir@/src/rcb -I@abs_top_srcdir@/src/reftree -I@abs_top_srcdir@/src/timer -I@abs_top_srcdir@/src/Utilities/Communication -I@abs_top_srcdir@/src/Utilities/Timer -I@abs_top_srcdir@/src/Utilities/DDirectory -I@abs_top_srcdir@/src/Utilities/Memory -I@abs_top_srcdir@/src/Utilities/shared -I@abs_top_srcdir@/src/zz -I@abs_top_srcdir@/src/graph -I@abs_top_srcdir@/src/matrix -I@abs_top_srcdir@/src/simple $(SIMPI_INCDIR)
ZOLTAN_DEPS = @abs_top_builddir@/src/libzoltan.a
############################################################################
#
# Export MPI settings
#
############################################################################
# MPI libraries
ZOLTAN_MPI_LIBS = @MPI_LIBS@
# MPI include path
ZOLTAN_MPI_INC = @MPI_INC@
# Path to MPI libraries
ZOLTAN_MPI_LIBDIR = @MPI_LIBDIR@
# Path to MPI root
ZOLTAN_MPI_DIR = @MPI_DIR@
############################################################################
#
# Export Fortran libraries
#
############################################################################
# Fortran & standard math libs
#ZOLTAN_FCLIBS = @FCLIBS@
ZOLTAN_FLIBS = $(ZFLIBS)
# Extra libraries
ZOLTAN_EXTRA_LIBS = @LIBS@
############################################################################
#
# Export compiler settings
#
############################################################################
# Extra definitions
ZOLTAN_DEFS = @DEFS@
# Fortran compilation flags
@BUILD_FORTRAN90DRIVER_TRUE@ZOLTAN_FCFLAGS = @FCFLAGS@
@USE_FORTRAN_TRUE@ZOLTAN_FFLAGS = @FFLAGS@
# C compilation flags
ZOLTAN_CFLAGS = @CFLAGS@
# C++ compilation flags
ZOLTAN_CXXFLAGS = @CXXFLAGS@
# linker flags
ZOLTAN_LDFLAGS = @LDFLAGS@
############################################################################
#
# Export the ranlib and archiver to be used
#
############################################################################
ZOLTAN_RANLIB = @RANLIB@

1073
thirdParty/Zoltan/Makefile.in vendored Normal file

File diff suppressed because it is too large Load Diff

94
thirdParty/Zoltan/README vendored Normal file
View File

@ -0,0 +1,94 @@
# @HEADER
#
########################################################################
#
# Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
# Copyright 2012 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Questions? Contact Karen Devine kddevin@sandia.gov
# Erik Boman egboman@sandia.gov
#
########################################################################
#
# @HEADER
@HEADER
**********************************************************************
Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
Copyright 2012 Sandia Corporation
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the Corporation nor the names of the
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Questions? Contact Karen Devine kddevin@sandia.gov
Erik Boman egboman@sandia.gov
@HEADER
##############################################################################
INSTALLATION
------------
Instructions for building and installing Zoltan using CMAKE or Autotools
are at the following web site:
http://www.cs.sandia.gov/zoltan/ug_html/ug_usage.html

166
thirdParty/Zoltan/README.developer vendored Normal file
View File

@ -0,0 +1,166 @@
# @HEADER
#
########################################################################
#
# Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
# Copyright 2012 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Questions? Contact Karen Devine kddevin@sandia.gov
# Erik Boman egboman@sandia.gov
#
########################################################################
#
# @HEADER
lriesen@sandia.gov
November 29, 2010
Notes on typedefs that were just introduced in order to support 64-bit global counts and IDs:
ZOLTAN_ID_TYPE:
==============
A ZOLTAN_ID_TYPE is still the type that we use for global IDs passed in by the user. However now the ZOLTAN_ID_TYPE can be set at configuration time. It can be unsigned int, unsigned long, or unsigned long long. The default is unsigned int.
In CMake you can choose:
-D Zoltan_ENABLE_UINT_IDS:Bool=ON
-D Zoltan_ENABLE_ULONG_IDS:Bool=ON
-D Zoltan_ENABLE_ULLONG_IDS:Bool=ON
Using autoconf it's:
--with-id-type=uint
--with-id-type=ulong
--with-id-type=ullong
To print a ZOLTAN_ID_TYPE use ZOLTAN_ID_SPEC:
printf("GID: " ZOLTAN_ID_SPEC ", LID %d\n", my_gid, my_lid);
To send a ZOLTAN_ID_TYPE in an MPI message, use ZOLTAN_ID_MPI_TYPE:
MPI_Bcast(&gid, 1, ZOLTAN_ID_MPI_TYPE, 0, MPI_COMM_WORLD);
To silence compiler warnings, you can properly specify a constant of type ZOLTAN_ID_TYPE using ZOLTAN_ID_CONSTANT:
a = ZOLTAN_ID_CONSTANT(99)
ZOLTAN_GNO_TYPE:
===============
ZOLTAN_GNO_TYPE is a new typedef which Zoltan uses for global counts and for internal global IDs regardless of the definition of ZOLTAN_ID_TYPE. It is defined to be ssize_t, so it is signed and it will be 64 bits on a 64-bit architecture and 32 bits on a 32-bit architecture.
The MPI_Datatype for ZOLTAN_GNO_TYPE is returned by Zoltan_mpi_gno_type().
Any time that Zoltan creates a new problem from the application supplied problem it uses ZOLTAN_GNO_TYPE for the object IDs.
indextype and weighttype:
========================
At compile time, the Zoltan library defines indextype and weighttype to coincide with the third party graph libraries, if any, that it has been configured to work with.
The "indextype" will be the data type used by the third party library (TPL) for global IDs.
The "weighttype" will be the data type used by the TPL for weights.
Based on configure-time parameters, Zoltan will recognize and correcty set types for Metis, ParMetis, 32- or 64-bit Scotch or 32- or 64-bit PTScotch.
As a developer, it is important to know where the boundary is in the code for the use of Zoltan's types (ZOLTAN_ID_TYPE, ZOLTAN_GNO_TYPE, float) versus the types used by the TPL (indextype, weighttype). A simplified explanation is that indextype and weighttype are only used in source code that is in the "tpls" directory.
More specifically, it goes like this:
1. Zoltan calls the application query functions to obtain the graph using Zoltan's data types for IDs and weights.
2. Zoltan builds graph and matrix structures in Zoltan_ZG_Build using Zoltan's data types. (I suspect the "ZG" stands for "Zoltan Graph").
3. The graph is exported to the TPL data structures in Zoltan_ZG_Export. This is the point where arrays are converted if necessary to the data types used by the third party libraries. The C-structures with names like ZOLTAN_Third_* and others found in tpls/third_library.h use the indextype and weighttype data types.
4. Of course the TPL is called with indextype and weighttype objects.
5. Zoltan_Postprocess_Graph is called on the TPL structures and writes the ZOLTAN_Output_Part structure which uses Zoltan's data types.
6. Zoltan_Third_Export_User uses the ZOLTAN_Output_Part structure to write the part assignments to the structures returned to the user.
To print a indextype or weighttype use TPL_IDX_SPEC or TPL_WGT_SPEC respectively.
If the TPL weight type is a floating point type, then TPL_FLOAT_WEIGHT will be defined.
If the TPL weight type is an integral type, then TPL_INTEGRAL_WEIGHT will be defined.
Other useful TPL configuration macro definitions can be found in tpls/third_library_const.h.
Zoltan can be configured to use both Scotch and ParMetis as long as the 32-bit version of Scotch is used.
Assumptions:
===========
sizeof(ZOLTAN_GNO_TYPE) >= sizeof(ZOLTAN_ID_TYPE)
sizeof(ZOLTAN_ID_TYPE) >= sizeof(int)
Some changes to support 64-bit IDs:
==================================
Zoltan_Map_Create() used to assume it was handling keys that were multiples of ZOLTAN_ID_TYPEs. Now you supply the number of bytes in the key, not the number of ZOLTAN_ID_TYPEs.
Because testing of this branch involves running large memory problems, I added the function Zoltan_write_linux_meminfo() which will write out the contents of /proc/meminfo on a Linux machine. The new function Zoltan_Memory_Get_Debug() returns the debug level set in mem.c by Zoltan_Memory_Debug(). zdrive has a new input option
zoltan memory debug level = n
which will set the debug level. Then after partitioning, zdrive checks the debug level and if there was an error and it is running on a linux machine it will dump out /proc/meminfo.
I modified the configure script to define HOST_LINUX on a linux machine.
I wrote three tests in tests/Large_Data that test PHG, RCB and RIB with arbitrarily large numbers of objects. They have signal handlers that call Zoltan_write_linux_meminfo() on a Linux machine. One test can be configured to use 64-bit IDs when it has less than 2*10^9 IDs.
Limitations:
===========
The reftree and oct methods have not been converted to support 64-bit global IDs and global numbers.
INTERESTING CHART:
=================
32 and 64 bit data models (ILP - integer/long/pointer):
type LP32 ILP32 ILP64 LLP64 LP64
char 8 8 8 8 8
short 16 16 16 16 16
_int32 32
int 16 32 64 32 32
long 32 32 64 32 64
long long 64
pointer 32 32 64 64 64
ILP32 is most widely used.
LP64 is most widely used.
LLP64 is ILP32 with new 64 bit int added to it - used for Win64.

38
thirdParty/Zoltan/README.md vendored Normal file
View File

@ -0,0 +1,38 @@
# Zoltan
Zoltan Dynamic Load Balancing and Graph Algorithm Toolkit -- Distribution site
The most up-to-date version of Zoltan is in the Trilinos framework at https://github.com/trilinos/Trilinos.
This site provides stand-alone releases of Zoltan, separate from Trilinos: https://github.com/sandialabs/Zoltan/releases. Stand-alone releases of Zoltan may lag the Trilinos repo code.
You can download individual releases of Zoltan from this site, or clone the Trilinos repository
https://github.com/trilinos/Trilinos to get the most up-to-date version of Zoltan. Individual releases are tarballs that can be unzipped and built with autotools/make.
Trilinos clones include Zoltan in directory Trilinos/packages/zoltan. In this directory, you can
build Zoltan separately from Trilinos using autotools/make. Or in the Trilinos repository,
you can build Zoltan using Trilinos' cmake system.
The main Zoltan page is https://sandialabs.github.io/Zoltan/
See https://sandialabs.github.io/Zoltan/ug_html/ug_usage.html
for details on building Zoltan.
Release history: https://sandialabs.github.io/Zoltan/ug_html/ug_release.html
* Version 3.90 (4/08/21; as in Trilinos v13; d328e0e2a8a5c48a4e01d6541cd8c0eb7f364823)
* Version 3.83 (1/28/16; as in Trilinos v12.6; aaf328db7e43001ee2d3148f72f12147e51c3293)
* Version 3.82 (5/1/15; as in Trilinos v12)
* Version 3.81 (11/06/14; as in Trilinos v11.12.2)
* Version 3.8 (10/28/13; as in Trilinos v10.11)
* Version 3.6 (11/2/11; as in Trilinos v10.8)
* Version 3.501 (5/12/11; as in Trilinos v10.6 with additions)
* Version 3.3 (7/31/10; as in Trilinos v10.4)
* Version 3.2 (10/5/09)
* Version 3.1 (9/30/08)
* Version 3.0 (5/30/07)
* Version 2.1 (10/05/06)
* Version 2.0 (7/17/06)
* Version 1.5 (5/29/03)
* Version 1.4 (6/18/02)
* Version 1.3 (3/27/02) -- the Original
Questions? Email zoltan-dev@software.sandia.gov

60
thirdParty/Zoltan/ReleaseNotes.txt vendored Normal file
View File

@ -0,0 +1,60 @@
Zoltan release notes for Trilinos v12.8
Improved robustness of RCB partitioner for problems where many objects have
weight = 0 (e.g., PIC codes). Convergence is faster and the stopping
criteria are more robust.
Fixed bug that occurred when RETURN_LIST=PARTS and (Num_GID > 1 or Num_LID > 1);
GIDs and LIDs are now copied correctly into return lists.
Fixed a bug related to struct padding in the siMPI serial MPI interface.
-----------------------
Zoltan release notes for Trilinos v12.6
Minor code cleanup and bug fixes.
New Zoltan_Get_Fn interface returning pointers to callback functions.
See zoltan/src/include/zoltan.h for details.
Closest stand-alone Zoltan release is v3.83.
http://www.cs.sandia.gov/Zoltan
-----------------------
Zoltan release notes for Trilinos v11.8
Revised Scotch TPL specification in Trilinos' CMake environment to link
with all libraries needed by Scotch v6.
Fixed bug in interface to ParMETIS v4 when multiple vertex weights are used.
Fixed bug in interface to Scotch when some processor has no vertices.
-----------------------
Zoltan release notes for Trilinos v11.
Highlights are listed below; for more details, see
Trilinos/packages/zoltan/doc/Zoltan_html/ug_html/ug_release.html .
- Zoltan is now released under Trilinos' BSD license.
- The following Zoltan features are no longer supported in Trilinos v11:
+ Zoltan v1 interface (as described in Zoltan include file lbi_const.h)
+ Partitioning method OCTPART: use partitioning method HSFC instead.
- Hierarchical partitioning received several performance, interface and
testing improvements. An easier-to-use interface has been
added using simple parameters (HIER_ASSIST, PLATFORM_NAME, TOPOLOGY)
instead of callback functions; the callback function interface is still
supported.
- Memory usage in Zoltan Distributed Data Directories is improved, leading to
faster execution times for data directories and hierarchical partitioning.
- Compilation with gcc 4.7 is now supported.
- Zoltan supports PT-Scotch v5.1.12 and ParMETIS v4, as well as some older
versions of these TPLs.

View File

@ -0,0 +1,31 @@
#!/bin/csh
# Sample script for building using CMAKE on linux workstation octopi.
# 64-bit, Zoltan only.
# Clean up the mess from previous configurations.
/bin/rm -r cmake* CMake* CPack* CTest* Dart* Trilinos* Testing packages Makefile OUT*
cmake \
-D CMAKE_INSTALL_PREFIX:FILEPATH="/home/lriesen/projects/Trilinos/build" \
-D TPL_ENABLE_MPI:BOOL=ON \
-D CMAKE_C_FLAGS:STRING="-m64 -g -DZOLTAN_ID_TYPE_LONG -std=c99" \
-D CMAKE_CXX_FLAGS:STRING="-m64 -g" \
-D CMAKE_Fortran_FLAGS:STRING="-m64 -g" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-D MPIEXEC_MAX_NUMPROCS:STRING=11 \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
-D Trilinos_VERBOSE_CONFIGURE:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Zoltan_ENABLE_EXAMPLES:BOOL=ON \
-D Zoltan_ENABLE_TESTS:BOOL=ON \
-D Zoltan_ENABLE_ParMETIS:BOOL=ON \
-D ParMETIS_INCLUDE_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/all/src/ParMETIS3_1" \
-D ParMETIS_LIBRARY_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/lib/openmpi/ParMETIS3_1" \
-D Zoltan_ENABLE_Scotch:BOOL=OFF \
-D Zoltan_ENABLE_PaToH:BOOL=OFF \
.. |& tee OUTPUT.CMAKE
make |& tee OUTPUT.MAKE
make install |& tee OUTPUT.INSTALL

View File

@ -0,0 +1,36 @@
#!/bin/csh
# Sample script for building using CMAKE on linux workstation octopi.
# 64-bit, Zoltan only.
# Run in Trilinos/Obj_cmake.
# Clean up the mess from previous configurations.
/bin/rm -r cmake* CMake* CPack* CTest* Dart* Trilinos* Testing packages Makefile
cmake \
-D CMAKE_INSTALL_PREFIX:FILEPATH="/Net/local/homes/kddevin/code/trilinos/Obj_cmake" \
-D TPL_ENABLE_MPI:BOOL=ON \
-D CMAKE_C_FLAGS:STRING="-m64 -g" \
-D CMAKE_CXX_FLAGS:STRING="-m64 -g" \
-D CMAKE_Fortran_FLAGS:STRING="-m64 -g" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-D MPI_EXEC_MAX_NUMPROCS:STRING=11 \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
-D Trilinos_VERBOSE_CONFIGURE:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Zoltan_ENABLE_EXAMPLES:BOOL=ON \
-D Zoltan_ENABLE_TESTS:BOOL=ON \
-D Zoltan_ENABLE_ParMETIS:BOOL=ON \
-D ParMETIS_INCLUDE_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/all/src/ParMETIS3_1" \
-D ParMETIS_LIBRARY_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/lib/openmpi/ParMETIS3_1" \
-D Zoltan_ENABLE_Scotch:BOOL=ON \
-D Scotch_INCLUDE_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/all/src/Scotch5" \
-D Scotch_LIBRARY_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/lib/openmpi/Scotch5" \
-D Zoltan_ENABLE_PaToH:BOOL=ON \
-D PaToH_LIBRARY_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/lib" \
-D PaToH_INCLUDE_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/PaToH" \
.. |& tee OUTPUT.CMAKE
make |& tee OUTPUT.MAKE
make install |& tee OUTPUT.INSTALL

View File

@ -0,0 +1,42 @@
#!/bin/csh
# Sample script for building using CMAKE, LAM, and purify on octopi.
# 64-bit, Zoltan only.
# Run in Trilinos/Obj_pure.
# Clean up the mess from previous configurations.
/bin/rm -r cmake* CMake* CPack* CTest* Dart* Trilinos* Testing packages Makefile OUTPUT* include lib install*
set MPICCEXTRACOMP="`/opt/lam714-gcc346-pure/bin/mpicc --showme:compile`"
set MPICXXEXTRACOMP="`/opt/lam714-gcc346-pure/bin/mpiCC --showme:compile`"
set MPIEXTRALINK="`/opt/lam714-gcc346-pure/bin/mpiCC --showme:link`"
set PURIFY="/usr/local/rational/releases/PurifyPlus.7.0/i386_linux2/bin/purify"
set GCC="/usr/bin/gcc346"
set GCXX="/usr/bin/g++346"
/home/kddevin/cmake/bin/cmake \
-D CMAKE_INSTALL_PREFIX:FILEPATH="/Net/local/homes/kddevin/code/Trilinos/Obj_pure" \
-D TPL_ENABLE_MPI:BOOL=ON \
-D MPI_USE_COMPILER_WRAPPERS:BOOL=OFF \
-D MPI_BIN_DIR:STRING="/opt/lam714-gcc346-pure/bin" \
-D CMAKE_C_COMPILER:STRING="$PURIFY" \
-D CMAKE_C_FLAGS:STRING="-best-effort -follow-child-processes=yes -cache-dir=/tmp/purify -chain-length=20 $GCC -m64 -g $MPICCEXTRACOMP" \
-D CMAKE_CXX_COMPILER:STRING="$PURIFY" \
-D CMAKE_CXX_FLAGS:STRING="-best-effort -follow-child-processes=yes -cache-dir=/tmp/purify -chain-length=20 $GCXX -m64 -g $MPICXXEXTRACOMP" \
-D Trilinos_EXTRA_LINK_FLAGS:STRING="$MPIEXTRALINK" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-D MPI_EXEC_MAX_NUMPROCS:STRING=11 \
-D Trilinos_ENABLE_Fortran:BOOL=OFF \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
-D Trilinos_VERBOSE_CONFIGURE:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Zoltan_ENABLE_EXAMPLES:BOOL=OFF \
-D Zoltan_ENABLE_TESTS:BOOL=ON \
-D Zoltan_ENABLE_ParMETIS:BOOL=ON \
-D ParMETIS_LIBRARY_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/lib/lam/ParMETIS3" \
-D ParMETIS_INCLUDE_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/all/src/ParMETIS3" \
-D Zoltan_ENABLE_Scotch:BOOL=ON \
-D Scotch_LIBRARY_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/linux64/lib/lam/Scotch5" \
-D Scotch_INCLUDE_DIRS:FILEPATH="/Net/local/proj/zoltan/arch/all/src/Scotch5" \
.. |& tee OUTPUT.CMAKE
make |& tee OUTPUT.MAKE

View File

@ -0,0 +1,29 @@
#!/bin/csh
# Sample script for building in serial mode using CMAKE on linux machine godel.
# 64-bit, Zoltan only.
# Run in Trilinos/Obj_cmake.
# Clean up the mess from previous configurations.
/bin/rm -r cmake* CMake* CPack* CTest* Dart* Trilinos* Testing packages Makefile
cmake \
-D CMAKE_INSTALL_PREFIX:FILEPATH="/home/kddevin/code/Trilinos/Obj_cmake_serial" \
-D TPL_ENABLE_MPI:BOOL=OFF \
-D CMAKE_C_FLAGS:STRING="-m64 -g" \
-D CMAKE_CXX_FLAGS:STRING="-m64 -g" \
-D CMAKE_Fortran_FLAGS:STRING="-m64 -g" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
-D Trilinos_VERBOSE_CONFIGURE:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Trilinos_EXTRA_LINK_FLAGS:STRING="-lsimpi" \
-D Zoltan_ENABLE_EXAMPLES:BOOL=ON \
-D Zoltan_ENABLE_TESTS:BOOL=ON \
-D Zoltan_ENABLE_ParMETIS:BOOL=ON \
-D ParMETIS_INCLUDE_DIRS:FILEPATH="/home/kddevin/code/ParMETIS3_1_siMPI" \
-D ParMETIS_LIBRARY_DIRS:FILEPATH="/home/kddevin/code/ParMETIS3_1_siMPI" \
.. |& tee OUTPUT.CMAKE
make |& tee OUTPUT.MAKE
make install |& tee OUTPUT.INSTALL

View File

@ -0,0 +1,57 @@
#!
# Sample script for building using CMAKE on Karen's Mac OS X system.
# 64-bit, Zoltan only.
# TPLs = ParMETIS, Scotch and PaToH.
# Run in Trilinos/Obj_cmake.
# Clean up the mess from previous configurations.
/bin/rm -r cmake* CMake* CPack* CTest* Dart* Trilinos* Testing packages Makefile
setenv F77 /Users/kddevin/code/lib-m64/lam-7.1.4/bin/mpif77
cmake \
-D CMAKE_INSTALL_PREFIX:FILEPATH="/Users/kddevin/code/trilinos/Obj_cmake" \
-D TPL_ENABLE_MPI:BOOL=ON \
-D CMAKE_C_FLAGS:STRING="-m64 -g" \
-D CMAKE_CXX_FLAGS:STRING="-m64 -g" \
-D CMAKE_Fortran_FLAGS:STRING="-m64 -g" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-D MPI_EXEC_MAX_NUMPROCS:STRING=11 \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
-D Trilinos_VERBOSE_CONFIGURE:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Trilinos_EXTRA_LINK_FLAGS:STRING="-framework vecLib" \
-D Zoltan_ENABLE_EXAMPLES:BOOL=ON \
-D Zoltan_ENABLE_TESTS:BOOL=ON \
-D Zoltan_ENABLE_ParMETIS:BOOL=ON \
-D ParMETIS_INCLUDE_DIRS:FILEPATH="/Users/kddevin/code/lib-m64/ParMETIS3_1" \
-D ParMETIS_LIBRARY_DIRS:FILEPATH="/Users/kddevin/code/lib-m64/ParMETIS3_1" \
-D Zoltan_ENABLE_Scotch:BOOL=ON \
-D Scotch_INCLUDE_DIRS:FILEPATH="/Users/kddevin/code/lib-m64/scotch_5.1/include" \
-D Scotch_LIBRARY_DIRS:FILEPATH="/Users/kddevin/code/lib-m64/scotch_5.1/lib" \
-D Zoltan_ENABLE_PaToH:BOOL=ON \
-D PaToH_INCLUDE_DIRS:FILEPATH="/Users/kddevin/code/lib-m64/PaToH/dist" \
-D PaToH_LIBRARY_DIRS:FILEPATH="/Users/kddevin/code/lib-m64/PaToH/dist" \
.. |& tee OUTPUT.CMAKE
make |& tee OUTPUT.MAKE
make install |& tee OUTPUT.INSTALL
#Other useful flags.
#-D Trilinos_ENABLE_Epetra:BOOL=ON \
#-D Trilinos_ENABLE_Tpetra:BOOL=ON \
#-D Trilinos_ENABLE_Isorropia:BOOL=ON \
#-D Trilinos_ENABLE_EpetraExt:BOOL=ON \
#-D Trilinos_ENABLE_Fortran:BOOL=OFF \
#-D MPI_EXTRA_LIBRARY:FILEPATH="" \
#-D CMAKE_CXX_COMPILER:FILEPATH="mpic++" \
#-D CMAKE_C_COMPILER:FILEPATH="mpicc" \
# NOTE: I hacked my version of CMAKE, as it had errors trying to find
# install_name_tool. I changed the following file to check for
# CMAKE_INSTALL_NAME_TOOL before running FIND_PROGRAM to find it.
# I don't know why it had problems only with install_name_tool, as the
# linker, ranlib, etc., were found with no difficulty.
# /Applications/CMake\ 2.6-2.app/Contents/share/cmake-2.6/Modules/CMakeFindBinUtils.cmake

View File

@ -0,0 +1,5 @@
#!/bin/tcsh
which lamboot
lamboot
make runtests-mpi TRILINOS_MPI_GO="'mpirun -np '"

View File

@ -0,0 +1,34 @@
# Script for building Zoltan with purify on linux workstation octopi
# with openmpi.
# This is a 64-bit installation.
/bin/rm -r Makefile Makefile.export.zoltan OUTPUT.C OUTPUT.I OUTPUT.M config.cache config.log config.status* example/ include/ lib/ siMPI/ src/
set path=(/usr/local/bin $path)
setenv PURE_CC "purify -best-effort -follow-child-processes=yes -cache-dir=/tmp/purify -chain-length=20"
setenv CC "$PURE_CC gcc34 -Wall -Werror-implicit-function-declaration"
setenv CXX "$PURE_CC g++34 -Wall -Werror-implicit-function-declaration"
setenv CFLAGS "-m64 -g"
setenv CXXFLAGS "-m64 -g"
setenv CPPFLAGS "-m64 -g"
setenv FCFLAGS "-m64 -g"
setenv MPIINC `mpicc --showme:compile`
setenv MPILIB `mpicc --showme:link`
../configure -C \
--prefix=/Net/local/homes/kddevin/code/zoltan_v3.2/Obj_pure \
--enable-mpi \
--with-mpi-compilers=no \
--disable-fortran \
--with-gnumake \
--disable-zoltan-cppdriver \
--with-libs="$MPILIB" \
--with-incdirs="$MPIINC" \
|& tee OUTPUT.C
make everything |& tee OUTPUT.M
make install |& tee OUTPUT.I
# --with-parmetis \
# --with-parmetis-incdir="/Net/local/proj/zoltan/arch/all/src/ParMETIS3" \
# --with-parmetis-libdir="/Net/local/proj/zoltan/arch/linux64/lib/openmpi/ParMETIS3_1" \

View File

@ -0,0 +1,15 @@
#Script for building the Zoltan tarball on a 64-bit Linux workstation
#with OpenMPI.
#This script builds the Zoltan tarball from the Zoltan package directory.
#Assuming running script from
#/Net/local/homes/kddevin/code/zoltan_v3.1/Obj_DIST.
set path=(/usr/local/bin $path)
setenv CFLAGS -m64
setenv CXXFLAGS -m64
setenv CPPFLAGS -m64
setenv FCFLAGS -m64
../configure -C \
--prefix=/Net/local/homes/kddevin/code/zoltan_v3.1/OBJ_DIST \
--with-gnumake |& tee OUTPUT.C
make dist |& tee OUTPUT.D

View File

@ -0,0 +1,22 @@
#Script for building Zoltan only on a 64-bit Linux workstation
#with OpenMPI.
#This script builds only Zoltan from the Zoltan package directory.
#Assuming running script from
#/Net/local/homes/kddevin/code/zoltan_v3.1/Obj_linux64.
set path=(/usr/local/bin $path)
setenv CFLAGS -m64
setenv CXXFLAGS -m64
setenv CPPFLAGS -m64
setenv FCFLAGS -m64
../configure -C \
--prefix=/Net/local/homes/kddevin/code/zoltan_v3.1/Obj_linux64 \
--with-parmetis \
--with-parmetis-incdir="/Net/local/proj/zoltan/arch/all/src/ParMETIS3_1" \
--with-parmetis-libdir="/Net/local/proj/zoltan/arch/linux64/lib/openmpi/ParMETIS3_1" \
--with-scotch \
--with-scotch-incdir="/Net/local/proj/zoltan/arch/all/src/Scotch5" \
--with-scotch-libdir="/Net/local/proj/zoltan/arch/linux64/lib/openmpi/Scotch5" \
--with-gnumake |& tee OUTPUT.C
make everything |& tee OUTPUT.M
make install |& tee OUTPUT.I

View File

@ -0,0 +1,25 @@
#Script for building Zoltan and Isorropia on a 64-bit Mac OS X
#with LAM MPI on a machine with NO FORTRAN COMPILER. Note the option
#--disable-fortran.
#This script builds only Zoltan but builds it from the top-level Trilinos
#directory.
#Assuming running script from /Users/kddevin/code/trilinos_v9.0/Obj_mac64.
set path=(/Users/kddevin/code/lib-m64/lam-7.1.4/bin $path)
setenv CC /Users/kddevin/code/lib-m64/lam-7.1.4/bin/mpicc
setenv CXX /Users/kddevin/code/lib-m64/lam-7.1.4/bin/mpic++
setenv FC /Users/kddevin/code/lib-m64/lam-7.1.4/bin/mpif77
setenv CFLAGS -m64
setenv CXXFLAGS -m64
setenv CPPFLAGS -m64
setenv FCFLAGS -m64
../configure -C \
--prefix=/Users/kddevin/code/trilinos_v9.0/Obj_mac64 \
--with-parmetis \
--with-parmetis-incdir="/Users/kddevin/code/lib-m64/ParMETIS3_1" \
--with-parmetis-libdir="/Users/kddevin/code/lib-m64/ParMETIS3_1" \
--with-libs="-framework vecLib" \
--with-gnumake \
--with-cxxflags="-DLAM_BUILDING" |& tee OUTPUT.C
make everything |& tee OUTPUT.M
make install |& tee OUTPUT.I

View File

@ -0,0 +1,4 @@
# Since Mac OS X is case-insensitive, autoconf produces a bad Makefile.in
# Don't use Mac OS X until this bug is fixed.
echo "Due to bug in autoconf Makefile.in, do not make dist on a case-insensitive system."

View File

@ -0,0 +1,18 @@
#Script for building Zoltan only on a 64-bit Mac OS X with LAM mpi
#Assuming running this script from /Users/kddevin/code/zoltan_v3.1/OBJ_MAC64.
setenv CFLAGS -m64
setenv CXXFLAGS -m64
../configure \
--prefix=/Users/kddevin/code/zoltan_v3.1/OBJ_MAC64 \
--with-gnumake \
--with-parmetis \
--with-parmetis-incdir="/Users/kddevin/code/lib-m64/ParMETIS3_1" \
--with-parmetis-libdir="/Users/kddevin/code/lib-m64/ParMETIS3_1" \
--with-patoh \
--with-patoh-incdir="/Users/kddevin/code/lib-m64/PaToH/dist" \
--with-patoh-libdir="/Users/kddevin/code/lib-m64/PaToH/dist" \
|& tee OUTPUT.C
make everything |& tee OUTPUT.M
make install |& tee OUTPUT.I

2
thirdParty/Zoltan/VERSION vendored Normal file
View File

@ -0,0 +1,2 @@
To determine the exact version number, type
grep ZOLTAN_VERSION_NUMBER src/include/zoltan.h

3
thirdParty/Zoltan/bootstrap-local vendored Executable file
View File

@ -0,0 +1,3 @@
#! /bin/csh
setenv AUTOHEADER 'echo SkippingAutoHeader'
autoreconf -i -f -v

18
thirdParty/Zoltan/buildlib vendored Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
rm -rf build/ include/ lib/
mkdir build
cd build
../configure \
--prefix=$HOME/PhasicFlow/phasicFlow-v-1.0/thirdParty/Zoltan/ \
--with-gnumake \
--with-id-type=uint
--disable-tests
--disable-examples
make everything -j4
make install
cd ../

View File

@ -0,0 +1,8 @@
SET(LIB_REQUIRED_DEP_PACKAGES)
SET(LIB_OPTIONAL_DEP_PACKAGES)
SET(TEST_REQUIRED_DEP_PACKAGES)
SET(TEST_OPTIONAL_DEP_PACKAGES)
SET(LIB_REQUIRED_DEP_TPLS)
SET(LIB_OPTIONAL_DEP_TPLS MPI METIS ParMETIS PaToH Scotch Zlib CCOLAMD OVIS)
SET(TEST_REQUIRED_DEP_TPLS)
SET(TEST_OPTIONAL_DEP_TPLS)

View File

@ -0,0 +1,74 @@
/* src/include/Zoltan_config.h.in. Generated from configure.ac by autoheader. */
/* KDD Copied F77 macros from packages/epetra/cmake/Epetra_config.h.in. */
/* Define to dummy `main' function (if any) required to link to the Fortran
libraries. */
#cmakedefine F77_DUMMY_MAIN
/* Define to a macro mangling the given C identifier (in lower and upper
case), which must not contain underscores, for linking with Fortran. */
#ifndef FC_FUNC
#define FC_FUNC@F77_FUNC@
#endif
/* As FC_FUNC, but for C identifiers containing underscores. */
#ifndef FC_FUNC_
#define FC_FUNC_@F77_FUNC_@
#endif
/* Define if F77 and FC dummy `main' functions are identical. */
#cmakedefine FC_DUMMY_MAIN_EQ_F77
/* ZOLTAN_ID_TYPE is unsigned int */
#cmakedefine UNSIGNED_INT_GLOBAL_IDS
/* ZOLTAN_ID_TYPE is unsigned long */
#cmakedefine UNSIGNED_LONG_GLOBAL_IDS
/* ZOLTAN_ID_TYPE is unsigned long long */
#cmakedefine UNSIGNED_LONG_LONG_GLOBAL_IDS
/* define if we want to use MPI */
#cmakedefine HAVE_MPI
/* Define if want to build with nemesis_exodus enabled */
#cmakedefine HAVE_NEMESIS_EXODUS
/* Define if want to build with parmetis enabled */
#cmakedefine HAVE_METIS
/* Define if want to build with parmetis enabled */
#cmakedefine HAVE_PARMETIS
/* Define if want to build with patoh enabled */
#cmakedefine HAVE_PATOH
/* Define if want to build with scotch enabled */
#cmakedefine HAVE_SCOTCH
/* Define if want to build with OVIS enabled */
#cmakedefine HAVE_OVIS
/* Define if want to build with OVIS enabled */
#cmakedefine HAVE_PURIFY
/* Define if DON'T want support for MPI TPL */
#ifndef HAVE_MPI
#define NO_MPI_TPL
#endif
/* Define if want to build with zlib enabled */
#cmakedefine ZHAVE_GZIP
/* Use to have only filename when debugging memory */
#define SHORT_FILE
/* HUND support */
#cmakedefine HAVE_ZOLTAN_HUND
/* Revert to Old Hash function support */
#cmakedefine HAVE_ZOLTAN_KNUTH_HASH
#ifdef HAVE_ZOLTAN_HUND
#define CEDRIC_2D_PARTITIONS
#endif

View File

@ -0,0 +1,50 @@
dnl Check case (upper or lower) of F90 module files.
dnl Also checks module suffix, but we return only ax_cv_f90_modulecase.
AC_DEFUN([AX_F90_MODULE_CASE],[
AC_CACHE_CHECK([fortran 90 module file suffix and case],
ax_cv_f90_modulecase,
[
rm -f conftest*
cat >conftest.f <<EOF
module conftest
integer n
parameter (n=1)
end module conftest
EOF
# SGI and absoft compilers generates module name in upper case!
testname="conftest"
modcase="lower"
echo "KDDKDD CASE 1" ${FC}
if ${FC} -c conftest.f > conftest.out 2>&1 ; then
FCMODSUFFIX=`ls conftest* | grep -v conftest.f | grep -v conftest.o`
echo "KDDKDD CASE 2" ${FCMODSUFFIX}
FCMODSUFFIX=`echo "${FCMODSUFFIX}" | sed -e 's/conftest\.//g'`
if test -z "${FCMODSUFFIX}" ; then
FCMODSUFFIX=`ls CONFTEST* 2>/dev/null \
| grep -v CONFTEST.f | grep -v CONFTEST.o`
FCMODSUFFIX=`echo "${FCMODSUFFIX}" | sed -e 's/CONFTEST\.//g'`
if test -n "${FCMODSUFFIX}" ; then
testname="CONFTEST"
modcase="upper"
fi
fi
if test -z "${FCMODSUFFIX}" ; then
AC_MSG_RESULT(unknown)
# Use mod if we can't figure it out
FCMODSUFFIX="mod"
else
AC_MSG_RESULT(${FCMODSUFFIX})
fi
else
AC_MSG_RESULT(unknown)
fi
#AC_SUBST(FCMODSUFFIX)
AC_MSG_CHECKING(for case of module names)
if test "${modcase}" = "lower" ; then
AC_MSG_RESULT(lower)
ax_cv_f90_modulecase="lower"
else
AC_MSG_RESULT(upper)
ax_cv_f90_modulecase="upper"
fi
])])

View File

@ -0,0 +1,67 @@
# ===========================================================================
# http://www.nongnu.org/autoconf-archive/ax_f90_module_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_F90_MODULE_FLAG
#
# DESCRIPTION
#
# Find Fortran 90 modules inclusion flag. The module inclusion flag is
# stored in the cached variable ax_f90_modflag. An error is triggered if
# the flag cannot be found. Supported are the -I GNU compilers flag, the
# -M SUN compilers flag, and the -p Absoft Pro Fortran compiler flag.
#
# LICENSE
#
# Copyright (c) 2009 Luc Maisonobe <luc@spaceroots.org>
# Copyright (c) 2009 Julian C. Cummings <cummings@cacr.caltech.edu>
# Copyright (c) 2009 Alexander Pletzer <pletzer@txcorp.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved.
AC_DEFUN([AX_F90_MODULE_FLAG],[
AC_CACHE_CHECK([fortran 90 modules inclusion flag],
ax_cv_f90_modflag,
[AC_LANG_PUSH(Fortran)
i=0
while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
i=`expr $i + 1`
done
mkdir tmpdir_$i
cd tmpdir_$i
AC_COMPILE_IFELSE([
!234567
module conftest_module
contains
subroutine conftest_routine
write(*,'(a)') 'gotcha!'
end subroutine conftest_routine
end module conftest_module
],[],[])
cd ..
ax_cv_f90_modflag="not found"
for ax_flag in "-I " "-M" "-p"; do
if test "$ax_cv_f90_modflag" = "not found" ; then
ax_save_FCFLAGS="$FCFLAGS"
FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
AC_COMPILE_IFELSE([
!234567
program conftest_program
use conftest_module
call conftest_routine
end program conftest_program
],[ax_cv_f90_modflag="$ax_flag"],[])
FCFLAGS="$ax_save_FCFLAGS"
fi
done
rm -fr tmpdir_$i
if test "$ax_cv_f90_modflag" = "not found" ; then
AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
fi
AC_LANG_POP(Fortran)
])])

310
thirdParty/Zoltan/config/compile vendored Executable file
View File

@ -0,0 +1,310 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-01-04.17; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
# Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l*)
lib=${1#-l}
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
set x "$@" "$dir/$lib.dll.lib"
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
set x "$@" "$dir/$lib.lib"
break
fi
done
IFS=$save_IFS
test "$found" != yes && set x "$@" "$lib.lib"
shift
;;
-L*)
func_file_conv "${1#-L}"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

1522
thirdParty/Zoltan/config/config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

1766
thirdParty/Zoltan/config/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

688
thirdParty/Zoltan/config/depcomp vendored Executable file
View File

@ -0,0 +1,688 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2011-12-04.11; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
# 2011 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
# This is just like msvc7 but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvc7
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
msvc7)
if test "$libtool" = yes; then
showIncludes=-Wc,-showIncludes
else
showIncludes=-showIncludes
fi
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
if test "$stat" = 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The first sed program below extracts the file names and escapes
# backslashes for cygpath. The second sed program outputs the file
# name when reading, but also accumulates all include files in the
# hold buffer in order to output them again at the end. This only
# works with sed implementations that can handle large buffers.
sed < "$tmpdepfile" -n '
/^Note: including file: *\(.*\)/ {
s//\1/
s/\\/\\\\/g
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
s/\(.*\)/ \1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
s/.*/ /
G
p
}' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View File

@ -0,0 +1,88 @@
#!/usr/bin/perl -w
#
# This perl script graps a bunch of make macro definitions
# generated for Teuchos that can be used in other makefiles.
# This is dumped to stdout and can be redirected to build
# a makefile.
#
# Note, this script must be maintained to be current for
# the Teuchos makefile.
#
use strict;
if( !((@ARGV) && scalar(@ARGV)==2) ) {
die "Error, this script takes two and only two arguments (makefile_name package_name).!\n";
}
my $makefile_name = shift;
my $package_name = shift;
#
# List the macros you want to grep and include in the output
#
my @macros =
(
"CC"
,"CXX"
,"F77"
,"FC"
,"CXXLD"
,"DEFS"
,"CPPFLAGS"
,"CFLAGS"
,"CXXFLAGS"
,"FFLAGS"
,"FCFLAGS"
,"LDFLAGS"
,"FLIBS"
,"BLAS_LIBS"
,"LAPACK_LIBS"
,"prefix"
,"AR"
,"ALTERNATE_AR"
,"libteuchos_a_AR"
,"RANLIB"
);
open FILE_IN, "<$makefile_name" || die "The file $makefile_name could not be opended for input\n";
my @makefile_name_array = <FILE_IN>;
close FILE_IN;
#
# Find the above macros and append "${package_name}_" to the beginning.
#
my @new_macros;
my $add_next_line = 0;
foreach( @makefile_name_array ) {
my $line = $_;
if($add_next_line) {
push @new_macros, $line;
if( substr($line,-1,1) eq "\\" ) {
$add_next_line = 1;
}
else {
$add_next_line = 0;
}
next;
}
#print "Line = $line";
foreach( @macros ) {
my $macro_search = "^${_} ";
#print "Macro search = \'$macro_search\'\n";
if( $line=~/$macro_search/ ) {
#print "Adding Macro!\n";
my $find_str = '\(CXX\)';
my $replace_str = "(${package_name}_CXX)";
$line=~s/$find_str/$replace_str/;
push @new_macros, "${package_name}_${line}";
if( substr($line,-2,1) eq "\\" ) {
$add_next_line = 1;
}
else {
$add_next_line = 0;
}
}
}
}
print join("",@new_macros);

527
thirdParty/Zoltan/config/install-sh vendored Executable file
View File

@ -0,0 +1,527 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2011-01-19.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
# Protect names problematic for `test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for `test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for `test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

331
thirdParty/Zoltan/config/missing vendored Executable file
View File

@ -0,0 +1,331 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2012-01-06.13; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
\`g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# normalize program name to check for.
program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program). This is about non-GNU programs, so use $1 not
# $program.
case $1 in
lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $program in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te*)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison*|yacc*)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG=\${$#}
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex*|flex*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG=\${$#}
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit $?
fi
;;
makeinfo*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View File

@ -0,0 +1,89 @@
#!/usr/bin/perl -w
use strict;
use Getopt::Long;
#
# This script is called to do a set of text replacements for installing
# a Makefile.export.package file so that external clients can use it.
#
# Read in commandline arguments
#
my $exec_prefix = ""; # [required] Abs path to base installation directory (i.e. --prefix=??? option passed to configure)
my $my_export_makefile = ""; # [required] Name only of installed Makefile.export.package file
my $my_top_srcdir = ""; # [required] Abs path to this package's top source directory
my $my_incl_dirs = ""; # [required] Abs path to this package's include directories
my $my_lib_dirs = ""; # [optional] Abs path to this package's library directories (if any exist)
my $dep_package_builddirs = ""; # [optional] Abs paths to other directly dependent framework package build directories (if any exist)
GetOptions(
"exec-prefix=s" => \$exec_prefix,
"my-export-makefile=s" => \$my_export_makefile,
"my-abs-top-srcdir=s" => \$my_top_srcdir,
"my-abs-incl-dirs=s" => \$my_incl_dirs,
"my-abs-lib-dirs=s" => \$my_lib_dirs,
"dep-package-abs-builddirs=s" => \$dep_package_builddirs
);
#
# Validate commandline arguments
#
scalar(@ARGV) == 0 || die;
$exec_prefix ne "" || die;
$my_export_makefile ne "" || die;
$my_top_srcdir ne "" || die;
$my_incl_dirs ne "" || die;
#
# Interpret commandline arguments
#
$exec_prefix = remove_rel_paths($exec_prefix);
my @my_incl_dirs = split(":",$my_incl_dirs);
my @my_lib_dirs = split(":",$my_lib_dirs);
my @dep_export_package_builddirs = split(":",$dep_package_builddirs);
#
# Do the replacements
#
my $my_abs_export_makefile = "${exec_prefix}/include/${my_export_makefile}";
my $cmnd_base = "${my_top_srcdir}/config/token-replace.pl ";
#
foreach(@dep_export_package_builddirs) {
if($_ ne "") {
run_cmnd($cmnd_base . "${_} ${exec_prefix}/include ${my_abs_export_makefile} ${my_abs_export_makefile}");
}
}
#
foreach(@my_incl_dirs) {
if($_ ne "") {
run_cmnd($cmnd_base . "-I${_} -I${exec_prefix}/include ${my_abs_export_makefile} ${my_abs_export_makefile}");
}
}
#
foreach(@my_lib_dirs) {
if($_ ne "") {
run_cmnd($cmnd_base . "-L${_} -L${exec_prefix}/lib ${my_abs_export_makefile} ${my_abs_export_makefile}");
}
}
#
run_cmnd($cmnd_base . "${my_top_srcdir}/config ${exec_prefix}/include ${my_abs_export_makefile} ${my_abs_export_makefile}");
#
# Subroutines
#
sub remove_rel_paths {
my $entry_in = shift;
if ($entry_in=~/-L\.\./) {
return $entry_in;
}
my @paths = split("/",$entry_in);
my @new_paths;
foreach( @paths ) {
if( !($_=~/\.\./) ) {
push @new_paths, $_;
}
else {
pop @new_paths
}
}
return join("/",@new_paths);
}
sub run_cmnd {
my $cmnd = shift;
#print "\n", $cmnd, "\n";
system($cmnd)==0 || die;
}

43
thirdParty/Zoltan/config/string-replace.pl vendored Executable file
View File

@ -0,0 +1,43 @@
#!/usr/bin/perl -w
#
# This perl script replaces a string with another string.
# Here it is allowd for file_in and file_out to be the
# same file.
#
use strict;
#
my $g_use_msg =
"Use: string-replace.pl find_string replacement_string file_in file_out\n";
if( scalar(@ARGV) < 4 ) {
print STDERR $g_use_msg;
exit(-1);
}
#
my $find_string = shift;
my $replacement_string = shift;
my $file_in_name = shift;
my $file_out_name = shift;
#
#
if($file_in_name=~/CVS/) {
# print "Do not replace in CVS\n";
exit;
}
#
open FILE_IN, "<$file_in_name" || die "The file $file_in_name could not be opended for input\n";
my @file_in_array = <FILE_IN>;
close FILE_IN;
#
my @file_out_array;
my $did_replacement = 0;
foreach(@file_in_array) {
#print $_;
$did_replacement = 1 if $_=~s/$find_string/$replacement_string/g;
#print $_;
push @file_out_array, $_;
}
if($did_replacement || $file_out_name ne $file_in_name) {
open FILE_OUT, ">$file_out_name" || die "The file $file_out_name could not be opended for output\n";
print FILE_OUT @file_out_array;
close FILE_OUT;
}

View File

@ -0,0 +1,44 @@
#!/usr/bin/perl -w
# This perl script removes duplicate include paths left to the right
use strict;
my @all_incl_paths = @ARGV;
my @cleaned_up_incl_paths;
foreach( @all_incl_paths ) {
$_ = remove_rel_paths($_);
if( !($_=~/-I/) ) {
push @cleaned_up_incl_paths, $_;
}
elsif( !entry_exists($_,\@cleaned_up_incl_paths) ) {
push @cleaned_up_incl_paths, $_;
}
}
print join( " ", @cleaned_up_incl_paths );
#
# Subroutines
#
sub entry_exists {
my $entry = shift; # String
my $list = shift; # Reference to an array
foreach( @$list ) {
if( $entry eq $_ ) { return 1; }
}
return 0;
}
#
sub remove_rel_paths {
my $entry_in = shift;
if ($entry_in=~/-I\.\./) {
return $entry_in;
}
my @paths = split("/",$entry_in);
my @new_paths;
foreach( @paths ) {
if( !($_=~/\.\./) ) {
push @new_paths, $_;
}
else {
pop @new_paths
}
}
return join("/",@new_paths);
}

69
thirdParty/Zoltan/config/strip_dup_libs.pl vendored Executable file
View File

@ -0,0 +1,69 @@
#!/usr/bin/perl -w
# This perl script removes duplicate libraries from the right to the left and
# removes duplicate -L library paths from the left to the right
use strict;
my @all_libs = @ARGV;
#
# Move from left to right and remove duplicate -l libraries
#
my @cleaned_up_libs_first;
foreach( reverse @all_libs ) {
$_ = remove_rel_paths($_);
if( $_=~/-L/ ) {
unshift @cleaned_up_libs_first, $_;
}
else {
if( !entry_exists($_,\@cleaned_up_libs_first) ) {
unshift @cleaned_up_libs_first, $_;
}
}
}
#
# Move from right to left and remove duplicate -L library paths
#
my @cleaned_up_libs;
foreach( @cleaned_up_libs_first ) {
$_ = remove_rel_paths($_);
if( !($_=~/-L/) ) {
push @cleaned_up_libs, $_;
}
elsif( !entry_exists($_,\@cleaned_up_libs) ) {
push @cleaned_up_libs, $_;
}
}
#
# Print the new list of libraries and paths
#
print join( " ", @cleaned_up_libs );
#
# Subroutines
#
sub entry_exists {
my $entry = shift; # String
my $list = shift; # Reference to an array
foreach( @$list ) {
if( $entry eq $_ ) { return 1; }
}
return 0;
}
#
sub remove_rel_paths {
my $entry_in = shift;
if ($entry_in=~/-L\.\./) {
return $entry_in;
}
my @paths = split("/",$entry_in);
my @new_paths;
foreach( @paths ) {
if( !($_=~/\.\./) ) {
push @new_paths, $_;
}
else {
pop @new_paths
}
}
return join("/",@new_paths);
}

View File

@ -0,0 +1,67 @@
dnl @synopsis TAC_ARG_CHECK_MPI
dnl
dnl Check to make sure any definitions set in TAC_ARG_CONFIG_MPI
dnl are valid, set the MPI flags. Test MPI compile using C++ compiler.
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_CHECK_MPI],
[
if test "X${HAVE_PKG_MPI}" = "Xyes"; then
if test -n "${MPI_DIR}" && test -z "${MPI_INC}"; then
MPI_INC="${MPI_DIR}/include"
fi
if test -n "${MPI_INC}"; then
CPPFLAGS="${CPPFLAGS} -I${MPI_INC}"
fi
AC_LANG_CPLUSPLUS
AC_MSG_CHECKING(for mpi.h)
AC_TRY_CPP([#include "mpi.h"],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
echo "-----"
echo "Cannot link simple MPI program."
echo "Try --with-mpi-compilers to specify MPI compilers."
echo "Or try --with-mpi-libs, --with-mpi-incdir, --with-mpi-libdir"
echo "to specify all the specific MPI compile options."
echo "-----"
AC_MSG_ERROR(MPI cannot link)
])
if test -n "${MPI_DIR}" && test -z "${MPI_LIBDIR}"; then
MPI_LIBDIR="${MPI_DIR}/lib"
fi
if test -n "${MPI_LIBDIR}"; then
LDFLAGS="${LDFLAGS} -L${MPI_LIBDIR}"
fi
if test -z "${MPI_LIBS}" && test -n "${MPI_LIBDIR}"; then
MPI_LIBS="-lmpi"
fi
if test -n "${MPI_LIBS}"; then
LIBS="${MPI_LIBS} ${LIBS}"
fi
# AC_LANG_CPLUSPLUS
# AC_MSG_CHECKING(whether MPI will link using C++ compiler)
# AC_TRY_LINK([#include <mpi.h>],
# [int c; char** v; MPI_Init(&c,&v);],
# [AC_MSG_RESULT(yes)],
# [AC_MSG_RESULT(no)
# echo "-----"
# echo "Cannot link simple MPI program."
# echo "Or try --with-mpi-libs, --with-mpi-incdir, --with-mpi-libdir"
# echo "to specify all the specific MPI compile options."
# echo "-----"
# AC_MSG_ERROR(MPI cannot link)]
# )
fi
])

View File

@ -0,0 +1,232 @@
dnl @synopsis TAC_ARG_CONFIG_MPI
dnl
dnl Test a variety of MPI options:
dnl --enable-mpi - Turns MPI compiling mode on
dnl --with-mpi - specify root directory of MPI
dnl --with-mpi-compilers - Turns on MPI compiling mode and sets the MPI C++
dnl compiler = mpicxx, mpic++ or mpiCC,
dnl the MPI C compiler = mpicc and
dnl the MPI Fortran compiler = mpif77
dnl --with-mpi-incdir - specify include directory for MPI
dnl --with-mpi-libs - specify MPI libraries
dnl --with-mpi-libdir - specify location of MPI libraries
dnl
dnl If any of these options are set, HAVE_MPI will be defined for both
dnl Autoconf and Automake, and HAVE_MPI will be defined in the
dnl generated config.h file
dnl
dnl
dnl @author Mike Heroux <maherou@sandia.gov>
dnl Modified 12/26/2007 by Jim Willenbring to skip the Fortran compiler
dnl check if Fortran is not enabled.
dnl
AC_DEFUN([TAC_ARG_CONFIG_MPI],
[
AC_ARG_ENABLE(mpi,
[AC_HELP_STRING([--enable-mpi],[MPI support])],
[HAVE_PKG_MPI=$enableval],
[HAVE_PKG_MPI=yes]
)
AC_ARG_WITH(mpi-compilers,
[AC_HELP_STRING([--with-mpi-compilers=PATH],
[use MPI compilers mpicc, mpif77, and mpicxx, mpic++ or mpiCC in the specified path or in the default path if no path is specified. Enables MPI])],
[
if test X${withval} != Xno; then
HAVE_PKG_MPI=yes
if test X${withval} = Xyes; then
# Check for mpicxx, if it does not exist, check for mpic++, if it does
# not exist, use mpiCC instead.
AC_CHECK_PROG(MPI_TEMP_CXX, mpicxx, mpicxx, no)
if test X${MPI_TEMP_CXX} = Xno; then
AC_CHECK_PROG(MPI_CXX, mpic++, mpic++, mpiCC)
else
MPI_CXX=${MPI_TEMP_CXX}
fi
MPI_CC=mpicc
MPI_F77=mpif77
MPI_F90=mpif90
else
if test -f ${withval}/mpicxx; then
MPI_CXX=${withval}/mpicxx
elif test -f ${withval}/mpic++; then
MPI_CXX=${withval}/mpic++
else
MPI_CXX=${withval}/mpiCC
fi
MPI_CC=${withval}/mpicc
MPI_F77=${withval}/mpif77
MPI_F90=${withval}/mpif90
fi
fi
],
[
HAVE_PKG_MPI=yes
# Check for mpicxx, if it does not exist, check for mpic++, if it does
# not exist, use mpiCC instead.
AC_CHECK_PROG(MPI_TEMP_CXX, mpicxx, mpicxx, no)
if test X${MPI_TEMP_CXX} = Xno; then
AC_CHECK_PROG(MPI_CXX, mpic++, mpic++, mpiCC)
else
MPI_CXX=${MPI_TEMP_CXX}
fi
MPI_CC=mpicc
MPI_F77=mpif77
MPI_F90=mpif90
]
)
AC_ARG_WITH(mpi,
[AC_HELP_STRING([--with-mpi=MPIROOT],[use MPI root directory (enables MPI)])],
[
HAVE_PKG_MPI=yes
MPI_DIR=${withval}
AC_MSG_CHECKING(MPI directory)
AC_MSG_RESULT([${MPI_DIR}])
]
)
#AC_ARG_WITH(mpi-include,
#[AC_HELP_STRING([--with-mpi-include],[Obsolete. Use --with-mpi-incdir=DIR instead. Do not prefix DIR with '-I'.])],
#[AC_MSG_ERROR([--with-mpi-include is an obsolte option. Use --with-mpi-incdir=DIR instead. Do not prefix DIR with '-I'. For example '--with-mpi-incdir=/usr/lam_path/include'.])]
#)
AC_ARG_WITH(mpi-libs,
[AC_HELP_STRING([--with-mpi-libs="LIBS"],[MPI libraries @<:@"-lmpi"@:>@])],
[
MPI_LIBS=${withval}
AC_MSG_CHECKING(user-defined MPI libraries)
AC_MSG_RESULT([${MPI_LIBS}])
]
)
AC_ARG_WITH(mpi-incdir,
[AC_HELP_STRING([--with-mpi-incdir=DIR],[MPI include directory @<:@MPIROOT/include@:>@ Do not use -I])],
[
MPI_INC=${withval}
AC_MSG_CHECKING(user-defined MPI includes)
AC_MSG_RESULT([${MPI_INC}])
]
)
AC_ARG_WITH(mpi-libdir,
[AC_HELP_STRING([--with-mpi-libdir=DIR],[MPI library directory @<:@MPIROOT/lib@:>@ Do not use -L])],
[
MPI_LIBDIR=${withval}
AC_MSG_CHECKING(user-defined MPI library directory)
AC_MSG_RESULT([${MPI_LIBDIR}])
]
)
AC_MSG_CHECKING(whether we are using MPI)
AC_MSG_RESULT([${HAVE_PKG_MPI}])
if test "X${HAVE_PKG_MPI}" = "Xyes"; then
AC_DEFINE(HAVE_MPI,,[define if we want to use MPI])
fi
dnl Define Automake version of HAVE_MPI if appropriate
AM_CONDITIONAL(HAVE_MPI, [test "X${HAVE_PKG_MPI}" = "Xyes"])
dnl
dnl --------------------------------------------------------------------
dnl Check for MPI compilers (must be done *before* AC_PROG_CXX,
dnl AC_PROG_CC and AC_PROG_F77)
dnl
dnl --------------------------------------------------------------------
if test "X$ac_cv_use_zoltan_cppdriver" = "Xyes"; then
if test -n "${MPI_CXX}"; then
if test -f ${MPI_CXX}; then
MPI_CXX_EXISTS=yes
else
AC_CHECK_PROG(MPI_CXX_EXISTS, ${MPI_CXX}, yes, no)
fi
if test "X${MPI_CXX_EXISTS}" = "Xyes"; then
CXX=${MPI_CXX}
else
echo "-----"
echo "Cannot find MPI C++ compiler ${MPI_CXX}."
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH"
echo "or specify a C++ compiler using CXX=<compiler>"
echo "Do not use --with-mpi-compilers if using CXX=<compiler>"
echo "-----"
AC_MSG_ERROR([MPI C++ compiler (${MPI_CXX}) not found.])
fi
fi
fi dnl ac_cv_use_zoltan_cppdriver
if test -n "${MPI_CC}"; then
if test -f ${MPI_CC}; then
MPI_CC_EXISTS=yes
else
AC_CHECK_PROG(MPI_CC_EXISTS, ${MPI_CC}, yes, no)
fi
if test "X${MPI_CC_EXISTS}" = "Xyes"; then
CC=${MPI_CC}
else
echo "-----"
echo "Cannot find MPI C compiler ${MPI_CC}."
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH"
echo "or specify a C compiler using CC=<compiler>"
echo "Do not use --with-mpi-compilers if using CC=<compiler>"
echo "-----"
AC_MSG_ERROR([MPI C compiler (${MPI_CC}) not found.])
fi
fi
if test "X$ac_cv_use_fortran" = "Xyes"; then
if test -n "${MPI_F77}"; then
if test -f ${MPI_F77}; then
MPI_F77_EXISTS=yes
else
AC_CHECK_PROG(MPI_F77_EXISTS, ${MPI_F77}, yes, no)
fi
if test "X${MPI_F77_EXISTS}" = "Xyes"; then
F77=${MPI_F77}
else
echo "-----"
echo "Cannot find MPI Fortran compiler ${MPI_F77}."
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH"
echo "or specify a Fortran 77 compiler using F77=<compiler>"
echo "Do not use --with-mpi-compilers if using F77=<compiler>"
echo "-----"
AC_MSG_ERROR([MPI Fortran 77 compiler (${MPI_F77}) not found.])
fi
fi
if test "X$ac_cv_use_fortran90" = "Xyes"; then
if test -n "${MPI_F90}"; then
if test -f ${MPI_F90}; then
MPI_F90_EXISTS=yes
else
AC_CHECK_PROG(MPI_F90_EXISTS, ${MPI_F90}, yes, no)
fi
if test "X${MPI_F90_EXISTS}" = "Xyes"; then
FC=${MPI_F90}
else
echo "-----"
echo "Cannot find MPI Fortran compiler ${MPI_F90}."
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH"
echo "or specify a Fortran compiler using FC=<compiler>"
echo "Do not use --with-mpi-compilers if using FC=<compiler>"
echo "-----"
AC_MSG_ERROR([MPI Fortran compiler (${MPI_F90}) not found.])
fi
fi
fi dnl ac_cv_use_fortran90
fi dnl ac_cv_use_fortran
])

View File

@ -0,0 +1,76 @@
dnl Enables export makefile specific code
dnl
dnl The following AM_CONDITIONALS are set for makefiles to access:
dnl USING_EXPORT_MAKEFILES
dnl USING_PERL via TAC_ARG_WITH_PERL
dnl USING_GNUMAKE
dnl
dnl The following AC_DEFINES are set:
dnl HAVE_EXPORT_MAKEFILES
dnl
dnl the following variables are set:
dnl PERL_EXE for the perl executable via TAC_ARG_WITH_PERL
dnl
dnl This file was based on tac_arg_enable_feature.m4 by Mike Heroux
dnl @author Roger Pawlowski <rppawlo@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_ENABLE_EXPORT_MAKEFILES],
[
AC_ARG_ENABLE(export-makefiles,
AC_HELP_STRING([--enable-export-makefiles],[Creates export makefiles in the install (prefix) directory. This option requires perl to be set in your path or defined with --with-perl=<perl executable>. Note that the export makefiles are always created and used in the build directory, but will not be installable without this option to change the paths. (default is $1)]),
ac_cv_use_export_makefiles=$enableval,
ac_cv_use_export_makefiles=$1)
AC_MSG_CHECKING(whether to build export makefiles)
if test "X$ac_cv_use_export_makefiles" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_EXPORT_MAKEFILES],,[Define if you want to build export makefiles.])
else
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(USING_EXPORT_MAKEFILES, test X${ac_cv_use_export_makefiles} = Xyes)
# Check for perl to run scripts (Required dependency)
TAC_ARG_WITH_PERL
if test "X$HAVE_PERL" != "Xyes" &&
test "X$ac_cv_use_export_makefiles" != "Xno"; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([Failed to find the perl executable. The flag --enable-export-makefiles requires perl to be either in your path or explicitly defined by the flag --with-perl=<executable>. If you do not require the export makefiles to be installed via 'make install', you can disable the export makefiles with --disable-export-makefiles.])
fi
# Check for using gnumake to clean up link lines via
# gnumake's "shell" command. Optional dependency.
AC_DEFUN([TAC_ARG_WITH_GNUMAKE],
[
AC_ARG_WITH(gnumake,
AC_HELP_STRING([--with-gnumake],[Gnu's make has special functions we can use to eliminate redundant paths in the build and link lines. Enable this if you use gnu-make to build Trilinos. This requires that perl is in your path or that you have specified the perl executable with --with-perl=<perl executable>. Configure will check for the existence of the perl executable and quit with an error if it is not found. (default is no)]),
ac_cv_use_gnumake=$withval, ac_cv_use_gnumake=no)
AC_MSG_CHECKING(whether gnumake specific code should be enabled)
if test "X$ac_cv_use_gnumake" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_GNUMAKE],,[Define if you are using gnumake - this will shorten your link lines.])
else
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(USING_GNUMAKE, test "X$ac_cv_use_gnumake" = "Xyes")
])
TAC_ARG_WITH_GNUMAKE
if test "X$HAVE_PERL" != "Xyes" &&
test "X$ac_cv_use_gnumake" != "Xno"; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([The flag --with-gnumake requires perl to be in your path. The perl executable can alternatively be explicitly defined by the flag --with-perl=<executable>.])
fi
])

View File

@ -0,0 +1,40 @@
dnl @synopsis TAC_ARG_ENABLE_FEATURE(FEATURE_NAME, FEATURE_DESCRIPTION, HAVE_NAME, DEFAULT_VAL)
dnl
dnl Test for --enable-${FEATURE_NAME} and set to DEFAULT_VAL value if feature not specified.
dnl Also calls AC_DEFINE to define HAVE_${HAVE_NAME} if value is not equal to "no"
dnl
dnl Use this macro to help defining whether or not optional
dnl features* should compiled. For example:
dnl
dnl TAC_ARG_ENABLE_FEATURE(epetra, [Configure and build epetra], EPETRA, yes)
dnl
dnl will test for --enable-epetra when configure is run. If it is defined
dnl and not set to "no" or not defined (default is "yes") then HAVE_EPETRA will
dnl be defined, if --enable-epetra is defined to be "no", HAVE_EPETRA will not
dnl be defined.
dnl
dnl *NOTE: epetra, aztecoo, komplex, ifpack, and other software found in
dnl subdirectories of Trilinos/packages are "packages" in their own right.
dnl However, these packages are also "features" of the larger package
dnl "Trilinos". Therefore, when configuring from the Trilinos directory,
dnl it is appropriate to refer to these software packages as "features".
dnl
dnl This file was based on tac_arg_with_package.m4 by Mike Heroux
dnl @author James Willenbring <jmwille@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_ENABLE_FEATURE],
[
AC_ARG_ENABLE([$1],
AC_HELP_STRING([--enable-$1],[$2 (default is [$4])]),
ac_cv_use_$1=$enableval, ac_cv_use_$1=$4)
AC_MSG_CHECKING(whether to use [$1])
if test "X$ac_cv_use_$1" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_$3],,[Define if want to build $1])
else
AC_MSG_RESULT(no)
fi
])

View File

@ -0,0 +1,52 @@
dnl @synopsis TAC_ARG_ENABLE_FEATURE_SUB(FEATURE_NAME, SUB_FEATURE_NAME, FEATURE_DESCRIPTION, HAVE_NAME, DEFAULT_VAL)
dnl
dnl This hack gets around the fact that TAC_ARG_ENABLE_FEATURE does not support underscores
dnl in its feature names. TAC_ARG_ENABLE_FEATURE_SUB allows exactly one underscore. Not great,
dnl but arguably better than supporting no underscores.
dnl
dnl TAC_ARG_ENABLE_FEATURE(feature-sub, [Configure and build feature-sub], FEATURE_SUB, yes)
dnl fails because tac_arg_enable_feature tests for ac_cv_use_feature-sub which gets
dnl rejected because the `-' is not allowed in variables. (AC_ARG_ENABLE sets ac_cv_use_feature_sub
dnl to avoid this problem.) Use:
dnl
dnl TAC_ARG_ENABLE_FEATURE(feature, sub, [Configure and build feature-sub], FEATURE_SUB, yes)
dnl instead.
dnl
dnl Test for --enable-${FEATURE_NAME} and set to DEFAULT_VAL value if feature not specified.
dnl Also calls AC_DEFINE to define HAVE_${HAVE_NAME} if value is not equal to "no"
dnl
dnl Use this macro to help defining whether or not optional
dnl features* should compiled. For example:
dnl
dnl TAC_ARG_ENABLE_FEATURE(epetra, [Configure and build epetra], EPETRA, yes)
dnl
dnl will test for --enable-epetra when configure is run. If it is defined
dnl and not set to "no" or not defined (default is "yes") then HAVE_EPETRA will
dnl be defined, if --enable-epetra is defined to be "no", HAVE_EPETRA will not
dnl be defined.
dnl
dnl *NOTE: epetra, aztecoo, komplex, ifpack, and other software found in
dnl subdirectories of Trilinos/packages are "packages" in their own right.
dnl However, these packages are also "features" of the larger package
dnl "Trilinos". Therefore, when configuring from the Trilinos directory,
dnl it is appropriate to refer to these software packages as "features".
dnl
dnl This file was based on tac_arg_enable_package.m4 by Jim Willenbring
dnl @author Ken Stanley <ksstanl@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_ENABLE_FEATURE_SUB],
[
AC_ARG_ENABLE([$1-$2],
AC_HELP_STRING([--enable-$1-$2],[$3 (default is [$5])]),
ac_cv_use_$1_$2=$enableval, ac_cv_use_$1_$2=$5)
AC_MSG_CHECKING(whether to use [$1-$2])
if test "X$ac_cv_use_$1_$2" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_$4],,[Define if want to build $1-$2])
else
AC_MSG_RESULT(no)
fi
])

View File

@ -0,0 +1,54 @@
dnl @synopsis TAC_ARG_ENABLE_FEATURE_SUB_CHECK(FEATURE_NAME, SUB_FEATURE_NAME, FEATURE_DESCRIPTION, HAVE_NAME)
dnl
dnl This hack gets around the fact that TAC_ARG_ENABLE_FEATURE does not support underscores
dnl in its feature names. TAC_ARG_ENABLE_FEATURE_SUB_CHECK allows exactly one underscore. Not great,
dnl but arguably better than supporting no underscores.
dnl
dnl TAC_ARG_ENABLE_FEATURE(feature-sub, [Configure and build feature-sub], FEATURE_SUB, yes)
dnl fails because tac_arg_enable_feature tests for ac_cv_use_feature-sub which gets
dnl rejected because the `-' is not allowed in variables. (AC_ARG_ENABLE sets ac_cv_use_feature_sub
dnl to avoid this problem.) Use:
dnl
dnl TAC_ARG_ENABLE_FEATURE_SUB_CHECK(feature, sub, [Configure and build feature-sub], FEATURE_SUB)
dnl instead.
dnl
dnl This macro will test for --enable-${FEATURE_NAME}-${SUB_FEATURE_NAME} when configure is run.
dnl If it is defined and not set to "no" or not defined and --disable-${SUB_FEATURE_NAME} is not
dnl specified then HAVE_${HAVE_NAME} will be defined.
dnl
dnl *NOTE: This macro is designed for the use-case when there is an individual Trilinos package
dnl offering fine-grained control of a Trilinos option. This way, the individual package
dnl option is enabled, as long as the Trilinos option is not disabled. If the Trilinos option is
dnl disabled, then the user must enable each packages option individually. For instance:
dnl
dnl --disable-tests --enable-teuchos-tests
dnl
dnl *NOTE: epetra, aztecoo, komplex, ifpack, and other software found in
dnl subdirectories of Trilinos/packages are "packages" in their own right.
dnl However, these packages are also "features" of the larger package
dnl "Trilinos". Therefore, when configuring from the Trilinos directory,
dnl it is appropriate to refer to these software packages as "features".
dnl
dnl This file was based on tac_arg_enable_package.m4 by Jim Willenbring
dnl and tac_arg_enable_package_sub.m4 by Ken Stanley.
dnl
dnl @author Heidi Thornquist <hkthorn@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_ENABLE_FEATURE_SUB_CHECK],
[
AC_ARG_ENABLE([$2],, ac_cv_use_$2=$enableval, ac_cv_use_$2=yes)
AC_ARG_ENABLE([$1-$2],
AC_HELP_STRING([--enable-$1-$2],[$3 (default is yes if --disable-$2 is not specified)]),
ac_cv_use_$1_$2=$enableval, ac_cv_use_$1_$2=${ac_cv_use_$2})
AC_MSG_CHECKING(whether to use [$1-$2])
if test "X$ac_cv_use_$1_$2" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_$4],,[Define if want to build $1-$2])
else
AC_MSG_RESULT(no)
fi
])

View File

@ -0,0 +1,30 @@
dnl @synopsis TAC_ARG_ENABLE_OPTION(FEATURE_NAME, FEATURE_DESCRIPTION, HAVE_NAME, DEFAULT_VAL)
dnl
dnl Test for --enable-${FEATURE_NAME} and set to DEFAULT_VAL value if feature not specified.
dnl Also calls AC_DEFINE to define HAVE_${HAVE_NAME} if value is not equal to "no"
dnl
dnl Use this macro to facilitate definition of options in a package. For example:
dnl
dnl TAC_ARG_ENABLE_OPTION(threads, [enable shared memory threads], THREADS, no)
dnl
dnl will test for --enable-threads when configure is run. If it is defined (and not set to "no")
dnl then HAVE_THREADS will be defined, Otherwise HAVE_THREADS will not be defined.
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_ENABLE_OPTION],
[
AC_ARG_ENABLE([$1],
AC_HELP_STRING([--enable-$1],[$2 (default is [$4])]),
ac_cv_use_$1=$enableval, ac_cv_use_$1=$4)
AC_MSG_CHECKING(whether to use [$1])
if test "X$ac_cv_use_$1" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_$3],1,[Define if want to build with $1 enabled])
else
AC_MSG_RESULT(no)
fi
])

View File

@ -0,0 +1,17 @@
dnl @synopsis TAC_ARG_WITH_3PL_SUB( VALUE_NAME, VALUE_SUB_NAME, VALUE_DESCRIPTION)
dnl
dnl Test for --with-${VALUE_NAME}-${VALUE_SUB_NAME} and set to no if value not specified.
dnl
dnl Use this macro to set variables, such as library names and include paths, which
dnl include an underscore.
dnl
dnl This file was based on tac_arg_with_sub.m4 by Ken Stanley
dnl @author Jim Willenbring <jmwille@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_3PL_SUB],
[
AC_ARG_WITH([$1-$2],
AC_HELP_STRING([--with-$1-$2],[$3]),
tac_with_$1_$2=$withval, tac_with_$1_$2=no)
])

View File

@ -0,0 +1,39 @@
dnl @synopsis TAC_ARG_WITH_AR
dnl
dnl Test for --with-ar="ar_program ar_flags".
dnl Default is "ar cru"
dnl
dnl Generates an Automake conditional USE_ALTERNATE_AR that can be tested.
dnl Generates the user-specified archiver command in @ALTERNATE_AR@.
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_AR],
[
AC_ARG_WITH(ar,
AC_HELP_STRING([--with-ar], [override archiver command (default is "ar cru")]),
[
AC_MSG_CHECKING(user-defined archiver)
AC_MSG_RESULT([${withval}])
USE_ALTERNATE_AR=yes
ALTERNATE_AR="${withval}"
]
)
if test -n "${SPECIAL_AR}" && test "X${USE_ALTERNATE_AR}" != "Xyes";
then
USE_ALTERNATE_AR=yes
ALTERNATE_AR="${SPECIAL_AR}"
fi
AC_MSG_CHECKING(for special archiver command)
if test "X${USE_ALTERNATE_AR}" = "Xyes"; then
AC_MSG_RESULT([${ALTERNATE_AR}])
AM_CONDITIONAL(USE_ALTERNATE_AR, true)
else
AC_MSG_RESULT([none])
AM_CONDITIONAL(USE_ALTERNATE_AR, false)
fi
AC_SUBST(ALTERNATE_AR)
])

View File

@ -0,0 +1,31 @@
dnl @synopsis TAC_ARG_WITH_FLAGS(lcase_name, UCASE_NAME)
dnl
dnl Test for --with-lcase_name="compiler/loader flags". if defined, prepend
dnl flags to standard UCASE_NAME definition.
dnl
dnl Use this macro to facilitate additional special flags that should be
dnl passed on to the preprocessor/compilers/loader.
dnl
dnl Example use
dnl
dnl TAC_ARG_WITH_FLAGS(cxxflags, CXXFLAGS)
dnl
dnl tests for --with-cxxflags and pre-pends to CXXFLAGS
dnl
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_FLAGS],
[
AC_MSG_CHECKING([whether additional [$2] flags should be added])
AC_ARG_WITH($1,
AC_HELP_STRING([--with-$1],
[additional [$2] flags to be added: will prepend to [$2]]),
[
$2="${withval} ${$2}"
AC_MSG_RESULT([$2 = ${$2}])
],
AC_MSG_RESULT(no)
)
])

View File

@ -0,0 +1,27 @@
dnl @synopsis TAC_ARG_WITH_INCDIRS
dnl
dnl Test for --with-incdirs="-Iincdir1 -Iincdir2". if defined, prepend
dnl "-Iincdir1 -Iincdir2" to CPPFLAGS
dnl
dnl Use this macro to facilitate addition of directories to include file search path.
dnl
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_INCDIRS],
[
AC_MSG_CHECKING([whether additional include search paths defined])
AC_ARG_WITH(incdirs,
AC_HELP_STRING([--with-incdirs],
[additional directories containing include files: will prepend to search here for includes, use -Idir format]),
[
CPPFLAGS="${withval} ${CPPFLAGS}"
CFLAGS="${withval} ${CFLAGS}"
FCFLAGS="${withval} ${FCFLAGS}"
FFLAGS="${withval} ${FFLAGS}"
AC_MSG_RESULT([${withval}])
],
AC_MSG_RESULT(no)
)
])

View File

@ -0,0 +1,24 @@
dnl @synopsis TAC_ARG_WITH_LIBDIRS
dnl
dnl Test for --with-libdirs="-Llibdir1 -Llibdir2". if defined,
dnl prepend "-Llibdir1 -Llibdir2" to LDFLAGS
dnl
dnl Use this macro to facilitate addition of directories to library search path.
dnl
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_LIBDIRS],
[
AC_MSG_CHECKING([whether additional library search paths defined])
AC_ARG_WITH(libdirs,
AC_HELP_STRING([--with-libdirs],
[OBSOLETE use --with-ldflags instead. (ex. --with-ldflags="-L<DIR> -L<DIR2>")]),
[
LDFLAGS="${withval} ${LDFLAGS}"
AC_MSG_RESULT([${withval}])
],
AC_MSG_RESULT(no)
)
])

View File

@ -0,0 +1,30 @@
dnl @synopsis TAC_ARG_WITH_LIBS
dnl
dnl Test for --with-libs="name(s)".
dnl
dnl Prepends the specified name(s) to the list of libraries to link
dnl with.
dnl
dnl Example use
dnl
dnl TAC_ARG_WITH_LIBS
dnl
dnl tests for --with-libs and pre-pends to LIBS
dnl
dnl @author Jim Willenbring <jmwille@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_LIBS],
[
AC_MSG_CHECKING([whether additional libraries are needed])
AC_ARG_WITH(libs,
AC_HELP_STRING([--with-libs],
[List additional libraries here. For example, --with-libs=-lsuperlu
or --with-libs=/path/libsuperlu.a]),
[
LIBS="${withval} ${LIBS}"
AC_MSG_RESULT([LIBS = ${LIBS}])
],
AC_MSG_RESULT(no)
)
]
)

View File

@ -0,0 +1,32 @@
dnl @synopsis TAC_ARG_WITH_PACKAGE(FEATURE_NAME, FEATURE_DESCRIPTION, HAVE_NAME, DEFAULT_VAL)
dnl
dnl Test for --with-${FEATURE_NAME} and set to DEFAULT_VAL value if feature not specified.
dnl Also calls AC_DEFINE to define HAVE_${HAVE_NAME} if value is not equal to "no"
dnl
dnl Use this macro to help defining whether or not interfaces for optional
dnl package should compiled. For example:
dnl
dnl TAC_ARG_WITH_PACKAGE(zoltan, [Enable Zoltan interface support], ZOLTAN, no)
dnl
dnl will test for --with-zoltan when configure is run. If it is defined
dnl (and not set to "no") then HAVE_ZOLTAN will be defined,
dnl Otherwise HAVE_ZOLTAN will not be defined.
dnl
dnl @author Mike Heroux <mheroux@cs.sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_PACKAGE],
[
AC_ARG_WITH([$1],
AC_HELP_STRING([--with-$1],[$2 (default is [$4])]),
ac_cv_use_$1=$withval, ac_cv_use_$1=$4)
AC_MSG_CHECKING(whether to use [$1])
if test "X$ac_cv_use_$1" != "Xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_$3],,[Define if want to build with $1 enabled])
else
AC_MSG_RESULT(no)
fi
])

View File

@ -0,0 +1,34 @@
dnl @synopsis TAC_ARG_WITH_PERL(DEFAULT_VAL)
dnl
dnl Test for --enable-gnumake and set to DEFAULT_VAL value if feature not specified.
dnl Calls AC_DEFINE to define HAVE_GNUMAKE if value is not equal to "no"
dnl Calls AM_CONDITIONAL to define USING_GNUMAKE to true/false.
dnl
dnl This file was based on tac_arg_with_ar.m4 by Mike Heroux
dnl @author Roger Pawlowski <rppawlo@sandia.gov>
dnl
AC_DEFUN([TAC_ARG_WITH_PERL],
[
AC_ARG_WITH(perl,
AC_HELP_STRING([--with-perl], [supply a perl executable. For example --with-perl=/usr/bin/perl.]),
[
AC_MSG_CHECKING(for user supplied perl executable)
AC_MSG_RESULT([${withval}])
USER_SPECIFIED_PERL=yes
PERL_EXE="${withval}"
],
[
USER_SPECIFIED_PERL=no
])
if test "X${USER_SPECIFIED_PERL}" = "Xyes"; then
AC_CHECK_FILE(${PERL_EXE}, [HAVE_PERL=yes], [HAVE_PERL=no])
AC_SUBST(PERL_EXE, ${PERL_EXE})
else
AC_CHECK_PROG(HAVE_PERL, perl, yes, no)
AC_SUBST(PERL_EXE, perl)
fi
AM_CONDITIONAL(USING_PERL, test X${HAVE_PERL} = Xyes)
])

43
thirdParty/Zoltan/config/token-replace.pl vendored Executable file
View File

@ -0,0 +1,43 @@
#!/usr/bin/perl -w
#
# This perl script replaces a string with another string
# on a token basis. Here it is allowed for file_in and
# file_out to be the same file.
#
use strict;
#
my $g_use_msg =
"Use: token-replace.pl find_token replacement_token file_in file_out\n";
if( scalar(@ARGV) < 4 ) {
print STDERR $g_use_msg;
exit(-1);
}
#
my $find_token = shift;
my $replacement_token = shift;
my $file_in_name = shift;
my $file_out_name = shift;
#
#print "file_in_name = $file_in_name\n";
if($file_in_name=~/CVS/) {
# print "Do not replace in CVS\n";
exit;
}
open FILE_IN, "<$file_in_name" || die "The file $file_in_name could not be opended for input\n";
my @file_in_array = <FILE_IN>;
close FILE_IN;
#
my $match_str = '([^\w\d_]|^)' . $find_token . '([^\w\d_]|$)';
#print $match_str . "\n";
#
my @file_out_array;
my $did_replacement = 0;
foreach(@file_in_array) {
$did_replacement = 1 if $_=~s/$match_str/$1$replacement_token$2/g;
push @file_out_array, $_;
}
if($did_replacement || $file_out_name ne $file_in_name) {
open FILE_OUT, ">$file_out_name" || die "The file $file_out_name could not be opended for output\n";
print FILE_OUT @file_out_array;
close FILE_OUT;
}

View File

@ -0,0 +1,104 @@
dnl Determine F90 vendor and version string.
AC_DEFUN([WK_FC_GET_VENDOR],
[AC_CACHE_CHECK([the compiler ID],
[wk_cv_prog_f90_version_string],
[$FC -version >conftest.log 2>&1
$FC -V >>conftest.log 2>&1
$FC --version >>conftest.log 2>&1
wk_grep_f90_NAG=`grep NAG conftest.log | head -1`
wk_grep_f90_Compaq=`grep Compaq conftest.log | head -1`
wk_grep_f90_Digital=`grep DIGITAL conftest.log | head -1`
wk_grep_f90_SGI=`grep MIPS conftest.log | head -1`
wk_grep_f90_Intel=`grep 'Intel(R)' conftest.log | head -1`
wk_grep_f90_Sun=`grep 'Sun' conftest.log | head -1`
wk_grep_f90_Lahey=`grep 'Lahey' conftest.log | head -1`
wk_grep_f90_PGI=`grep 'pgf' conftest.log | head -1`
wk_grep_f90_G95=`grep -i 'g95' conftest.log | grep -i 'gcc' | head -1`
wk_grep_f90_GFORTRAN=`grep -i 'GNU Fortran' conftest.log | head -1`
wk_grep_f90_Absoft=`grep -i 'Absoft' conftest.log | head -1`
if test -n "$wk_grep_f90_NAG"; then
wk_cv_prog_f90_type="NAG"
wk_cv_prog_f90_version_string=$wk_grep_f90_NAG
wk_cv_prog_f90_version=[`echo $wk_cv_prog_f90_version_string | sed -e 's/.* Release \([0-9][0-9]*\.[0-9][0-9]*.*$\)/\1/'`]
wk_cv_prog_f90_major_version=[`echo $wk_cv_prog_f90_version | sed -e 's/\([0-9][0-9]*\)\..*/\1/'`]
elif test -n "$wk_grep_f90_Compaq"; then
wk_cv_prog_f90_type="Compaq"
wk_cv_prog_f90_version_string=$wk_grep_f90_Compaq
elif test -n "$wk_grep_f90_Digital"; then
wk_cv_prog_f90_type="DEC"
wk_cv_prog_f90_version_string=$wk_grep_f90_Digital
elif test -n "$wk_grep_f90_SGI"; then
wk_cv_prog_f90_type="SGI"
wk_cv_prog_f90_version_string=$wk_grep_f90_SGI
elif test -n "$wk_grep_f90_Intel"; then
wk_cv_prog_f90_type="Intel"
wk_cv_prog_f90_version_string=$wk_grep_f90_Intel
wk_cv_prog_f90_version=[`echo $wk_cv_prog_f90_version_string | sed -e 's/.* Version \([0-9][0-9]*\.[0-9][0-9]*\) .*/\1/'`]
wk_cv_prog_f90_major_version=[`echo $wk_cv_prog_f90_version | sed -e 's/\([0-9][0-9]*\)\..*/\1/'`]
elif test -n "$wk_grep_f90_Sun"; then
wk_cv_prog_f90_type="Sun"
wk_cv_prog_f90_version_string=$wk_grep_f90_Sun
wk_cv_prog_f90_version=[`echo $wk_cv_prog_f90_version_string | sed -e 's/.* Fortran 95 \([0-9][0-9]*\.[0-9][0-9]*\) .*/\1/'`]
wk_cv_prog_f90_major_version=[`echo $wk_cv_prog_f90_version | sed -e 's/\([0-9][0-9]*\)\..*/\1/'`]
elif test -n "$wk_grep_f90_Lahey"; then
wk_cv_prog_f90_type="Lahey"
wk_cv_prog_f90_version_string=$wk_grep_f90_Lahey
elif test -n "$wk_grep_f90_PGI"; then
wk_cv_prog_f90_type="PGI"
wk_cv_prog_f90_version_string=$wk_grep_f90_PGI
elif test -n "$wk_grep_f90_G95"; then
wk_cv_prog_f90_type="G95"
wk_cv_prog_f90_version_string=$wk_grep_f90_G95
elif test -n "$wk_grep_f90_GFORTRAN"; then
wk_cv_prog_f90_type="GNU"
wk_cv_prog_f90_version_string=$wk_grep_f90_GFORTRAN
wk_cv_prog_f90_version=[`echo $wk_cv_prog_f90_version_string | sed -e 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`]
wk_cv_prog_f90_major_version=[`echo $wk_cv_prog_f90_version | sed -e 's/\([0-9][0-9]*\)\..*/\1/'`]
elif test -n "$wk_grep_f90_Absoft"; then
wk_cv_prog_f90_type="Absoft"
wk_cv_prog_f90_version_string=$wk_grep_f90_Absoft
else
wk_cv_prog_f90_type="unknown"
wk_cv_prog_f90_version_string="unknown"
fi
rm -f conftest.log
]) dnl end AC_CACHE_CHECK
dnl Vendor-specific variables:
AC_CACHE_CHECK([the compiler vendor], [wk_cv_prog_f90_type])
if test -n "$wk_cv_prog_f90_version"; then
AC_CACHE_CHECK([the compiler version], [wk_cv_prog_f90_version])
else
wk_cv_prog_f90_version=$wk_cv_prog_f90_version_string
fi
if test -n "$wk_cv_prog_f90_major_version"; then
AC_CACHE_CHECK([the compiler major version], [wk_cv_prog_f90_major_version])
else
wk_cv_prog_f90_major_version=$wk_cv_prog_f90_version
fi
FC_VERSION_STRING=$wk_cv_prog_f90_version_string
FC_VENDOR=$wk_cv_prog_f90_type
FC_VERSION=$wk_cv_prog_f90_version
FC_MAJOR_VERSION=$wk_cv_prog_f90_major_version
AC_SUBST(FC_VERSION_STRING)
AC_SUBST(FC_VENDOR)
AC_SUBST(FC_VERSION)
AC_SUBST(FC_MAJOR_VERSION)
dnl Module names: (all compilers apparently have converged to '.mod')
dnl The perl scripts need a quoted version of this
FC_MODNAME='$(1:.o=.mod)'
FC_MODNAME_Q='\$(1:.o=.mod)'
AC_SUBST(FC_MODNAME)
AC_SUBST(FC_MODNAME_Q)
]) dnl end AC_DEFUN

View File

@ -0,0 +1,279 @@
dnl @synopsis ZAC_ARG_CONFIG_MPI
dnl
dnl Test a variety of MPI options:
dnl --enable-mpi - Turns MPI compiling mode on
dnl --with-mpi - specify root directory of MPI
dnl --with-mpi-compilers - Turns on MPI compiling mode and sets the MPI C++
dnl compiler C, and Fortran
dnl --with-mpi-incdir - specify include directory for MPI
dnl --with-mpi-libs - specify MPI libraries
dnl --with-mpi-libdir - specify location of MPI libraries
dnl
dnl If any of these options are set, HAVE_MPI will be defined for both
dnl Autoconf and Automake, and HAVE_MPI will be defined in the
dnl generated config.h file
dnl
dnl if --disable-mpi, then Zoltan will build serial MPI.
dnl
dnl --enable-mpi and --with-mpi-compilers are the default.
dnl
dnl --without-mpi is actually a user error, but we'll interpret it as --disable-mpi
dnl
dnl If CC, CXX, F77 and/or F90/FTN/FC have been set by the user, and MPI compilers
dnl are desired, these will be assumed to be the MPI compilers.
dnl
dnl This was adapted from the Trilinos TAC_ARG_CONFIG_MPI.
dnl
AC_DEFUN([ZAC_ARG_CONFIG_MPI],
[
HAVE_PKG_MPI=unset
SEEK_MPI_COMPILERS=unset
MPI_COMPILER_PATH=unset
AC_ARG_ENABLE(mpi,
[AC_HELP_STRING([--enable-mpi],[enable MPI support])],
[
if test X${enableval} = Xno; then
HAVE_PKG_MPI=no
else
HAVE_PKG_MPI=yes
fi
]
)
AC_ARG_WITH(mpi,
[AC_HELP_STRING([--with-mpi=MPIROOT],[the MPI root directory (above bin,lib,include), enables MPI])],
[
if test X${withval} = Xno; then
HAVE_PKG_MPI=no
else
HAVE_PKG_MPI=yes
if test X${withval} != Xyes; then
MPI_DIR=${withval}
fi
fi
]
)
AC_ARG_WITH(mpi-compilers,
[AC_HELP_STRING([--with-mpi-compilers={yes/no/path}],[Find MPI compilers/Don't use MPI compilers/Find MPI compilers in path])],
[
HAVE_PKG_MPI=yes
if test X${withval} = Xno; then
SEEK_MPI_COMPILERS=no
else
SEEK_MPI_COMPILERS=yes
if test X${withval} != Xyes; then
MPI_COMPILER_PATH=${withval}
fi
fi
],
[
if test X${HAVE_PKG_MPI} != Xno; then
SEEK_MPI_COMPILERS=yes
HAVE_PKG_MPI=yes
fi
]
)
dnl Using MPI is the default
if test X${HAVE_PKG_MPI} = unset ; then
HAVE_PKG_MPI=yes
fi
if test X${SEEK_MPI_COMPILERS} = Xyes; then
if test X${MPI_COMPILER_PATH} != Xunset ; then
# MPI_SEEK_PATH=$MPI_COMPILER_PATH$PATH_SEPARATOR$PATH
MPI_SEEK_PATH=$MPI_COMPILER_PATH
elif test -n "${MPI_DIR}" ; then
# MPI_SEEK_PATH=$MPI_DIR/bin$PATH_SEPARATOR$PATH
MPI_SEEK_PATH=$MPI_DIR/bin
else
MPI_SEEK_PATH=$PATH
fi
dnl Find C MPI compiler if MPI_CC is not already defined
if test -z "${MPI_CC}"; then
if test -f "${CC}"; then
MPI_CC=${CC}
else
if test -n "${CC}" ; then
MPI_CC_CANDIDATE=${CC}
else
MPI_CC_CANDIDATE=mpicc
fi
AC_PATH_PROG(MPI_CC, ${MPI_CC_CANDIDATE}, [notFound], [PATH = ${MPI_SEEK_PATH}])
if test "${MPI_CC}" != "notFound" ; then
CC=${MPI_CC}
else
echo "-----"
echo "Cannot find MPI C compiler in " ${MPI_SEEK_PATH}
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH,"
echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH,"
echo "or specify a C compiler using CC=<compiler>"
echo "or --disable-mpi"
echo "-----"
AC_MSG_ERROR([MPI C compiler not found.])
fi
fi
fi
if test "X$ac_cv_use_zoltan_cppdriver" = "Xyes"; then
dnl Find C++ MPI compiler if MPI_CXX is not already defined
if test -z "${MPI_CXX}"; then
if test -f "${CXX}"; then
MPI_CXX=${CXX}
else
if test -n "${CXX}" ; then
MPI_CXX_CANDIDATES=${CXX}
else
MPI_CXX_CANDIDATES="[mpicxx mpic++ mpiCC]"
fi
AC_PATH_PROGS(MPI_CXX, ${MPI_CXX_CANDIDATES}, [notFound], [PATH = ${MPI_SEEK_PATH}])
if test "${MPI_CXX}" != "notFound" ; then
CXX=${MPI_CXX}
else
echo "-----"
echo "Cannot find MPI C++ compiler in " ${MPI_SEEK_PATH}
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH,"
echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH,"
echo "or specify a C++ compiler using CXX=<compiler>"
echo "or --disable-mpi"
echo "-----"
AC_MSG_ERROR([MPI C++ compiler not found.])
fi
fi
fi
fi
# if test "X$ac_cv_use_fortran" = "Xyes"; then
# dnl Find a Fortran 77 MPI compiler if MPI_F77 is not already defined
#
# if test -z "${MPI_F77}"; then
# MPI_F77_CANDIDATE=mpif77
# if test -n "${F77}"; then
# MPI_F77_CANDIDATE=${F77}
# fi
#
# AC_PATH_PROG(MPI_F77, ${MPI_F77_CANDIDATE}, [notFound], [PATH = ${MPI_SEEK_PATH}])
#
# if test "${MPI_F77}" != "notFound" ; then
# F77=${MPI_F77}
# else
# echo "-----"
# echo "Cannot find MPI Fortan 77 compiler."
# echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH,"
# echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH,"
# echo "or specify a fortran 77 compiler using F77=<compiler>"
# echo "-----"
# AC_MSG_ERROR([MPI C compiler not found.])
# fi
# fi
# fi
if test "X$ac_cv_use_fortran90" = "Xyes"; then
dnl Find a Fortran 90 MPI compiler if MPI_F90 is not already defined
if test -z "${MPI_FC}"; then
if test -f "${FC}"; then
MPI_FC=${FC}
else
MPI_FC_CANDIDATES=""
if test -n "${FC}"; then
MPI_FC_CANDIDATES=${FC}
elif test -n "${FTN}"; then
MPI_FC_CANDIDATES=${FTN}
elif test -n "${F90}"; then
MPI_FC_CANDIDATES=${F90}
fi
if test -n "${MPI_FC_CANDIDATES}" && test -f ${MPI_FC_CANDIDATES} ; then
MPI_FC=${MPI_FC_CANDIDATES}
else
if test -z "${MPI_FC_CANDIDATES}"; then
MPI_FC_CANDIDATES="[mpif90 mpif77]"
fi
AC_PATH_PROGS(MPI_FC, ${MPI_FC_CANDIDATES}, [notFound], [PATH = ${MPI_SEEK_PATH}])
if test "${MPI_FC}" != "notFound" ; then
FC=${MPI_FC}
else
echo "-----"
echo "Cannot find MPI Fortran 90 compiler in " ${MPI_SEEK_PATH}
echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH,"
echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH,"
echo "or specify a fortran 90 compiler using FC=<compiler>"
echo "-----"
AC_MSG_ERROR([MPI C compiler not found.])
fi
fi
fi
fi
fi
fi
#AC_ARG_WITH(mpi-include,
#[AC_HELP_STRING([--with-mpi-include],[Obsolete. Use --with-mpi-incdir=DIR instead. Do not prefix DIR with '-I'.])],
#[AC_MSG_ERROR([--with-mpi-include is an obsolte option. Use --with-mpi-incdir=DIR instead. Do not prefix DIR with '-I'. For example '--with-mpi-incdir=/usr/lam_path/include'.])]
#)
AC_ARG_WITH(mpi-libs,
[AC_HELP_STRING([--with-mpi-libs="LIBS"],[MPI libraries @<:@"-lmpi"@:>@])],
[
MPI_LIBS=${withval}
AC_MSG_CHECKING(user-defined MPI libraries)
AC_MSG_RESULT([${MPI_LIBS}])
]
)
AC_ARG_WITH(mpi-incdir,
[AC_HELP_STRING([--with-mpi-incdir=DIR],[MPI include directory @<:@MPIROOT/include@:>@ Do not use -I])],
[
MPI_INC=${withval}
AC_MSG_CHECKING(user-defined MPI includes)
AC_MSG_RESULT([${MPI_INC}])
]
)
AC_ARG_WITH(mpi-libdir,
[AC_HELP_STRING([--with-mpi-libdir=DIR],[MPI library directory @<:@MPIROOT/lib@:>@ Do not use -L])],
[
MPI_LIBDIR=${withval}
AC_MSG_CHECKING(user-defined MPI library directory)
AC_MSG_RESULT([${MPI_LIBDIR}])
]
)
AC_MSG_CHECKING(whether we are using MPI)
AC_MSG_RESULT([${HAVE_PKG_MPI}])
if test "X${HAVE_PKG_MPI}" = "Xyes"; then
AC_DEFINE(HAVE_MPI,,[define if we want to use MPI])
fi
dnl Define Automake version of HAVE_MPI if appropriate
AM_CONDITIONAL(HAVE_MPI, [test "X${HAVE_PKG_MPI}" = "Xyes"])
])

View File

@ -0,0 +1,39 @@
dnl @synopsis ZAC_ARG_WITH_ID
dnl
dnl Test for "--with-id-type="
dnl Default is "unsigned int". Can also be "long", "llong" or "int".
dnl
dnl Generates config.h macro.
dnl
AC_DEFUN([ZAC_ARG_WITH_ID],
[
AC_MSG_CHECKING([data type for ZOLTAN_ID_TYPE])
zoltan_id_type="unset"
AC_ARG_WITH(id-type,
AC_HELP_STRING([--with-id-type], [Zoltan global ID type: uint (default), ulong, or ullong]),
[
if test "X$withval" == "Xuint" ; then
AC_DEFINE([UNSIGNED_INT_GLOBAL_IDS],[1],[define if ZOLTAN_ID_TYPE is unsigned int])
zoltan_id_type="unsigned int"
else
if test "X$withval" == "Xulong" ; then
AC_DEFINE([UNSIGNED_LONG_GLOBAL_IDS],[1],[define if ZOLTAN_ID_TYPE is unsigned long])
zoltan_id_type="unsigned long"
else
if test "X$withval" == "Xullong" ; then
AC_DEFINE([UNSIGNED_LONG_LONG_GLOBAL_IDS],[1],[define if ZOLTAN_ID_TYPE is unsigned long long])
zoltan_id_type="unsigned long long"
else
AC_MSG_ERROR([Valid global ID types for Zoltan are uint, ulong, and ullong])
fi
fi
fi
],
[
AC_DEFINE([UNSIGNED_INT_GLOBAL_IDS],[1],[define if ZOLTAN_ID_TYPE is unsigned int])
zoltan_id_type="unsigned int"
]
)
AC_MSG_RESULT([typedef $zoltan_id_type ZOLTAN_ID_TYPE])
]
)

9598
thirdParty/Zoltan/configure vendored Executable file

File diff suppressed because it is too large Load Diff

463
thirdParty/Zoltan/configure.ac vendored Normal file
View File

@ -0,0 +1,463 @@
# @HEADER
#
########################################################################
#
# Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
# Copyright 2012 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Questions? Contact Karen Devine kddevin@sandia.gov
# Erik Boman egboman@sandia.gov
#
########################################################################
#
# @HEADER
# ------------------------------------------------------------------------
# Process this file with autoconf to produce a configure script.
# ------------------------------------------------------------------------
# ------------------------------------------------------------------------
# Initialization
# ------------------------------------------------------------------------
# This must be the first line in configure.ac.
# Optional 3rd argument is email address for bugs.
AC_INIT(Zoltan, 3.6, lriesen@sandia.gov)
echo "----------------------------------------"
echo "Running Zoltan Configure Script"
echo "----------------------------------------"
# This is to protect against accidentally specifying the wrong
# directory with --srcdir. Any file in that directory will do,
# preferably one that is unlikely to be removed or renamed.
AC_CONFIG_SRCDIR([src/include/zoltan.h])
# Specify directory for auxillary build tools (e.g., install-sh,
# config.sub, config.guess) and M4 files.
AC_CONFIG_AUX_DIR(config)
#
# We don't want people to configure in the source directory. Some
# things may break.
#
if test -e configure.ac ; then
echo "You are trying to run configure in the source directory. This is not allowed. Please run configure from a separate build directory."
exit
fi
# Configure should create src/Zoltan_config.h from src/Zoltan_config.h.in
AM_CONFIG_HEADER(src/include/Zoltan_config.h:src/include/Zoltan_config.h.in)
# Allow users to specify their own "install" command. If none is specified,
# the default is install-sh found in the config subdirectory.
AC_ARG_WITH(install,
[AC_HELP_STRING([--with-install=INSTALL_PROGRAM],
[Use the installation program INSTALL_PROGRAM rather the default that is provided. For example --with-install="/path/install -p"])],
[
INSTALL=$withval
INSTALL_PROGRAM=$withval
INSTALL_SCRIPT=$withval
INSTALL_DATA="$withval -m 644"
],)
# AM_MAINTAINER_MODE turns off maintainer-only makefile targets by
# default, and changes configure to understand a
# --enable-maintainer-mode option. --enable-maintainer-mode turns the
# maintainer-only targets back on. The maintainer-only makefile
# targets permit end users to clean automatically-generated files such
# as configure, which means they have to have autoconf and automake
# installed to repair the damage. AM_MAINTAINER_MODE makes it a bit
# harder for users to shoot themselves in the foot.
AM_MAINTAINER_MODE
# Define $build, $host, $target, etc
AC_CANONICAL_TARGET
# Note in header file and Makefile conditional what the host OS is
AM_CONDITIONAL(HOST_CYGWIN, false)
AM_CONDITIONAL(HOST_LINUX, false)
AM_CONDITIONAL(HOST_SOLARIS, false)
case $host_os in
cygwin)
AM_CONDITIONAL(HOST_CYGWIN, true)
AC_DEFINE(HOST_CYGWIN,1,[software host will be cygwin])
;;
linux*)
AM_CONDITIONAL(HOST_LINUX, true)
AC_DEFINE(HOST_LINUX,1,[software host will be linux])
;;
solaris*)
AM_CONDITIONAL(HOST_SOLARIS, true)
AC_DEFINE(HOST_SOLARIS,1,[software host will be solaris])
;;
esac
# Use automake
# - Required version of automake.
AM_INIT_AUTOMAKE(1.9.6 no-define tar-ustar)
# Specify required version of autoconf.
AC_PREREQ(2.59)
#TAC_ARG_ENABLE_OPTION(fortran, [enable Fortran support], FORTRAN_SUPPORT, no)
#This option is not currently available
TAC_ARG_ENABLE_OPTION(f90interface, [enable Fortran 90 interface (automatically enables Fortran support)], F90INTERFACE, no)
AM_CONDITIONAL(BUILD_ZOLTAN_F90_INTERFACE, [test "X$ac_cv_use_f90interface" != "Xno"])
#AM_CONDITIONAL(USE_FORTRAN, [test "X$ac_cv_use_fortran" != "Xno"])
if test "X$ac_cv_use_f90interface" = "Xyes"; then
ac_cv_use_fortran=yes
else
ac_cv_use_fortran=no
fi
if test "X$ac_cv_use_fortran" = "Xyes"; then
ac_cv_use_fortran90=yes
# AX_F90_MODULE_FLAG
# if test "X$ax_cv_f90_modflag" = "Xunknown" ; then
# AC_MSG_ERROR([unable to find f90 modules extension])
# else
# FCFLAGS="$ax_cv_f90_modflag../ $ax_cv_f90_modflag. ${FCFLAGS}"
# fi
else
ac_cv_use_fortran90=no
fi
TAC_ARG_ENABLE_FEATURE_SUB(zoltan, cppdriver, [Enable Zoltan's C++ driver], ZOLTAN_CPPDRIVER, yes)
AM_CONDITIONAL(HAVE_ZOLTAN_CPPDRIVER, [test "X$ac_cv_use_zoltan_cppdriver" != "Xno"])
#This can be removed after we retire the old build system
#AC_DEFINE([TRILINOS_CONFIG_H],,[Define when using the autotools to build Zoltan])
# ------------------------------------------------------------------------
# Check to see if MPI enabled and if any special configuration done
# ------------------------------------------------------------------------
# We may want to handle this differently because Zoltan requires MPI
#TAC_ARG_CONFIG_MPI
ZAC_ARG_CONFIG_MPI
# #np# - can eliminate compiler checks below if your package does not use the
# language corresponding to the check. Please note that if you use
# F77_FUNC to determine Fortran name mangling, you should not remove
# the Fortran compiler check or the check for Fortran flags. Doing
# so will prevent the detection of the proper name mangling in some
# cases.
AC_ARG_ENABLE(mpi-recv-limit,
AS_HELP_STRING([--enable-mpi-recv-limit],[Set to the limit on the number of simultaneous MPI posted receives, if any; default is --enable-mpi-recv-limit=10]),
[ AC_MSG_NOTICE(Building Zoltan to observe a limit of $enable_mpi_recv_limit simultaneously posted MPI receives)
AC_SUBST(MPI_RECV_LIMIT_FLAG, "-DMPI_RECV_LIMIT=$enable_mpi_recv_limit")
]
)
# ------------------------------------------------------------------------
# Checks for programs
# ------------------------------------------------------------------------
AM_PROG_CC_C_O(cc gcc)
#Conditional only?
#if test "X$ac_cv_use_zoltan_cppdriver" = "Xyes"; then
AC_PROG_CXX(CC g++ c++ cxx)
#fi
if test "X$ac_cv_use_fortran90" = "Xyes"; then
AC_PROG_FC(FC gfortran f90 xlf90 f95)
fi
if test "X$ac_cv_use_fortran" = "Xyes"; then
AC_PROG_FC(FC gfortran f90 xlf90 f95)
fi
AC_PROG_RANLIB
# Check if --with-flags present, prepend any specs to FLAGS
TAC_ARG_WITH_FLAGS(ccflags, CCFLAGS)
#if test "X$ac_cv_use_zoltan_cppdriver" = "Xyes"; then
TAC_ARG_WITH_FLAGS(cxxflags, CXXFLAGS)
CXXFLAGS="-DMPICH_IGNORE_CXX_SEEK ${CXXFLAGS}"
#fi
TAC_ARG_WITH_FLAGS(cflags, CFLAGS)
TAC_ARG_WITH_FLAGS(fcflags, FCFLAGS)
#TAC_ARG_WITH_FLAGS(fflags, FFLAGS)
TAC_ARG_WITH_LIBS
TAC_ARG_WITH_FLAGS(ldflags, LDFLAGS)
# ------------------------------------------------------------------------
# Alternate archiver
# ------------------------------------------------------------------------
TAC_ARG_WITH_AR
# ------------------------------------------------------------------------
# MPI link check
# ------------------------------------------------------------------------
TAC_ARG_CHECK_MPI
# ------------------------------------------------------------------------
# Checks for Makefile.export related systems
# ------------------------------------------------------------------------
# Add this later
TAC_ARG_ENABLE_EXPORT_MAKEFILES(yes)
# ------------------------------------------------------------------------
# Checks for special package flags
# ------------------------------------------------------------------------
ZAC_ARG_WITH_ID()
TAC_ARG_ENABLE_OPTION(gzip, [enable zlib support for driver], GZIP, no)
if test "X$ac_cv_use_gzip" != "Xno"; then
LIBS="-lz ${LIBS}"
fi
AM_CONDITIONAL(BUILD_GZIP, [test "X$ac_cv_use_gzip" != "Xno"])
TAC_ARG_WITH_PACKAGE(parmetis, [Enable Parmetis support.], PARMETIS, no)
AM_CONDITIONAL(BUILD_PARMETIS, [test "X$ac_cv_use_parmetis" != "Xno"])
TAC_ARG_WITH_3PL_SUB(parmetis, libdir, [Specify where the Parmetis library is located. Ex. /path/to/library])
if test "X$tac_with_parmetis_libdir" != "Xno"; then
LIBS="-L${tac_with_parmetis_libdir} -lparmetis -lmetis ${LIBS}"
fi
TAC_ARG_WITH_3PL_SUB(parmetis, incdir, [Specify where the Parmetis header files are located. Ex. /path/to/headers])
# It was necessary to move the parmetis include directories before the scotch
# include directories.
#if test "X$tac_with_parmetis_incdir" != "Xno"; then
# CPPFLAGS="-I${tac_with_parmetis_incdir} ${CPPFLAGS}"
#fi
TAC_ARG_WITH_PACKAGE(scotch, [Enable Scotch support.], SCOTCH, no)
AM_CONDITIONAL(BUILD_SCOTCH, [test "X$ac_cv_use_scotch" != "Xno"])
TAC_ARG_WITH_3PL_SUB(scotch, libdir, [Specify where the Scotch library is located. Ex. /path/to/library])
if test "X$tac_with_scotch_libdir" != "Xno"; then
LIBS="-L${tac_with_scotch_libdir} -lptscotch -lptscotcherr -lptscotcherrexit -lscotch -lscotcherr -lscotcherrexit ${LIBS}"
fi
TAC_ARG_WITH_3PL_SUB(scotch, incdir, [Specify where the Scotch header files are located. Ex. /path/to/headers])
if test "X$tac_with_scotch_incdir" != "Xno"; then
CPPFLAGS="-I${tac_with_scotch_incdir} ${CPPFLAGS}"
fi
# The parmetis include directories need to be before the Scotch include
# directories.
if test "X$tac_with_parmetis_incdir" != "Xno"; then
CPPFLAGS="-I${tac_with_parmetis_incdir} ${CPPFLAGS}"
fi
TAC_ARG_WITH_PACKAGE(patoh, [Enable Patoh support.], PATOH, no)
TAC_ARG_WITH_3PL_SUB(patoh, libdir, [Specify where the Patoh library is located. Ex. /path/to/library])
if test "X$tac_with_patoh_libdir" != "Xno"; then
LIBS="-L${tac_with_patoh_libdir} -lpatoh ${LIBS}"
fi
TAC_ARG_WITH_3PL_SUB(patoh, incdir, [Specify where the Patoh header files are located. Ex. /path/to/headers])
if test "X$tac_with_patoh_incdir" != "Xno"; then
CPPFLAGS="-I${tac_with_patoh_incdir} ${CPPFLAGS}"
fi
#TAC_ARG_WITH_PACKAGE(drum, [Enable Drum support. Library name as well as library and include paths must be specified using LDFLAGS and CPPFLAGS.], DRUM, no)
#TAC_ARG_WITH_3PL_SUB(drum, libdir, [Specify where the Drum library is located. Ex. /path/to/library])
#if test "X$tac_with_drum_libdir" != "Xno"; then
# LIBS="-L${tac_with_drum_libdir} ${LIBS}"
#fi
#TAC_ARG_WITH_3PL_SUB(drum, incdir, [Specify where the Drum header files are located. Ex. /path/to/headers])
#if test "X$tac_with_drum_incdir" != "Xno"; then
# CPPFLAGS="-I${tac_with_drum_incdir} ${CPPFLAGS}"
#fi
TAC_ARG_WITH_PACKAGE(nemesis_exodus, [Enable Nemesis/Exodus support for the Zdrive test executable. Library and include paths must be specified using LDFLAGS and CFLAGS.], NEMESIS_EXODUS, no)
#I am not sure if we can do this. We may not be able to get things in the right
#order. JW.
if test "X$ac_cv_use_nemesis_exodus" != "Xno"; then
LIBS="-lnemIc -lexoIIv2c -lnetcdf ${LIBS}"
fi
LIBS="${LIBS} -lm"
#TAC_ARG_WITH_PACKAGE(parkway, [Enable Parkway support.], PARKWAY, no)
#TAC_ARG_WITH_3PL_SUB(parkway, libdir, [Specify where the Parkway library is located. Ex. /path/to/library])
#if test "X$tac_with_parkway_libdir" != "Xno"; then
# LIBS="-L${tac_with_parkway_libdir} -lparkway -lpmpich++ -lstdc++ ${LIBS}"
#fi
#TAC_ARG_WITH_3PL_SUB(parkway, incdir, [Specify where the Parkway header files are located. Ex. /path/to/headers])
#if test "X$tac_with_parkway_incdir" != "Xno"; then
# CPPFLAGS="-I${tac_with_parkway_incdir} ${CPPFLAGS}"
#fi
# ------------------------------------------------------------------------
# Checks if tests and examples should be built
# ------------------------------------------------------------------------
TAC_ARG_ENABLE_FEATURE(tests, [Make tests for all Trilinos packages buildable with 'make tests'], TESTS, yes)
TAC_ARG_ENABLE_FEATURE_SUB_CHECK( zoltan, tests, [Make Zoltan tests buildable with 'make tests'], ZOLTAN_TESTS)
AM_CONDITIONAL(BUILD_TESTS, test "X$ac_cv_use_zoltan_tests" != "Xno")
TAC_ARG_ENABLE_FEATURE(examples, [Make examples for all Trilinos packages buildable with 'make examples'], EXAMPLES, yes)
TAC_ARG_ENABLE_FEATURE_SUB_CHECK( zoltan, examples, [Make Zoltan examples buildable with 'make examples'], ZOLTAN_EXAMPLES)
AM_CONDITIONAL(BUILD_EXAMPLES, test "X$ac_cv_use_zoltan_examples" != "Xno")
#We now build tests and examples through separate make targets, rather than
#during "make". We still need to conditionally include the test and example
#in SUBDIRS, even though SUB_TEST and SUB_EXAMPLE will never be
#defined, so that the tests and examples are included in the distribution
#tarball.
AM_CONDITIONAL(SUB_TEST, test "X$ac_cv_use_sub_test" = "Xyes")
AM_CONDITIONAL(SUB_EXAMPLE, test "X$ac_cv_use_sub_example" = "Xyes")
#TAC_ARG_ENABLE_FEATURE(libcheck, [Check for some third-party libraries. (Cannot be disabled unless tests and examples are also disabled.)], LIBCHECK, yes)
# ------------------------------------------------------------------------
# Specify other directories
# ------------------------------------------------------------------------
# enable use of --with-libdirs="-Llibdir1 -Llibdir2 ..." to prepend to LDFLAGS
TAC_ARG_WITH_LIBDIRS
# enable use of --with-incdirs="-Iincdir1 -Iincdir2 ..." to prepend to CPPFLAGS
TAC_ARG_WITH_INCDIRS
# ------------------------------------------------------------------------
# Checks for libraries
# ------------------------------------------------------------------------
ax_cv_f90_modulecase="lower"
FC_VENDOR="none"
# Define F77_FUNC that will be used to link with Fortran subroutines.
if test "X$ac_cv_use_fortran" != "Xno"; then
AC_FC_WRAPPERS
AC_FC_SRCEXT(f)
AC_FC_SRCEXT(f90)
# Determine compile-line flag for F90 modules (e.g., -M).
AX_F90_MODULE_FLAG
if test "X$ax_cv_f90_modflag" = "Xunknown" ; then
AC_MSG_ERROR([unable to find f90 modules extension])
else
FCFLAGS="$ax_cv_f90_modflag../ $ax_cv_f90_modflag. ${FCFLAGS}"
fi
# Determine case (upper or lower) of F90 module files.
AX_F90_MODULE_CASE
echo "KDDKDD " $ax_cv_f90_modulecase
WK_FC_GET_VENDOR()
echo "KDDKDD " $FC_VENDOR
if test "$FC_VENDOR" = "PGI"; then
FCFLAGS="-DPGI ${FCFLAGS}"
CFLAGS="-DPGI ${CFLAGS}"
fi
if test "$FC_VENDOR" = "Lahey"; then
FCFLAGS="-DFUJITSU ${FCFLAGS}"
CFLAGS="-DFUJITSU ${CFLAGS}"
fi
fi
AM_CONDITIONAL(F90_MODULE_LOWERCASE, [test "X$ax_cv_f90_modulecase" != "Xupper"])
AM_CONDITIONAL(NAG_F90_COMPILER, [test "X$FC_VENDOR" == "XNAG"])
# If tests, examples and libcheck are disabled, we don't have to check
# for these libraries.
#if test "X$ac_cv_use_new_package_examples" != "Xno" || test "X$ac_cv_use_libcheck" != "Xno"; then
#if test "X$ac_cv_use_zoltan_tests" != "Xno" || test "X$ac_cv_use_zoltan_examples" != "Xno" || test "X$ac_cv_use_libcheck" != "Xno"; then
# checks for libraries now
dnl Replace `main' with a function in -lm:
#AC_SEARCH_LIBS(pow,[m],,AC_MSG_ERROR(Cannot find math library))
#AC_SEARCH_LIBS(sqrt,[m],,AC_MSG_ERROR(Cannot find math library))
#fi
# end of the list of libraries that don't need to be checked for if
# tests and examples are disabled.
# ------------------------------------------------------------------------
# Checks for linker characteristics
# ------------------------------------------------------------------------
# Determine libraries needed for linking with Fortran
#AC_FC_LIBRARY_LDFLAGS
if test "X$ac_cv_use_fortran" = "Xyes"; then
AC_FC_LIBRARY_LDFLAGS
fi
# ------------------------------------------------------------------------
# Zoltan may be built via autotools, cmake, or our native makefile
# ------------------------------------------------------------------------
CPPFLAGS="-DAUTOTOOLS_BUILD ${CPPFLAGS}"
# ------------------------------------------------------------------------
# Perform substitutions in output files
# ------------------------------------------------------------------------
AC_SUBST(ac_aux_dir)
# ------------------------------------------------------------------------
# Output files
# ------------------------------------------------------------------------
#
AC_CONFIG_FILES([
Makefile
src/Makefile
src/driver/Makefile
src/fdriver/Makefile
Makefile.export.zoltan
example/Makefile
example/C/Makefile
example/CPP/Makefile
siMPI/Makefile
siMPI/pyMPI/Makefile
siMPI/pyMPI/siMPI/Makefile
])
# test/Large_Data/Makefile
# example/lib/Makefile
# example/C/Makefile
# example/C/sparse_matrix/Makefile
# example/CPP/Makefile
# Utilities/Makefile
AC_OUTPUT()
echo "---------------------------------------------"
echo "Finished Running Zoltan Configure Script"
echo "---------------------------------------------"

View File

@ -0,0 +1,515 @@
<!-------- @HEADER
!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
! Copyright 2012 Sandia Corporation
!
! Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
! the U.S. Government retains certain rights in this software.
!
! Redistribution and use in source and binary forms, with or without
! modification, are permitted provided that the following conditions are
! met:
!
! 1. Redistributions of source code must retain the above copyright
! notice, this list of conditions and the following disclaimer.
!
! 2. Redistributions in binary form must reproduce the above copyright
! notice, this list of conditions and the following disclaimer in the
! documentation and/or other materials provided with the distribution.
!
! 3. Neither the name of the Corporation nor the names of the
! contributors may be used to endorse or promote products derived from
! this software without specific prior written permission.
!
! THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
!
! Questions? Contact Karen Devine kddevin@sandia.gov
! Erik Boman egboman@sandia.gov
!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! @HEADER
------->
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR"
content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
<meta name="sandia.approved" content="SAND99-1377">
<meta name="author" content="nick aase, neaase@sandia.gov">
<title>Zoltan Developer's Guide: Hybrid Partitioning</title>
</head>
<body bgcolor="#ffffff">
<div align="right"><b><i><a href="dev.html">Zoltan Developer's Guide</a>&nbsp;
|&nbsp; <a href="dev_reftree.html">Next(NEANEA CHANGE ME)</a>&nbsp; |&nbsp; <a
href="dev_parmetis.html">Previous(NEANEA CHANGE ME)</a></i></b></div>
<h2>
<a name="Hybrid Partitioning"></a>Appendix: Hybrid Partitioning</h2>
Hybrid partitioning is an amalgam of Zoltan's native parallel hypergraph
partitioner (<a href="dev_phg.html">PHG</a>) and it Recursive Coordinate
Bisection algortihm (<a href="dev_rcb.html">RCB</a>). Hybrid partitioning can
be useful when a user is looking to strike a happy medium of both efficiency
and fidelity in their work. Traditional Zoltan-PHG is well suited to minimize
the number of cut hyperedges in the system, but it is comparatively slow due
to the multiple layers of coarsening it goes through and the standard matching
methods used to calculate new vertices for the coarser hypergraph.
<p>
Hypergraph partitioning is a useful partitioning and
load balancing method when connectivity data is available. It can be
viewed as a more sophisticated alternative to
the traditional graph partitioning.
<p>A hypergraph consists of vertices and hyperedges. A hyperedge
connects
one or more vertices. A graph is a special case of a hypergraph where
each edge has size two (two vertices). The hypergraph model is well
suited to parallel computing, where vertices correspond to data objects
and hyperedges represent the communication requirements. The basic
partitioning problem is to partition the vertices into <i>k</i>
approximately equal sets such that the number of cut hyperedges is
minimized. Most partitioners (including Zoltan-PHG) allows a more
general
model where both vertices and hyperedges can be assigned weights.
It has been
shown that the hypergraph model gives a more accurate representation
of communication cost (volume) than the graph model. In particular,
for sparse matrix-vector multiplication, the hypergraph model
<strong>exactly</strong> represents communication volume. Sparse
matrices can be partitioned either along rows or columns;
in the row-net model the columns are vertices and each row corresponds
to an hyperedge, while in the column-net model the roles of vertices
and hyperedges are reversed. </p>
<p>Zoltan contains a native parallel hypergraph partitioner, called PHG
(Parallel HyperGraph partitioner). In addition, Zoltan provides
access to <a href="http://bmi.osu.edu/%7Eumit/software.htm">PaToH</a>,
a serial hypergraph partitioner.
Note that PaToH is not part of Zoltan and should be obtained
separately from the <a href="http://bmi.osu.edu/%7Eumit/software.htm">
PaToH web site</a>.
Zoltan-PHG is a fully parallel multilevel hypergraph partitioner. For
further technical description, see <a
href="ug_refs.html#hypergraph-ipdps06">[Devine et al, 2006]</a>.<br>
</p>
<h4>Algorithm:</h4>
The algorithm used is multilevel hypergraph partitioning. For
coarsening, several versions of inner product (heavy connectivity)
matching are available.
The refinement is based on Fiduccia-Mattheysis (FM) but in parallel it
is only an approximation.
<h4>Parallel implementation:</h4>
A novel feature of our parallel implementation is that we use a 2D
distribution of the hypergraph. That is, each processor owns partial
data about some vertices and some hyperedges. The processors are
logically organized in a 2D grid as well. Most communication is limited
to either a processor row or column. This design should allow for
good scalability on large number of processors.<br>
<h4>Data structures:</h4>
The hypergraph is the most important data structure. This is stored as
a compressed sparse matrix. Note that in parallel, each processor owns
a local part of the global hypergraph
(a submatrix of the whole matrix).
The hypergraph data type is <i>struct HGraph</i>, and contains
information like number of vertices, hyperedges, pins, compressed
storage of all pins, optional vertex and edge weights, pointers
to relevant communicators, and more. One cryptic notation needs an
explanation: The arrays <i>hindex, hvertex</i> are used to
look up vertex info given a hyperedge, and <i>vindex, vedge</i> are
used to look up hyperedge info given a vertex. Essentially,
we store the hypergraph as a sparse matrix in both CSR and CSC formats.
This doubles the memory cost but gives better performance.
The data on each processor is stored using local indexing, starting at zero.
In order to get the global vertex or edge number, use the macros
<i>VTX_LNO_TO_GNO</i> and <i>EDGE_LNO_TO_GNO</i>. These macros will
look up the correct offsets (using the dist_x and dist_y arrays).
Note that <i>phg->nVtx</i> is always the local number of vertices,
which may be zero on some processors.
<h4>Parameters:</h4>
In the User's Guide, only the most essential parameters have been
documented. There are several other parameters, intended for developers
and perhaps expert "power" users. We give a more complete list of all
parameters below. Note that these parameters <span
style="font-style: italic;">may change in future versions!<br>
</span>
For a precise list of parameters in a particular version of Zoltan, look at the source code (phg.c).
<table nosave="" width="100%">
<tbody>
<tr>
<td valign="top"><b>Method String:</b></td>
<td><b>HYPERGRAPH</b></td>
</tr>
<tr>
<td><b>Parameters:</b></td>
<td><br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">HYPERGRAPH_PACKAGE</span><br>
</td>
<td style="vertical-align: top;">PHG (parallel) or PaToH (serial)<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp; <span
style="font-style: italic;">CHECK_HYPERGRAPH</span><br>
</td>
<td style="vertical-align: top;">Check if input data is valid.
(Slows performance;intended for debugging.)<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp;
PHG_OUTPUT_LEVEL</span><br>
</td>
<td style="vertical-align: top;">Level of verbosity; 0 is silent.<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_FINAL_OUTPUT</span><br>
</td>
<td style="vertical-align: top;">Print stats about final
partition? (0/1)<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_NPROC_VERTEX</span><br>
</td>
<td style="vertical-align: top;">Desired number of processes in
the vertex direction (for 2D internal layout) </td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_NPROC_HEDGE</span><br>
</td>
<td style="vertical-align: top;">Desired number of processes in
the hyperedge direction (for 2D internal layout) </td>
</tr>
<tr>
<td valign="top"><i>&nbsp;&nbsp;&nbsp; PHG_COARSENING_METHOD</i></td>
<td>The method to use in matching/coarsening; currently these are
available.&nbsp; <br>
<span style="font-style: italic;">agg</span> - agglomerative inner product
matching (a.k.a. heavy connectivity matching) <br>
<span style="font-style: italic;">ipm</span> - inner product
matching (a.k.a. heavy connectivity matching) <br>
<span style="font-style: italic;">c-ipm</span> -&nbsp; column
ipm;&nbsp; faster method based on ipm within processor columns <br>
<span style="font-style: italic;">a-ipm </span>- alternate
between fast method (l-ipm ) and ipm <br>
<span style="font-style: italic;">l-ipm </span>-&nbsp; local ipm
on each processor. Fastest option&nbsp; but often gives poor quality. <br>
<i>h-ipm - </i>hybrid ipm that&nbsp; uses partial c-ipm followed
by ipm on each level <br>
<i><br>
</i></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp; <span style="font-style: italic;">PHG_COARSENING_LIMIT</span><br>
</td>
<td>Number of vertices at which to stop coarsening.<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_VERTEX_VISIT_ORDER</span><br>
</td>
<td style="vertical-align: top;">Ordering of vertices in greedy
matching scheme:<br>
0 - random<br>
1 - natural order (as given by the query functions)<br>
2 - increasing vertex weights<br>
3 - increasing vertex degree<br>
4 - increasing vertex degree, weighted by pins<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_EDGE_SCALING</span><br>
</td>
<td style="vertical-align: top;">Scale edge weights by some
function of size of the hyperedges:<br>
0 - no scaling<br>
1 - scale by 1/(size-1)&nbsp;&nbsp;&nbsp;&nbsp; [absorption scaling]<br>
2 - scale by 2/((size*size-1)) [clique scaling]<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_VERTEX_SCALING</span><br>
</td>
<td style="vertical-align: top;">Variations in "inner product"
similarity metric (for matching):<br>
0 - Euclidean inner product: &lt;x,y&gt;<br>
1 - cosine similarity: &lt;x,y&gt;/(|x|*|y|)<br>
2 - &lt;x,y&gt;/(|x|^2 * |y|^2)<br>
3 - scale by sqrt of vertex weights<br>
4 - scale by vertex weights<br>
</td>
</tr>
<tr>
<td valign="top">&nbsp;&nbsp;&nbsp; <i>PHG_COARSEPARTITION_METHOD</i></td>
<td>Method to partition the coarsest (smallest) hypergraph;
typically done in serial:<br>
<span style="font-style: italic;">random</span> - random<br>
<span style="font-style: italic;">linear</span> - linear
(natural) order<br>
<span style="font-style: italic;">greedy </span>- greedy method
based on minimizing cuts<br>
<span style="font-style: italic;">auto </span>- automatically
select from the above methods (in parallel, the processes will do
different methods)<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp;&nbsp; <span
style="font-style: italic;">PHG_REFINEMENT_METHOD</span><br>
</td>
<td style="vertical-align: top;">Refinement algorithm:<br>
&nbsp;<span style="font-style: italic;">fm </span>- two-way
approximate&nbsp; FM<br>
<span style="font-style: italic;">none</span> - no refinement<br>
</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp; <i>PHG_REFINEMENT_LOOP_LIMIT</i></td>
<td>Loop limit in FM refinement. Higher number means more
refinement. <br>
</td>
</tr>
<tr nosave="" valign="top">
<td>&nbsp;&nbsp;&nbsp; <span style="font-style: italic;">PHG_REFINEMENT_MAX_NEG_MOVE</span><br>
</td>
<td nosave="">Maximum number of negative moves allowed in FM.<br>
</td>
</tr>
<tr nosave="" valign="top">
<td>&nbsp;&nbsp; <span style="font-style: italic;">PHG_BAL_TOL_ADJUSTMENT</span><br>
</td>
<td nosave="">Controls how the balance tolerance is adjusted at
each level of bisection.<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp; <span
style="font-style: italic;">PHG_RANDOMIZE_INPUT</span><br>
</td>
<td style="vertical-align: top;">Randomize layout of vertices and
hyperedges in internal parallel 2D layout? (0/1)<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp; <a
name="PHG_EDGE_WEIGHT_OPERATION"></a><span style="font-style: italic;">PHG_EDGE_WEIGHT_OPERATION</span>
</td>
<td style="vertical-align: top;">Operation to be applied to edge
weights supplied by different processes for the same hyperedge:<br>
<i>add</i> - the hyperedge weight will be the sum of the supplied
weights<br>
<i>max</i> - the hyperedge weight will be the maximum of the
supplied weights<br>
<i>error</i> - if the hyperedge weights are not equal, Zoltan
will flag an error, otherwise the hyperedge weight will be the value
returned by the processes<br>
</td>
</tr>
<tr nosave="" valign="top">
<td>&nbsp;&nbsp; <span style="font-style: italic;">EDGE_SIZE_THRESHOLD</span><br>
</td>
<td nosave="">Ignore hyperedges greater than this fraction times
number of vertices.<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp; <span
style="font-style: italic;">PATOH_ALLOC_POOL0</span><br>
</td>
<td style="vertical-align: top;">Memory allocation for PaToH; see
the PaToH manual for details.<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">&nbsp;&nbsp; <span
style="font-style: italic;">PATOH_ALLOC_POOL1</span><br>
</td>
<td style="vertical-align: top;">Memory allocation for PaToH; see
the PaToH manual for details.</td>
</tr>
<tr>
<td valign="top"><b>Default values:</b></td>
<td><br>
</td>
</tr>
<tr>
<td><br>
</td>
<td><i>HYPERGRAPH_PACKAGE = PHG<br>
</i></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">CHECK_HYPERGRAPH</span>
= 0<br>
</td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_OUTPUT_LEVEL=0</span></td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_FINAL_OUTPUT=0</span></td>
</tr>
<tr>
<td><br>
</td>
<td><i>PHG_REDUCTION_METHOD=ipm</i></td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_REDUCTION_LIMIT=100</span></td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_VERTEX_VISIT_ORDER=0</span></td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_EDGE_SCALING=0</span></td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_VERTEX_SCALING=0</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><i>PHG_COARSEPARTITION_METHOD=greedy</i></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_REFINEMENT_METHOD=fm</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><i>PHG_REFINEMENT_LOOP_LIMIT=10</i></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_REFINEMENT_MAX_NEG_MOVE=100</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_BAL_TOL_ADJUSTMENT=0.7</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_RANDOMIZE_INPUT=0</span></td>
</tr>
<tr>
<td><br>
</td>
<td><span style="font-style: italic;">PHG_EDGE_WEIGHT_OPERATION=max</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">EDGE_SIZE_THRESHOLD=0.25</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">PATOH_ALLOC_POOL0=0</span></td>
</tr>
<tr>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span style="font-style: italic;">PATOH_ALLOC_POOL1=0</span></td>
</tr>
<tr>
<td valign="top"><b>Required Query Functions:</b></td>
<td><br>
</td>
</tr>
<tr>
<td><br>
</td>
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
</tr>
<tr>
<td><br>
</td>
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
or <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a></b>/<b><a
href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a></b>
pair</td>
</tr>
<tr nosave="" valign="top">
<td><br>
</td>
<td nosave=""> <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_SIZE_CS_FN">ZOLTAN_HG_SIZE_CS_FN</a></b>
<br>
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_CS_FN">ZOLTAN_HG_CS_FN</a></b>
</td>
</tr>
<tr>
<td valign="top"><b>Optional Query Functions:</b></td>
<td><br>
</td>
</tr>
<tr>
<td><br>
</td>
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_SIZE_EDGE_WTS_FN">ZOLTAN_HG_SIZE_EDGE_WTS_FN</a></b></td>
</tr>
<tr>
<td><br>
</td>
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_EDGE_WTS_FN">ZOLTAN_HG_EDGE_WTS_FN</a></b></td>
</tr>
</tbody>
</table>
<p>
It is possible to provide the graph query functions instead of the
hypergraph queries, though this is not recommended. If only graph query
functions are registered, Zoltan will automatically create a hypergraph
from the graph, but some information (specifically, edge weights) will
be lost. </p>
<hr width="100%">[<a href="ug.html">Table of Contents</a>&nbsp; | <a
href="dev_reftree.html">Next:&nbsp;
Refinement Tree Partitioning(NEANEA CHANGE ME)</a>&nbsp; |&nbsp; <a
href="dev_parmetis.html">Previous:&nbsp;
ParMetis(NEANEA CHANGE ME)</a>&nbsp; |&nbsp; <a href="http://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
</body>
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,38 @@
\relax
\ifx\hyper@anchor\@undefined
\global \let \oldcontentsline\contentsline
\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global \let \oldnewlabel\newlabel
\gdef \newlabel#1#2{\newlabelxx{#1}#2}
\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\let \contentsline\oldcontentsline
\let \newlabel\oldnewlabel}
\else
\global \let \hyper@last\relax
\fi
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Parallel hypergraphs and geometric input}{1}{section.2}}
\@writefile{toc}{\contentsline {section}{\numberline {3}PHG, MPI and 2-dimensional representation}{2}{section.3}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Before communication}}{2}{table.1}}
\newlabel{tab:0/tc}{{1}{2}{\label {tab:0/tc} Before communication\relax }{table.1}{}}
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces After communication}}{2}{table.2}}
\newlabel{tab:1/tc}{{2}{2}{\label {tab:1/tc} After communication\relax }{table.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Matching}{3}{section.4}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Reduction factor}{3}{section.5}}
\citation{Catalyurek}
\@writefile{toc}{\contentsline {section}{\numberline {6}Results}{4}{section.6}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Runtimes on 128 processors}}{4}{figure.1}}
\newlabel{fig:Times_np_128}{{1}{4}{Runtimes on 128 processors\relax }{figure.1}{}}
\bibcite{Catalyurek}{1}
\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion and discussion}{5}{section.7}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Cuts on 128 processors}}{6}{figure.2}}
\newlabel{fig:Cuts_np_128}{{2}{6}{Cuts on 128 processors\relax }{figure.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Timing by percentage on 128 processors (UL, Shockstem 3D; UR, Shockstem 3D -- 108; LL, RPI; LR, Slac1.5}}{6}{figure.3}}
\newlabel{fig:Percent_np_128}{{3}{6}{Timing by percentage on 128 processors (UL, Shockstem 3D; UR, Shockstem 3D -- 108; LL, RPI; LR, Slac1.5\relax }{figure.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Runtimes in serial on 2 processors}}{7}{figure.4}}
\newlabel{fig:Times_np_2}{{4}{7}{Runtimes in serial on 2 processors\relax }{figure.4}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Cuts in serial on 2 processors}}{7}{figure.5}}
\newlabel{fig:Cuts_np_2}{{5}{7}{Cuts in serial on 2 processors\relax }{figure.5}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Timing by percentage on 2 processors (UL, Shockstem 3D; UR, Shockstem 3D -- 108; LL, RPI; LR, Slac1.5}}{9}{figure.6}}
\newlabel{fig:Percent_np_2}{{6}{9}{Timing by percentage on 2 processors (UL, Shockstem 3D; UR, Shockstem 3D -- 108; LL, RPI; LR, Slac1.5\relax }{figure.6}{}}

View File

@ -0,0 +1,336 @@
This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2011.6.3) 18 AUG 2011 13:37
entering extended mode
%&-line parsing enabled.
**hybrid_current.tex
(./hybrid_current.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, arabic, basque, bulgarian, coptic, welsh, czech, slovak, german, ng
erman, danish, esperanto, spanish, catalan, galician, estonian, farsi, finnish,
french, greek, monogreek, ancientgreek, croatian, hungarian, interlingua, ibyc
us, indonesian, icelandic, italian, latin, mongolian, dutch, norsk, polish, por
tuguese, pinyin, romanian, russian, slovenian, uppersorbian, serbian, swedish,
turkish, ukenglish, ukrainian, loaded.
(/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size12.clo
File: size12.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/share/texmf/tex/latex/amsmath/amsmath.sty
Package: amsmath 2000/07/18 v2.13 AMS math features
\@mathmargin=\skip43
For additional information on amsmath, use the `?' option.
(/usr/share/texmf/tex/latex/amsmath/amstext.sty
Package: amstext 2000/06/29 v2.01
(/usr/share/texmf/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0
\@emptytoks=\toks14
\ex@=\dimen103
))
(/usr/share/texmf/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d
\pmbraise@=\dimen104
)
(/usr/share/texmf/tex/latex/amsmath/amsopn.sty
Package: amsopn 1999/12/14 v2.01 operator names
)
\inf@bad=\count87
LaTeX Info: Redefining \frac on input line 211.
\uproot@=\count88
\leftroot@=\count89
LaTeX Info: Redefining \overline on input line 307.
\classnum@=\count90
\DOTSCASE@=\count91
LaTeX Info: Redefining \ldots on input line 379.
LaTeX Info: Redefining \dots on input line 382.
LaTeX Info: Redefining \cdots on input line 467.
\Mathstrutbox@=\box26
\strutbox@=\box27
\big@size=\dimen105
LaTeX Font Info: Redeclaring font encoding OML on input line 567.
LaTeX Font Info: Redeclaring font encoding OMS on input line 568.
\macc@depth=\count92
\c@MaxMatrixCols=\count93
\dotsspace@=\muskip10
\c@parentequation=\count94
\dspbrk@lvl=\count95
\tag@help=\toks15
\row@=\count96
\column@=\count97
\maxfields@=\count98
\andhelp@=\toks16
\eqnshift@=\dimen106
\alignsep@=\dimen107
\tagshift@=\dimen108
\tagwidth@=\dimen109
\totwidth@=\dimen110
\lineht@=\dimen111
\@envbody=\toks17
\multlinegap=\skip44
\multlinetaggap=\skip45
\mathdisplay@stack=\toks18
LaTeX Info: Redefining \[ on input line 2666.
LaTeX Info: Redefining \] on input line 2667.
)
(/usr/share/texmf/tex/latex/graphics/graphicx.sty
Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/share/texmf/tex/latex/graphics/keyval.sty
Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
\KV@toks@=\toks19
)
(/usr/share/texmf/tex/latex/graphics/graphics.sty
Package: graphics 2006/02/20 v1.0o Standard LaTeX Graphics (DPC,SPQR)
(/usr/share/texmf/tex/latex/graphics/trig.sty
Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
)
(/usr/share/texmf/tex/latex/config/graphics.cfg
File: graphics.cfg 2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
)
Package graphics Info: Driver file: pdftex.def on input line 90.
(/usr/share/texmf/tex/latex/pdftex-def/pdftex.def
File: pdftex.def 2007/01/08 v0.04d Graphics/color for pdfTeX
\Gread@gobject=\count99
))
\Gin@req@height=\dimen112
\Gin@req@width=\dimen113
)
(/usr/share/texmf/tex/latex/tools/verbatim.sty
Package: verbatim 2003/08/22 v1.5q LaTeX2e package for verbatim enhancements
\every@verbatim=\toks20
\verbatim@line=\toks21
\verbatim@in@stream=\read1
)
(/usr/share/texmf/tex/latex/graphics/color.sty
Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC)
(/usr/share/texmf/tex/latex/config/color.cfg
File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
)
Package color Info: Driver file: pdftex.def on input line 130.
)
(/usr/share/texmf/tex/latex/subfigure/subfigure.sty
Package: subfigure 2002/03/15 v2.1.5 subfigure package
\subfigtopskip=\skip46
\subfigcapskip=\skip47
\subfigcaptopadj=\dimen114
\subfigbottomskip=\skip48
\subfigcapmargin=\dimen115
\subfiglabelskip=\skip49
\c@subfigure=\count100
\c@lofdepth=\count101
\c@subtable=\count102
\c@lotdepth=\count103
****************************************
* Local config file subfigure.cfg used *
****************************************
(/usr/share/texmf/tex/latex/subfigure/subfigure.cfg)
\subfig@top=\skip50
\subfig@bottom=\skip51
)
(/usr/share/texmf/tex/latex/hyperref/hyperref.sty
Package: hyperref 2007/02/07 v6.75r Hypertext links for LaTeX
\@linkdim=\dimen116
\Hy@linkcounter=\count104
\Hy@pagecounter=\count105
(/usr/share/texmf/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2007/02/07 v6.75r Hyperref: PDFDocEncoding definition (HO)
)
(/usr/share/texmf/tex/latex/config/hyperref.cfg
File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
)
(/usr/share/texmf/tex/latex/oberdiek/kvoptions.sty
Package: kvoptions 2006/08/22 v2.4 Connects package keyval with LaTeX options (
HO)
)
Package hyperref Info: Hyper figures OFF on input line 2288.
Package hyperref Info: Link nesting OFF on input line 2293.
Package hyperref Info: Hyper index ON on input line 2296.
Package hyperref Info: Plain pages OFF on input line 2303.
Package hyperref Info: Backreferencing OFF on input line 2308.
Implicit mode ON; LaTeX internals redefined
Package hyperref Info: Bookmarks ON on input line 2444.
(/usr/share/texmf/tex/latex/ltxmisc/url.sty
\Urlmuskip=\muskip11
Package: url 2005/06/27 ver 3.2 Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 2599.
\Fld@menulength=\count106
\Field@Width=\dimen117
\Fld@charsize=\dimen118
\Choice@toks=\toks22
\Field@toks=\toks23
Package hyperref Info: Hyper figures OFF on input line 3102.
Package hyperref Info: Link nesting OFF on input line 3107.
Package hyperref Info: Hyper index ON on input line 3110.
Package hyperref Info: backreferencing OFF on input line 3117.
Package hyperref Info: Link coloring OFF on input line 3122.
\Hy@abspage=\count107
\c@Item=\count108
\c@Hfootnote=\count109
)
*hyperref using default driver hpdftex*
(/usr/share/texmf/tex/latex/hyperref/hpdftex.def
File: hpdftex.def 2007/02/07 v6.75r Hyperref driver for pdfTeX
\Fld@listcount=\count110
) (./hybrid_current.aux)
\openout1 = `hybrid_current.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
Package hyperref Info: Link coloring OFF on input line 26.
(/usr/share/texmf/tex/latex/hyperref/nameref.sty
Package: nameref 2006/12/27 v2.28 Cross-referencing by name of section
(/usr/share/texmf/tex/latex/oberdiek/refcount.sty
Package: refcount 2006/02/20 v3.0 Data extraction from references (HO)
)
\c@section@level=\count111
)
LaTeX Info: Redefining \ref on input line 26.
LaTeX Info: Redefining \pageref on input line 26.
(./hybrid_current.out)
(./hybrid_current.out)
\@outlinefile=\write3
\openout3 = `hybrid_current.out'.
! Missing $ inserted.
<inserted text>
$
l.73 that is, \forall
\, $v_x$\in\, $H:$\, \exists\, $C_x = \{c_0, c_1, ...,...
?
! Missing $ inserted.
<inserted text>
$
l.73 that is, \forall\, $v_
x$\in\, $H:$\, \exists\, $C_x = \{c_0, c_1, ...,...
?
! Missing $ inserted.
<inserted text>
$
l.73 that is, \forall\, $v_x$\in
\, $H:$\, \exists\, $C_x = \{c_0, c_1, ...,...
?
! Missing $ inserted.
<inserted text>
$
l.73 ... \forall\, $v_x$\in\, $H:$\, \exists\, $C_
x = \{c_0, c_1, ..., c_{n...
?
[1
{/usr/share/texmf/fonts/map/pdftex/updmap/pdftex.map}]
! Missing $ inserted.
<inserted text>
$
l.132 ...}^{numProc-1} ($number of local vertices_
i$)$.
?
! Missing $ inserted.
<inserted text>
$
l.133
?
[2] [3] <128_time.pdf, id=61, 794.97pt x 614.295pt>
File: 128_time.pdf Graphic file (type pdf)
<use 128_time.pdf>
<128_cutl.pdf, id=62, 794.97pt x 614.295pt>
File: 128_cutl.pdf Graphic file (type pdf)
<use 128_cutl.pdf> [4 <./128_time.pdf
pdfTeX warning: pdflatex (file ./128_time.pdf): PDF inclusion: Page Group detec
ted which pdfTeX can't handle. Ignoring it.
>] <128_breakdown_percent.pdf, id=76, 794.97pt x 614.295pt>
File: 128_breakdown_percent.pdf Graphic file (type pdf)
<use 128_breakdown_percent.pdf> <2_time.pdf, id=77, 794.97pt x 614.295pt>
File: 2_time.pdf Graphic file (type pdf)
<use 2_time.pdf> <2_cutl.pdf, id=78, 794.97pt x 614.295pt>
File: 2_cutl.pdf Graphic file (type pdf)
<use 2_cutl.pdf>
<2_breakdown_percent.pdf, id=79, 794.97pt x 614.295pt>
File: 2_breakdown_percent.pdf Graphic file (type pdf)
<use 2_breakdown_percent.pdf> [5] [6 <./128_cutl.pdf
pdfTeX warning: pdflatex (file ./128_cutl.pdf): PDF inclusion: Page Group detec
ted which pdfTeX can't handle. Ignoring it.
> <./128_breakdown_percent.pdf
pdfTeX warning: pdflatex (file ./128_breakdown_percent.pdf): PDF inclusion: Pag
e Group detected which pdfTeX can't handle. Ignoring it.
>] [7 <./2_time.pdf
pdfTeX warning: pdflatex (file ./2_time.pdf): PDF inclusion: Page Group detecte
d which pdfTeX can't handle. Ignoring it.
> <./2_cutl.pdf
pdfTeX warning: pdflatex (file ./2_cutl.pdf): PDF inclusion: Page Group detecte
d which pdfTeX can't handle. Ignoring it.
>] [8] [9 <./2_breakdown_percent.pdf
pdfTeX warning: pdflatex (file ./2_breakdown_percent.pdf): PDF inclusion: Page
Group detected which pdfTeX can't handle. Ignoring it.
>] (./hybrid_current.aux) )
Here is how much of TeX's memory you used:
3336 strings out of 256216
44724 string characters out of 1917073
104735 words of memory out of 1500000
6577 multiletter control sequences out of 10000+200000
8770 words of font info for 32 fonts, out of 1200000 for 2000
645 hyphenation exceptions out of 8191
27i,9n,36p,252b,420s stack positions out of 5000i,500n,6000p,200000b,15000s
</usr/share/texmf/fonts/type1/bluesky/cm/cmbx12.pfb>
</usr/share/texmf/fonts/type1/bluesky/cm/cmex10.pfb></usr/share/texmf/fonts/typ
e1/bluesky/cm/cmmi12.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmmi8.pfb></u
sr/share/texmf/fonts/type1/bluesky/cm/cmr10.pfb></usr/share/texmf/fonts/type1/b
luesky/cm/cmr12.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmr8.pfb></usr/sha
re/texmf/fonts/type1/bluesky/cm/cmsy10.pfb></usr/share/texmf/fonts/type1/bluesk
y/cm/cmsy8.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmti12.pfb></usr/share/
texmf/fonts/type1/bluesky/cm/cmtt12.pfb>
Output written on hybrid_current.pdf (9 pages, 186635 bytes).
PDF statistics:
186 PDF objects out of 1000 (max. 8388607)
27 named destinations out of 1000 (max. 131072)
103 words of extra memory for PDF output out of 10000 (max. 10000000)

Some files were not shown because too many files have changed in this diff Show More