2010-01-14 87 views
10

當我在控制檯登錄時,我的OpenCL程序可以找到GPU設備,但是當我使用ssh遠程登錄時,無法找到GPU設備。此外,如果我在ssh會話中以root身份運行程序,程序可以找到GPU。如何在Mac上遠程登錄時在GPU上測試OpenCL?

該電腦是一款帶有GeForce 9400 GPU的Snow Leopard Mac。

如果我從控制檯或以root身份運行的程序(見下文),輸出如下(注意「的GeForce 9400」線):

2 devices found 
Device #0 name = GeForce 9400 
Device #1 name = Intel(R) Core(TM)2 Duo CPU  P8700 @ 2.53GHz 

,但如果它僅僅是我,過ssh,沒有GeForce 9400條目:

1 devices found 
Device #0 name = Intel(R) Core(TM)2 Duo CPU  P8700 @ 2.53GHz 

我想測試我的代碼在GPU上,而不必是根。那可能嗎?下面簡化GPU發現程序:

#include <stdio.h> 
#include <OpenCL/opencl.h> 

int main(int argc, char** argv) { 
    char dname[500]; 
    size_t namesize; 
    cl_device_id devices[10]; 
    cl_uint num_devices; 
    int d; 

    clGetDeviceIDs(0, CL_DEVICE_TYPE_ALL, 10, devices, &num_devices); 
    printf("%d devices found\n", num_devices); 
    for (d = 0; d < num_devices; ++d) { 
     clGetDeviceInfo(devices[d], CL_DEVICE_NAME, 500, dname, &namesize); 
     printf("Device #%d name = %s\n", d, dname); 
    } 
    return 0; 
} 

編輯:我基本上是發現被要求在nvidia's forums同樣的問題。不幸的是,唯一的答案是「這是錯誤的論壇」。

回答

2

在Windows上,根據this forum thread,似乎可能無法遠程訪問GPU。

這篇文章是關於Windows而不是Mac,因此不直接解決這個問題。由於目前還沒有人提供任何答案,所以這是迄今爲止我發現的最相關的信息。

-2

OK,我不知道傑克關於雪豹的OpenCL或者,可是......

我聽說Mac桌面上一個版本XWindows的基地。 在這種情況下,這篇文章: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=19 其中討論了「如何修改安全設置以允許遠程會話訪問系統上運行的X服務器」。 可能會有幫助。因爲那篇文章是關於ATI Stream應用程序(而不是OpenCL)和Linux(而不是MacOS),它可能不會有幫助,但請自己來看看並判斷。

+0

感謝您的提示。我以前沒看過那個文檔。針對Linux提供的解決方案涉及更改/ dev/nvidiactl上的權限。不幸的是,我無法在Mac上找到該設備,也沒有其他任何暗示。 Windows解決方案歸結爲使用VNC,這聽起來像一個偉大的建議。不幸的是我嘗試了VNC到Mac,但它仍然沒有幫助。控制檯上的相同桌面可以找到GPU。通過VNC,找不到GPU。除非我是根。大概有一個許可的地方... –

+1

Mac桌面不是基於XWindows - 設計和架構是完全不同的。在系統盤上實際上有一個名爲X11的單獨軟件包,您可以安裝該軟件包來支持X應用程序(即許多傳統的Unix應用程序),這些應用程序位於本機Mac窗口系統內。 – gavinb

2

我認爲GPU資源屬於桌面會話(即使顯示登錄屏幕,它始終存在),這是遠程會話不可用的原因。通過更改權限來強制這個問題正在顛覆系統,並且必然會導致問題。

您是否嘗試過運行屏幕共享來遠程訪問Mac而不是ssh?這樣,您就可以像平常一樣在桌面上運行應用程序,並查看您的結果(可能存在一些延遲,具體取決於您的網絡連接)。

1

當您嘗試SSH時,機器的狀態如何?使用我的蘋果機,如果只顯示登錄屏幕,我無法SSH,如果我的用戶帳戶登錄在桌面上,則由ssh調用的程序可以訪問gpu。我還沒有嘗試在我的機器上創建新的用戶帳戶。您可能需要爲您的帳戶設置自動登錄,然後只需要輸入密碼即可從屏幕保護程序中喚醒。這應該給你可接受的安全性,並仍然確保你的用戶帳戶可以訪問GPU。

0

您是否嘗試過在本地和遠程登錄,同時?如果問題在於GPU所有權與本地GUI控制檯用戶相關聯,並且您必須通過ssh遠程訪問,這應該可行;前提是計算機不會被其他用戶使用,取代您的本地登錄。

0

嘗試使用sudo。 GPU只是操作系統的另一個設備。

1

您是否嘗試過VNC?我知道我以前需要在Windows機器上使用VNC來使用GPU。 Windows上的遠程桌面無法正常工作,因爲它使用本地圖形卡。

0

就在昨天,我通過SSH登錄了我的工作計算機(OS X 10.8.2),並且opencl programm在GPU上運行良好。我認爲,您的問題只有一個原因 - 訪問GPU硬件的權限不足。嘗試以具有管理員權限的用戶身份登錄或通過sudo運行您的程序。

+0

當我說「如果我在ssh會話中以root身份運行程序,程序可以找到GPU」,我的意思是管理員可以訪問GPU。我想要一個不需要提升特權的解決方案。 –