1

有谁知道如何通过在 IDE 中调用 optirun (bumblebee) 来使 eclipse 或 netbeans 在 Optimus 笔记本电脑中使用显卡,这样人们就可以使用 IDE 中的运行按钮在 IDE 中的显卡中运行程序。

以最简单的形式,我只希望 IDE 执行相当于optirun ./javaproject

4

4 回答 4

1

只需使用 optirun 启动 IDE。例如,optirun eclipseoptirun netbeans

于 2012-07-16T17:59:39.997 回答
1

我在 Eclipse 中这样做的方式是首先启动 Java 调试器jdwp并监听一个端口。然后启动 JVMoptirun java ...并使用 jdwp 连接到这个端口。通过在调试配置设置(运行 -> 调试配置)中创建启动组,可以在 Eclipse 中同时启动这两个任务。详细地:

  1. 使用“标准(套接字侦听)”连接类型和一些任意端口(例如56789)创建远程 Java 应用程序调试配置。这会将端口 56789 上的 Java 调试器jdwp附加到在该端口接受调试连接的虚拟机。
  2. 现在我们需要使用optirun启动一个 JVM 。这可以通过外部工具配置(运行 -> 外部工具 -> 外部工具配置)来完成。在“外部工具配置”窗口的左侧创建一个新的程序配置。您可以直接从optirun java <additional arguments>填写必填字段开始。但是,我决定使用一个可被不同项目重用的 shell 脚本(如下所示,缺少一个部分以使其完全可重用。我很高兴从更有经验的 Eclipse 用户那里获得任何帮助......) . 因此,Location字段指向这个 shell 脚本。脚本本身接受三个参数:类路径对于项目,Java 可执行文件的名称和端口号。这些参数可以传递给主选项卡的参数字段中的脚本,例如

    • ${project_classpath:${selected_resource_name}}
    • 执行名称
    • 56789

    假设 optirun 在您的 PATH 中,shell 脚本如下所示:

    #!/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}
    #------------------------------------------------------------------------------
    
  3. 最后,将这两个部分放在“调试配置”窗口(运行 -> 调试配置)中的启动组中。创建一个新的启动组并通过单击启动选项卡中的添加并选择适当的配置来添加两个先前生成的调试配置。请注意,由于步骤 2 中的 classpath 变量(即),需要在Package Explorer中选择适当的包,然后单击运行调试配置按钮(确保选择了 Launch Group)。${project_classpath:${selected_resource_name}}

这个解决方案非常适合我:我可以在 Eclipse 中调试 Java 代码,该代码调用涉及 CUDA 优化的本机代码,并且 Bumblebee 仅在必要时激活独立显卡。

于 2013-03-20T02:27:52.367 回答
0

我在 Netbeans ( F11) 中构建项目并在终端中运行以下命令:

optirun java -jar path/to/javaproject/dist/javaproject.jar

请注意,如果您的项目中有任何 java 参数,则需要手动添加。我的工作流程是这样的:

从项目中找到 Java 选项,打开Project -> PropertiesRun。在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 位驱动程序,请参阅此答案。对于其他发行版,您可能需要lib32-*为 Mesa、VirtualGL 和 nvidia-utils 安装软件包。

于 2012-12-19T10:04:01.510 回答
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”就可以了!

于 2014-01-11T17:30:49.323 回答