Обновить
73
Artem (tёmix) Solopiy@EntityFX

Iot Solutions Developer

59
Подписчики
Отправить сообщение
Словил ошибки компиляции
 line 7861: error #350:
          more than one operator "*" matches these operands:
            function template
                      "jtk::Expr<jtk::BinExprOp<jtk::Constant<T>, jtk::matrix<T, Container>::const_iterator, jtk::OpMul                                                                                                                      <jtk::gettype<T, T2>::ty>>> jtk::operator*(T2, const jtk::matrix<T, Container> &)"
            function template
                      "jtk::matrix<double, Container> jtk::symmetric_sparse_matrix_wrapper<T>::operator*(const jtk::mat                                                                                                                      rix<double, Container> &) const [with T=double]"
            operand types are: const
                      jtk::symmetric_sparse_matrix_wrapper<double> *
                      jtk::matrix<double, std::vector<double,
                      std::allocator<double>>>
      matrix<T, Container> r = b - A * out;
                                     ^
          detected during:
            instantiation of
                      "void jtk::preconditioned_conjugate_gradient(jtk::matrix<T, Container> &, T &, uint32_t &, const                                                                                                                       jtk::symmetric_sparse_matrix_wrapper<T> &, const TPreconditioner &, const jtk::matrix<T, Container> &, const jtk::matri                                                                                                                      x<T, Container> &, T) [with T=double, Container=std::vector<double, std::allocator<double>>, TPreconditioner=jtk::diago                                                                                                                      nal_preconditioner<double>]"
                      at line 7917
            instantiation of
                      "void jtk::conjugate_gradient(jtk::matrix<T, Container> &, T &, uint32_t &, const jtk::symmetric_                                                                                                                      sparse_matrix_wrapper<T> &, const jtk::matrix<T, Container> &, const jtk::matrix<T, Container> &, T) [with T=double, Co                                                                                                                      ntainer=std::vector<double, std::allocator<double>>]"
                      at line 4739 of
                      "/root/vectorforth/jtk/jtk.tests/mat_tests.cpp"

lcc: "/root/vectorforth/jtk/jtk.tests/../jtk/mat.h", line 7861: error #350:
          more than one operator "*" matches these operands:
            function template
                      "jtk::Expr<jtk::BinExprOp<jtk::Constant<T>, jtk::matrix<T, Container>::const_iterator, jtk::OpMul                                                                                                                      <jtk::gettype<T, T2>::ty>>> jtk::operator*(T2, const jtk::matrix<T, Container> &)"
            function template
                      "jtk::matrix<float, Container> jtk::symmetric_sparse_matrix_wrapper<T>::operator*(const jtk::matr                                                                                                                      ix<float, Container> &) const [with T=float]"
            operand types are: const
                      jtk::symmetric_sparse_matrix_wrapper<float> *
                      jtk::matrix<float, std::vector<float,
                      std::allocator<float>>>
      matrix<T, Container> r = b - A * out;
                                     ^
          detected during instantiation of
                    "void jtk::preconditioned_conjugate_gradient(jtk::matrix<T, Container> &, T &, uint32_t &, const jt                                                                                                                      k::symmetric_sparse_matrix_wrapper<T> &, const TPreconditioner &, const jtk::matrix<T, Container> &, const jtk::matrix<                                                                                                                      T, Container> &, T) [with T=float, Container=std::vector<float, std::allocator<float>>, TPreconditioner=jtk::diagonal_p                                                                                                                      reconditioner<float>]"
                    at line 4773 of
                    "/root/vectorforth/jtk/jtk.tests/mat_tests.cpp"

lcc: "/opt/mcst/lcc-home/1.25.17/e2k-v5-linux/include/smmintrin.h", line 155: warning #1444:
          function "__builtin_ia32_dpps" (declared at line 3929 of
          "/opt/mcst/lcc-home/1.25.17/e2k-v5-linux/include/e2kbuiltin.h") was
          declared deprecated
          ("The function may be slow due to inefficient implementation, please try to avoid it")
          [-Wdeprecated-declarations]
    ((__m128) __builtin_ia32_dpps ((__v4sf)(__m128)(X),                   \
              ^
 in expansion of macro "_mm_dp_ps" at line 5318 of
           "/root/vectorforth/jtk/jtk.tests/../jtk/mat.h"
        __m128 d = _mm_dp_ps(v1, v2, 0xf1);
                   ^
          detected during instantiation of
                    "void jtk::preconditioned_conjugate_gradient(jtk::matrix<T, Container> &, T &, uint32_t &, const jt                                                                                                                      k::symmetric_sparse_matrix_wrapper<T> &, const TPreconditioner &, const jtk::matrix<T, Container> &, const jtk::matrix<                                                                                                                      T, Container> &, T) [with T=float, Container=std::vector<float, std::allocator<float>>, TPreconditioner=jtk::diagonal_p                                                                                                                      reconditioner<float>]"
                    at line 4773 of
                    "/root/vectorforth/jtk/jtk.tests/mat_tests.cpp"

2 errors detected in the compilation of "/root/vectorforth/jtk/jtk.tests/mat_tests.cpp".
make[2]: *** [jtk/jtk.tests/CMakeFiles/jtk.tests.dir/build.make:132: jtk/jtk.tests/CMakeFiles/jtk.tests.dir/mat_tests.c

Лучший комментарий!

У меня есть только Core i7 2600 из самых мощных компов, работаю с ним уже 10 лет и все до сих пор летает (веб, разработка, игры не играю).

Да, Дмитрия обожаю, смотрю все его выпуски с 2014го.

Кстати, МЦСТ могли бы вместо своей линейки SPARC перейти на RISC-V. И деньги бы пошли, наверное.

Да, надо им сказать. Let's Encrypt пусть поставят.

Повторно перепроверю, поиграюсь флагами.

RISC-V интересна, на неё плохой код вертеть самое то, если сделают процессор 256 простых risc-v ядер, но серверного исполнения (даже без SIMD). PHP, NodeJS, Python будет нормально работать.

Это уже МЦСТшные цифры, купить тест не могу, хотя на нём они тестируют перфу компилятора.

Уточнил: там 2 плашки KSM24RD4/32MEI по 32 Гига.

Добавлю позже в описание про тип и каналы памяти.

Да, верно, но столько установлено, а поменять конфигурацию памяти я не могу =, работал удалённо.

Нет, это глюк распознавания проца, там 1 проц в бинарной трансляции, Geekbench падал, пришлось прокинуть ему кастомный /proc/cpuinfo.

Кому интересно как посчитать теоретические FLOPS:

How calculate FLOPS (v1 .. v3):

Single Precision: 4 FP ALUs * 4 Single operation * Cores * Frequency
Double Precision: 4 FP ALUs * 2 Double operation * Cores * Frequency

How calculate FLOPS (v4):

Single Precision: 6 FP ALUs * 4 Single operation * Cores * Frequency
Double Precision: 6 FP ALUs * 2 Double operation * Cores * Frequency

How calculate FLOPS (v5+ [128 bit SIMD]):

Single Precision: 6 FP ALUs * 4 Single operation * 2 SIMD * Cores * Frequency
Double Precision: 6 FP ALUs * 2 Double operation * 2 SIMD * Cores * Frequency

Example for Elbrus-16C: 6 ALUs * 2 DP * 2 * 16 Cores * 2e9 = 7.68e11 --> 768 GFlops FP64

У Эльбруса нет предсказателя переходов, переупорядочивания инструкций. Прямое исполнение, микрокода нет, это и требуется для защищённого исполнения кода, 3 аппаратных стека и т.д.

В считалках, в хранилках, БД сервера, защищённые компы, ну как Intel Itanium.

Да, само собой. Сам код не менял, игрался флагами сборки, профилирование компилятором LCC. Но вообще компилятор МЦСТ порой странно ведёт себя, да.

Ну и можно к объяснению блоков эту картинку прикрепить под кат: https://www.altlinux.org/Images.www.altlinux.org/d/d6/E2k_arch_m.png

Информация

В рейтинге
5 477-й
Откуда
Казань, Татарстан, Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, IoT
Старший
C#
.NET Core
.NET
SQL
Linux
Docker
JavaScript
Проектирование архитектуры приложений