Как стать автором
Обновить
26
0
Тензин Константин @tenzink

Пользователь

Отправить сообщение
Насчёт работы с бубном не уверен, а вот с командной строкой пообщаться придётся:

chrome.exe -user-data-dir=«PATH_TO_NEW_PROFILE_DIR»

При этом каталог PATH_TO_NEW_PROFILE_DIR создаётся, если не существовал до этого.
Для программиста путь несложный, но для конечного пользователя неприемлемый.
Для chrome тоже можно завести несколько profile'ов и сделать ярлыки для разных аккаунтов.
Правильный пример придумать сложно. Навскидку придумывается ещё 3 варианта (6 если с OpenMP).
Обзову исходный вариант вариантом 0.

1. Хранить непрерывный кусок памяти. Тогда внутренний цикл:
double res = 0;
for (int k = 0; k < size; k++)
{
res += m1[i*size+k] * m2[k*size+j];
}
result[i*size+j] = res;

2. Хранить непрерывный кусок памяти. Перед перемножением делать inplace (или outplace)
транспонирование второй матрицы, если inplace, то повторно транспонируем перед выходом.
Тогда внутренний цикл:

double res = 0;
for (int k = 0; k < size; k++)
{
res += m1[i*size+k] * m2[j*size+k];
}
result[i*size+j] = res;

3. Помесь 0 и 2. Хранить также как в 0, перестранспонировать перед перемножением.

Результаты моего тестирования.
size 0 1 2 2+OMP
2 6.78E-07 1.52E-06 1.66E-06 0.00192453
3 9.10E-07 1.17E-06 1.62E-06 0.000102599
4 9.88E-07 1.31E-06 1.61E-06 1.94E-05
6 2.39E-06 2.46E-06 2.98E-06 1.93E-05
8 3.32E-06 3.72E-06 4.72E-06 0.00010015
12 9.30E-06 8.63E-06 8.73E-06 0.000108805
16 1.90E-05 1.72E-05 1.59E-05 0.000129605
24 4.21E-05 5.10E-05 4.39E-05 4.84E-05
32 0.000105829 0.000110913 0.000111641 8.29E-05
48 0.000389326 0.000372065 0.000350789 0.000482888
64 0.00118052 0.0010987 0.000770939 0.000408367
96 0.0054682 0.00384442 0.00249066 0.00257223
128 0.0227045 0.00868955 0.00487929 0.0035134
192 0.0923321 0.0412351 0.0160446 0.00996233
256 0.214051 0.0981237 0.039727 0.0274157
384 0.835667 0.593905 0.171508 0.103088
512 1.95026 9.50343 0.425949 0.292215
768 6.60759 32.5627 1.43155 1.04692
1024 15.6639 76.2935 3.35798 2.59858

Извиняюсь за форматирование :(

Как видно вариант 1 оказывается очень плохим. Он проигрывает на больших данных (>=512) варианту 0 за счёт
нелокализованности данных второй матрицы.
Вариант 2 хочет это исправить, и действительно, он лучше на больших данных (>=64), чем оба варианта.
2+OMP ещё быстрее. Так на 1024 выигрыш почти в 6 раз по сравнению с 0.
Вариант 3 я не тестировал, но ожидаю порядок как в 2.
К сожалению, в данном конкретном случае результаты малоинтересны.
Как уже заметили выше, кусок на C++ написан плохо.
Замечу, что с python'ом идёт отличный tutorial. Всем очень рекомендую.

P.S. Это не умаляет ценности написанного :)
Например, TeXnicCenter (http://www.toolscenter.org/)
Очень хороша связка Emacs + AUCTex.
Не все. После 2-х неудачных попыток запомнить номер, забил на ICQ :)
Ну телевизор вообще смотреть не стоит. По крайней мере "стандартные" каналы. Вот DVD, что-то типа Discovery ещё ничего...
Вот прибыльность и пугает. Не хочется, чтобы ребёнку с детства промывали мозги рекламой.
Думаю, что не проблема научить секретаршу пользоваться LaTeX. Грамотный админ должен установить софт + тренинг на один рабочий день.

Другое, что для мощь LaTeX не нужна для тех документов, которые делает секретарша. Word обычно подходит (odt/sxw, один чёрт, подойдут), тем более что с ним проще.
Реальная проблема с LaTeX следующая (с ней сталкивался):
- я пишу документ для человека, но не могу его заставить поставить TeX (большой начальник :) )
- посылаю ему PDF
- он хочет в документе внести правки, а не судьба
- с Word'ом этого нет. Здесь просмотрщик == редактор
Очень грамотное решение использовать распределённую VCS. Сам использую mercurial.
Если хоть один репозиторий выживет, то всё ok. С subversion нужно постоянно backup'ить.

Как вариант ещё, хранить репозиторий в сети. Например на assembla.com можно хранить меркуриаловские репозитории.
12 ...
24

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность