zeratax / yacx

Yet Another CudaExecutor - wrapper to easily compile and execute cuda kernels
https://zeratax.github.io/yacx
MIT License
8 stars 4 forks source link

Fast kernel example&transposition pinnend stream #152

Closed LukasSiefke closed 4 years ago

LukasSiefke commented 4 years ago

Nochmal. Diesmal mit Streams. Da wird halt auch PinnendMemory benutzt. Die Benchmarkfunktion ist so eigentlich ziemlich nice, weil die parallel upload, launch und download machen kann. Da entsteht dann so eine schöne Pipeline. Nur das mit dem free ist halt etwas problematisch, weil das free immer eine Synchronierung erzwingt, weshalb das in der benchmark-Funktion nur einmalig am Ende drin ist. Deswegen ist die total-time demensprechend niedrieger.

zeratax commented 4 years ago

ja finde das hier dann am schoensten und wuerde dann halt irg wann mal gucken nach pinned memory limits/free zeug

LukasSiefke commented 4 years ago

ja finde das hier dann am schoensten und wuerde dann halt irg wann mal gucken nach pinned memory limits/free zeug

Also ich habe gerade mal geguckt. Prinzipiell kann man mit ulimit -l das Limit für PinnendMemory herausfinden oder setzen. Auf dem Agememnon liegt das Limit bei 16MB, beim Palma ist es auf unbegrenzt eingestellt. Aber CUDA ignoriert dieses Limit einfach. Auf dem Agamemnon gibt es auch bei 1GB keinen Error. Aber es könnte die Erklärung sein wieso auf dem Agagmemnon kein so großer Unterschied beim PinnendMemory im Vergleich zum normalen Memory ist. Man könnte vielleicht eine Compileroption erstellen, die bestimmt, ob PinnendMemory verwendet werden soll...