LINUX.ORG.RU

Избранные сообщения runtime

Странное использование _mm_prefetch

Форум — Development

Разбираю пример из статьи What Every Programmer Should Know About Memory про векторные оптимизации при умножении матриц:

#include <stdlib.h>
#include <stdio.h>
#include <emmintrin.h>
#define N 1000
double res[N][N] __attribute__ ((aligned (64)));
double mul1[N][N] __attribute__ ((aligned (64)));
double mul2[N][N] __attribute__ ((aligned (64)));
#define SM (CLS / sizeof (double))
int
main (void)
{
  // ... Initialize mul1 and mul2
  int i, i2, j, j2, k, k2;
  double *restrict rres;
  double *restrict rmul1;
  double *restrict rmul2;
  for (i = 0; i < N; i += SM)
    for (j = 0; j < N; j += SM)
      for (k = 0; k < N; k += SM)
        for (i2 = 0, rres = &res[i][j], rmul1 = &mul1[i][k]; i2 < SM; ++i2, rres += N, rmul1 += N)
        {
          _mm_prefetch (&rmul1[8], _MM_HINT_NTA);
          for (k2 = 0, rmul2 = &mul2[k][j]; k2 < SM; ++k2, rmul2 += N)
          {
            __m128d m1d = _mm_load_sd (&rmul1[k2]);
            m1d = _mm_unpacklo_pd (m1d, m1d);
            for (j2 = 0; j2 < SM; j2 += 2)
            {
              __m128d m2 = _mm_load_pd (&rmul2[j2]);
              __m128d r2 = _mm_load_pd (&rres[j2]);
              _mm_store_pd (&rres[j2], _mm_add_pd (_mm_mul_pd (m2, m1d), r2));
            }
          }
        }

  // ... use res matrix
  return 0;
}

Не до конца понимаю идею с _mm_prefetch. Как я прочитал из документации _mm_prefetch позволяет подсказать процессору как кешировать те или иные данные. Поскольку мы итерируемся блоками по SM элементов, то очевидно, что пытаться закешировать элемент, следующий за rmul1 не имеет смысла, т.к. использовать мы его все равно не будем, а попытка кеширования сбросит полезные кеши для других элементов. Поэтому мы помечаем элемент как Non-Temporal Data. Вопрос в том, почему мы помечаем адрес &rmul1[8]? Т.е. мы берем адрес 8-го double-элемента в rmul1 и помечаем его как Non-Temporal. Не понимаю почему именно 8го. Может быть это как-то связано с выравниванием по 64 байта, которое указано в начале программы?

 ,

Goganchic
()

Серые IP и входящий TCP - возможно или нет?

Форум — Development

Осталось решить последнюю задачку - есть сервис на манер turn’а, который связывает два ПК за nat’ами, соотв сервис знает внешние ip обоих ПК и раздаёт их [как портовая шалюха] бережно информирует компуктеры о том что у их [полового] сетевого партнера ip поменялся (если динамический).
Задачка - завернуть часть трафика через tcp (важно) напрямую между двумя ПК, притом сервером является только один из них и он может оказаться с серым IP за NAT’ом провайдера.
В случае с белым динамическим все просто и работает, в случае с udp иногда (не у всех провайдеров) помогает кинуть пакет ПК «сервером» в псевдоturn из нужного порта и ждать пакеты от ПК «клиента» (которые летят в Ip и порт из которого они прилетели в turn - я так понимаю по похожей логике работает stun) а вот как завернуть TCP чот не могу придумать - пров же сразу схлопнет порт на внешнем адресе когда когда клиент загасит подключение к псевдоturn’у?
Это вообще решаемая задача? Может можно как-то «передать» само «соединение» или как-то параллельно попользовать порт который nat держит открытым при наличии связи ПК «сервер»-псевдоturn?

 , ,

rukez
()

Как спасать нерезкие снимки текста?

Форум — Talks

Следуя опыту великих дигитализаторов сканирую книги с помощью двух мыльниц Canon с CHDK. Получается замечательно, распознаётся релиабильно, но есть проблема - у одного аппарата поврежден объектив (или ещё что-то, он вообще б/ушный ударник) и один из углов кадра всегда вне фокуса.

К сожалению, я уже отсканировал этим фотоаппаратом несколько книг. Они вполне читаемы, даже с этим дефектом - лишь последние слова в нескольких строках размыты, из-за чего не оцрятся.

Можно ли исправить эту проблему хитрой обработкой изображения?

P.S. флатбед сканер не предлагать, это неоправданные затраты по времени. Из другого (полностью исправного) фотоаппарата страницы получаются вполне себе на уровне Цифровой Национальной Библиотеки «Полона». К тому же, чувствительные к разрешению вещи вроде карт и схем сканирую отдельно на обычным плоским сканере (если не лень если они достаточно важны и не продублированы в других источниках в гораздо лучшем качестве, как большинство фотографий, например)

Вопрос самого неисправного фотоаппарата уже решён, и в дальнейшем он не будет использоваться.

Часто задаваемые (и вполне резонные) вопросы

Нет ли здесь 6.2? Нет. Мои оцифровки никогда нигде не выкладывались. Это не по пиркоду, за то соответствует определённым в польском Законе об авторских правах принципам разрешённого законом частного использования (~fair use), вследствие чего не беспокоят ни лоеры правообладателей, ни пан аспирант, ни администрация говнообменников (последнее самое печальное - у нас не прижились торренты, самой большой трекер в стране был private и платным, итог немного предсказуем - в 2009 году канул в Лету, сидеры разбежались, сцена умирает. Лишь студентота активно обменивается академической литературой через говнообменники, причем платные.

Тогда какой смысл? Возможность создать полнотекстовый индекс используемой мною литературы - бесценна. Из-за этого мне ничуть не жалко ни полчаса потраченного с фотоаппаратом, ни часа-двух с плоским сканером.

Почему фотоаппараты? Камера, смотрящая перпендикулярно в страницу, это state of the art в этом деле. Конечно в библиотечных сканерах и камеры хорошие, и равномерное освещение, и калибровка цветов - но для самого текста всё это не особо-то и нужно.

 , ,

token_polyak
()

Hello world без ОС

Форум — Development

здрасьте здрасьте люди добрые


 section .text
global main
main:
movq $'1', %rcx
movq $4, %rax
movq $1, %rbx
movq $1,%rdx
int $0x80 

вот это я хочу скомпилировать получить машинные инструкции и записать их в файл f.bin после с помощью dd if=f.bin of=/dev/sdb

записать на флешку и запустить на голом железе. что мне нужно добавить в код на ассемблере, чтобы получить правильный машинный код, который выведет на экран '1'?

 

Assembler
()

Tech Talks @NSU — Автоматическое доказательство теорем

Форум — Development

Всем привет!

На следующей неделе у нас лекция для математиков и им сочувствующих.

18 ноября, 19:30: Автоматическое доказательство теорем (Ренат Идрисов, к.ф.-м.н., ИСИ СО РАН)

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

Как именно работают системы автоматических доказательств и что за языки лежат в их основе? Похоже ли построение автоматических доказательств на программирование? Могу ли я доказывать свои любимые теоремы на C или C++?

В рамках лекции прозвучат ответы на эти и другие вопросы, а также будет проведен небольшой вводный инструктаж по Coq

Лекция пройдет в аудитории 223 нового спорткомплекса НГУ, вход свободный.

Онлайн-трансляция будет доступна вот тут: https://plus.google.com/events/cdtakpptlcidhk43o2sq7se3pqo

Все подробности, как всегда, на http://techtalks.nsu.ru

 ,

ymn
()

Разыскивается книга про то, как научиться программировать

Форум — Development

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

P.S. Стоит ли читать «SICP, HtDP, PCL», которые мне посоветовал анонимус?

 , , ,

evilmanul
()

Взгляните на запрос

Форум — Development
with recursive temp1 (id, parent_id, value, type)
as (
    select
        t1.id,
        t1.parent_id,
        t1.value::text,
        t1.type
    from address as t1
    where t1.id = 10
    union
    select
        t2.id,
        t2.parent_id,
        t2.value || ', ' || temp1.value,
        t2.type
    from address as t2 inner join temp1 ON (temp1.parent_id = t2.id)
)
select
    value
from temp1
where type > 'locality'
order by type desc
limit 1;

Добрый день, подскажите, пожалуйста, как сделать так, что t1.id можно было задавать через where ко всему выражению? (или как бы так его превратить во view?)

 , , рекурсивный запрос

Y
()

Помогите найти язык программирования

Форум — Development

Помогите пожалуйста найти язык программирования, в котором есть мощные средства метапрограммирования, но при этом он мог уметь генерировать высокопроизводительный код real-time приложений. Область применения - обработка видео потоков, рендеринг графики, элементы AI. Интерсуют именно возможности языка, а не наличие готовых библиотек и т.п. (приглянулся racket, но скорость...)

 , ,

elf80lvl
()

почему haskell используют совместно с erlang?

Форум — Development

Уже не в первый раз вижу миграцию с питона на haskell + erlang. Например, в яндексе и селектел. Зачем нужно сразу два яп?

 , ,

true_admin
()

Опубликован Google Common Lisp Style Guide

Форум — Development

Опубликован Google Common Lisp Style Guide:

http://google-styleguide.googlecode.com/svn/trunk/lispguide.xml

 , ,

gensym
()

Слава роботам!

Форум — Talks

Американская компания Rethink Robotics разработала робота, который может произвести настоящую революцию в промышленности. Механический рабочий по имени Бакстер (Baxter) создан специально для того, чтобы выполнять самую разнообразную работу на сборочных линиях.

Он может перемещать предметы, упаковывать, распаковывать, сортировать, полировать и совершать множество других действий. При этом универсальному роботу не требуется интеграция в производство. Всё, что нужно: установить Бакстера у конвейера, выбрать подходящие захваты и показать, что делать.

http://www.vesti.ru/doc.html?id=912117&cid=2161

 бендер

DNA_Seq
()

Oracle и Postgres: маны по диалектам и извращениям

Форум — Development

Господа,

Посоветуйте манов по сабжу, описывающих как можно больше всяких хитрых извращений с их базовым языком запросов (не касаясь тонкостей PL/SQL, например).

Цель: нужно будет узнать толк в разнице между разными версиями Оракла и Постгреса и портированием в точные эквиваленты между их базовым синтаксисом.

«Читай официальную документацию» - да, уже. Но к оффдокам хотелось бы еще какой-нибудь вдохновляющей литературы по теме.

(Пример: помню, была серия книжек какого-то хардкорного sql-щика, в которых рассказывалось, как закодить на sql всё что угодно от хэлловорлда и высоконагруженной базы до веб-приложения и анализатора текстов. А вот как зовут чувака и те книжки — уже не помню. Тогда это казалось такой ненужной ерундой. Да и сейчас, в общем-то... :).

Спасибо

UPD: хотя, если есть книжки аналогичного смвысла про PL/SQL и PL/pgSQL - тоже хотеть

stevejobs
()

Ментальные карты

Форум — Talks

Кто пользовался, какие плюсы и минусы? Linux тут при том, что поставил freemind, но не знаю зачем.

 

avertex
()

пролог в лиспе

Форум — Development

Привет.

Подскажите, в какой реализации лиспа хороший встроенный пролог?

Спасибо.

 ,

kvitaliy
()

Человеческое метапрограммирование

Форум — Development

Подскажите кто-нибудь ЯП с развитой метасистемой, только нормальный, а не лисп.

Ndulu
()

Книги по базам данных

Форум — Development

Решил заполнить пробелы в знаниях и почитать хорошей литературы по БД. Погуглил, видимо неплохой вариант - «Теория и практика построения баз данных (Д. Кренке)». Но, к сожалению, я что-то не смог найти ее в продаже (ни бумажной, ни электронной). Есть только в посредственном качестве в djvu. Vожет какую другую книгу посоветуете? Или знаете где эту добыть?

theos
()

Радиоэлектроника

Форум — Talks

Посоветуйте книжку по основам радиоэлектроники, которую можно скачать бесплатно без смс в правильном формате (fb2/epub)

nbdarvin
()

META 2012

Форум — Talks

Уже третий день как у нас в Переславле-Залесском на базе Института Программных Систем РАН (ИПС РАН) проходит третья международная конференция, посвященная метавычислениям: META2012.

Сайт конференции: http://meta2012.pereslavl.ru/

Краткий обзор тем конференции:

  • Дистилляция
  • Частичные вычисления
  • Смешанные вычисления
  • Инверсные вычисления
  • Суперкомпиляция
  • Окрестностное тестирование
  • Другие варианты применения вышеназванных методов в тестировании, верификации и обработке программ

Полный список докладов тут: http://meta2012.pereslavl.ru/papers/accepted-papers.html

Сборник в PDF: http://rghost.net/39087935

На странице с программой можно еще скачать презентации докладов Нила Джонса: http://meta2012.pereslavl.ru/program/program.html

// Скалофагам будет приятно знать, что в российских разработках, связанных с суперкомпиляцией, сейчас активно используется Scala.

// Докладов, в которых использовался бы Рефал на этой конференции, увы, нет.

 метавычисления, ,

buddhist
()

Помогите понять принцип решения задачи

Форум — Talks

Доброго времени суток! Есть задача и нет идеи как её решать. Гуглом пользовался, но получить внятного алгоритма так и не смог. Собственно, сама задача:

В крупном международном аэропорту во время пересадки встретились четверо туристов – Герман, Роман, Франк, и Свен. Их фамилии – Фишер, Нагель, Миллер и Шепард. Каждый из них путешествует из одной страны (Германия, Румыния, Франция, Швеция) в другую (Германия, Румыния, Франция, Швеция). Место отправления и место назначения каждого не совпадает с его именем. Определите, кого как зовут, откуда и куда они направляются. Известно, что:

1) Роман приехал не из Франции.

2) Герман направляется в страну, откуда приехал Фишер.

3) Свен приехал из страны, куда направляется Нагель.

4) Шепард приехал из страны, чье название совпадает с именем человека, который направляется во Францию.

5) Миллер направляется в страну, чье название совпадает с именем человека, который приехал оттуда, куда собрался Роман.

Заранее спасибо за помощь!

kirich
()

Java изменить директорию

Форум — Development

Как в java менять директорию в которой выполняется процесс?

 

TDrive
()