Войти
ФлеймФорумПрограммирование

Летопись багов (24 стр)

Страницы: 123 24 25 2630 Следующая »
#345
23:59, 7 фев 2022

Panzerschrek[CN]
Речь же о new и malloc.
Я о том, что написав

SomeType *p=new SomeType;

наивно ожидаешь получить указатель на объект SomeType, а не

__m512 *p=(__m512*)"Achtung Minen";
#346
2:37, 8 фев 2022

FordPerfect
> наивно ожидаешь получить указатель на объект SomeType, а не
только почему ты не уточняешь
1)

1586608114/source.cpp: In function ‘int main()’:
1586608114/source.cpp:8:44: warning: ‘new’ of type ‘__m512 {aka __vector(16) float}’ with extended alignment 64 [-Waligned-new=]
    for(int i=0;i<10;++i) m=new __m512[5];
                                            ^
1586608114/source.cpp:8:44: note: uses ‘void* operator new [](long unsigned int)’, which does not have an alignment parameter
1586608114/source.cpp:8:44: note: use ‘-faligned-new’ to enable C++17 over-aligned new support

2) с++17 и выше нормально отрабатывает без дополнительных флагов (-faligned-new).

#347
3:27, 8 фев 2022

Aroch
Замечание дельное, но мой посыл был обратить внимание что в этом месте мина в принципе бывает.
А что включить миноискатель - полезно, это да. Кстати что в MSVC?

#348
9:55, 8 фев 2022

FordPerfect
> new, который типа в курсе о конкретном типе, тоже недостаточно выровнен.
Вижу выравнивание по 16 байт, так и должно быть, не?

#349
10:14, 8 фев 2022

Aroch
> только почему ты не уточняешь

кто-то не читает предупреждения

#350
10:20, 8 фев 2022

romanshuvalov
> Вижу выравнивание по 16 байт, так и должно быть, не?
А __m512 неплохо бы выровнять на 64.

#351
12:30, 8 фев 2022

FordPerfect
> А __m512 неплохо бы выровнять на 64.

разве не 512?

#352
12:51, 8 фев 2022

innuendo
Можешь выравнивать на 512 бит, можешь - на 64 байта. На своё усмотрение.

#353
12:52, 8 фев 2022

)))

#354
13:48, 8 фев 2022

FordPerfect
> Можешь выравнивать на 512 бит, можешь - на 64 байта. На своё усмотрение.

ага, на 512 не надо

https://hjlebbink.github.io/x86doc/html/MOVDQA,VMOVDQA32_64.html

When the source or destination operand is a memory operand, the operand must be aligned on a 16 (EVEX.128)/32(EVEX.256)/64(EVEX.512)-byte boundary or a general-protection exception (#GP) will be generated. To move integer data to and from unaligned memory locations, use the VMOVDQU instruction.

#355
2:14, 13 фев 2022

Пример условный, но такой случай был. Код:

float f(int type,float a,float b,float c);

и внутри, например, b и c не используются. Но компилятор об этом молчит.
Дело в том, что там внутри (и это единственное использование b,c):

if(type==0) return f(1,1.0f-a,b,c);
#356
3:29, 13 фев 2022

Причём про рекурсивные неиспользуемые функции оно умеет: https://gcc.gnu.org/legacy-ml/gcc-bugs/2008-05/msg02272.html .

#357
12:57, 13 фев 2022

FordPerfect
> Но компилятор об этом молчит.
Ну это наверное не баг, а текущий потолок возможностей компилятора.

#358
9:26, 23 фев 2022

> Дело в том, что там внутри
Кстати, кому не влом (у меня там аккаунта нету), можете отправить feature request разработчикам компиляторов:
https://godbolt.org/z/98eKjM5oK

#359
13:31, 5 мая 2022

Блендер запекает свет в HDR очень высокой точности (32 бита на каждый канал), мне для своего движка надо сконвертировать в обычный PNG (RGB 24 бита, 8 бит на канал) и заодно перейти в линейное пространство из sRGB (или в sRGB, постоянно этот момент путаю).

Скрипт, экспортирующий сцену, автоматизированный, поэтому для конвертирования пользуюсь imagemagick (convert).

Пишу:

convert -depth 8 -colorspace sRGB input.hdr output.png

Всё работает, правда, цвета в тенях местами идут "лесенкой", но, думаю, это уже предел точности 8 битов на канал.

Но всё же какие-то уж слишком поганые цвета, начинаю разбираться и понимаю, что я указал сначала -depth 8 (он сконвертировал в 8 бит с потерей точности) и уже потом начал нелинейные операции по преобразованию из sRGB, работая с 8-битными числами!

Поменял местами параметры:

convert -colorspace sRGB -depth 8 input.hdr output.png

И всё стало ок.

Сейчас понимаю, что программа действительно просто выполняет заданные команды в том порядке, в котором они указаны и что так и должно быть. Но до этого момента я считал свою задачу единой процедурой и полагал, что приоритет шагов выставлен в соответствии со здравым смыслом и у меня в мыслях не было, что кто-то в здравом уме будет сначала терять точность, а потом проводить вычисления.

Слева было, справа стало.

Shadows | Летопись багов
Страницы: 123 24 25 2630 Следующая »
ФлеймФорумПрограммирование