newbie
Activity: 39
Merit: 0
It's still a bit rough of course. I will say this, it is more of an "application" than any of the other miners out there. There's a number of different projects, generating different assemblies, for different components... and the miners are isolated from the main host that drives them, through interfaces and the stuff. It's an actual application, not just a single line script.
The central class is BitMaker.Miner.MinerHost. When you create an instance of this, and invoke Start, it looks up miner plugins, checks to see what resources they consume (CPU, GPUs, etc), and then runs them. If two miner plugins consume the same resource (say, there's an SSE SHA-256 hasher component, and a plain-C# managed hasher component), then it will run them both, check the hashes produced over some time period, and pick the fastest. It does this each launch. Which actually works okay. I'll probably cache this information away somewhere eventually.
BitMaker.Console is a console application that does little more than create a MinerHost and run it. It periodically queries this host for the hash rate, and displays it. Very simple. Not much more than that, yet. I hope for the miner host to eventually raise events about miners starting, stopping, hash rates changing, etc... so that the UI component (either the Console version, or a yet-to-be-produced WPF frontend) can display those as it sees appropriate.
I did this so I can debug the code using the Console version, which is easy to work with, but also host it in a Windows Service.
Right now I am working on restructuring the connections between the MinerHost and the Miner plugins. I'm adding the ability for a IMiner (the miner plugins) to indicate that it requires a Windows "console". That is, a user session that has the ability to access the graphics card. When this is set, the host will actually search the system for the active user session, with access to the GPU, and spawn the Miner in a sub process on that session, communicating back to the host. This way it will run without being logged in, or while switching users. It will basically keep running, regardless what the desktop is used for. If there's no user logged in, it will run on the WinLogon console (at the logon screen). In all cases, no UI will be shown. So, it will infiltrate user processes in order to gain access to the GPU. Thank you MS for not providing GPU access except for at the console.
All of this is designed so I can deploy it across my company's desktops, and regardless whether the user leaves their session logged off, or locked, or logged in, the GPU can be accessed.
Currently I'm running it on my office machines without using GPUs (we don't have any AMD GPUs in the office anyways), using the Windows 7 Task Scheduler, set to only run the BitMaker.Console application when the machine is idle, and to run it as Local Service. So it will do SSE hashing during idle time. It's been running quite well.
Configuration right now is in the App.config file. This obviously needs to move.