在Shiny服务器上运行应用程序时,使用GPU的脚本会引发错误

时间:2018-10-22 01:46:15

标签: r shiny gpu

我已经使用Shiny包在R中编写了一些代码。从RStudio运行shiny::runApp()时,该应用可以正常运行。

我尝试将应用程序托管在Shiny服务器上,并且GUI正确启动。但是,当单击“ Enviar informationacion”按钮时,图应显示在右侧。 (您可以看到该应用的外观here,但由于该链接不在Shiny服务器上,而在Shinyapps.io上,因此无法正常工作。)

日志文件的相关部分如下:

Listening on http://127.0.0.1:38327
Loading required package: Rcpp
Warning: Error in [: subscript out of bounds
  211: FUN [/srv/shiny-server/spike_sorting/server.R#82]
  210: apply
  209: cluster_som_h [/srv/shiny-server/spike_sorting/server.R#82]
  ...

因此错误在函数cluster_som_h内部。在尝试了一些东西之后,我发现了导致错误的原因,但不知道如何解决。在此函数内部,我使用了package Rsomoclu中的函数Rsomoclu.train()kernelType = 1。这意味着该功能在GPU上运行。如果我设置了kernelType = 0,则该应用程序可以与runApp()一起使用,也可以从Shiny服务器上正常工作。 这就是问题所在:由于某种原因,如果从Shiny服务器运行该应用程序,则无法在GPU上运行该功能,但是如果使用runApp()从RStudio运行该应用程序,则该功能可以正常工作。

也许是因为我的计算机上安装了CUDA,但正在发生某些事情,但是当我尝试从服务器上运行CUDA时,发生了一些事情。有没有办法来解决这个问题?我相信,无论该应用程序在LAN上的哪个位置运行,都可以从此特定计算机上运行代码可以解决此问题。这可能吗?

1 个答案:

答案 0 :(得分:1)

进行一些(基本)研究后,我发现了正在发生的事情。我仅在Ubuntu的用户中安装了CUDA,因此我必须更改文件/etc/shiny-server/shiny-server.conf的第一行,以便该用户是正确的用户:

# Instruct Shiny Server to run applications as the user "my_name"
run_as my_name;