Pull to refresh
133
0
Сергей Ю. Каменев @inetstar

Алгоритмист. Автор. Поставщик SSD, RAID, серверов.

Send message

И сколько попугаев даёт 9950X?

Кстати, есть Эпики второго поколения 64 ядра, примерно за 65т. Матери проскакивают от 20. На Али одно время за 20 комплект отдавали: мать, эпик 8-16 ядер, память ~32gb.

Но прошло полгода-год и цены взлетели в 2 раза. Я думаю, выгодное предложение нужно ловить. И вникнуть в каких случаях третий эпик заведётся в матери первого поколения.

Я мать H12SSL-i на Авито за 33т брал год назад, новую. Но цены сошли с ума.

Тут смотря о каком поколении говорить. H11SSL-i найти можно дешево, в неё можно второго поколения воткнуть Эпик. Тоже относительно дешёвый.

В теории даже третьи эпики должны вставать в H11SSL-i. Но я не пробовал, а сам производитель говорит только о втором поколении, чтобы лучше современные железки продавались.

Наверное, тут нужны эксперименты по втыканию третьих эпиков в платы от первых. AMD делало технически так, чтобы это было возможно, так как Эпик - это система на чипе.

Ну, а если хочется 64 ядра / 128 потоков за вменяемые деньги, то вряд ли есть альтернативы Эпикам.

На Linux всё отлично. Все потоки работают. И под Windows работают. Только не под всеми программами.

И ещё нужна информация как установить кастомный циферблат. Записать в папку уже не работает с Zepp Life.

Для того, чтобы far запускался без разархивации на Calculate Linux (российский дистрибутив на базе Gentoo) я делаю так

far2l_2.6.3-spvkgn_staging-x86_64.run --noexec --keep

Далее в /usr/local/bin создаю файл far c таким содержимым:

#!/bin/bash
/usr/local/bin/far2.6.3/far2l.sh $1 $2 $3 $4 $5 $6

сам файл far2l.sh содержит следующее:

#!/bin/bash
pushd "$(pwd)"
cd "$(dirname "$0")"
./far2l
popd

Можно ли этот процесс как-то упростить?

Я пробовал создавать символьную ссылку на far2l. Не работает.

Когда делать hardlink (твердую ссылку) то же не работает.

И в таком стиле делал файл /usr/local/bin/far:

#!/bin/bash
/usr/local/bin/far2.6.3/far2l $1 $2 $3 $4 $5 $6

Тоже не работает.

И ещё вопрос. В каких случая нужно использовать файл с glibc. На очень статой машине, которая не обновлялась лет 10 запустилась обычная версия far.

Спасибо большое за примеры параллельного кода!

Когда я компилировал с помощью gp2c, то увидел, что libpari имеет свои средства для параллелизации. А точнее итераторы для параллельного исполнения parfor_t. И функции parfor_init, parfor_stop. Но у меня не вышло их использовать без доработки.

Что нагенерил gp2c
// То, что должно работать параллельно
GEN BruteForcePart(GEN pub, GEN cnt, GEN nMaxLevel)
{
  pari_sp ltop = avma;
  setrand(gpextern("od -vAn -N8 -tu8 < /dev/urandom"));
  /* Моя секретная функция */
  avma = ltop;
  return gen_0;
}

// Для parfor_init нужно замыкание. Оно создаётся в виде функции
GEN anon_0(GEN i, GEN pub, long prec)
{
  pari_sp ltop = avma;
  GEN p1 = gen_0;
  p1 = BruteForcePart(pub, nMaxCalcInThread, nMaxX, prec);
  p1 = gerepilecopy(ltop, p1);
  return p1;
}

// В этой функции мы запускаем parfor в GP-скрипте
void transpose(GEN pub, GEN a)         /* void */
{
  pari_sp ltop = avma;
  GEN nMaxCount = gen_0;
  
  nMaxCount = gmulgs(default0("nbthreads", NULL), 100);
  {
    pari_sp btop = avma;
    while (1)
    {
      {
        parfor_t iter;    /* parfor */
        parfor_init(&iter, gen_1, nMaxCount, strtoclosure("anon_0", 1, pub));
        {
          pari_sp btop = avma;
          GEN i = gen_0, r = gen_0, p1 = gen_0;
          while ((p1 = parfor_next(&iter)))
          {
            r = gcopy(gel(p1, 2));
            i = gcopy(gel(p1, 1));
            if (gequal0(r))
              continue;
            printf0("%s %s %d %d %d %d %d %s\n", mkvecn(8, gel(a, 1), gel(a, 2), gel(r, 1), lift(gel(gel(r, 2), 1)), lift(gel(gel(r, 2), 2)), lift(gel(pub, 1)), lift(gel(pub, 2)), gel(a, 5)));
            parfor_stop(&iter);
            goto label1;
            if (gc_needed(btop, 1))
              gerepileall(btop, 3, &i, &r, &p1);
          }
        }
      }
      avma = btop;
    }
    label1:;
  }
  avma = ltop;
  return;
}

Этот код у меня не заработал. Подозреваю, что дело в том, что замыкание должно быть создано с помощью динамической компиляции GP-кода. Я не разобрался, как можно скомпилированную Си-функцию подсунуть в parfor_init.

А как в far менять символические ссылки? В mc есть такая возможность. В фар пока не увидел

Я имел ввиду темы. Чтобы можно было за секунду изменить все цвета.

Спасибо за ответ и ссылку.

Я добавил раздел 0, где написано кому может понадобиться PARI. А также добавил ещё раздел 4.5, где обзорно пробежался по другим функциям параллельности в PARI.

Если сравнивать с C#, то порог вхождения несопоставим с PARI и значительно выше у C#.

C# - это язык общего назначения, а PARI - вещь заточенная для быстрого решения математических/вычислительных проблем.

Подскажите, пожалуйтса, есть ли возможность менять цветовую схему, как в mc?

CC = cc
INCDIR = /usr/include/pari
LIBDIR = /usr/lib64
CFLAGS = -O -I$(INCDIR) -L$(LIBDIR)
$(CC) $(CFLAGS) -o trans2c trans2c.c -lpari -lm

Я нашёл такую рекомендацию где-то в сети. Правда, для Linux.

Фактически, я часто просто вывожу в критической секции результаты параллельных функций в поток вывода или файл, а потом анализирую. Очень просто. Никаких заморочек с общими переменными. Вообще общие переменные использую только для чтения, как константы.

Но в критической секции можно результаты функций в какой-то глобальный массив записывать.

Кстати, о самой фразе, которую вы процитировали. Это разные предложения.

Язык GP просто облегчает задачу, когда нужно что-то по-быстрому посчитать.

Я, например, могу написать параллельный код на Go или Python, но на GP для меня будет проще, если мне не нужны какие-то тонкости.

Я так понял вы решили начать по хардкору, написав на Си с использованием libpari. Тут, действительно, потребуется больше времени.

Проще всего скомпилировать в библиотеку самую тяжёлую часть и загружать из pari. И даже это нужно делать только тогда, когда вся логика уже безукоризненно отлажена, а вычисления реально занимают часы или дни.

Параллельные вычисления в языках общего назначения - это сложно и если нужно за полчаса написать программу, то вы не сделаете этого никогда не запускав C# до этого. В PARI достаточно, чтобы каждая процедура была автономной для параллельности.

А c PARI сделаете. А учитывая, что PARI поддерживает неограниченную точность и огромное количество математических функций, то задача ещё упрощается.

Сколько ещё по-вашему будут хайповыми мини-аппы?

Похоже ваш код так и делает, как я предложил. Извините, торопился, понял неправильно.

Да, типа как таблицу квадратов: n^2, n^4, n^8, n^16, n^32. В общем случае n^(2^i). Но в принципе можно, наверное, извратиться, чтобы и без таблицы вовсе. Или можно таблицу сделать в стеке и рекурсией вынимать из неё значения.

Так меньше всего действий. Всё через умножение.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity