The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Google представил Си-библиотеку для определения возможностей..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от opennews (ok) on 07-Фев-18, 23:23 
Компания Google опубликовала (http://opensource.googleblog.com/2018/02/cpu-features-librar...) библиотеку cpu_features (https://github.com/google/cpu_features), предназначенную для определения возможностей, поддерживаемых текущим CPU, таких как тип микроархитектуры и расширенные наборы инструкций  AES, FMA (https://en.wikipedia.org/wiki/Multiply%E2%80%...), BMI, SSE, AVX и NEON. Поддерживается работа с процессорами на базе архитектур x86, ARM/AArch64 и MIPS. Код поставляется (https://github.com/google/cpu_features) под лицензией Apache 2.0.


Библиотека преподносится как удобный способ на лету определить возможность использования той или иной расширенной функциональности, или принять решение по применению запасных обработчиков для устаревших систем.  Недостающая функциональность библиотеки, необходимая для поддержки новых архитектур и определения возможностей CPU, может наращиваться через подключение расширений. Код написан в соответствии со спецификацией С89, что позволяет охватить большинство современных и устаревших компиляторов.


Библиотека также включает минимальный набор зависимостей и поддерживает разные стратегии определения функциональности CPU, что позволяет использовать её на разных платформах, в изолированных sandbox-окружениях и даже в условиях без возможности выполнить инструкцию cpuid (https://ru.wikipedia.org/wiki/CPUID).
Более того, в библиотеке не выполняются операции выделения памяти и не генерируются исключения, что даёт возможность использовать  её в реализациях таких функций, как  malloc, memcpy и memcmp.
Среди поддерживаемых методов определения функциональности отмечается инструкция cpuid, glibc-функция getauxval, /proc/self/auxv и /proc/cpuinfo.

URL: http://opensource.googleblog.com/2018/02/cpu-features-librar...
Новость: http://www.opennet.ru/opennews/art.shtml?num=48034

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


3. "Google представил Си-библиотеку для определения возможностей..."  +11 +/
Сообщение от Аноним (??) on 07-Фев-18, 23:43 
Ждём версии на javascript, тогда сайты никогда не ошибутся!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

29. "Google представил Си-библиотеку для определения возможностей..."  –3 +/
Сообщение от Ан (??) on 08-Фев-18, 07:53 
Доступа к этой информации через WebAPI не получить.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

55. "Google представил Си-библиотеку для определения возможностей..."  –4 +/
Сообщение от Аноним (??) on 08-Фев-18, 11:03 
> Доступа к этой информации через WebAPI не получить.

Насмешил. Спокойно получается id процессора, операционная система, разрешение монитора, платформа. Кстати, некоторые вещи даже без js получаются, а некоторые даже без scss.

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

67. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от XoRe (ok) on 08-Фев-18, 12:47 
id процессора - это не cpu_features.
Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

91. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 18:57 
Наверно вы имели ввиду css? Ибо scss это препроцессор css, он не обрабатывается браузером вообще никак.
Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

5. "Google представил Си-библиотеку для определения возможностей..."  +8 +/
Сообщение от Аноним (??) on 07-Фев-18, 23:53 
> static bool HasXmmOsXSave()
> int GetX86FeaturesEnumValue(const X86Features* features, X86FeaturesEnum value)

На С так не пишут!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Google представил Си-библиотеку для определения возможностей..."  –12 +/
Сообщение от Horse (??) on 08-Фев-18, 00:22 
В Google всё-таки лучше знают, как писать на C.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

14. "Google представил Си-библиотеку для определения возможностей..."  +23 +/
Сообщение от Аноним (??) on 08-Фев-18, 00:49 
> как писать на C чтоб все перешли на go
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

23. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 06:21 
#define bool int

Тоже мне, нашёл проблему.
А со второй строчкой что не так? Вполне себе C.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

30. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от ILoveIslam on 08-Фев-18, 07:57 
stdbool.h уже 18 лет как в стандарте.
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

39. "Google представил Си-библиотеку для определения возможностей..."  +4 +/
Сообщение от Вареник on 08-Фев-18, 08:42 
С89, написано жеж
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

80. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от ILoveIslam on 08-Фев-18, 13:43 
Какой-то интересный у них c89:

https://github.com/google/cpu_features/blob/8e58ef0d2b1720d1...

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

92. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от dmitrmax (ok) on 08-Фев-18, 19:43 
А во второй строче ключевое слово enum пропущено. Если, конечно, они не сделали typedef
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

101. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok) on 09-Фев-18, 02:46 
А с чего ты взял что там enum пропущено, а не struсt, union,...?
Ответить | Правка | ^ к родителю #92 | Наверх | Cообщить модератору

32. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 08:12 
> На С так не пишут!

показал бы что ли свой код, чтобы мы узнали как надо писать на Си

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

6. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Не понял on 07-Фев-18, 23:53 
>о даёт возможность использовать её в реализациях таких функций, как malloc, memcpy и memcmp.

А зачем внутри malloc определять процессор. Ну еще какой malloc вызывать и то один раз, но внутри?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

66. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 12:30 
Советую заглянуть в исходники той же либс - сразу станет понятно.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

102. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от pavlinux (ok) on 09-Фев-18, 03:00 
>>о даёт возможность использовать её в реализациях таких функций, как malloc, memcpy и memcmp.
> А зачем внутри malloc определять процессор.

Ну например не все процы умеют PDPE1GB

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

7. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 07-Фев-18, 23:56 
https://github.com/google/cpu_features/blob/master/src/list_...

А это вообще-то C++.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

19. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от leap42 (ok) on 08-Фев-18, 02:13 
верно аноним подметил, половина проекта на плюсах написана
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

22. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от lovewindows on 08-Фев-18, 05:14 
На с++ написана не сама библеотека, а исоплняемый list_cpu_features.
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

54. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 11:01 
https://github.com/google/cpu_features/issues/11
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

8. "Google представил Си-библиотеку для определения возможностей..."  –7 +/
Сообщение от Аноним (??) on 08-Фев-18, 00:06 
То есть,

cat /proc/cpuinfo
lshw | grep cpu
dmidecode -t 4

уже недостаточно?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Google представил Си-библиотеку для определения возможностей..."  –3 +/
Сообщение от Аноним (??) on 08-Фев-18, 00:07 
Да, и еще inxi
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Google представил Си-библиотеку для определения возможностей..."  +8 +/
Сообщение от Дуплик (ok) on 08-Фев-18, 00:13 
>Features revealed from Linux. We gather data from several sources depending on availability:
>from glibc's getauxval
>by parsing /proc/self/auxv
>by parsing /proc/cpuinfo

Ясно, понятно.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Google представил Си-библиотеку для определения возможностей..."  –2 +/
Сообщение от Аноним (??) on 08-Фев-18, 07:49 
>>Features revealed from Linux. We gather data from several sources depending on availability:
>>from glibc's getauxval
>>by parsing /proc/self/auxv
>>by parsing /proc/cpuinfo
> Ясно, понятно.

что тебе ясно-понятно, там же нет qt

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

37. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от пох on 08-Фев-18, 08:33 
>> Ясно, понятно.
> что тебе ясно-понятно, там же нет qt

где твой пул-реквест?


Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

47. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 10:32 
>>> Ясно, понятно.
>> что тебе ясно-понятно, там же нет qt
> где твой пул-реквест?

В ядро? И нафига вообще qt, если мне, например, на сервере надо псмотреть?

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

63. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от пох on 08-Фев-18, 12:24 
> В ядро?

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

> И нафига вообще qt

ну как же - стильно, модно, молодежно, отраслевой стандарт, что-нибудь еще про "миссию гугль" вверни. Это ж каждый дурак grep по cpuinfo может, а тут - библиотека!

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

57. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от Аноним (??) on 08-Фев-18, 11:27 
ещё одна сопля научилась комитить и возомнила себя линусом торвальдсом..
Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

11. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от nc (ok) on 08-Фев-18, 00:15 
Приятная штука. Подумал что хорошо бы ее в Буст включить, но потом понял что это Си а не С++. А кстати для Си есть что-то подобное бусту?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Google представил Си-библиотеку для определения возможностей..."  –4 +/
Сообщение от ERtert on 08-Фев-18, 02:15 
Буст, это который сомнительная библиотека для горе-разработчиков?
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

24. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от Аноним (??) on 08-Фев-18, 06:23 
> Буст, это который сомнительная библиотека для горе-разработчиков?

Это который активно добавляют в std. Может вы ещё и std не пользуетесь?

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

38. "Google представил Си-библиотеку для определения возможностей..."  –2 +/
Сообщение от пох on 08-Фев-18, 08:34 
>> Буст, это который сомнительная библиотека для горе-разработчиков?
> Это который активно добавляют в std. Может вы ещё и std не
> пользуетесь?

при программировании на си? Нет, не пользуется.

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

48. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от Аноним (??) on 08-Фев-18, 10:34 
>>> Буст, это который сомнительная библиотека для горе-разработчиков?
>> Это который активно добавляют в std. Может вы ещё и std не
>> пользуетесь?
> при программировании на си? Нет, не пользуется.

Словестный аквилибрист вы. Кстати, в новом стандарте C таки есть std. http://open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3631.pdf

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

71. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от пох on 08-Фев-18, 13:09 
>> при программировании на си? Нет, не пользуется.
> Словестный аквилибрист вы.

просто умею читать не на одно сообщение вверх. С точки зрения программиста на C (особенно - периодически сталкивающегося с проектами, использующими boost, и с удовольствием наблюдавшим за чехардой их проблем на ровном месте - "хорошо, очень хорошо, просто замечательно... что не у меня!") это именно как написано - вредный и неуклюжий костыль для кое-какеров. Если тебе понадобилось что-то из предоставляемого boost - ты либо можешь сделать как минимум не хуже (для конкретной своей мелкой задачи), заодно избавившись от лишней зависимости, либо не стоило и браться.

> Кстати, в новом стандарте C таки есть std.

тем хуже для нового стандарта. Впрочем, непосредственно по ссылке ничего такого не видно (но это и беллетристика, а не документ).

Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

109. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 10-Фев-18, 23:52 
и даже Boost.Asio? Большинство остального уже есть в C++11
Ответить | Правка | ^ к родителю #71 | Наверх | Cообщить модератору

108. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от dq0s4y71 (ok) on 10-Фев-18, 11:13 
И где там std?
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

89. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 17:54 
Это кроссплатформенный велосипед большого размера. Если проект - прототип, то буст подойдет. Иначе лучше сделать свой маленький велосипед.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

106. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от пох on 09-Фев-18, 13:34 
> Это кроссплатформенный велосипед большого размера. Если проект - прототип, то буст подойдет.

а при пожарном переходе от прототипа к коммерческому развертыванию, ты, конечно же, тут же переделаешь на что-то другое?

(у тебя ж именно в этот момент будет дофига свободного времени и  возможностей все ломать по десять раз в день)

в общем, механику появления boost в жизни проекта ты описал правильно, но вывод сделал неверный.
Оно будет жить в проекте вечно, а через год разные его части будут требовать трех несовместимых версий одновременно.

Ответить | Правка | ^ к родителю #89 | Наверх | Cообщить модератору

46. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от yet another anonymous on 08-Фев-18, 10:22 
> Приятная штука. Подумал что хорошо бы ее в Буст включить, но потом понял что это Си а не С++. А кстати для Си есть что-то подобное бусту?

Да, в boost'e только этого не хватает. Хотя навалено уже много.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

68. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-18, 12:48 
> А кстати для Си есть что-то подобное бусту?

Нет. И за это мы его и любим (среди прочего).

Если вам нужен бюст, берите плюсы и не портите малину другим.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Google представил Си-библиотеку для определения возможностей..."  +24 +/
Сообщение от mumu (ok) on 08-Фев-18, 00:48 
> /proc/cpuinfo

Библиотека, которая выводит /proc/cpuinfo? Я аж смузи на кадиган чуть пролил.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

83. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от nobodynoone on 08-Фев-18, 14:48 
Это не пользовательская библиотека, что вам непонятно-то.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

87. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от пох on 08-Фев-18, 16:45 
> Это не пользовательская библиотека, что вам непонятно-то.

нам непонятно, откуда берутся "программисты", которым нужна специальная библиотека, чтобы парсить /proc/сpuinfo. Возможно, в какой-то биолаборатории пора навести порядок, и проверить, какие именно предметные стеклышки дают лизать жабам.


Ответить | Правка | ^ к родителю #83 | Наверх | Cообщить модератору

15. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от Аноним (??) on 08-Фев-18, 01:05 
> Си-библиотеку

Предлагаю объединить до "сиблиотеку". С остальными языками так же:

Go - гоблиотека;
Java - яблиотека.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

43. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Ан (??) on 08-Фев-18, 09:44 
> яблиотека

что-то Apple повеяло. Лучше это слово оставить для них.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

53. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от devl547 (ok) on 08-Фев-18, 10:53 
Ну тогда Java - джаблиотека.
Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

58. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 11:39 
Ага, засудят :)
Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

60. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 11:45 
Растоблиотека, как-то сложно получилось
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

100. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от neit95 email(ok) on 09-Фев-18, 02:33 
Раблиотека
Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

61. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 11:47 
Удавоблиотека
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

96. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от anomymous on 08-Фев-18, 21:47 
Рублиотека
Пыхотека
Перлотка

Но всех делает D
Дискотека!

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

16. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от AMDGPUi915 on 08-Фев-18, 01:11 
Почему не на ASM? хипстота очередная!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от denis111 email(ok) on 08-Фев-18, 01:21 
Для всех архитектур?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

35. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от пох on 08-Фев-18, 08:32 
> Для всех архитектур?

всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid ? Ахренеть сложная задача.
А на альфе оно работать и не будет.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

49. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-18, 10:35 
>> Для всех архитектур?
> всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid
> ? Ахренеть сложная задача.
> А на альфе оно работать и не будет.

Компилировать будешь для каждого процессора и подгонять под каждый? Ну раз тебе так легко...

Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

72. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от пох on 08-Фев-18, 13:19 
>>> Для всех архитектур?
>> всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid
>> ? Ахренеть сложная задача.
>> А на альфе оно работать и не будет.
> Компилировать будешь для каждого процессора и подгонять под каждый? Ну раз тебе

А что, на си комилировать уже не надо?
Подгонять под каждый, разумеется, нет, это тебе не си, где -march=atom не позволяет запустить на xeon'ах - никто не мешает (в рамках одной общей системы команд) сперва проверять, доступна ли команда/регистр/биты.
Для альфы, разумеется, придется писать полностью отдельно, ну так эта штука на ней все равно не работает. Даром что "компилировать" можно.

> так легко...

да в общем обычная такая задачка для студента курса этак 3го, на курсовой проект, пожалуй, не потянет.
Для зачета курсового придется еще написать ту программу, ради которой понадобилась вообще runtime cpu detection. Не поверишь - скорее всего и это придется делать если и не целиком на ассемблере, то с asm вставками, компиляторы пока на такое не способны.

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

103. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok) on 09-Фев-18, 03:49 
> А на альфе оно работать и не будет.

Альфа сдохла 18 лет назад, разобрали на запчасти и винтики.  


Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

97. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от anomymous on 08-Фев-18, 21:50 
> Для всех архитектур?

А вот кстати да, была бы тема. Кусок машинного кода для множества архитектур который процессорозависимо джампает на нужную ветку внутри себя, соответственно знает тип процессора, и далее делает "диагностику" по возможностям такового.

Основная проблема написания подобной штуки - надо подобрать команды переходов так, чтобы они джампали на определённом проце, а все "чужие" команды переходов на других процах выполнялись, как какая-нибудь обратимая хрень.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

98. "Google представил Си-библиотеку для определения возможностей..."  +3 +/
Сообщение от anomymous on 08-Фев-18, 22:29 
Дабы понимать, о чём я, простой пример

18 7E - эта команда прыгает на 128 байт вперёд от самой команды на Z80 и совместимых.
EB 3E - эта команда прыгает на 64 байта вперёд от самой команды на x86 (в любом режиме, 16/32/64).

К сожалению, команда 18 7E на x86 превращается в опасную sbb byte ptr [si/esi/rsi+xx],bh, а поэтому нам надо записать её несколько иначе.

Итоговая запись такова:

2C 18 7E 40 EB 3E

Поток выполнения для Z80 будет:
2C - INC L, то есть для восстановления регистра нам будет достаточно сделать DEC L
18 7E - JR на 0x7E (126) байт вперёд от адреса следующей команды (то есть в итоге на 128 байт)

Поток выполнения для x86 будет:
2C 18 - SUB AL, 0x18, то есть для восстановления регистра нам достаточно будет ADD AL,0x18
7E 40 - JLE на 0x40 (64) байта вперёд от адреса следующей команды (то есть в итоге на 66 байт)
EB 3E - JMP на 0x3E (62 байта, в итоге на 64) вперёд, что является тем же самым адресом, что и в предыдущей команде), эту команду мы дописываем потому, что JLE зависит от результата вычитания, а нам надо прыгнуть железно

Что мы имеем в итоге:
На Z80 этот код прыгнет по адресу +129 байт от начала кода. На x86 этот код прыгнет по адресу +68 байт от начала кода. По этим адресам мы размещаем прочие детекторы для соответствующих CPU, и вуаля :)

Естественно, для 3-4 разных процессоров задача усложняется настолько, что без цели даже пытаться подобрать последовательность лениво - надо писать собственно подборщик вариантов.

Ответить | Правка | ^ к родителю #97 | Наверх | Cообщить модератору

99. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от anomymous on 08-Фев-18, 22:33 
На том же x86 ещё придётся детектить режим исполнения, по стэку детектить актуальный call convention, детектить операционку, etc, etc. Но в целом всё реально.
Ответить | Правка | ^ к родителю #98 | Наверх | Cообщить модератору

105. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok) on 09-Фев-18, 03:54 
> Но в целом всё реально.

Нед.


Ответить | Правка | ^ к родителю #99 | Наверх | Cообщить модератору

104. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok) on 09-Фев-18, 03:52 
>> Для всех архитектур?
> А вот кстати да, была бы тема.

Была, лет 30 назад. Ищи код тут  http://www.ioccc.org/

Ответить | Правка | ^ к родителю #97 | Наверх | Cообщить модератору

28. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-18, 07:51 
> Почему не на ASM? хипстота очередная!

ASM для хипстеров! Настоящие программисты пишут в двоичном коде!

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

65. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от КО on 08-Фев-18, 12:27 
Эх молодежь, уже и не помнит как программировать проводками. :)
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

18. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от gg (??) on 08-Фев-18, 01:48 
я бы тоже не отказался получать больше $100к в гугле, что бы писать такую откровенно скажем хрень
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Google представил Си-библиотеку для определения возможностей..."  +3 +/
Сообщение от qsdg (ok) on 08-Фев-18, 07:39 
Так не отказывайтесь
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

59. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 11:41 
Так не предлагают :)
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

110. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 13-Фев-18, 10:27 
Все равно не отказывайтесь. ;-)
Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

31. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 08:05 
эээ... так кто тебе мешает то? у нас что, железный занавес? Перестань комплексовать уже от своих нищенских доходов - слезами горю не поможешь.
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

34. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-18, 08:29 
> эээ... так кто тебе мешает то? у нас что, железный занавес?

железный занавес уже много лет как не у нас, а у них.
Уехать работать в гугль, умея только "библиотеку для определения возможностей cpu" у него не получится.

> Перестань
> комплексовать уже от своих нищенских доходов - слезами горю не поможешь.

если ты не понял, он не о доходах, а о том, какую херню эти люди делают.

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

40. "Google представил Си-библиотеку для определения возможностей..."  +3 +/
Сообщение от Вареник on 08-Фев-18, 08:45 
Зависть неосилянта
Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

50. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от Аноним (??) on 08-Фев-18, 10:36 
> Зависть неосилянта

Свои проекты ф студию. Только профы не забудь.

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

33. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-18, 08:25 
> я бы тоже не отказался получать больше $100к в гугле,
> что бы писать такую откровенно скажем хрень

большая часть гугля тем и занимается, что делает всякую откровенную хрень. Уже лет десять как. Иногда сложную хрень, иногда вот такую.

Проблема только в том, что на самом деле им вешали лапшу на уши, что они - избранные, и будут улучшать мир. Те, кто эту лапшу принял всерьез - свалили, им неинтересно парсить proc. Те кто изначально на #@ю вертел - в пролете, не прошли интервью, "надо верить!" или хотя бы очень умело делать вид.
Угадай, какие остались?

Если ты можешь пройти все уровни интервью в гугле - я уверен, ты можешь найти себе нормальную работу.

https://geektimes.ru/company/dataart/blog/268274/ - вот тебе интервью с инсайдером. "успешным", кому нужны лузеры.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

51. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 10:40 
> вот тебе интервью с инсайдером.
> "успешным", кому нужны лузеры.

Что такое для тебя успех? Для меня заниматься тем, что я хочу, а не тем, где больше платят или вася пупкин сказал это круто работать в гугеле\M$\аппл или где ещё там.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

93. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от _ (??) on 08-Фев-18, 20:40 
... ниЧЧо, и ты когда то женишься и ребетёнков заведёшь :-)
Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

88. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 17:18 
$100k в Сан-Франциско — это как жить на 8к рублей в Москве. А удалённые кодеры Гуглу не нужны, в Bay Area под мостом отличные кадры бомжуют, можно даже не думать о том, чтобы нанять опеннетчика из Мордора.
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

90. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним_ on 08-Фев-18, 18:37 
бомжа в гей-ареа нанимать дорого, наймут бангалорского. Через год переедет туда - для них-то нет проблем с квотами h1b.


Ответить | Правка | ^ к родителю #88 | Наверх | Cообщить модератору

94. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от _ (??) on 08-Фев-18, 20:51 
>$100k в Сан-Франциско — это как жить на 8к рублей в Москве.

Бре-е-е-е-хня-я-я! (С)

Но с чего ты вдруг решило что тебе этот стольник дадут? Они умные ребята о отлично понимают твою ситуацию ==> будут доить так что 8-о

Ответить | Правка | ^ к родителю #88 | Наверх | Cообщить модератору

21. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 05:04 
Она давно была в поставке Android NDK, теперь просто переехала
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

42. "Google представил Си-библиотеку для определения возможностей..."  –2 +/
Сообщение от iZEN (ok) on 08-Фев-18, 09:25 
У меня когнитивный диссонанс: если программа, написанная на C/C++, откомпилирована и работает на [i386], то она точно не запустится на [arm64] без специальных ухищрений, поскольку это "шитый машиный код" и от переносимого в исходных кодах Си в бинарнике ровным счётом ничего не осталось (если не включены отладочные символы и другая неоптимизация, но в релизе от этого избавляются). А что уж там проверять - есть ли SSE/3DNow! или нет на [arm64] - это вторичная глупость.

ЧТО они запихнули в свою CpuInfo, что она может на лету определять архитектуру процессора и его фичи, мультизагрузчик, компилятор и генератор тестового машкода под кучу процессоров для выполнения в реальном времени что ли?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

44. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 09:59 
оно не для переносимости бинарников на разных семействах, а внутри одного. например amd64. так что бы без пересборки бинарника можно было заюзать как все новейшие плюшки sse9999, так и на атлоне 10-летней давности запустить.
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

52. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от iZEN (ok) on 08-Фев-18, 10:42 
> так что бы без пересборки бинарника можно было заюзать как все новейшие плюшки sse9999

Так все новейшие плюшки, так и общий код в бинарнике включаются ещё на этапе компиляции компилятором опциями компиляции исходного текста на C/C++. Зачем ещё что-то довыяснять на этапе выполнения специальным кодом, если компилятор сам уже ДОБАВИЛ эту возможность в бинарик? Используйте современные версии компиляторов, чтобы не нужно было определять фичи CPU, на котором выполняется код.

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

56. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 11:12 
Тогда этот бинарник перестанет запускаться на древнем Атлоне.  А с помощью библиотеки можно сделать, чтобы работал везде и использовал максиму фич имеющегося процессора.
Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

62. "Google представил Си-библиотеку для определения возможностей..."  –2 +/
Сообщение от iZEN (ok) on 08-Фев-18, 12:16 
В любом случае вы не сможете запустить бинарник для [amd64] на [i386] без добавления 32-битного кода, дублирующего основной. А вот код для [i386] вполне можно запустить на [amd64] при условии присутствия поддержки выполнеия этого кода. И довыяснять в нём о том, что он на самом деле запускается в 64-битном окружении, не имеет смысла без соответствующей возможности генерации 64-битных частей и передачи им управления.

Хорошо, запустили 32-битный код для древнего Athlo'а XP на 64-битном Athlon X2 и узнали об этом во время выполнения. Ваши дальнейшие действия? Что дальше?

Ответить | Правка | ^ к родителю #56 | Наверх | Cообщить модератору

70. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от КО on 08-Фев-18, 13:07 
> Ваши дальнейшие действия? Что дальше?

Ты начни с начала.
Есть у тебя программа пускач и плюгины к ней.
Плюгин №1 считает на чистом FPU, два на SSE, три на AVX-512.
Задача пускача узнать какой загружать. Надо все их проверить на пригодность здесь и сейчас.

Ну или ты пишешь jit компилятор для своего скриптового языка.

И т.д. и т.п.

Ответить | Правка | ^ к родителю #62 | Наверх | Cообщить модератору

76. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от iZEN (ok) on 08-Фев-18, 13:24 
> Задача пускача узнать какой загружать. Надо все их проверить на пригодность здесь и сейчас.

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

Ответить | Правка | ^ к родителю #70 | Наверх | Cообщить модератору

79. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 13:33 
> Это задача компилятора - вставить в результирующий бинарный код, оптимизирующие инструкции
> из расширенного набора. Если они поддерживаются процессором, использовать их, в противном
> случае будет задействован код, работающий с базовым набором регистров.

Обычно компилятор не способен оптимизировать код лучше, чем (грамотный) разработчик. Поэтому в критичных местах векторный код пишут руками.

Ответить | Правка | ^ к родителю #76 | Наверх | Cообщить модератору

82. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от iZEN (ok) on 08-Фев-18, 14:41 
Современные компиляторы способны выдавать лучше оптимизированный код, чем средний разработчик.
Ответить | Правка | ^ к родителю #79 | Наверх | Cообщить модератору

107. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от КО on 09-Фев-18, 15:13 
>Это задача компилятора - вставить в результирующий бинарный код, оптимизирующие инструкции из расширенного набора

Проверять перед каждой инструкцией есть или нет в рантайме убивать идею (овчинка выделки будет не стоить).
Один раз проверил и перешел на тот вариант кода который оптимален для платформы. Компилятор должен подготавливать эти варианты.

Ну и Вы пропустили задачу с собственным JIT компилятором - ему то надо знать, что можно, а что нельзя делать.

Ответить | Правка | ^ к родителю #76 | Наверх | Cообщить модератору

77. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 13:26 
> Так все новейшие плюшки, так и общий код в бинарнике включаются ещё
> на этапе компиляции компилятором опциями компиляции исходного текста на C/C++. Зачем
> ещё что-то довыяснять на этапе выполнения специальным кодом, если компилятор сам
> уже ДОБАВИЛ эту возможность в бинарик? Используйте современные версии компиляторов, чтобы
> не нужно было определять фичи CPU, на котором выполняется код.

Компилятор, в общем случае, сам ничего не добавляет. Если ты в коде явно заюзал, скажем, AVX, то никто за тебя не будет проверять, есть ли в CPU этот самый AVX. И если его нет, то твоя программа тупо навернется.

Некоторые новые компиляторы предоставляют средства, чтобы проверить наличие фич CPU в runtime. Но это непортируемо и не везде поддерживается. Так что либо надо использовать библиотеки вроде сабжа, либо писать что-то своё.

Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

75. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 13:23 
Д-е-б-и-л. Изучи код libc поуниверсальнее, которая умеет оптимизироваться под разные архитектуры (glibc пойдёт). В зависимости от доступных фич процессора она может обрабатывать стринги по старинке, может задействовать MMX, а может SSE. Можно скомпилировать, оставив только одну подпрограмму, а можно, чтобы таскала их все и выбирала в рантайме.
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

86. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от пох on 08-Фев-18, 16:40 
он, похоже, даже не в курсе, что процессоры различаются не только битностью.
куда ему там, glibc...

ну и "компилятор генерит код лучше чем разработчик" - видимо, он прочитал в какой-то книжке начала 90х, времен хайпа риск-процессоров. Сегодня, чтобы компилятор сгенерил таки sse/ssse/avx код, надо ТАКУЮ хрень написать в исходнике, что глаза на лоб лезут. "зато переносимо". Ага, если не думать о том, КАК оно работает если компилятору таки не удалось опознать в этой вермишели свертываемость в sse инструкции, или на этой платформе оно устроено немного иначе.

Ответить | Правка | ^ к родителю #75 | Наверх | Cообщить модератору

45. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от X4asd (ok) on 08-Фев-18, 10:16 
> не генерируются исключения

исключения?

в Си?

фуф! пронесло.. не генерируются :-D :-D :-D

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

73. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 13:19 
Вообще-то, сишный интерфейс не гарантирует, что внутри тоже C.
Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

64. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Костик (??) on 08-Фев-18, 12:25 
А такие фичи, как поддержку мелтдауна, оно детектит?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

78. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от Аноним (??) on 08-Фев-18, 13:28 
> А такие фичи, как поддержку мелтдауна, оно детектит?

Нет.

Ответить | Правка | ^ к родителю #64 | Наверх | Cообщить модератору

69. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от XoRe (ok) on 08-Фев-18, 12:51 
> Код написан в соответствии со спецификацией С89, что позволяет
> охватить большинство современных и устаревших компиляторов.

Неа.
> We target gnu89 and not c89.

https://github.com/google/cpu_features/issues/11#issuecommen...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

74. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от пох on 08-Фев-18, 13:22 
>> Код написан в соответствии со спецификацией С89, что позволяет
>> охватить большинство современных и устаревших компиляторов.
> Неа.
>> We target gnu89 and not c89.

ффсе нормально, это gcc версий чуть поновее 2.7.2 и clang (если ключик не забыть) = "большинство", что не так?

Ответить | Правка | ^ к родителю #69 | Наверх | Cообщить модератору

81. "Google представил Си-библиотеку для определения возможностей..."  +3 +/
Сообщение от Аноним (??) on 08-Фев-18, 14:12 
При запуске на "Байкале" выдает ошибку ERR_CPU_NOT_FOUND
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

84. "Google представил Си-библиотеку для определения возможностей..."  +2 +/
Сообщение от Аноним (??) on 08-Фев-18, 15:12 
Ты б ещё на эльбрусе запустил, выдало бы ERR_TRANSISTORS_NOT_FOUND.
Ответить | Правка | ^ к родителю #81 | Наверх | Cообщить модератору

85. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-18, 15:27 
ERR_MONEY_NOT_FOUND_BUT_YOU_HOLD_ON
Ответить | Правка | ^ к родителю #84 | Наверх | Cообщить модератору

95. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от _ (??) on 08-Фев-18, 21:04 
О! How-much-watch-и пожаловали :-)
попробуй "... but you stay strong!" глядишь на второй год не оставят :-)))
Ответить | Правка | ^ к родителю #85 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру