Теоретически, все судоку в мире с однозначным решением пронумерованы и всего их чуть больше 5 миллиардов. Так что их можно генерировать пачкой на CPU, просто дешифруя последовательный номер .
Ветвление означает, что длина последовательности инструкций в разных блоках станет разной, следовательно, часть блоков в какой-то момент будет простаивать, дожидаясь окончания работы блоков, которым досталось больше инструкций.
Нигде. Этой информацией NVIDIA ни с кем не делится. Есть энтузиасты с проектом ассемблера/дизассемблера.
С 1975 года в индустрии многое поменялось, а именно:
1) Процессоры стали сложнее на порядки и уже сами могут оптимизировать последовательность инструкций, транслируя внутри себя CISC в RISC
2) Компиляторы стали на порядки умнее и как правило, сами неплохо оптимизируют. Написать и поддерживать код вручную на ассемблере, с учетом всех возможных особенностей всех процессоров, не стоит выигранных при этом 1-5% к быстродействию.
При выходе нового процессора/смене архитектуры, программист на ЯВУ просто поменяет галку в компиляторе и получит хороший, а чаще - отличный результат. Программист на ассемблере пойдет учить новый камень с нуля.