为GCC编译器的HSA分支制作示例

为GCC编译器的HSA分支制作示例,gcc,openmp,amd-processor,Gcc,Openmp,Amd Processor,我最近刚刚根据合同构建并安装了gcc的hsa分支。在我开始制作样本、向量和矩阵之前,一切都相对顺利。以下是我在运行make命令(同样,遵循wiki的建议)时为matrixMultiply得到的错误输出: 我正在使用Lubuntu15.04和标准内核(3.19)。由于Okra(HSA OpenMP GCC所需)尚未更新,无法与最新的驱动程序和固件一起使用,因此我使用的是与HSA 1.0暂定版而非1.0最终版相对应的稍旧的驱动程序和运行时组件。我已经“检查”了运行时和Okra,两个测试(分别是vec

我最近刚刚根据合同构建并安装了gcc的hsa分支。在我开始制作样本、向量和矩阵之前,一切都相对顺利。以下是我在运行make命令(同样,遵循wiki的建议)时为matrixMultiply得到的错误输出:

我正在使用Lubuntu15.04和标准内核(3.19)。由于Okra(HSA OpenMP GCC所需)尚未更新,无法与最新的驱动程序和固件一起使用,因此我使用的是与HSA 1.0暂定版而非1.0最终版相对应的稍旧的驱动程序和运行时组件。我已经“检查”了运行时和Okra,两个测试(分别是vector_copy和Squares)运行正常。我也能够在相同的设置下成功地使用aparapi lambda

硬件是Asus A88x Pro主板上的A10-7700k,内存为16Gb

那么,有人知道我为什么会犯这些错误吗?我怀疑GCC hsa分支已经按照1.0最终规范进行了更新,该规范尚未与Okra兼容,这将阻止任何人实际使用编译器,直到有人最终更新Okra。但是,我不能太肯定

编辑:这是新的生成文件:

GCCHSAIL=$(GCC_HSA)/bin/gcc
LDFLAGS=-lhsa-runtime64 -lhsa-runtime-ext64 -lhsakmt -L $(GCC_HSA)/lib64 -L ~/HSA-Runtime-AMD-master/lib -L opt/hsa/lib -L ~/libhsakmt/build/lnx64a -Wl,-rpath,$(GCC_HSA)/lib64  
CFLAGS=-lm -fopenmp -Wall -O3
all : matmul
clean :
    rm -rf *.o matmul test.output
# GCC Specifics
matmul.o :  matmul.c
    $(GCCHSAIL) -c $(CFLAGS) $< 
matmul : matmul.o 
    $(GCCHSAIL) matmul.o $(CFLAGS) -o $@  $(LDFLAGS)
不过,无论出于何种原因,现在的错误已经少了7个


编辑:问题已解决。GCC hsa分支已经开始支持hsa 1.0F,不再依赖Okra。这意味着我用来维护Okra兼容性的旧驱动程序组件和旧运行时与GCC hsa的当前版本不兼容。这应该足够简单,可以修复。感谢所有有关编译器开关的帮助。

未定义的引用是链接阶段缺少一个或多个库的明显标志。稍作互联网搜索就会发现,在您的案例中,保存缺失符号的库称为
libhsa-runtime64。因此
,因此您应该尝试使用
-lhsa-runtime64
编译应用程序,最终使用
-L/path/to/hsaruntime
将路径添加到包含库的目录中。嗯,这很有趣。谢谢你的提示!我会看看我是否能充分利用你的建议。好的,看上面的编辑。在makefile中添加各种-l和-l开关修复了一些问题,但不是所有问题。此外,我注意到一些头文件,如/opt/hsa/include中的hsa.h、hsa_ext_finalize.h、hsa_ext_image.h和okra.h。这些东西也可能丢失吗;我需要新的驱动程序和运行时。
GCCHSAIL=$(GCC_HSA)/bin/gcc
LDFLAGS=-lhsa-runtime64 -lhsa-runtime-ext64 -lhsakmt -L $(GCC_HSA)/lib64 -L ~/HSA-Runtime-AMD-master/lib -L opt/hsa/lib -L ~/libhsakmt/build/lnx64a -Wl,-rpath,$(GCC_HSA)/lib64  
CFLAGS=-lm -fopenmp -Wall -O3
all : matmul
clean :
    rm -rf *.o matmul test.output
# GCC Specifics
matmul.o :  matmul.c
    $(GCCHSAIL) -c $(CFLAGS) $< 
matmul : matmul.o 
    $(GCCHSAIL) matmul.o $(CFLAGS) -o $@  $(LDFLAGS)
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_ext_program_add_module'
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_executable_symbol_get_info'
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_executable_load_code_object'
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_executable_freeze'
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_executable_create'
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_executable_get_symbol'
/hsailgcc/lib64/libgomp.so: undefined reference to `hsa_ext_program_finalize'