public MergeHCNodePQ(IMHComputeNode <T> root) { Queue <IMHComputeNode <T> > prevLevel = new Queue <IMHComputeNode <T> >(); prevLevel.Enqueue(root); Queue <IMHComputeNode <T> > nextLevel = new Queue <IMHComputeNode <T> >(); topologicalOrder_ = new ParallelStack <IMHComputeNode <T> >(); flags_ = new Dictionary <IMHComputeNode <T>, Task>(); // Topological ordering while (true) { foreach (IMHComputeNode <T> parent in prevLevel) { foreach (IMHComputeNode <T> n in parent.GetChildren()) { nextLevel.Enqueue(n); } topologicalOrder_.Put(parent); // this is for topological order. flags_[parent] = new Task(() => { }); // Empty task for waiting. } if (nextLevel.Count == 0) { break; } prevLevel = nextLevel; nextLevel = new Queue <IMHComputeNode <T> >(); } }
private void Form1_Load(object sender, EventArgs e) { label3.Text = "Dunno lol"; label4.Text = ParallelArrays.MaximumArrayDimensions[0].ToString() + "x" + ParallelArrays.MaximumArrayDimensions[1].ToString(); for (int mwidth = 10; mwidth < 4000; mwidth += 10) { float[] test = new float[mwidth]; ParallelStack stk = new ParallelStack(); Stack <float> stack = new Stack <float>(); System.Diagnostics.Stopwatch perf = new System.Diagnostics.Stopwatch(); //GPU perf.Start(); stk.PushN(test); stk.PopN(mwidth); perf.Stop(); label10.Text = perf.ElapsedMilliseconds.ToString(); textBox2.Text += label10.Text + "\r\n"; // perf.Reset(); //CPU perf.Start(); for (float i = 0.0f; i < 1000 * mwidth; i = i + 1.0f) { stack.Push(i); } for (float i = 0.0f; i < 1000 * mwidth; i = i + 1.0f) { stack.Pop(); } perf.Stop(); label6.Text = perf.ElapsedMilliseconds.ToString(); textBox1.Text += label6.Text + "\r\n"; // Application.DoEvents(); } int popopo = 45; }
public override void Invoke() { var buffer = new StringBuilder(42 * 1000); var maxThreadIdsToDisplay = (DisplayThreadIDsCountLimit.HasValue) ? DisplayThreadIDsCountLimit.Value : 4; var visitor = new TextRenderer(buffer, maxThreadIdsToDisplay); var ps = ParallelStack.Build(Runtime); WriteLine(""); foreach (var stack in ps.Stacks) { WriteLine("________________________________________________"); stack.Render(visitor); WriteLine(buffer.ToString()); WriteLine(""); WriteLine(""); WriteLine(""); } WriteLine($"==> {ps.ThreadIds.Count} threads with {ps.Stacks.Count} roots{Environment.NewLine}"); }
private static void OnParallelStacks(ClrRuntime runtime, string args) { var ps = ParallelStack.Build(runtime); if (ps == null) { return; } // display parallel stacks Console.WriteLine(); foreach (var stack in ps.Stacks) { Console.Write("________________________________________________"); stack.WriteToConsole(useDml: true); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); } Console.WriteLine($"==> {ps.ThreadIds.Count} threads with {ps.Stacks.Count} roots{Environment.NewLine}"); }
public abstract void EnterRender(ParallelStack stacks);