int main(int argc, char* argv[]) { setlocale(LC_ALL, "RUS"); if(!CheckOptions(argc, argv)) { return -1; } MyObserver obs; /* FileTransfer::SingleFileTransfer ft( "https://*****:*****@10.27.11.125/folder/test1/nz_freedos_1-flat.vmdk?dcPath=ha%2ddatacenter&dsName=datastore1", "https://*****:*****@10.27.11.125/folder/test1/test.dat?dcPath=ha-datacenter&dsName=datastore1", &obs); */ std::vector<std::string> srcs; srcs.push_back("https://*****:*****@10.27.11.125/folder/test1/nz_freedos_1-flat.vmdk?dcPath=ha%2ddatacenter&dsName=datastore1"); srcs.push_back("https://*****:*****@10.27.11.125/folder/test1/nz_freedos_1-flat.vmdk?dcPath=ha%2ddatacenter&dsName=datastore1"); srcs.push_back("https://*****:*****@10.27.11.125/folder/test1/nz_freedos_1-flat.vmdk?dcPath=ha%2ddatacenter&dsName=datastore1"); std::vector<std::string> trgs; trgs.push_back("https://*****:*****@10.27.11.125/folder/test1/test.dat?dcPath=ha-datacenter&dsName=datastore1"); trgs.push_back("https://*****:*****@10.27.11.125/folder/test1/test1.dat?dcPath=ha-datacenter&dsName=datastore1"); trgs.push_back("https://*****:*****@10.27.11.125/folder/test1/test2.dat?dcPath=ha-datacenter&dsName=datastore1"); FileTransfer::MultipleFileTransfer ft(srcs, trgs, &obs); ft.Start(); ft.Wait(); return 0; }
bool DTVChannel::TuneMultiplex(uint mplexid, QString inputname) { DTVMultiplex tuning; if (!tuning.FillFromDB(tunerType, mplexid)) return false; CheckOptions(tuning); return Tune(tuning, inputname); }
bool CScannerHTTP::Exploit() { int iHTTPType=CheckHead(), iOptions; switch(iHTTPType) { case HTTP_TYPE_IIS_55: { iOptions=CheckOptions(); ExploitIISSSL(iHTTPType); if(iOptions==HTTP_OPTION_WEBDAV) ExploitIISWebDav(iHTTPType, 0x4F4E); // SP3 if(iOptions==HTTP_OPTION_WEBDAV) ExploitIISWebDav(iHTTPType, 0x4142); // ~SP0 ~SP2 if(iOptions==HTTP_OPTION_WEBDAV) ExploitIISWebDav(iHTTPType, 0x4143); // ~SP1 ~SP2 ExploitIISUnicode(); } break; case HTTP_TYPE_IIS_50: { iOptions=CheckOptions(); ExploitIISSSL(iHTTPType); if(iOptions==HTTP_OPTION_WEBDAV) ExploitIISWebDav(iHTTPType, 0x4F4E); // SP3 if(iOptions==HTTP_OPTION_WEBDAV) ExploitIISWebDav(iHTTPType, 0x4142); // ~SP0 ~SP2 if(iOptions==HTTP_OPTION_WEBDAV) ExploitIISWebDav(iHTTPType, 0x4143); // ~SP1 ~SP2 ExploitIISUnicode(); } break; case HTTP_TYPE_IIS_40: { ExploitIISUnicode(); } break; default: break; } return false; }
/* Check inputs are reasonable */ void vpr_check_options(INP t_options Options, INP boolean TimingEnabled) { CheckOptions(Options, TimingEnabled); }
/* Initialize VPR 1. Read Options 2. Read Arch 3. Read Circuit 4. Sanity check all three */ void vpr_init(INP int argc, INP char **argv, OUTP t_options *options, OUTP t_vpr_setup *vpr_setup, OUTP t_arch *arch) { char* pszLogFileName = "vpr_stdout.log"; unsigned char enableTimeStamps = 1; unsigned long maxWarningCount = 100000; unsigned long maxErrorCount = 1000; if (PrintHandlerExists() == 1) { has_printhandler_pre_vpr = TRUE; } else { has_printhandler_pre_vpr = FALSE; } if (has_printhandler_pre_vpr == FALSE) { PrintHandlerNew(pszLogFileName); PrintHandlerInit(enableTimeStamps, maxWarningCount, maxErrorCount); } /* Print title message */ vpr_print_title(); /* Print usage message if no args */ if (argc < 3) { vpr_print_usage(); exit(1); } memset(options, 0, sizeof(t_options)); memset(vpr_setup, 0, sizeof(t_vpr_setup)); memset(arch, 0, sizeof(t_arch)); /* Read in user options */ ReadOptions(argc, argv, options); /* Timing option priorities */ vpr_setup->TimingEnabled = IsTimingEnabled(options); /* Determine whether echo is on or off */ setEchoEnabled(IsEchoEnabled(options)); setDumpVtbEnabled(IsDumpVtbEnabled(options)); SetPostSynthesisOption(IsPostSynthesisEnabled(options)); vpr_setup->constant_net_delay = options->constant_net_delay; /* Read in arch and circuit */ SetupVPR(options, vpr_setup->TimingEnabled, TRUE, &vpr_setup->FileNameOpts, arch, &vpr_setup->Operation, &vpr_setup->user_models, &vpr_setup->library_models, &vpr_setup->PackerOpts, &vpr_setup->PlacerOpts, &vpr_setup->AnnealSched, &vpr_setup->RouterOpts, &vpr_setup->RoutingArch, &vpr_setup->Segments, &vpr_setup->Timing, &vpr_setup->ShowGraphics, &vpr_setup->GraphPause, &vpr_setup->PowerOpts); /* Check inputs are reasonable */ CheckOptions(*options, vpr_setup->TimingEnabled); CheckArch(*arch, vpr_setup->TimingEnabled); /* Verify settings don't conflict or otherwise not make sense */ CheckSetup(vpr_setup->Operation, vpr_setup->PlacerOpts, vpr_setup->AnnealSched, vpr_setup->RouterOpts, vpr_setup->RoutingArch, vpr_setup->Segments, vpr_setup->Timing, arch->Chans); /* flush any messages to user still in stdout that hasn't gotten displayed */ fflush(stdout); /* Read blif file and sweep unused components */ read_and_process_blif(vpr_setup->PackerOpts.blif_file_name, vpr_setup->PackerOpts.sweep_hanging_nets_and_inputs, vpr_setup->user_models, vpr_setup->library_models, vpr_setup->PowerOpts.do_power, vpr_setup->FileNameOpts.ActFile); fflush(stdout); ShowSetup(*options, *vpr_setup); }
int PNode :: Init(const Options & oOptions, NetWork *& poNetWork) { int ret = CheckOptions(oOptions); if (ret != 0) { PLErr("CheckOptions fail, ret %d", ret); return ret; } m_iMyNodeID = oOptions.oMyNode.GetNodeID(); //step1 init logstorage LogStorage * poLogStorage = nullptr; ret = InitLogStorage(oOptions, poLogStorage); if (ret != 0) { return ret; } //step2 init network ret = InitNetWork(oOptions, poNetWork); if (ret != 0) { return ret; } //step3 build masterlist for (int iGroupIdx = 0; iGroupIdx < oOptions.iGroupCount; iGroupIdx++) { MasterMgr * poMaster = new MasterMgr(this, iGroupIdx, poLogStorage, oOptions.pMasterChangeCallback); assert(poMaster != nullptr); m_vecMasterList.push_back(poMaster); ret = poMaster->Init(); if (ret != 0) { return ret; } } //step4 build grouplist for (int iGroupIdx = 0; iGroupIdx < oOptions.iGroupCount; iGroupIdx++) { Group * poGroup = new Group(poLogStorage, poNetWork, m_vecMasterList[iGroupIdx]->GetMasterSM(), iGroupIdx, oOptions); assert(poGroup != nullptr); m_vecGroupList.push_back(poGroup); } //step5 build batchpropose if (oOptions.bUseBatchPropose) { for (int iGroupIdx = 0; iGroupIdx < oOptions.iGroupCount; iGroupIdx++) { ProposeBatch * poProposeBatch = new ProposeBatch(iGroupIdx, this, &m_oNotifierPool); assert(poProposeBatch != nullptr); m_vecProposeBatch.push_back(poProposeBatch); } } //step6 init statemachine InitStateMachine(oOptions); //step7 parallel init group for (auto & poGroup : m_vecGroupList) { poGroup->StartInit(); } for (auto & poGroup : m_vecGroupList) { int initret = poGroup->GetInitRet(); if (initret != 0) { ret = initret; } } if (ret != 0) { return ret; } //last step. must init ok, then should start threads. //because that stop threads is slower, if init fail, we need much time to stop many threads. //so we put start threads in the last step. for (auto & poGroup : m_vecGroupList) { //start group's thread first. poGroup->Start(); } RunMaster(oOptions); RunProposeBatch(); PLHead("OK"); return 0; }
void DoTest( const char* timerDesc, ResultDatabase& resultDB, OptionParser& opts ) { StencilFactory<T>* stdStencilFactory = NULL; Stencil<T>* stdStencil = NULL; StencilFactory<T>* testStencilFactory = NULL; Stencil<T>* testStencil = NULL; try { #if defined(PARALLEL) stdStencilFactory = new MPIHostStencilFactory<T>; testStencilFactory = new MPICUDAStencilFactory<T>; #else stdStencilFactory = new HostStencilFactory<T>; testStencilFactory = new CUDAStencilFactory<T>; #endif // defined(PARALLEL) assert( (stdStencilFactory != NULL) && (testStencilFactory != NULL) ); // do a sanity check on option values CheckOptions( opts ); stdStencilFactory->CheckOptions( opts ); testStencilFactory->CheckOptions( opts ); // extract and validate options std::vector<long long> arrayDims = opts.getOptionVecInt( "customSize" ); if( arrayDims.size() != 2 ) { cerr << "Dim size: " << arrayDims.size() << "\n"; throw InvalidArgValue( "all overall dimensions must be positive" ); } if (arrayDims[0] == 0) // User has not specified a custom size { int sizeClass = opts.getOptionInt("size"); arrayDims = StencilFactory<T>::GetStandardProblemSize( sizeClass ); } long int seed = (long)opts.getOptionInt( "seed" ); bool beVerbose = opts.getOptionBool( "verbose" ); unsigned int nIters = (unsigned int)opts.getOptionInt( "num-iters" ); double valErrThreshold = (double)opts.getOptionFloat( "val-threshold" ); unsigned int nValErrsToPrint = (unsigned int)opts.getOptionInt( "val-print-limit" ); #if defined(PARALLEL) unsigned int haloWidth = (unsigned int)opts.getOptionInt( "iters-per-exchange" ); #else unsigned int haloWidth = 1; #endif // defined(PARALLEL) float haloVal = (float)opts.getOptionFloat( "haloVal" ); // build a description of this experiment std::vector<long long> lDims = opts.getOptionVecInt( "lsize" ); assert( lDims.size() == 2 ); std::ostringstream experimentDescriptionStr; experimentDescriptionStr << nIters << ':' << arrayDims[0] << 'x' << arrayDims[1] << ':' << lDims[0] << 'x' << lDims[1]; unsigned int nPasses = (unsigned int)opts.getOptionInt( "passes" ); unsigned int nWarmupPasses = (unsigned int)opts.getOptionInt( "warmupPasses" ); // compute the expected result on the host // or read it from a pre-existing file std::string matrixFilenameBase = (std::string)opts.getOptionString( "expMatrixFile" ); #if defined(PARALLEL) int cwrank; MPI_Comm_rank( MPI_COMM_WORLD, &cwrank ); if( cwrank == 0 ) { #endif // defined(PARALLEL) if( !matrixFilenameBase.empty() ) { std::cout << "\nReading expected stencil operation result from file for later comparison with CUDA output\n" << std::endl; } else { std::cout << "\nPerforming stencil operation on host for later comparison with CUDA output\n" << "Depending on host capabilities, this may take a while." << std::endl; } #if defined(PARALLEL) } #endif // defined(PARALLEL) Matrix2D<T> expected( arrayDims[0] + 2*haloWidth, arrayDims[1] + 2*haloWidth ); Initialize<T> init( seed, haloWidth, haloVal ); bool haveExpectedData = false; if( ! matrixFilenameBase.empty() ) { bool readOK = ReadMatrixFromFile( expected, GetMatrixFileName<T>( matrixFilenameBase ) ); if( readOK ) { if( (expected.GetNumRows() != arrayDims[0] + 2*haloWidth) || (expected.GetNumColumns() != arrayDims[1] + 2*haloWidth) ) { std::cerr << "The matrix read from file \'" << GetMatrixFileName<T>( matrixFilenameBase ) << "\' does not match the matrix size specified on the command line.\n"; expected.Reset( arrayDims[0] + 2*haloWidth, arrayDims[1] + 2*haloWidth ); } else { haveExpectedData = true; } } if( !haveExpectedData ) { std::cout << "\nSince we could not read the expected matrix values,\nperforming stencil operation on host for later comparison with CUDA output.\n" << "Depending on host capabilities, this may take a while." << std::endl; } } if( !haveExpectedData ) { init( expected ); haveExpectedData = true; if( beVerbose ) { std::cout << "initial state:\n" << expected << std::endl; } stdStencil = stdStencilFactory->BuildStencil( opts ); (*stdStencil)( expected, nIters ); } if( beVerbose ) { std::cout << "expected result:\n" << expected << std::endl; } // determine whether we are to save the expected matrix values to a file // to speed up future runs matrixFilenameBase = (std::string)opts.getOptionString( "saveExpMatrixFile" ); if( !matrixFilenameBase.empty() ) { SaveMatrixToFile( expected, GetMatrixFileName<T>( matrixFilenameBase ) ); } assert( haveExpectedData ); // compute the result on the CUDA device Matrix2D<T> data( arrayDims[0] + 2*haloWidth, arrayDims[1] + 2*haloWidth ); Stencil<T>* testStencil = testStencilFactory->BuildStencil( opts ); // Compute the number of floating point operations we will perform. // // Note: in the truly-parallel case, we count flops for redundant // work due to the need for a halo. // But we do not add to the count for the local 1-wide halo since // we aren't computing new values for those items. unsigned long npts = (arrayDims[0] + 2*haloWidth - 2) * (arrayDims[1] + 2*haloWidth - 2); #if defined(PARALLEL) MPICUDAStencil<T>* mpiTestStencil = static_cast<MPICUDAStencil<T>*>( testStencil ); assert( mpiTestStencil != NULL ); int participating = mpiTestStencil->ParticipatingInProgram() ? 1 : 0; int numParticipating = 0; MPI_Allreduce( &participating, // src &numParticipating, // dest 1, // count MPI_INT, // type MPI_SUM, // op MPI_COMM_WORLD ); // communicator npts *= numParticipating; #endif // defined(PARALLEL) // In our 9-point stencil, there are 11 floating point operations // per point (3 multiplies and 11 adds): // // newval = weight_center * centerval + // weight_cardinal * (northval + southval + eastval + westval) + // weight_diagnoal * (neval + nwval + seval + swval) // // we do this stencil operation 'nIters' times unsigned long nflops = npts * 11 * nIters; #if defined(PARALLEL) if( cwrank == 0 ) { #endif // defined(PARALLEL) std::cout << "Performing " << nWarmupPasses << " warmup passes..."; #if defined(PARALLEL) } #endif // defined(PARALLEL) for( unsigned int pass = 0; pass < nWarmupPasses; pass++ ) { init(data); (*testStencil)( data, nIters ); } #if defined(PARALLEL) if( cwrank == 0 ) { #endif // defined(PARALLEL) std::cout << "done." << std::endl; #if defined(PARALLEL) } #endif // defined(PARALLEL) #if defined(PARALLEL) MPI_Comm_rank( MPI_COMM_WORLD, &cwrank ); if( cwrank == 0 ) { #endif // defined(PARALLEL) std::cout << "\nPerforming stencil operation on chosen device, " << nPasses << " passes.\n" << "Depending on chosen device, this may take a while." << std::endl; #if defined(PARALLEL) } #endif // defined(PARALLEL) #if !defined(PARALLEL) std::cout << "At the end of each pass the number of validation\nerrors observed will be printed to the standard output." << std::endl; #endif // !defined(PARALLEL) for( unsigned int pass = 0; pass < nPasses; pass++ ) { #if !defined(PARALLEL) std::cout << "pass " << pass << ": "; #endif // !defined(PARALLEL) init( data ); int timerHandle = Timer::Start(); (*testStencil)( data, nIters ); double elapsedTime = Timer::Stop( timerHandle, "CUDA stencil" ); // find and report the computation rate double gflops = (nflops / elapsedTime) / 1e9; resultDB.AddResult( timerDesc, experimentDescriptionStr.str(), "GFLOPS", gflops ); if( beVerbose ) { std::cout << "observed result, pass " << pass << ":\n" << data << std::endl; } // validate the result #if defined(PARALLEL) StencilValidater<T>* validater = new MPIStencilValidater<T>; #else StencilValidater<T>* validater = new SerialStencilValidater<T>; #endif // defined(PARALLEL) validater->ValidateResult( expected, data, valErrThreshold, nValErrsToPrint ); } } catch( ... ) { // clean up - abnormal termination // wish we didn't have to do this, but C++ exceptions do not // support a try-catch-finally approach delete stdStencil; delete stdStencilFactory; delete testStencil; delete testStencilFactory; throw; } // clean up - normal termination delete stdStencil; delete stdStencilFactory; delete testStencil; delete testStencilFactory; }
int main(int argc, char **argv) { int simSize = 14; int xx; simResults = (double *) malloc(simSize*sizeof(double)); simCounts = (unsigned long *) malloc(simSize*sizeof(unsigned long)); simIndex = 0; for(xx = 0; xx < simSize ; xx++) { simResults[xx] = 0.0; simCounts[xx] = 0; } t_options Options; t_arch Arch = { 0 }; enum e_operation Operation; struct s_placer_opts PlacerOpts; struct s_annealing_sched AnnealSched; struct s_router_opts RouterOpts; struct s_det_routing_arch RoutingArch; t_segment_inf *Segments; t_timing_inf Timing; t_subblock_data Subblocks; boolean ShowGraphics; boolean TimingEnabled; int GraphPause; /* Print title message */ PrintTitle(); /* Print usage message if no args */ if(argc < 2) { PrintUsage(); exit(1); } /* Read in available inputs */ ReadOptions(argc, argv, &Options); /* Determine whether timing is on or off */ TimingEnabled = IsTimingEnabled(Options); /* Use inputs to configure VPR */ SetupVPR(Options, TimingEnabled, &Arch, &Operation, &PlacerOpts, &AnnealSched, &RouterOpts, &RoutingArch, &Segments, &Timing, &Subblocks, &ShowGraphics, &GraphPause); /* Check inputs are reasonable */ CheckOptions(Options, TimingEnabled); CheckArch(Arch, TimingEnabled); /* Verify settings don't conflict or otherwise not make sense */ CheckSetup(Operation, PlacerOpts, AnnealSched, RouterOpts, RoutingArch, Segments, Timing, Subblocks, Arch.Chans); /* Output the current settings to console. */ ShowSetup(Options, Arch, TimingEnabled, Operation, PlacerOpts, AnnealSched, RouterOpts, RoutingArch, Segments, Timing, Subblocks); if(Operation == TIMING_ANALYSIS_ONLY) { do_constant_net_delay_timing_analysis( Timing, Subblocks, Options.constant_net_delay); return 0; } /* Startup X graphics */ set_graphics_state(ShowGraphics, GraphPause, RouterOpts.route_type); if(ShowGraphics) { init_graphics("VPR: Versatile Place and Route for FPGAs"); alloc_draw_structs(); } /* Do the actual operation */ place_and_route(Operation, PlacerOpts, Options.PlaceFile, Options.NetFile, Options.ArchFile, Options.RouteFile, AnnealSched, RouterOpts, RoutingArch, Segments, Timing, &Subblocks, Arch.Chans); /* Close down X Display */ if(ShowGraphics) close_graphics(); /* free data structures */ free(Options.PlaceFile); free(Options.NetFile); free(Options.ArchFile); free(Options.RouteFile); freeArch(&Arch); printf("\nTiming Results\n"); for(xx = 0; xx < simSize ; xx++) { if(simCounts[xx] != 0) { simResults[xx] /= (double) simCounts[xx]; } printf("Index: %d\tAverage Clock: %f\n", xx, simResults[xx]); } free(simResults); free(simCounts); /* Return 0 to single success to scripts */ return 0; }
bool DTVChannel::SetChannelByString(const QString &channum) { QString loc = LOC + QString("SetChannelByString(%1): ").arg(channum); LOG(VB_CHANNEL, LOG_INFO, loc); ClearDTVInfo(); if (!IsOpen() && !Open()) { LOG(VB_GENERAL, LOG_ERR, loc + "Channel object " "will not open, can not change channels."); return false; } if (m_inputs.size() > 1) { QString inputName; if (!CheckChannel(channum, inputName)) { LOG(VB_GENERAL, LOG_ERR, loc + "CheckChannel failed.\n\t\t\tPlease verify the channel " "in the 'mythtv-setup' Channel Editor."); return false; } // If CheckChannel filled in the inputName then we need to // change inputs and return, since the act of changing // inputs will change the channel as well. if (!inputName.isEmpty()) return SwitchToInput(inputName, channum); } InputMap::const_iterator it = m_inputs.find(m_currentInputID); if (it == m_inputs.end()) return false; uint mplexid_restriction; uint chanid_restriction; if (!IsInputAvailable(m_currentInputID, mplexid_restriction, chanid_restriction)) { LOG(VB_GENERAL, LOG_INFO, loc + QString("Requested channel '%1' is on input '%2' " "which is in a busy input group") .arg(channum).arg(m_currentInputID)); return false; } // Fetch tuning data from the database. QString tvformat, modulation, freqtable, freqid, si_std; int finetune; uint64_t frequency; int mpeg_prog_num; uint atsc_major, atsc_minor, mplexid, chanid, tsid, netid; if (!ChannelUtil::GetChannelData( (*it)->sourceid, chanid, channum, tvformat, modulation, freqtable, freqid, finetune, frequency, si_std, mpeg_prog_num, atsc_major, atsc_minor, tsid, netid, mplexid, m_commfree)) { LOG(VB_GENERAL, LOG_ERR, loc + "Unable to find channel in database."); return false; } if ((mplexid_restriction && (mplexid != mplexid_restriction)) || (chanid_restriction && (chanid != chanid_restriction))) { LOG(VB_GENERAL, LOG_ERR, loc + QString("Requested channel '%1' is not available because " "the tuner is currently in use on another transport.") .arg(channum)); return false; } // If the frequency is zeroed out, don't use it directly. if (frequency == 0) { frequency = (freqid.toULongLong() + finetune) * 1000; mplexid = 0; } bool isFrequency = (frequency > 10000000); bool hasTuneToChan = !(*it)->tuneToChannel.isEmpty() && (*it)->tuneToChannel != "Undefined"; // If we are tuning to a freqid, rather than an actual frequency, // we may need to set the frequency table to use. if (!isFrequency || hasTuneToChan) SetFreqTable(freqtable); // Set NTSC, PAL, ATSC, etc. SetFormat(tvformat); // If a tuneToChannel is set make sure we're still on it if (hasTuneToChan) Tune((*it)->tuneToChannel, 0); // Clear out any old PAT or PMT & save version info uint version = 0; if (genPAT) { version = (genPAT->Version()+1) & 0x1f; delete genPAT; genPAT = NULL; delete genPMT; genPMT = NULL; } bool ok = true; if ((*it)->externalChanger.isEmpty()) { if (IsIPTV()) { int chanid = ChannelUtil::GetChanID((*it)->sourceid, channum); IPTVTuningData tuning = ChannelUtil::GetIPTVTuningData(chanid); if (!Tune(tuning, false)) { LOG(VB_GENERAL, LOG_ERR, loc + "Tuning to IPTV URL"); ClearDTVInfo(); ok = false; } } else if ((*it)->name.contains("composite", Qt::CaseInsensitive) || (*it)->name.contains("s-video", Qt::CaseInsensitive)) { LOG(VB_GENERAL, LOG_WARNING, loc + "You have not set " "an external channel changing" "\n\t\t\tscript for a composite or s-video " "input. Channel changing will do nothing."); } else if (isFrequency && Tune(frequency, "")) { } else if (isFrequency) { // Initialize basic the tuning parameters DTVMultiplex tuning; if (!mplexid || !tuning.FillFromDB(tunerType, mplexid)) { LOG(VB_GENERAL, LOG_ERR, loc + "Failed to initialize multiplex options"); ok = false; } else { // Try to fix any problems with the multiplex CheckOptions(tuning); // Tune to proper multiplex if (!Tune(tuning, (*it)->name)) { LOG(VB_GENERAL, LOG_ERR, loc + "Tuning to frequency."); ClearDTVInfo(); ok = false; } } } else { // ExternalChannel justs wants the channum ok = freqid.isEmpty() && finetune == 0 ? Tune(channum) : Tune(freqid, finetune); } } LOG(VB_CHANNEL, LOG_INFO, loc + ((ok) ? "success" : "failure")); if (!ok) return false; if (atsc_minor || (mpeg_prog_num>=0)) { SetSIStandard(si_std); SetDTVInfo(atsc_major, atsc_minor, netid, tsid, mpeg_prog_num); } else if (IsPIDTuningSupported()) { // We need to pull the pid_cache since there are no tuning tables pid_cache_t pid_cache; int chanid = ChannelUtil::GetChanID((*it)->sourceid, channum); ChannelUtil::GetCachedPids(chanid, pid_cache); if (pid_cache.empty()) { LOG(VB_GENERAL, LOG_ERR, loc + "PID cache is empty"); return false; } // Now we construct the PAT & PMT vector<uint> pnum; pnum.push_back(1); vector<uint> pid; pid.push_back(9999); genPAT = ProgramAssociationTable::Create(0,version,pnum,pid); int pcrpid = -1; vector<uint> pids; vector<uint> types; pid_cache_t::iterator pit = pid_cache.begin(); for (; pit != pid_cache.end(); ++pit) { if (!pit->GetStreamID()) continue; pids.push_back(pit->GetPID()); types.push_back(pit->GetStreamID()); if (pit->IsPCRPID()) pcrpid = pit->GetPID(); if ((pcrpid < 0) && StreamID::IsVideo(pit->GetStreamID())) pcrpid = pit->GetPID(); } if (pcrpid < 0) pcrpid = pid_cache[0].GetPID(); genPMT = ProgramMapTable::Create( pnum.back(), pid.back(), pcrpid, version, pids, types); SetSIStandard("mpeg"); SetDTVInfo(0,0,0,0,-1); } // Set the current channum to the new channel's channum m_curchannelname = channum; // Setup filters & recording picture attributes for framegrabing recorders // now that the new curchannelname has been established. if (m_pParent) m_pParent->SetVideoFiltersForChannel(GetCurrentSourceID(), channum); InitPictureAttributes(); HandleScript(freqid); return ok; }
void DoTest( const char* timerDesc, ResultDatabase& resultDB, OptionParser& opts ) { StencilFactory<T>* stdStencilFactory = NULL; Stencil<T>* stdStencil = NULL; StencilFactory<T>* testStencilFactory = NULL; Stencil<T>* testStencil = NULL; //try { stdStencilFactory = new HostStencilFactory<T>; testStencilFactory = new MICStencilFactory<T>; assert( (stdStencilFactory != NULL) && (testStencilFactory != NULL) ); // do a sanity check on option values CheckOptions( opts ); stdStencilFactory->CheckOptions( opts ); testStencilFactory->CheckOptions( opts ); // extract and validate options std::vector<long long> arrayDims = opts.getOptionVecInt( "customSize" ); if( arrayDims.size() != 2 ) { cerr << "Dim size: " << arrayDims.size() << "\n"; //throw InvalidArgValue( "all overall dimensions must be positive" ); } if (arrayDims[0] == 0) // User has not specified a custom size { const int probSizes[4] = { 768, 1408, 2048, 4096 }; int sizeClass = opts.getOptionInt("size"); if (!(sizeClass >= 0 && sizeClass < 5)) { //throw InvalidArgValue( "Size class must be between 1-4" ); } arrayDims[0] = arrayDims[1] =probSizes[sizeClass - 1]; } long int seed = (long)opts.getOptionInt( "seed" ); bool beVerbose = opts.getOptionBool( "verbose" ); unsigned int nIters = (unsigned int)opts.getOptionInt( "num-iters" ); double valErrThreshold = (double)opts.getOptionFloat( "val-threshold" ); unsigned int nValErrsToPrint = (unsigned int)opts.getOptionInt( "val-print-limit" ); #if defined(PARALLEL) unsigned int haloWidth = (unsigned int)opts.getOptionInt( "iters-per-exchange" ); #else unsigned int haloWidth = 1; #endif // defined(PARALLEL) float haloVal = (float)opts.getOptionFloat( "haloVal" ); // build a description of this experiment std::ostringstream experimentDescriptionStr; experimentDescriptionStr << nIters << ':' << arrayDims[0] << 'x' << arrayDims[1] << ':' << LROWS << 'x' << LCOLS; unsigned int nPasses =(unsigned int)opts.getOptionInt( "passes" ); unsigned long npts = (arrayDims[0] + 2*haloWidth - 2) * (arrayDims[1] + 2*haloWidth - 2); unsigned long nflops = npts * 11 * nIters; cout<<"flops are = "<<nflops<<endl; // compute the expected result on the host #if defined(PARALLEL) int cwrank; MPI_Comm_rank( MPI_COMM_WORLD, &cwrank ); if( cwrank == 0 ) { #endif // defined(PARALLEL) std::cout << "\nPerforming stencil operation on host for later comparison with MIC output\n" << "Depending on host capabilities, this may take a while." << std::endl; #if defined(PARALLEL) } #endif // defined(PARALLEL) Matrix2D<T> exp( arrayDims[0] + 2*haloWidth, arrayDims[1] + 2*haloWidth ); Initialize<T> init( seed, haloWidth, haloVal ); init( exp ); if( beVerbose ) { std::cout << "initial state:\n" << exp << std::endl; } Stencil<T>* stdStencil = stdStencilFactory->BuildStencil( opts ); (*stdStencil)( exp, nIters ); if( beVerbose ) { std::cout << "expected result:\n" << exp << std::endl; } // compute the result on the MIC device Matrix2D<T> data( arrayDims[0] + 2*haloWidth, arrayDims[1] + 2*haloWidth ); Stencil<T>* testStencil = testStencilFactory->BuildStencil( opts ); #if defined(PARALLEL) MPI_Comm_rank( MPI_COMM_WORLD, &cwrank ); if( cwrank == 0 ) { #endif // defined(PARALLEL) std::cout << "\nPerforming stencil operation on chosen device, " << nPasses << " passes.\n" << "Depending on chosen device, this may take a while." << std::endl; #if defined(PARALLEL) } #endif // defined(PARALLEL) #if !defined(PARALLEL) std::cout << "At the end of each pass the number of validation\nerrors observed will be printed to the standard output." << std::endl; #endif // !defined(PARALLEL) std::cout<<"Passes:"<<nPasses<<endl; for( unsigned int pass = 0; pass < nPasses; pass++ ) { init( data ); double start = curr_second(); (*testStencil)( data, nIters ); double elapsedTime = curr_second()-start; double gflops = (nflops / elapsedTime) / 1e9; resultDB.AddResult( timerDesc, experimentDescriptionStr.str(), "GFLOPS", gflops ); if( beVerbose ) { std::cout << "observed result, pass " << pass << ":\n" << data << std::endl; } // validate the result #if defined(PARALLEL) //StencilValidater<T>* validater = new MPIStencilValidater<T>; #else //StencilValidater<T>* validater = new SerialStencilValidater<T>; #endif // defined(PARALLEL) MICValidate(exp,data,valErrThreshold,nValErrsToPrint); /*validater->ValidateResult( exp, data, valErrThreshold, nValErrsToPrint );*/ } } /* catch( ... ) { // clean up - abnormal termination // wish we didn't have to do this, but C++ exceptions do not // support a try-catch-finally approach delete stdStencil; delete stdStencilFactory; delete testStencil; delete testStencilFactory; throw; }*/ // clean up - normal termination delete stdStencil; delete stdStencilFactory; delete testStencil; delete testStencilFactory; }
bool DVBChannel::SetChannelByString(const QString &channum) { QString tmp = QString("SetChannelByString(%1): ").arg(channum); QString loc = LOC + tmp; QString loc_err = LOC_ERR + tmp; VERBOSE(VB_CHANNEL, loc); if (!IsOpen()) { VERBOSE(VB_IMPORTANT, loc_err + "Channel object " "will not open, cannot change channels."); ClearDTVInfo(); return false; } ClearDTVInfo(); QString inputName; if (!CheckChannel(channum, inputName)) { VERBOSE(VB_IMPORTANT, loc_err + "CheckChannel failed.\n\t\t\tPlease verify the channel " "in the 'mythtv-setup' Channel Editor."); return false; } // If CheckChannel filled in the inputName we need to change inputs. if (!inputName.isEmpty() && (nextInputID == m_currentInputID)) nextInputID = GetInputByName(inputName); // Get the input data for the channel int inputid = (nextInputID >= 0) ? nextInputID : m_currentInputID; InputMap::const_iterator it = m_inputs.find(inputid); if (it == m_inputs.end()) return false; uint mplexid_restriction; if (!IsInputAvailable(inputid, mplexid_restriction)) { VERBOSE(VB_IMPORTANT, loc_err + "Input is not available"); return false; } // Get the input data for the channel QString tvformat, modulation, freqtable, freqid, si_std; int finetune; uint64_t frequency; int mpeg_prog_num; uint atsc_major, atsc_minor, mplexid, tsid, netid; if (!ChannelUtil::GetChannelData( (*it)->sourceid, channum, tvformat, modulation, freqtable, freqid, finetune, frequency, si_std, mpeg_prog_num, atsc_major, atsc_minor, tsid, netid, mplexid, m_commfree)) { VERBOSE(VB_IMPORTANT, loc_err + "Unable to find channel in database."); return false; } if (mplexid_restriction && (mplexid != mplexid_restriction)) { VERBOSE(VB_IMPORTANT, loc_err + "Multiplex is not available"); return false; } // Initialize basic the tuning parameters DTVMultiplex tuning; if (!mplexid || !tuning.FillFromDB(tunerType, mplexid)) { VERBOSE(VB_IMPORTANT, loc_err + "Failed to initialize multiplex options"); return false; } SetDTVInfo(atsc_major, atsc_minor, netid, tsid, mpeg_prog_num); // Try to fix any problems with the multiplex CheckOptions(tuning); if (!Tune(tuning, inputid)) { VERBOSE(VB_IMPORTANT, loc_err + "Tuning to frequency."); ClearDTVInfo(); return false; } QString tmpX = channum; tmpX.detach(); m_curchannelname = tmpX; VERBOSE(VB_CHANNEL, loc + "Tuned to frequency."); m_currentInputID = nextInputID; QString tmpY = m_curchannelname; tmpY.detach(); m_inputs[m_currentInputID]->startChanNum = tmpY; return true; }
int main(int argc, char *argv[]) { transferfun *transfer; char driverName[13]; int stilloptions=1; char *home; brlapi_settings_t brlapi_settings; transfer=CheckSendOrRecv(argv[0]); /* first use options file */ if ((home=getenv("HOME"))) { char vstprc[strlen(home)+strlen(VSTPRC)+2]; strcpy(vstprc,home); strcat(vstprc,"/" VSTPRC); Parse(vstprc); } /* a first pass to check options and record them, before doing anything */ CheckOptions(argc--,argv++); /* ok, one can try to open the socket */ brlapi_settings.host = socketport; brlapi_settings.auth = keyname; if (brlapi_initializeConnection(&brlapi_settings,NULL)<0) { brlapi_perror("Couldn't initialize connection with BrlAPI"); exit(RET_ECONN); } if (brlapi_getDriverName(driverName, sizeof(driverName))<12) { brlapi_perror("Couldn't get driver name"); brlapi_closeConnection(); exit(RET_ECONN); } if (strcmp(driverName,"VisioBraille")) { fprintf(stderr,"braille driver is not VisioBraille\n"); brlapi_closeConnection(); exit(RET_ECONN); } if (brlapi_enterRawMode("VisioBraille")<0) { fprintf(stderr,"Couldn't get raw mode\n"); brlapi_closeConnection(); exit(RET_ECONN); } signal(SIGINT,handleint); signal(SIGTERM,handleint); #ifdef SIGHUP signal(SIGHUP,handleint); #endif /* SIGHUP */ #ifdef SIGQUIT signal(SIGQUIT,handleint); #endif /* SIGQUIT */ #ifdef SIGPIPE signal(SIGPIPE,handleint); #endif /* SIGPIPE */ #ifdef SIGALRM signal(SIGALRM,transfer_timeout); #endif /* SIGALRM */ if (visiobases_dir && chdir(visiobases_dir)<0) { perror(visiobases_dir); fprintf(stderr,"couldn't chdir to download dir, please use -d if you want to store files in .\n"); exit(RET_EUNIX); } for(;argc;argc--, argv++) { /* is it an option ? */ if (stilloptions) if (argv[0][0]=='-') { switch (argv[0][1]) { case '-': stilloptions=0; continue; case 's': /* already parsed */ case 'k': case 'm': argc--; argv++; case 'b': case 'n': case 'f': case 'i': case 'd': default: continue; } } /* no, a file name, let's try to transfer it */ transfer(argv[0]); } printf("transfers finished\n"); transfer_finish(transfer); brlapi_leaveRawMode(); /* can't do much it it fails ! */ brlapi_closeConnection(); return 0; }