コード例 #1
0
        private static void OneShotPlayMode(string libraryName, string text, EngineParameters ep)
        {
            var engines = SpeechController.GetAllSpeechEngine();
            var engine  = SpeechController.GetInstance(libraryName);

            if (engine == null)
            {
                Console.WriteLine($"{libraryName} を起動できませんでした。");
                return;
            }
            engine.Activate();
            engine.Finished += (s, a) =>
            {
                engine.Dispose();
            };
            if (ep.Volume > 0)
            {
                engine.SetVolume(ep.Volume);
            }
            if (ep.Speed > 0)
            {
                engine.SetSpeed(ep.Speed);
            }
            if (ep.Pitch > 0)
            {
                engine.SetPitch(ep.Pitch);
            }
            if (ep.PitchRange > 0)
            {
                engine.SetPitchRange(ep.PitchRange);
            }
            engine.Play(text);
        }
コード例 #2
0
        internal static void TestAudio(string data, EngineParameters engine)
        {
            Match matchMetaAudio = Index[Find.MetaAudio].Match(data);

            if (!matchMetaAudio.Success)
            {
                return;
            }

            string fullMetadata = matchMetaAudio.Groups[1].ToString();

            GroupCollection matchAudioFormatHzChannel = Index[Find.AudioFormatHzChannel].Match(fullMetadata).Groups;
            GroupCollection matchAudioBitRate         = Index[Find.BitRate].Match(fullMetadata).Groups;

            if (engine.InputFile.Metadata == null)
            {
                engine.InputFile.Metadata = new Metadata();
            }

            if (engine.InputFile.Metadata.AudioData == null)
            {
                engine.InputFile.Metadata.AudioData = new Metadata.Audio
                {
                    Format        = matchAudioFormatHzChannel[1].ToString(),
                    SampleRate    = matchAudioFormatHzChannel[2].ToString(),
                    ChannelOutput = matchAudioFormatHzChannel[3].ToString(),
                    BitRateKbs    = !(matchAudioBitRate[1].ToString().IsNullOrWhiteSpace()) ? Convert.ToInt32(matchAudioBitRate[1].ToString()) : 0
                }
            }
            ;
        }
コード例 #3
0
        internal static void TestVideo(string data, EngineParameters engine)
        {
            Match matchMetaVideo = Index[Find.MetaVideo].Match(data);

            if (!matchMetaVideo.Success)
            {
                return;
            }

            string fullMetadata = matchMetaVideo.Groups[1].ToString();

            GroupCollection matchVideoFormatColorSize = Index[Find.VideoFormatColorSize].Match(fullMetadata).Groups;
            GroupCollection matchVideoFps             = Index[Find.VideoFps].Match(fullMetadata).Groups;
            Match           matchVideoBitRate         = Index[Find.BitRate].Match(fullMetadata);

            if (engine.InputFile.Metadata == null)
            {
                engine.InputFile.Metadata = new Metadata();
            }

            if (engine.InputFile.Metadata.VideoData == null)
            {
                engine.InputFile.Metadata.VideoData = new Metadata.Video
                {
                    Format     = matchVideoFormatColorSize[1].ToString(),
                    ColorModel = matchVideoFormatColorSize[2].ToString(),
                    FrameSize  = matchVideoFormatColorSize[3].ToString(),
                    Fps        = matchVideoFps[1].Success && !string.IsNullOrEmpty(matchVideoFps[1].ToString()) ? Convert.ToDouble(matchVideoFps[1].ToString(), new CultureInfo("en-US")) : 0,
                    BitRateKbs =
                        matchVideoBitRate.Success
                            ? (int?)Convert.ToInt32(matchVideoBitRate.Groups[1].ToString())
                            : null
                };
            }
        }
コード例 #4
0
ファイル: TranscodingActor.cs プロジェクト: lulzzz/Entropy
        public TranscodingActor(
            Guid transcodingId,
            MediaFile input,
            MediaFile output,
            ConversionOptions options,
            string ffmpegPath = @"C:\Workspace\FFMPEG\bin\ffmpeg.exe")
        {
            TranscodingId       = transcodingId;
            Input               = input;
            Output              = output;
            ConversionOptions   = options;
            _ffmpegPath         = ffmpegPath;
            _logger             = Context.GetLogger();
            ReceivedMessagesLog = new List <string>();
            Exceptions          = new List <Exception>();
            Status              = Status.NotStarted;
            EngineParameters    = new EngineParameters
            {
                InputFile         = Input,
                OutputFile        = Output,
                ConversionOptions = ConversionOptions,
                Task = FFmpegTask.Convert
            };

            Receive <Start>(Handle);
        }
コード例 #5
0
 public Engine(EngineParameters parameters) : base(parameters.Weight, parameters.Volume, ItemClass.Engine, ItemType.Engine)
 {
     ThrustForceMultiplier = parameters.ThrustForceMultiplier;
     TurnForceMultiplier   = parameters.TurnForceMultiplier;
     MaximumSpeed          = parameters.MaximumSpeed;
     ThrustEnergy          = parameters.ThrustEnergy;
 }
コード例 #6
0
        public void InitializeEngine()
        {
            Directory.CreateDirectory($"{Environment.CurrentDirectory}/Object");
            Directory.CreateDirectory($"{Environment.CurrentDirectory}/Animation");
            Directory.CreateDirectory($"{Environment.CurrentDirectory}/Project");
            Directory.CreateDirectory($"{Environment.CurrentDirectory}/Export");

            var engineParameters = new EngineParameters {
                Handle = PictureAnimation.Handle,
                Width  = PictureAnimation.Width,
                Height = PictureAnimation.Height
            };

            var fontParameters = new EngineFontParameters {
                Name  = "Tahoma",
                Size  = 9f,
                Style = FontStyle.Regular
            };

            engine = new EngineCore(engineParameters, fontParameters);

            UpdateClipArea();

            AddLanguages();
        }
コード例 #7
0
ファイル: TranscodingActor.cs プロジェクト: lulzzz/Entropy
        private void StartProcess(EngineParameters engineParameters)
        {
            var processStartInfo = engineParameters.HasCustomArguments
                ? this.GenerateStartInfo(engineParameters.CustomArguments)
                : this.GenerateStartInfo(engineParameters);

            RunProcess(processStartInfo);
        }
コード例 #8
0
        public void Should_Generate_GifConfig(string inputPath, string outputDirectory)
        {
            var options = EngineParameters.GIF(new MediaFile(inputPath), new MediaFile(outputDirectory), GifGenerationOptions.Default());

            using (var engine = new MediaEngine(FFMPEG))
            {
                engine.GenerateGIF(options);
            }
        }
コード例 #9
0
        private static void GIF(MediaEngine engine)
        {
            var param = EngineParameters.GIF(
                new MediaFile(@"D:\1.mp4"),
                new MediaFile($@"d:\\{Guid.NewGuid()}.gif"),
                GifGenerationOptions.Default());
            var result = CommandBuilder.GetGIF(param);

            Console.WriteLine(result);
            engine.GenerateGIF(param);
        }
コード例 #10
0
        public void Should_Create_Default_HLS()
        {
            var parameters = new EngineParameters()
            {
                HLSOptions = new HLSGeneratingOptions(@"D:\test\", "360p_%03d.ts", "360p.m3u8"),
                InputFile  = new MediaFile(@"E:\World_s_Most_Breathtaking_Piano_Pieces_Contemporary_Music_Mix_Vol._1.135.mp4"),
                Task       = FFmpegTask.GenerateHLS
            };

            var result = CommandBuilder.GetHLS(parameters);
        }
コード例 #11
0
            public IEngine CreateReadyToRun(EngineParameters engineParameters)
            {
                var engine = new CustomEngine
                {
                    GlobalCleanupAction = engineParameters.GlobalCleanupAction,
                    GlobalSetupAction   = engineParameters.GlobalSetupAction
                };

                engine.GlobalSetupAction?.Invoke(); // engine factory is now supposed to create an engine which is ready to run (hence the method name change)

                return(engine);
            }
コード例 #12
0
 static void Main()
 {
     Application.EnableVisualStyles();
     using (Form form = new Form())
         using (CheckBox myCheckbox = new CheckBox()) {
             EngineParameters myEngineParameters = new EngineParameters();
             myEngineParameters.AvoidWeekends = true;
             form.Controls.Add(myCheckbox);
             myCheckbox.DataBindings.Add("Checked", myEngineParameters, "AvoidWeekends",
                                         false, DataSourceUpdateMode.OnPropertyChanged);
             Application.Run(form);
         }
 }
コード例 #13
0
        private static void HLS(MediaEngine engine, VideoQualities quality, string inputFile, string outputDirectory)
        {
            VideoResolutionsAttribute GetResolutionInfo(Enum value)
            {
                var filedInfo = value.GetType().GetField(value.ToString());

                var attrs = (VideoResolutionsAttribute[])filedInfo
                            .GetCustomAttributes(typeof(VideoResolutionsAttribute), false);

                return(attrs[0]);
            }

            var profile = GetResolutionInfo(quality);
            var hls     = new HLSGeneratingOptions(outputDirectory, new FilterConfig
            {
                Height             = profile.Height,
                Width              = profile.Width,
                ForceOriginalRatio = ForceOriginalAspectRatio.Increase
            })
            {
                BitRateOptions = new BitRateOptions
                {
                    Audio = new BitRateOptions.AudioBitrate
                    {
                        Value = profile.Aduio_BitRateK * 1000
                    },
                    Video = new BitRateOptions.VideoBitrate
                    {
                        Value      = profile.BitRate_HighMotionK * 1000,
                        Max        = profile.MaxRateK * 1000,
                        BufferSize = profile.BufferSizeK * 1000
                    }
                }
            };

            var parameters = new EngineParameters
            {
                HLSOptions = hls,
                InputFile  = new MediaFile(inputFile),
                Task       = FFmpegTask.GenerateHLS
            };

            engine.GenerateHLS(parameters);
        }
コード例 #14
0
        public Task Gif(string inputFile, string outputFile, GifGenerationOptions options = null)
        {
            Guard.NotNullOrEmpty(inputFile, nameof(inputFile));
            Guard.NotNullOrEmpty(outputFile, nameof(outputFile));

            var outputDirectory = Path.GetDirectoryName(outputFile);

            if (!Directory.Exists(outputDirectory))
            {
                Directory.CreateDirectory(outputDirectory);
            }

            var param = EngineParameters.GIF(
                new MediaFile(inputFile),
                new MediaFile(outputFile),
                options ?? GifGenerationOptions.Default());

            return(Task.Run(() => _engine.GenerateGIF(param)));
        }
コード例 #15
0
        void InitializeServices()
        {
            _services = new Dictionary <string, BaseService>();

            EngineParameters parameters = new EngineParameters();

            parameters.Logger = _logger;

            _deviceService = new DeviceService();
            _deviceService.AttachLogger(_logger);
            _services.Add(Common.Definitions.OnvifService.DEVICE, _deviceService);

            _doorControlService = new DoorControlService();
            _doorControlService.AttachLogger(_logger);
            _services.Add(Common.Definitions.OnvifService.DOORCONTROL, _doorControlService);

            _accessControlService = new AccessControlService();
            _accessControlService.AttachLogger(_logger);
            _services.Add(Common.Definitions.OnvifService.ACCESSCONTROL, _accessControlService);
        }
コード例 #16
0
        public TranscodingActor(
            Guid transcodingId,
            MediaFile input,
            MediaFile output,
            ConversionOptions options,
            string ffmpegPath)
        {
            TranscodingId       = transcodingId;
            Input               = input;
            Output              = output;
            ConversionOptions   = options;
            _ffmpegPath         = ffmpegPath;
            _logger             = Context.GetLogger();
            ReceivedMessagesLog = new List <string>();
            Exceptions          = new List <Exception>();
            Status              = Status.NotStarted;
            EngineParameters    = new EngineParameters(ConversionOptions, Input, Output, FFmpegTask.TranscodeAudio);

            Receive <Start>(Handle);
        }
コード例 #17
0
ファイル: Engine.cs プロジェクト: mursel/FIT_OpenGL
        public static EngineDevice CreateDevice(EngineParameters.DRIVERTYPE driverType, Form mainForm, int width, int height, int bits, bool isFullscreen)
        {
            switch (driverType)
            {
                case EngineParameters.DRIVERTYPE.OPENGL:
                    {
                        OpenGLDriver openGl = new OpenGLDriver();
                        if (openGl.Setup(mainForm, width, height, bits, isFullscreen))
                        {
                            EngineDevice ed = new EngineDevice();
                            ed.SetVideoDriver(openGl);
                            return ed;
                        }
                    }
                    break;
                case EngineParameters.DRIVERTYPE.DIRECT3D9:
                    break;
                case EngineParameters.DRIVERTYPE.DIRECT3D10:
                    break;
            }

            return null;
        }
コード例 #18
0
ファイル: RegexEngine.cs プロジェクト: darkag/MediaToolkit
        internal static void TestAudio(string data, EngineParameters engine)
        {
            Match matchMetaAudio = Index[Find.MetaAudio].Match(data);

            if (!matchMetaAudio.Success) return;

            string fullMetadata = matchMetaAudio.Groups[1].ToString();

            GroupCollection matchAudioFormatHzChannel = Index[Find.AudioFormatHzChannel].Match(fullMetadata).Groups;
            GroupCollection matchAudioBitRate = Index[Find.BitRate].Match(fullMetadata).Groups;

            if (engine.InputFile.Metadata == null)
                engine.InputFile.Metadata = new Metadata();

            if (engine.InputFile.Metadata.AudioData == null)
                engine.InputFile.Metadata.AudioData = new Metadata.Audio
                {
                    Format = matchAudioFormatHzChannel[1].ToString(),
                    SampleRate = matchAudioFormatHzChannel[2].ToString(),
                    ChannelOutput = matchAudioFormatHzChannel[3].ToString(),
                    BitRateKbs = !String.IsNullOrWhiteSpace(matchAudioBitRate[1].ToString()) ? Convert.ToInt32(matchAudioBitRate[1].ToString()) : 0
                };
        }
コード例 #19
0
ファイル: RegexEngine.cs プロジェクト: darkag/MediaToolkit
        internal static void TestVideo(string data, EngineParameters engine)
        {
            Match matchMetaVideo = Index[Find.MetaVideo].Match(data);

            if (!matchMetaVideo.Success) return;

            string fullMetadata = matchMetaVideo.Groups[1].ToString();

            GroupCollection matchVideoFormatColorSize = Index[Find.VideoFormatColorSize].Match(fullMetadata).Groups;
            GroupCollection matchVideoFps = Index[Find.VideoFps].Match(fullMetadata).Groups;
            Match matchVideoBitRate = Index[Find.BitRate].Match(fullMetadata);

            if (engine.InputFile.Metadata == null)
                engine.InputFile.Metadata = new Metadata();

            if (engine.InputFile.Metadata.VideoData == null)
                engine.InputFile.Metadata.VideoData = new Metadata.Video
                {
                    Format = matchVideoFormatColorSize[1].ToString(),
                    ColorModel = matchVideoFormatColorSize[2].ToString(),
                    FrameSize = matchVideoFormatColorSize[3].ToString(),
                    Fps = matchVideoFps[1].Success && !string.IsNullOrEmpty(matchVideoFps[1].ToString()) ? Convert.ToDouble(matchVideoFps[1].ToString(), new CultureInfo("en-US")) : 0,
                    BitRateKbs =
                        matchVideoBitRate.Success
                            ? (int?) Convert.ToInt32(matchVideoBitRate.Groups[1].ToString())
                            : null
                };
        }
コード例 #20
0
            public static void RunCore(IHostApi hostApi, Benchmark benchmark, BenchmarkActionCodegen codegenMode)
            {
                var target       = benchmark.Target;
                var job          = benchmark.Job;        // TODO: filter job (same as SourceCodePresenter does)?
                var unrollFactor = benchmark.Job.ResolveValue(RunMode.UnrollFactorCharacteristic, EnvResolver.Instance);
                // var dummyUnrollFactor = 1 << 6; // TODO: as arg to CreateDummy()?

                // DONTTOUCH: these should be allocated together
                var instance      = Activator.CreateInstance(benchmark.Target.Type);
                var mainAction    = BenchmarkActionFactory.CreateRun(target, instance, codegenMode, unrollFactor);
                var idleAction    = BenchmarkActionFactory.CreateIdle(target, instance, codegenMode, unrollFactor);
                var setupAction   = BenchmarkActionFactory.CreateSetup(target, instance);
                var cleanupAction = BenchmarkActionFactory.CreateCleanup(target, instance);
                var dummy1        = BenchmarkActionFactory.CreateDummy();
                var dummy2        = BenchmarkActionFactory.CreateDummy();
                var dummy3        = BenchmarkActionFactory.CreateDummy();

                FillProperties(instance, benchmark);

                hostApi.WriteLine();
                foreach (var infoLine in BenchmarkEnvironmentInfo.GetCurrent().ToFormattedString())
                {
                    hostApi.WriteLine("// {0}", infoLine);
                }
                hostApi.WriteLine("// Job: {0}", job.DisplayInfo);
                hostApi.WriteLine();

                var engineParameters = new EngineParameters
                {
                    //HostApi = hostApi,
                    IsDiagnoserAttached = hostApi.IsDiagnoserAttached,
                    MainAction          = mainAction.InvokeMultiple,
                    Dummy1Action        = dummy1.InvokeSingle,
                    Dummy2Action        = dummy2.InvokeSingle,
                    Dummy3Action        = dummy3.InvokeSingle,
                    IdleAction          = idleAction.InvokeMultiple,
                    SetupAction         = setupAction.InvokeSingle,
                    CleanupAction       = cleanupAction.InvokeSingle,
                    TargetJob           = job,
                    OperationsPerInvoke = target.OperationsPerInvoke
                };

                var engine = job
                             .ResolveValue(InfrastructureMode.EngineFactoryCharacteristic, InfrastructureResolver.Instance)
                             .Create(engineParameters);

                engine.PreAllocate();

                setupAction.InvokeSingle();

                if (job.ResolveValue(RunMode.RunStrategyCharacteristic, EngineResolver.Instance)
                    != RunStrategy.ColdStart)
                {
                    engine.Jitting();                     // does first call to main action, must be executed after setup()!
                }
                if (hostApi.IsDiagnoserAttached)
                {
                    hostApi.AfterSetup();
                }

                var results = engine.Run();

                if (hostApi.IsDiagnoserAttached)
                {
                    hostApi.BeforeCleanup();
                }
                cleanupAction.InvokeSingle();

                hostApi.Print(results);                 // printing costs memory, do this after runs
            }
コード例 #21
0
        static void Main(string[] args)
        {
            // インストール済み音声合成ライブラリの列挙
            var names = GetLibraryName();

            Console.WriteLine("インストール済み音声合成ライブラリ");
            Console.WriteLine("-----");
            foreach (var s in names)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("-----");

            // 接続先スピーカーの列挙
            Console.WriteLine("接続先スピーカー");
            Console.WriteLine("-----");
            devices = new CoreAudioController().GetPlaybackDevices();
            string speaker = (devices.ToArray())[0].FullName;

            foreach (var d in devices)
            {
                Console.WriteLine($"{d.FullName}");
            }
            Console.WriteLine("-----");

            // 待ち受けIPアドレス
            Console.WriteLine("接続先");
            Console.WriteLine("-----");
            string hostname = Dns.GetHostName();

            IPAddress[] adrList = Dns.GetHostAddresses(hostname);
            foreach (IPAddress address in adrList)
            {
                if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    // IPv4
                    Console.WriteLine($"http://{address.ToString()}:{port}");
                }
            }
            Console.WriteLine($"待機中...");

            var          defaultName = names[0];
            HttpListener listener    = new HttpListener();

            listener.Prefixes.Add($"http://*:{port}/");
            listener.Start();
            while (true)
            {
                HttpListenerResponse response = null;
                try
                {
                    HttpListenerContext context = listener.GetContext();
                    HttpListenerRequest request = context.Request;
                    response = context.Response;

                    if (context.Request.Url.AbsoluteUri.EndsWith("favicon.ico"))
                    {
                        // favicon は無視
                        response.StatusCode = 404;
                        continue;
                    }
                    else if (context.Request.Url.AbsoluteUri.IndexOf("?") < 0 && context.Request.Url.LocalPath != "/")
                    {
                        string path = "html" + context.Request.Url.LocalPath;
                        // ? が含まれない場合は /html 以下をレスポンスとして返す
                        byte[] body = File.ReadAllBytes(path);
                        response.StatusCode = 200;
                        if (path.EndsWith(".html"))
                        {
                            response.ContentType = "text/html; charset=utf-8";
                        }
                        response.OutputStream.Write(body, 0, body.Length);
                        continue;
                    }
                    var queryString     = HttpUtility.ParseQueryString(context.Request.Url.Query);
                    EngineParameters ep = new EngineParameters();

                    string voiceText = DateTime.Now.ToString("HH時 mm分 ss秒です");
                    string voiceName = defaultName;
                    if (queryString["text"] != null)
                    {
                        voiceText = queryString["text"];
                        voiceText = voiceText.Replace("{time}", DateTime.Now.ToString("HH時 mm分 ss秒"));
                    }
                    if (queryString["name"] != null)
                    {
                        voiceName = queryString["name"];
                    }
                    string location = "";
                    if (queryString["speaker"] != null)
                    {
                        speaker = queryString["speaker"];
                        ChangeSpeaker(speaker);
                        location = $"@{speaker}";
                    }
                    if (queryString["pitch"] != null)
                    {
                        ep.Pitch = Convert.ToSingle(queryString["pitch"]);
                    }
                    if (queryString["range"] != null)
                    {
                        ep.PitchRange = Convert.ToSingle(queryString["range"]);
                    }
                    if (queryString["volume"] != null)
                    {
                        ep.Volume = Convert.ToSingle(queryString["volume"]);
                    }
                    if (queryString["speed"] != null)
                    {
                        ep.Speed = Convert.ToSingle(queryString["speed"]);
                    }


                    Console.WriteLine("=> " + context.Request.RemoteEndPoint.Address);
                    Console.WriteLine($"<= [{voiceName}{location}] {voiceText}");

                    response.StatusCode  = 200;
                    response.ContentType = "text/plain; charset=utf-8";
                    byte[] content = Encoding.UTF8.GetBytes(voiceText);

                    response.OutputStream.Write(content, 0, content.Length);
                    OneShotPlayMode(voiceName, voiceText, ep);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: " + ex.Message);
                }
                finally

                {
                    response.Close();
                }
            }
        }
コード例 #22
0
        private ProcessStartInfo GenerateStartInfo(EngineParameters engineParameters)
        {
            var arguments = CommandBuilder.Serialize(engineParameters);

            return(GenerateStartInfo(arguments));
        }
コード例 #23
0
 public static extern void NewtonVehicleSetEngineParams(IntPtr vehicle, EngineParameters engineParams, IntPtr leftFrontTire, IntPtr rightFrontTire, IntPtr leftRearTire, IntPtr rightRearTire, int diffType);
コード例 #24
0
 public IEngine Create(EngineParameters engineParameters)
 => new CustomEngine
 {
     GlobalCleanupAction = engineParameters.GlobalCleanupAction,
     GlobalSetupAction   = engineParameters.GlobalSetupAction
 };
コード例 #25
0
            public static void RunCore(IHost host, BenchmarkCase benchmarkCase, BenchmarkActionCodegen codegenMode, IConfig config)
            {
                var target       = benchmarkCase.Descriptor;
                var job          = benchmarkCase.Job; // TODO: filter job (same as SourceCodePresenter does)?
                int unrollFactor = benchmarkCase.Job.ResolveValue(RunMode.UnrollFactorCharacteristic, EnvironmentResolver.Instance);

                // DONTTOUCH: these should be allocated together
                var instance               = Activator.CreateInstance(benchmarkCase.Descriptor.Type);
                var workloadAction         = BenchmarkActionFactory.CreateWorkload(target, instance, codegenMode, unrollFactor);
                var overheadAction         = BenchmarkActionFactory.CreateOverhead(target, instance, codegenMode, unrollFactor);
                var globalSetupAction      = BenchmarkActionFactory.CreateGlobalSetup(target, instance);
                var globalCleanupAction    = BenchmarkActionFactory.CreateGlobalCleanup(target, instance);
                var iterationSetupAction   = BenchmarkActionFactory.CreateIterationSetup(target, instance);
                var iterationCleanupAction = BenchmarkActionFactory.CreateIterationCleanup(target, instance);
                var dummy1 = BenchmarkActionFactory.CreateDummy();
                var dummy2 = BenchmarkActionFactory.CreateDummy();
                var dummy3 = BenchmarkActionFactory.CreateDummy();

                FillMembers(instance, benchmarkCase);

                host.WriteLine();
                foreach (string infoLine in BenchmarkEnvironmentInfo.GetCurrent().ToFormattedString())
                {
                    host.WriteLine("// {0}", infoLine);
                }
                host.WriteLine("// Job: {0}", job.DisplayInfo);
                host.WriteLine();

                var engineParameters = new EngineParameters
                {
                    Host = host,
                    WorkloadActionNoUnroll = invocationCount =>
                    {
                        for (int i = 0; i < invocationCount; i++)
                        {
                            workloadAction.InvokeSingle();
                        }
                    },
                    WorkloadActionUnroll   = workloadAction.InvokeMultiple,
                    Dummy1Action           = dummy1.InvokeSingle,
                    Dummy2Action           = dummy2.InvokeSingle,
                    Dummy3Action           = dummy3.InvokeSingle,
                    OverheadActionNoUnroll = invocationCount =>
                    {
                        for (int i = 0; i < invocationCount; i++)
                        {
                            overheadAction.InvokeSingle();
                        }
                    },
                    OverheadActionUnroll   = overheadAction.InvokeMultiple,
                    GlobalSetupAction      = globalSetupAction.InvokeSingle,
                    GlobalCleanupAction    = globalCleanupAction.InvokeSingle,
                    IterationSetupAction   = iterationSetupAction.InvokeSingle,
                    IterationCleanupAction = iterationCleanupAction.InvokeSingle,
                    TargetJob           = job,
                    OperationsPerInvoke = target.OperationsPerInvoke,
                    MeasureGcStats      = config.HasMemoryDiagnoser(),
                    BenchmarkName       = FullNameProvider.GetBenchmarkName(benchmarkCase)
                };

                using (var engine = job
                                    .ResolveValue(InfrastructureMode.EngineFactoryCharacteristic, InfrastructureResolver.Instance)
                                    .CreateReadyToRun(engineParameters))
                {
                    var results = engine.Run();

                    host.ReportResults(results); // printing costs memory, do this after runs
                }
            }
コード例 #26
0
 public IEngine Create(EngineParameters engineParameters)
 => new CustomEngine
 {
     CleanupAction = engineParameters.CleanupAction,
     SetupAction   = engineParameters.SetupAction
 };
コード例 #27
0
        private void StartProcess(EngineParameters engineParameters)
        {
            var processStartInfo = GenerateStartInfo(engineParameters);

            RunProcess(processStartInfo);
        }
コード例 #28
0
            public static void RunCore(IHost host, Benchmark benchmark, BenchmarkActionCodegen codegenMode, IConfig config)
            {
                var target       = benchmark.Target;
                var job          = benchmark.Job; // TODO: filter job (same as SourceCodePresenter does)?
                var unrollFactor = benchmark.Job.ResolveValue(RunMode.UnrollFactorCharacteristic, EnvResolver.Instance);

                // DONTTOUCH: these should be allocated together
                var instance               = Activator.CreateInstance(benchmark.Target.Type);
                var mainAction             = BenchmarkActionFactory.CreateRun(target, instance, codegenMode, unrollFactor);
                var idleAction             = BenchmarkActionFactory.CreateIdle(target, instance, codegenMode, unrollFactor);
                var globalSetupAction      = BenchmarkActionFactory.CreateGlobalSetup(target, instance);
                var globalCleanupAction    = BenchmarkActionFactory.CreateGlobalCleanup(target, instance);
                var iterationSetupAction   = BenchmarkActionFactory.CreateIterationSetup(target, instance);
                var iterationCleanupAction = BenchmarkActionFactory.CreateIterationCleanup(target, instance);
                var dummy1 = BenchmarkActionFactory.CreateDummy();
                var dummy2 = BenchmarkActionFactory.CreateDummy();
                var dummy3 = BenchmarkActionFactory.CreateDummy();

                FillMembers(instance, benchmark);

                host.WriteLine();
                foreach (var infoLine in BenchmarkEnvironmentInfo.GetCurrent().ToFormattedString())
                {
                    host.WriteLine("// {0}", infoLine);
                }
                host.WriteLine("// Job: {0}", job.DisplayInfo);
                host.WriteLine();

                var engineParameters = new EngineParameters
                {
                    Host                   = host,
                    MainAction             = mainAction.InvokeMultiple,
                    Dummy1Action           = dummy1.InvokeSingle,
                    Dummy2Action           = dummy2.InvokeSingle,
                    Dummy3Action           = dummy3.InvokeSingle,
                    IdleAction             = idleAction.InvokeMultiple,
                    GlobalSetupAction      = globalSetupAction.InvokeSingle,
                    GlobalCleanupAction    = globalCleanupAction.InvokeSingle,
                    IterationSetupAction   = iterationSetupAction.InvokeSingle,
                    IterationCleanupAction = iterationCleanupAction.InvokeSingle,
                    TargetJob              = job,
                    OperationsPerInvoke    = target.OperationsPerInvoke,
                    MeasureGcStats         = config.HasMemoryDiagnoser()
                };

                var engine = job
                             .ResolveValue(InfrastructureMode.EngineFactoryCharacteristic, InfrastructureResolver.Instance)
                             .Create(engineParameters);

                globalSetupAction.InvokeSingle();
                iterationSetupAction.InvokeSingle();

                if (job.ResolveValue(RunMode.RunStrategyCharacteristic, EngineResolver.Instance).NeedsJitting())
                {
                    engine.Jitting(); // does first call to main action, must be executed after setup()!
                }
                iterationCleanupAction.InvokeSingle();

                var results = engine.Run();

                globalCleanupAction.InvokeSingle();

                host.ReportResults(results); // printing costs memory, do this after runs
            }
コード例 #29
0
        public Task GenerateHLS(EngineParameters parameters)
        {
            Guard.NotNull(parameters, nameof(parameters));

            return(Task.Run(() => _engine.GenerateHLS(parameters)));
        }
コード例 #30
0
        static void Main(string[] args)
        {
            var ignoreColumns    = new int[] { 0, 1, 13, 14 };
            int labelColumnIndex = 15 - ignoreColumns.Length;

            Dataset.LoadFromFile("bike-sharing-by-day.csv", labelColumnIndex, ignoreColumns);

            var engineParams = new EngineParameters()
            {
                IsLowerFitnessBetter    = true,
                PopulationSize          = 750,
                MinGenerations          = 25,
                MaxGenerations          = 2500,
                StagnantGenerationLimit = 25,
                SelectionStyle          = SelectionStyle.Tourney,
                TourneySize             = 3,
                ElitismRate             = 0,
                CrossoverRate           = 1,
                MutationRate            = 0.0,
                RandomTreeMinDepth      = 1,
                RandomTreeMaxDepth      = 3
            };

            printableParams =
                "P: " + engineParams.PopulationSize + " " +
                "G: " + engineParams.MinGenerations + " - " +
                engineParams.MaxGenerations + " " +
                "Stgn: " + engineParams.StagnantGenerationLimit + " " +
                "Sel: " + engineParams.SelectionStyle + " " +
                "Trny: " + engineParams.TourneySize + " " +
                "Mut: " + engineParams.MutationRate + " " +
                "Elit: " + engineParams.ElitismRate + " ";

            var e = new Engine <double, StateData>(engineParams);

            // give the engine a fitness function and a per-gen callback (so we can see the progress)
            e.AddFitnessFunction((c) => EvaluateCandidate(c));
            e.AddProgressFunction((p) => PerGenerationCallback(p));

            // one variable per value on a row of the training data
            for (int i = 0; i < Dataset.NumColumns; i++)
            {
                if (i != Dataset.LabelColumnIndex)
                {
                    e.AddVariable("v" + i);
                }
            }

            // some basic arithmatic building blocks
            e.AddFunction((a, b) => a + b, "Add");                    // addition
            e.AddFunction((a, b) => a - b, "Sub");                    // subtraction
            e.AddFunction((a, b) => a * b, "Mult");                   // multiplication
            e.AddFunction((a, b) => (b == 0) ? 1 : a / b, "Div");     // safe division
            e.AddFunction((a, b) => (a < b) ? a : b, "Min");
            e.AddFunction((a, b) => (a > b) ? a : b, "Max");
            e.AddFunction((a, b) => (a + b) / 2, "Avg");
            e.AddFunction((a, b, c) => (a + b + c) / 3, "Avg3");
            e.AddFunction((a) => - 1 * a, "Neg");                      // -1 * a
            e.AddFunction((a) => (a != 0) ? 1 / a : 0, "Inv");         // 1 / a
            e.AddFunction((a) => Math.Abs(a), "Abs");
            e.AddFunction((a) => a * a, "Sqr");
            e.AddFunction((a) => a * a * a, "Cube");

            e.AddConstant(0);
            e.AddConstant(2);
            e.AddConstant(3);
            e.AddConstant(5);
            e.AddConstant(7);
            e.AddConstant(11);
            e.AddConstant(13);
            e.AddConstant(17);
            e.AddConstant(19);
            e.AddConstant(23);

            // find the solution
            var solution = e.FindBestSolution();

            ShowFinalResults(solution);

            Console.WriteLine();
            Console.WriteLine("Hit any key to exit");
            Console.ReadKey();
        }