@@ -316,6 +316,66 @@ def ptxas_supported_isa_versions(ptxas):
316316 versions .append ((int (match .group (1 )), int (match .group (2 ))))
317317 return versions
318318
319+ def ptxas_add_isa_features (major_version , minor_version ):
320+ supported_isa_versions = ptxas_supported_isa_versions (ptxas_executable )
321+ if supported_isa_versions :
322+ for major_version , minor_version in supported_isa_versions :
323+ config .available_features .add (
324+ "ptxas(isa-{}.{})" .format (major_version , minor_version )
325+ )
326+ return
327+ if major_version >= 13 :
328+ raise RuntimeError ("ptxas {} does not support ISA version listing" .format (ptxas_executable ))
329+ # Use a more pythonic approach: define a list of (major, minor, feature) tuples and iterate.
330+ isa_features = [
331+ (12 , 9 , "ptxas(isa-8.8)" ),
332+ (12 , 8 , "ptxas(isa-8.7)" ),
333+ (12 , 7 , "ptxas(isa-8.6)" ),
334+ (12 , 6 , "ptxas(isa-8.5)" ),
335+ (12 , 5 , "ptxas(isa-8.5)" ),
336+ (12 , 4 , "ptxas(isa-8.4)" ),
337+ (12 , 3 , "ptxas(isa-8.3)" ),
338+ (12 , 2 , "ptxas(isa-8.2)" ),
339+ (12 , 1 , "ptxas(isa-8.1)" ),
340+ (12 , 0 , "ptxas(isa-8.0)" ),
341+ (11 , 8 , "ptxas(isa-7.8)" ),
342+ (11 , 7 , "ptxas(isa-7.7)" ),
343+ (11 , 6 , "ptxas(isa-7.6)" ),
344+ (11 , 5 , "ptxas(isa-7.5)" ),
345+ (11 , 4 , "ptxas(isa-7.4)" ),
346+ (11 , 3 , "ptxas(isa-7.3)" ),
347+ (11 , 2 , "ptxas(isa-7.2)" ),
348+ (11 , 1 , "ptxas(isa-7.1)" ),
349+ (11 , 0 , "ptxas(isa-7.0)" ),
350+ (10 , 2 , "ptxas(isa-6.5)" ),
351+ (10 , 1 , "ptxas(isa-6.4)" ),
352+ (10 , 0 , "ptxas(isa-6.3)" ),
353+ (9 , 2 , "ptxas(isa-6.2)" ),
354+ (9 , 1 , "ptxas(isa-6.1)" ),
355+ (9 , 0 , "ptxas(isa-6.0)" ),
356+ (8 , 0 , "ptxas(isa-5.0)" ),
357+ (7 , 5 , "ptxas(isa-4.3)" ),
358+ (7 , 0 , "ptxas(isa-4.2)" ),
359+ (6 , 5 , "ptxas(isa-4.1)" ),
360+ (6 , 0 , "ptxas(isa-4.0)" ),
361+ (5 , 5 , "ptxas(isa-3.2)" ),
362+ (5 , 0 , "ptxas(isa-3.1)" ),
363+ (4 , 1 , "ptxas(isa-3.0)" ),
364+ (4 , 0 , "ptxas(isa-2.3)" ),
365+ (3 , 2 , "ptxas(isa-2.2)" ),
366+ (3 , 1 , "ptxas(isa-2.1)" ),
367+ (3 , 0 , "ptxas(isa-2.0)" ),
368+ (3 , 0 , "ptxas(isa-1.5)" ),
369+ (2 , 2 , "ptxas(isa-1.4)" ),
370+ (2 , 1 , "ptxas(isa-1.3)" ),
371+ (2 , 0 , "ptxas(isa-1.2)" ),
372+ (1 , 1 , "ptxas(isa-1.1)" ),
373+ (1 , 0 , "ptxas(isa-1.0)" ),
374+ ]
375+ for major , minor , feature in isa_features :
376+ if major_version >= major and minor_version >= minor :
377+ config .available_features .add (feature )
378+
319379
320380def ptxas_supported_sms (ptxas_executable ):
321381 result = subprocess .run (
@@ -356,102 +416,7 @@ def enable_ptxas(ptxas_executable):
356416 major_version , minor_version = ptxas_version (ptxas_executable )
357417 config .available_features .add ("ptxas-{}.{}" .format (major_version , minor_version ))
358418
359- supported_isa_versions = ptxas_supported_isa_versions (ptxas_executable )
360- if supported_isa_versions :
361- for major_version , minor_version in supported_isa_versions :
362- config .available_features .add (
363- "ptxas(isa-{}.{})" .format (major_version , minor_version )
364- )
365- else :
366- if major_version >= 13 :
367- raise RuntimeError ("ptxas {} does not support ISA version listing" .format (ptxas_executable ))
368- if major_version >= 12 and minor_version >= 9 :
369- config .available_features .add ("ptxas(isa-8.8)" )
370- if major_version >= 12 and minor_version >= 8 :
371- config .available_features .add ("ptxas(isa-8.7)" )
372- if major_version >= 12 and minor_version >= 7 :
373- config .available_features .add ("ptxas(isa-8.6)" )
374- if major_version >= 12 and minor_version >= 6 :
375- config .available_features .add ("ptxas(isa-8.5)" )
376- if major_version >= 12 and minor_version >= 5 :
377- config .available_features .add ("ptxas(isa-8.5)" )
378- if major_version >= 12 and minor_version >= 4 :
379- config .available_features .add ("ptxas(isa-8.4)" )
380- if major_version >= 12 and minor_version >= 3 :
381- config .available_features .add ("ptxas(isa-8.3)" )
382- if major_version >= 12 and minor_version >= 2 :
383- config .available_features .add ("ptxas(isa-8.2)" )
384- if major_version >= 12 and minor_version >= 1 :
385- config .available_features .add ("ptxas(isa-8.1)" )
386- if major_version >= 12 and minor_version >= 0 :
387- config .available_features .add ("ptxas(isa-8.0)" )
388- if major_version >= 11 and minor_version >= 8 :
389- config .available_features .add ("ptxas(isa-7.8)" )
390- if major_version >= 11 and minor_version >= 7 :
391- config .available_features .add ("ptxas(isa-7.7)" )
392- if major_version >= 11 and minor_version >= 6 :
393- config .available_features .add ("ptxas(isa-7.6)" )
394- if major_version >= 11 and minor_version >= 5 :
395- config .available_features .add ("ptxas(isa-7.5)" )
396- if major_version >= 11 and minor_version >= 4 :
397- config .available_features .add ("ptxas(isa-7.4)" )
398- if major_version >= 11 and minor_version >= 3 :
399- config .available_features .add ("ptxas(isa-7.3)" )
400- if major_version >= 11 and minor_version >= 2 :
401- config .available_features .add ("ptxas(isa-7.2)" )
402- if major_version >= 11 and minor_version >= 1 :
403- config .available_features .add ("ptxas(isa-7.1)" )
404- if major_version >= 11 and minor_version >= 0 :
405- config .available_features .add ("ptxas(isa-7.0)" )
406- if major_version >= 10 and minor_version >= 2 :
407- config .available_features .add ("ptxas(isa-6.5)" )
408- if major_version >= 10 and minor_version >= 1 :
409- config .available_features .add ("ptxas(isa-6.4)" )
410- if major_version >= 10 and minor_version >= 0 :
411- config .available_features .add ("ptxas(isa-6.3)" )
412- if major_version >= 9 and minor_version >= 2 :
413- config .available_features .add ("ptxas(isa-6.2)" )
414- if major_version >= 9 and minor_version >= 1 :
415- config .available_features .add ("ptxas(isa-6.1)" )
416- if major_version >= 9 and minor_version >= 0 :
417- config .available_features .add ("ptxas(isa-6.0)" )
418- if major_version >= 8 and minor_version >= 0 :
419- config .available_features .add ("ptxas(isa-5.0)" )
420- if major_version >= 7 and minor_version >= 5 :
421- config .available_features .add ("ptxas(isa-4.3)" )
422- if major_version >= 7 and minor_version >= 0 :
423- config .available_features .add ("ptxas(isa-4.2)" )
424- if major_version >= 6 and minor_version >= 5 :
425- config .available_features .add ("ptxas(isa-4.1)" )
426- if major_version >= 6 and minor_version >= 0 :
427- config .available_features .add ("ptxas(isa-4.0)" )
428- if major_version >= 5 and minor_version >= 5 :
429- config .available_features .add ("ptxas(isa-3.2)" )
430- if major_version >= 5 and minor_version >= 0 :
431- config .available_features .add ("ptxas(isa-3.1)" )
432- if major_version >= 4 and minor_version >= 2 :
433- config .available_features .add ("ptxas(isa-3.0)" )
434- if major_version >= 4 and minor_version >= 1 :
435- config .available_features .add ("ptxas(isa-3.0)" )
436- if major_version >= 4 and minor_version >= 0 :
437- config .available_features .add ("ptxas(isa-2.3)" )
438- if major_version >= 3 and minor_version >= 2 :
439- config .available_features .add ("ptxas(isa-2.2)" )
440- if major_version >= 3 and minor_version >= 1 :
441- config .available_features .add ("ptxas(isa-2.1)" )
442- if major_version >= 3 and minor_version >= 0 :
443- config .available_features .add ("ptxas(isa-2.0)" )
444- config .available_features .add ("ptxas(isa-1.5)" )
445- if major_version >= 2 and minor_version >= 2 :
446- config .available_features .add ("ptxas(isa-1.4)" )
447- if major_version >= 2 and minor_version >= 1 :
448- config .available_features .add ("ptxas(isa-1.3)" )
449- if major_version >= 2 and minor_version >= 0 :
450- config .available_features .add ("ptxas(isa-1.2)" )
451- if major_version >= 1 and minor_version >= 1 :
452- config .available_features .add ("ptxas(isa-1.1)" )
453- if major_version >= 1 and minor_version >= 0 :
454- config .available_features .add ("ptxas(isa-1.0)" )
419+ ptxas_add_isa_features (major_version , minor_version )
455420
456421 for sm in ptxas_supported_sms (ptxas_executable ):
457422 config .available_features .add ("ptxas(sm_{})" .format (sm ))
0 commit comments