我已经使用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上的哪个位置运行,都可以从此特定计算机上运行代码可以解决此问题。这可能吗?
答案 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;