Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
LENIN87 fp64, насколько я знаю, обычно даже не поддерживается видеокартами уровня ниже ТОП. Для типичного 3D вроде игр родная точность это fp32, даже на процессоре расчёты связанные с графикой считаются в float - точности хватает, скажем так, в большинстве случаев. ВК заточены под fp32, int и fp64 на видеокартах много медленнее
LENIN87 писал(а):
В каких случаях эта разница будет видна?
Большим капитанством будет ответить "в любых случаях где действительно требуются точные вычисления". Но не думаю что вам этот ответ нужен
Member
Статус: Не в сети Регистрация: 13.06.2007 Откуда: msk Фото: 1
Industrialice Если говорить о nv, то там только архитектура влияет: все железки с compute capability>1.3 работают с fp64, перф правда на порядок меньше. На теслах разница между fp32 и fp64 сокращается, например на предпоследней всего в два раза медленнее.
Одно дело когда разница тысячные доли процента, а другое когда единицы-десятки. На заморском сайте прочел, что разница видна при частом применении exponential functions.
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
LENIN87 если не нужны научные вычисления или финансовые - я не думаю что вам где-то реально понадобится fp64, хотя точность fp64 несравнимо выше чем у fр32( заведомо ложное утверждение учитывая что речь идёт о float-point, где что-то обобщить не всегда возможно, но в общем случае это будет правдой ). Опять же, даже в 3Д-графике fp32... не хватает, тем не менее намного лучше выкрутиться с fp32, чем обвалить производительность используя fp64( гипотетический вариант, fp64 в обычных условиях даже не поюзаешь )
LENIN87 если не нужны научные вычисления или финансовые - я не думаю что вам где-то реально понадобится fp64, хотя точность fp64 несравнимо выше чем у fр32( заведомо ложное утверждение учитывая что речь идёт о float-point, где что-то обобщить не всегда возможно, но в общем случае это будет правдой ). Опять же, даже в 3Д-графике fp32... не хватает, тем не менее намного лучше выкрутиться с fp32, чем обвалить производительность используя fp64( гипотетический вариант, fp64 в обычных условиях даже не поюзаешь )
во-первых, в финансовых вычислениях никогда не используют float point во-вторых, во всяких cfd почти всегда используют double в-третьих, точность вычислений очень сильно зависит от непосредственно реализации этих вычислений в программе. просто проводя операции в неправильном порядке легко получить неправильный результат, или сильно его загрубить
ну а вообще double поддерживаются старшими ati в каждой линейке начиная с hd5000, нвидия тоже поддерживает. ну а tesla ессно вообще легко их жуёт
Member
Статус: Не в сети Регистрация: 13.06.2007 Откуда: msk Фото: 1
Сегодня еще вот такой ответ получил от человека, который занимается этими вашими научными вычислениями:
Цитата:
fp64 стоит использовать если у тебя большой шанс накопления ошибки за счет оперирования с числами разной размерности, например, численное решение дифуров или же нелинейных уравнений. Другими словами, везде где у тебя есть итерационный процесс, где используются результаты с прошлого слоя, причем операнды имеют разную размерность, стоит использовать fp64.
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
Народ. а какое это отношение имеет к C++. В Паскале тоже есть real и double. А финансы из-покон веков базируются на фортране - там сложно программеру "очепятку" получить (хотя спутники уже летали в "никуда")...
Member
Статус: Не в сети Регистрация: 01.08.2007 Откуда: Чехов, М. О.
Всем привет) дайте, пожалуйста, ссылку на компилятор обычного С, я вот думал выучить, а найти компилятор целый гемор) мне подсказали GCC, но у них на сайте треш угар и содомия, черт пойми где взять нужные файлы...
_________________ Легче учиться на чужих примерах, чем на своих ошибках.
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
Pinki-Mertvec GCC луший выбор для Си - качается MinGW( в общем случае оптимальный вариант ), ставится за пару кликов и сразу можно кодить. Visual Studio содержит Си-компилятор, но c поддержкой устаревшего стандарта языка
Member
Статус: Не в сети Регистрация: 01.08.2007 Откуда: Чехов, М. О.
Industrialice а ссылку можешь дать?) я что в школе, что в институте прогал на трубе и делфи) там с ними как-то проще, либо турбопааскаль скачал, либо борланд делфи и гогого
Добавлено спустя 14 минут 38 секунд: скачал с сайта MInGw, установился вроде сам, через cmd.exe и все. Как его запустить? или я чего-то не улавливаю... для контроллеров хотя бы среды разработки есть, а просто для компа я даже не понимаю как и что...
_________________ Легче учиться на чужих примерах, чем на своих ошибках.
Member
Статус: Не в сети Регистрация: 13.06.2007 Откуда: msk Фото: 1
Камрады, разъясните плз! Изучаю книгу: Страуструп Б. - Программирование. Принципы и практика использования C++ - 2011 В книге в одной из глав иллюстрируется разработка приложения - консольный калькулятор. Так вот для реализации калькулятора вводится понятие лексемы (литерал или оператор или скобка):
Код:
class Token { public: char kind; // what kind of token double value; // for numbers: a value Token(char ch) // make a Token from a char :kind(ch), value(0) { } Token(char ch, double val) // make a Token from a char and a double :kind(ch), value(val) { } };
int main() { Token t1('+'); // initialize t1 so that t1.kind = '+' Token t2('8',11.5);// initialize t2 so that t2.kind = '8' and t2.value = 11.5 }
Затем вводится поток лексем:
Код:
class Token_stream { public: Token_stream(); // make a Token_stream that reads from cin Token get(); // get a Token (get() is defined elsewhere) void putback(Token t); // put a Token back private: bool full; // is there a Token in the buffer? Token buffer; // here is where we keep a Token put back using putback() };
// The putback() member function puts its argument back into the Token_stream's buffer: void Token_stream::putback(Token t) { if (full) error("putback() into a full buffer"); buffer = t; // copy t to buffer full = true; // buffer is now full }
switch (ch) { case ';': // for "print" case 'q': // for "quit" case '(': case ')': case '+': case '-': case '*': case '/': return Token(ch); // let each character represent itself case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { cin.putback(ch); // put digit back into the input stream double val; cin >> val; // read a floating-point number return Token('8',val); // let '8' represent "a number" } default: error("Bad token"); } }
лексема - это неделимая единица входных данных, число или знак операции, или функция типа синуса. входной поток байтов надо представить в виде потока лексем, для этого и сделан класс Token_stream.
потом ещё надо будет по грамматике конечный автомат построить, который будет разгребать поток лексем
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
zanac писал(а):
Можно ли вместо (a2 == 0)||(a2 == 2) записать (a2 == 0||2)?
Если упростить второй вариант( а этому ничего не мешает т.к. используются константы ) получится (a2 == 1) Конечно это не аналогично. Но можно написать (a2 == 0) | (a2 == 2) Нужно по ситуации смотреть как лучше
P.S. вот что забавно
Код:
int b; if( a == 2 | a == 0 ) b = 0; else b = 1;
Visual Studio 2012 зафейлила этот код выдав откровенный бред. VS 2010 ещё хуже справилась. MinGW сделал всё в лучшем виде( я не вижу как можно сделать ещё лучше, хотя может быть если посидеть ). Код может быть и паршивый, но компиляторы сейчас считаются дофига умными и что компилятор зафейлит такой простой участок сложно ожидать. Это один из аргументов почему нужно по ситуации смотреть
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
zanac писал(а):
Надо будет проверить дома, как с этим кодом VS6 справляется
Я уже, основной код одинаков, разница только в "самом конце"
VS2012 писал(а):
inc ecx push ecx
VS2010 писал(а):
lea eax, [ecx+1] push eax
VS6 писал(а):
inc ecx mov eax, ecx push eax
Остальное 1 в 1 Этот push, это потом идёт функция printf выводящая результат, так что он для неё VS6 и VS2010 хотелось обязательно запушить значение из eax и ниоткуда более Во всех студиях настройки на макс. скорость
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения