@@ -74,113 +74,133 @@ static CudaDll() {
7474 }
7575 }
7676
77- static IEnumerable < ( int major , int minor ) > VersionList {
77+ static IReadOnlyList < ( int major , int minor ) > VersionList {
7878 get {
79+ List < ( int major , int minor ) > versions = new ( ) ;
80+
7981 for ( int major = 11 ; major >= 10 ; major -- ) {
8082 for ( int minor = 9 ; minor >= 0 ; minor -- ) {
81- yield return ( major , minor ) ;
83+ versions . Add ( ( major , minor ) ) ;
8284 }
8385 }
86+
87+ return versions ;
8488 }
8589 }
8690
87- static IEnumerable < string > NvcudaLibraryNames {
91+ static IReadOnlyList < string > NvcudaLibraryNames {
8892 get {
93+ List < string > libnames = new ( ) ;
94+
8995 if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) ) {
90- yield return "nvcuda.dll" ;
96+ libnames . Add ( "nvcuda.dll" ) ;
9197 }
9298 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) ) {
93- yield return "libcuda.so" ;
99+ libnames . Add ( "libcuda.so" ) ;
94100 }
95101 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . OSX ) ) {
96- yield return "libcuda.dylib" ;
102+ libnames . Add ( "libcuda.dylib" ) ;
97103 }
98104 else {
99105 throw new NotSupportedException ( RuntimeInformation . OSDescription ) ;
100106 }
107+
108+ return libnames ;
101109 }
102110 }
103111
104- static IEnumerable < string > CudaLibraryNames {
112+ static IReadOnlyList < string > CudaLibraryNames {
105113 get {
114+ List < string > libnames = new ( ) ;
115+
106116 if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) ) {
107117 foreach ( ( int major , int minor ) in VersionList ) {
108- yield return $ "cudart64_{ major } { minor } .dll";
118+ libnames . Add ( $ "cudart64_{ major } { minor } .dll") ;
109119 }
110120
111- yield return "cudart64.dll" ;
121+ libnames . Add ( "cudart64.dll" ) ;
112122 }
113123 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) ) {
114124 foreach ( ( int major , int minor ) in VersionList ) {
115- yield return $ "libcudart.so.{ major } .{ minor } ";
125+ libnames . Add ( $ "libcudart.so.{ major } .{ minor } ") ;
116126 }
117127
118- yield return "libcudart.so" ;
128+ libnames . Add ( "libcudart.so" ) ;
119129 }
120130 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . OSX ) ) {
121131 foreach ( ( int major , int minor ) in VersionList ) {
122- yield return $ "libcudart.{ major } .{ minor } .dylib";
132+ libnames . Add ( $ "libcudart.{ major } .{ minor } .dylib") ;
123133 }
124134
125- yield return "libcudart.dylib" ;
135+ libnames . Add ( "libcudart.dylib" ) ;
126136 }
127137 else {
128138 throw new NotSupportedException ( RuntimeInformation . OSDescription ) ;
129139 }
140+
141+ return libnames ;
130142 }
131143 }
132144
133- static IEnumerable < string > NvrtcLibraryNames {
145+ static IReadOnlyList < string > NvrtcLibraryNames {
134146 get {
147+ List < string > libnames = new ( ) ;
148+
135149 if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) ) {
136150 foreach ( ( int major , int minor ) in VersionList ) {
137- yield return $ "nvrtc64_{ major } { minor } _0.dll";
151+ libnames . Add ( $ "nvrtc64_{ major } { minor } _0.dll") ;
138152 }
139153
140- yield return "nvrtc64.dll" ;
154+ libnames . Add ( "nvrtc64.dll" ) ;
141155 }
142156 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) ) {
143157 foreach ( ( int major , int minor ) in VersionList ) {
144- yield return $ "libnvrtc.so.{ major } .{ minor } ";
158+ libnames . Add ( $ "libnvrtc.so.{ major } .{ minor } ") ;
145159 }
146160
147- yield return "libnvrtc.so" ;
161+ libnames . Add ( "libnvrtc.so" ) ;
148162 }
149163 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . OSX ) ) {
150164 foreach ( ( int major , int minor ) in VersionList ) {
151- yield return $ "libnvrtc.{ major } .{ minor } .dylib";
165+ libnames . Add ( $ "libnvrtc.{ major } .{ minor } .dylib") ;
152166 }
153167
154- yield return "libnvrtc.dylib" ;
168+ libnames . Add ( "libnvrtc.dylib" ) ;
155169 }
156170 else {
157171 throw new NotSupportedException ( RuntimeInformation . OSDescription ) ;
158172 }
173+
174+ return libnames ;
159175 }
160176 }
161177
162- static IEnumerable < ( int version , string libname ) > CudnnLibraryNames {
178+ static IReadOnlyList < ( int version , string libname ) > CudnnLibraryNames {
163179 get {
180+ List < ( int version , string libname ) > libnames = new ( ) ;
181+
164182 int [ ] cudnn_versions = new int [ ] { 8 , 7 } ;
165183
166184 if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) ) {
167185 foreach ( int version in cudnn_versions ) {
168- yield return ( version , $ "cudnn64_{ version } .dll") ;
186+ libnames . Add ( ( version , $ "cudnn64_{ version } .dll") ) ;
169187 }
170188 }
171189 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) ) {
172190 foreach ( int version in cudnn_versions ) {
173- yield return ( version , $ "libcudnn.so.{ version } ") ;
191+ libnames . Add ( ( version , $ "libcudnn.so.{ version } ") ) ;
174192 }
175193 }
176194 else if ( RuntimeInformation . IsOSPlatform ( OSPlatform . OSX ) ) {
177195 foreach ( int version in cudnn_versions ) {
178- yield return ( version , $ "libcudnn.{ version } .dylib") ;
196+ libnames . Add ( ( version , $ "libcudnn.{ version } .dylib") ) ;
179197 }
180198 }
181199 else {
182200 throw new NotSupportedException ( RuntimeInformation . OSDescription ) ;
183201 }
202+
203+ return libnames ;
184204 }
185205 }
186206
0 commit comments