小编Xap*_*Mnu的帖子

Eigen,如何访问MatrixBase <Derived>的底层数组

我需要访问包含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)

c++ eigen

11
推荐指数
1
解决办法
6725
查看次数

如何检查Eigen Matrix是列专业还是行专业?

我需要使用几个特征矩阵的基础数组,这些数组可以是RowMajor或ColumnMajor.

有没有办法检查使用哪种格式?(除了比较第一列,行/列的前n个元素)

我发现isRowMajor是Eigen基类中Enum的一部分,但我不知道如何从我的代码中访问它.

c++ eigen

10
推荐指数
1
解决办法
2347
查看次数

使用spark-submit和python main

阅读这个,让我觉得有可能有​​一个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文件并尝试从中加载一个类?我究竟做错了什么?

apache-spark pyspark

7
推荐指数
1
解决办法
3万
查看次数

docker-java/docker 远程 api 块直到容器完成

我正在尝试使用 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有非常糟糕的文档,我所做的大部分工作都是通过查看测试用例来完成的。

干杯,

缺口

docker docker-java

4
推荐指数
1
解决办法
1742
查看次数

pyspark。生成随机数的变压器总是生成相同的数字

我正在尝试测量必须将 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)

python random apache-spark apache-spark-sql pyspark

3
推荐指数
1
解决办法
2050
查看次数

NVCC,与 -Xcompiler 的奇怪交互

我正在尝试构建 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++ cuda compiler-errors compilation

1
推荐指数
1
解决办法
1万
查看次数