1
运行时
thrust scan编译问题
2022-08-23 07:48:56
120

我在使用rocthrust的scan时编译报错

#include <thrust/scan.h>
#include <iostream>

#define array_size 6

int main()
{
int data[array_size] = {1, 0, 2, 2, 1, 3};
int *data_d;

hipMalloc((void**)&data_d,sizeof(int)*array_size);
hipMemcpy(data_d,data,sizeof(int)*array_size,hipMemcpyHostToDevice);

thrust::exclusive_scan(thrust::device, data_d, data_d+array_size, data_d);

int data_res[array_size];
hipMemcpy(data_res,data_d,sizeof(int)*array_size,hipMemcpyDeviceToHost);

for (int i=0;i<array_size;++i) {
	std::cout << data_res[i] << "\n";
}

return 0;

}

编译错误信息如下
这在老版本的rocm编译器上没有问题。对比两个版本的源码,发现这是由于thrust/system/cuda/config.h中加了一句#include <cub/util_namespace.cuh> 导致的。而我自己添加cub后又报了cub版本不匹配的错误。请问有无解决办法?attachmentId-image.png

全部评论(5)
只看楼主
T
tianlh
2楼
您好,我们在昆山平台编译运行没有问题,请提供一下您的编译环境和指令我们看下吧
2022/8/24
网
网友zf6pcR
回复 @tianlh

这是我的编译命令,您看看漏了什么参数呢?

#!/bin/bash

#BATCH -J compile_test

#SBATCH -N 1

#SBATCH -p kshctest

#SBATCH -n 1 #CPU核心数,可以设置1个

#SBATCH --mem=5g

hipcc --amdgpu-target=gfx906 -include hip/hip_runtime.h -std=c++14 -w --compile -x c++ -o "test_scan" "test_scan.cpp"
2022/8/25
L
liujie6
回复 @tianlh

一般加载过compiler/rocm/dtk-22.04.2,直接编译 hipcc test_scan.cpp -o demo就可以。

正常情况下hipcc 不需要指定 -x 参数的,这个参数会自动补齐。
2022/8/25
L
liujie6
1楼

dtk底层用的 .../thrust/system/hip/config.h,自己添加cub应该不行的,不应该用到thrust/system/cuda/config.h (这个是走cuda的分支)。

我用dtk-22.04.2试了下代码,编译 运行都没有问题呀。是不是编译哪里有问题?

//test_thrust_scan.cpp

#include <hip/hip_runtime.h>

#include <thrust/scan.h>

#include <iostream>

#define array_size 6

int main()

{

int data[array_size] = {1, 0, 2, 2, 1, 3};

int *data_d;

hipMalloc((void**)&data_d,sizeof(int)*array_size);

hipMemcpy(data_d,data,sizeof(int)*array_size,hipMemcpyHostToDevice);

thrust::exclusive_scan(thrust::device, data_d, data_d+array_size, data_d);

int data_res[array_size];

hipMemcpy(data_res,data_d,sizeof(int)*array_size,hipMemcpyDeviceToHost);

for (int i=0;i<array_size;++i) {

std::cout << data_res[i] << "\n";

}

return 0;

}

// 0 1 1 3 5 6
2022/8/24
网
网友zf6pcR
回复 @liujie6

这是我的编译命令,您看看是不是漏了什么参数呢

#!/bin/bash

#BATCH -J compile_test

#SBATCH -N 1

#SBATCH -p kshctest

#SBATCH -n 1 #CPU核心数,可以设置1个

#SBATCH --mem=5g

hipcc --amdgpu-target=gfx906 -include hip/hip_runtime.h -std=c++14 -w --compile -x c++ -o "test_scan" "test_scan.cpp"
2022/8/25
没有更多内容了
--
楼主
Level.4
0 帖子
楼主热帖
暂无数据