CUDA disable L1 cache only for one variable

前端 未结 3 1350
别那么骄傲
别那么骄傲 2020-12-08 03:47

Is there any way on CUDA 2.0 devices to disable L1 cache only for one specific variable? I know that one can disable L1 cache at compile time adding the flag -Xptxas

3条回答
  •  一整个雨季
    2020-12-08 04:13

    As mentioned above you can use inline PTX, here is an example:

    __device__ __inline__ double ld_gbl_cg(const double *addr) {
      double return_value;
      asm("ld.global.cg.f64 %0, [%1];" : "=d"(return_value) : "l"(addr));
      return return_value;
    }
    

    You can easily vary this by swapping .f64 for .f32 (float) or .s32 (int) etc., the constraint of return_value "=d" for "=f" (float) or "=r" (int) etc. Note that the last constraint before (addr) - "l" - denotes 64 bit addressing, if you are using 32 bit addressing, it should be "r".

提交回复
热议问题