using microbench, with .cu modified to be simply:
extern "C" __global__ void microbench(int *out, int *clocks, int *in)
{
out[0] = 7.0f;
out[2] = 5.0f;
clocks[1] = 9.0f;
}
.cpp is modified slightly, since I'm on a 5.0, so I hacked microbench.cpp to accept this. It could be this is root cause for the issue in this issue?
if (major >= 5 && minor >= 0)
{
Then I do:
set -e
nvcc -l cuda -o microbench microbench.cpp
nvcc -arch sm_50 -cubin microbench.cu
maxas.pl -e microbench.cubin > microbench.sass
maxas.pl -i microbench.sass microbench.cubin
./microbench
... however it fails on the maxas.pl -i line with:
It is illegal to set a Read-After-Write dependency on a memory store op (store ops don't write to a register)
STG.E [R4], R6;
The .sass generated by maxas.pl -i looks like:
--:-:-:-:6 MOV R1, c[0x0][0x20];
--:-:-:-:1 MOV R0, param_1[0];
--:-:-:-:1 MOV R2, param_0[0];
--:-:-:-:4 MOV R3, param_0[1];
--:-:-:-:1 IADD32I R4.CC, R0, 0x4;
--:-:-:-:2 MOV32I R0, 0x7;
20:3:1:Y:7 IADD.X R5, RZ, param_1[1];
--:1:1:Y:4 STG.E [R4], R6;
--:-:-:Y:0 NOP;
--:-:-:Y:0 NOP;
--:-:-:Y:0 NOP;
Is this:
- because I'm using 5.0 system, and maxas only supports 5.2?
- a bug in
maxas.pl -e (since I cant see the 9.0f constant anywhere in the sass?, I'm immediately suspicious?)
- because I'm using not the latest versoin of maxas, which is eg in
neon repo?
- something I'm doing wrong (other than the cc5.0 thing) ?
- something else?