不支持调用PGI运行时函数 - pgf90_copy_f77_argl_i8
我相信我将8字节整数参数传递给!$ acc例程。
是否有任何解决方法或更新?
PGI编译器17.4
例如
height: calc(100% - 50px);
这里的func是acc例程,所以我想这种方法会产生一个问题。
我们将创建临时数组,然后传递它们。
答案 0 :(得分:1)
此例程在使用F77调用约定时检查传递的数组是否是连续的。如果它不连续,则运行时必须创建临时数组,以便连续传递数组切片。
虽然你说你传入了一个8字节的整数,但你是否也传入一个数组切片?
我们(PGI)确实有一个难题。 "解决方案"将是我们创建设备端运行时例程,模仿我们在主机上的行为。 但是,这意味着编译器可能需要在设备上为每个线程分配临时数组,将切片数据复制到临时数组,传入临时数组,然后将结果复制回主数组。但是,这绝对会破坏你的循环性能,所以不是我们真正想做的事情。
这是我们在内部辩论的内容。我们希望用户能够更轻松地移植他们的代码,但是知道如果我们添加这种支持,它将损害性能并且不明显为什么。所以现在,我们鼓励用户避免传递数组切片,而是传递基数组并为索引添加额外的参数。
不可否认,我们需要先处理错误消息,以便更清楚地了解问题。我已经推动了我们的编译团队,但它并不是直截了当的。与此同时,如果您看到其中任何一个" argl"运行时调用,这就是发生的事情。