Réduire la complexité avec le parallélisme


10

Est-il possible (barre oblique pouvez-vous fournir un exemple) de réduire la complexité de calcul d'un problème en utilisant un algorithme parallèle qui ne nécessite pas un certain nombre de processeurs par rapport à la taille d'entrée?


Pourriez-vous clarifier un peu votre question? Nombre de processeurs pratiquement constant -> au mieux, vous pouvez améliorer le temps de fonctionnement d'un facteur constant. Je suppose que ce n'est pas ce que tu veux dire?
Jukka Suomela

"Pas par rapport à la taille d'entrée". Que voulez-vous dire exactement par là? O (1)?
Aryabhata

Je veux dire les processeurs O (1). @Jukka: c'est ce que je veux dire, la complexité de calcul ne peut-elle être réduite qu'en ajoutant un certain nombre de processeurs par rapport à la taille d'entrée?
Nick Larsen

Réponses:


12

Si vous parlez de processeurs O (1), alors non, la complexité de calcul ne peut pas être réduite.

Alignez simplement le travail effectué par chaque processeur et faites-le sur un seul. Si vous êtes préoccupé par la synchronisation, alors un processeur peut facilement émuler cela.


Merci pour la réponse rapide. Sans créer une autre question pour quelque chose d'aussi étroitement lié, est-il possible de réduire la complexité de calcul en utilisant un certain nombre de processeurs par rapport à autre chose que la taille d'entrée?
Nick Larsen

2
@Nick: Quelque chose d'autre que la taille d'entrée est O (1) :-)
Aryabhata

Merci, j'avais du mal à penser à autre chose, mais je voulais en être sûr.
Nick Larsen

WRT si vous pouvez atteindre une accélération avec un certain nombre de processeurs qui croît avec une certaine quantité autre que la taille d'entrée, je ne suis pas sûr que la réponse soit «non». Il y a des problèmes dont la complexité augmente avec certains paramètres qui sont différents (bien que évidemment pas indépendants de) de la taille d'entrée. Et si pour un problème de graphique, je vous autorisais un certain nombre de processeurs liés à la largeur d'arbre du graphique, par exemple?
Aaron Roth

@Aaron: Si le nombre de processeurs autorisés est lié à l'entrée d'une manière ou d'une autre, alors oui, nous ne pouvons pas dire "non" avec certitude. Bien sûr, à moins que nous ne soyons spécifiques, c'est une question vide de sens.
Aryabhata

6

Il existe un domaine émergent d'algorithmes parallèles à gros grains, où le temps d'exécution (et d'autres consommations de ressources de calcul) est considéré comme une fonction de paramètres indépendants n (taille d'entrée) et p (nombre de processeurs), souvent sous l'hypothèse naturelle n >> p .

Un bon point de départ est de google pour "parallélisme synchrone en vrac".


La classe de complexité peut-elle changer si vous autorisez le matériel à évoluer avec les données d'entrée? J'ai du mal à google ça en tant que profane: /
Gerenuk


1

Si vous distribuez la tâche à (où est une constante) processeurs.ppp

La complexité peut alors être où .c = 1 / pO(f(n)/p)O((1/p)f(n))O(cf(n))O(f(n))c=1/p

Ce que nous utilisons le parallélisme est de réduire le temps d'exécution de la tâche, c'est-à-dire que si une tâche prend secondes, alors avec le parallélisme, cela peut prendre .T / p + S o m e M o r e T i m eTT/p+SomeMoreTime

Mais AUCUN changement de complexité.


1

"vous ne pouvez pas le calculer avec 1 processeur, mais vous pouvez calculer avec 2".

Ce n'est pas possible, en supposant que les deux processeurs sont des MT ou un modèle moins puissant. De wikipedia, pour les machines multi-bandes:

Ce modèle semble intuitivement beaucoup plus puissant que le modèle à bande unique, mais toute machine à bandes multiples, quelle que soit la taille du k, peut être simulée par une machine à bande unique en utilisant seulement quatre fois plus de temps de calcul (Papadimitriou 1994, Thrm 2.1)

Également pour les machines multi-têtes, de "Simulation linéaire du temps des machines multi-têtes avec sauts tête-à-tête" par Walter J. Savitch et Paul MB Vitányi:

Le principal résultat de cet article montre que, étant donné une machine de Turing avec plusieurs têtes de lecture-écriture par bande et qui a l'opération de décalage supplémentaire d'un mouvement "déplacer une tête donnée à la position d'une autre tête donnée", on peut effectivement construire un machine de Turing multitape avec une seule tête de lecture-écriture par bande qui la simule en temps linéaire; c'est-à-dire que si la machine d'origine fonctionne au temps T (n), alors la machine de simulation fonctionnera au temps cT (n), pour une constante c.


Nous avons ici un excellent exemple de coût d'abstraction. Les vrais ordinateurs (comme les implémentations de RM) peuvent être mieux parallélisés que les MT.
Raphael

Que signifie RM? Si c'était un mauvais type et que vous voulez dire TM, je ne suis pas d'accord. Les TM multitape / multihead n'ont pas à se soucier de la communication du processeur et de la loi d'Amdahl. De plus, je ne vois pas comment un ordinateur peut mieux fonctionner qu'une MT à accès aléatoire et vice versa, c'est-à-dire que je pense qu'ils sont équivalents.
chazisop

0

Peut-être que "parallèle ou" (étant donné deux fonctions renvoyant un booléen, dites si l'une d'elles retourne vrai, étant donné que l'une d'entre elles, mais pas les deux, pourrait ne pas se terminer) pourrait être ce dont vous parlez: vous ne pouvez pas calculer avec 1 processeur, mais peut calculer avec 2.

Cependant, cela dépend beaucoup du modèle de calcul que vous utiliserez, si les processus vous sont donnés sous forme de boîtes noires ou de leur description que vous pouvez interpréter vous-même, etc.


2
Cela semble faux, sauf si vous travaillez dans un modèle très limité. Un seul processeur pourrait simplement entrelacer les instructions qui s'exécuteraient autrement sur 2, provoquant au maximum un ralentissement 2x + O (1). Je suppose que par `` boîte noire '', vous voulez dire que l'entrelacement est impossible? Même dans ce cas, si vous pouvez terminer les calculs de boîte noire qui prennent trop de temps, vous pouvez toujours simuler deux processeurs en devinant et doublant à plusieurs reprises la longueur de calcul requise pour chaque processus.
Aaron Roth

Mais cela, à son tour, nous oblige à pouvoir terminer les calculs. Je veux dire que vous ne pouvez pas faire en parallèle ou sur 1 processeur dans un modèle où la seule chose que vous pouvez faire est d'exécuter un calcul jusqu'à la fin.
jkff

Je comprends maintenant ce que vous vouliez dire, mais je pense que ce n'est pas complet. Vous ne pouvez pas non plus le calculer avec 2. Si une machine continue de fonctionner et que l'autre répond OUI, la réponse est OUI. Mais que se passe-t-il s'il renvoie NON? Vous ne pouvez pas répondre de manière déterministe, parce que vous ne savez pas si la machine qui fonctionne toujours ou est bloquée (c'est-à-dire le problème HALTING).
chazisop
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.