W końcu miałem okazję przyjrzeć się Mojo/Modular. To nie jest to, co myślałem, to zamiennik OpenCL + implementacje rdzeni, a nie kompilator AI. Chociaż to znacznie ułatwia uzyskanie pełnej wydajności szybko, uważam, że kompletność Turinga to błąd w tej dziedzinie. W końcu mamy szansę żyć w czystym świecie przepływu danych, dlaczego byśmy z tego nie skorzystali? Języki takie jak ten nie oddzielają definicji obliczeń od harmonogramowania obliczeń. Przeczytaj doktorat Halide, jestem obsesyjnie zainteresowany tym pomysłem. W miarę jak sieci neuronowe stają się coraz lepsze w programowaniu, to, czego chcemy, to najkrótszy sposób na wyrażenie *dokładnie* tego, co program robi, bez martwienia się o szczegóły, jak to robi. Zostaw to maszynom. Zauważ parametr "maybe_epilogue_func" tutaj. Co jeśli chcesz mieć dwie funkcje epilogu zapisujące do różnych buforów lub połączone redukcje? Pętla jest wewnątrz tej funkcji konwolucyjnej, więc jest za późno, aby to zmienić. Przeczytaj tinygrad conv dla kontrastu. "W moich dziesięcioleciach budowania kompilatorów nigdy nie widziałem, aby mit o 'wystarczająco inteligentnym kompilatorze' naprawdę się sprawdził!" -- @clattner_llvm Stawiamy, że dzięki nowoczesnym technikom wyszukiwania (czytaj: AI) to w końcu się zmieni. Chociaż to całkowicie sprawiedliwy zakład, aby zająć drugą stronę, a jeśli to się nie sprawdzi w ciągu następnych 10 lat, Mojo prawdopodobnie będzie odpowiednim punktem w przestrzeni kompromisów.