有没有人知道如何通过在IDE中调用optirun(bumblebee)使eclipse或netbeans在optimus笔记本电脑中使用显卡,以便可以使用IDE中的运行按钮在显卡内的图形卡中运行程序IDE。
在最简单的形式中,我只希望IDE执行相当于optirun ./javaproject
答案 0 :(得分:1)
只需使用optirun启动IDE即可。例如,optirun eclipse
或optirun netbeans
答案 1 :(得分:1)
我在Eclipse中这样做的方法是首先启动Java调试器 jdwp 并监听端口。然后使用optirun java ...
启动JVM并使用jdwp连接到此端口。通过在调试配置设置(运行 - >调试配置)中创建启动组,可以在Eclipse中同时启动这两个任务。详细说明:
现在我们需要使用 optirun 启动JVM。这可以通过外部工具配置(运行 - &gt;外部工具 - &gt;外部工具配置)完成。在“外部工具配置”窗口的左侧创建新的程序配置。您可以通过填写必填字段直接启动optirun java <additional arguments>
。但是,我决定使用一个可以通过不同项目重用的shell脚本(如下所示,有一个部分缺失,使其完全可重用。我很高兴有更多有经验的Eclipse用户的帮助......) 。因此, Location 字段指向此shell脚本。脚本本身接受三个参数:项目的类路径,Java可执行文件的名称和端口号。这些参数可以传递到 Main 选项卡的 Arguments 字段中的脚本,例如
shell脚本如下所示,假设optirun位于PATH中:
#!/bin/sh
CLASS_PATH=${1}
JAVA_EXECUTABLE=${2}
PORT=${3}
# TODO: fix this java library path: pass it as an argument as well. Is there an Eclipse variable which stores this?
JAVA_LIBRARY_PATH=/usr/local/share/OpenCV/java
#------------------------------------------------------------------------------
optirun ${JAVA_BIN} -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:${PORT} -Djava.library.path=${JAVA_LIBRARY_PATH} -Dfile.encoding=UTF-8 -classpath ${CLASS_PATH} ${JAVA_EXECUTABLE}
#------------------------------------------------------------------------------
${project_classpath:${selected_resource_name}}
),需要在 Package Explorer 中选择相应的包,然后单击运行调试配置按钮(确保启动组已被选中)。这个解决方案非常适合我:我可以在Eclipse中调试Java代码,调用涉及CUDA优化的本机代码,Bumblebee只在必要时激活独立显卡。
答案 2 :(得分:0)
我在Netbeans中构建项目( F11 )并在终端中运行以下内容:
optirun java -jar path/to/javaproject/dist/javaproject.jar
请注意,如果项目中有任何java参数,则需要手动添加它。我的工作流程是这样的:
从项目中找到Java选项,打开 Project - &gt; 属性,运行。在 VM选项,我看到-Djava.library.path=lwjgl/native/windows;:lwjgl/native/linux
。我还有一些参数要传递给main(String[])
。有了这些信息,我打开一个终端并运行:
cd path/to/javaproject
optirun java -Djava.library.path=lwjgl/native/windows;:lwjgl/native/linux \
-jar dist/javaproject.jar some paremeters
另一个提示,如果您必须经常打开和关闭程序,请在另一个选项卡中运行optirun bash
,以便准备使用图形卡变得更快。或者,您可以运行optirun netbeans
,但这意味着即使您正在编程增加功耗并增加热量,nvidia卡也将始终打开。
重要:如果在64位计算机上使用32位JVM或Java库,则还需要安装32位驱动程序和库。对于Ubuntu,nvidia软件包已包含32位驱动程序,请参阅this answer。对于其他发行版,您可能需要为Mesa,VirtualGL和nvidia-utils安装lib32-*
个包。
答案 3 :(得分:0)
您还可以将java重命名为java_real,并将此部分代码用作java命令:
#!/bin/bash
path=$(dirname $(readlink -f $0))
args=""
runner="$path/java_real"
for var in "$@"
do
if [ "$var" = "-3d" ]; then
runner="primusrun $runner"
else
args="$args $var"
fi
done
$runner $args
注意:我必须在/ usr / lib / jvm / java-7-openjdk-amd64 / jre / bin中执行此操作,而不是在/ usr / bin中执行此操作以使其与Eclipse一起使用。
在Eclipse中,只需在程序参数中添加“-3d”,就可以了!