vak: (Default)
Подробности конфигурации:Меряем скорость:
$ dhrystone

Dhrystone Benchmark, Version 2.1 (Language: C)
...
Nanoseconds for one run through Dhrystone: 297.8
Million Dhrystones per Second: 3.357
DMIPS: 1910.9
Это 25% от скорости Raspberry Pi 4. Или на 6% медленнее, чем Celeron M 1Ghz. 

Сравнительная таблица: vak.dreamwidth.org/1159708.html
vak: (Default)
Купил новую карточку 128GB, по традиции меряю скорость. Чтение 94.4 Мбайт/сек, запись 62.9 Мбайт/сек. В прошлый раз было даже чуть лучше. Да ничего, годится для Raspberry Pi.



Карточки по скорости могут сильно различаться, иногда на порядок. Причём с известностью производителя и его обещаниями слабо кореллирует. Приходится отслеживать самому.



Для сравнения: другая карточка от Samsung, на этот раз полноразмерная SD. Скорость записи повыше. Это серия Pro Plus. Она пошустрее по сравнению с EVO Select.



vak: (Default)
Задумался я соорудить простой тест для сравнения скорости процессоров. Чтобы чуть более практичный, чем Dhrystone. И сдаётся мне, что красно-черные деревья ровно то, что надо. Многие системные программы, скажем компиляторы, занимаются примерно тем же: выполняют разные манипуляции над графами. В языке Си++ на сбалансированных деревьях построены стандартные классы std::set и std::map. Cкорость их работы и будем замерять. А в качестве генератора данных приспособим лоренцов аттрактор.

Сделал я такие тестики: set.cpp и map.cpp. Тесты создают 2 миллиона записей, а затем эти записи по одной удаляют. Общий размер данных выходит порядка 100 мегабайт. Процесс однопоточный, то есть задействуется только одно ядро процессора. Тест выдаёт две величины: скорость (количество записей в миллисекунду) и занятую память (в байтах на одну запись).

Прогнал я эти тесты на имевшихся под рукой компьютерах:
  • макбук на процессоре Apple M2 - MacOS, clang
  • мак мини на процессоре Apple M1 - MacOS, clang
  • iMac на процессоре Intel i9 - MacOS, clang
  • ноутбук Lenovo на процессоре Intel i7 - Ubuntu, gcc
  • Raspberry Py 5 - Ubuntu, gcc
  • Raspberry Py 4 - FreeBSD, clang
  • олинуксино на процессоре ARM32 - Debian, gcc
Результаты собраны в таблицу.
                                            --------Rate--------    -------Memory-------
Processor, Computer                         std::set    std::map    std::set    std::map
----------------------------------------------------------------------------------------
Apple M2 Max (12) @ 3.70 GHz                3856.1      2997.5      32.7        48.7
MacBook Pro (16-inch, 2023)
----------------------------------------------------------------------------------------
Apple M1 (8) @ 3.20 GHz                     2608.3      2091.6      32.7        48.7
Mac mini (M1, 2020)
----------------------------------------------------------------------------------------
Intel Core i9-9900K (16) @ 3.60 GHz         2302.4      1953.3      32.4        48.5
iMac (Retina 5K, 27-inch, 2019)
----------------------------------------------------------------------------------------
Intel Core i7-8750H (12) @ 4.10 GHz         1656.6      1654.2      49.8        49.8
Lenovo ThinkPad P1
----------------------------------------------------------------------------------------
Cortex-A76 (4) @ 2.40 GHz                   775.7       788.1       49.6        49.6
Raspberry Pi 5 Model B Rev 1.0
----------------------------------------------------------------------------------------
ARM Cortex-A72 r0p3 (4) @ 1.5 GHz           527.7       490.3       34.7        50.3
Raspberry Pi 4 Model B Rev 1.2
----------------------------------------------------------------------------------------
Allwinner sun7i (A20) Family (2) @ 960MHz   149.7       141.3       25.2        33.1
Olimex A20-OLinuXino-LIME2
vak: (Default)
Есть у меня старенький макбук, которым пользоваться уже не удобно, а выкинуть жалко. Я поставил на него Ubuntu на всякий случай: вдруг пригодится. Потрадиции померяем с помощью Dhrystone.
$ git clone https://github.com/sergev/dhrystone.git
$ cd dhrystone
$ make
$ ./dhrystone
...
Nanoseconds for one run through Dhrystone: 25.4
Million Dhrystones per Second: 39.382
DMIPS: 22414.3
Это почти в три раза быстрее, чем Raspberry 4, и в шесть раз быстрее, чем Raspberry Pi 3 Model B.

Подробности конфигурации:
vak: (Default)
А вот кому протоколы с платки Raspberry Pi 5? Там какой-то неизвестный загрузчик BOOTSYS объявился. Где исходники - неизвестно. Мало нам U-Boot и Grub, и тут опять.

Подробности конфигурации:
vak: (Default)
Приехала новенькая Raspberry Pi 5, с пылу, с жару. Официальная документация здесь: raspberry-pi-5.html. Ставится родной Ubuntu 23.10. Я обычно ставлю сервер (ubuntu-23.10-live-server-arm64.iso), так как пользуюсь только удалённым входом по SSH. Но можно и полноценную рабочую станцию.



Меряем скорость.
$ git clone https://github.com/sergev/dhrystone.git
$ cd dhrystone
$ make
...
$ ./dhrystone

Dhrystone Benchmark, Version 2.1 (Language: C)
...
Nanoseconds for one run through Dhrystone: 29.5
Million Dhrystones per Second: 33.867
DMIPS: 19275.2
Это в два с половиной раза шустрее чем Raspberry 4 и в пять раз быстрее Raspberry Pi 3B.

Единственная проблема с этой платкой - консольный порт UART. Не удаётся простыми средствами подключиться. Чуваки перенесли эти сигналы на отдельный хитрый 3-пиновый разъём. Предлагают его стандартизовать: "Raspberry Pi 3-pin Debug Connector Specification" (PDF).
vak: (Default)
По оказии оказались у меня на столе три новеньких карточки для Raspberry Pi. Грех не заценить производительность.



Меряю во встроенном SD-слоте ноутбука Lenovo ThinkPad P1. Использую стандартное линуксное приложение gnome-disks.
  • Чтение 88.0 Мбайт/сек, запись 78.3 Мбайт/сек - SanDisk Extreme Pro 128Gb - цена $20
  • Чтение 88.1 Мбайт/сек, запись 69.8 Мбайт/сек - SanDisk Extreme Pro 256Gb - цена $28
  • Чтение 95.3 Мбайт/сек, запись 76.0 Мбайт/сек - Samsung EVO Select 256Gb - цена $23
Самсунг выбивается в лидеры.

SanDisk Extreme Pro 128 Gbytes:


+2 )
vak: (Default)
Вытащу в отдельный пост табличку измерений Dhrystone для разных компьютеров. Тем более, [personal profile] ivanrubilo  прислал пару интересных цифр для хромбуков. А я от себя добавлю микроконтроллер pic32mz-da под Debian. Нормируем относительно Raspberry Pi 4, получаем:
vak: (Default)
Для любителей архитектуры RISC-V появилось наконец решение, доступное по цене и достаточное по возможностям. Плата в стиле распберри пай с процессором StarFive JH7110. Четыре ядра RV64GC на частоте 1.5ГГц. В конфигурации с 8 гигами памяти стоит $93 на Амазоне.



Установка Линукса:Подробности конфигурации: Меряем скорость:
Nanoseconds for one run through Dhrystone: 151.0   
            Million Dhrystones per Second: 6.621   
                                    DMIPS: 3768.4 
Не сказать чтобы супер быстро: всего на 4% шустрее Raspberry Pi 3B. И почти в два раза (48%) медленнее Raspberry Pi 4. Но всё же намного лучше, чем нежавейка. Без радиатора даже на холостом ходу процессор греется до 57ºC градусов. Лучше ставить вентилятор.
vak: (Default)
Это такая платка на процессоре Allwinner H618 в формате Raspberry Pi Zero. Недавно появилась на Aliexpress. В конфигурации с 4 гигами памяти стоит $30.

Питание подаётся через USB-C. Для консольного порта годится любой адаптер USB-TTL, к примеру FT232RL. На борту есть Wi-Fi, но обычно проще воткнуть Ethernet: меньше настраивать.



Стартует почти стандартный Debian 12. Подробности конфигурации:Чтобы заработал DNS, мне пришлось заменить /etc/resolv.conf на:
nameserver 75.75.75.75
nameserver 75.75.76.76
Содержимое файла /etc/apt/sources.list надо заменить на:
deb https://ftp.debian.org/debian/ bookworm contrib main non-free non-free-firmware
deb https://ftp.debian.org/debian/ bookworm-updates contrib main non-free non-free-firmware
deb https://ftp.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware
deb https://ftp.debian.org/debian/ bookworm-backports contrib main non-free non-free-firmware
deb https://security.debian.org/debian-security/ bookworm-security contrib main non-free non-free-firmware
При установке компиляторов возникают конфликты. Пришлось даунгрейдить сишную библиотеку и некоторые другие пакеты:
apt install libc6=2.36-9+deb12u3 libc-bin=2.36-9+deb12u3 locales=2.36-9+deb12u3
apt install libcrypt1=1:4.4.33-2 libnsl2=1.3.0-2
Меряем скорость:
$ git clone https://github.com/sergev/dhrystone.git
$ cd dhrystone
$ make
...
$ ./dhrystone
...
Nanoseconds for one run through Dhrystone: 133.7
Million Dhrystones per Second: 7.479
DMIPS: 4256.8
Это на 17% быстрее Raspberry Pi 3B или почти в два раза (55%) медленнее Raspberry Pi 4.
vak: (Default)
Решил вытащить из хламовника и обновить софт на платке Nezha, по нашему "нежавейка". Это была одна из первых доступных распберри пай с архитектурой RISC-V.



Один из недавних обзоров этой платки: twoerner.blogspot.com/2023/01/allwinner-nezha-d1.html

Нынче Ubuntu поставляет официальные релизы к нежавейке. Скачать можно на странице релиза. Или по прямой ссылке: ubuntu-23.10-preinstalled-server-riscv64+nezha.img.xz. Записываете на SD-карточку и загружаетесь. Настройка через консольный серийный порт. Юзер ubuntu, пароль ubuntu при первом входе.

Подробности конфигурации:


Меряем скорость:
$ git clone https://github.com/sergev/dhrystone.git
$ cd dhrystone
$ make
...
$ ./dhrystone
...
Nanoseconds for one run through Dhrystone: 293.9
Million Dhrystones per Second: 3.403
DMIPS: 1936.5
Выходит 53% от Raspberry Pi 3B или 25% от Raspberry Pi 4. Нешустро, зато и потребление никакое.
vak: (Default)
Используем старый проверенный Dhrystone. Запускаем на процессоре Celeron M 1GHz.
$ git clone https://github.com/sergev/dhrystone.git
$ cd dhrystone
$ make
...
$ ./dhrystone

Dhrystone Benchmark, Version 2.1 (Language: C)
...
Nanoseconds for one run through Dhrystone: 280.8
Million Dhrystones per Second: 3.561
DMIPS: 2026.9
То же самое на Pentium 4 2.8GHz.
$ ./dhrystone
...
Nanoseconds for one run through Dhrystone: 118.5
Million Dhrystones per Second: 8.437
DMIPS: 4801.7
Сравниваем с Raspberry Pi 4.
Nanoseconds for one run through Dhrystone: 73.0    
Million Dhrystones per Second: 13.692
DMIPS: 7792.8
Для полноты картины добавим Raspberry Pi 3B. По случаю установил 64-битную версию Raspberry Pi OS вместо 32-битной. Стало заметно шустрее.
Nanoseconds for one run through Dhrystone: 156.7   
Million Dhrystones per Second: 6.383
DMIPS: 3632.7
Если принять Raspberry Pi 4 за единицу, получаем:
vak: (Знайка)
Вздулась батарея на моём рабочем ноутбуке, и мне выдали новый. Этот самый последний, на процессоре Apple M2 Max. По старой доброй традиции меряю скорость с помощью Dhrystone.
$ git clone https://github.com/sergev/dhrystone.git
$ cd dhrystone
$ make
$ ./dhrystone
...
Nanoseconds for one run through Dhrystone: 12.2
Million Dhrystones per Second: 82.075
DMIPS: 46713.1
Для сравнения: это на 5% быстрее, чем предыдущий процессор Apple M1 Pro, в полтора раза быстрее, чем iMac с процессором Intel Core i9 3.6 GHz, и в 26 раз быстрее, чем Raspberry Pi 3 Model B.

Скорость GPU тоже полезно заценить.
$ git clone https://github.com/sergev/genefer20.git
$ cd genefer20
$ make
$ bin/genefer20 -n 9
genefer20 1.13.0 macOS gcc-4.2.1
Copyright (c) 2020, Yves Gallot
genefer20 is free source code, under the MIT license.

Command line: '-n 9'

0 - device 'Apple M2 Max', vendor 'Apple', platform 'Apple'.

Running on device 'Apple M2 Max', vendor 'Apple', version 'OpenCL 1.2 ' and driver '1.2 1.0'.
38 compUnits @ 1000MHz, mem=21845MB, cache=0kB, cacheLine=0B, localMem=32kB, constMem=1048576kB, maxWorkGroup=256.

radix-16, csize = 8, vsize = 8, 12 ms/b
radix-16, csize = 8, vsize = 16, 4 ms/b
radix-16, csize = 8, vsize = 32, 1 ms/b
radix-16, csize = 8, vsize = 64, 0 ms/b
Radix = 16, vector size = 64, chunk size = 8

GPU: 100%, CPU: 0.0458%, 40.9 GFN-9/sec
GPU: 100%, CPU: 0.0402%, 40.5 GFN-9/sec
GPU: 100%, CPU: 0.0389%, 41 GFN-9/sec
GPU: 100%, CPU: 0.038%, 41 GFN-9/sec
GPU: 100%, CPU: 0.0377%, 41 GFN-9/sec
Это в 1.56 раза быстрее, чем Apple M1 Pro, и в 1.47 раза быстрее, чем NVidia Quadro P1000 на ноутбуке.
vak: (Default)
Тестировать SD карточки на Линуксе для чего полезно? Чтобы выбрать оптимальную карточку для фотоаппарата, таблета, для Raspberry Pi. Список моих предыдущих постов на эту тему:
Но бывает еще другая потребность: применение карточки как внешний носитель для микроконтроллеров. Для Arduino, для RetroBSD или LiteBSD, а теперь для операционки RP/M на микроконтроллере RP2040. Здесь карточка подключается через порт SPI, и возникают совсем другие эффекты.

Я перетащил в RP/M свой старый тест скорости карточек из RetroBSD. Процесс измерения выглядит так.

1. Втыкаем карточку в плату микроконтроллера.



2. Подключаемся к консоли RP/M и даём команду "vol -t" - измерение скорости диска. Тест записывает файл размером 8 мегабайт, и затем его читает.

3. Повторяем для всех имеющихся в наличии карточек.

Сводим в таблицу, упорядочиваем по скорости чтения.
Name                                Read, kbytes/sec  Write, kbytes/sec
Toshiba 512 Mb 1002 838
Kodak 4 Gb Class 4 969 725
(noname) 1 Gb 965 500
Nokia 512 Mb 959 718
(noname) 2 Gb 959 680
Samsung 32 Gb EVO Select (green) 946 881
Samsung 32 Gb EVO+ (red) 941 877
Delkin Devices 4 Gb Class 10 933 566
SanDisk Extreme Pro 64Gb 903 770
Silicon Power 32 Gb 3D NAND 903 596
Delkin Devices 256 Mb 877 678

В виде картинки будет нагляднее. Можно видеть, что новомодные карточки SanDisk и Samsung по скорости чтения ничем особо не выделяются.


Упорядочим по скорости записи. Здесь SanDisk и Samsung выглядят неплохо. Причём Samsung слегка шустрее чем SanDisk. А вовсе не в три раза наоборот, как на Линуксе.



Вывод: в поиске хороших карточек для микроконтроллерных применений линуксные и прочие Windows-бенчмарки не помогают никак.
vak: (Default)
В процессе работы над RP/M понадобились мне ещё карточки micro-SD. Зашел на Амазон, заказал две подешевле и одну чуть дороже. Отзывы почитал, всё по честному. Пришли карточки, стал их мерять под Линуксом. Разница оказалась неожиданно большой. Для полноты сравнения добавлю одну старую (лучшую) карточку из моей коллекции.
  • Чтение 88.8 Мбайт/сек, запись 79.3 Мбайт/сек - SanDisk Extreme Pro 64Gb - цена $14
  • Чтение 6.1 Мбайт/сек, запись 27.1 Мбайт/сек - Silicon Power 3D NAND 32Gb - цена $6
  • Чтение 94.3 Мбайт/сек, запись 31.6 Мбайт/сек - Samsung EVO Plus 32Gb - цена $12
Карточка SanDisk Extreme Pro удивила скоростью записи. Почти в три раза быстрее предыдущего рекордсмена Samsung EVO Plus.





Карточку Silicon Power 3D NAND хвалят в некоторых обзорах как надёжный недорогой вариант. Но скорость чтения она показала совершенно никуда не годную. И время доступа 7.63 миллисекунды - можно подумать, это механический жёсткий диск.



vak: (Default)
Купил пару новых SD карточек на амазоне: одна красненькая, другая зелёненькая. Меряю скорость под Линуксом. Особой разницы не вижу. Наверное корейцы всё уже заоптимизировали по самое не могу.









Предыдущие тесты здесь: https://vak.dreamwidth.org/599837.html
vak: (Default)
Это 512-гиговый диск, который шёл в составе ноутбука Lenovo ThinkPad P1: тип Intel SSDPEKNW512G8 [002C].



А это прикупленный позже 1-терабайтный диск Samsung SSD 980 1TB [1B4QFXO7].



Неожиданно Самсунг кроет Интел как бык овцу:
  • по чтению 2.9 против 1.3 гигабайт/сек,
  • по записи 464 против 62 мегабайт/сек.

То есть по чтению 2.2x, по записи 7.5x.
vak: (Default)
В продолжение темы: меряем эффективность WebAssembly. Берём известный тест Dhrystone и компилируем для WASI:
$ make
/opt/wasi-sdk-16.0/bin/clang -O -DNRUNS=100000000 -c -o dhry_1.o dhry_1.c
/opt/wasi-sdk-16.0/bin/clang -O -DNRUNS=100000000 -c -o dhry_2.o dhry_2.c
/opt/wasi-sdk-16.0/bin/clang -o dhrystone dhry_1.o dhry_2.o

$ file dhrystone
dhrystone: WebAssembly (wasm) binary module version 0x1 (MVP)
Запускаем:
Nanoseconds for one run through Dhrystone: 35.3    
Million Dhrystones per Second: 28.331
DMIPS: 16124.6
Для сравнения скомпилим в родной бинарник:
$ make
cc -O -DNRUNS=100000000 -c -o dhry_1.o dhry_1.c
cc -O -DNRUNS=100000000 -c -o dhry_2.o dhry_2.c
cc -o dhrystone dhry_1.o dhry_2.o

$ file dhrystone
dhrystone: Mach-O 64-bit executable x86_64
Запускаем:
Nanoseconds for one run through Dhrystone: 25.4    
Million Dhrystones per Second: 39.351
DMIPS: 22396.8
Получаем скорость 16124.6 на Wasm по сравнению с 22396.8 на родном Интеле. То есть потеря 28% производительности: неплохо! Вполне терпимо для для виртуальной машины такой сложности.
vak: (Знайка)
Меряем скорость процессора на макбуке с процессором M1 Pro:
Nanoseconds for one run through Dhrystone: 12.8    
Million Dhrystones per Second: 78.391
DMIPS: 44616.3

Меряем производительность GPU:
$ bin/genefer20 -n 9
genefer20 1.13.0 macOS gcc-4.2.1
Copyright (c) 2020, Yves Gallot
genefer20 is free source code, under the MIT license.

Command line: '-n 9'

0 - device 'Apple M1 Pro', vendor 'Apple', platform 'Apple'.

Running on device 'Apple M1 Pro', vendor 'Apple', version 'OpenCL 1.2 ' and driver '1.2 1.0'.
16 compUnits @ 1000MHz, mem=10922MB, cache=0kB, cacheLine=0B, localMem=32kB, constMem=1048576kB, maxWorkGroup=256.

radix-16, csize = 8, vsize = 8, 7 ms/b
radix-16, csize = 8, vsize = 16, 4 ms/b
radix-16, csize = 8, vsize = 32, 2 ms/b
radix-16, csize = 8, vsize = 64, 1 ms/b
Radix = 16, vector size = 64, chunk size = 8

GPU: 100%, CPU: 0.0292%, 26.2 GFN-9/sec
GPU: 100%, CPU: 0.0275%, 26 GFN-9/sec
GPU: 100%, CPU: 0.0276%, 26.3 GFN-9/sec
GPU: 100%, CPU: 0.0273%, 26.3 GFN-9/sec
GPU: 100%, CPU: 0.0269%, 26.3 GFN-9/sec
vak: (Default)
Решил измерить скорость графического процессора на своих компьютерах, в режиме вычислений (OpenCL). Нашёл простой тест, проверяющий простоту чисел методом Ферма. Исходники лежат здесь: genefer20.

В распоряжении имелись четыре компьютера:
  • Macbook Pro 2019 с двумя GPU: Intel UHD Graphics 630 и AMD Radeon Pro 560X
  • Mac mini 2021 с процессором Apple M1, он же GPU
  • iMac 2019 с GPU AMD Radeon Pro 575X
  • Ноутбук Lenovo P1 с GPU NVidia Quadro P1000
Вот что получилось:


Удивительно, но ноутбук с Убунту кроет все маки как бык овцу. Новейший чип Apple M1 как-то не особо выделяется.