小编Pav*_*ili的帖子

CUDA块中的最大线程数

我对编程指南感到困惑.它陈述如下:

  • maxThreadsPerBlock:512
  • maxThreadsDim:512,512,64.

当块中的最大线程数可以是512时,最大线程尺寸如何能够为512*512*64?

cuda

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

如何使用CUDA在GPU上运行MATLAB代码?

我想使用NVIDIA的CUDA在GPU上运行MATLAB代码.我找到了几个第三方引擎:

有人会推荐这些或那里有更好的吗?任何提示或建议?

matlab cuda gpu jacket

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

重载下标运算符"["

我试图为"["我创建的自定义类重载下标operator().我想弄清楚如何处理以下问题.

  • 你怎么能弄清楚操作员是在lhs还是rhs?即a[x] = foovsfoo = a[x]
  • 订阅整个维度时,foo = a[,x]如何识别第一个参数?
  • 当使用[seq(x,y)]时,它似乎正在扩展整个序列.有没有简单的方法来获得第一个,步骤和最后的值而不扩展?

编辑:我的第一点已收到多个答案.在这个过程中,我找到了第二个问题的答案.您可以使用"缺失"功能来确定存在哪些参数.

这是一个示例代码:

setMethod("[", signature(x="myClass"),
          function(x, i, j, k, l) {
              if (missing(i)) { i = 0 }
              if (missing(j)) { j = 0 }
              if (missing(k)) { k = 0 }
              if (missing(l)) { l = 0 }
          })
Run Code Online (Sandbox Code Playgroud)

我接受了这个问题的答案,因为第3点对我来说是最不重要的.

r operator-overloading subscript subscript-operator

10
推荐指数
3
解决办法
1543
查看次数

Eigen MatrixXd在c ++中回退

Eigen是c ++中众所周知的矩阵库.我无法找到一个内置函数来简单地将一个项目推到矩阵的末尾.目前我知道可以这样做:

Eigen::MatrixXd matrix(10, 3);
long int count = 0;
long int topCount = 10;
for (int i = 0; i < listLength; ++i) {
    matrix(count, 0) = list.x;
    matrix(count, 1) = list.y;
    matrix(count, 2) = list.z;
    count++;
    if (count == topCount) {
        topCount *= 2;
        matrix.conservativeResize(topCount, 3);
    }
}
matrix.conservativeResize(count, 3);
Run Code Online (Sandbox Code Playgroud)

这将工作(一些语法可能会出来).但它很容易做一件简单的事.是否已有内置功能?

c++ matrix eigen

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

dtrtrs和dtrsm之间的区别

我正在寻找一些三角形求解器,我遇到了两个求解器.一个在BLAS:dtrsm 和另一个在LAPACK:dtrtrs.从它的外观来看,它们似乎都具有共同的功能,dtrsm具有更多的功能(在解决系统之前缩放右侧).

我想知道
1)这些功能有何不同?
2)执行相同操作时哪个更快?
3)如果(2)的答案不明显,dtrsm何时建议超过dtrtrs,反之亦然?

linear-algebra blas lapack

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

使用 python 模块分发预构建的库

我使用以下脚本分发包含纯 python 代码的模块。

from distutils.core import setup, Extension
import os
setup (name = 'mtester',
       version = '0.1',
       description = 'Python wrapper for libmtester',
       packages=['mtester'],
       package_dir={'mtester':'module'},
       )
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我修改了一个使用外部库(.so 文件)的文件,我需要将其与现有模块一起提供。有人建议我使用 package_data 来包含库。我将脚本修改为以下内容。

from distutils.core import setup, Extension
import os
data_dir = os.path.abspath('../lib64/')
setup (name = 'mtester',
       version = '0.1',
       description = 'Python wrapper for libmtester',
       packages=['mtester'],
       package_dir={'mtester':'module'},
       package_data={'mtester':[data_dir+'mhelper.so']},
       )
Run Code Online (Sandbox Code Playgroud)

问题是,添加 package_data 没有任何区别。这不是在任何位置安装 mhelper.so(既不在站点包中也不在站点包/mtester 中)。

系统信息:Fedora 10,64 位,python 2.5(是的,它很古老。但它是我们的构建机器,它需要保持这种状态以保持向后兼容性)

任何可以帮助我解决此问题的建议将不胜感激!

python distutils

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

如何在GPU上计算k个最大特征值?

我正在研究用于光谱聚类的并行算法,我需要计算K个最大特征值.我正在使用Jacket插件进行Matlab,但遗憾的是它不支持matlab中的EIGS函数(它无法计算K个特征值)并行)任何人都可以建议一些其他工具/库在GPU上完成这项任务吗?或者我还可以在GPU辅助的Matlab中做到这一点吗?

cuda eigenvalue eigenvector jacket

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

MATLAB 中复数的比较

我试图弄清楚 MATLAB 如何使用以下代码比较复数。我不确定这是否是预期行为或者我是否发现了错误。

max 的文档说明如下:

当 X 为复数时,使用幅度 MAX(ABS(X)) 计算最大值。在等量值元素的情况下,则使用相位角 MAX(ANGLE(X))。

的行为max符合预期的文档。

>> a = complex(rand(3,1), rand(3,1))

a =

   0.8147 + 0.9134i
   0.9058 + 0.6324i
   0.1270 + 0.0975i

>> b = complex(imag(a), real(a))

b =

   0.9134 + 0.8147i
   0.6324 + 0.9058i
   0.0975 + 0.1270i

>> max(a, b)

ans =

   0.8147 + 0.9134i
   0.6324 + 0.9058i
   0.0975 + 0.1270i

>> a > b

ans =

     0
     1
     1

>> angle(a) > angle(b)

ans =

     1
     0
     0

>> abs(a) …
Run Code Online (Sandbox Code Playgroud)

matlab

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

CUDA:调用内核/cudaMemcpy 的主机方法可能会在内核/memcpy 完成之前返回吗?

我有一种方法可以将一些数据复制到设备,在各自的流上调用多个内核,然后调用cudaMemcpyAsync不同的流,以便它们在各自的内核之后运行。

既然我已经读过这两个内核并且cudaMemcpyAsync都启动并与主机代码并行运行,那么在这些完成之前我调用它们的函数是否可以作为回报,或者它只会与同一函数中的主机代码并行运行?

c++ cuda

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

在fortran中索引用户定义的类型

简而言之,我可以在fortran中执行类似的操作(任何fortran标准)

type(my_array), dimension(:,:), allocatable :: a
type(my_array), dimension(5,5) :: b
allocate(a(3, 3))
a = b(1:3, 1:3)
Run Code Online (Sandbox Code Playgroud)

fortran

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

将 std::string 转换为 llvm::MemoryBuffer

我希望从现有的 LLVM IR 代码创建一个 LLVM 模块。

我发现的两种方法如下:

  • ParseIRFile- 这接受文件名并生成模块
  • ParseIR - 这接受 MemoryBuffer 并生成一个模块

当 LLVM IR 已作为std::stringor读取到字符串时,我想创建一个模块const char *

有没有办法将 IR 字符串转换为llvm::MemoryBuffer

llvm llvm-ir

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

替代python中的list.count()

我希望能够在python中为内置计数编写替代代码:此代码有效

def count(element,seq):
    """Counts how often an element occurs
    ...in a sequence"""
    mycount = seq.count(element)
    return mycount
Run Code Online (Sandbox Code Playgroud)

但我想用for循环(或其他方式)来编写它,我已经做到了这一点:

def count(element,seq):
    """Counts how often an element occurs
    ...in a sequence"""
    for i in seq:
        if  element == seq:
            print i
Run Code Online (Sandbox Code Playgroud)

我不确定如何将重新生成的元素作为整数返回.任何帮助赞赏!!

python

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