ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
699715 Топик полностью
Mahagam (15.09.2016 15:43, просмотров: 57) ответил Ксения на Именно так! Для преобразования координат (именно их!) достаточно умножать вектор на матрицу 4x4. К сожалению, люди близкие к электронике, но далекие от математики, не понимают, что умножение больших матриц не может быть сведено к умножению малых,
ох сколько ошибок! Отчасти это потому, что для графики достаточно float32, а отчасти и потому, что память на видеокарте чаще всего адресуется 32-битными блоками, что вынуждает при чтении и записи в память чисел double64 обращаться к памяти дважды. Тогда как CPU современных компьютеров (типа Core i) 64-разрядные, а потому способны прочитать или записать double64 за один такт. 8 ядер проца исполняя зацикленную программу не так часто ползают по памяти, как GPU, который работает с большими массивами (текстуры и рендер-буфера). у свежего скайлейка пропускная памяти 34.1ГБ/с, а у Radeon Fury X - 512ГБ/с. разница в 15 раз !!!! а ширина шины от кэша к ядру может быть любая, или вы думаете что команды AVX512 подгребают данные по одному даблу за такт? Тогда как делать отдельный конвейер и кэш для каждого ядра накладно. А точнее, для ядер CPU на это идут, т.к. этих ядер не так уж и много, тогда как для 512 ядер GPU этого никто делать не станет. и не делают. конвейер один на тучу потоков. пачка ядер исполняет один и тот же код. для простоты можете считать, что GPU это как AVX65536, или ещё жирнее ))) и по точности - для графики местами и стандартного float`а много. весьма часто используют плавучку о 16-ти битах. double введён скорее для OpenCL и прочих compute shader`s.