这几年我用vim编程,我使用了ctags.我正在使用一个相当大的C/C++包,我需要找到函数的定义.我通常使用grep + ctags.最近我尝试使用cscope而不是ctags并将其与Vundle一起安装.我看到一些文件出现以下错误
E568: duplicate cscope database not added
Run Code Online (Sandbox Code Playgroud)
我搜索了网络,发现了这个:https: //blogs.oracle.com/natarajan/entry/avoiding_duplicate_cscope_database_error 它不起作用.
我怎样才能解决这个问题?
我想要一个算法来计算具有给定汉明重量的固定大小二进制数的所有排列.例如,如果汉明重量为2且二进制大小为4,则有以下输出:
0011
0110
0101
1100
1010
1001
Run Code Online (Sandbox Code Playgroud)
如C(n,r)在该示例C(4,2)中那样计算这种组合的数量,其为6.
请注意,您可以通过将数字从0增加到2 ^ n并查看计数是否正常来解决此问题.但是,它不是一个快速的解决方案.我正在考虑使用C++中的bitset类解决问题,我需要增加N.
我想补充一点,这个问题有一个明显的递归算法.由于堆栈溢出,这不是一个好的答案.我从Gosper的黑客那里得到了一个很好的答案.虽然,我需要扩大输入,并可能稍后使用MPI实现,我需要一个可扩展的库.unsigned int不够大,我宁愿像bitset一样可扩展且快速的库.此处的解决方案不适用,而bitset库中没有添加.还有其他方法吗?
我正在编写一个 OpenMP 代码,在不同的线程中调用不同的 BLAS 内核,主要是具有不同大小的 DGEMM。为了最大限度地提高性能,我想控制我为每个 BLAS 调用的线程数。看起来这是一个非常明显的基本需求,尽管它很难做到。
OpenBLAS有一个功能openblas_set_num_threads(int n),在OpenBLAS代码的README文件中是这样描述的
这些仅在库初始化时使用一次,不可用于在单个 BLAS 调用中微调线程数。
所以我想我不能在 OpenBLAS 中使用这个功能。
MKL 有一个功能mkl_set_num_threads_local(int nt),当我使用 MKL 时,它似乎是我问题的答案。
有没有办法可以为每个 BLAS 调用调整线程数,而不管我使用的是什么库?(理想的选择)如果不是,是不是只有 MKL 才能让我调整线程数?
我在一个有自己的 Makefile 的库中工作,所以我使用我自己的 Makefile 调用my_makefile并使用make -f my_makefile
我的问题是如何告诉 Vim 这my_makefile是一个实际的 Makefile 并使用它用于 Makefile 的配色方案。
现在很难阅读它。
最近,我遇到了一个示例,我的析构函数需要一个参数.
我正在开发一个内部管理内存的C包,并跟踪自己的参数分配和释放.我不想打破这个.
我编写了一个C代码,它初始化了我自己的数据结构并在最后释放它们.当我决定迁移到C++时,我意识到分配数据结构并释放它们应该放在构造函数和析构函数中.所以我将这些函数更改为构造函数和析构函数.我现在的问题是我需要使用一个参数传递给析构函数以释放分配的数据; 该参数不在我自己的代码中,而且是C,我不想搞砸.
我的问题是双重的:
为什么C++首先决定不接受析构函数中的参数?我有什么选择?(我可以保存一个指向该参数的指针,或者以某种方式在我的析构函数中调用该函数,但它似乎不是C++编程的好习惯)
更新:添加一些代码这是我想象的类:
class paru_symbolic/* paru_symbolic*/
{
public:
paru_symbolic ( cholmod_sparse *A, cholmod_common *cc ); // constructor
~paru_symbolic (cholmod_common *cc ); // destructor
// -------------------------------------------------------------------------
// row-form of the input matrix and its permutations
// -----------------------------------------------------------------------
//--- other stuff
...
};
Run Code Online (Sandbox Code Playgroud)
这是我当前的C构造函数:
#include "Parallel_LU.hpp"
paru_symbolic *paru_sym_analyse
(
// inputs, not modified
cholmod_sparse *A,
// workspace and parameters
cholmod_common *cc ){
DEBUGLEVEL(0);
...
aParent = (Int*) paru_alloc (m+nf, sizeof(Int),cc);
...
}
Run Code Online (Sandbox Code Playgroud)
和析构函数:
void paru_freesym (paru_symbolic **LUsym_handle,
// …Run Code Online (Sandbox Code Playgroud)