recreating pytorch from scratch with gpu support and automatic differentiation 8f565122a3cc