我需要访问包含MatrixBase Eigen矩阵数据的数组.
Eigen库有data()方法,它返回一个指向数组的指针,但只能从Matrix 类型访问它.该MatrixBase没有类似的方法,即使MatrixBase类应该充当模板和实际类型应该只是一个矩阵.如果我尝试访问MatrixBase.data(),我得到一个编译时错误:
template <typename ScalarA, typename Index, typename DerivedB, typename DerivedC>
void uscgemv(float alpha,
const USCMatrix<ScalarA,Index> &a,
const MatrixBase<DerivedB> &b,
const MatrixBase<DerivedC> &c_const)
{
//...some code
float * bMat = b.data();
///more code
}
Run Code Online (Sandbox Code Playgroud)
此代码生成以下编译时错误.
error: ‘const class Eigen::MatrixBase<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<float>, Eigen::Matrix<float, -1, 1> > >’ has no member named ‘data’
float * bMat = b.data();
Run Code Online (Sandbox Code Playgroud)
所以我不得不诉诸噱头......
float * bMat;
int bRows = b.rows();
int bCols = b.cols();
mallocPinnedMemory(&bMat, bRows*bCols*sizeof(float));
Eigen::Map<Matrix<float, Dynamic, Dynamic> > bmat_temp(bMat, bRows, bCols); …Run Code Online (Sandbox Code Playgroud) 我需要使用几个特征矩阵的基础数组,这些数组可以是RowMajor或ColumnMajor.
有没有办法检查使用哪种格式?(除了比较第一列,行/列的前n个元素)
我发现isRowMajor是Eigen基类中Enum的一部分,但我不知道如何从我的代码中访问它.
阅读这个,这让我觉得有可能有一个python文件被执行spark-submit但是我无法让它工作.
我的设置有点复杂.我需要与我的python文件一起提交几个不同的罐子,以便一切运行.我的pyspark命令有效如下:
IPYTHON=1 ./pyspark --jars jar1.jar,/home/local/ANT/bogoyche/dev/rhine_workspace/env/Scala210-1.0/runtime/Scala2.10/scala-library.jar,jar2.jar --driver-class-path jar1.jar:jar2.jar
from sys import path
path.append('my-module')
from my-module import myfn
myfn(myargs)
Run Code Online (Sandbox Code Playgroud)
我已将我的python文件打包在一个egg中,而egg包含主文件,这使得egg可以通过调用来执行 python myegg.egg
我现在正在努力形成我的spark-submit命令,我似乎无法做到正确.我就在这里:
./spark-submit --jars jar1.jar,jar2.jar --py-files path/to/my/egg.egg arg1 arg
Error: Cannot load main class from JAR file:/path/to/pyspark/directory/arg1
Run with --help for usage help or --verbose for debug output
Run Code Online (Sandbox Code Playgroud)
它不是执行我的.egg文件,而是采用egg的第一个参数并将其视为jar文件并尝试从中加载一个类?我究竟做错了什么?
我正在尝试使用 docker-java 从 java 使用 docker 远程 API,并且我正在努力寻找一种方法来查看容器的执行何时完成:
CreateContainerResponse container = dockerClient.createContainerCmd("me/vw:v0.1")
.withVolumes(workingDIR)
.withBinds(new Bind("/localDrive", workingDIR))
.withCmd("vw", "/rcv1/rcv1.train.vw.gz", "--cache_file", "/rcv1/cache_train", "-f", "/rcv1/r_temp")
.withLogConfig(logconf)
.exec();
dockerClient.startContainerCmd((container.getId())).exec();
Thread.sleep(10000); //OBVIOUSLY BROKEN HACK IS BROKEN
System.out.println("PRINTING LOGS");
System.out.println(containerLog(container.getId(), dockerClient));
Run Code Online (Sandbox Code Playgroud)
检查容器是否完成的正常方法是什么?我是否必须编写一些轮询docker服务器的东西,或者是否有一些方便的阻塞函数/调用?docker-java有非常糟糕的文档,我所做的大部分工作都是通过查看测试用例来完成的。
干杯,
缺口
我正在尝试测量必须将 adataframe从 scala 复制到 python 并在大型管道中复制回来对性能的影响。为此,我创建了这个相当人为的变压器:
from pyspark.ml.pipeline import Transformer
from pyspark.ml.param.shared import HasInputCol, HasOutputCol, Param
from pyspark.ml.util import keyword_only
from pyspark.sql.functions import udf
from pyspark.sql.types import FloatType
import random
class RandomColAdderTransformer(Transformer, HasInputCol, HasOutputCol):
@keyword_only
def __init__self(self, inputCol=None, outputCol=None, bogusarg=None):
super(RandomColAdderTransformer, self).__init__()
self.bogusarg = None
self._setDefault(bogusarg=set())
kwargs = self.__init__._input_kwargs
self.setParams(**kwargs)
@keyword_only
def setParams(self, inputCol=None, outputCol=None):
kwargs = self.setParams._input_kwargs
return self._set(**kwargs)
def _transform(self, dataset):
cur_col = self.getInputCol()
def randGet(col): # UDF crashes with no arguments
a = col*random.random() # …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建 Magma,但遇到了一些问题,我很确定在使用早期版本的 CUDA 时没有遇到过这些问题。(我现在用的是6.5)。发生的情况是 makefile 生成以下命令:
nvcc -fPIC -O3 -DADD_ -Xcompiler -fno-strict-aliasing -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -I/opt/cuda/include -I../include -I../control -I../sparse-iter/include -c zgemv_conjv.cu -o zgemv_conjv.o
nvcc fatal : Unknown option 'fPIC'
Run Code Online (Sandbox Code Playgroud)
谷歌搜索显示 -fPIC 只能与 -Xcompiler 一起使用,因为它不是 nvcc 选项。但正如您所看到的,我的 nvcc 命令中确实有 -Xcompiler 。
我尝试将 -fPIC 放在 -Xcompiler 后面,如下所示:
nvcc -O3 -DADD_ -Xcompiler -fPIC -fno-strict-aliasing -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -I/opt/cuda/include -I../include -I../control -I../sparse-iter/include -c zgemv_conjv.cu -o zgemv_conjv.o
nvcc fatal : Unknown option 'fno-strict-aliasing'
Run Code Online (Sandbox Code Playgroud)
它在下一个非 nvcc 选项上失败,即使它位于 -Xcompiler 后面。有效的是这样的:
nvcc …Run Code Online (Sandbox Code Playgroud) c++ ×3
apache-spark ×2
eigen ×2
pyspark ×2
compilation ×1
cuda ×1
docker ×1
docker-java ×1
python ×1
random ×1