private void UpdateValues(GpuData gpu) { if (gpu != null) { PanelTitleLabel.BackColor = ThemeColors.PresetColors[gpu.Index]; PanelTitleLabel.Text = string.Format("GPU {0} - {1}", gpu.Index, gpu.Text); AverageLabel.Text = gpu.AvergaeTemperature.ToString("n2"); MinLabel.Text = gpu.MinimumTemperature.ToString("n0"); MaxLabel.Text = gpu.MaximumTemperature.ToString("n0"); SdLabel.Text = gpu.StdDevTemperature.ToString("n2"); FanAverageLabel.Text = gpu.AvergaeFanSpeed.ToString("n2"); FanMinLabel.Text = gpu.MinimumFanSpeed.ToString("n0"); FanMaxLabel.Text = gpu.MaximumFanSpeed.ToString("n0"); FanSdLabel.Text = gpu.StdDevFanSpeed.ToString("n2"); } else { PanelTitleLabel.BackColor = this.BackColor; PanelTitleLabel.Text = ""; AverageLabel.Text = "N/A"; MinLabel.Text = "N/A"; MaxLabel.Text = "N/A"; SdLabel.Text = "N/A"; FanAverageLabel.Text = "N/A"; FanMinLabel.Text = "N/A"; FanMaxLabel.Text = "N/A"; FanSdLabel.Text = "N/A"; } }
public GpuProfilesJsonDb() { Gpus = new GpuData[0]; GpuProfiles = new List <GpuProfileData>(); CoinOverClocks = new List <CoinOverClockData>(); this.TimeStamp = Timestamp.GetTimestamp(); }
public void ComputeGPUData() { try { m_MinerResult = new MinerDataResult(); m_MinerResult.GPUs = new List <GpuData>(); int totalHashrate = 0, totalShares = 0, rejected = 0; foreach (Result item in m_EwbfData.result) { GpuData gpu = new GpuData(item.name); gpu.IdentifyMake(); gpu.Hashrate = item.speed_sps.ToString(); gpu.Temperature = item.temperature + "C"; m_MinerResult.GPUs.Add(gpu); totalHashrate += item.speed_sps; totalShares += item.accepted_shares; rejected += item.rejected_shares; } m_MinerResult.TotalHashrate = totalHashrate; m_MinerResult.TotalShares = totalShares; m_MinerResult.Rejected = rejected; m_EwbfData.MinerDataResult = m_MinerResult; } catch (Exception) { Succeeded = false; throw; } }
/// <summary> /// this is put here instead of in a central location like core because in future u might want to disable few graphic cards in which case /// this class will have that info as disabling will be specific to a miner /// </summary> public List <GpuData> GetGpuList() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController"); List <GpuData> gpus = new List <GpuData>(); string graphicsCard = string.Empty; foreach (ManagementObject mo in searcher.Get()) { string name = mo["Name"] as string; if (!string.IsNullOrEmpty(name)) { GpuData data = new GpuData(name); data.IdentifyMake(); gpus.Add(data); } } return(gpus); } catch (Exception e) { } return(null); }
private bool ColorRender(EventArgs e, Graphics g, Rectangle r, Object rowObject) { GpuData gpu = rowObject as GpuData; Color color = ThemeColors.PresetColors[gpu.Index]; if (ObjectListGpus.SelectedObject == rowObject) { g.Clear(ObjectListGpus.Focused ? ObjectListGpus.SelectedBackColor : ObjectListGpus.UnfocusedSelectedBackColor); } else { g.Clear(ObjectListGpus.BackColor); } RectangleF cellRect = new Rectangle(r.X + 2, r.Y + 2, r.Width - 5, r.Height - 5); g.FillRectangle(new SolidBrush(color), cellRect); StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; using (SolidBrush textBrush = new SolidBrush(ObjectListGpus.ForeColor)) g.DrawString(gpu.Index.ToString(), ObjectListGpus.Font, textBrush, cellRect, format); return(true); }
public GpuViewModel(GpuData gpuData, GpuData[] gpuDatas) { if (gpuData == null) { throw new System.ArgumentNullException(nameof(gpuData)); } if (gpuDatas == null) { throw new System.ArgumentNullException(nameof(gpuDatas)); } _isGpuData = true; _gpuDatas = gpuDatas.Where(a => a.Index != NTMinerRoot.GpuAllId).ToArray(); _overClock = new EmptyOverClock(); _index = gpuData.Index; _name = gpuData.Name; _temperature = 0; _fanSpeed = 0; _powerUsage = 0; _coreClockDelta = 0; _memoryClockDelta = 0; _coreClockDeltaMin = gpuData.CoreClockDeltaMin; _coreClockDeltaMax = gpuData.CoreClockDeltaMax; _memoryClockDeltaMin = gpuData.MemoryClockDeltaMin; _memoryClockDeltaMax = gpuData.MemoryClockDeltaMax; _cool = 0; _coolMin = gpuData.CoolMin; _coolMax = gpuData.CoolMax; _power = 0; _powerMin = gpuData.PowerMin; _powerMax = gpuData.PowerMax; }
private void UpdateValues(GpuData gpu) { if (gpu != null) { PanelTitleLabel.BackColor = ThemeColors.PresetColors[gpu.Index]; PanelTitleLabel.Text = string.Format("GPU {0} - {1}", gpu.Index, gpu.Text); AverageLabel.Text = gpu.AvergaeHashRate.ToString("n4"); MinLabel.Text = gpu.MinimumHashRate.ToString("n2"); MaxLabel.Text = gpu.MaximumHashRate.ToString("n2"); SdLabel.Text = gpu.StdDevHashRate.ToString("n2"); TotalSharesLabel.Text = gpu.SharesFound.ToString(); IncorrectSharesLabel.Text = gpu.IncorrectShares.ToString(); SharesPerHourLabel.Text = gpu.SharesPerHour.ToString("n2"); FulfillmentLabel.Text = gpu.TimeForOneShare; } else { PanelTitleLabel.BackColor = this.BackColor; PanelTitleLabel.Text = ""; AverageLabel.Text = "N/A"; MinLabel.Text = "N/A"; MaxLabel.Text = "N/A"; SdLabel.Text = "N/A"; TotalSharesLabel.Text = "N/A"; IncorrectSharesLabel.Text = "N/A"; SharesPerHourLabel.Text = "N/A"; FulfillmentLabel.Text = "N/A"; } }
public void IdentifyGPUs() { try { //splot onto many lines string[] result = Regex.Split(m_fullLog, "\r\n|\r|\n"); string pattern = @"(GPU)(.){2,12}(recognized as)(.)*"; foreach (string item in result) { Match r = Regex.Match(item, pattern); string gpu_id = ""; string gpu_name = ""; if (r.Success) { m_identified = true; m_reReadGpunames = false;//we dont need to read until told string value = r.Value; //ideally i would have used this to find and then separate the gpu number //string pattern_gpuid = @"(#)."; //but the following site explains a way to get string affter the match using "positive lookbehind assertion //https://stackoverflow.com/questions/5006716/getting-the-text-that-follows-after-the-regex-match string pattern_gpuid = @"(?<=#)."; Match r_gpu_id = Regex.Match(value, pattern_gpuid); if (r_gpu_id.Success) { gpu_id = r_gpu_id.Value; } string pattern_gpuname = @"(?<=recognized as).*"; Match r_gpu_name = Regex.Match(value, pattern_gpuname); if (r_gpu_name.Success) { gpu_name = r_gpu_name.Value; } if (!string.IsNullOrEmpty(gpu_id) && !string.IsNullOrEmpty(gpu_name)) { //check if there is an item alredy object oldItem = m_Gpus[gpu_id]; if (oldItem == null) { GpuData gpu = new GpuData(gpu_name); gpu.IdentifyMake(); m_Gpus[gpu_id] = gpu; } } } } } catch (Exception) { Succeeded = false; throw; } }
public bool Parse(object obj) { Succeeded = false; m_CgminerData = obj as CGMinerCommandOutputs; try { if (m_CgminerData == null) { return(false); } m_MinerResult = new MinerDataResult(); m_MinerResult.GPUs = new List <GpuData>(); try { string content = m_CgminerData.Summary.Replace(" ", ""); Logger.Instance.LogInfo("CGMiner summary: " + content); content = content.Substring(0, content.Length - 1); SummaryRoot minerResult = (SummaryRoot) new JavaScriptSerializer().Deserialize(content, typeof(SummaryRoot)); m_MinerResult.TotalHashrate = (int)minerResult.SUMMARY[0].MHS5s; m_MinerResult.TotalHashrate *= 1000; m_MinerResult.TotalShares = (int)minerResult.SUMMARY[0].Accepted; m_MinerResult.Rejected = (int)minerResult.SUMMARY[0].Rejected; Logger.Instance.LogInfo("CCMiner TotalHashrate: " + m_MinerResult.TotalHashrate.ToString()); } catch (Exception e) { } //now read gpus from dev try { string content = m_CgminerData.Devs.Replace(" ", ""); content = content.Substring(0, content.Length - 1); RootObject minerResult = (RootObject) new JavaScriptSerializer().Deserialize(content, typeof(RootObject)); foreach (DEV item in minerResult.DEVS) { GpuData gpu = new GpuData("AMD GPU " + item.GPU.ToString()); //Todo: finfing the name has proven difficult gpu.Make = CardMake.Amd; gpu.Hashrate = (item.MHS5s * 1000).ToString(); //convert to Khs gpu.Temperature = item.Temperature.ToString() + "C"; m_MinerResult.GPUs.Add(gpu); Logger.Instance.LogInfo("GPU " + gpu.Hashrate.ToString()); } } catch (Exception e) { } m_CgminerData.MinerDataResult = m_MinerResult; return(true); } catch (Exception e) { Succeeded = false; } return(false); }
private void ObjectListGpus_SelectionChanged(object sender, EventArgs e) { GpuData gpu = (GpuData)ObjectListGpus.SelectedObject; if (gpu != null) { GpuSelected?.Invoke(this, new EventArgs <int>(gpu.Index)); } }
private string GpuNameGetter(object rowObject) { GpuData gpu = rowObject as GpuData; if (gpu.NickName != null && gpu.NickName != "" && gpu.NickName != string.Empty) { return(gpu.NickName); } return(gpu.Name); }
private void ObjectListGpus_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { GpuData clickeGpu = ObjectListGpus.SelectedObject as GpuData; ContextMenuStrip menu = new ContextMenuStrip(); menu.RenderMode = ToolStripRenderMode.ManagerRenderMode; menu.Renderer = new MenuStripCustomRenderer(); menu.Items.Add(new ToolStripMenuItem("Set Nickname", null, (s, ea) => { ObjectListGpus.EditSubItem(ObjectListGpus.SelectedItem, 1); }, "Rename")); Point cursorPos = System.Windows.Forms.Cursor.Position; Point menuPos = new Point(cursorPos.X - menu.Width / 2, cursorPos.Y); menu.Show(menuPos); } }
public void ComputeGPUData() { try { m_MinerResult.GPUs = new List <GpuData>(); string hashCombined = m_MinerResult.result[3]; string[] hashrates = hashCombined.Split(';'); string fanTemp = m_MinerResult.result[6]; string[] fanTempArr = fanTemp.Split(';'); if (hashrates != null && hashrates.Length > 0) { int j = 0; int gpu_id = 0; foreach (string item in hashrates) { GpuData gpu = null; string gpu_idstr = gpu_id.ToString(); gpu = m_Gpus[gpu_idstr] as GpuData; if (gpu == null) { gpu = new GpuData("CPU " + (gpu_id + 1).ToString()); } gpu.Hashrate = item; gpu.Make = CardMake.CPU; if (j < fanTempArr.Length) { gpu.Temperature = fanTempArr[j] + "C"; gpu.FanSpeed = fanTempArr[j + 1] + "%"; } else { gpu.Temperature = "0C"; gpu.FanSpeed = "0%"; } j += 2; gpu_id++; m_MinerResult.GPUs.Add(gpu); } } } catch (Exception ex) { Succeeded = false; throw; } }
private bool ColorRender(EventArgs e, Graphics g, Rectangle r, Object rowObject) { GpuData gpu = rowObject as GpuData; Color color = ThemeColors.PresetColors[gpu.Index]; if (ObjectListGpus.SelectedObject == rowObject) { g.Clear(ObjectListGpus.Focused ? ObjectListGpus.SelectedBackColor : ObjectListGpus.UnfocusedSelectedBackColor); } else { g.Clear(ObjectListGpus.BackColor); } g.FillRectangle(new SolidBrush(color), r.X + 2, r.Y + 2, r.Width - 5, r.Height - 5); return(true); }
public GpuView(GpuData data, MinerInfoSummary parent) { GpuData = data; m_Parent = parent; InitializeComponent(); }
public GpuDetailPanel() { InitializeComponent(); BackColor = ThemeColors.WindowContentBackgroundDarkTheme; ForeColor = ThemeColors.WindowContentForegroundDarkTheme; //Jus Some Color Games ObjectListGpus.BackColor = BackColor; ObjectListGpus.ForeColor = ForeColor; ObjectListGpus.SelectedBackColor = ThemeColors.UnfocusedSelectedBackgroundColor; ObjectListGpus.UnfocusedSelectedBackColor = ThemeColors.UnfocusedSelectedBackgroundColor; ObjectListGpus.UnfocusedSelectedForeColor = ObjectListGpus.ForeColor; //Setting ObjectListView Aspect Handlers ColumnColor.AspectToStringConverter = (obj) => { return(" "); }; ColumnColor.RendererDelegate = ColorRender; ColumnBrand.ImageGetter = (obj) => { return((obj as GpuData).Manufacturer.ToString().ToLower() + "_full.png"); }; ColumnName.AspectPutter = delegate(object gpu, object newValue) { GpuData gData = gpu as GpuData; gData.NickName = newValue.ToString(); GpuRenamed?.Invoke(this, new EventArgs <int>(gData.Index)); }; //AspectGetter for Nullable Fields. It shows "N/A" instead of just being empty ColumnCClock.AspectToStringConverter = NullFieldAspectGetter; ColumnMClock.AspectToStringConverter = NullFieldAspectGetter; ColumnMvddc.AspectToStringConverter = NullFieldAspectGetter; ColumnCvddc.AspectToStringConverter = NullFieldAspectGetter; ColumnPowLim.AspectToStringConverter = NullFieldAspectGetter; ColumnTT.AspectToStringConverter = NullFieldAspectGetter; //AspectGetter for fields which are calculated from the data ColumnAvgTemp.AspectGetter = (obj) => { return(string.Format("{0:0.00}", (obj as GpuData).AvergaeTemperature)); }; ColumnAvgHash.AspectGetter = (obj) => { return(string.Format("{0:0.00}", (obj as GpuData).AvergaeHashRate)); }; ColumnSdHash.AspectGetter = (obj) => { return(string.Format("{0:0.00}", (obj as GpuData).StdDevHashRate)); }; ColumnAvgFan.AspectGetter = (obj) => { return(string.Format("{0:0.00}", (obj as GpuData).AvergaeFanSpeed)); }; SetColumnHeaderStyles(); }
public void GpuSelectedHandler(object sender, EventArgs <int> ea) { GpuData gpu = Globals.GPUs[ea.Value]; UpdateValues(gpu); }
public GpusPanel() { InitializeComponent(); BackColor = ThemeColors.WindowContentBackgroundDarkTheme; ForeColor = ThemeColors.WindowContentForegroundDarkTheme; //Jus Some Color Games ObjectListGpus.BackColor = BackColor; ObjectListGpus.ForeColor = ForeColor; ObjectListGpus.SelectedBackColor = ThemeColors.UnfocusedSelectedBackgroundColor; ObjectListGpus.UnfocusedSelectedBackColor = ThemeColors.UnfocusedSelectedBackgroundColor; ObjectListGpus.UnfocusedSelectedForeColor = ObjectListGpus.ForeColor; //Setting ObjectListView Aspect Handlers ColumnColor.AspectToStringConverter = (obj) => { return(" "); }; ColumnColor.RendererDelegate = ColorRender; ColumnName.AspectGetter = GpuNameGetter; ColumnName.AspectPutter = delegate(object gpu, object newValue) { GpuData gData = gpu as GpuData; gData.NickName = newValue.ToString(); GpuRenamed?.Invoke(this, new EventArgs <int>(gData.Index)); }; //Wiring Events ObjectListGpus.ItemDrag += ObjectListGpus_ItemDrag; ObjectListGpus.GiveFeedback += ObjectListGpus_GiveFeedback; ObjectListGpus.SelectionChanged += ObjectListGpus_SelectionChanged; ObjectListGpus.MouseClick += ObjectListGpus_MouseClick; }
public GpuData CreateTerrainMesh(Bitmap[,] surroundingHeightmaps, float heightScale = 1f) { if (surroundingHeightmaps.GetLength(0) != 3 || surroundingHeightmaps.GetLength(1) != 3) { throw new Exception("Expected input bitmaps set to be of shape 3 by 3"); } var imageWidth = surroundingHeightmaps[1, 1].Width; var imageHeight = surroundingHeightmaps[1, 1].Height; var meshWidth = imageWidth + 1; var meshHeight = imageHeight + 1; var indexBufferBuilder = new IndexBufferBuilder <ushort>(3 * 2 * imageHeight * imageWidth); var vertexBufferBuilder = new VertexBufferBuilder <VertexPositionNormalTexture>(meshWidth * meshHeight); var random = new Random(); // Define sample function. float Sample(int coordinateX, int coordinateZ) { var surroundingIndexX = 1; var surroundingIndexZ = 1; if (coordinateX < 0) { coordinateX += imageWidth; surroundingIndexX = 0; } if (coordinateZ < 0) { coordinateZ += 1; surroundingIndexX = 0; } if (coordinateX >= imageWidth) { coordinateX -= imageWidth; surroundingIndexX = 2; } if (coordinateZ >= imageHeight) { coordinateZ -= imageHeight; surroundingIndexZ = 2; } return((float)surroundingHeightmaps[surroundingIndexX, surroundingIndexZ] .GetPixel(coordinateX, coordinateZ).A *heightScale); } // Build vertices. var debugIndex = 0; for (var x = 0; x < meshWidth; x++) { for (var z = 0; z < meshHeight; z++) { var rx = (x / (float)(meshWidth - 1)); var rz = (z / (float)(meshHeight - 1)); // v0_0 ◀---▶ v1_0 // ▲ ▲ // | x | // ▼ ▼ // v0_1 ◀---▶ v1_1 var v0_0 = Sample(x, z); var v0_1 = Sample(x, z + 1); var v1_0 = Sample(x + 1, z); var v1_1 = Sample(x + 1, z + 1); // Sample the height as the average of the four surrounding pixels. var height = (v0_0 + v0_1 + v1_0 + v1_1) / 4f; var wz = 1; var wx = 0; var wy = v0_1 - v0_0; var vx = 1; var vz = 0; var vy = v1_0 - v0_0; var normal_x = (vy * wz) - (vz * wy); var normal_y = (vz * wx) - (vx * wz); var normal_z = (vx * wy) - (vy * wx); var normal = new Vector3(normal_x, normal_y, normal_z); if (normal.Y < 0) { normal = -normal; } normal.Normalize(); //Console.WriteLine($"index: {debugIndex} - rx: {rx} rz: {rz}"); debugIndex++; vertexBufferBuilder.AddNext( new VertexPositionNormalTexture( new Vector3(rx, height, rz), normal, new Vector2(rx, rz) ) ); } } ushort GetVertexIndex(int x, int z) { return((ushort)(x + z * meshWidth)); } for (var x = 0; x < imageWidth; x++) { for (var z = 0; z < imageHeight; z++) { var i0_0 = GetVertexIndex(x, z); var i1_0 = GetVertexIndex(x + 1, z); var i0_1 = GetVertexIndex(x, z + 1); var i1_1 = GetVertexIndex(x + 1, z + 1); //Console.WriteLine($"tri {i0_0} {i1_0} {i0_1}"); //Console.WriteLine($"tri {i1_0} {i1_1} {i0_1}"); indexBufferBuilder .AddNext(i0_0, i0_1, i1_0) .AddNext(i1_0, i0_1, i1_1); } } return(GpuData.Create(indexBufferBuilder, vertexBufferBuilder, GraphicsDevice)); }
public bool Parse(object obj) { Succeeded = false; m_CCMinerData = obj as CCMinerCommandOutputs; try { if (m_CCMinerData == null) { return(false); } m_MinerResult = new MinerDataResult(); m_MinerResult.GPUs = new List <GpuData>(); try { string content = m_CCMinerData.Summary; Logger.Instance.LogInfo("CCMiner summary: " + content); string[] a = content.Split(new string[] { ";" }, StringSplitOptions.None); foreach (string item in a) { if (item.Contains("KHS")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); string kh = values[1]; double kh_d = double.Parse(kh); //kh_d /= 1024; m_MinerResult.TotalHashrate = (int)kh_d; Logger.Instance.LogInfo("CCMiner Hashrate: " + m_MinerResult.TotalHashrate.ToString()); } else if (item.Contains("ACC")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); string acc = values[1]; int acc_i = int.Parse(acc); m_MinerResult.TotalShares = acc_i; } else if (item.Contains("REJ")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); string rej = values[1]; int rej_i = int.Parse(rej); m_MinerResult.Rejected = rej_i; } } } catch (Exception e) { } //now read gpus from dev try { string content = m_CCMinerData.Threads; Logger.Instance.LogInfo("CCMiner Threads: " + content); string[] b = content.Split(new string[] { "|" }, StringSplitOptions.None); foreach (var ice in b) { bool add = false; GpuData gpu = new GpuData("");//Todo: finfing the name has proven difficult gpu.Make = CardMake.Nvidia; //m_MinerResult.GPUs.Add(gpu); string[] a = ice.Split(new string[] { ";" }, StringSplitOptions.None); foreach (string item in a) { if (item.Contains("CARD")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); gpu.GPUName = values[1]; } if (item.Contains("FAN")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); gpu.FanSpeed = values[1]; } if (item.Contains("TEMP")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); gpu.Temperature = values[1]; } if (item.Contains("KHS")) { string[] values = item.Split(new string[] { "=" }, StringSplitOptions.None); string kh = values[1]; double kh_d = double.Parse(kh); //kh_d /= 1024; gpu.Hashrate = kh_d.ToString(); add = true; Logger.Instance.LogInfo("CCMiner Hashrate: " + gpu.Hashrate.ToString()); } } if (add) { m_MinerResult.GPUs.Add(gpu); } } } catch (Exception e) { } m_CCMinerData.MinerDataResult = m_MinerResult; return(true); } catch (Exception e) { Succeeded = false; } return(false); }