Skip to content

Commit 2fb55be

Browse files
committed
Merge commit '931a405558105ddcd7626f0aa617485db4b341cd'
2 parents 5242d3c + 931a405 commit 2fb55be

2 files changed

Lines changed: 236 additions & 2 deletions

File tree

lib/libmarv/src/gapless_kernel_config.cuh

Lines changed: 127 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,126 @@ namespace cudasw4{
208208
return configs;
209209
}
210210

211+
__inline__
212+
std::vector<GaplessKernelConfig> getOptimalKernelConfigs_gapless_sm103(){
213+
std::vector<GaplessKernelConfig> configs{
214+
{32, 4, 4, 1, GaplessKernelConfig::Approach::kernelparamzero },
215+
{64, 4, 8, 1, GaplessKernelConfig::Approach::hardcodedzero },
216+
{96, 4, 12, 1, GaplessKernelConfig::Approach::hardcodedzero },
217+
{128, 4, 16, 0, GaplessKernelConfig::Approach::hardcodedzero },
218+
{160, 4, 20, 1, GaplessKernelConfig::Approach::kernelparamzero },
219+
{192, 4, 24, 1, GaplessKernelConfig::Approach::kernelparamzero },
220+
{224, 4, 28, 1, GaplessKernelConfig::Approach::hardcodedzero },
221+
{256, 4, 32, 1, GaplessKernelConfig::Approach::kernelparamzero },
222+
{288, 4, 36, 1, GaplessKernelConfig::Approach::kernelparamzero },
223+
{320, 4, 40, 1, GaplessKernelConfig::Approach::kernelparamzero },
224+
{352, 4, 44, 1, GaplessKernelConfig::Approach::hardcodedzero },
225+
{384, 4, 48, 1, GaplessKernelConfig::Approach::hardcodedzero },
226+
{416, 4, 52, 1, GaplessKernelConfig::Approach::kernelparamzero },
227+
{448, 4, 56, 1, GaplessKernelConfig::Approach::hardcodedzero },
228+
{480, 4, 60, 1, GaplessKernelConfig::Approach::kernelparamzero },
229+
{512, 4, 64, 1, GaplessKernelConfig::Approach::hardcodedzero },
230+
{576, 8, 36, 1, GaplessKernelConfig::Approach::kernelparamzero },
231+
{640, 8, 40, 1, GaplessKernelConfig::Approach::kernelparamzero },
232+
{704, 8, 44, 1, GaplessKernelConfig::Approach::kernelparamzero },
233+
{768, 8, 48, 1, GaplessKernelConfig::Approach::kernelparamzero },
234+
{832, 8, 52, 1, GaplessKernelConfig::Approach::kernelparamzero },
235+
{896, 8, 56, 1, GaplessKernelConfig::Approach::kernelparamzero },
236+
{960, 8, 60, 1, GaplessKernelConfig::Approach::hardcodedzero },
237+
{1024, 8, 64, 1, GaplessKernelConfig::Approach::kernelparamzero },
238+
{1152, 16, 36, 1, GaplessKernelConfig::Approach::kernelparamzero },
239+
{1280, 16, 40, 1, GaplessKernelConfig::Approach::kernelparamzero },
240+
{1408, 16, 44, 1, GaplessKernelConfig::Approach::hardcodedzero },
241+
{1536, 16, 48, 1, GaplessKernelConfig::Approach::hardcodedzero },
242+
{1664, 16, 52, 1, GaplessKernelConfig::Approach::kernelparamzero },
243+
{1792, 16, 56, 1, GaplessKernelConfig::Approach::kernelparamzero },
244+
{1920, 16, 60, 1, GaplessKernelConfig::Approach::kernelparamzero },
245+
{2048, 16, 64, 1, GaplessKernelConfig::Approach::kernelparamzero }
246+
};
247+
248+
return configs;
249+
}
250+
251+
__inline__
252+
std::vector<GaplessKernelConfig> getOptimalKernelConfigs_gapless_sm120(){
253+
std::vector<GaplessKernelConfig> configs{
254+
{ 32, 4, 4, 0, GaplessKernelConfig::Approach::kernelparamzero },
255+
{ 64, 4, 8, 1, GaplessKernelConfig::Approach::hardcodedzero },
256+
{ 96, 4, 12, 1, GaplessKernelConfig::Approach::hardcodedzero },
257+
{ 128, 4, 16, 1, GaplessKernelConfig::Approach::hardcodedzero },
258+
{ 160, 4, 20, 1, GaplessKernelConfig::Approach::hardcodedzero },
259+
{ 192, 4, 24, 1, GaplessKernelConfig::Approach::hardcodedzero },
260+
{ 224, 4, 28, 1, GaplessKernelConfig::Approach::kernelparamzero },
261+
{ 256, 4, 32, 1, GaplessKernelConfig::Approach::hardcodedzero },
262+
{ 288, 4, 36, 1, GaplessKernelConfig::Approach::hardcodedzero },
263+
{ 320, 4, 40, 1, GaplessKernelConfig::Approach::hardcodedzero },
264+
{ 352, 4, 44, 1, GaplessKernelConfig::Approach::kernelparamzero },
265+
{ 384, 4, 48, 1, GaplessKernelConfig::Approach::hardcodedzero },
266+
{ 416, 4, 52, 1, GaplessKernelConfig::Approach::hardcodedzero },
267+
{ 448, 4, 56, 1, GaplessKernelConfig::Approach::hardcodedzero },
268+
{ 480, 4, 60, 1, GaplessKernelConfig::Approach::hardcodedzero },
269+
{ 512, 4, 64, 1, GaplessKernelConfig::Approach::hardcodedzero },
270+
{ 576, 8, 36, 1, GaplessKernelConfig::Approach::kernelparamzero },
271+
{ 640, 8, 40, 1, GaplessKernelConfig::Approach::hardcodedzero },
272+
{ 704, 8, 44, 1, GaplessKernelConfig::Approach::kernelparamzero },
273+
{ 768, 8, 48, 1, GaplessKernelConfig::Approach::kernelparamzero },
274+
{ 832, 8, 52, 1, GaplessKernelConfig::Approach::kernelparamzero },
275+
{ 896, 8, 56, 1, GaplessKernelConfig::Approach::kernelparamzero },
276+
{ 960, 8, 60, 1, GaplessKernelConfig::Approach::kernelparamzero },
277+
{ 1024, 8, 64, 1, GaplessKernelConfig::Approach::hardcodedzero },
278+
{ 1152, 16, 36, 1, GaplessKernelConfig::Approach::hardcodedzero },
279+
{ 1280, 16, 40, 1, GaplessKernelConfig::Approach::hardcodedzero },
280+
{ 1408, 16, 44, 1, GaplessKernelConfig::Approach::hardcodedzero },
281+
{ 1536, 16, 48, 1, GaplessKernelConfig::Approach::hardcodedzero },
282+
{ 1664, 16, 52, 1, GaplessKernelConfig::Approach::hardcodedzero },
283+
{ 1792, 16, 56, 1, GaplessKernelConfig::Approach::hardcodedzero },
284+
{ 1920, 16, 60, 1, GaplessKernelConfig::Approach::hardcodedzero },
285+
{ 2048, 16, 64, 1, GaplessKernelConfig::Approach::hardcodedzero }
286+
};
287+
288+
return configs;
289+
}
290+
291+
__inline__
292+
std::vector<GaplessKernelConfig> getOptimalKernelConfigs_gapless_sm121(){
293+
std::vector<GaplessKernelConfig> configs{
294+
{32, 4, 4, 1, GaplessKernelConfig::Approach::hardcodedzero },
295+
{64, 4, 8, 0, GaplessKernelConfig::Approach::hardcodedzero },
296+
{96, 4, 12, 1, GaplessKernelConfig::Approach::hardcodedzero },
297+
{128, 4, 16, 1, GaplessKernelConfig::Approach::hardcodedzero },
298+
{160, 4, 20, 1, GaplessKernelConfig::Approach::hardcodedzero },
299+
{192, 4, 24, 1, GaplessKernelConfig::Approach::kernelparamzero },
300+
{224, 4, 28, 1, GaplessKernelConfig::Approach::hardcodedzero },
301+
{256, 4, 32, 1, GaplessKernelConfig::Approach::hardcodedzero },
302+
{288, 4, 36, 1, GaplessKernelConfig::Approach::hardcodedzero },
303+
{320, 4, 40, 1, GaplessKernelConfig::Approach::hardcodedzero },
304+
{352, 4, 44, 1, GaplessKernelConfig::Approach::kernelparamzero },
305+
{384, 4, 48, 1, GaplessKernelConfig::Approach::kernelparamzero },
306+
{416, 4, 52, 1, GaplessKernelConfig::Approach::hardcodedzero },
307+
{448, 4, 56, 1, GaplessKernelConfig::Approach::hardcodedzero },
308+
{480, 4, 60, 1, GaplessKernelConfig::Approach::hardcodedzero },
309+
{512, 4, 64, 1, GaplessKernelConfig::Approach::hardcodedzero },
310+
{576, 8, 36, 1, GaplessKernelConfig::Approach::hardcodedzero },
311+
{640, 8, 40, 1, GaplessKernelConfig::Approach::hardcodedzero },
312+
{704, 8, 44, 1, GaplessKernelConfig::Approach::kernelparamzero },
313+
{768, 8, 48, 1, GaplessKernelConfig::Approach::hardcodedzero },
314+
{832, 8, 52, 1, GaplessKernelConfig::Approach::hardcodedzero },
315+
{896, 8, 56, 1, GaplessKernelConfig::Approach::hardcodedzero },
316+
{960, 8, 60, 1, GaplessKernelConfig::Approach::hardcodedzero },
317+
{1024, 8, 64, 1, GaplessKernelConfig::Approach::hardcodedzero },
318+
{1152, 16, 36, 1, GaplessKernelConfig::Approach::hardcodedzero },
319+
{1280, 16, 40, 1, GaplessKernelConfig::Approach::hardcodedzero },
320+
{1408, 16, 44, 1, GaplessKernelConfig::Approach::kernelparamzero },
321+
{1536, 16, 48, 1, GaplessKernelConfig::Approach::hardcodedzero },
322+
{1664, 16, 52, 1, GaplessKernelConfig::Approach::hardcodedzero },
323+
{1792, 16, 56, 1, GaplessKernelConfig::Approach::hardcodedzero },
324+
{1920, 16, 60, 1, GaplessKernelConfig::Approach::hardcodedzero },
325+
{2048, 16, 64, 1, GaplessKernelConfig::Approach::hardcodedzero },
326+
};
327+
328+
return configs;
329+
}
330+
211331
__inline__
212332
std::vector<GaplessKernelConfig> getOptimalKernelConfigs_gapless_default(){
213333
return getOptimalKernelConfigs_gapless_sm89();
@@ -230,6 +350,12 @@ namespace cudasw4{
230350
configs = getOptimalKernelConfigs_gapless_sm89();
231351
}else if(ccMajor == 9 && ccMinor == 0){
232352
configs = getOptimalKernelConfigs_gapless_sm90();
353+
}else if(ccMajor == 10 && ccMinor == 3){
354+
configs = getOptimalKernelConfigs_gapless_sm103();
355+
}else if(ccMajor == 12 && ccMinor == 0){
356+
configs = getOptimalKernelConfigs_gapless_sm120();
357+
}else if(ccMajor == 12 && ccMinor == 1){
358+
configs = getOptimalKernelConfigs_gapless_sm121();
233359
}else{
234360
configs = getOptimalKernelConfigs_gapless_default();
235361
}
@@ -240,4 +366,4 @@ namespace cudasw4{
240366

241367
}
242368

243-
#endif
369+
#endif

lib/libmarv/src/smithwaterman_kernel_config.cuh

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,108 @@ namespace cudasw4{
182182
return configs;
183183
}
184184

185+
__inline__
186+
std::vector<SmithWatermanKernelConfig> getOptimalKernelConfigs_SW_sm103(){
187+
std::vector<SmithWatermanKernelConfig> configs{
188+
{16, 4, 4, 1, SmithWatermanKernelConfig::Approach::Unused },
189+
{32, 4, 8, 1, SmithWatermanKernelConfig::Approach::Unused },
190+
{48, 4, 12, 1, SmithWatermanKernelConfig::Approach::Unused },
191+
{64, 4, 16, 1, SmithWatermanKernelConfig::Approach::Unused },
192+
{80, 4, 20, 1, SmithWatermanKernelConfig::Approach::Unused },
193+
{96, 4, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
194+
{112, 4, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
195+
{128, 4, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
196+
{144, 4, 36, 1, SmithWatermanKernelConfig::Approach::Unused },
197+
{160, 8, 20, 1, SmithWatermanKernelConfig::Approach::Unused },
198+
{176, 4, 44, 1, SmithWatermanKernelConfig::Approach::Unused },
199+
{192, 8, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
200+
{224, 8, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
201+
{256, 8, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
202+
{288, 8, 36, 1, SmithWatermanKernelConfig::Approach::Unused },
203+
{320, 8, 40, 1, SmithWatermanKernelConfig::Approach::Unused },
204+
{352, 8, 44, 1, SmithWatermanKernelConfig::Approach::Unused },
205+
{384, 16, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
206+
{448, 16, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
207+
{512, 16, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
208+
{576, 16, 36, 1, SmithWatermanKernelConfig::Approach::Unused },
209+
{640, 16, 40, 1, SmithWatermanKernelConfig::Approach::Unused },
210+
{704, 16, 44, 1, SmithWatermanKernelConfig::Approach::Unused },
211+
{768, 32, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
212+
{896, 32, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
213+
{1024, 32, 32, 1, SmithWatermanKernelConfig::Approach::Unused }
214+
};
215+
216+
return configs;
217+
}
218+
219+
__inline__
220+
std::vector<SmithWatermanKernelConfig> getOptimalKernelConfigs_SW_sm120(){
221+
std::vector<SmithWatermanKernelConfig> configs{
222+
{ 16, 4, 4, 1, SmithWatermanKernelConfig::Approach::Unused },
223+
{ 32, 4, 8, 1, SmithWatermanKernelConfig::Approach::Unused },
224+
{ 48, 4, 12, 1, SmithWatermanKernelConfig::Approach::Unused },
225+
{ 64, 4, 16, 1, SmithWatermanKernelConfig::Approach::Unused },
226+
{ 80, 4, 20, 1, SmithWatermanKernelConfig::Approach::Unused },
227+
{ 96, 4, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
228+
{ 112, 4, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
229+
{ 128, 4, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
230+
{ 144, 4, 36, 1, SmithWatermanKernelConfig::Approach::Unused },
231+
{ 160, 8, 20, 1, SmithWatermanKernelConfig::Approach::Unused },
232+
{ 176, 4, 44, 1, SmithWatermanKernelConfig::Approach::Unused },
233+
{ 192, 8, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
234+
{ 224, 8, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
235+
{ 256, 8, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
236+
{ 288, 8, 36, 1, SmithWatermanKernelConfig::Approach::Unused },
237+
{ 320, 16, 20, 1, SmithWatermanKernelConfig::Approach::Unused },
238+
{ 352, 8, 44, 1, SmithWatermanKernelConfig::Approach::Unused },
239+
{ 384, 16, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
240+
{ 448, 16, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
241+
{ 512, 16, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
242+
{ 576, 16, 36, 1, SmithWatermanKernelConfig::Approach::Unused },
243+
{ 640, 32, 20, 1, SmithWatermanKernelConfig::Approach::Unused },
244+
{ 704, 16, 44, 1, SmithWatermanKernelConfig::Approach::Unused },
245+
{ 768, 32, 24, 1, SmithWatermanKernelConfig::Approach::Unused },
246+
{ 896, 32, 28, 1, SmithWatermanKernelConfig::Approach::Unused },
247+
{ 1024, 32, 32, 1, SmithWatermanKernelConfig::Approach::Unused },
248+
};
249+
250+
return configs;
251+
}
252+
253+
__inline__
254+
std::vector<SmithWatermanKernelConfig> getOptimalKernelConfigs_SW_sm121(){
255+
std::vector<SmithWatermanKernelConfig> configs{
256+
{16, 4, 4, 1, SmithWatermanKernelConfig::Approach::Unused},
257+
{32, 4, 8, 1, SmithWatermanKernelConfig::Approach::Unused},
258+
{48, 4, 12, 1, SmithWatermanKernelConfig::Approach::Unused},
259+
{64, 4, 16, 0, SmithWatermanKernelConfig::Approach::Unused},
260+
{80, 4, 20, 0, SmithWatermanKernelConfig::Approach::Unused},
261+
{96, 4, 24, 0, SmithWatermanKernelConfig::Approach::Unused},
262+
{112, 4, 28, 0, SmithWatermanKernelConfig::Approach::Unused},
263+
{128, 4, 32, 0, SmithWatermanKernelConfig::Approach::Unused},
264+
{144, 4, 36, 0, SmithWatermanKernelConfig::Approach::Unused},
265+
{160, 8, 20, 0, SmithWatermanKernelConfig::Approach::Unused},
266+
{176, 4, 44, 0, SmithWatermanKernelConfig::Approach::Unused},
267+
{192, 8, 24, 0, SmithWatermanKernelConfig::Approach::Unused},
268+
{224, 8, 28, 0, SmithWatermanKernelConfig::Approach::Unused},
269+
{256, 8, 32, 0, SmithWatermanKernelConfig::Approach::Unused},
270+
{288, 8, 36, 0, SmithWatermanKernelConfig::Approach::Unused},
271+
{320, 8, 40, 0, SmithWatermanKernelConfig::Approach::Unused},
272+
{352, 8, 44, 0, SmithWatermanKernelConfig::Approach::Unused},
273+
{384, 16, 24, 0, SmithWatermanKernelConfig::Approach::Unused},
274+
{448, 16, 28, 0, SmithWatermanKernelConfig::Approach::Unused},
275+
{512, 16, 32, 0, SmithWatermanKernelConfig::Approach::Unused},
276+
{576, 16, 36, 0, SmithWatermanKernelConfig::Approach::Unused},
277+
{640, 16, 40, 0, SmithWatermanKernelConfig::Approach::Unused},
278+
{704, 16, 44, 0, SmithWatermanKernelConfig::Approach::Unused},
279+
{768, 32, 24, 0, SmithWatermanKernelConfig::Approach::Unused},
280+
{896, 32, 28, 0, SmithWatermanKernelConfig::Approach::Unused},
281+
{1024, 32, 32, 0, SmithWatermanKernelConfig::Approach::Unused},
282+
};
283+
284+
return configs;
285+
}
286+
185287
__inline__
186288
std::vector<SmithWatermanKernelConfig> getOptimalKernelConfigs_SW_default(){
187289
return getOptimalKernelConfigs_SW_sm89();
@@ -204,6 +306,12 @@ namespace cudasw4{
204306
configs = getOptimalKernelConfigs_SW_sm89();
205307
}else if(ccMajor == 9 && ccMinor == 0){
206308
configs = getOptimalKernelConfigs_SW_sm90();
309+
}else if(ccMajor == 10 && ccMinor == 3){
310+
configs = getOptimalKernelConfigs_SW_sm103();
311+
}else if(ccMajor == 12 && ccMinor == 0){
312+
configs = getOptimalKernelConfigs_SW_sm120();
313+
}else if(ccMajor == 12 && ccMinor == 1){
314+
configs = getOptimalKernelConfigs_SW_sm121();
207315
}else{
208316
configs = getOptimalKernelConfigs_SW_default();
209317
}
@@ -214,4 +322,4 @@ namespace cudasw4{
214322

215323
}
216324

217-
#endif
325+
#endif

0 commit comments

Comments
 (0)