Приложение Opencl не распознает GPU, пока пользователь физически (а не удаленный) не войдет в систему

5

Я запускаю некоторые приложения opencl на 2x AMD Radeon HD 7870 на машине под управлением Ubuntu 13.10.

Я включаю машину, а lightdm имеет приглашение для входа. Так как я не могу физически присутствовать при входе в машину каждый раз, когда я запускаю цикл. Я хочу устранить неполадку, почему Opencl не обнаруживает GPU после силового цикла на машине.

Без входа в lightdm, если я зашел в машину и запустил задания opencl. Opencl не «видит» графический процессор.

Только если я вхожу в систему на машине, физически присутствуя и записываясь в lightdmdoes, удаленная оболочка «видит» графический процессор.

Я не знаю много о openCL, чтобы предоставить дополнительную информацию, но это похоже на то, как инициализирует ubuntu. Что входит в консоль lightdm ..do в состояние графического драйвера.

Есть ли способ «загрузить» драйвер, чтобы OpenCL видел его.

Странно lsmod показывает, что «fglrx» загружен и используется, когда Opencl не может «видеть» графический процессор.

#

Состояние без loggin в lightdm и как сообщается сеансом ssh

#
   [email protected]:~$ ~/oepncl-program

    Available device list:
    Type: CPU, 'Intel(R) Core(TM)2 Quad  CPU   Q9450  @ 2.66GHz'


[email protected]:~$ lsmod
    Module                  Size  Used by
    pci_stub               12622  1 
    vboxpci                23194  0 
    vboxnetadp             25670  0 
    vboxnetflt             27613  0 
    vboxdrv               320455  3 vboxnetadp,vboxnetflt,vboxpci
    cuse                   13274  3 
    dm_crypt               22832  0 
    kvm_intel             138567  0 
    kvm                   431754  1 kvm_intel
    gpio_ich               13476  0 
    ppdev                  17671  0 
    snd_usb_audio         149162  2 
    bnep                   19704  2 
    snd_usbmidi_lib        25070  1 snd_usb_audio
    rfcomm                 69130  0 
    bluetooth             372041  10 bnep,rfcomm
    snd_hda_codec_hdmi     41154  2 
    microcode              23656  0 
    psmouse                97655  0 
    snd_hda_codec_realtek    56475  1 
    serio_raw              13413  0 
    snd_seq_midi           13324  0 
    snd_hda_intel          52267  7 
    snd_seq_midi_event     14899  1 snd_seq_midi
    snd_hda_codec         188738  3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
    snd_rawmidi            30095  2 snd_usbmidi_lib,snd_seq_midi
    snd_hwdep              13602  2 snd_usb_audio,snd_hda_codec
    lpc_ich                21080  0 
    snd_pcm               102033  4 snd_usb_audio,snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
    snd_seq                61560  2 snd_seq_midi_event,snd_seq_midi
    snd_page_alloc         18710  2 snd_pcm,snd_hda_intel
    snd_seq_device         14497  3 snd_seq,snd_rawmidi,snd_seq_midi
    snd_timer              29433  2 snd_pcm,snd_seq
    fglrx                8815330  48 
    snd                    69141  31 snd_hda_codec_realtek,snd_usb_audio,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_usbmidi_lib,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_seq_midi
    it87                   43113  0 
    hwmon_vid              12783  1 it87
    parport_pc             32701  1 
    coretemp               13435  0 
    x38_edac               12898  0 
    soundcore              12680  1 snd
    lp                     17759  0 
    parport                42299  3 lp,ppdev,parport_pc
    binfmt_misc            17468  1 
    mac_hid                13205  0 
    amd_iommu_v2           19054  1 fglrx
    edac_core              62342  1 x38_edac
    vesafb                 13828  1 
    pata_acpi              13038  0 
    hid_generic            12548  0 
    usbhid                 53014  0 
    hid                   101762  2 hid_generic,usbhid
    firewire_ohci          40327  0 
    firewire_core          64534  1 firewire_ohci
    crc_itu_t              12707  1 firewire_core
    r8169                  67581  0 
    mii                    13934  1 r8169
    pata_jmicron           12758  0 
    ahci                   25819  0 
    libahci                32009  1 ahci
    floppy                 69370  0 

После входа пользователя в систему и я запускаю ту же программу.

#

Состояние после входа в систему lightdm и запуск среды рабочего стола

#
[email protected]:~$ ~/opencl-program
Available device list:
Type: CPU, 'Intel(R) Core(TM)2 Quad  CPU   Q9450  @ 2.66GHz'
Type: GPU, 'Pitcairn'
Type: ACCELERATOR, 'Pitcairn'

Теперь, если я делаю разницу в lsmod Я получаю

[email protected]:~$ diff before_login after_login | grep fglrx
<     fglrx                8815330  48 
<     amd_iommu_v2           19054  1 fglrx
> fglrx                8815330  44 
> amd_iommu_v2           19054  1 fglrx

Ввод SO вызвал драйвер fglrx для использования «44». Как я имитирую это, поэтому мне нужно войти в систему, когда кто-то дистанционно запускает эту машину?

edit: Я пытаюсь реализовать сценарий ниже и всегда получаю

"[email protected]:~$ xauth extract "$DISPLAY"
xauth: (argv):1:  bad "extract" command line"

Обозначение среды DISPLAY нечетно

[email protected]:~$ echo $DISPLAY

Список xauth дает

hjubuntu/unix:1  MIT-MAGIC-COOKIE-1  8562e9f6ac976f310d1425aa11e74184
hjubuntu:0  MIT-MAGIC-COOKIE-1  80f5f4c28e7e2d0fc9444b1862f5cbcb
hjubuntu:0  MIT-MAGIC-COOKIE-1  80f5f4c28e7e2d0fc9444b1862f5cbcb
hjubuntu/unix:13  MIT-MAGIC-COOKIE-1  142c11b5689f4bd2776e860b9d8719dd
hjubuntu/unix:14  MIT-MAGIC-COOKIE-1  08353f652f21b479a6da3a60282bce31
hjubuntu/unix:15  MIT-MAGIC-COOKIE-1  655d074dfb395f536283e70a9494428c
hjubuntu/unix:12  MIT-MAGIC-COOKIE-1  91387509c2dff960e295fdd0eb0ada52
hjubuntu/unix:11  MIT-MAGIC-COOKIE-1  914c7988660149b90eed958066ed2e71
hjubuntu/unix:10  MIT-MAGIC-COOKIE-1  0ab65dbaf838a08bd8c9141fb5da7c35

Интересно, как я должен действовать.

    
задан harijay 09.06.2014 в 02:44
источник

3 ответа

4

Часто некоторые функции аппаратного обеспечения не инициализируются до тех пор, пока они не понадобятся. дополнительные порты отображения и т. д., поэтому, вероятно, в этом случае на самом деле нужно запустить что-то, что использует соответствующее оборудование на карте, чтобы включить его.

Самый дешевый / простой способ сделать это - включить функцию автоматического входа (Настройки и учетные записи пользователей). Не имеет значения, на какой учетной записи вы это сделаете, поэтому вы можете даже использовать гостевую учетную запись, если вас беспокоит безопасность.

Если этого недостаточно (могут быть проблемы с разрешениями), вы можете использовать xauthority. Просто добавьте что-то вроде этого в конец вашего сценария lightdm:

xauth extract /tmp/auth-file "$DISPLAY"
chmod 660 /tmp/auth-file
chgrp users /tmp/auth-file
cat > /tmp/gpuenable <<EOF
export COMPUTE=$DISPLAY
unset DISPLAY
export XAUTHORITY=/tmp/auth-file
EOF

, то при удаленном входе вы просто должны запустить /tmp/gpuenable перед любым кодом OpenCL. Измените имя группы «пользователи» на любую группу, к которой вы хотите получить доступ.

P.S. это не специфичный для Ubuntu, или, действительно, даже Linux специфический, просто большинство других ОС имеют дисплей, который работает все время.

    
ответ дан Nick Veitch 17.06.2014 в 10:32
источник
1

Я также столкнулся с этой проблемой с драйвером AMD и fglrx-update на Ubuntu 14.04. В конечном итоге я могу использовать мою программу OpenCL после убийства X.

sudo service lightdm stop
    
ответ дан Andre Miras 19.02.2016 в 23:07
0

Попробуйте войти в систему с надежными пересылками X11:

ssh -Y [email protected]
    
ответ дан user.dz 21.06.2014 в 20:03