Notre pile GPU pour NVIDIA et AMD, à part quelques pièces minimales de firmware signé, est 100 % open source et entièrement en Python, sauf pour le compilateur. Elle n'utilise pas de pilotes, de frameworks ou de bibliothèques de fournisseurs. C'est pourquoi il est si facile de la faire fonctionner sur Mac. Pour les compilateurs, sur AMD, nous utilisons LLVM en amont, et sur NVIDIA, nous utilisons le compilateur NAK du projet MESA. Nous prévoyons de remplacer le compilateur par du tinygrad pur dans un an ou deux également. Avec RANGEIFY fusionné, notre processus de réduction correspond désormais à l'état de l'art, style TVM. Nous étudions ThunderKittens et TileLang pour la vitesse à ce niveau, et nous devrions avoir tout cela prêt dans 200 jours pour la date limite de notre contrat de formation AMD Llama 405B. En raison de la petite taille de tinygrad et de sa nature entièrement en Python, c'est la bibliothèque ML la plus facile sur laquelle progresser, c'est-à-dire la pente d'amélioration la plus rapide. Avec le style Megakernel pour la planification, le style MODeL_opt pour la planification, et le style E-graph pour le symbolique, nous devrions dépasser l'état de l'art en termes de vitesse de PyTorch et JAX. Si nous faisons cela, le fossé de NVIDIA sera comblé. Il ne faut pas plus de 1000 lignes pour ajouter un nouvel accélérateur à tinygrad. Et je ne parle pas d'ajouter un nouvel accélérateur avec l'aide d'un pilote de noyau, d'un compilateur et de bibliothèques. Juste 1000 lignes de logiciel pour *l'ensemble* de l'accélérateur communiquant directement sur les PCIe BARs, comme ce que tinygrad fait actuellement avec les GPU NVIDIA et AMD.
@geerlingguy Ou en fait, AMD est encore plus facile. Il suffit d'installer le pilote `extra/usbgpu/tbgpu` et AMD=1
@geerlingguy Ou en fait, AMD est encore plus facile. Il suffit d'installer le pilote `extra/usbgpu/tbgpu` et AMD=1. 0 prévoit de prendre en charge Intel à ce niveau.
54,3K