@@ -22,6 +22,7 @@ typedef __nv_bfloat162 __bfloat162;
22
22
typedef __nv_bfloat16 __bfloat16;
23
23
#endif
24
24
25
+ namespace vptq {
25
26
namespace cuda {
26
27
27
28
constexpr int kBlockSize = 256 ;
@@ -93,20 +94,8 @@ __device__ __forceinline__ void ldg_vec_x(
93
94
const int2 * src = (const int2 *)src_u32;
94
95
if constexpr (GROUPSIZE == 2 ) {
95
96
*dst_u32 = VPTQ_LDG (src_u32);
96
- // uint32_t* dec = (uint32_t*)dst;
97
- // asm volatile (
98
- // "ld.cg.global.v2.u32 {%0, %1}, [%2];"
99
- // : "=r"(dec[0]), "=r"(dec[1])
100
- // : "l"((const void*)src)
101
- // );
102
97
} else if constexpr (GROUPSIZE == 4 ) {
103
98
*dst = VPTQ_LDG (src);
104
- // uint32_t* dec = (uint32_t*)dst;
105
- // asm volatile (
106
- // "ld.cg.global.v2.u32 {%0, %1}, [%2];"
107
- // : "=r"(dec[0]), "=r"(dec[1])
108
- // : "l"((const void*)src)
109
- // );
110
99
} else if constexpr (GROUPSIZE == 6 ) {
111
100
dst_u32[0 ] = VPTQ_LDG (src_u32);
112
101
dst_u32[1 ] = VPTQ_LDG (src_u32 + 1 );
@@ -116,12 +105,6 @@ __device__ __forceinline__ void ldg_vec_x(
116
105
} else if constexpr (GROUPSIZE == 16 ) {
117
106
*(int4 *)dst = VPTQ_LDG ((const int4 *)src);
118
107
*(int4 *)(dst + 2 ) = VPTQ_LDG ((const int4 *)(src + 2 ));
119
- // asm volatile("ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
120
- // : "=r"(dst_u32[0]), "=r"(dst_u32[1]), "=r"(dst_u32[2]),
121
- // "=r"(dst_u32[3]) : "l"((const void*)src_u32));
122
- // asm volatile("ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
123
- // : "=r"(dst_u32[4]), "=r"(dst_u32[5]), "=r"(dst_u32[6]),
124
- // "=r"(dst_u32[7]) : "l"((const void*)(src_u32 + 4)));
125
108
} else if constexpr (GROUPSIZE == 12 ) {
126
109
if (uint64_t (src) % 16 ) {
127
110
dst[0 ] = VPTQ_LDG (src);
@@ -132,38 +115,11 @@ __device__ __forceinline__ void ldg_vec_x(
132
115
*(int4 *)dst = VPTQ_LDG ((int4 *)(src));
133
116
dst[2 ] = VPTQ_LDG ((src + 2 ));
134
117
}
135
- // dst[0] = VPTQ_LDG(src);
136
- // dst[1] = VPTQ_LDG((src+1));
137
- // dst[2] = VPTQ_LDG((src+2));
138
-
139
- // uint32_t* dec = (uint32_t*)dst;
140
- // asm volatile (
141
- // "ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
142
- // : "=r"(dec[0]), "=r"(dec[1]), "=r"(dec[2]), "=r"(dec[3])
143
- // : "l"((const void*)src)
144
- // );
145
- // asm volatile (
146
- // "ld.cg.global.v2.u32 {%0, %1}, [%2];"
147
- // : "=r"(dec[4]), "=r"(dec[5])
148
- // : "l"((const void*)src)
149
- // );
150
118
} else if constexpr (GROUPSIZE == 24 ) {
151
119
*((int4 *)(dst)) = VPTQ_LDG ((const int4 *)(src));
152
120
*(((int4 *)(dst)) + 1 ) = VPTQ_LDG (((const int4 *)(src)) + 1 );
153
121
*(((int4 *)(dst)) + 2 ) = VPTQ_LDG (((const int4 *)(src)) + 2 );
154
122
} else if constexpr (GROUPSIZE == 32 ) {
155
- // asm volatile("ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
156
- // : "=r"(dst_u32[0]), "=r"(dst_u32[1]), "=r"(dst_u32[2]),
157
- // "=r"(dst_u32[3]) : "l"((const void*)src_u32));
158
- // asm volatile("ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
159
- // : "=r"(dst_u32[4]), "=r"(dst_u32[5]), "=r"(dst_u32[6]),
160
- // "=r"(dst_u32[7]) : "l"((const void*)(src_u32 + 4)));
161
- // asm volatile("ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
162
- // : "=r"(dst_u32[8]), "=r"(dst_u32[9]), "=r"(dst_u32[10]),
163
- // "=r"(dst_u32[11]) : "l"((const void*)(src_u32 + 8)));
164
- // asm volatile("ld.cg.global.v4.u32 {%0, %1, %2, %3}, [%4];"
165
- // : "=r"(dst_u32[12]), "=r"(dst_u32[13]), "=r"(dst_u32[14]),
166
- // "=r"(dst_u32[15]) : "l"((const void*)(src_u32 + 12)));
167
123
*((int4 *)(dst)) = VPTQ_LDG ((const int4 *)(src));
168
124
*(((int4 *)(dst)) + 1 ) = VPTQ_LDG (((const int4 *)(src)) + 1 );
169
125
*(((int4 *)(dst)) + 2 ) = VPTQ_LDG (((const int4 *)(src)) + 2 );
@@ -203,7 +159,6 @@ template <typename T>
203
159
__forceinline__ T ceil_div (T a, T b) {
204
160
return (a + b - 1 ) / b;
205
161
}
206
-
207
162
} // namespace cuda
208
163
209
164
template <typename T>
@@ -288,3 +243,4 @@ __device__ __half operator*(const __half& a, const __half& b) {
288
243
return __hmul (a, b);
289
244
}
290
245
#endif
246
+ } // namespace vptq
0 commit comments