本文整理汇总了C++中VLOG函数的典型用法代码示例。如果您正苦于以下问题:C++ VLOG函数的具体用法?C++ VLOG怎么用?C++ VLOG使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了VLOG函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: argc_
Initializer::Initializer(int& argc, char**& argv, ToolType tool)
: argc_(&argc),
argv_(&argv),
tool_(tool),
binary_(fs::path(std::string(argv[0])).filename().string()) {
std::srand(time(nullptr));
// osquery implements a custom help/usage output.
for (int i = 1; i < *argc_; i++) {
auto help = std::string((*argv_)[i]);
if ((help == "--help" || help == "-help" || help == "--h" ||
help == "-h") &&
tool != OSQUERY_TOOL_TEST) {
printUsage(binary_, tool_);
::exit(0);
}
}
// To change the default config plugin, compile osquery with
// -DOSQUERY_DEFAULT_CONFIG_PLUGIN=<new_default_plugin>
#ifdef OSQUERY_DEFAULT_CONFIG_PLUGIN
FLAGS_config_plugin = STR(OSQUERY_DEFAULT_CONFIG_PLUGIN);
#endif
// To change the default logger plugin, compile osquery with
// -DOSQUERY_DEFAULT_LOGGER_PLUGIN=<new_default_plugin>
#ifdef OSQUERY_DEFAULT_LOGGER_PLUGIN
FLAGS_logger_plugin = STR(OSQUERY_DEFAULT_LOGGER_PLUGIN);
#endif
// Set version string from CMake build
GFLAGS_NAMESPACE::SetVersionString(OSQUERY_VERSION);
// Let gflags parse the non-help options/flags.
GFLAGS_NAMESPACE::ParseCommandLineFlags(
argc_, argv_, (tool == OSQUERY_TOOL_SHELL));
if (tool == OSQUERY_TOOL_SHELL) {
// The shell is transient, rewrite config-loaded paths.
FLAGS_disable_logging = true;
// Get the caller's home dir for temporary storage/state management.
auto homedir = osqueryHomeDirectory();
if (osquery::pathExists(homedir).ok() ||
boost::filesystem::create_directory(homedir)) {
osquery::FLAGS_database_path = homedir + "/shell.db";
osquery::FLAGS_extensions_socket = homedir + "/shell.em";
}
}
// If the caller is checking configuration, disable the watchdog/worker.
if (FLAGS_config_check) {
FLAGS_disable_watchdog = true;
}
// Initialize the status and results logger.
initStatusLogger(binary_);
if (tool != OSQUERY_EXTENSION) {
if (isWorker()) {
VLOG(1) << "osquery worker initialized [watcher="
<< getenv("OSQUERY_WORKER") << "]";
} else {
VLOG(1) << "osquery initialized [version=" << OSQUERY_VERSION << "]";
}
} else {
VLOG(1) << "osquery extension initialized [sdk=" << OSQUERY_SDK_VERSION
<< "]";
}
}
示例2: function_bind
void BlenderSession::render()
{
/* set callback to write out render results */
session->write_render_tile_cb = function_bind(&BlenderSession::write_render_tile, this, _1);
session->update_render_tile_cb = function_bind(&BlenderSession::update_render_tile, this, _1);
/* get buffer parameters */
SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height);
/* render each layer */
BL::RenderSettings r = b_scene.render();
BL::RenderSettings::layers_iterator b_layer_iter;
BL::RenderResult::views_iterator b_view_iter;
for(r.layers.begin(b_layer_iter); b_layer_iter != r.layers.end(); ++b_layer_iter) {
b_rlay_name = b_layer_iter->name();
/* temporary render result to find needed passes and views */
BL::RenderResult b_rr = begin_render_result(b_engine, 0, 0, 1, 1, b_rlay_name.c_str(), NULL);
BL::RenderResult::layers_iterator b_single_rlay;
b_rr.layers.begin(b_single_rlay);
/* layer will be missing if it was disabled in the UI */
if(b_single_rlay == b_rr.layers.end()) {
end_render_result(b_engine, b_rr, true, false);
continue;
}
BL::RenderLayer b_rlay = *b_single_rlay;
/* add passes */
vector<Pass> passes;
Pass::add(PASS_COMBINED, passes);
#ifdef WITH_CYCLES_DEBUG
Pass::add(PASS_BVH_TRAVERSAL_STEPS, passes);
/* Pass::add(PASS_RAY_BOUNCES, passes); */
#endif
if(session_params.device.advanced_shading) {
/* loop over passes */
BL::RenderLayer::passes_iterator b_pass_iter;
for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != b_rlay.passes.end(); ++b_pass_iter) {
BL::RenderPass b_pass(*b_pass_iter);
PassType pass_type = get_pass_type(b_pass);
if(pass_type == PASS_MOTION && scene->integrator->motion_blur)
continue;
if(pass_type != PASS_NONE)
Pass::add(pass_type, passes);
}
}
buffer_params.passes = passes;
scene->film->pass_alpha_threshold = b_layer_iter->pass_alpha_threshold();
scene->film->tag_passes_update(scene, passes);
scene->film->tag_update(scene);
scene->integrator->tag_update(scene);
for(b_rr.views.begin(b_view_iter); b_view_iter != b_rr.views.end(); ++b_view_iter) {
b_rview_name = b_view_iter->name();
/* set the current view */
b_engine.active_view_set(b_rview_name.c_str());
/* update scene */
sync->sync_camera(b_render, b_engine.camera_override(), width, height);
sync->sync_data(b_v3d, b_engine.camera_override(), &python_thread_state, b_rlay_name.c_str());
/* update number of samples per layer */
int samples = sync->get_layer_samples();
bool bound_samples = sync->get_layer_bound_samples();
if(samples != 0 && (!bound_samples || (samples < session_params.samples)))
session->reset(buffer_params, samples);
else
session->reset(buffer_params, session_params.samples);
/* render */
session->start();
session->wait();
if(session->progress.get_cancel())
break;
}
/* free result without merging */
end_render_result(b_engine, b_rr, true, false);
if(session->progress.get_cancel())
break;
}
double total_time, render_time;
session->progress.get_time(total_time, render_time);
VLOG(1) << "Total render time: " << total_time;
VLOG(1) << "Render time (without synchronization): " << render_time;
//.........这里部分代码省略.........
示例3: performClangCastOnIR
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Takes a clang::CastExpr, converts its subExpr into IR and wraps it with the necessary IR casts
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
core::ExpressionPtr performClangCastOnIR(insieme::frontend::conversion::Converter& converter, const clang::CastExpr* castExpr) {
core::ExpressionPtr expr = converter.convertExpr(castExpr->getSubExpr());
core::TypePtr targetTy = converter.convertType(castExpr->getType());
core::TypePtr exprTy = expr->getType();
if(VLOG_IS_ON(2)) {
VLOG(2) << "castExpr: ";
castExpr->dump();
VLOG(2) << "\n";
}
const core::FrontendIRBuilder& builder = converter.getIRBuilder();
//const core::lang::BasicGenerator& basic = builder.getLangBasic();
//core::NodeManager& mgr = converter.getNodeManager();
switch(castExpr->getCastKind()) {
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// A conversion which causes the extraction of an r-value from the operand gl-value.
// The result of an r-value conversion is always unqualified.
// IR: this is the same as ref_deref: ref<a'> -> a'
case clang::CK_LValueToRValue:
return builder.deref(expr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Numerical value type conversions
// handled by IR numeric_cast
case clang::CK_IntegralCast:
case clang::CK_IntegralToFloating:
case clang::CK_FloatingToIntegral:
case clang::CK_FloatingCast:
return builder.numericCast(expr, targetTy);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Numeric and pointer to boolean
case clang::CK_IntegralToBoolean:
case clang::CK_FloatingToBoolean:
case clang::CK_PointerToBoolean:
return utils::exprToBool(expr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// A conversion which causes a bit pattern of one type to be reinterpreted as a bit pattern of another type.
// Generally the operands must have equivalent size and unrelated types. The pointer conversion
// char* -> int* is a bitcast. A conversion from any pointer type to a C pointer type is a bitcast unless
// it's actually BaseToDerived or DerivedToBase. A conversion to a block pointer or ObjC pointer type is a
// bitcast only if the operand has the same type kind; otherwise, it's one of the specialized casts below.
// Vector coercions are bitcasts.
case clang::CK_BitCast:
return implementBitcast(converter, targetTy, expr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Integral to pointer. A special kind of reinterpreting conversion.
// (char*) 0x1001aab0, reinterpret_cast<int*>(0)
case clang::CK_IntegralToPointer:
return core::lang::buildPtrFromIntegral(expr, targetTy);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Pointer to integral. A special kind of reinterpreting conversion.
// (int)((void*)0x1001aab0)
case clang::CK_PointerToIntegral:
return core::lang::buildPtrToIntegral(expr, targetTy);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Null pointer constant to pointer, e.g. (int*)0
case clang::CK_NullToPointer:
return core::lang::buildPtrNull(targetTy);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Array to pointer decay. int[10] -> int* char[5][6] -> char(*)[6]
case clang::CK_ArrayToPointerDecay:
return core::lang::buildPtrFromArray(expr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CK_FunctionToPointerDecay - Function to pointer decay. void(int) -> void(*)(int)
// CK_BuiltinFnToFnPtr - Same as above, for builtin functions
case clang::CK_FunctionToPointerDecay:
case clang::CK_BuiltinFnToFnPtr:
return core::lang::buildPtrOfFunction(expr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// NoOps: Conversions that have no effect
// * same type casts, CK_NoOp, e.g. int -> int
case clang::CK_NoOp:
return expr;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Unused return value: (void)fun()
case clang::CK_ToVoid:
return builder.unitConsume(expr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//case clang::CK_ConstructorConversion:
// // Conversion by constructor. struct A { A(int); }; A a = A(10);
// {
// // this should be handled by backend compiler
// // http://stackoverflow.com/questions/1384007/conversion-constructor-vs-conversion-operator-precedence
// return expr;
// }
//.........这里部分代码省略.........
示例4: VLOG
void Pack::initialize(const std::string& name,
const std::string& source,
const pt::ptree& tree) {
name_ = name;
source_ = source;
// Check the shard limitation, shards falling below this value are included.
if (tree.count("shard") > 0) {
shard_ = tree.get<size_t>("shard", 0);
}
// Check for a platform restriction.
platform_.clear();
if (tree.count("platform") > 0) {
platform_ = tree.get<std::string>("platform", "");
}
// Check for a version restriction.
version_.clear();
if (tree.count("version") > 0) {
version_ = tree.get<std::string>("version", "");
}
// Apply the shard, platform, and version checking.
// It is important to set each value such that the packs meta-table can report
// each of the restrictions.
if ((shard_ > 0 && shard_ < getMachineShard()) || !checkPlatform() ||
!checkVersion()) {
return;
}
discovery_queries_.clear();
if (tree.count("discovery") > 0) {
for (const auto& item : tree.get_child("discovery")) {
discovery_queries_.push_back(item.second.get_value<std::string>());
}
}
// Initialize a discovery cache at time 0.
discovery_cache_ = std::make_pair<size_t, bool>(0, false);
valid_ = true;
// If the splay percent is less than 1 reset to a sane estimate.
if (FLAGS_schedule_splay_percent <= 1) {
FLAGS_schedule_splay_percent = 10;
}
schedule_.clear();
if (tree.count("queries") == 0) {
// This pack contained no queries.
return;
}
// Iterate the queries (or schedule) and check platform/version/sanity.
for (const auto& q : tree.get_child("queries")) {
if (q.second.count("shard") > 0) {
auto shard = q.second.get<size_t>("shard", 0);
if (shard > 0 && shard < getMachineShard()) {
continue;
}
}
if (q.second.count("platform")) {
if (!checkPlatform(q.second.get<std::string>("platform", ""))) {
continue;
}
}
if (q.second.count("version")) {
if (!checkVersion(q.second.get<std::string>("version", ""))) {
continue;
}
}
ScheduledQuery query;
query.query = q.second.get<std::string>("query", "");
query.interval = q.second.get("interval", FLAGS_schedule_default_interval);
if (query.interval <= 0 || query.query.empty() || query.interval > 592200) {
// Invalid pack query.
VLOG(1) << "Query has invalid interval: " << q.first << ": "
<< query.interval;
continue;
}
query.splayed_interval = restoreSplayedValue(q.first, query.interval);
query.options["snapshot"] = q.second.get<bool>("snapshot", false);
query.options["removed"] = q.second.get<bool>("removed", true);
schedule_[q.first] = query;
}
}
示例5: switch
//.........这里部分代码省略.........
delete[] line;
delete[] lines;
throw Text::RenderException("A character is too large");
}
else {
// It's a blank line.
continue;
}
}
}
int line_count = line_number;
int used_height = line_count * line_height;
used_width += border;
image = Image(used_width, (used_height < height) ? used_height : height, true);
uint8_t clear_colour[4] = {rgba[0], rgba[1], rgba[2], 0x00};
uint8_t clear_mask[4] = {0xff, 0xff, 0xff, 0xff};
image.clear(clear_colour, clear_mask);
// image.clear(0xffffff00, 0xffffffff);
// Render all lines of text.
SDL_Color blank;
blank.r = blank.g = blank.b = blank.a = 0;
SDL_Color colour;
colour.r = rgba[0];
colour.g = rgba[1];
colour.b = rgba[2];
colour.a = rgba[3];
lines_scan = lines;
for (int line_number = 0; line_number < line_count; ++line_number) {
// Render line
VLOG(2) << "Rendering line of text: \"" << lines_scan << "\".";
if (lines_scan[0] == '\0') {
// Skip it - it's a new line.
lines_scan = &lines_scan[1];
continue;
}
SDL_Surface* rendered_line;
{
// It took a whole day to discover that there was a bug in
// SDL_ttf. Starting with certain characters on certain
// fonts seems to break it. :(
// As a hack, prepend and (for balance) append a space.
std::stringstream safe;
safe << " " << lines_scan << " ";
std::string safe_str(safe.str());
if (smooth) {
rendered_line = TTF_RenderUTF8_Shaded(font.font, safe_str.c_str(), colour, blank);
}
else {
rendered_line = TTF_RenderUTF8_Solid(font.font, safe_str.c_str(), colour);
}
}
if (rendered_line == nullptr) {
LOG(WARNING) << "Cannot render line of text: \"" << lines_scan << "\".";
delete[] line;
delete[] lines;
throw Text::RenderException("Cannot render line of text");
}
#ifdef TEXT_SAFE_SURFACE
// This surface has a known format.
示例6: VLOG
void FrameTransport::onComplete() noexcept {
VLOG(6) << "onComplete";
terminateFrameProcessor(folly::exception_wrapper());
}
示例7: main
int
main(int argc, char *argv[])
{
extern struct vlog_module VLM_reconnect;
struct ovsdb_idl *idl;
struct ctl_command *commands;
struct shash local_options;
unsigned int seqno;
size_t n_commands;
char *args;
set_program_name(argv[0]);
fatal_ignore_sigpipe();
vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
vlog_set_levels(&VLM_reconnect, VLF_ANY_DESTINATION, VLL_WARN);
sbrec_init();
sbctl_cmd_init();
/* Log our arguments. This is often valuable for debugging systems. */
args = process_escape_args(argv);
VLOG(ctl_might_write_to_db(argv) ? VLL_INFO : VLL_DBG, "Called as %s", args);
/* Parse command line. */
shash_init(&local_options);
parse_options(argc, argv, &local_options);
commands = ctl_parse_commands(argc - optind, argv + optind, &local_options,
&n_commands);
if (timeout) {
time_alarm(timeout);
}
/* Initialize IDL. */
idl = the_idl = ovsdb_idl_create(db, &sbrec_idl_class, false, false);
run_prerequisites(commands, n_commands, idl);
/* Execute the commands.
*
* 'seqno' is the database sequence number for which we last tried to
* execute our transaction. There's no point in trying to commit more than
* once for any given sequence number, because if the transaction fails
* it's because the database changed and we need to obtain an up-to-date
* view of the database before we try the transaction again. */
seqno = ovsdb_idl_get_seqno(idl);
for (;;) {
ovsdb_idl_run(idl);
if (!ovsdb_idl_is_alive(idl)) {
int retval = ovsdb_idl_get_last_error(idl);
ctl_fatal("%s: database connection failed (%s)",
db, ovs_retval_to_string(retval));
}
if (seqno != ovsdb_idl_get_seqno(idl)) {
seqno = ovsdb_idl_get_seqno(idl);
do_sbctl(args, commands, n_commands, idl);
}
if (seqno == ovsdb_idl_get_seqno(idl)) {
ovsdb_idl_wait(idl);
poll_block();
}
}
}
示例8: p
Spectrum PathIntegrator::Li(const RayDifferential &r, const Scene &scene,
Sampler &sampler, MemoryArena &arena,
int depth) const {
ProfilePhase p(Prof::SamplerIntegratorLi);
Spectrum L(0.f), beta(1.f);
RayDifferential ray(r);
bool specularBounce = false;
int bounces;
for (bounces = 0;; ++bounces) {
// Find next path vertex and accumulate contribution
VLOG(2) << "Path tracer bounce " << bounces << ", current L = " << L <<
", beta = " << beta;
// Intersect _ray_ with scene and store intersection in _isect_
SurfaceInteraction isect;
bool foundIntersection = scene.Intersect(ray, &isect);
// Possibly add emitted light at intersection
if (bounces == 0 || specularBounce) {
// Add emitted light at path vertex or from the environment
if (foundIntersection) {
L += beta * isect.Le(-ray.d);
VLOG(2) << "Added Le -> L = " << L;
} else {
for (const auto &light : scene.infiniteLights)
L += beta * light->Le(ray);
VLOG(2) << "Added infinite area lights -> L = " << L;
}
}
// Terminate path if ray escaped or _maxDepth_ was reached
if (!foundIntersection || bounces >= maxDepth) break;
// Compute scattering functions and skip over medium boundaries
isect.ComputeScatteringFunctions(ray, arena, true);
if (!isect.bsdf) {
VLOG(2) << "Skipping intersection due to null bsdf";
ray = isect.SpawnRay(ray.d);
bounces--;
continue;
}
const Distribution1D *distrib = lightDistribution->Lookup(isect.p);
// Sample illumination from lights to find path contribution.
// (But skip this for perfectly specular BSDFs.)
if (isect.bsdf->NumComponents(BxDFType(BSDF_ALL & ~BSDF_SPECULAR)) >
0) {
++totalPaths;
Spectrum Ld =
beta * UniformSampleOneLight(isect, scene, arena, sampler, false,
distrib);
VLOG(2) << "Sampled direct lighting Ld = " << Ld;
if (Ld.IsBlack()) ++zeroRadiancePaths;
CHECK_GE(Ld.y(), 0.f);
L += Ld;
}
// Sample BSDF to get new path direction
Vector3f wo = -ray.d, wi;
Float pdf;
BxDFType flags;
Spectrum f = isect.bsdf->Sample_f(wo, &wi, sampler.Get2D(), &pdf,
BSDF_ALL, &flags);
VLOG(2) << "Sampled BSDF, f = " << f << ", pdf = " << pdf;
if (f.IsBlack() || pdf == 0.f) break;
beta *= f * AbsDot(wi, isect.shading.n) / pdf;
VLOG(2) << "Updated beta = " << beta;
CHECK_GE(beta.y(), 0.f);
DCHECK(!std::isinf(beta.y()));
specularBounce = (flags & BSDF_SPECULAR) != 0;
ray = isect.SpawnRay(wi);
// Account for subsurface scattering, if applicable
if (isect.bssrdf && (flags & BSDF_TRANSMISSION)) {
// Importance sample the BSSRDF
SurfaceInteraction pi;
Spectrum S = isect.bssrdf->Sample_S(
scene, sampler.Get1D(), sampler.Get2D(), arena, &pi, &pdf);
DCHECK(!std::isinf(beta.y()));
if (S.IsBlack() || pdf == 0) break;
beta *= S / pdf;
// Account for the direct subsurface scattering component
L += beta * UniformSampleOneLight(pi, scene, arena, sampler, false,
lightDistribution->Lookup(pi.p));
// Account for the indirect subsurface scattering component
Spectrum f = pi.bsdf->Sample_f(pi.wo, &wi, sampler.Get2D(), &pdf,
BSDF_ALL, &flags);
if (f.IsBlack() || pdf == 0) break;
beta *= f * AbsDot(wi, pi.shading.n) / pdf;
DCHECK(!std::isinf(beta.y()));
specularBounce = (flags & BSDF_SPECULAR) != 0;
ray = pi.SpawnRay(wi);
}
// Possibly terminate the path with Russian roulette
if (beta.y() < rrThreshold && bounces > 3) {
Float q = std::max((Float).05, 1 - beta.MaxComponentValue());
//.........这里部分代码省略.........
示例9: mo5_k5_load
//.........这里部分代码省略.........
if ( in != 0x01 )
break;
}
/* get block header */
if ( pos + 4 > size )
{
pos -= sz;
break;
}
cassette_image_read( cass, block, pos, 4 );
typ = block[2];
sz2 = (UINT8) (block[3]-1);
if ( block[0] != 0x3c || block[1] != 0x5a || ( typ != 0x00 && typ != 0x01 && typ != 0xff ) || pos+sz2 > size )
{
pos -= sz;
break;
}
pos += 4;
/* get block */
cassette_image_read( cass, block+4, pos, sz2 );
pos += sz2;
/* 0-fillers and 0x01-fillers */
if ( typ == 0 || typ == 0xff )
K5_FILL_0( 1200 );
else
K5_FILL_0( 300 ); /* for MO6 */
K5_FILL_01( sz < 10 ? 10 : sz );
/* put block */
LOG (( "mo5_k5_load: block off=$%x type=$%02X size=%i hbitstart=%i\n", (int) pos-sz2-4, typ, sz2, hbitsize ));
VLOG (( "mo5_k5_load: data:" ));
for ( i = 0; i < sz2 + 4; i ++)
{
VLOG (( " $%02X", block[i] ));
K5_PUT_BYTE( block[i] );
}
VLOG (( "\n" ));
/* checksum */
for ( i = 0, sum = 0; i < sz2; i++ )
sum += block[i+4];
if ( sum )
LOG(( "mo5_k5_load: invalid checksum $%02X (should be 0)\n", sum ));
/* if it is a directory enty, says so to the user */
if ( typ == 0 )
{
char name[] = "01234567.ABC";
UINT8 t = block[15];
UINT8 u = block[16];
int p = (hbitsize - sz2 - 4 - sz) * MO5_HBIT_LENGTH;
memcpy( name, block+4, 8 );
memcpy( name+9, block+12, 3 );
for ( i = 0; name[i]; i++)
{
if ( name[i] < ' ' || name[i] >= 127 )
name[i] = '?';
}
PRINT (( "mo5_k5_load: file \"%s\" type=%s,%s at %imn %is\n",
name,
(t==0) ? "bas" : (t==1) ? "dat" : (t==2) ? "bin" : "???",
(u == 0) ? "a" : (u == 0xff) ? "b" : "?",
p / 60, p % 60 ));
示例10: SLESCreate
//.........这里部分代码省略.........
ierr = KSPGetPC ( M_ksp, &M_pc );
CHKERRABORT( this->worldComm().globalComm(),ierr );
// Have the Krylov subspace method use our good initial guess rather than 0
ierr = KSPSetInitialGuessNonzero ( M_ksp, PETSC_TRUE );
CHKERRABORT( this->worldComm().globalComm(),ierr );
// Set user-specified solver and preconditioner types
this->setPetscSolverType();
this->setPetscConstantNullSpace();
// Set the options from user-input
// Set runtime options, e.g.,
// -ksp_type <type> -pc_type <type> -ksp_monitor -ksp_rtol <rtol>
// These options will override those specified above as long as
// KSPSetFromOptions() is called _after_ any other customization
// routines.
//ierr = PCSetFromOptions ( M_pc );
//CHKERRABORT( this->worldComm().globalComm(),ierr );
ierr = KSPSetFromOptions ( M_ksp );
CHKERRABORT( this->worldComm().globalComm(),ierr );
#endif
// Have the Krylov subspace method use our good initial guess
// rather than 0, unless the user requested a KSPType of
// preonly, which complains if asked to use initial guesses.
#if PETSC_VERSION_LESS_THAN(3,0,0)
KSPType ksp_type;
#else
#if PETSC_VERSION_LESS_THAN(3,4,0)
const KSPType ksp_type;
#else
KSPType ksp_type;
#endif
#endif
ierr = KSPGetType ( M_ksp, &ksp_type );
CHKERRABORT( this->worldComm().globalComm(),ierr );
if ( std::string((char*)ksp_type) == std::string( ( char* )KSPPREONLY ) )
{
ierr = KSPSetInitialGuessNonzero ( M_ksp, PETSC_FALSE );
CHKERRABORT( this->worldComm().globalComm(),ierr );
}
if ( std::string((char*)ksp_type) == std::string( ( char* )KSPGMRES ) )
{
int nRestartGMRES = option(_name="gmres-restart", _prefix=this->prefix() ).template as<int>();
ierr = KSPGMRESSetRestart( M_ksp, nRestartGMRES );
CHKERRABORT( this->worldComm().globalComm(),ierr );
}
// Notify PETSc of location to store residual history.
// This needs to be called before any solves, since
// it sets the residual history length to zero. The default
// behavior is for PETSc to allocate (internally) an array
// of size 1000 to hold the residual norm history.
ierr = KSPSetResidualHistory( M_ksp,
PETSC_NULL, // pointer to the array which holds the history
PETSC_DECIDE, // size of the array holding the history
PETSC_TRUE ); // Whether or not to reset the history for each solve.
CHKERRABORT( this->worldComm().globalComm(),ierr );
//If there is a preconditioner object we need to set the internal setup and apply routines
if ( this->M_preconditioner )
{
VLOG(2) << "preconditioner: " << this->M_preconditioner << "\n";
PCSetType(M_pc, PCSHELL);
PCShellSetName( M_pc, this->M_preconditioner->name().c_str() );
PCShellSetContext( M_pc,( void* )this->M_preconditioner.get() );
PCShellSetSetUp( M_pc,__feel_petsc_preconditioner_setup );
PCShellSetApply( M_pc,__feel_petsc_preconditioner_apply );
PCShellSetView( M_pc,__feel_petsc_preconditioner_view );
#if PETSC_VERSION_LESS_THAN(3,4,0)
const PCType pc_type;
#else
PCType pc_type;
#endif
ierr = PCGetType ( M_pc, &pc_type );
CHKERRABORT( this->worldComm().globalComm(),ierr );
VLOG(2) << "preconditioner set as " << pc_type << "\n";
}
else
{
this->setPetscPreconditionerType();
// sets the software that is used to perform the factorization
PetscPCFactorSetMatSolverPackage( M_pc,this->matSolverPackageType() );
}
if ( Environment::vm(_name="ksp-monitor",_prefix=this->prefix()).template as<bool>() )
{
KSPMonitorSet( M_ksp,KSPMonitorDefault,PETSC_NULL,PETSC_NULL );
}
}
}
示例11: to7_k7_load
//.........这里部分代码省略.........
for ( i = 0; in; in >>= 1 )
i += (in & 1);
if ( i < 5 )
break;
}
/* get block header */
if ( pos + 4 > size )
{
pos -= sz;
break;
}
cassette_image_read( cass, block, pos, 4 );
typ = block[2];
sz2 = block[3]+1;
if ( block[0] != 0x01 || block[1] != 0x3c || ( typ != 0x00 && typ != 0x01 && typ != 0xff ) )
{
pos -= sz;
break;
}
pos += 4;
/* get block */
cassette_image_read( cass, block+4, pos, sz2 );
pos += sz2;
/* 1-filler and 0xff-filler */
if ( typ == 0 || typ == 0xff )
K7_FILL_1( 1000 );
K7_FILL_ff( sz );
/* put block */
LOG (( "to7_k7_load: block off=$%x type=$%02X size=%i bitstart=%i\n", (int) pos-sz2-4, typ, sz2, to7_k7_bitsize ));
VLOG (( "to7_k7_load: data:" ));
for ( i = 0; i < sz2 + 4; i ++)
{
VLOG (( " $%02X", block[i] ));
K7_PUT_BYTE( block[i] );
}
VLOG (( "\n" ));
/* if it is a directory enty, says so to the user */
if ( typ == 0 )
{
char name[] = "01234567.ABC";
UINT8 t = block[15];
UINT8 u = block[16];
int p = (to7_k7_bitsize - sz2 - 4 - sz) * TO7_BIT_LENGTH;
memcpy( name, block+4, 8 );
memcpy( name+9, block+12, 3 );
for ( i = 0; name[i]; i++)
{
if ( name[i] < ' ' || name[i] >= 127 )
name[i] = '?';
}
PRINT (( "to7_k7_load: file \"%s\" type=%s,%s at %imn %is\n",
name,
(t==0) ? "bas" : (t==1) ? "dat" : (t==2) ? "bin" : "???",
(u == 0) ? "a" : (u == 0xff) ? "b" : "?",
p / 60, p % 60 ));
}
/* extra 1-fillers */
if ( typ == 0 || typ == 0xff )
K7_FILL_1( 1000 );
}
示例12: block_until_acquired
/// Dereference cache
operator T*() {
block_until_acquired();
DVLOG(5) << "WO dereference of " << address_ << " * " << count_;
VLOG(6) << "pointer_ = " << pointer_;
return pointer_;
}
示例13: initialize
void initialize(
const string& _argv0,
const Flags& flags,
bool installFailureSignalHandler)
{
static Once* initialized = new Once();
if (initialized->once()) {
return;
}
argv0 = _argv0;
if (flags.logging_level != "INFO" &&
flags.logging_level != "WARNING" &&
flags.logging_level != "ERROR") {
EXIT(1) << "'" << flags.logging_level << "' is not a valid logging level."
" Possible values for 'logging_level' flag are: "
" 'INFO', 'WARNING', 'ERROR'.";
}
FLAGS_minloglevel = getLogSeverity(flags.logging_level);
if (flags.log_dir.isSome()) {
Try<Nothing> mkdir = os::mkdir(flags.log_dir.get());
if (mkdir.isError()) {
EXIT(1) << "Could not initialize logging: Failed to create directory "
<< flags.log_dir.get() << ": " << mkdir.error();
}
FLAGS_log_dir = flags.log_dir.get();
// Do not log to stderr instead of log files.
FLAGS_logtostderr = false;
} else {
// Log to stderr instead of log files.
FLAGS_logtostderr = true;
}
// Log everything to stderr IN ADDITION to log files unless
// otherwise specified.
if (flags.quiet) {
FLAGS_stderrthreshold = 3; // FATAL.
// FLAGS_stderrthreshold is ignored when logging to stderr instead
// of log files. Setting the minimum log level gets around this issue.
if (FLAGS_logtostderr) {
FLAGS_minloglevel = 3; // FATAL.
}
} else {
FLAGS_stderrthreshold = FLAGS_minloglevel;
}
FLAGS_logbufsecs = flags.logbufsecs;
google::InitGoogleLogging(argv0.c_str());
if (flags.log_dir.isSome()) {
// Log this message in order to create the log file; this is because GLOG
// creates the log file once the first log message occurs; also recreate
// the file if it has been created on a previous run.
LOG_AT_LEVEL(FLAGS_minloglevel)
<< google::GetLogSeverityName(FLAGS_minloglevel)
<< " level logging started!";
}
VLOG(1) << "Logging to " <<
(flags.log_dir.isSome() ? flags.log_dir.get() : "STDERR");
if (installFailureSignalHandler) {
// Handles SIGSEGV, SIGILL, SIGFPE, SIGABRT, SIGBUS, SIGTERM
// by default.
google::InstallFailureSignalHandler();
// Set up our custom signal handlers.
struct sigaction action;
action.sa_sigaction = handler;
// Do not block additional signals while in the handler.
sigemptyset(&action.sa_mask);
// The SA_SIGINFO flag tells sigaction() to use
// the sa_sigaction field, not sa_handler.
action.sa_flags = SA_SIGINFO;
// Set up the SIGPIPE signal handler to escalate to SIGABRT
// in order to have the glog handler catch it and print all
// of its lovely information.
if (sigaction(SIGPIPE, &action, NULL) < 0) {
PLOG(FATAL) << "Failed to set sigaction";
}
// We also do not want SIGTERM to dump a stacktrace, as this
// can imply that we crashed, when we were in fact terminated
// by user request.
if (sigaction(SIGTERM, &action, NULL) < 0) {
PLOG(FATAL) << "Failed to set sigaction";
}
}
initialized->done();
}
示例14: VLOG
void EventBase::SmoothLoopTime::setTimeInterval(uint64_t timeInterval) {
expCoeff_ = -1.0/timeInterval;
VLOG(11) << "expCoeff_ " << expCoeff_ << " " << __PRETTY_FUNCTION__;
}
示例15: initialize
void initialize(
const string& _argv0,
const Flags& flags,
bool installFailureSignalHandler)
{
static Once* initialized = new Once();
if (initialized->once()) {
return;
}
argv0 = _argv0;
if (flags.logging_level != "INFO" &&
flags.logging_level != "WARNING" &&
flags.logging_level != "ERROR") {
EXIT(EXIT_FAILURE)
<< "'" << flags.logging_level
<< "' is not a valid logging level. Possible values for"
<< " 'logging_level' flag are: 'INFO', 'WARNING', 'ERROR'.";
}
FLAGS_minloglevel = getLogSeverity(flags.logging_level);
if (flags.log_dir.isSome()) {
Try<Nothing> mkdir = os::mkdir(flags.log_dir.get());
if (mkdir.isError()) {
EXIT(EXIT_FAILURE)
<< "Could not initialize logging: Failed to create directory "
<< flags.log_dir.get() << ": " << mkdir.error();
}
FLAGS_log_dir = flags.log_dir.get();
// Do not log to stderr instead of log files.
FLAGS_logtostderr = false;
} else {
// Log to stderr instead of log files.
FLAGS_logtostderr = true;
}
// Log everything to stderr IN ADDITION to log files unless
// otherwise specified.
if (flags.quiet) {
FLAGS_stderrthreshold = 3; // FATAL.
// FLAGS_stderrthreshold is ignored when logging to stderr instead
// of log files. Setting the minimum log level gets around this issue.
if (FLAGS_logtostderr) {
FLAGS_minloglevel = 3; // FATAL.
}
} else {
FLAGS_stderrthreshold = FLAGS_minloglevel;
}
FLAGS_logbufsecs = flags.logbufsecs;
#ifdef __linux__
// Do not drop in-memory buffers of log contents. When set to true, this flag
// can significantly slow down the master. The slow down is attributed to
// several hundred `posix_fadvise(..., POSIX_FADV_DONTNEED)` calls per second
// to advise the kernel to drop in-memory buffers related to log contents.
// We set this flag to 'false' only if the corresponding environment variable
// is not set.
if (os::getenv("GLOG_drop_log_memory").isNone()) {
FLAGS_drop_log_memory = false;
}
#endif
google::InitGoogleLogging(argv0.c_str());
if (flags.log_dir.isSome()) {
// Log this message in order to create the log file; this is because GLOG
// creates the log file once the first log message occurs; also recreate
// the file if it has been created on a previous run.
LOG_AT_LEVEL(FLAGS_minloglevel)
<< google::GetLogSeverityName(FLAGS_minloglevel)
<< " level logging started!";
}
VLOG(1) << "Logging to " <<
(flags.log_dir.isSome() ? flags.log_dir.get() : "STDERR");
if (installFailureSignalHandler) {
// glog on Windows does not support `InstallFailureSignalHandler`.
#ifndef __WINDOWS__
// Handles SIGSEGV, SIGILL, SIGFPE, SIGABRT, SIGBUS, SIGTERM
// by default.
google::InstallFailureSignalHandler();
// The code below sets the SIGTERM signal handler to the `handle` function
// declared above. While this is useful on POSIX systems, SIGTERM is
// generated and handled differently on Windows[1], so this code would
// not work.
// [1] https://msdn.microsoft.com/en-us/library/xdkz3x12.aspx
// Set up our custom signal handlers.
struct sigaction action;
action.sa_sigaction = handler;
// Do not block additional signals while in the handler.
sigemptyset(&action.sa_mask);
//.........这里部分代码省略.........