I want to write a basic GPU miner from scratch for learning purposes. By "from scratch" I don't mean that I am unwilling to use libraries but I want it to be similar to real GPU mining software, and I want to learn in-depth from this.
More specifically:
I want to write a functional GPU mining software.
It should mine with a pool (I was thinking a pool that uses stratum but other protocols are fine).
It should be similar in efficiency to GPU mining software currently in use. (This isn't required but I would like to learn how it is done in "real life")
I know python and java, and I can learn C if required. I know how Bitcoin mining works in general, but don't know the details of GPU mining algorithms communication protocols etc.
I was wondering where I should start. Where can I find libraries and general information about this process? Is this even possible or is it too difficult for one person? I know I can use google but I don't know where to start.