我正在开发一个用java完成的业务项目,需要巨大的计算能力来计算业务市场.简单的数学,但有大量的数据.
我们订购了一些cuda gpu来尝试,因为cuda不支持Java,我想知道从哪里开始.我应该构建一个JNI接口吗?我应该使用JCUDA还是有其他方法?
我没有这方面的经验,我想如果有人可以指导我,我可以开始研究和学习.
我正在开发一个与 Epiphany 处理器 ( http://www.parallella.org/ ) 一起使用的代码,并且要运行 Epiphany 代码,我需要在主机端程序上有 sudo 权限。sudo 是逃不掉的!
现在我需要跨多个节点运行此代码,为了做到这一点,我使用 mpi 但 mpi 无法与 sudo 正常运行
#sudo mpirun -n 12 --hostfile hosts -x LD_LIBRARY_PATH=${ELIBS} -x EPIPHANY_HDF=${EHDF} ./hello-mpi.elf
Run Code Online (Sandbox Code Playgroud)
即使是进行节点通信的简单代码也不起作用。如果我使用 sudo,则排名为 0。线程之间可以进行通信,但不能跨节点进行通信。这很重要,因为我想在卡之间正确分配工作负载。
这是简单的代码
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[]) {
int numprocs, rank, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
printf("Hello World from MPI Process %d on machine %s\n", rank, processor_name);
MPI_Finalize();
}
Run Code Online (Sandbox Code Playgroud)
此代码应该在节点之间以不同的方式输出排名号,但它不适用于 sudo
对此的任何帮助都会很棒
这是在不使用 sudo 的情况下运行上述代码的输出。
mpirun -n 3 …Run Code Online (Sandbox Code Playgroud)