LINUX.ORG.RU

Сообщения t0n

 

Pop!_OS не запускается после обновления

Форум — General

После обновления системы сломалась загрузка.

Система установлена рядом с Windows 11. Используется менеджер загрузки rEFInd. В нём есть такие пункты:

При выборе первого получается такой вывод – https://i.postimg.cc/CLGxm0jJ/PXL-20231020-175527010.jpg

Для второго – https://i.postimg.cc/QNWtK1C2/PXL-20231020-175252721.jpg

Помогите починить, пожалуйста.

 

t0n
()

Крайне медленно выполняются команды

Форум — Admin

Проблему обнаружил с yum. localinstall висит часами, постепенно отображая прогресс работы с одним из репозиториев

repo: [##################_______] 11381/15734

и медленно выполняя операции lseek, read, write.

yum repolist, dd так же висят.

$dd if=/dev/zero of=/tmp/output bs=8k count=10k
83886080 bytes (84 MB) copied, 406.826 seconds, 206 kB/s

Подскажите, как выяснить причину, устранить её? Может, с диском что-то?

RHEL 5.11

sudo fdisk -l

Disk /dev/cciss/c0d0: 146.7 GB, 146778685440 bytes
255 heads, 63 sectors/track, 17844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14       17844   143227507+  8e  Linux LVM

Disk /dev/cciss/c0d1: 146.7 GB, 146778685440 bytes
255 heads, 32 sectors/track, 35132 cylinders
Units = cylinders of 8160 * 512 = 4177920 bytes

Disk /dev/cciss/c0d1 doesn't contain a valid partition table

 , медленная работа

t0n
()

OpenMPI: группы, коммуникаторы, широковещание

Форум — Development

Задача состоит в широковещательной передаче от чётных процессов своих номеров нечётным процессам. Как я задумал реализацию:

  • Создаю группы вида 1 чётный + все нечётные (0,1,3,5), (2,1,3,5);
  • Создаю для них коммуникаторы;
  • Использую Broadcast в коммуникаторах.

Первые два пункта сделал, вроде бы. На бродкасте застрял. Похоже ранги созданных коммуникаторов не перебираются (rank_in_comm). Да и Invalid root в MPI_Bcast.

#include "mpi.h" 
#include <stdio.h> 
#include <stdlib.h>

int main(int argc, char *argv[]) 
{ 
  int rank, rank_in_comm, size, odd_count, *ranks, msg, i, j; 
  MPI_Status status; 
  MPI_Group world_group, *groups, group;
  MPI_Comm *comms, empty_comm;

  MPI_Init(&argc, &argv); 
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &size);
  MPI_Comm_group(MPI_COMM_WORLD, &world_group);

  // Odd array for making a group
  for (i = 0; i < size; i++)
    if (i % 2 != 0) odd_count++;
  ranks = (int*)calloc(odd_count + 1, sizeof(int));
  for (i = 1, j = 0; i < size; i += 2, j++) 
  {
    ranks[i - j] = i;
//    printf("%d ", ranks[i - j]);
  }
//  printf("\n");
  
  // Allocating memory for groups & communicators
  groups = (MPI_Group*)calloc(size - odd_count, sizeof(MPI_Group));
  comms = (MPI_Comm*)calloc(size - odd_count + 1, sizeof(MPI_Comm));

  if (rank % 2 == 0)
  {
    ranks[0] = rank;
    printf("Group %d: ", rank);
    for (i = 0; i <= odd_count; i++) 
      printf("%d ", ranks[i]);
    printf("\n");
  
    MPI_Group_incl(world_group, odd_count + 1, ranks, &groups[rank]);
//    if (groups[rank]) printf("+ group\n");
    MPI_Comm_create(MPI_COMM_WORLD, groups[rank], &comms[rank]);
  }
  else MPI_Comm_create(MPI_COMM_WORLD, MPI_GROUP_EMPTY, &empty_comm);
//  if (empty_comm) printf("+ comm\n");
  if (comms[rank])
  {
    MPI_Comm_rank(comms[rank], &rank_in_comm);
    if (rank_in_comm % 2 == 0)
    {
//      printf("%d ",rank_in_comm);
//      printf("%d ",rank);
      msg = rank;
      MPI_Bcast(&msg, 1, MPI_INT, rank, comms[rank]);
      printf("%d sended its rank\n", rank); 
    } 
    else 
    {
      MPI_Bcast(&msg, 1, MPI_INT, msg, comms[rank]); 
      printf("%d received %d\n", rank, msg); 
    }
  }
  //MPI_Comm_free(comms[]);
  //MPI_Group_free(groups[]);
  free(ranks);
  MPI_Finalize(); 
  return 0; 
}

Потом переделал:

  • Создаю группу с нечётными номерами;
  • Добавляю её в коммуникатор;
  • Создаю группу для 1 чётного номера;
  • Объединяю обе группы;
  • Шлю бродкаст внутри коммуникатора.

Но и тут тоже что-то неверно. Invalid communicator в MPI_Bcast.

#include "mpi.h" 
#include <stdio.h> 
#include <stdlib.h>

int main(int argc, char *argv[]) 
{ 
  int rank, rank_in_comm, size, odd_count, *ranks, msg, i, j, single_p[1]; 
  MPI_Group world_group, group, s_group;
  MPI_Comm comm;

  MPI_Init(&argc, &argv); 
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &size);
  MPI_Comm_group(MPI_COMM_WORLD, &world_group);

  // Odd array for making a group
  for (i = 0; i < size; i++)
    if (i % 2 != 0) odd_count++;
  ranks = (int*)calloc(odd_count, sizeof(int));
  for (i = 1, j = 1; i < size; i += 2, j++) 
  {
    ranks[i - j] = i;
//    printf("%d ", ranks[i - j]);
  }
//  printf("\n");
  

  printf("Process %d odd group: ", rank);
  for (i = 0; i < odd_count; i++) 
    printf("%d ", ranks[i]);
  printf("\n");

  MPI_Group_incl(world_group, odd_count, ranks, &group);
  MPI_Comm_create(MPI_COMM_WORLD, group, &comm);
  if (rank % 2 == 0)
  {
    single_p[1] = rank;
    MPI_Group_incl(world_group, 1, &single_p[1], &s_group);
    MPI_Group_union(s_group, group, &group);
    MPI_Group_size(group, &size);
    printf("Group size: %d\n", size);
    MPI_Group_rank(group, &rank_in_comm);
    int root = rank; printf("Root: %d, Rank in comm: %d\n", root, rank_in_comm);
      if (rank_in_comm % 2 == 0)
      {
        msg = rank;
        MPI_Bcast(&msg, 1, MPI_INT, root, comm);
        printf("%d sended its rank\n", rank_in_comm);
      }
      else
      {
        MPI_Bcast(&msg, 1, MPI_INT, root, comm);
        printf("%d received %d\n", rank_in_comm, msg);
      }
//    MPI_Group_excl(group, 1, &single_p[1], &group);
//    MPI_Comm_free(&comm);
//    MPI_Group_free(&group);
  }
  free(ranks);
  MPI_Finalize(); 
  return 0; 
}

Кто-нибудь может помочь разобраться?

 , , , ,

t0n
()

Сохранение изменений при пользовании Live CD (PelicanHPC) в VirtualBox?

Форум — General

В VirtualBox пользуюсь PelicanHPC для построения кластера. Система использует виртуальный диск, на котором сохраняются изменения пользовательского каталога.

Нужно установить Дополнения гостевой ОС (как минимум для использования буфера обмена). Через интерфейс VirtualBox этого сделать не удаётся, но через терминал получается. Однако для применения изменений нужна перезагрузка, после которой естественно никаких следов проведённых операций не остаётся.

Есть ли способ сохранить установленные пакеты? Или выходом будет только пересоздание образа загрузочного диска?

Нашёл пример конфигурационного скрипта, который будет выполняться при запуске системы. Но что туда надо записать для установки дополнений VirtualBox?

 ,

t0n
()

RSS подписка на новые темы