|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 5, 2003 09:50:21 А как сделать потоками БОЛЬШОЕ ЧИСЛО ЭЛЕМЕНТОВ В МАССИВЕ!!!!! Это загадка!!! Какая же это загадка? Вышеприведенный кусок кода как раз и реализует расчет для массивов с большим количеством элементов. Дело в том, что каждый SSE регистр содержит 4 вещественных числа и имеются комманды которые выполняют как параллельные (с суфиксом ps) операции с этими числами, так и операции с одиночным числом (с суфиксом ss). А где можно прочитать про ПОТОЧНОСТЬ В SSE http://codenet.ru/progr/optimize/sse1.php поищи в конце концов в сети, посмотри в конце концов документацию с Intel'овского сайта P.S. Ты что!!!!!!! не знаешь никаких знаков препинаний (например '.' или ',')???????? В конце концов отремонтируй клавиатуру, а то западающие восклицательные и вопросительные знаки создают излишний трафик |
|
|
Дата: Сен 5, 2003 16:14:11 КЛАССНО РАБОТАЕТ! На простых примерах!! Спасибо!! Щас попробую сложные поюзать! Еще раз спасибо. |
|
|
Дата: Сен 5, 2003 16:22:19 а в чем секрет был??? То что команды SSE нужно использовать вместе?? |
|
|
Дата: Сен 5, 2003 18:31:42 А вот если в цикле будет высчитываться еще какие либо данные? как в таких случаях поступать? |
|
|
Дата: Сен 5, 2003 22:27:40 И все же SSE по точности проигрывает сопроцессору FPU по точности!!! После долгих тестов! Опытным путем я подтвердил теорию! Что сопроцессор по умолчанию имеет мантиссу размером 64 бит (устанавливают 8 и 9 биты (PC) регистра управления). SSE со своей одинарной точностью имеет мантиссу 24 бит. Т.е. проигрышь составляет тогда когда производятся АРИФМЕТИЧЕСКИХ ОПЕРАЦИИ НЕПОСРЕДСТВЕННО В СТЕКЕ СОПРОЦЕССОРА!!! НапримерЖ fld dword [a] fld dword [b] fadd st0,st1 fst dword [rezSOP] и с помощью SSE: movss xmm0,[a] movss xmm1,[b] addss xmm1,xmm0 movss [rezSSE],xmm1 rezSSE не равен rezSOP (естественно не всегда! можно подобрать такие вещественные числа которые будут удовлетворять условию) |
|
|
Дата: Сен 5, 2003 23:17:15 После долгих тестов! Опытным путем я подтвердил теорию! Что сопроцессор по умолчанию имеет мантиссу размером 64 бит Блин, это уже стало теорией. Что бы таких теорий не возникало прочитай IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture ибо то о чем ты говоришь непреложный факт: внутренее представление чисел для FPU 80 бит и никуда от них не деться. Твои биты округления во время проведения операций FPU совершенно по барабану, т.е. все арифметические операции имеют точность 80 бит. Да ты хоть на стенку залезь от безысходности но это так. Биты округления имеют значение только тогда когда ты пытаешься сохранить результат в памяти (да и то если разрядность паременной в которую происходит сохранение меньше разрядности внутреннего представление). SSE со своей одинарной точностью имеет мантиссу 24 бит. SSE число имеет 32 битное внутреннее представление. и все операции проводяться с ним как с 32 битным числом. Это непреложный факт. P.S. Мой препод в универе говорил мне: "Настоящий эксперементатор должен быть достаточно ленивым человеком что-бы не делать ненужных эксперементов". Так что нимайся фигней скачай мануалы с сайта Intel'а (тебе потребуется 1 и 2 том IA-32 Intel Architecture Software Developer's Manual) внимательно изучи те вопросы которые тебе необходимы (тебе нужно будет изучить буквально страниц 20-40) и уже после этого с вопросами которые не разрешаться обращайся в форум. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074 |