Refactored SourceModule again, new class hierarchy:
+ CudaModule + SourceModule + JitLinkModule + DynamicSourceModule Splitted the "old" class SourceModule in two: class CudaModule and the "new" SourceModule. - CudaModule is now the common base class for module loading and provides common methods. All methods here were moved from the old SourceModule. - The "new" SourceModule's interface and system requirements are 100% unchanged, it will work under all previous configuration scenarios. - JitLinkModule requires at least CUDA 5.5 and Compute Capabilty 3.5 (that is now guarded in the constructor), it's the swiss-army-knife for non-trivial linker invocations. - DynamicSourceModule is a special case of JitLinkModule, it exposes the same interface as SourceModule but enables dynamic parallelism (it comes with one extra optional argument in the constructor, cudalib_dir). It's meant for the trivial cases where the user has a single source file, as before with SourceModule. So if a PyCuda user only wants to activate dynamic parallelism, all that's required is to replace "SourceModule" with "DynamicSourceModule" given that we're able to locate "cudadevrt" automagically in method _locate_cuda_libdir(), otherwise the caller must provide the CUDA library path manually in constructor argument "cudalib_dir". I do not think this can be reduced any further. Other changes in class JitLinkModule: - Made all add_* methods and the link() method return self - Moved CUDA library path detection logic into method JitLinkModule._locate_cuda_libdir(), gets called only once from constructor
Loading
Please register or sign in to comment