2013-05-08 28 views
51

Próbowałem używać GNU równolegle przez jakiś czas, ale nigdy nie byłem w stanie go w ogóle uruchomić!Równoległy GNU nie działa wcale

Na przykład, bieganie (w niepustym katalogu!):

ls | parallel echo   # Outputs single new line 
ls | parallel echo echo echo # Outputs three new lines. 
ls | parallel echo {}   # /bin/bash: {}: command not found 
ls | parallel echo '{}'  # /bin/bash: {}: command not found 
ls | parallel 'echo {}'  # Outputs: {} 
ls | parallel -IMM 'echo MM' # Outputs: MM 

Wydaje się, że jest to po prostu wykonując każdy argument jako polecenia, które nie ma sensu.

Próbowałem bash, zsh, tcsh, csh i sh, bez skutku.

+0

"bash, zsh, tcsh, csh i s h "+1 za kompletność;) –

Odpowiedz

84

Jak miałem zakończyć pisanie to pytanie, wpadłem parallel --version zgłosić wersję, tylko znaleźć:

UWAGA: Korzystasz --tollef. JEŚLI RZECZY SĄ DZIAŁANIE WEWNĘTRZNE -.

Nie jest dla mnie jasne, dlaczego ta flaga jest ustawiona domyślnie. Nie trzeba dodawać, że zadziałało --gnu!

Pomyślałem, że opublikuję to, aby zaoszczędzić godzin frustracji i zamieszania.

EDIT: Aby rozwiązać ten problem na stałe (w Ubuntu co najmniej), usunąć flagę --tollef w /etc/parallel/config

+18

--tollef będzie na emeryturze 20140222 http://lists.gnu.org/archive/html/parallel/2013-02/msg00018.html Będzie to pomocne, jeśli już teraz pozwolisz swojej frustracji znać swojego opiekuna dystrybucji, aby można było zmienić domyślne. –

+0

@ Co masz na myśli mówiąc "poprawienie sytuacji"? Jak w zmianie domyślnego zachowania? – WaelJ

+0

@OleTange Bardzo miło to słyszeć! :) – WaelJ

8

zależności od używanego systemu operacyjnego, należy sprawdzić, czy jesteś faktycznie działa w wersji GNU.

$ parallel --version 
parallel: invalid option -- '-' 
parallel [OPTIONS] command -- arguments 
    for each argument, run command with argument, in parallel 
parallel [OPTIONS] -- commands 
    run specified commands in parallel 

Jeśli tak jest, nie uruchamiasz wersji GNU. Ubuntu 12.04 jest podobny do tego i musisz uzyskać manually install GNU parallel, aby uzyskać oczekiwaną funkcjonalność.

1

Wystąpiły problemy występujące równolegle jako zewnętrzne polecenie FREEMAT (podobnie do MATLAB); argumentFile nie została podana do polecenia prawidłowo rozwiązany przez:

  • Dodawanie --gnu do opcji
  • nie używając cmdString składni udziałem [ "]

Kod:

cmdString = 'parallel --gnu command ::: '; 
    while j<=jLength 
     cmdString = [cmdString argumentFilePath(j,:) ' ']; 
     j=j+1; 
    end 
    system(cmdString) 

Dziękuję za to :) Im na Ubuntu 12.04 również.