Pull to refresh
34
0
Send message
В первую очередь тем, кто заботится о производительности своего приложения и хочет использовать максимум от своего «железа».
В частности, в HPC он очень востребован. А ещё тем, кто хочет получить хорошую поддержку, ибо баги есть в любом компиляторе, весь вопрос как быстро их решат для вас.
Я скоро напишу подробный пост про всё «новое» в лицензиях
Согласен, поправил поэтому.
Выделили бы жирным, как про «скриптовый» язык. Вы правы, фреймворками являются Spark и Hadoop. Cassandra попала для «кучности», но не вижу в этом проблемы. Да, можно дописать и MySQL, MSSQL и прочее.
А что сколько злости? Всё я осилил, я подумал, что акцент на Scala. То, что он скриптовый — не совсем верно, лучше поставить это в кавычки.
«To some, Scala feels like a scripting language» — я эти some.
MySQL, MSSQL прочее- это просто базы данных. В том же Spark'е кроме SQL имеется ряд библиотек и средств (MLLib, GraphX, Spark Streaming).
Это больше, чем просто СУБД. Аналогично с Hadoop'ом.
А в чем WTF? Spark разработан с помощью Scala и он является основным языком.
Кроме того поддерживаются Python и Java, R. Можно почитать подробнее здесь:

www.scala-lang.org/what-is-scala.html
www.quora.com/Why-is-the-default-language-for-Spark-MlLib-Scala-and-not-Python-or-Java
spark.apache.org/docs/1.2.1/mllib-guide.html
Не смотрел статью Криса, но общая идея — не доводить до использования DDR, потому как медленная она. Желательно, чтобы доступ был последовательный и данные были в кэше.
Интересная задача, вполне выполнимая. Вот только нас интересует правильный баланс, а его скрипту понять сложно. Но облегчить жизнь такой скрипт мог бы.
Не совсем перевод, но этот документ моих коллег по команде я использовал как базу.
Я конечно игрался на примерах со всеми этими опциями, но не стал включать результаты. Дело в том, что они очень зависят от самого кода. Скажем у меня опция, отключающая передачу аргументов через регистры уменьшала размер даже больше, чем векторизация. Всё очень индивидуально, и нужно смотреть на код, чтобы делать выводы.
Ну, в таком случае, если верить приведенной вами инфографике и этой статье MSDN, как минимум 41% (36% VS и 5 % Intel) поддерживают alignas только в последних релизах (VS2015, Intel Compiler 15.0). Вряд ли все уже поставили себе VS2015, не правда ли? На gcc даже не смотрел к какой версии стали поддерживать, её попроще достать.
А вообще, учитывая «небесплатность» некоторых компиляторов (в частности от Intel), разработчики далеко не всегда спешат ставить самую последнюю версию, предпочитая оставаться на какой-то одной по 2-3 года. Я к тому, что ещё не у всех стоят версии компиляторов, поддерживающие alignment фичи из С++11. Не вижу в этом ничего удивительного.
Компилятор часто делает несколько веток или пытается выравнять через peel loop в случаях, когда ничего не знает о выравнивании.
Ну и как я говорил, он не стесняется использовать невыравненные инструкции, потому что по скорости они на современных процессорах не проигрывают выравненным (при условии выравненных данных).
Можно тоже почитать мою статью про векторизацию в Интеловском компиляторе здесь.
Да, векторизует, и да, вполне вероятно, что этого будет достаточно, нужно только ещё перед циклом сказать компилятору через директиву, что данные выравнены.
Спасибо, очень дельное замечание. Стоит только отметить, что поддержка C++11 тоже весьма ограничена в компиляторах, поэтому проблема при переходе на другой компилятор тоже возникнет, но в будущем более правильное решение для С++. Скажем, alignas начали поддерживать в Intel C++ только с версии 15.0 (aka Intel Parallel Studio XE 2015 Composer Edition for C++).
Алгоритм «урезания» заложен в стандарте IEEE 754, и компилятор его поддерживает. Но если вы посмотрите пост, на который я ссылался в самом начале, то увидите пример, когда всё в соответствии с стандартом, а результат зависит от порядка суммирования, потому что критичны случаи, когда складывается большое и очень маленькое число.
В самом начале я давал ссылку на статью, где проблема описана намного шире и детальнее. Здесь речь в основном о частном случае, а именно использовании OpenMP и возможностей по контролю воспроизводимости там.
Всё просто — так быстрее!

Information

Rating
Does not participate
Registered
Activity