static void Main(string[] args) { // 1. allocate a new dataflow computation. using (var computation = NewComputation.FromArgs(ref args)) { Int32 iterations = 10; if (args.Length >= 1) { iterations = Int32.Parse(args[0]); } Console.Out.WriteLine("iterations: " + iterations); Console.Out.Flush(); int counts = 5; int dimension = 10; Stream <Sample, Epoch> nodes = GenerateSamples(dimension, counts, computation.Configuration.ProcessID).AsNaiadStream(computation); // Stream<Weight, Epoch> weight = // GenerateWeight(dimension, computation.Configuration.ProcessID).AsNaiadStream(computation); // nodes = nodes.PartitionBy(x => x.source); // nodes.IterateAndAccumulate((lc, x) => x, x => Print(x), iterations, "LogisticRegression"); LogisticRegression lg = new LogisticRegression(dimension, computation.Configuration.ProcessID); var end_nodes = nodes.Iterate((lc, x) => lg.Operate(x), iterations, "LogisticRegression"); var node_count = Microsoft.Research.Naiad.Frameworks.Lindi.ExtensionMethods.Count(end_nodes); end_nodes.WriteToFiles("output_nodes_{0}.txt", (record, writer) => writer.Write(true)); node_count.WriteToFiles("output_count_{0}.txt", (record, writer) => writer.Write(true)); // var end_nodes = nodes.IterateAndAccumulate((lc , x) => Operate(x), iterations, "LogisticRegression"); Console.Out.WriteLine("Proc ID: " + computation.Configuration.ProcessID); Console.Out.Flush(); var output = node_count.Subscribe(x => { foreach (var e in x) { Console.WriteLine("vector: " + PrintList(e.First) + " count: " + e.Second); } }); // 2. define an object which accepts input strings. // var source = new BatchedDataSource<string>(); // 3. convert the data source into a Naiad stream of strings. // var input = computation.NewInput(source); // 4.request a notification for each batch of strings // received. // var output = input.Subscribe(x => // { // foreach (var line // in x) // Console.WriteLine(line); // }); Console.Out.WriteLine("Before Activate!"); Console.Out.Flush(); // 5. start the computation, fixing the structure of // the dataflow graph. computation.Activate(); Console.Out.WriteLine("After Activate!"); Console.Out.Flush(); // 6. read inputs from the console as long as the // user supplies them. // for (var l = Console.ReadLine(); l.Length > 0; l // = Console.ReadLine()) {} // // source.OnNext(l.Split()); // 7. signal that the source is now complete. // source.OnCompleted(); // 8. block until all work is finished. computation.Join(); Console.Out.WriteLine("After Join!"); Console.Out.WriteLine("Sample Conter: " + PrintList(lg.sample_counter)); Console.Out.WriteLine("Reduction Counter: " + PrintList(lg.reduction_counter)); Console.Out.Flush(); } }