BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> __popcnt64 не се компилира, Windows
code2
Публикувано на: 15-11-2018, 13:10
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 182
Регистриран на: 11.06.16



Има ли някакъв начин да се предотврати появата на този вид грешка при компилация? В смисъл ако командата не е реализирана да се процедира с нея по особен начин. Пробвах с __declspec(selectany), но ми даде грешка, че този номер работи само с външни библиотеки.

Самата команда __popcnt64 има лесен начин да се провери дали работи на съответно стартираната машина и съответно да не се изпълнява, ако не е реализирана за конкретния процесор. Така че компилирана веднъж няма проблеми, но дали ще се компилира изобщо не знам как да "разбера автоматично"...
PMEmail Poster
Top
Дон Реба
Публикувано на: 15-11-2018, 13:29
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 7392
Регистриран на: 11.11.06



каква точно грешка дава?
PM
Top
code2
Публикувано на: 15-11-2018, 13:34
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 182
Регистриран на: 11.06.16



QUOTE (Дон Реба @ 15-11-2018, 13:29)
каква точно грешка дава?

Дава: identifier not found
PMEmail Poster
Top
Дон Реба
Публикувано на: 15-11-2018, 13:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 7392
Регистриран на: 11.11.06



ако трябва да залагам по ред на вероятност
- компилираш в 32 битов режим
- ползваш някво старо студио (малко вероятно, ако си про нямаше да питаш, а ламерите обикновено са с най-новото)
PM
Top
Gamma Goblin
Публикувано на: 15-11-2018, 14:17
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1489
Регистриран на: 21.02.18



ако беше на линукс нямаше да имаш такъв проблем


--------------------
Напред! Живота е сраженье! Напред! И прав всегда ходи!
Напред, макар към поражение! Ако ще паднеш, прав падни!
---
Raw, and untamed in spirit, We chew this world and Spit it out
---
Challenge my own world to chaos
---
“I overcame myself, the sufferer; I carried my own ashes to the mountains; I invented a brighter flame for myself.”
PMEmail PosterUsers Website
Top
code2
Публикувано на: 15-11-2018, 14:56
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 182
Регистриран на: 11.06.16



QUOTE (Дон Реба @ 15-11-2018, 13:50)
ако трябва да залагам по ред на вероятност
- компилираш в 32 битов режим
- ползваш някво старо студио (малко вероятно, ако си про нямаше да питаш, а ламерите обикновено са с най-новото)

Не разбра проблемът точно. Идеята е програмата всеки да може да я компилира където си поиска. Ако е на старо студио, което не поддържа командата - тогава просто трябва да се компилира, като "последната няма да се включи в употреба". Не трябва да има грешка в компилацията! Трябва да я засека някак и да я предотвратя.

QUOTE (Gamma Goblin @ 15-11-2018, 14:17)
ако беше на линукс нямаше да имаш такъв проблем

Да и на Linux ще се компилира програмата, но засега се боря смело с Windows тъпните. Подобно и ти не разбра проблемът.

Това мнение е било редактирано от code2 на 15-11-2018, 14:58
PMEmail Poster
Top
Дон Реба
Публикувано на: 15-11-2018, 15:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 7392
Регистриран на: 11.11.06



аа, така кажи бе джанъм, _MSC_VER
обаче, мене ако питаш, не си губи времето с разни подобни глупости, само ще се вкараш в беля. ползвай софтуерно броене , аз го правя така
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
PM
Top
code2
Публикувано на: 15-11-2018, 15:10
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 182
Регистриран на: 11.06.16



QUOTE (Дон Реба @ 15-11-2018, 15:02)
аа, така кажи бе джанъм, _MSC_VER
обаче, мене ако питаш, не си губи времето с разни подобни глупости, само ще се вкараш в беля. ползвай софтуерно броене , аз го правя така
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;

Добре _MSC_VER, ама каква стойност по-точно? От коя версия се поддържа въпросната функция __popcnt64 или __popcnt? Не съм убеден, че с първия 64 битов MS компилатор вече я има. И няма ли някакъв по-човешки метод за исканото?
Иначе за решението което показваш - ами по-бавно е от системната функция на процесора. Програмата някак е такава, която изисква максимална възможна скорост.
PMEmail Poster
Top
Дон Реба
Публикувано на: 15-11-2018, 15:44
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 7392
Регистриран на: 11.11.06



по-бавно е като калкулации да, ама от петнайсетина години и нагоре процесора повечето време си чака данните, а не ги смята. подобни оптимизации имат смисъл само ако примерно трошиш пароли или нещо такова - силно натоварено като изчисление, никак като данни
PM
Top
Gamma Goblin
Публикувано на: 15-11-2018, 15:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1489
Регистриран на: 21.02.18



QUOTE
Програмата някак е такава, която изисква максимална възможна скорост.
Нали се сещаш че процесора може да я няма тая инструкция. Съяо какви доказателства имаш, че точно там се бави и има нужда от оптимизация ?

ПП: На руст може да направиш следното:
CODE

let x = 12234;
let count = x.count_ones();


Но така се получава като пишеш на obsoleted езици

ПП: Абе даже джавата има popcnt бе lolol

Това мнение е било редактирано от Gamma Goblin на 15-11-2018, 15:51


--------------------
Напред! Живота е сраженье! Напред! И прав всегда ходи!
Напред, макар към поражение! Ако ще паднеш, прав падни!
---
Raw, and untamed in spirit, We chew this world and Spit it out
---
Challenge my own world to chaos
---
“I overcame myself, the sufferer; I carried my own ashes to the mountains; I invented a brighter flame for myself.”
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0