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
RISC-V интересна, на неё плохой код вертеть самое то, если сделают процессор 256 простых risc-v ядер, но серверного исполнения (даже без SIMD). PHP, NodeJS, Python будет нормально работать.
У Эльбруса нет предсказателя переходов, переупорядочивания инструкций. Прямое исполнение, микрокода нет, это и требуется для защищённого исполнения кода, 3 аппаратных стека и т.д.
Словил ошибки компиляции
Да, есть: www.altlinux.org/Эльбрус/тесты/результаты#Тест_латентности_кеша
Лучший комментарий!
У меня есть только Core i7 2600 из самых мощных компов, работаю с ним уже 10 лет и все до сих пор летает (веб, разработка, игры не играю).
Да, Дмитрия обожаю, смотрю все его выпуски с 2014го.
Кстати, МЦСТ могли бы вместо своей линейки SPARC перейти на RISC-V. И деньги бы пошли, наверное.
Да, надо им сказать. Let's Encrypt пусть поставят.
Повторно перепроверю, поиграюсь флагами.
RISC-V интересна, на неё плохой код вертеть самое то, если сделают процессор 256 простых risc-v ядер, но серверного исполнения (даже без SIMD). PHP, NodeJS, Python будет нормально работать.
Тут спросите: https://t.me/e2k_chat
Это уже МЦСТшные цифры, купить тест не могу, хотя на нём они тестируют перфу компилятора.
Уточнил: там 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