小编ami*_*mir的帖子

使CMake库可以自动访问其他CMake包

我有一个产生库的项目:

project (myCoolLibrary)
ADD_LIBRARY(my_cool_library SHARED ${mysources_SRC})
Run Code Online (Sandbox Code Playgroud)

另一个应该使用这个库的项目:

find_package (myCoolLibrary REQUIRED)
INCLUDE_DIRECTORIES("${myCoolLibrary_INCLUDE_DIRS}" )
add_executable(myCoolExe ${my_sources_SRC} )
TARGET_LINK_LIBRARIES(myCoolExe ${myCoolLibrary_LIBRARIES} )
Run Code Online (Sandbox Code Playgroud)

有没有办法可以更改第一个文件,以便第二个文件自动运行?通过在第一个文件上运行CMake然后在输出上运行make,然后在第二个文件上运行CMake,CMake能够找到包吗?

我只是将第一个项目的构建地址提供给第二个包的答案也是可以接受的.

cmake

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

如何使用Thrust来排序矩阵的行?

我有一个5000x500矩阵,我想用cuda分别对每行进行排序.我可以使用arrayfire,但这只是关于thrust :: sort的for循环,这应该不高效.

https://github.com/arrayfire/arrayfire/blob/devel/src/backend/cuda/kernel/sort.hpp

for(dim_type w = 0; w < val.dims[3]; w++) {
            dim_type valW = w * val.strides[3];
            for(dim_type z = 0; z < val.dims[2]; z++) {
                dim_type valWZ = valW + z * val.strides[2];
                for(dim_type y = 0; y < val.dims[1]; y++) {

                    dim_type valOffset = valWZ + y * val.strides[1];

                    if(isAscending) {
                        thrust::sort(val_ptr + valOffset, val_ptr + valOffset + val.dims[0]);
                    } else {
                        thrust::sort(val_ptr + valOffset, val_ptr + valOffset + val.dims[0],
                                     thrust::greater<T>());
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法融合推力操作,以便排序并行?实际上,我正在寻找的是融合循环迭代的通用方法.

sorting cuda thrust

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

在C++ 1y中从模板化基础派生的类型上使用std :: move on unique_ptr

尝试std::move在从另一种类型派生的模板化类型上使用语义时,我遇到了问题.那是我在下面的例子中得到一个错误.

#include <memory>

template <typename T>
class A{
};

template <typename T>
class B:A<T>{
};

int main()
{
  std::unique_ptr<B<int> > bar(new  B<int>());    
  std::unique_ptr<A<int> > foo (std::move(bar));
}
Run Code Online (Sandbox Code Playgroud)

错误在定义foo的行上,它是:

In function 'int main()':
17:47: error: no matching function for call to 'std::unique_ptr<A<int> >::unique_ptr(std::remove_reference<std::unique_ptr<B<int> >&>::type)'
Run Code Online (Sandbox Code Playgroud)

显然,非模板化的等效工作正常.

c++ gcc unique-ptr c++11 c++14

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

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

cmake ×1

cuda ×1

gcc ×1

sorting ×1

thrust ×1

unique-ptr ×1