Multi Architectures runtime problem

We use to have -gencode=arch=compute_20,code=sm_20 which works fine for Kepler architecture.

For supporting more architectures, we use the following command:
-gencode=arch=compute_30,code=sm_30
-gencode=arch=compute_35,code=sm_35
-gencode=arch=compute_50,code=sm_50
-gencode=arch=compute_52,code=sm_52
-gencode=arch=compute_60,code=sm_60
-gencode=arch=compute_61,code=sm_61
-gencode=arch=compute_61,code=compute_61

After that we got Cudr Module 200 error:
/**
* This indicates that the device kernel image is invalid. This can also
* indicate an invalid CUDA module.
*/
CUDA_ERROR_INVALID_IMAGE = 200,

Anyone has a clue?
Thanks.

BTW, we use CUDA 8.0.

If you dropped 20 and run on a fermi gpu, you will get that error.

I tried, looks like if we use driver function directly, we do not need multi architecture.
driver function load the module from ptx and run in JIT mode.
Only runtime lib uses multi architecture.
Please comment if it is true.